@ketvietlab/ketjs-postgres 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ketviet
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,20 @@
1
+ # KetJS PostgreSQL
2
+
3
+ The PostgreSQL datastore adapter for KetJS.
4
+
5
+ > KetJS PostgreSQL 0.x is preview software. APIs may change before 1.0.
6
+
7
+ Install the adapter and its optional peer driver:
8
+
9
+ ```bash
10
+ npm install @ketvietlab/ketjs-postgres postgres
11
+ ```
12
+
13
+ ```ts
14
+ import { postgresAdapter } from '@ketvietlab/ketjs-postgres'
15
+ ```
16
+
17
+ The core `@ketvietlab/ketjs` package remains independent of database drivers; this package is the explicit
18
+ PostgreSQL boundary.
19
+
20
+ Documentation and source: [github.com/ketvietlab/ketjs](https://github.com/ketvietlab/ketjs)
@@ -0,0 +1,3 @@
1
+ export { postgresAdapter } from './postgres.ts';
2
+ export type { PostgresOptions } from './postgres.ts';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/ketjs-postgres/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export { postgresAdapter } from './postgres.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/ketjs-postgres/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,24 @@
1
+ import type { Adapter } from '@ketvietlab/ketjs';
2
+ type Sql = {
3
+ unsafe(text: string, params?: unknown[]): Promise<unknown[]> & {
4
+ count?: number;
5
+ };
6
+ reserve(): Promise<Sql & {
7
+ release(): void;
8
+ }>;
9
+ end(opts?: {
10
+ timeout?: number;
11
+ }): Promise<void>;
12
+ listen?(channel: string, onMessage: (payload: string) => void, onReady?: () => void): Promise<{
13
+ unlisten(): Promise<void>;
14
+ }>;
15
+ };
16
+ export type PostgresOptions = {
17
+ url?: string;
18
+ max?: number;
19
+ /** Injected in tests; production resolves the real driver. */
20
+ connect?: (url: string, opts: Record<string, unknown>) => Sql;
21
+ };
22
+ export declare function postgresAdapter(url?: string, opts?: PostgresOptions): Adapter;
23
+ export {};
24
+ //# sourceMappingURL=postgres.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../../packages/ketjs-postgres/src/postgres.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,mBAAmB,CAAA;AAyBhE,KAAK,GAAG,GAAG;IACT,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACjF,OAAO,IAAI,OAAO,CAAC,GAAG,GAAG;QAAE,OAAO,IAAI,IAAI,CAAA;KAAE,CAAC,CAAA;IAC7C,GAAG,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/C,MAAM,CAAC,CACL,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EACpC,OAAO,CAAC,EAAE,MAAM,IAAI,GACnB,OAAO,CAAC;QAAE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,8DAA8D;IAC9D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,GAAG,CAAA;CAC9D,CAAA;AAED,wBAAgB,eAAe,CAAC,GAAG,SAAiC,EAAE,IAAI,GAAE,eAAoB,GAAG,OAAO,CA+HzG"}
@@ -0,0 +1,149 @@
1
+ // The one file permitted to import an external package (decision D4a).
2
+ //
3
+ // The driver is an optionalDependency, so it is imported dynamically: an app that
4
+ // only ever uses SQLite never loads it and never needs it installed.
5
+ import { assertAdapter } from '@ketvietlab/ketjs';
6
+ const SQL = {
7
+ id: 'TEXT PRIMARY KEY',
8
+ text: 'TEXT',
9
+ int: 'BIGINT',
10
+ float: 'DOUBLE PRECISION',
11
+ // Unbounded numeric, as Odoo uses for quantities and money. The driver hands it
12
+ // back as a string, which is exactly what keeps it exact.
13
+ decimal: 'NUMERIC',
14
+ bool: 'BOOLEAN',
15
+ json: 'JSONB',
16
+ date: 'DATE',
17
+ datetime: 'TIMESTAMPTZ',
18
+ ref: 'TEXT',
19
+ };
20
+ // Postgres has real booleans and real json, so unlike SQLite there is almost
21
+ // nothing to coerce. Objects still go over as JSON text for JSONB to parse.
22
+ const bind = (v) => {
23
+ if (v === undefined)
24
+ return null;
25
+ if (v !== null && typeof v === 'object' && !(v instanceof Date))
26
+ return JSON.stringify(v);
27
+ return v;
28
+ };
29
+ export function postgresAdapter(url = process.env.DATABASE_URL ?? '', opts = {}) {
30
+ let sql = null;
31
+ const need = () => {
32
+ if (!sql)
33
+ throw new Error('adapter is not open()');
34
+ return sql;
35
+ };
36
+ const introspect = async (handle) => {
37
+ const rows = (await handle.unsafe(`SELECT table_name, column_name, data_type FROM information_schema.columns
38
+ WHERE table_schema = 'public' ORDER BY table_name, ordinal_position`));
39
+ const tables = {};
40
+ for (const r of rows)
41
+ (tables[r.table_name] ??= {})[r.column_name] = r.data_type;
42
+ return tables;
43
+ };
44
+ const fromHandle = (handle) => ({
45
+ ...a,
46
+ transaction: true,
47
+ notifications: {
48
+ // pg_notify participates in the transaction on this reserved connection;
49
+ // PostgreSQL delivers it only after COMMIT and drops it on ROLLBACK.
50
+ async publish(channel, payload) {
51
+ await handle.unsafe('SELECT pg_notify($1, $2)', [channel, payload]);
52
+ },
53
+ },
54
+ async exec(text) {
55
+ await handle.unsafe(text);
56
+ },
57
+ async all(text, params = []) {
58
+ return (await handle.unsafe(text, params.map(bind)));
59
+ },
60
+ async run(text, params = []) {
61
+ const r = (await handle.unsafe(text, params.map(bind)));
62
+ return { changes: Number(r.count ?? r.length ?? 0) };
63
+ },
64
+ async tx() {
65
+ throw new Error('nested transactions are not supported');
66
+ },
67
+ async introspect() {
68
+ return introspect(handle);
69
+ },
70
+ });
71
+ const a = {
72
+ name: 'postgres',
73
+ async open() {
74
+ if (!url)
75
+ throw new Error('postgresAdapter needs a connection URL (or DATABASE_URL)');
76
+ const connect = opts.connect ??
77
+ ((u, o) => {
78
+ // Dynamic so the optional dependency is only required when actually used.
79
+ throw new Error(`postgres driver not loaded; pass opts.connect or install "postgres" (${u}, ${JSON.stringify(o)})`);
80
+ });
81
+ if (opts.connect) {
82
+ sql = connect(url, { max: opts.max ?? 10 });
83
+ return;
84
+ }
85
+ const mod = await import('postgres');
86
+ const factory = (mod.default ?? mod);
87
+ sql = factory(url, { max: opts.max ?? 10, onnotice: () => { } });
88
+ },
89
+ async close() {
90
+ await sql?.end({ timeout: 5 });
91
+ sql = null;
92
+ },
93
+ async exec(text) {
94
+ await need().unsafe(text);
95
+ },
96
+ async all(text, params = []) {
97
+ return (await need().unsafe(text, params.map(bind)));
98
+ },
99
+ async run(text, params = []) {
100
+ const r = (await need().unsafe(text, params.map(bind)));
101
+ return { changes: Number(r.count ?? r.length ?? 0) };
102
+ },
103
+ notifications: {
104
+ async publish(channel, payload) {
105
+ await need().unsafe('SELECT pg_notify($1, $2)', [channel, payload]);
106
+ },
107
+ async subscribe(channel, onMessage, onReady) {
108
+ const listen = need().listen;
109
+ if (!listen)
110
+ throw new Error('this injected postgres handle does not support LISTEN');
111
+ // postgres.js owns a dedicated listener connection and reconnects it. Its
112
+ // onReady callback also runs after a reconnect, so the worker drains any
113
+ // notifications missed during the gap.
114
+ const request = await listen.call(need(), channel, onMessage, onReady);
115
+ return () => request.unlisten();
116
+ },
117
+ },
118
+ // A reserved connection, so BEGIN and the body are guaranteed to be the same
119
+ // session rather than two arbitrary members of the pool.
120
+ async tx(fn) {
121
+ const conn = await need().reserve();
122
+ const scoped = fromHandle(conn);
123
+ try {
124
+ await conn.unsafe('BEGIN');
125
+ const r = await fn(scoped);
126
+ await conn.unsafe('COMMIT');
127
+ return r;
128
+ }
129
+ catch (e) {
130
+ await conn.unsafe('ROLLBACK').catch(() => { });
131
+ throw e;
132
+ }
133
+ finally {
134
+ conn.release();
135
+ }
136
+ },
137
+ quoteIdent(n) {
138
+ return `"${String(n).replace(/"/g, '""')}"`;
139
+ },
140
+ columnSql(c) {
141
+ return SQL[c.base] ?? 'TEXT';
142
+ },
143
+ async introspect() {
144
+ return introspect(need());
145
+ },
146
+ };
147
+ return assertAdapter(a);
148
+ }
149
+ //# sourceMappingURL=postgres.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres.js","sourceRoot":"","sources":["../../../../../packages/ketjs-postgres/src/postgres.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "@ketvietlab/ketjs-postgres",
3
+ "version": "0.1.1",
4
+ "description": "Postgres adapter for Ket. The one package permitted a dependency (decision D4a) — which is why it is a package.",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/ketvietlab/ketjs.git",
12
+ "directory": "packages/ketjs-postgres"
13
+ },
14
+ "homepage": "https://github.com/ketvietlab/ketjs#readme",
15
+ "bugs": {
16
+ "url": "https://github.com/ketvietlab/ketjs/issues"
17
+ },
18
+ "keywords": [
19
+ "postgresql",
20
+ "database",
21
+ "adapter",
22
+ "ketjs",
23
+ "typescript"
24
+ ],
25
+ "engines": {
26
+ "node": ">=24.0.0"
27
+ },
28
+ "scripts": {
29
+ "prepack": "npm run build --prefix ../.."
30
+ },
31
+ "exports": {
32
+ ".": {
33
+ "types": "./dist/index.d.ts",
34
+ "default": "./dist/index.js"
35
+ }
36
+ },
37
+ "dependencies": {
38
+ "@ketvietlab/ketjs": "0.1.1"
39
+ },
40
+ "peerDependencies": {
41
+ "postgres": "^3.4.9"
42
+ },
43
+ "peerDependenciesMeta": {
44
+ "postgres": {
45
+ "optional": true
46
+ }
47
+ },
48
+ "files": [
49
+ "dist"
50
+ ],
51
+ "publishConfig": {
52
+ "access": "public",
53
+ "provenance": true,
54
+ "registry": "https://registry.npmjs.org/"
55
+ },
56
+ "devDependencies": {
57
+ "postgres": "^3.4.9"
58
+ }
59
+ }