@balena/pinejs 15.0.0-true-boolean-7896b116c446d891d7a0d5e4085c02a13bc9c725 → 15.0.1-build-migrations-clarify-marking-sbvr-optional-d6d0ded8eccc6eadb2492f4697918cf0afd00215-1
Sign up to get free protection for your applications and to get access to all the features.
- package/.dockerignore +4 -0
- package/.github/workflows/flowzone.yml +21 -0
- package/.husky/pre-commit +4 -0
- package/.pinejs-cache.json +1 -0
- package/.resinci.yml +1 -0
- package/.versionbot/CHANGELOG.yml +9678 -2002
- package/CHANGELOG.md +2976 -2
- package/Dockerfile +14 -0
- package/Gruntfile.ts +3 -6
- package/README.md +10 -1
- package/VERSION +1 -0
- package/build/browser.ts +1 -1
- package/build/config.ts +0 -1
- package/docker-compose.npm-test.yml +11 -0
- package/docs/AdvancedUsage.md +77 -63
- package/docs/GettingStarted.md +90 -41
- package/docs/Migrations.md +102 -1
- package/docs/ProjectConfig.md +12 -21
- package/docs/Testing.md +7 -0
- package/out/bin/abstract-sql-compiler.js +17 -17
- package/out/bin/abstract-sql-compiler.js.map +1 -1
- package/out/bin/odata-compiler.js +23 -20
- package/out/bin/odata-compiler.js.map +1 -1
- package/out/bin/sbvr-compiler.js +22 -22
- package/out/bin/sbvr-compiler.js.map +1 -1
- package/out/bin/utils.d.ts +2 -2
- package/out/bin/utils.js +3 -3
- package/out/bin/utils.js.map +1 -1
- package/out/config-loader/config-loader.d.ts +9 -8
- package/out/config-loader/config-loader.js +135 -78
- package/out/config-loader/config-loader.js.map +1 -1
- package/out/config-loader/env.d.ts +41 -16
- package/out/config-loader/env.js +46 -2
- package/out/config-loader/env.js.map +1 -1
- package/out/data-server/sbvr-server.d.ts +2 -19
- package/out/data-server/sbvr-server.js +44 -38
- package/out/data-server/sbvr-server.js.map +1 -1
- package/out/database-layer/db.d.ts +32 -14
- package/out/database-layer/db.js +120 -41
- package/out/database-layer/db.js.map +1 -1
- package/out/express-emulator/express.js +10 -11
- package/out/express-emulator/express.js.map +1 -1
- package/out/http-transactions/transactions.d.ts +2 -18
- package/out/http-transactions/transactions.js +29 -21
- package/out/http-transactions/transactions.js.map +1 -1
- package/out/migrator/async.d.ts +7 -0
- package/out/migrator/async.js +168 -0
- package/out/migrator/async.js.map +1 -0
- package/out/migrator/migrations.sbvr +43 -0
- package/out/migrator/sync.d.ts +9 -0
- package/out/migrator/sync.js +106 -0
- package/out/migrator/sync.js.map +1 -0
- package/out/migrator/utils.d.ts +78 -0
- package/out/migrator/utils.js +283 -0
- package/out/migrator/utils.js.map +1 -0
- package/out/odata-metadata/odata-metadata-generator.js +10 -13
- package/out/odata-metadata/odata-metadata-generator.js.map +1 -1
- package/out/passport-pinejs/passport-pinejs.d.ts +1 -1
- package/out/passport-pinejs/passport-pinejs.js +8 -7
- package/out/passport-pinejs/passport-pinejs.js.map +1 -1
- package/out/pinejs-session-store/pinejs-session-store.d.ts +1 -1
- package/out/pinejs-session-store/pinejs-session-store.js +20 -6
- package/out/pinejs-session-store/pinejs-session-store.js.map +1 -1
- package/out/sbvr-api/abstract-sql.d.ts +3 -2
- package/out/sbvr-api/abstract-sql.js +9 -9
- package/out/sbvr-api/abstract-sql.js.map +1 -1
- package/out/sbvr-api/cached-compile.js +1 -1
- package/out/sbvr-api/cached-compile.js.map +1 -1
- package/out/sbvr-api/common-types.d.ts +6 -5
- package/out/sbvr-api/control-flow.d.ts +8 -1
- package/out/sbvr-api/control-flow.js +36 -9
- package/out/sbvr-api/control-flow.js.map +1 -1
- package/out/sbvr-api/errors.d.ts +47 -40
- package/out/sbvr-api/errors.js +78 -77
- package/out/sbvr-api/errors.js.map +1 -1
- package/out/sbvr-api/express-extension.d.ts +4 -0
- package/out/sbvr-api/hooks.d.ts +16 -15
- package/out/sbvr-api/hooks.js +74 -48
- package/out/sbvr-api/hooks.js.map +1 -1
- package/out/sbvr-api/odata-response.d.ts +2 -2
- package/out/sbvr-api/odata-response.js +28 -30
- package/out/sbvr-api/odata-response.js.map +1 -1
- package/out/sbvr-api/permissions.d.ts +17 -16
- package/out/sbvr-api/permissions.js +369 -304
- package/out/sbvr-api/permissions.js.map +1 -1
- package/out/sbvr-api/sbvr-utils.d.ts +33 -15
- package/out/sbvr-api/sbvr-utils.js +397 -235
- package/out/sbvr-api/sbvr-utils.js.map +1 -1
- package/out/sbvr-api/translations.d.ts +6 -0
- package/out/sbvr-api/translations.js +150 -0
- package/out/sbvr-api/translations.js.map +1 -0
- package/out/sbvr-api/uri-parser.d.ts +23 -17
- package/out/sbvr-api/uri-parser.js +33 -27
- package/out/sbvr-api/uri-parser.js.map +1 -1
- package/out/sbvr-api/user.sbvr +2 -0
- package/out/server-glue/module.d.ts +6 -6
- package/out/server-glue/module.js +4 -2
- package/out/server-glue/module.js.map +1 -1
- package/out/server-glue/server.js +5 -5
- package/out/server-glue/server.js.map +1 -1
- package/package.json +89 -73
- package/pinejs.png +0 -0
- package/repo.yml +9 -9
- package/src/bin/abstract-sql-compiler.ts +5 -7
- package/src/bin/odata-compiler.ts +11 -13
- package/src/bin/sbvr-compiler.ts +11 -17
- package/src/bin/utils.ts +3 -5
- package/src/config-loader/config-loader.ts +167 -53
- package/src/config-loader/env.ts +106 -6
- package/src/data-server/sbvr-server.js +44 -38
- package/src/database-layer/db.ts +205 -64
- package/src/express-emulator/express.js +10 -11
- package/src/http-transactions/transactions.js +29 -21
- package/src/migrator/async.ts +323 -0
- package/src/migrator/migrations.sbvr +43 -0
- package/src/migrator/sync.ts +152 -0
- package/src/migrator/utils.ts +458 -0
- package/src/odata-metadata/odata-metadata-generator.ts +12 -15
- package/src/passport-pinejs/passport-pinejs.ts +9 -7
- package/src/pinejs-session-store/pinejs-session-store.ts +15 -1
- package/src/sbvr-api/abstract-sql.ts +17 -14
- package/src/sbvr-api/common-types.ts +2 -1
- package/src/sbvr-api/control-flow.ts +45 -11
- package/src/sbvr-api/errors.ts +82 -77
- package/src/sbvr-api/express-extension.ts +6 -1
- package/src/sbvr-api/hooks.ts +123 -50
- package/src/sbvr-api/odata-response.ts +23 -28
- package/src/sbvr-api/permissions.ts +548 -415
- package/src/sbvr-api/sbvr-utils.ts +581 -259
- package/src/sbvr-api/translations.ts +248 -0
- package/src/sbvr-api/uri-parser.ts +63 -49
- package/src/sbvr-api/user.sbvr +2 -0
- package/src/server-glue/module.ts +16 -10
- package/src/server-glue/server.ts +5 -5
- package/tsconfig.dev.json +1 -0
- package/tsconfig.json +1 -2
- package/typings/lf-to-abstract-sql.d.ts +6 -9
- package/typings/memoizee.d.ts +1 -1
- package/.github/CODEOWNERS +0 -1
- package/circle.yml +0 -37
- package/docs/todo.txt +0 -22
- package/out/migrator/migrator.d.ts +0 -20
- package/out/migrator/migrator.js +0 -188
- package/out/migrator/migrator.js.map +0 -1
- package/src/migrator/migrator.ts +0 -286
@@ -47,6 +47,7 @@ const serverIsOnAir = async (_req, _res, next) => {
|
|
47
47
|
}
|
48
48
|
};
|
49
49
|
|
50
|
+
/** @type {import('../config-loader/config-loader').Config} */
|
50
51
|
export let config = {
|
51
52
|
models: [
|
52
53
|
{
|
@@ -59,17 +60,22 @@ export let config = {
|
|
59
60
|
ALTER TABLE "textarea"
|
60
61
|
ADD COLUMN IF NOT EXISTS "modified at" TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL;\
|
61
62
|
`,
|
62
|
-
'15.0.0-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
63
|
+
'15.0.0-data-types': async (tx, sbvrUtils) => {
|
64
|
+
switch (sbvrUtils.db.engine) {
|
65
|
+
case 'mysql':
|
66
|
+
await tx.executeSql(`\
|
67
|
+
ALTER TABLE "textarea"
|
68
|
+
MODIFY "is disabled" BOOLEAN NOT NULL;`);
|
69
|
+
break;
|
70
|
+
case 'postgres':
|
71
|
+
await tx.executeSql(`\
|
72
|
+
ALTER TABLE "textarea"
|
73
|
+
ALTER COLUMN "is disabled" DROP DEFAULT,
|
74
|
+
ALTER COLUMN "is disabled" SET DATA TYPE BOOLEAN USING "is disabled"::BOOLEAN,
|
75
|
+
ALTER COLUMN "is disabled" SET DEFAULT FALSE;`);
|
76
|
+
break;
|
77
|
+
// No need to migrate for websql
|
78
|
+
}
|
73
79
|
},
|
74
80
|
},
|
75
81
|
},
|
@@ -134,7 +140,7 @@ export async function setup(app, sbvrUtils, db) {
|
|
134
140
|
const instance = result[0];
|
135
141
|
await sbvrUtils.executeModel(tx, {
|
136
142
|
apiRoot: instance.is_of__vocabulary,
|
137
|
-
modelText: instance.model_value,
|
143
|
+
modelText: instance.model_value.value,
|
138
144
|
});
|
139
145
|
});
|
140
146
|
await isServerOnAir(true);
|
@@ -153,7 +159,7 @@ export async function setup(app, sbvrUtils, db) {
|
|
153
159
|
permissions.checkPermissionsMiddleware('all'),
|
154
160
|
serverIsOnAir,
|
155
161
|
(_req, res) => {
|
156
|
-
res.
|
162
|
+
res.status(404).end();
|
157
163
|
},
|
158
164
|
);
|
159
165
|
|
@@ -199,7 +205,7 @@ export async function setup(app, sbvrUtils, db) {
|
|
199
205
|
});
|
200
206
|
});
|
201
207
|
await isServerOnAir(true);
|
202
|
-
res.
|
208
|
+
res.status(200).end();
|
203
209
|
} catch (err) {
|
204
210
|
await isServerOnAir(false);
|
205
211
|
res.status(404).json(err);
|
@@ -215,7 +221,7 @@ export async function setup(app, sbvrUtils, db) {
|
|
215
221
|
res.json(results);
|
216
222
|
} catch (err) {
|
217
223
|
console.log('Error validating', err);
|
218
|
-
res.
|
224
|
+
res.status(404).end();
|
219
225
|
}
|
220
226
|
},
|
221
227
|
);
|
@@ -239,10 +245,10 @@ export async function setup(app, sbvrUtils, db) {
|
|
239
245
|
await sbvrUtils.executeModels(tx, exports.config.models);
|
240
246
|
await setupModels(tx);
|
241
247
|
});
|
242
|
-
res.
|
243
|
-
} catch (err) {
|
244
|
-
console.error('Error clearing db', err
|
245
|
-
res.
|
248
|
+
res.status(200).end();
|
249
|
+
} catch (/** @type any */ err) {
|
250
|
+
console.error('Error clearing db', err);
|
251
|
+
res.status(503).end();
|
246
252
|
}
|
247
253
|
},
|
248
254
|
);
|
@@ -266,10 +272,10 @@ export async function setup(app, sbvrUtils, db) {
|
|
266
272
|
}
|
267
273
|
}
|
268
274
|
});
|
269
|
-
res.
|
270
|
-
} catch (err) {
|
271
|
-
console.error('Error importing db', err
|
272
|
-
res.
|
275
|
+
res.status(200).end();
|
276
|
+
} catch (/** @type any */ err) {
|
277
|
+
console.error('Error importing db', err);
|
278
|
+
res.status(404).end();
|
273
279
|
}
|
274
280
|
},
|
275
281
|
);
|
@@ -290,11 +296,11 @@ export async function setup(app, sbvrUtils, db) {
|
|
290
296
|
'SELECT * FROM "' + tableName + '";',
|
291
297
|
);
|
292
298
|
let insQuery = '';
|
293
|
-
result.rows
|
299
|
+
for (const currRow of result.rows) {
|
294
300
|
let notFirst = false;
|
295
301
|
insQuery += 'INSERT INTO "' + tableName + '" (';
|
296
302
|
let valQuery = '';
|
297
|
-
for (
|
303
|
+
for (const propName of Object.keys(currRow)) {
|
298
304
|
if (notFirst) {
|
299
305
|
insQuery += ',';
|
300
306
|
valQuery += ',';
|
@@ -305,15 +311,15 @@ export async function setup(app, sbvrUtils, db) {
|
|
305
311
|
valQuery += "'" + currRow[propName] + "'";
|
306
312
|
}
|
307
313
|
insQuery += ') values (' + valQuery + ');\n';
|
308
|
-
}
|
314
|
+
}
|
309
315
|
exported += insQuery;
|
310
316
|
}),
|
311
317
|
);
|
312
318
|
});
|
313
319
|
res.json(exported);
|
314
|
-
} catch (err) {
|
315
|
-
console.error('Error exporting db', err
|
316
|
-
res.
|
320
|
+
} catch (/** @type any */ err) {
|
321
|
+
console.error('Error exporting db', err);
|
322
|
+
res.status(503).end();
|
317
323
|
}
|
318
324
|
},
|
319
325
|
);
|
@@ -340,10 +346,10 @@ export async function setup(app, sbvrUtils, db) {
|
|
340
346
|
}),
|
341
347
|
);
|
342
348
|
});
|
343
|
-
res.
|
344
|
-
} catch (err) {
|
345
|
-
console.error('Error backing up db', err
|
346
|
-
res.
|
349
|
+
res.status(200).end();
|
350
|
+
} catch (/** @type any */ err) {
|
351
|
+
console.error('Error backing up db', err);
|
352
|
+
res.status(404).end();
|
347
353
|
}
|
348
354
|
},
|
349
355
|
);
|
@@ -369,10 +375,10 @@ export async function setup(app, sbvrUtils, db) {
|
|
369
375
|
}),
|
370
376
|
);
|
371
377
|
});
|
372
|
-
res.
|
373
|
-
} catch (err) {
|
374
|
-
console.error('Error restoring db', err
|
375
|
-
res.
|
378
|
+
res.status(200).end();
|
379
|
+
} catch (/** @type any */ err) {
|
380
|
+
console.error('Error restoring db', err);
|
381
|
+
res.status(404).end();
|
376
382
|
}
|
377
383
|
},
|
378
384
|
);
|
@@ -398,7 +404,7 @@ export async function setup(app, sbvrUtils, db) {
|
|
398
404
|
sbvrUtils.deleteModel('data'),
|
399
405
|
]);
|
400
406
|
await isServerOnAir(false);
|
401
|
-
res.
|
407
|
+
res.status(200).end();
|
402
408
|
});
|
403
409
|
|
404
410
|
await db.transaction(setupModels);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sbvr-server.js","sourceRoot":"","sources":["../../src/data-server/sbvr-server.js"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"sbvr-server.js","sourceRoot":"","sources":["../../src/data-server/sbvr-server.js"],"names":[],"mappings":"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"}
|
@@ -1,7 +1,9 @@
|
|
1
1
|
/// <reference types="websql" />
|
2
|
+
import type * as Mysql from 'mysql';
|
3
|
+
import type * as Pg from 'pg';
|
2
4
|
import type { Resolvable } from '../sbvr-api/common-types';
|
3
5
|
import { Engines } from '@balena/abstract-sql-compiler';
|
4
|
-
import
|
6
|
+
import { EventEmitter } from 'eventemitter3';
|
5
7
|
import { TypedError } from 'typed-error';
|
6
8
|
export declare const metrics: EventEmitter<string | symbol, any>;
|
7
9
|
export interface CodedError extends Error {
|
@@ -13,12 +15,12 @@ export interface Row {
|
|
13
15
|
export interface Result {
|
14
16
|
rows: Row[];
|
15
17
|
rowsAffected: number;
|
16
|
-
insertId?: number;
|
18
|
+
insertId?: number | undefined;
|
17
19
|
}
|
18
|
-
export
|
19
|
-
export
|
20
|
+
export type Sql = string;
|
21
|
+
export type Bindings = any[];
|
20
22
|
export declare class DatabaseError extends TypedError {
|
21
|
-
code
|
23
|
+
code?: number | string;
|
22
24
|
constructor(message?: string | CodedError | SQLError);
|
23
25
|
}
|
24
26
|
export declare class ConstraintError extends DatabaseError {
|
@@ -45,7 +47,7 @@ declare const alwaysExport: {
|
|
45
47
|
TransactionClosedError: typeof TransactionClosedError;
|
46
48
|
ReadOnlyViolationError: typeof ReadOnlyViolationError;
|
47
49
|
};
|
48
|
-
|
50
|
+
type BaseDatabase = typeof alwaysExport;
|
49
51
|
interface TransactionFn {
|
50
52
|
<T>(fn: (tx: Tx) => Resolvable<T>): Promise<T>;
|
51
53
|
(): Promise<Tx>;
|
@@ -56,9 +58,11 @@ export interface Database extends BaseDatabase {
|
|
56
58
|
transaction: TransactionFn;
|
57
59
|
readTransaction: TransactionFn;
|
58
60
|
}
|
59
|
-
|
60
|
-
[engine: string]: (
|
61
|
-
}
|
61
|
+
interface EngineParams {
|
62
|
+
[engine: string]: (options: unknown) => Database;
|
63
|
+
}
|
64
|
+
export declare const engines: EngineParams;
|
65
|
+
export declare function registerTransactionLockNamespace(namespaceKey: string, namespaceId: number): void;
|
62
66
|
declare class AutomaticClose {
|
63
67
|
private stackTraceErr?;
|
64
68
|
private automaticCloseTimeout;
|
@@ -73,7 +77,6 @@ export declare abstract class Tx {
|
|
73
77
|
protected readOnly: boolean;
|
74
78
|
private closed;
|
75
79
|
protected automaticClose: AutomaticClose;
|
76
|
-
abstract readonly engine: Engines;
|
77
80
|
constructor(readOnly: boolean, stackTraceErr?: Error | AutomaticClose);
|
78
81
|
private closeTransaction;
|
79
82
|
isClosed(): boolean;
|
@@ -84,17 +87,32 @@ export declare abstract class Tx {
|
|
84
87
|
protected $executeSql(sql: Sql, bindings?: Bindings, ...args: any[]): Promise<Result>;
|
85
88
|
rollback(): Promise<void>;
|
86
89
|
end(): Promise<void>;
|
90
|
+
disableAutomaticClose(): void;
|
87
91
|
private listeners;
|
88
92
|
on(name: keyof Tx['listeners'], fn: () => void): void;
|
89
93
|
private clearListeners;
|
90
94
|
protected abstract _executeSql(sql: Sql, bindings: Bindings, addReturning?: false | string): Promise<Result>;
|
91
95
|
protected abstract _rollback(): Promise<void>;
|
92
96
|
protected abstract _commit(): Promise<void>;
|
97
|
+
getTxLevelLock(_namespaceKey: string, _key: number, _blocking?: boolean): Promise<boolean>;
|
93
98
|
abstract tableList(extraWhereClause?: string): Promise<Result>;
|
94
99
|
dropTable(tableName: string, ifExists?: boolean): Promise<Result>;
|
95
100
|
}
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
101
|
+
interface EngineParams {
|
102
|
+
postgres: (options: string | Pg.PoolConfig | {
|
103
|
+
primary: Pg.PoolConfig;
|
104
|
+
replica?: Pg.PoolConfig;
|
105
|
+
}) => Database;
|
106
|
+
}
|
107
|
+
interface EngineParams {
|
108
|
+
mysql: (options: Mysql.PoolConfig) => Database;
|
109
|
+
}
|
110
|
+
interface EngineParams {
|
111
|
+
websql: (databaseName: string) => Database;
|
112
|
+
}
|
113
|
+
export type DatabaseOptions<T extends keyof EngineParams> = {
|
114
|
+
engine: T;
|
115
|
+
params: Parameters<EngineParams[T]>[0];
|
116
|
+
};
|
117
|
+
export declare const connect: <T extends keyof EngineParams>(databaseOptions: DatabaseOptions<T>) => Database;
|
100
118
|
export {};
|
package/out/database-layer/db.js
CHANGED
@@ -1,16 +1,14 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.connect = exports.Tx = exports.engines = exports.ReadOnlyViolationError = exports.TransactionClosedError = exports.ExclusionConstraintError = exports.CheckConstraintError = exports.ForeignKeyConstraintError = exports.UniqueConstraintError = exports.ConstraintError = exports.DatabaseError = exports.metrics = void 0;
|
4
|
-
const
|
5
|
-
const EventEmitter = require("eventemitter3");
|
3
|
+
exports.connect = exports.Tx = exports.registerTransactionLockNamespace = exports.engines = exports.ReadOnlyViolationError = exports.TransactionClosedError = exports.ExclusionConstraintError = exports.CheckConstraintError = exports.ForeignKeyConstraintError = exports.UniqueConstraintError = exports.ConstraintError = exports.DatabaseError = exports.metrics = void 0;
|
4
|
+
const eventemitter3_1 = require("eventemitter3");
|
6
5
|
const _ = require("lodash");
|
7
6
|
const typed_error_1 = require("typed-error");
|
8
7
|
const env = require("../config-loader/env");
|
9
|
-
|
8
|
+
const control_flow_1 = require("../sbvr-api/control-flow");
|
9
|
+
exports.metrics = new eventemitter3_1.EventEmitter();
|
10
10
|
const isSqlError = (value) => {
|
11
|
-
return
|
12
|
-
value.constructor != null &&
|
13
|
-
value.constructor.name === 'SQLError');
|
11
|
+
return value?.constructor?.name === 'SQLError';
|
14
12
|
};
|
15
13
|
class DatabaseError extends typed_error_1.TypedError {
|
16
14
|
constructor(message) {
|
@@ -67,6 +65,32 @@ const alwaysExport = {
|
|
67
65
|
ReadOnlyViolationError,
|
68
66
|
};
|
69
67
|
exports.engines = {};
|
68
|
+
const types = {
|
69
|
+
integer: {
|
70
|
+
min: -2147483648,
|
71
|
+
max: 2147483647,
|
72
|
+
},
|
73
|
+
};
|
74
|
+
const validateTransactionLockParameter = (value, parameterName) => {
|
75
|
+
if (!Number.isInteger(value) ||
|
76
|
+
value < types.integer.min ||
|
77
|
+
types.integer.max < value) {
|
78
|
+
throw new TypeError(`Invalid parameter '${parameterName}' provided for transaction lock`);
|
79
|
+
}
|
80
|
+
};
|
81
|
+
const transactionLockNamespaceMap = {};
|
82
|
+
function registerTransactionLockNamespace(namespaceKey, namespaceId) {
|
83
|
+
validateTransactionLockParameter(namespaceId, 'namespaceId');
|
84
|
+
if (transactionLockNamespaceMap[namespaceKey] != null) {
|
85
|
+
throw new Error(`Error while registering transaction lock namespace '${namespaceKey}'. Namespace key is already registered.`);
|
86
|
+
}
|
87
|
+
const existingNamespaceEntry = Object.entries(transactionLockNamespaceMap).find(([, id]) => id === namespaceId);
|
88
|
+
if (existingNamespaceEntry != null) {
|
89
|
+
throw new Error(`Error while registering transaction lock namespace '${namespaceKey}'. Transaction lock namespace id '${namespaceId}' already registered for namespace ${existingNamespaceEntry[0]}.`);
|
90
|
+
}
|
91
|
+
transactionLockNamespaceMap[namespaceKey] = namespaceId;
|
92
|
+
}
|
93
|
+
exports.registerTransactionLockNamespace = registerTransactionLockNamespace;
|
70
94
|
const atomicExecuteSql = async function (sql, bindings) {
|
71
95
|
return await this.transaction(async (tx) => await tx.executeSql(sql, bindings));
|
72
96
|
};
|
@@ -176,7 +200,9 @@ class Tx {
|
|
176
200
|
return this.readOnly;
|
177
201
|
}
|
178
202
|
async executeSql(sql, bindings = [], ...args) {
|
179
|
-
if (
|
203
|
+
if (env.db.checkReadOnlyQueries &&
|
204
|
+
this.readOnly &&
|
205
|
+
!/^\s*SELECT\s(?:[^;]|;\s*SELECT\s)*$/.test(sql)) {
|
180
206
|
throw new ReadOnlyViolationError(`Attempted to run a non-SELECT statement in a read-only tx: ${sql}`);
|
181
207
|
}
|
182
208
|
return await this.$executeSql(sql, bindings, ...args);
|
@@ -219,6 +245,9 @@ class Tx {
|
|
219
245
|
this.on = onEnd;
|
220
246
|
this.clearListeners();
|
221
247
|
}
|
248
|
+
disableAutomaticClose() {
|
249
|
+
this.automaticClose.cancelPending();
|
250
|
+
}
|
222
251
|
on(name, fn) {
|
223
252
|
this.listeners[name].push(fn);
|
224
253
|
}
|
@@ -226,6 +255,9 @@ class Tx {
|
|
226
255
|
this.listeners.end.length = 0;
|
227
256
|
this.listeners.rollback.length = 0;
|
228
257
|
}
|
258
|
+
async getTxLevelLock(_namespaceKey, _key, _blocking = true) {
|
259
|
+
throw new Error('The getTxLevelLock method is not implemented for the current engine.');
|
260
|
+
}
|
229
261
|
async dropTable(tableName, ifExists = true) {
|
230
262
|
if (typeof tableName !== 'string') {
|
231
263
|
throw new TypeError('"tableName" must be a string');
|
@@ -264,7 +296,7 @@ const createTransaction = (createFunc) => {
|
|
264
296
|
try {
|
265
297
|
await tx.rollback();
|
266
298
|
}
|
267
|
-
catch
|
299
|
+
catch {
|
268
300
|
}
|
269
301
|
throw err;
|
270
302
|
}
|
@@ -287,43 +319,69 @@ if (maybePg != null) {
|
|
287
319
|
const PG_FOREIGN_KEY_VIOLATION = '23503';
|
288
320
|
const PG_CHECK_CONSTRAINT_VIOLATION = '23514';
|
289
321
|
const PG_EXCLUSION_CONSTRAINT_VIOLATION = '23P01';
|
290
|
-
let config;
|
291
|
-
if (typeof connectString === 'string') {
|
292
|
-
const pgConnectionString = require('pg-connection-string');
|
293
|
-
config = pgConnectionString.parse(connectString);
|
294
|
-
}
|
295
|
-
else {
|
296
|
-
config = connectString;
|
297
|
-
}
|
298
|
-
config.max = env.db.poolSize;
|
299
|
-
config.idleTimeoutMillis = env.db.idleTimeoutMillis;
|
300
|
-
config.statement_timeout = env.db.statementTimeout;
|
301
|
-
config.query_timeout = env.db.queryTimeout;
|
302
|
-
config.connectionTimeoutMillis = env.db.connectionTimeoutMillis;
|
303
|
-
config.keepAlive = env.db.keepAlive;
|
304
|
-
const pool = new pg.Pool(config);
|
305
322
|
const { PG_SCHEMA } = process.env;
|
306
|
-
|
307
|
-
|
308
|
-
|
323
|
+
const initPool = (config) => {
|
324
|
+
config.max ??= env.db.poolSize;
|
325
|
+
config.idleTimeoutMillis ??= env.db.idleTimeoutMillis;
|
326
|
+
config.statement_timeout ??= env.db.statementTimeout;
|
327
|
+
config.query_timeout ??= env.db.queryTimeout;
|
328
|
+
config.connectionTimeoutMillis ??= env.db.connectionTimeoutMillis;
|
329
|
+
config.keepAlive ??= env.db.keepAlive;
|
330
|
+
config.maxLifetimeSeconds ??= env.db.maxLifetimeSeconds;
|
331
|
+
config.maxUses ??= env.db.maxUses;
|
332
|
+
const p = new pg.Pool(config);
|
333
|
+
if (PG_SCHEMA != null) {
|
334
|
+
p.on('connect', (client) => {
|
335
|
+
client.query({ text: `SET search_path TO "${PG_SCHEMA}"` });
|
336
|
+
});
|
337
|
+
}
|
338
|
+
p.on('connect', (client) => {
|
339
|
+
client.on('error', (err) => {
|
340
|
+
try {
|
341
|
+
console.error('Releasing client on error:', err);
|
342
|
+
client.release(err);
|
343
|
+
}
|
344
|
+
catch (e) {
|
345
|
+
console.error('Error releasing client on error:', e);
|
346
|
+
}
|
347
|
+
});
|
309
348
|
});
|
310
|
-
|
349
|
+
p.on('error', (err) => {
|
311
350
|
console.error('Pool error:', err.message);
|
312
351
|
});
|
352
|
+
return p;
|
353
|
+
};
|
354
|
+
let pool;
|
355
|
+
let replica;
|
356
|
+
if (typeof connectString === 'string') {
|
357
|
+
const pgConnectionString = require('pg-connection-string');
|
358
|
+
const config = pgConnectionString.parse(connectString);
|
359
|
+
pool = initPool(config);
|
313
360
|
}
|
361
|
+
else {
|
362
|
+
const config = connectString;
|
363
|
+
if ('primary' in config) {
|
364
|
+
pool = initPool(config.primary);
|
365
|
+
if (config.replica) {
|
366
|
+
replica = initPool(config.replica);
|
367
|
+
}
|
368
|
+
}
|
369
|
+
else {
|
370
|
+
pool = initPool(config);
|
371
|
+
}
|
372
|
+
}
|
373
|
+
replica ??= pool;
|
314
374
|
const createResult = ({ rowCount, rows, }) => {
|
315
|
-
var _a;
|
316
375
|
return {
|
317
376
|
rows,
|
318
377
|
rowsAffected: rowCount,
|
319
|
-
insertId:
|
378
|
+
insertId: rows?.[0]?.id,
|
320
379
|
};
|
321
380
|
};
|
322
381
|
class PostgresTx extends Tx {
|
323
382
|
constructor(db, readOnly, stackTraceErr) {
|
324
383
|
super(readOnly, stackTraceErr);
|
325
384
|
this.db = db;
|
326
|
-
this.engine = "postgres";
|
327
385
|
}
|
328
386
|
clone(readOnly = this.readOnly) {
|
329
387
|
return new PostgresTx(this.db, readOnly, this.automaticClose);
|
@@ -361,14 +419,14 @@ if (maybePg != null) {
|
|
361
419
|
const queryQueue = this.db.queryQueue;
|
362
420
|
if (queryQueue.length > 0) {
|
363
421
|
const err = new DatabaseError('Rolling back transaction');
|
364
|
-
|
422
|
+
for (const query of queryQueue) {
|
365
423
|
process.nextTick(() => {
|
366
424
|
query.handleError(err, this.db.connection);
|
367
425
|
});
|
368
|
-
}
|
426
|
+
}
|
369
427
|
queryQueue.length = 0;
|
370
428
|
}
|
371
|
-
await
|
429
|
+
await (0, control_flow_1.timeout)(this.$executeSql('ROLLBACK;'), env.db.rollbackTimeout, 'Rolling back transaction timed out');
|
372
430
|
this.db.release();
|
373
431
|
}
|
374
432
|
catch (err) {
|
@@ -387,6 +445,29 @@ if (maybePg != null) {
|
|
387
445
|
throw err;
|
388
446
|
}
|
389
447
|
}
|
448
|
+
async getTxLevelLock(namespaceKey, key, blocking = true) {
|
449
|
+
validateTransactionLockParameter(key, 'key');
|
450
|
+
const namespaceId = transactionLockNamespaceMap[namespaceKey];
|
451
|
+
if (namespaceId == null) {
|
452
|
+
throw new Error(`Transaction lock namespace ${namespaceKey} not registered.`);
|
453
|
+
}
|
454
|
+
try {
|
455
|
+
if (blocking) {
|
456
|
+
await this.executeSql(`SELECT pg_advisory_xact_lock($1, $2);`, [
|
457
|
+
namespaceId,
|
458
|
+
key,
|
459
|
+
]);
|
460
|
+
return true;
|
461
|
+
}
|
462
|
+
else {
|
463
|
+
const { rows } = await this.executeSql(`SELECT pg_try_advisory_xact_lock($1, $2);`, [namespaceId, key]);
|
464
|
+
return rows[0].pg_try_advisory_xact_lock === true;
|
465
|
+
}
|
466
|
+
}
|
467
|
+
catch (err) {
|
468
|
+
throw new Error(`getTxLevelLock error during getting lock from postgres db layer ${err}`);
|
469
|
+
}
|
470
|
+
}
|
390
471
|
async tableList(extraWhereClause = '') {
|
391
472
|
if (extraWhereClause !== '') {
|
392
473
|
extraWhereClause = 'WHERE ' + extraWhereClause;
|
@@ -411,7 +492,7 @@ if (maybePg != null) {
|
|
411
492
|
return tx;
|
412
493
|
}),
|
413
494
|
readTransaction: createTransaction(async (stackTraceErr) => {
|
414
|
-
const client = await
|
495
|
+
const client = await replica.connect();
|
415
496
|
const tx = new PostgresTx(client, false, stackTraceErr);
|
416
497
|
tx.executeSql('START TRANSACTION READ ONLY;');
|
417
498
|
return tx.asReadOnly();
|
@@ -434,10 +515,10 @@ if (maybeMysql != null) {
|
|
434
515
|
const MYSQL_CHECK_CONSTRAINT_VIOLATION = 'ER_CHECK_CONSTRAINT_VIOLATED';
|
435
516
|
const pool = mysql.createPool(options);
|
436
517
|
pool.on('connection', (db) => {
|
437
|
-
db.query("SET sql_mode='
|
518
|
+
db.query("SET sql_mode='ANSI';");
|
438
519
|
});
|
439
|
-
const getConnectionAsync =
|
440
|
-
|
520
|
+
const getConnectionAsync = () => (0, control_flow_1.fromCallback)((callback) => {
|
521
|
+
pool.getConnection(callback);
|
441
522
|
});
|
442
523
|
const createResult = (rows) => {
|
443
524
|
return {
|
@@ -451,7 +532,6 @@ if (maybeMysql != null) {
|
|
451
532
|
super(readOnly, stackTraceErr);
|
452
533
|
this.db = db;
|
453
534
|
this.close = close;
|
454
|
-
this.engine = "mysql";
|
455
535
|
}
|
456
536
|
clone(readOnly = this.readOnly) {
|
457
537
|
return new MySqlTx(this.db, this.close, readOnly, this.automaticClose);
|
@@ -459,7 +539,7 @@ if (maybeMysql != null) {
|
|
459
539
|
async _executeSql(sql, bindings) {
|
460
540
|
let result;
|
461
541
|
try {
|
462
|
-
result = await
|
542
|
+
result = await (0, control_flow_1.fromCallback)((callback) => {
|
463
543
|
this.db.query(sql, bindings, callback);
|
464
544
|
});
|
465
545
|
}
|
@@ -549,7 +629,6 @@ if (typeof window !== 'undefined' && window.openDatabase != null) {
|
|
549
629
|
constructor(tx, readOnly, stackTraceErr) {
|
550
630
|
super(readOnly, stackTraceErr);
|
551
631
|
this.tx = tx;
|
552
|
-
this.engine = "websql";
|
553
632
|
}
|
554
633
|
clone(readOnly = this.readOnly) {
|
555
634
|
return new WebSqlTx(this.tx, readOnly, this.automaticClose);
|