@vrplatform/kysely 1.3.2 → 1.3.4
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/build/.data.tar +0 -0
- package/build/main/browser/index.d.ts +17 -0
- package/build/main/browser/index.js +65 -0
- package/build/main/browser/index.js.map +1 -0
- package/build/main/browser/worker.d.ts +1 -0
- package/build/main/browser/worker.js +42 -0
- package/build/main/browser/worker.js.map +1 -0
- package/build/main/index.d.ts +2 -7
- package/build/main/index.js +2 -40
- package/build/main/index.js.map +1 -1
- package/build/main/isomorphic.d.ts +11 -0
- package/build/main/isomorphic.js +30 -0
- package/build/main/isomorphic.js.map +1 -0
- package/build/main/local/digest.d.ts +2 -0
- package/build/main/local/digest.js +22 -0
- package/build/main/local/digest.js.map +1 -0
- package/build/main/local/generate.js +6 -4
- package/build/main/local/generate.js.map +1 -1
- package/build/main/local/index.js +8 -5
- package/build/main/local/index.js.map +1 -1
- package/build/main/tsconfig.main.tsbuildinfo +1 -1
- package/build/main/v1.generated.d.ts +6 -4
- package/build/main/v1.generated.js.map +1 -1
- package/build/module/index.d.ts +2 -7
- package/build/module/index.js +1 -36
- package/build/module/index.js.map +1 -1
- package/build/module/isomorphic.d.ts +11 -0
- package/build/module/isomorphic.js +10 -0
- package/build/module/isomorphic.js.map +1 -0
- package/build/module/local/digest.d.ts +2 -0
- package/build/module/local/digest.js +19 -0
- package/build/module/local/digest.js.map +1 -0
- package/build/module/local/generate.js +6 -4
- package/build/module/local/generate.js.map +1 -1
- package/build/module/local/index.js +8 -5
- package/build/module/local/index.js.map +1 -1
- package/build/module/tsconfig.esm.tsbuildinfo +1 -1
- package/build/module/v1.generated.d.ts +6 -4
- package/build/module/v1.generated.js.map +1 -1
- package/package.json +4 -4
- package/src/index.ts +1 -58
- package/src/isomorphic.ts +32 -0
- package/src/local/digest.ts +18 -0
- package/src/local/generate.ts +6 -6
- package/src/local/index.ts +8 -7
- package/src/v1.generated.ts +6 -4
package/build/.data.tar
CHANGED
|
Binary file
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type LogConfig } from 'kysely';
|
|
2
|
+
import type { Kysely } from '../isomorphic';
|
|
3
|
+
export * from '../isomorphic';
|
|
4
|
+
export type UseBrowserKyselyOptions = {
|
|
5
|
+
repositoryName?: string;
|
|
6
|
+
log?: true | LogConfig;
|
|
7
|
+
adapter?: 'memory' | 'idb';
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Initialize Kysely with PGlite for browser environments.
|
|
11
|
+
*
|
|
12
|
+
* @param dumpData - The database dump data as a Blob, ArrayBuffer, or Uint8Array.
|
|
13
|
+
* This should be the .data.tar file loaded as a blob.
|
|
14
|
+
* @param options - Configuration options
|
|
15
|
+
* @returns A Kysely instance connected to the in-memory PGlite database
|
|
16
|
+
*/
|
|
17
|
+
export declare function useBrowserKysely(options?: UseBrowserKyselyOptions): Promise<Kysely>;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.useBrowserKysely = useBrowserKysely;
|
|
18
|
+
// import { live } from '@electric-sql/pglite/live';
|
|
19
|
+
const worker_1 = require("@electric-sql/pglite/worker");
|
|
20
|
+
const kysely_1 = require("kysely");
|
|
21
|
+
const kysely_pglite_dialect_1 = require("kysely-pglite-dialect");
|
|
22
|
+
__exportStar(require("../isomorphic"), exports);
|
|
23
|
+
// Create worker with Vite-compatible URL
|
|
24
|
+
const worker = new Worker(new URL('./worker.ts', import.meta.url), {
|
|
25
|
+
type: 'module',
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* Initialize Kysely with PGlite for browser environments.
|
|
29
|
+
*
|
|
30
|
+
* @param dumpData - The database dump data as a Blob, ArrayBuffer, or Uint8Array.
|
|
31
|
+
* This should be the .data.tar file loaded as a blob.
|
|
32
|
+
* @param options - Configuration options
|
|
33
|
+
* @returns A Kysely instance connected to the in-memory PGlite database
|
|
34
|
+
*/
|
|
35
|
+
async function useBrowserKysely(options = {}) {
|
|
36
|
+
let isDestroyed = false;
|
|
37
|
+
//const now = performance.now();
|
|
38
|
+
const pglite = new worker_1.PGliteWorker(worker, {
|
|
39
|
+
dataDir: options.adapter === 'idb' ? 'idb://pglite' : 'memory://',
|
|
40
|
+
extensions: {
|
|
41
|
+
//live,
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
const dialect = new kysely_pglite_dialect_1.PGliteDialect(pglite);
|
|
45
|
+
const kysely = new kysely_1.Kysely({
|
|
46
|
+
dialect,
|
|
47
|
+
log: options.log === true ? ['query', 'error'] : options.log,
|
|
48
|
+
plugins: [new kysely_1.CamelCasePlugin()],
|
|
49
|
+
});
|
|
50
|
+
const originalDestroy = kysely.destroy.bind(kysely);
|
|
51
|
+
kysely.destroy = async () => {
|
|
52
|
+
if (isDestroyed)
|
|
53
|
+
return;
|
|
54
|
+
isDestroyed = true;
|
|
55
|
+
//const destroyTime = performance.now();
|
|
56
|
+
await originalDestroy().catch(() => undefined);
|
|
57
|
+
await pglite.close().catch(() => undefined);
|
|
58
|
+
//console.log(
|
|
59
|
+
// `Database destroyed: ${Math.round(performance.now() - destroyTime)}ms`
|
|
60
|
+
//);
|
|
61
|
+
};
|
|
62
|
+
//console.log(`Database initialized: ${Math.round(performance.now() - now)}ms`);
|
|
63
|
+
return kysely;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"src/","sources":["browser/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AA2BA,4CAmCC;AA9DD,oDAAoD;AACpD,wDAA2D;AAC3D,mCAAsE;AACtE,iEAAsD;AAGtD,gDAA8B;AAQ9B,yCAAyC;AACzC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;IACjE,IAAI,EAAE,QAAQ;CACf,CAAC,CAAC;AAEH;;;;;;;GAOG;AACI,KAAK,UAAU,gBAAgB,CACpC,UAAmC,EAAE;IAErC,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,gCAAgC;IAEhC,MAAM,MAAM,GAAG,IAAI,qBAAY,CAAC,MAAM,EAAE;QACtC,OAAO,EAAE,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW;QACjE,UAAU,EAAE;QACV,OAAO;SACR;KACF,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,qCAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,eAAC,CAAK;QACvB,OAAO;QACP,GAAG,EAAE,OAAO,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG;QAC5D,OAAO,EAAE,CAAC,IAAI,wBAAe,EAAE,CAAC;KACjC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,CAAC,OAAO,GAAG,KAAK,IAAI,EAAE;QAC1B,IAAI,WAAW;YAAE,OAAO;QACxB,WAAW,GAAG,IAAI,CAAC;QACnB,wCAAwC;QACxC,MAAM,eAAe,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5C,cAAc;QACd,0EAA0E;QAC1E,IAAI;IACN,CAAC,CAAC;IAEF,gFAAgF;IAEhF,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["// import { live } from '@electric-sql/pglite/live';\nimport { PGliteWorker } from '@electric-sql/pglite/worker';\nimport { CamelCasePlugin, Kysely as K, type LogConfig } from 'kysely';\nimport { PGliteDialect } from 'kysely-pglite-dialect';\nimport type { DB, Kysely } from '../isomorphic';\n\nexport * from '../isomorphic';\n\nexport type UseBrowserKyselyOptions = {\n repositoryName?: string;\n log?: true | LogConfig;\n adapter?: 'memory' | 'idb';\n};\n\n// Create worker with Vite-compatible URL\nconst worker = new Worker(new URL('./worker.ts', import.meta.url), {\n type: 'module',\n});\n\n/**\n * Initialize Kysely with PGlite for browser environments.\n *\n * @param dumpData - The database dump data as a Blob, ArrayBuffer, or Uint8Array.\n * This should be the .data.tar file loaded as a blob.\n * @param options - Configuration options\n * @returns A Kysely instance connected to the in-memory PGlite database\n */\nexport async function useBrowserKysely(\n options: UseBrowserKyselyOptions = {}\n): Promise<Kysely> {\n let isDestroyed = false;\n //const now = performance.now();\n\n const pglite = new PGliteWorker(worker, {\n dataDir: options.adapter === 'idb' ? 'idb://pglite' : 'memory://',\n extensions: {\n //live,\n },\n });\n\n const dialect = new PGliteDialect(pglite);\n const kysely = new K<DB>({\n dialect,\n log: options.log === true ? ['query', 'error'] : options.log,\n plugins: [new CamelCasePlugin()],\n });\n\n const originalDestroy = kysely.destroy.bind(kysely);\n kysely.destroy = async () => {\n if (isDestroyed) return;\n isDestroyed = true;\n //const destroyTime = performance.now();\n await originalDestroy().catch(() => undefined);\n await pglite.close().catch(() => undefined);\n //console.log(\n // `Database destroyed: ${Math.round(performance.now() - destroyTime)}ms`\n //);\n };\n\n //console.log(`Database initialized: ${Math.round(performance.now() - now)}ms`);\n\n return kysely;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const pglite_1 = require("@electric-sql/pglite");
|
|
4
|
+
const worker_1 = require("@electric-sql/pglite/worker");
|
|
5
|
+
(0, worker_1.worker)({
|
|
6
|
+
async init({ dataDir }) {
|
|
7
|
+
const databases = await self.indexedDB.databases();
|
|
8
|
+
if (dataDir?.startsWith('idb://') && databases.length) {
|
|
9
|
+
const pglite = new pglite_1.PGlite({
|
|
10
|
+
dataDir,
|
|
11
|
+
});
|
|
12
|
+
// warm up
|
|
13
|
+
await pglite.sql `SELECT 1`;
|
|
14
|
+
return pglite;
|
|
15
|
+
}
|
|
16
|
+
console.log('Loading database dump...', dataDir);
|
|
17
|
+
// Load the database dump file
|
|
18
|
+
const dumpResponse = await fetch('/.data.tar').catch((error) => {
|
|
19
|
+
console.error('Failed to load database dump:', error);
|
|
20
|
+
throw new Error(`Failed to load database dump: ${error.message}`);
|
|
21
|
+
});
|
|
22
|
+
if (!dumpResponse.ok) {
|
|
23
|
+
console.error('Failed to load database dump:', dumpResponse.statusText);
|
|
24
|
+
throw new Error(`Failed to load database dump: ${dumpResponse.statusText}`);
|
|
25
|
+
}
|
|
26
|
+
console.log('Loaded database dump:', dumpResponse.status);
|
|
27
|
+
const dumpBlob = await dumpResponse.blob();
|
|
28
|
+
if (!dumpBlob.size) {
|
|
29
|
+
console.error('Failed to load database dump:', dumpBlob.size);
|
|
30
|
+
throw new Error(`Failed to load database dump: ${dumpBlob.size}`);
|
|
31
|
+
}
|
|
32
|
+
const pglite = new pglite_1.PGlite({
|
|
33
|
+
dataDir,
|
|
34
|
+
loadDataDir: dumpBlob,
|
|
35
|
+
});
|
|
36
|
+
// warm up
|
|
37
|
+
await pglite.sql `SELECT 1`;
|
|
38
|
+
return pglite;
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
console.log('Worker process started');
|
|
42
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"src/","sources":["browser/worker.ts"],"names":[],"mappings":";;AAEA,iDAA8C;AAC9C,wDAAqD;AAErD,IAAA,eAAM,EAAC;IACL,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE;QACpB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;QACnD,IAAI,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC;gBACxB,OAAO;aACR,CAAC,CAAC;YACH,UAAU;YACV,MAAM,MAAM,CAAC,GAAG,CAAA,UAAU,CAAC;YAC3B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;QACjD,8BAA8B;QAC9B,MAAM,YAAY,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC7D,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;YACxE,MAAM,IAAI,KAAK,CACb,iCAAiC,YAAY,CAAC,UAAU,EAAE,CAC3D,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC;YACxB,OAAO;YACP,WAAW,EAAE,QAAQ;SACtB,CAAC,CAAC;QACH,UAAU;QACV,MAAM,MAAM,CAAC,GAAG,CAAA,UAAU,CAAC;QAE3B,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC,CAAC;AAEH,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC","sourcesContent":["declare var self: Worker & { indexedDB: typeof window.indexedDB };\n\nimport { PGlite } from '@electric-sql/pglite';\nimport { worker } from '@electric-sql/pglite/worker';\n\nworker({\n async init({ dataDir }) {\n const databases = await self.indexedDB.databases();\n if (dataDir?.startsWith('idb://') && databases.length) {\n const pglite = new PGlite({\n dataDir,\n });\n // warm up\n await pglite.sql`SELECT 1`;\n return pglite;\n }\n\n console.log('Loading database dump...', dataDir);\n // Load the database dump file\n const dumpResponse = await fetch('/.data.tar').catch((error) => {\n console.error('Failed to load database dump:', error);\n throw new Error(`Failed to load database dump: ${error.message}`);\n });\n if (!dumpResponse.ok) {\n console.error('Failed to load database dump:', dumpResponse.statusText);\n throw new Error(\n `Failed to load database dump: ${dumpResponse.statusText}`\n );\n }\n\n console.log('Loaded database dump:', dumpResponse.status);\n const dumpBlob = await dumpResponse.blob();\n if (!dumpBlob.size) {\n console.error('Failed to load database dump:', dumpBlob.size);\n throw new Error(`Failed to load database dump: ${dumpBlob.size}`);\n }\n\n const pglite = new PGlite({\n dataDir,\n loadDataDir: dumpBlob,\n });\n // warm up\n await pglite.sql`SELECT 1`;\n\n return pglite;\n },\n});\n\nconsole.log('Worker process started');\n"]}
|
package/build/main/index.d.ts
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import { Kysely as K, type LogConfig
|
|
1
|
+
import { Kysely as K, type LogConfig } from 'kysely';
|
|
2
2
|
import postgres, { type Sql } from 'postgres';
|
|
3
|
-
export
|
|
4
|
-
export { jsonArrayFrom } from 'kysely/helpers/postgres';
|
|
5
|
-
export * from './v1.generated';
|
|
3
|
+
export * from './isomorphic';
|
|
6
4
|
import type { DB } from './v1.generated';
|
|
7
|
-
export type Transaction = T<DB>;
|
|
8
|
-
export { sql } from 'kysely';
|
|
9
5
|
type KyselyOpts = {
|
|
10
6
|
repositoryName?: string;
|
|
11
7
|
log?: true | LogConfig;
|
|
@@ -30,4 +26,3 @@ export declare function forceCloseAllPostgres(timeoutMs?: number): Promise<void>
|
|
|
30
26
|
export declare class DatabaseError extends Error {
|
|
31
27
|
constructor(message: string, cause: any);
|
|
32
28
|
}
|
|
33
|
-
export declare function withStack<T>(a: Promise<T>): Promise<T>;
|
package/build/main/index.js
CHANGED
|
@@ -17,24 +17,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.DatabaseError =
|
|
20
|
+
exports.DatabaseError = void 0;
|
|
21
21
|
exports.useKysely = useKysely;
|
|
22
22
|
exports.useAsyncPostgres = useAsyncPostgres;
|
|
23
23
|
exports.useAsyncKysely = useAsyncKysely;
|
|
24
24
|
exports.usePostgres = usePostgres;
|
|
25
25
|
exports.forceCloseAllPostgres = forceCloseAllPostgres;
|
|
26
|
-
exports.withStack = withStack;
|
|
27
|
-
const utils_1 = require("@finalytic/utils");
|
|
28
26
|
const kysely_1 = require("kysely");
|
|
29
27
|
const kysely_postgres_js_1 = require("kysely-postgres-js");
|
|
30
28
|
const postgres_1 = __importDefault(require("postgres"));
|
|
31
|
-
|
|
32
|
-
Object.defineProperty(exports, "jsonArrayFrom", { enumerable: true, get: function () { return postgres_2.jsonArrayFrom; } });
|
|
33
|
-
__exportStar(require("./v1.generated"), exports);
|
|
34
|
-
const node_path_1 = require("node:path");
|
|
29
|
+
__exportStar(require("./isomorphic"), exports);
|
|
35
30
|
const pganalyze_comment_plugin_1 = require("./pganalyze-comment-plugin");
|
|
36
|
-
var kysely_2 = require("kysely");
|
|
37
|
-
Object.defineProperty(exports, "sql", { enumerable: true, get: function () { return kysely_2.sql; } });
|
|
38
31
|
/**
|
|
39
32
|
* @deprecated This method is deprecated in favor of the useAsyncKysely method.
|
|
40
33
|
*/
|
|
@@ -140,35 +133,4 @@ class DatabaseError extends Error {
|
|
|
140
133
|
}
|
|
141
134
|
}
|
|
142
135
|
exports.DatabaseError = DatabaseError;
|
|
143
|
-
const dirname = typeof __dirname === 'string' ? (0, node_path_1.join)(__dirname, '../../..') : '';
|
|
144
|
-
async function withStack(a) {
|
|
145
|
-
// skip if we can't get the stack, probably in a worker
|
|
146
|
-
if (!dirname)
|
|
147
|
-
return await a;
|
|
148
|
-
const now = performance.now();
|
|
149
|
-
const error = new DatabaseError('Error in execute', undefined);
|
|
150
|
-
const stack = error.stack?.split('\n').slice(3) || undefined;
|
|
151
|
-
const firstLine = stack?.length && stack[0]?.includes('(') && dirname
|
|
152
|
-
? (0, node_path_1.relative)(dirname, stack[0].split('(')[1].split(')')[0])
|
|
153
|
-
: undefined;
|
|
154
|
-
try {
|
|
155
|
-
const result = await a;
|
|
156
|
-
console.log(`[${firstLine}] Execution time: ${Math.round(performance.now() - now)}ms`);
|
|
157
|
-
return result;
|
|
158
|
-
}
|
|
159
|
-
catch (e) {
|
|
160
|
-
if (stack)
|
|
161
|
-
error.stack = stack.join('\n').trim();
|
|
162
|
-
else
|
|
163
|
-
error.stack = e.stack;
|
|
164
|
-
// error.cause = e;
|
|
165
|
-
error.message = e.message;
|
|
166
|
-
const serialized = (0, utils_1.serializeError)(e);
|
|
167
|
-
delete serialized.stack;
|
|
168
|
-
error.cause = serialized;
|
|
169
|
-
console.error(`Error in execute: ${firstLine}`, (0, utils_1.serializeError)(error));
|
|
170
|
-
console.log(`[${firstLine}] Execution time: ${Math.round(performance.now() - now)}ms`);
|
|
171
|
-
throw error;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
136
|
//# sourceMappingURL=index.js.map
|
package/build/main/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"src/","sources":["index.ts"],"names":[],"mappings":"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","sourcesContent":["import { serializeError } from '@finalytic/utils';\nimport {\n CamelCasePlugin,\n Kysely as K,\n type KyselyPlugin,\n type LogConfig,\n type Transaction as T,\n} from 'kysely';\nimport { PostgresJSDialect } from 'kysely-postgres-js';\nimport postgres, { type Sql } from 'postgres';\n\nexport type {\n ColumnType,\n Expression,\n ExpressionBuilder,\n ExpressionOrFactory,\n Generated,\n Insertable,\n JSONColumnType,\n OperandExpression,\n Selectable,\n SelectQueryBuilder,\n SqlBool,\n Updateable,\n} from 'kysely';\nexport { jsonArrayFrom } from 'kysely/helpers/postgres';\nexport * from './v1.generated';\n\nimport { join, relative } from 'node:path';\nimport { KyselyPganalyzeCommentPlugin } from './pganalyze-comment-plugin';\nimport type { DB } from './v1.generated';\n\nexport type Transaction = T<DB>;\nexport { sql } from 'kysely';\n\ntype KyselyOpts = {\n repositoryName?: string;\n log?: true | LogConfig;\n};\n\ntype PgOpt = {\n forceDisableSSL?: boolean;\n retries?: false | number;\n};\n\nexport type Kysely = K<DB>;\nexport type Postgres = Sql;\n/**\n * @deprecated This method is deprecated in favor of the useAsyncKysely method.\n */\nexport function useKysely(postgres: Sql, options?: KyselyOpts) {\n console.debug('Creating Kysely instance');\n const plugins: KyselyPlugin[] = [new CamelCasePlugin()];\n if (options?.repositoryName) {\n plugins.push(\n new KyselyPganalyzeCommentPlugin({\n repository: options.repositoryName,\n })\n );\n }\n const kysely = new K<DB>({\n dialect: new PostgresJSDialect({\n postgres,\n }),\n plugins,\n log: options?.log === true ? ['query', 'error'] : options?.log,\n });\n\n kysely.destroy = async () => {\n console.debug('Closing Kysely connection');\n await Promise.race([\n postgres.end({ timeout: 5000 }).catch(() => undefined),\n new Promise((res) => setTimeout(res, 6000)),\n ]);\n const index = _connections.indexOf(postgres);\n if (index !== -1) _connections.splice(index, 1);\n };\n\n return kysely;\n}\n\nlet _connections: postgres.Sql[] = [];\nexport async function useAsyncPostgres(connectionString: string, opt?: PgOpt) {\n const delayMs = 2500;\n const retries = opt?.retries === false ? 0 : opt?.retries || 3;\n const ssl = opt?.forceDisableSSL !== true;\n const url = new URL(connectionString);\n\n console.debug(\n `Creating Postgres connection with ${retries} retries and ssl=${ssl} and port=${url.port}`\n );\n if (_connections.length > 0)\n console.warn(`We already have ${_connections.length} Postgres connections`);\n\n for (let attempt = 1; attempt <= retries; attempt++) {\n try {\n const sql = postgres(connectionString, {\n ssl: ssl ? 'require' : false,\n // connect_timeout: 10\n // idle_timeout: 10\n // enable prepare statements, pgbouncer on crunchy allows for prepared statements\n prepare: true,\n connect_timeout: 10,\n idle_timeout: 60,\n });\n\n await sql`select 1`;\n try {\n // connect 30s, idle 60s, max lifetime 45min, statement 60s, lock 10s, log_min_duration 20s, log_lock_waits off\n await sql`set statement_timeout to '30s';`;\n await sql`set lock_timeout to '10s';`;\n } catch (e) {\n console.warn('Failed to set statement timeout, continuing', e);\n }\n\n _connections.push(sql);\n return sql;\n } catch (err) {\n if (attempt === retries) throw err;\n console.warn(\n `Postgres connection failed (attempt ${attempt}), retrying...`\n );\n console.error('error', err);\n await new Promise((res) => setTimeout(res, delayMs));\n }\n }\n throw new Error('Unable to connect to Postgres');\n}\n\nexport async function useAsyncKysely(\n connectionString: string,\n opt?: PgOpt & KyselyOpts\n) {\n const sql = await useAsyncPostgres(connectionString, opt);\n return useKysely(sql, opt);\n}\n\n/**\n * @deprecated This method is deprecated in favor of the useAsyncKysely method.\n */\nexport function usePostgres(\n connectionString?: string,\n opt?: Pick<PgOpt, 'forceDisableSSL'>\n) {\n if (!connectionString) throw new Error('No connection string');\n const ssl = opt?.forceDisableSSL !== true;\n const url = new URL(connectionString);\n console.debug(\n `Creating sync Postgres connection with ssl=${ssl} and port=${url.port}`\n );\n const pg = postgres(connectionString, {\n ssl: ssl ? 'require' : false,\n });\n _connections.push(pg);\n return pg;\n}\n\nexport async function forceCloseAllPostgres(timeoutMs = 5000) {\n await Promise.race([\n Promise.all(\n _connections.map((pg) =>\n pg.end({ timeout: timeoutMs }).catch(() => undefined)\n )\n ),\n new Promise((res) => setTimeout(res, timeoutMs + 1000)),\n ]);\n _connections = [];\n}\n\nexport class DatabaseError extends Error {\n constructor(message: string, cause: any) {\n super(message);\n this.cause = cause;\n }\n}\n\nconst dirname =\n typeof __dirname === 'string' ? join(__dirname, '../../..') : '';\n\nexport async function withStack<T>(a: Promise<T>) {\n // skip if we can't get the stack, probably in a worker\n if (!dirname) return await a;\n\n const now = performance.now();\n const error = new DatabaseError('Error in execute', undefined);\n const stack = error.stack?.split('\\n').slice(3) || undefined;\n const firstLine =\n stack?.length && stack[0]?.includes('(') && dirname\n ? relative(dirname, stack[0].split('(')[1].split(')')[0])\n : undefined;\n try {\n const result = await a;\n console.log(\n `[${firstLine}] Execution time: ${Math.round(performance.now() - now)}ms`\n );\n return result;\n } catch (e: any) {\n if (stack) error.stack = stack.join('\\n').trim();\n else error.stack = e.stack;\n // error.cause = e;\n error.message = e.message;\n const serialized = serializeError(e);\n delete serialized.stack;\n error.cause = serialized;\n console.error(`Error in execute: ${firstLine}`, serializeError(error));\n console.log(\n `[${firstLine}] Execution time: ${Math.round(performance.now() - now)}ms`\n );\n throw error;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"src/","sources":["index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CamelCasePlugin,\n Kysely as K,\n type KyselyPlugin,\n type LogConfig,\n} from 'kysely';\nimport { PostgresJSDialect } from 'kysely-postgres-js';\nimport postgres, { type Sql } from 'postgres';\n\nexport * from './isomorphic';\n\nimport { KyselyPganalyzeCommentPlugin } from './pganalyze-comment-plugin';\nimport type { DB } from './v1.generated';\n\ntype KyselyOpts = {\n repositoryName?: string;\n log?: true | LogConfig;\n};\n\ntype PgOpt = {\n forceDisableSSL?: boolean;\n retries?: false | number;\n};\n\nexport type Kysely = K<DB>;\nexport type Postgres = Sql;\n/**\n * @deprecated This method is deprecated in favor of the useAsyncKysely method.\n */\nexport function useKysely(postgres: Sql, options?: KyselyOpts) {\n console.debug('Creating Kysely instance');\n const plugins: KyselyPlugin[] = [new CamelCasePlugin()];\n if (options?.repositoryName) {\n plugins.push(\n new KyselyPganalyzeCommentPlugin({\n repository: options.repositoryName,\n })\n );\n }\n const kysely = new K<DB>({\n dialect: new PostgresJSDialect({\n postgres,\n }),\n plugins,\n log: options?.log === true ? ['query', 'error'] : options?.log,\n });\n\n kysely.destroy = async () => {\n console.debug('Closing Kysely connection');\n await Promise.race([\n postgres.end({ timeout: 5000 }).catch(() => undefined),\n new Promise((res) => setTimeout(res, 6000)),\n ]);\n const index = _connections.indexOf(postgres);\n if (index !== -1) _connections.splice(index, 1);\n };\n\n return kysely;\n}\n\nlet _connections: postgres.Sql[] = [];\nexport async function useAsyncPostgres(connectionString: string, opt?: PgOpt) {\n const delayMs = 2500;\n const retries = opt?.retries === false ? 0 : opt?.retries || 3;\n const ssl = opt?.forceDisableSSL !== true;\n const url = new URL(connectionString);\n\n console.debug(\n `Creating Postgres connection with ${retries} retries and ssl=${ssl} and port=${url.port}`\n );\n if (_connections.length > 0)\n console.warn(`We already have ${_connections.length} Postgres connections`);\n\n for (let attempt = 1; attempt <= retries; attempt++) {\n try {\n const sql = postgres(connectionString, {\n ssl: ssl ? 'require' : false,\n // connect_timeout: 10\n // idle_timeout: 10\n // enable prepare statements, pgbouncer on crunchy allows for prepared statements\n prepare: true,\n connect_timeout: 10,\n idle_timeout: 60,\n });\n\n await sql`select 1`;\n try {\n // connect 30s, idle 60s, max lifetime 45min, statement 60s, lock 10s, log_min_duration 20s, log_lock_waits off\n await sql`set statement_timeout to '30s';`;\n await sql`set lock_timeout to '10s';`;\n } catch (e) {\n console.warn('Failed to set statement timeout, continuing', e);\n }\n\n _connections.push(sql);\n return sql;\n } catch (err) {\n if (attempt === retries) throw err;\n console.warn(\n `Postgres connection failed (attempt ${attempt}), retrying...`\n );\n console.error('error', err);\n await new Promise((res) => setTimeout(res, delayMs));\n }\n }\n throw new Error('Unable to connect to Postgres');\n}\n\nexport async function useAsyncKysely(\n connectionString: string,\n opt?: PgOpt & KyselyOpts\n) {\n const sql = await useAsyncPostgres(connectionString, opt);\n return useKysely(sql, opt);\n}\n\n/**\n * @deprecated This method is deprecated in favor of the useAsyncKysely method.\n */\nexport function usePostgres(\n connectionString?: string,\n opt?: Pick<PgOpt, 'forceDisableSSL'>\n) {\n if (!connectionString) throw new Error('No connection string');\n const ssl = opt?.forceDisableSSL !== true;\n const url = new URL(connectionString);\n console.debug(\n `Creating sync Postgres connection with ssl=${ssl} and port=${url.port}`\n );\n const pg = postgres(connectionString, {\n ssl: ssl ? 'require' : false,\n });\n _connections.push(pg);\n return pg;\n}\n\nexport async function forceCloseAllPostgres(timeoutMs = 5000) {\n await Promise.race([\n Promise.all(\n _connections.map((pg) =>\n pg.end({ timeout: timeoutMs }).catch(() => undefined)\n )\n ),\n new Promise((res) => setTimeout(res, timeoutMs + 1000)),\n ]);\n _connections = [];\n}\n\nexport class DatabaseError extends Error {\n constructor(message: string, cause: any) {\n super(message);\n this.cause = cause;\n }\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Kysely as K, Transaction as T } from 'kysely';
|
|
2
|
+
export type { ColumnType, Expression, ExpressionBuilder, ExpressionOrFactory, Generated, Insertable, JSONColumnType, OperandExpression, Selectable, SelectQueryBuilder, SqlBool, Updateable, } from 'kysely';
|
|
3
|
+
export { jsonArrayFrom } from 'kysely/helpers/postgres';
|
|
4
|
+
export * from './v1.generated';
|
|
5
|
+
import type { DB } from './v1.generated';
|
|
6
|
+
export type Transaction = T<DB>;
|
|
7
|
+
export { sql } from 'kysely';
|
|
8
|
+
export type Kysely = K<DB>;
|
|
9
|
+
export declare class DatabaseError extends Error {
|
|
10
|
+
constructor(message: string, cause: any);
|
|
11
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.DatabaseError = exports.sql = exports.jsonArrayFrom = void 0;
|
|
18
|
+
var postgres_1 = require("kysely/helpers/postgres");
|
|
19
|
+
Object.defineProperty(exports, "jsonArrayFrom", { enumerable: true, get: function () { return postgres_1.jsonArrayFrom; } });
|
|
20
|
+
__exportStar(require("./v1.generated"), exports);
|
|
21
|
+
var kysely_1 = require("kysely");
|
|
22
|
+
Object.defineProperty(exports, "sql", { enumerable: true, get: function () { return kysely_1.sql; } });
|
|
23
|
+
class DatabaseError extends Error {
|
|
24
|
+
constructor(message, cause) {
|
|
25
|
+
super(message);
|
|
26
|
+
this.cause = cause;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
exports.DatabaseError = DatabaseError;
|
|
30
|
+
//# sourceMappingURL=isomorphic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isomorphic.js","sourceRoot":"src/","sources":["isomorphic.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAgBA,oDAAwD;AAA/C,yGAAA,aAAa,OAAA;AACtB,iDAA+B;AAK/B,iCAA6B;AAApB,6FAAA,GAAG,OAAA;AAIZ,MAAa,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe,EAAE,KAAU;QACrC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AALD,sCAKC","sourcesContent":["import type { Kysely as K, Transaction as T } from 'kysely';\n\nexport type {\n ColumnType,\n Expression,\n ExpressionBuilder,\n ExpressionOrFactory,\n Generated,\n Insertable,\n JSONColumnType,\n OperandExpression,\n Selectable,\n SelectQueryBuilder,\n SqlBool,\n Updateable,\n} from 'kysely';\nexport { jsonArrayFrom } from 'kysely/helpers/postgres';\nexport * from './v1.generated';\n\nimport type { DB } from './v1.generated';\n\nexport type Transaction = T<DB>;\nexport { sql } from 'kysely';\n\nexport type Kysely = K<DB>;\n\nexport class DatabaseError extends Error {\n constructor(message: string, cause: any) {\n super(message);\n this.cause = cause;\n }\n}\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ensureDigestFunction = ensureDigestFunction;
|
|
4
|
+
const isomorphic_1 = require("../isomorphic");
|
|
5
|
+
async function ensureDigestFunction(kysely) {
|
|
6
|
+
try {
|
|
7
|
+
await (0, isomorphic_1.sql) `select digest('', 'sha256')`.execute(kysely);
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
await (0, isomorphic_1.sql) `
|
|
11
|
+
create or replace function digest(input text, algo text)
|
|
12
|
+
returns bytea
|
|
13
|
+
language sql
|
|
14
|
+
immutable
|
|
15
|
+
strict
|
|
16
|
+
as $$
|
|
17
|
+
select '\\x0000000000000000000000000000000000000000000000000000000000000000'::bytea;
|
|
18
|
+
$$;
|
|
19
|
+
`.execute(kysely);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=digest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"digest.js","sourceRoot":"src/","sources":["local/digest.ts"],"names":[],"mappings":";;AAEA,oDAeC;AAjBD,8CAAiD;AAE1C,KAAK,UAAU,oBAAoB,CAAC,MAAc;IACvD,IAAI,CAAC;QACH,MAAM,IAAA,gBAAG,EAAA,6BAA6B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAA,gBAAG,EAAA;;;;;;;;;KASR,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;AACH,CAAC","sourcesContent":["import { type Kysely, sql } from '../isomorphic';\n\nexport async function ensureDigestFunction(kysely: Kysely) {\n try {\n await sql`select digest('', 'sha256')`.execute(kysely);\n } catch {\n await sql`\n create or replace function digest(input text, algo text)\n returns bytea\n language sql\n immutable\n strict\n as $$\n select '\\\\x0000000000000000000000000000000000000000000000000000000000000000'::bytea;\n $$;\n `.execute(kysely);\n }\n}\n"]}
|
|
@@ -130,7 +130,7 @@ async function generateDump(root, dumpPath) {
|
|
|
130
130
|
}
|
|
131
131
|
async function createLocalKysely(root, dumpPath) {
|
|
132
132
|
let isDestroyed = false;
|
|
133
|
-
const now = performance.now();
|
|
133
|
+
//const now = performance.now();
|
|
134
134
|
const dump = await generateDump(root, dumpPath);
|
|
135
135
|
const pglite = new pglite_1.PGlite({ loadDataDir: dump });
|
|
136
136
|
// warm up
|
|
@@ -145,12 +145,14 @@ async function createLocalKysely(root, dumpPath) {
|
|
|
145
145
|
if (isDestroyed)
|
|
146
146
|
return;
|
|
147
147
|
isDestroyed = true;
|
|
148
|
-
const destroyTime = performance.now();
|
|
148
|
+
// const destroyTime = performance.now();
|
|
149
149
|
await originalDestroy().catch(() => undefined);
|
|
150
150
|
await pglite.close().catch(() => undefined);
|
|
151
|
-
console.log(
|
|
151
|
+
//console.log(
|
|
152
|
+
// `Database destroyed: ${Math.round(performance.now() - destroyTime)}ms`
|
|
153
|
+
//);
|
|
152
154
|
};
|
|
153
|
-
console.log(`Database initialized: ${Math.round(performance.now() - now)}ms`);
|
|
155
|
+
// console.log(`Database initialized: ${Math.round(performance.now() - now)}ms`);
|
|
154
156
|
return kysely;
|
|
155
157
|
}
|
|
156
158
|
//# sourceMappingURL=generate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"src/","sources":["local/generate.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"src/","sources":["local/generate.ts"],"names":[],"mappings":"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","sourcesContent":["import { promises as fs } from 'node:fs';\nimport { exists } from 'node:fs/promises';\nimport * as path from 'node:path';\nimport { join } from 'node:path';\nimport { PGlite } from '@electric-sql/pglite';\nimport {\n CamelCasePlugin,\n FileMigrationProvider,\n Kysely,\n Migrator,\n} from 'kysely';\nimport codegen from 'kysely-codegen';\nimport { KyselyPGlite } from 'kysely-pglite';\nimport type { DB } from '../v1.generated';\n\nasync function migrate(root: string, client: PGlite) {\n console.log('migrating pglite ....');\n const glob = new Bun.Glob('initial/*.sql');\n for await (const migration of glob.scan(root)) {\n await client.exec(await Bun.file(join(root, migration)).text());\n }\n}\n\nasync function migrateKysely(root: string, kysely: Kysely<any>) {\n console.log('init migrating kysely ....');\n const migrator = new Migrator({\n db: kysely,\n migrationTableSchema: 'core',\n migrationTableName: 'kysely_migration',\n migrationLockTableName: 'kysely_migration_lock',\n provider: new FileMigrationProvider({\n fs,\n path,\n // This needs to be an absolute path.\n migrationFolder: path.join(root, 'migrations'),\n }),\n });\n\n console.log('migrating kysely ....');\n const { error, results } = await migrator.migrateToLatest().catch(() => {\n console.error('failed to migrate');\n process.exit(1);\n });\n\n for (const it of results ?? []) {\n if (it.status === 'Success') {\n console.log(`migration \"${it.migrationName}\" was executed successfully`);\n } else if (it.status === 'Error') {\n console.error(`failed to execute migration \"${it.migrationName}\"`);\n }\n }\n\n if (error) {\n console.error('failed to migrate');\n console.error(error);\n process.exit(1);\n }\n}\n\nasync function generateDump(root: string, dumpPath: string) {\n const dataExists = await exists(dumpPath).catch(() => false);\n if (!dataExists) {\n console.log('Creating initial dump');\n const main = new PGlite();\n await migrate(root, main).catch(async (err) => {\n console.error('failed to migrate initial dump');\n await Bun.write(\n '../logs/migrate-initial-dump.json',\n JSON.stringify(err as any, null, 2)\n );\n process.exit(1);\n });\n const { dialect } = new KyselyPGlite(main);\n const kysely = new Kysely<DB>({\n dialect,\n plugins: [new CamelCasePlugin()],\n });\n await migrateKysely(root, kysely).catch(() => {\n console.error('failed to migrate kysely');\n process.exit(1);\n });\n await codegen\n .generate({\n db: kysely,\n outFile: path.join(root, 'src/v1.generated.ts'),\n defaultSchemas: ['xxx'],\n camelCase: true,\n dialect: codegen.getDialect('postgres'),\n })\n .catch(() => {\n console.error('failed to generate kysely');\n process.exit(1);\n });\n const content = await main.dumpDataDir('none').catch(() => {\n console.error('failed to dump data');\n process.exit(1);\n });\n await Bun.write(dumpPath, content).catch(() => {\n console.error('failed to write dump');\n process.exit(1);\n });\n return content;\n }\n return Bun.file(dumpPath);\n}\n\nexport async function createLocalKysely(root: string, dumpPath: string) {\n let isDestroyed = false;\n //const now = performance.now();\n\n const dump = await generateDump(root, dumpPath);\n\n const pglite = new PGlite({ loadDataDir: dump });\n // warm up\n await pglite.sql`SELECT 1`;\n const { dialect } = new KyselyPGlite(pglite);\n const kysely = new Kysely<DB>({\n dialect,\n plugins: [new CamelCasePlugin()],\n });\n\n const originalDestroy = kysely.destroy.bind(kysely);\n kysely.destroy = async () => {\n if (isDestroyed) return;\n isDestroyed = true;\n // const destroyTime = performance.now();\n await originalDestroy().catch(() => undefined);\n await pglite.close().catch(() => undefined);\n //console.log(\n // `Database destroyed: ${Math.round(performance.now() - destroyTime)}ms`\n //);\n };\n\n // console.log(`Database initialized: ${Math.round(performance.now() - now)}ms`);\n\n return kysely;\n}\n"]}
|
|
@@ -7,15 +7,15 @@ const pglite_1 = require("@electric-sql/pglite");
|
|
|
7
7
|
const kysely_1 = require("kysely");
|
|
8
8
|
const kysely_pglite_1 = require("kysely-pglite");
|
|
9
9
|
const pganalyze_comment_plugin_1 = require("../pganalyze-comment-plugin");
|
|
10
|
+
const digest_1 = require("./digest");
|
|
10
11
|
exports.root = (0, node_path_1.join)(__dirname, '../..');
|
|
11
12
|
exports.dumpPath = (0, node_path_1.join)(exports.root, '.data.tar');
|
|
12
13
|
async function useLocalKysely(args = {}) {
|
|
13
14
|
let isDestroyed = false;
|
|
14
|
-
const now = performance.now();
|
|
15
|
+
// const now = performance.now();
|
|
15
16
|
const dump = Bun.file(exports.dumpPath);
|
|
16
17
|
const pglite = new pglite_1.PGlite({ loadDataDir: dump });
|
|
17
18
|
// warm up
|
|
18
|
-
await pglite.sql `SELECT 1`;
|
|
19
19
|
const { dialect } = new kysely_pglite_1.KyselyPGlite(pglite);
|
|
20
20
|
const kysely = new kysely_1.Kysely({
|
|
21
21
|
dialect,
|
|
@@ -27,17 +27,20 @@ async function useLocalKysely(args = {}) {
|
|
|
27
27
|
}),
|
|
28
28
|
],
|
|
29
29
|
});
|
|
30
|
+
await (0, digest_1.ensureDigestFunction)(kysely);
|
|
30
31
|
const originalDestroy = kysely.destroy.bind(kysely);
|
|
31
32
|
kysely.destroy = async () => {
|
|
32
33
|
if (isDestroyed)
|
|
33
34
|
return;
|
|
34
35
|
isDestroyed = true;
|
|
35
|
-
const destroyTime = performance.now();
|
|
36
|
+
//const destroyTime = performance.now();
|
|
36
37
|
await originalDestroy().catch(() => undefined);
|
|
37
38
|
await pglite.close().catch(() => undefined);
|
|
38
|
-
console.log(
|
|
39
|
+
//console.log(
|
|
40
|
+
// `Database destroyed: ${Math.round(performance.now() - destroyTime)}ms`
|
|
41
|
+
//);
|
|
39
42
|
};
|
|
40
|
-
console.log(`Database initialized: ${Math.round(performance.now() - now)}ms`);
|
|
43
|
+
// console.log(`Database initialized: ${Math.round(performance.now() - now)}ms`);
|
|
41
44
|
return kysely;
|
|
42
45
|
}
|
|
43
46
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"src/","sources":["local/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"src/","sources":["local/index.ts"],"names":[],"mappings":";;;AAeA,wCAoCC;AAnDD,yCAAiC;AACjC,iDAA8C;AAC9C,mCAAiE;AACjE,iDAA6C;AAC7C,0EAA2E;AAE3E,qCAAgD;AAEnC,QAAA,IAAI,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAChC,QAAA,QAAQ,GAAG,IAAA,gBAAI,EAAC,YAAI,EAAE,WAAW,CAAC,CAAC;AAMzC,KAAK,UAAU,cAAc,CAAC,OAA8B,EAAE;IACnE,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,iCAAiC;IAEjC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,gBAAQ,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,UAAU;IACV,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,4BAAY,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,eAAM,CAAK;QAC5B,OAAO;QACP,GAAG,EAAE,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;QACtD,OAAO,EAAE;YACP,IAAI,wBAAe,EAAE;YACrB,IAAI,uDAA4B,CAAC;gBAC/B,UAAU,EAAE,IAAI,CAAC,cAAc,IAAI,cAAc;aAClD,CAAC;SACH;KACF,CAAC,CAAC;IACH,MAAM,IAAA,6BAAoB,EAAC,MAAM,CAAC,CAAC;IAEnC,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,CAAC,OAAO,GAAG,KAAK,IAAI,EAAE;QAC1B,IAAI,WAAW;YAAE,OAAO;QACxB,WAAW,GAAG,IAAI,CAAC;QACnB,wCAAwC;QACxC,MAAM,eAAe,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC5C,cAAc;QACd,0EAA0E;QAC1E,IAAI;IACN,CAAC,CAAC;IAEF,iFAAiF;IAEjF,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { join } from 'node:path';\nimport { PGlite } from '@electric-sql/pglite';\nimport { CamelCasePlugin, Kysely, type LogConfig } from 'kysely';\nimport { KyselyPGlite } from 'kysely-pglite';\nimport { KyselyPganalyzeCommentPlugin } from '../pganalyze-comment-plugin';\nimport type { DB } from '../v1.generated';\nimport { ensureDigestFunction } from './digest';\n\nexport const root = join(__dirname, '../..');\nexport const dumpPath = join(root, '.data.tar');\n\nexport type UseLocalKyselyOptions = {\n repositoryName?: string;\n log?: true | LogConfig;\n};\nexport async function useLocalKysely(args: UseLocalKyselyOptions = {}) {\n let isDestroyed = false;\n // const now = performance.now();\n\n const dump = Bun.file(dumpPath);\n\n const pglite = new PGlite({ loadDataDir: dump });\n // warm up\n const { dialect } = new KyselyPGlite(pglite);\n const kysely = new Kysely<DB>({\n dialect,\n log: args.log === true ? ['query', 'error'] : args.log,\n plugins: [\n new CamelCasePlugin(),\n new KyselyPganalyzeCommentPlugin({\n repository: args.repositoryName ?? 'localTesting',\n }),\n ],\n });\n await ensureDigestFunction(kysely);\n\n const originalDestroy = kysely.destroy.bind(kysely);\n kysely.destroy = async () => {\n if (isDestroyed) return;\n isDestroyed = true;\n //const destroyTime = performance.now();\n await originalDestroy().catch(() => undefined);\n await pglite.close().catch(() => undefined);\n //console.log(\n // `Database destroyed: ${Math.round(performance.now() - destroyTime)}ms`\n //);\n };\n\n // console.log(`Database initialized: ${Math.round(performance.now() - now)}ms`);\n\n return kysely;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../../src/index.ts","../../src/v1.generated.ts","../../src/local/generate.ts","../../src/local/index.ts","../../src/pganalyze-comment-plugin/comment-transformer.ts","../../src/pganalyze-comment-plugin/index.ts","../../src/test/index.ts"],"version":"5.9.3"}
|
|
1
|
+
{"root":["../../src/index.ts","../../src/isomorphic.ts","../../src/v1.generated.ts","../../src/local/digest.ts","../../src/local/generate.ts","../../src/local/index.ts","../../src/pganalyze-comment-plugin/comment-transformer.ts","../../src/pganalyze-comment-plugin/index.ts","../../src/test/index.ts"],"version":"5.9.3"}
|
|
@@ -21,7 +21,7 @@ export interface AccountingAccount {
|
|
|
21
21
|
bankingCurrency: string | null;
|
|
22
22
|
bankingLast4: string | null;
|
|
23
23
|
bankingType: string | null;
|
|
24
|
-
categoryId: string
|
|
24
|
+
categoryId: string;
|
|
25
25
|
/**
|
|
26
26
|
* deprecated
|
|
27
27
|
*/
|
|
@@ -29,10 +29,10 @@ export interface AccountingAccount {
|
|
|
29
29
|
createdAt: Generated<Timestamp | null>;
|
|
30
30
|
id: Generated<string>;
|
|
31
31
|
offsetAccountId: string | null;
|
|
32
|
-
status: Generated<string
|
|
32
|
+
status: Generated<string>;
|
|
33
33
|
tenantId: string | null;
|
|
34
|
-
title: string
|
|
35
|
-
type: string
|
|
34
|
+
title: string;
|
|
35
|
+
type: string;
|
|
36
36
|
uniqueRef: string | null;
|
|
37
37
|
updatedAt: Generated<Timestamp | null>;
|
|
38
38
|
}
|
|
@@ -194,6 +194,7 @@ export interface AccountingJournalEntry {
|
|
|
194
194
|
triggerId: string | null;
|
|
195
195
|
triggerType: string | null;
|
|
196
196
|
txnAt: Timestamp | null;
|
|
197
|
+
txnCode: Generated<string | null>;
|
|
197
198
|
txnNum: number | null;
|
|
198
199
|
type: string | null;
|
|
199
200
|
uniqueRef: string | null;
|
|
@@ -1214,6 +1215,7 @@ export interface PublicReservation {
|
|
|
1214
1215
|
lineMap: Json | null;
|
|
1215
1216
|
listingConnectionId: string | null;
|
|
1216
1217
|
listingId: string | null;
|
|
1218
|
+
matchPaymentCustomerRef: string | null;
|
|
1217
1219
|
metadata: Json | null;
|
|
1218
1220
|
nights: number | null;
|
|
1219
1221
|
otaReservationId: string | null;
|