@balena/pinejs 15.0.0-true-boolean-911aca4062d3132ad3c34712014739b6849fa13a → 15.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (145) hide show
  1. package/.dockerignore +4 -0
  2. package/.github/workflows/flowzone.yml +21 -0
  3. package/.husky/pre-commit +4 -0
  4. package/.pinejs-cache.json +1 -0
  5. package/.resinci.yml +1 -0
  6. package/.versionbot/CHANGELOG.yml +9678 -2001
  7. package/CHANGELOG.md +2975 -2
  8. package/Dockerfile +14 -0
  9. package/Gruntfile.ts +3 -6
  10. package/README.md +10 -1
  11. package/VERSION +1 -0
  12. package/build/browser.ts +1 -1
  13. package/build/config.ts +0 -1
  14. package/docker-compose.npm-test.yml +11 -0
  15. package/docs/AdvancedUsage.md +77 -63
  16. package/docs/GettingStarted.md +90 -41
  17. package/docs/Migrations.md +102 -1
  18. package/docs/ProjectConfig.md +12 -21
  19. package/docs/Testing.md +7 -0
  20. package/out/bin/abstract-sql-compiler.js +17 -17
  21. package/out/bin/abstract-sql-compiler.js.map +1 -1
  22. package/out/bin/odata-compiler.js +23 -20
  23. package/out/bin/odata-compiler.js.map +1 -1
  24. package/out/bin/sbvr-compiler.js +22 -22
  25. package/out/bin/sbvr-compiler.js.map +1 -1
  26. package/out/bin/utils.d.ts +2 -2
  27. package/out/bin/utils.js +3 -3
  28. package/out/bin/utils.js.map +1 -1
  29. package/out/config-loader/config-loader.d.ts +9 -8
  30. package/out/config-loader/config-loader.js +135 -78
  31. package/out/config-loader/config-loader.js.map +1 -1
  32. package/out/config-loader/env.d.ts +41 -16
  33. package/out/config-loader/env.js +46 -2
  34. package/out/config-loader/env.js.map +1 -1
  35. package/out/data-server/sbvr-server.d.ts +2 -19
  36. package/out/data-server/sbvr-server.js +44 -38
  37. package/out/data-server/sbvr-server.js.map +1 -1
  38. package/out/database-layer/db.d.ts +32 -14
  39. package/out/database-layer/db.js +120 -41
  40. package/out/database-layer/db.js.map +1 -1
  41. package/out/express-emulator/express.js +10 -11
  42. package/out/express-emulator/express.js.map +1 -1
  43. package/out/http-transactions/transactions.d.ts +2 -18
  44. package/out/http-transactions/transactions.js +29 -21
  45. package/out/http-transactions/transactions.js.map +1 -1
  46. package/out/migrator/async.d.ts +7 -0
  47. package/out/migrator/async.js +168 -0
  48. package/out/migrator/async.js.map +1 -0
  49. package/out/migrator/migrations.sbvr +43 -0
  50. package/out/migrator/sync.d.ts +9 -0
  51. package/out/migrator/sync.js +106 -0
  52. package/out/migrator/sync.js.map +1 -0
  53. package/out/migrator/utils.d.ts +78 -0
  54. package/out/migrator/utils.js +283 -0
  55. package/out/migrator/utils.js.map +1 -0
  56. package/out/odata-metadata/odata-metadata-generator.js +10 -13
  57. package/out/odata-metadata/odata-metadata-generator.js.map +1 -1
  58. package/out/passport-pinejs/passport-pinejs.d.ts +1 -1
  59. package/out/passport-pinejs/passport-pinejs.js +8 -7
  60. package/out/passport-pinejs/passport-pinejs.js.map +1 -1
  61. package/out/pinejs-session-store/pinejs-session-store.d.ts +1 -1
  62. package/out/pinejs-session-store/pinejs-session-store.js +20 -6
  63. package/out/pinejs-session-store/pinejs-session-store.js.map +1 -1
  64. package/out/sbvr-api/abstract-sql.d.ts +3 -2
  65. package/out/sbvr-api/abstract-sql.js +9 -9
  66. package/out/sbvr-api/abstract-sql.js.map +1 -1
  67. package/out/sbvr-api/cached-compile.js +1 -1
  68. package/out/sbvr-api/cached-compile.js.map +1 -1
  69. package/out/sbvr-api/common-types.d.ts +6 -5
  70. package/out/sbvr-api/control-flow.d.ts +8 -1
  71. package/out/sbvr-api/control-flow.js +36 -9
  72. package/out/sbvr-api/control-flow.js.map +1 -1
  73. package/out/sbvr-api/errors.d.ts +47 -40
  74. package/out/sbvr-api/errors.js +78 -77
  75. package/out/sbvr-api/errors.js.map +1 -1
  76. package/out/sbvr-api/express-extension.d.ts +4 -0
  77. package/out/sbvr-api/hooks.d.ts +16 -15
  78. package/out/sbvr-api/hooks.js +74 -48
  79. package/out/sbvr-api/hooks.js.map +1 -1
  80. package/out/sbvr-api/odata-response.d.ts +2 -2
  81. package/out/sbvr-api/odata-response.js +28 -30
  82. package/out/sbvr-api/odata-response.js.map +1 -1
  83. package/out/sbvr-api/permissions.d.ts +17 -16
  84. package/out/sbvr-api/permissions.js +369 -304
  85. package/out/sbvr-api/permissions.js.map +1 -1
  86. package/out/sbvr-api/sbvr-utils.d.ts +33 -15
  87. package/out/sbvr-api/sbvr-utils.js +397 -235
  88. package/out/sbvr-api/sbvr-utils.js.map +1 -1
  89. package/out/sbvr-api/translations.d.ts +6 -0
  90. package/out/sbvr-api/translations.js +150 -0
  91. package/out/sbvr-api/translations.js.map +1 -0
  92. package/out/sbvr-api/uri-parser.d.ts +23 -17
  93. package/out/sbvr-api/uri-parser.js +33 -27
  94. package/out/sbvr-api/uri-parser.js.map +1 -1
  95. package/out/sbvr-api/user.sbvr +2 -0
  96. package/out/server-glue/module.d.ts +6 -6
  97. package/out/server-glue/module.js +4 -2
  98. package/out/server-glue/module.js.map +1 -1
  99. package/out/server-glue/server.js +5 -5
  100. package/out/server-glue/server.js.map +1 -1
  101. package/package.json +89 -73
  102. package/pinejs.png +0 -0
  103. package/repo.yml +9 -9
  104. package/src/bin/abstract-sql-compiler.ts +5 -7
  105. package/src/bin/odata-compiler.ts +11 -13
  106. package/src/bin/sbvr-compiler.ts +11 -17
  107. package/src/bin/utils.ts +3 -5
  108. package/src/config-loader/config-loader.ts +167 -53
  109. package/src/config-loader/env.ts +106 -6
  110. package/src/data-server/sbvr-server.js +44 -38
  111. package/src/database-layer/db.ts +205 -64
  112. package/src/express-emulator/express.js +10 -11
  113. package/src/http-transactions/transactions.js +29 -21
  114. package/src/migrator/async.ts +323 -0
  115. package/src/migrator/migrations.sbvr +43 -0
  116. package/src/migrator/sync.ts +152 -0
  117. package/src/migrator/utils.ts +458 -0
  118. package/src/odata-metadata/odata-metadata-generator.ts +12 -15
  119. package/src/passport-pinejs/passport-pinejs.ts +9 -7
  120. package/src/pinejs-session-store/pinejs-session-store.ts +15 -1
  121. package/src/sbvr-api/abstract-sql.ts +17 -14
  122. package/src/sbvr-api/common-types.ts +2 -1
  123. package/src/sbvr-api/control-flow.ts +45 -11
  124. package/src/sbvr-api/errors.ts +82 -77
  125. package/src/sbvr-api/express-extension.ts +6 -1
  126. package/src/sbvr-api/hooks.ts +123 -50
  127. package/src/sbvr-api/odata-response.ts +23 -28
  128. package/src/sbvr-api/permissions.ts +548 -415
  129. package/src/sbvr-api/sbvr-utils.ts +581 -259
  130. package/src/sbvr-api/translations.ts +248 -0
  131. package/src/sbvr-api/uri-parser.ts +63 -49
  132. package/src/sbvr-api/user.sbvr +2 -0
  133. package/src/server-glue/module.ts +16 -10
  134. package/src/server-glue/server.ts +5 -5
  135. package/tsconfig.dev.json +1 -0
  136. package/tsconfig.json +1 -2
  137. package/typings/lf-to-abstract-sql.d.ts +6 -9
  138. package/typings/memoizee.d.ts +1 -1
  139. package/.github/CODEOWNERS +0 -1
  140. package/circle.yml +0 -37
  141. package/docs/todo.txt +0 -22
  142. package/out/migrator/migrator.d.ts +0 -20
  143. package/out/migrator/migrator.js +0 -188
  144. package/out/migrator/migrator.js.map +0 -1
  145. 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-true-boolean': {
63
- mysql: `\
64
- ALTER TABLE "textarea"
65
- MODIFY "is disabled" BOOLEAN NOT NULL;\
66
- `,
67
- postgres: `\
68
- ALTER TABLE "textarea"
69
- ALTER COLUMN "is disabled" SET DATA TYPE BOOLEAN USING b::BOOLEAN;\
70
- `,
71
- // No need to migrate for websql
72
- websql: '',
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.sendStatus(404);
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.sendStatus(200);
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.sendStatus(404);
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.sendStatus(200);
243
- } catch (err) {
244
- console.error('Error clearing db', err, err.stack);
245
- res.sendStatus(503);
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.sendStatus(200);
270
- } catch (err) {
271
- console.error('Error importing db', err, err.stack);
272
- res.sendStatus(404);
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.forEach((currRow) => {
299
+ for (const currRow of result.rows) {
294
300
  let notFirst = false;
295
301
  insQuery += 'INSERT INTO "' + tableName + '" (';
296
302
  let valQuery = '';
297
- for (let propName of Object.keys(currRow)) {
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, err.stack);
316
- res.sendStatus(503);
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.sendStatus(200);
344
- } catch (err) {
345
- console.error('Error backing up db', err, err.stack);
346
- res.sendStatus(404);
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.sendStatus(200);
373
- } catch (err) {
374
- console.error('Error restoring db', err, err.stack);
375
- res.sendStatus(404);
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.sendStatus(200);
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 * as EventEmitter from 'eventemitter3';
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 declare type Sql = string;
19
- export declare type Bindings = any[];
20
+ export type Sql = string;
21
+ export type Bindings = any[];
20
22
  export declare class DatabaseError extends TypedError {
21
- code: number | string;
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
- declare type BaseDatabase = typeof alwaysExport;
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
- export declare const engines: {
60
- [engine: string]: (connectString: string | object) => Database;
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
- export declare const connect: (databaseOptions: {
97
- engine: string;
98
- params: {};
99
- }) => Database;
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 {};
@@ -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 Bluebird = require("bluebird");
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
- exports.metrics = new EventEmitter();
8
+ const control_flow_1 = require("../sbvr-api/control-flow");
9
+ exports.metrics = new eventemitter3_1.EventEmitter();
10
10
  const isSqlError = (value) => {
11
- return (value != null &&
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 (this.readOnly && !/^\s*SELECT\s(?:[^;]|;\s*SELECT\s)*$/.test(sql)) {
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 (_a) {
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
- if (PG_SCHEMA != null) {
307
- pool.on('connect', (client) => {
308
- client.query({ text: `SET search_path TO "${PG_SCHEMA}"` });
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
- pool.on('error', (err) => {
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: (_a = rows === null || rows === void 0 ? void 0 : rows[0]) === null || _a === void 0 ? void 0 : _a.id,
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
- queryQueue.forEach((query) => {
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 Bluebird.resolve(this.$executeSql('ROLLBACK;')).timeout(env.db.rollbackTimeout, 'Rolling back transaction timed out');
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 pool.connect();
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='ANSI_QUOTES';");
518
+ db.query("SET sql_mode='ANSI';");
438
519
  });
439
- const getConnectionAsync = Bluebird.promisify(pool.getConnection, {
440
- context: pool,
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 Bluebird.fromCallback((callback) => {
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);