From c3c87c9e827128a1315388e872c2ffdbef8af80c Mon Sep 17 00:00:00 2001 From: Roberto Lizana Date: Sun, 27 Apr 2025 17:21:39 +0200 Subject: [PATCH] [IMP] Change project name to js-odoo-rpc to @rlizana/odoo-rpc --- README.md | 28 ++++++++++++++++++---------- build.mjs | 4 ++-- package.json | 6 +++--- src/model.ts | 1 + src/odoo.ts | 4 ++-- tests/browser/orm-browser.test.ts | 16 ++++++++-------- tests/node/orm.test.ts | 16 ++++++++-------- 7 files changed, 42 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 5f9bb7d..9757762 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ -# js-odoo-rpc +# odoo-rpc -[![Tests](https://github.com/rlizana/js-odoo-rpc/actions/workflows/test.yml/badge.svg)](https://github.com/rlizana/js-odoo-rpc/actions) -[![npm](https://img.shields.io/npm/v/js-odoo-rpc)](https://www.npmjs.com/package/js-odoo-rpc) -[![npm](https://img.shields.io/npm/dt/js-odoo-rpc)](https://www.npmjs.com/package/js-odoo-rpc) -[![GitHub](https://img.shields.io/github/license/rlizana/js-odoo-rpc?label=license)](https://github.com/rlizana/js-odoo-rpc/blob/main/LICENSE) +[![Tests](https://github.com/rlizana/odoo-rpc/actions/workflows/test.yml/badge.svg)](https://github.com/rlizana/odoo-rpc/actions) +[![npm](https://img.shields.io/npm/v/@rlizana/odoo-rpc)](https://www.npmjs.com/package/@rlizana/odoo-rpc) +[![npm](https://img.shields.io/npm/dt/@rlizana/odoo-rpc)](https://www.npmjs.com/package/@rlizana/odoo-rpc) +[![GitHub](https://img.shields.io/github/license/rlizana/odoo-rpc?label=license)](https://github.com/rlizana/odoo-rpc/blob/main/LICENSE) -**js-odoo-rpc** is a lightweight JavaScript/TypeScript library to interact with Odoo (tested on Odoo 16, 17, 18) via JSON-RPC and session-based authentication. +**odoo-rpc** is a lightweight JavaScript/TypeScript library to interact with Odoo (tested on Odoo 16, 17, 18) via JSON-RPC and session-based authentication. It works in both **Node.js** and **browser environments**, making it suitable for frontend frameworks (Svelte, Vue, React) and backend scripts. @@ -26,8 +26,16 @@ It works in both **Node.js** and **browser environments**, making it suitable fo Same code for Node.js and browser. The library uses `fetch` for HTTP requests, and in Node.js, it uses `fetch-cookie` to handle cookies automatically. +Install the library with npm + +```bash +npm install @rlizana/odoo-rpc +``` + +Use it in your code: + ```js -import { Odoo } from 'js-odoo-rpc' +import { Odoo } from '@rlizana/odoo-rpc' const odoo = new Odoo('http://localhost:8069', 'test') await odoo.login('admin', 'admin') @@ -69,7 +77,7 @@ let names = await odoo ### Node.js ```bash -npm install js-odoo-rpc +npm install odoo-rpc ``` ### Browser (ESM) @@ -77,7 +85,7 @@ npm install js-odoo-rpc Use a bundler like Vite, Webpack or Rollup and import the browser version: ```js -import { Odoo } from 'js-odoo-rpc' +import { Odoo } from '@rlizana/odoo-rpc' const odoo = new Odoo('http://localhost:8069', 'test') await odoo.login('admin', 'admin') @@ -91,7 +99,7 @@ await odoo.login('admin', 'admin') ### 1. Connect to Odoo ```ts -import { Odoo } from 'js-odoo-rpc' +import { Odoo } from '@rlizana/odoo-rpc' const odoo = new Odoo('http://localhost:8069', 'test') await odoo.login('admin', 'admin') diff --git a/build.mjs b/build.mjs index cf17503..2c72ef1 100644 --- a/build.mjs +++ b/build.mjs @@ -15,7 +15,7 @@ await build({ platform: 'node', format: 'esm', target: ['node16'], - outfile: 'dist/js-odoo-rpc.node.js' + outfile: 'dist/odoo-rpc.node.js' }) // Build for browser @@ -24,5 +24,5 @@ await build({ platform: 'browser', format: 'esm', target: ['es2018'], - outfile: 'dist/js-odoo-rpc.browser.js' + outfile: 'dist/odoo-rpc.browser.js' }) diff --git a/package.json b/package.json index e08b9cc..6991bbe 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "type": "module", - "name": "js-odoo-rpc", - "version": "1.0.2", + "name": "@rlizana/odoo-rpc", + "version": "1.0.4", "description": "A lightweight JS/TS library to interact with Odoo via JSON-RPC and session", "types": "./dist/index.d.ts", "main": "./dist/index.cjs", @@ -26,7 +26,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/rlizana/js-odoo-rpc.git" + "url": "https://github.com/rlizana/odoo-rpc.git" }, "author": "Roberto Lizana", "license": "MIT", diff --git a/src/model.ts b/src/model.ts index 015befc..dd2c5b0 100644 --- a/src/model.ts +++ b/src/model.ts @@ -1,6 +1,7 @@ import type { Odoo } from './odoo' export class Model { + private odoo: Odoo private model: string private _domain: any[] = [] private _fields: string[] = [] diff --git a/src/odoo.ts b/src/odoo.ts index b3bec73..1088c7a 100644 --- a/src/odoo.ts +++ b/src/odoo.ts @@ -1,7 +1,7 @@ import { Model } from './model' export class Odoo { - private fetch_session!: typeof fetch + public fetch_session!: typeof fetch public config = { url: '', dbname: '', @@ -54,7 +54,7 @@ export class Odoo { } } - private get_url(endpoint: string) { + public get_url(endpoint: string) { return this.config.url.replace(/\/+$/, '') + endpoint } diff --git a/tests/browser/orm-browser.test.ts b/tests/browser/orm-browser.test.ts index 4f6cbaf..2086dfb 100644 --- a/tests/browser/orm-browser.test.ts +++ b/tests/browser/orm-browser.test.ts @@ -3,7 +3,7 @@ import { Odoo } from '../../src/index' test('Connecting to Odoo, incorrect', async () => { let odoo = new Odoo('http://localhost:8069', 'odoo') - await expect(odoo.login('admin', 'wrongpassword')).rejects.toThrowError() + await expect(odoo.login('admin', 'wrongpassword')).srejects.toThrowError() expect(odoo.is_loged()).toBe(false) }) @@ -22,7 +22,7 @@ test.describe('Test Odoo connection', () => { test('res.partner create', async () => { const partner = await odoo.env('res.partner').create({ - name: 'js-odoo-rpc: Test Partner' + name: 'odoo-rpc: Test Partner' }) expect(partner).toBeDefined() expect(typeof partner[0]).toBe('number') @@ -30,19 +30,19 @@ test.describe('Test Odoo connection', () => { test('res.partner update', async () => { const partner = await odoo.env('res.partner').create({ - name: 'js-odoo-rpc: Test Partner' + name: 'odoo-rpc: Test Partner' }) expect(partner).toBeDefined() expect(typeof partner[0]).toBe('number') const write_ok = await odoo .env('res.partner') - .write(partner[0], { name: 'js-odoo-rpc: Test Partner Updated' }) + .write(partner[0], { name: 'odoo-rpc: Test Partner Updated' }) expect(write_ok).toBe(true) const partners = await odoo .env('res.partner') - .search([['name', '=', 'js-odoo-rpc: Test Partner Updated']]) + .search([['name', '=', 'odoo-rpc: Test Partner Updated']]) .read(['name']) expect(partners.length).toBeGreaterThan(0) }) @@ -85,14 +85,14 @@ test.describe('Test Odoo connection', () => { test('res.partner unlink', async () => { await odoo.env('res.partner').create({ - name: 'js-odoo-rpc: Test Partner 1' + name: 'odoo-rpc: Test Partner 1' }) await odoo.env('res.partner').create({ - name: 'js-odoo-rpc: Test Partner 2' + name: 'odoo-rpc: Test Partner 2' }) const partners = await odoo .env('res.partner') - .search([['name', 'like', 'js-odoo-rpc: Test Partner %']]) + .search([['name', 'like', 'odoo-rpc: Test Partner %']]) .read(['name']) expect(partners.length).toBeGreaterThan(2) diff --git a/tests/node/orm.test.ts b/tests/node/orm.test.ts index dbc559c..475b50d 100644 --- a/tests/node/orm.test.ts +++ b/tests/node/orm.test.ts @@ -25,7 +25,7 @@ describe('Test Odoo connection', () => { it('res.partner create', async () => { // Create const partner = await odoo.env('res.partner').create({ - name: 'js-odoo-rpc: Test Partner' + name: 'odoo-rpc: Test Partner' }) expect(partner).toBeDefined() expect(typeof partner[0]).toBe('number') @@ -34,7 +34,7 @@ describe('Test Odoo connection', () => { it('res.partner update', async () => { // Create const partner = await odoo.env('res.partner').create({ - name: 'js-odoo-rpc: Test Partner' + name: 'odoo-rpc: Test Partner' }) expect(partner).toBeDefined() expect(typeof partner[0]).toBe('number') @@ -42,11 +42,11 @@ describe('Test Odoo connection', () => { // Update const write_ok = await odoo .env('res.partner') - .write(partner[0], { name: 'js-odoo-rpc: Test Partner Updated' }) + .write(partner[0], { name: 'odoo-rpc: Test Partner Updated' }) expect(write_ok).toBe(true) const partners = await odoo .env('res.partner') - .search([['name', '=', 'js-odoo-rpc: Test Partner Updated']]) + .search([['name', '=', 'odoo-rpc: Test Partner Updated']]) .read(['name']) expect(partners.length).toBeGreaterThan(0) }) @@ -91,16 +91,16 @@ describe('Test Odoo connection', () => { }) it('res.partner unlink', async () => { - // Search all partners that have the name 'js-odoo-rpc: Test Partner' + // Search all partners that have the name 'odoo-rpc: Test Partner' await odoo.env('res.partner').create({ - name: 'js-odoo-rpc: Test Partner 1' + name: 'odoo-rpc: Test Partner 1' }) await odoo.env('res.partner').create({ - name: 'js-odoo-rpc: Test Partner 2' + name: 'odoo-rpc: Test Partner 2' }) const partners = await odoo .env('res.partner') - .search([['name', 'like', 'js-odoo-rpc: Test Partner %']]) + .search([['name', 'like', 'odoo-rpc: Test Partner %']]) .read(['name']) expect(partners.length).toBeGreaterThan(2) const unlinkResult = await odoo