@bitblit/ratchet-rdbms 4.0.420-alpha → 4.0.421-alpha

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.
Files changed (150) hide show
  1. package/lib/build/index.d.ts +1 -0
  2. package/lib/build/index.js +2 -0
  3. package/lib/build/index.js.map +1 -0
  4. package/lib/build/ratchet-rdbms-info.d.ts +5 -0
  5. package/lib/build/ratchet-rdbms-info.js +15 -0
  6. package/lib/build/ratchet-rdbms-info.js.map +1 -0
  7. package/lib/model/connection-and-tunnel.d.ts +6 -0
  8. package/lib/model/connection-and-tunnel.js +2 -0
  9. package/lib/model/connection-and-tunnel.js.map +1 -0
  10. package/lib/model/database-access-provider.d.ts +7 -0
  11. package/lib/model/database-access-provider.js +2 -0
  12. package/lib/model/database-access-provider.js.map +1 -0
  13. package/lib/model/database-access.d.ts +17 -0
  14. package/lib/model/database-access.js +2 -0
  15. package/lib/model/database-access.js.map +1 -0
  16. package/lib/model/database-config-list.d.ts +3 -0
  17. package/lib/model/database-config-list.js +2 -0
  18. package/lib/model/database-config-list.js.map +1 -0
  19. package/lib/model/database-request-type.d.ts +6 -0
  20. package/lib/model/database-request-type.js +8 -0
  21. package/lib/model/database-request-type.js.map +1 -0
  22. package/lib/model/group-by-count-result.d.ts +4 -0
  23. package/lib/model/group-by-count-result.js +2 -0
  24. package/lib/model/group-by-count-result.js.map +1 -0
  25. package/lib/model/index.d.ts +19 -0
  26. package/lib/model/index.js +20 -0
  27. package/lib/model/index.js.map +1 -0
  28. package/lib/model/modify-results.d.ts +9 -0
  29. package/lib/model/modify-results.js +2 -0
  30. package/lib/model/modify-results.js.map +1 -0
  31. package/lib/model/named-parameter-database-service-config.d.ts +12 -0
  32. package/lib/model/named-parameter-database-service-config.js +2 -0
  33. package/lib/model/named-parameter-database-service-config.js.map +1 -0
  34. package/lib/model/paginated-results.d.ts +5 -0
  35. package/lib/model/paginated-results.js +2 -0
  36. package/lib/model/paginated-results.js.map +1 -0
  37. package/lib/model/pagination-bounds.d.ts +6 -0
  38. package/lib/model/pagination-bounds.js +2 -0
  39. package/lib/model/pagination-bounds.js.map +1 -0
  40. package/lib/model/paginator.d.ts +9 -0
  41. package/lib/model/paginator.js +2 -0
  42. package/lib/model/paginator.js.map +1 -0
  43. package/lib/model/query-defaults.d.ts +4 -0
  44. package/lib/model/query-defaults.js +2 -0
  45. package/lib/model/query-defaults.js.map +1 -0
  46. package/lib/model/query-text-provider.d.ts +4 -0
  47. package/lib/model/query-text-provider.js +2 -0
  48. package/lib/model/query-text-provider.js.map +1 -0
  49. package/lib/model/request-results.d.ts +4 -0
  50. package/lib/model/request-results.js +2 -0
  51. package/lib/model/request-results.js.map +1 -0
  52. package/lib/model/simple-query-text-provider.d.ts +7 -0
  53. package/lib/model/simple-query-text-provider.js +18 -0
  54. package/lib/model/simple-query-text-provider.js.map +1 -0
  55. package/lib/model/sort-direction.d.ts +4 -0
  56. package/lib/model/sort-direction.js +6 -0
  57. package/lib/model/sort-direction.js.map +1 -0
  58. package/lib/model/ssh/ssh-tunnel-config.d.ts +8 -0
  59. package/lib/model/ssh/ssh-tunnel-config.js +2 -0
  60. package/lib/model/ssh/ssh-tunnel-config.js.map +1 -0
  61. package/lib/model/ssh/ssh-tunnel-container.d.ts +12 -0
  62. package/lib/model/ssh/ssh-tunnel-container.js +2 -0
  63. package/lib/model/ssh/ssh-tunnel-container.js.map +1 -0
  64. package/lib/model/transaction-isolation-level.d.ts +4 -0
  65. package/lib/model/transaction-isolation-level.js +6 -0
  66. package/lib/model/transaction-isolation-level.js.map +1 -0
  67. package/lib/mysql/index.d.ts +5 -0
  68. package/lib/mysql/index.js +6 -0
  69. package/lib/mysql/index.js.map +1 -0
  70. package/lib/mysql/model/mysql-db-config.d.ts +12 -0
  71. package/lib/mysql/model/mysql-db-config.js +2 -0
  72. package/lib/mysql/model/mysql-db-config.js.map +1 -0
  73. package/lib/mysql/model/mysql-master-status.d.ts +6 -0
  74. package/lib/mysql/model/mysql-master-status.js +2 -0
  75. package/lib/mysql/model/mysql-master-status.js.map +1 -0
  76. package/lib/mysql/model/mysql-slave-status.d.ts +52 -0
  77. package/lib/mysql/model/mysql-slave-status.js +2 -0
  78. package/lib/mysql/model/mysql-slave-status.js.map +1 -0
  79. package/lib/mysql/mysql-style-database-access.d.ts +20 -0
  80. package/lib/mysql/mysql-style-database-access.js +57 -0
  81. package/lib/mysql/mysql-style-database-access.js.map +1 -0
  82. package/lib/mysql/rds-mysql-style-connection-provider.d.ts +29 -0
  83. package/lib/mysql/rds-mysql-style-connection-provider.js +205 -0
  84. package/lib/mysql/rds-mysql-style-connection-provider.js.map +1 -0
  85. package/lib/query-builder/index.d.ts +3 -0
  86. package/lib/query-builder/index.js +4 -0
  87. package/lib/query-builder/index.js.map +1 -0
  88. package/lib/query-builder/query-builder-result.d.ts +9 -0
  89. package/lib/query-builder/query-builder-result.js +13 -0
  90. package/lib/query-builder/query-builder-result.js.map +1 -0
  91. package/lib/query-builder/query-builder.d.ts +52 -0
  92. package/lib/query-builder/query-builder.js +352 -0
  93. package/lib/query-builder/query-builder.js.map +1 -0
  94. package/lib/query-builder/query-util.d.ts +16 -0
  95. package/lib/query-builder/query-util.js +137 -0
  96. package/lib/query-builder/query-util.js.map +1 -0
  97. package/lib/service/index.d.ts +3 -0
  98. package/lib/service/index.js +4 -0
  99. package/lib/service/index.js.map +1 -0
  100. package/lib/service/named-parameter-database-service.d.ts +42 -0
  101. package/lib/service/named-parameter-database-service.js +272 -0
  102. package/lib/service/named-parameter-database-service.js.map +1 -0
  103. package/lib/service/ssh-tunnel-service.d.ts +6 -0
  104. package/lib/service/ssh-tunnel-service.js +49 -0
  105. package/lib/service/ssh-tunnel-service.js.map +1 -0
  106. package/lib/service/transactional-named-parameter-database-service.d.ts +20 -0
  107. package/lib/service/transactional-named-parameter-database-service.js +129 -0
  108. package/lib/service/transactional-named-parameter-database-service.js.map +1 -0
  109. package/lib/sqlite/index.d.ts +9 -0
  110. package/lib/sqlite/index.js +10 -0
  111. package/lib/sqlite/index.js.map +1 -0
  112. package/lib/sqlite/model/fetch-remote-mode.d.ts +4 -0
  113. package/lib/sqlite/model/fetch-remote-mode.js +6 -0
  114. package/lib/sqlite/model/fetch-remote-mode.js.map +1 -0
  115. package/lib/sqlite/model/flush-remote-mode.d.ts +4 -0
  116. package/lib/sqlite/model/flush-remote-mode.js +6 -0
  117. package/lib/sqlite/model/flush-remote-mode.js.map +1 -0
  118. package/lib/sqlite/model/sqlite-connection-config-flag.d.ts +3 -0
  119. package/lib/sqlite/model/sqlite-connection-config-flag.js +5 -0
  120. package/lib/sqlite/model/sqlite-connection-config-flag.js.map +1 -0
  121. package/lib/sqlite/model/sqlite-connection-config.d.ts +9 -0
  122. package/lib/sqlite/model/sqlite-connection-config.js +2 -0
  123. package/lib/sqlite/model/sqlite-connection-config.js.map +1 -0
  124. package/lib/sqlite/model/sqlite-local-file-config.d.ts +3 -0
  125. package/lib/sqlite/model/sqlite-local-file-config.js +2 -0
  126. package/lib/sqlite/model/sqlite-local-file-config.js.map +1 -0
  127. package/lib/sqlite/model/sqlite-remote-file-sync-config.d.ts +8 -0
  128. package/lib/sqlite/model/sqlite-remote-file-sync-config.js +2 -0
  129. package/lib/sqlite/model/sqlite-remote-file-sync-config.js.map +1 -0
  130. package/lib/sqlite/sqlite-database-access.d.ts +25 -0
  131. package/lib/sqlite/sqlite-database-access.js +106 -0
  132. package/lib/sqlite/sqlite-database-access.js.map +1 -0
  133. package/lib/sqlite/sqlite-remote-sync-database-access.d.ts +34 -0
  134. package/lib/sqlite/sqlite-remote-sync-database-access.js +129 -0
  135. package/lib/sqlite/sqlite-remote-sync-database-access.js.map +1 -0
  136. package/lib/sqlite/sqlite-style-connection-provider.d.ts +19 -0
  137. package/lib/sqlite/sqlite-style-connection-provider.js +157 -0
  138. package/lib/sqlite/sqlite-style-connection-provider.js.map +1 -0
  139. package/lib/util/aws-rds-cert-2023.d.ts +6 -0
  140. package/lib/util/aws-rds-cert-2023.js +499 -0
  141. package/lib/util/aws-rds-cert-2023.js.map +1 -0
  142. package/lib/util/index.d.ts +2 -0
  143. package/lib/util/index.js +3 -0
  144. package/lib/util/index.js.map +1 -0
  145. package/lib/util/relational-database-utils.d.ts +4 -0
  146. package/lib/util/relational-database-utils.js +31 -0
  147. package/lib/util/relational-database-utils.js.map +1 -0
  148. package/package.json +12 -13
  149. package/lib/index.mjs +0 -2
  150. package/lib/types.d.ts +0 -489
@@ -0,0 +1,57 @@
1
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
2
+ export class MysqlStyleDatabaseAccess {
3
+ _connection;
4
+ _connectionOptions;
5
+ constructor(_connection, _connectionOptions) {
6
+ this._connection = _connection;
7
+ this._connectionOptions = _connectionOptions;
8
+ }
9
+ async testConnection(logTestResults) {
10
+ if (logTestResults) {
11
+ Logger.info('Running connection test');
12
+ }
13
+ const res = await this.query('SELECT UNIX_TIMESTAMP(now())*1000 AS test', {});
14
+ const rows = res.results;
15
+ const timestamp = rows.length === 1 ? rows[0].test : null;
16
+ if (logTestResults) {
17
+ Logger.info('Test returned : %j', timestamp);
18
+ }
19
+ return timestamp;
20
+ }
21
+ getRawDatabase() {
22
+ return this._connection;
23
+ }
24
+ getRawDatabaseConfig() {
25
+ return this._connectionOptions;
26
+ }
27
+ testConnectionQueryString() {
28
+ return 'SELECT UNIX_TIMESTAMP(now())*1000 AS test';
29
+ }
30
+ async close() {
31
+ return Promise.resolve(false);
32
+ }
33
+ escape(query) {
34
+ return this._connection.escape(query);
35
+ }
36
+ async preQuery() {
37
+ this._connection.config.namedPlaceholders = true;
38
+ }
39
+ async query(query, fields) {
40
+ const [rows, outFields] = await this._connection.query(query, fields);
41
+ const castRows = rows;
42
+ const castFields = outFields;
43
+ const rval = {
44
+ results: castRows,
45
+ fields: castFields,
46
+ };
47
+ return rval;
48
+ }
49
+ async modify(query, fields) {
50
+ const tmp = await this.query(query, fields);
51
+ return tmp;
52
+ }
53
+ async onRequestSuccessOrFailure(type) {
54
+ this._connection.config.namedPlaceholders = false;
55
+ }
56
+ }
57
+ //# sourceMappingURL=mysql-style-database-access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql-style-database-access.js","sourceRoot":"","sources":["../../src/mysql/mysql-style-database-access.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAE/D,MAAM,OAAO,wBAAwB;IAEzB;IACA;IAFV,YACU,WAAuB,EACvB,kBAAqC;QADrC,gBAAW,GAAX,WAAW,CAAY;QACvB,uBAAkB,GAAlB,kBAAkB,CAAmB;IAC5C,CAAC;IAEG,KAAK,CAAC,cAAc,CAAC,cAAwB;QAClD,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,GAAG,GAAwB,MAAM,IAAI,CAAC,KAAK,CAAC,2CAA2C,EAAE,EAAE,CAAC,CAAC;QACnG,MAAM,IAAI,GAAG,GAAG,CAAC,OAA6B,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1D,IAAI,cAAc,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEM,oBAAoB;QACzB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAEM,yBAAyB;QAC9B,OAAO,2CAA2C,CAAC;IACrD,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAEM,MAAM,CAAC,KAAU;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,QAAQ;QACnB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;IACnD,CAAC;IAEM,KAAK,CAAC,KAAK,CAAI,KAAK,EAAE,MAAM;QACjC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAEtE,MAAM,QAAQ,GAAoB,IAAuB,CAAC;QAC1D,MAAM,UAAU,GAAkB,SAAS,CAAC;QAE5C,MAAM,IAAI,GAAsB;YAC9B,OAAO,EAAE,QAAa;YACtB,MAAM,EAAE,UAAU;SACnB,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,MAA2B;QAC5D,MAAM,GAAG,GAAkC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3E,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,KAAK,CAAC,yBAAyB,CAAC,IAAyB;QAC9D,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACpD,CAAC;CAYF"}
@@ -0,0 +1,29 @@
1
+ import { Connection, ConnectionOptions } from 'mysql2/promise';
2
+ import { SshTunnelService } from '../service/ssh-tunnel-service.js';
3
+ import { DatabaseConfigList } from '../model/database-config-list.js';
4
+ import { QueryDefaults } from '../model/query-defaults.js';
5
+ import { ConnectionAndTunnel } from '../model/connection-and-tunnel.js';
6
+ import { DatabaseAccessProvider } from '../model/database-access-provider.js';
7
+ import { DatabaseAccess } from '../model/database-access.js';
8
+ import { MysqlDbConfig } from './model/mysql-db-config.js';
9
+ export declare class RdsMysqlStyleConnectionProvider implements DatabaseAccessProvider {
10
+ private configPromiseProvider;
11
+ private additionalConfig;
12
+ private ssh?;
13
+ static DEFAULT_CONNECTION_OPTIONS: ConnectionOptions;
14
+ private connectionCache;
15
+ private cacheConfigPromise;
16
+ constructor(configPromiseProvider: () => Promise<DatabaseConfigList<MysqlDbConfig>>, additionalConfig?: ConnectionOptions, ssh?: SshTunnelService);
17
+ get usingSshTunnel(): boolean;
18
+ private addShutdownHandlerToProcess;
19
+ clearDatabaseAccessCache(): Promise<boolean>;
20
+ getConnectionAndTunnel(name: string): Promise<ConnectionAndTunnel<Connection, MysqlDbConfig>>;
21
+ getDatabaseAccess(name: string): Promise<DatabaseAccess | undefined>;
22
+ createNonPooledConnectionAndTunnel(queryDefaults: QueryDefaults, additionalConfig?: ConnectionOptions): Promise<ConnectionAndTunnel<Connection, MysqlDbConfig>>;
23
+ createNonPooledDatabaseConnection(queryDefaults: QueryDefaults, additionalConfig?: ConnectionOptions): Promise<Connection | undefined>;
24
+ private getDbConfig;
25
+ private createConnectionAndTunnel;
26
+ private configPromise;
27
+ private createConnectionConfig;
28
+ static validDbConfig(cfg: MysqlDbConfig): string[];
29
+ }
@@ -0,0 +1,205 @@
1
+ import maria from 'mysql2/promise';
2
+ import { RequireRatchet } from '@bitblit/ratchet-common/lang/require-ratchet';
3
+ import { Logger } from '@bitblit/ratchet-common/logger/logger';
4
+ import { ErrorRatchet } from '@bitblit/ratchet-common/lang/error-ratchet';
5
+ import { StringRatchet } from '@bitblit/ratchet-common/lang/string-ratchet';
6
+ import getPort from 'get-port';
7
+ import { MysqlStyleDatabaseAccess } from './mysql-style-database-access.js';
8
+ export class RdsMysqlStyleConnectionProvider {
9
+ configPromiseProvider;
10
+ additionalConfig;
11
+ ssh;
12
+ static DEFAULT_CONNECTION_OPTIONS = { multipleStatements: true };
13
+ connectionCache = new Map();
14
+ cacheConfigPromise;
15
+ constructor(configPromiseProvider, additionalConfig = RdsMysqlStyleConnectionProvider.DEFAULT_CONNECTION_OPTIONS, ssh) {
16
+ this.configPromiseProvider = configPromiseProvider;
17
+ this.additionalConfig = additionalConfig;
18
+ this.ssh = ssh;
19
+ this.cacheConfigPromise = this.createConnectionConfig();
20
+ Logger.info('Added shutdown handler to the process (Only once per instantiation)');
21
+ this.addShutdownHandlerToProcess();
22
+ }
23
+ get usingSshTunnel() {
24
+ return !!this.ssh;
25
+ }
26
+ addShutdownHandlerToProcess() {
27
+ process.on('exit', () => {
28
+ Logger.info('Process is shutting down, closing connections');
29
+ this.clearDatabaseAccessCache().catch((err) => {
30
+ Logger.error('Shutdown connection failed : %s', err);
31
+ });
32
+ });
33
+ }
34
+ async clearDatabaseAccessCache() {
35
+ const rval = false;
36
+ Logger.info('Clearing connection cache for RdsMysqlConnectionProvider');
37
+ const oldConnections = Array.from(this.connectionCache.values());
38
+ this.cacheConfigPromise = null;
39
+ this.connectionCache = new Map();
40
+ if (oldConnections.length > 0) {
41
+ for (let i = 0; i < oldConnections.length; i++) {
42
+ Logger.info('Shutting down old connection %d of %d', i, oldConnections.length);
43
+ try {
44
+ const conn = await oldConnections[i];
45
+ Logger.info('Conn %d is %s', i, conn?.config?.label);
46
+ if (conn.db) {
47
+ Logger.info('Stopping connection to database');
48
+ try {
49
+ conn.db.destroy();
50
+ Logger.info('Database connection closed');
51
+ }
52
+ catch (err) {
53
+ if (ErrorRatchet.asErr(err).message.includes('closed state')) {
54
+ }
55
+ else {
56
+ Logger.error('Something went wrong closing the database connection : %s', err);
57
+ }
58
+ }
59
+ }
60
+ if (conn.ssh) {
61
+ try {
62
+ Logger.info('Stopping ssh tunnel');
63
+ await this.ssh.shutdown(conn.ssh);
64
+ Logger.info('Ssh tunnel stopped');
65
+ }
66
+ catch (err) {
67
+ Logger.warn('Failed to stop ssh tunnel : %s', err, err);
68
+ }
69
+ }
70
+ }
71
+ catch (err) {
72
+ Logger.warn('Shutdown failed : %s ', err, err);
73
+ }
74
+ }
75
+ }
76
+ Logger.info('Old db and tunnels removed');
77
+ return rval;
78
+ }
79
+ async getConnectionAndTunnel(name) {
80
+ Logger.silly('getConnectionAndTunnel : %s', name);
81
+ if (!this.connectionCache.has(name)) {
82
+ Logger.info('No connectionCache found for %s - creating new one', name);
83
+ const dbConfig = await this.getDbConfig(name);
84
+ const connection = this.createConnectionAndTunnel(dbConfig, this.additionalConfig, true);
85
+ this.connectionCache.set(name, connection);
86
+ Logger.info('Added connectionCache for %s', name);
87
+ }
88
+ return this.connectionCache.get(name);
89
+ }
90
+ async getDatabaseAccess(name) {
91
+ Logger.silly('getConnection : %s', name);
92
+ const conn = await this.getConnectionAndTunnel(name);
93
+ const rval = conn?.db ? new MysqlStyleDatabaseAccess(conn.db, this.additionalConfig) : null;
94
+ return rval;
95
+ }
96
+ async createNonPooledConnectionAndTunnel(queryDefaults, additionalConfig = RdsMysqlStyleConnectionProvider.DEFAULT_CONNECTION_OPTIONS) {
97
+ Logger.info('Creating non-pooled connection for %s', queryDefaults.databaseName);
98
+ const dbConfig = await this.getDbConfig(queryDefaults.databaseName);
99
+ const rval = await this.createConnectionAndTunnel(dbConfig, additionalConfig, false);
100
+ return rval;
101
+ }
102
+ async createNonPooledDatabaseConnection(queryDefaults, additionalConfig = RdsMysqlStyleConnectionProvider.DEFAULT_CONNECTION_OPTIONS) {
103
+ const conTunnel = await this.createNonPooledConnectionAndTunnel(queryDefaults, additionalConfig);
104
+ return conTunnel?.db;
105
+ }
106
+ async getDbConfig(name) {
107
+ Logger.info('RdsMysqlStyleConnectionProvider:getDbConfig:Initiating promise for %s', name);
108
+ const cfgs = await this.configPromise();
109
+ const finder = StringRatchet.trimToEmpty(name).toLowerCase();
110
+ const dbConfig = cfgs.dbList.find((s) => StringRatchet.trimToEmpty(s.label).toLowerCase() === finder);
111
+ if (!dbConfig) {
112
+ throw ErrorRatchet.fErr('Cannot find any connection config named %s (Available are %j)', name, cfgs.dbList.map((d) => d.label));
113
+ }
114
+ return dbConfig;
115
+ }
116
+ async createConnectionAndTunnel(dbCfg, additionalConfig = RdsMysqlStyleConnectionProvider.DEFAULT_CONNECTION_OPTIONS, clearCacheOnConnectionFailure) {
117
+ Logger.info('In RdsMysqlStyleConnectionProvider:createConnectionAndTunnel : %s', dbCfg.label);
118
+ RequireRatchet.notNullOrUndefined(dbCfg, 'dbCfg');
119
+ let tunnel = null;
120
+ if (dbCfg.sshTunnelConfig) {
121
+ const localPort = dbCfg.sshTunnelConfig.forceLocalPort || (await getPort());
122
+ Logger.debug('SSH tunnel config found, opening tunnel to %s / %s to using local port %s', dbCfg.sshTunnelConfig.host, dbCfg.sshTunnelConfig.port, localPort);
123
+ tunnel = await this.ssh.createSSHTunnel(dbCfg.sshTunnelConfig, dbCfg.host, dbCfg.port, localPort);
124
+ Logger.debug('SSH Tunnel open');
125
+ }
126
+ else {
127
+ Logger.debug('No ssh configuration - skipping tunnel');
128
+ }
129
+ Logger.debug('Opening connection for RdsMysqlStyleConnectionProvider');
130
+ let connection;
131
+ try {
132
+ const cfgCopy = structuredClone(dbCfg);
133
+ delete cfgCopy.label;
134
+ delete cfgCopy.sshTunnelConfig;
135
+ if (tunnel) {
136
+ cfgCopy.host = 'localhost';
137
+ cfgCopy.port = tunnel.localPort;
138
+ }
139
+ connection = await maria.createConnection({ ...additionalConfig, ...cfgCopy });
140
+ }
141
+ catch (err) {
142
+ Logger.info('Failed trying to create connection : %s : clearing for retry', err);
143
+ if (clearCacheOnConnectionFailure) {
144
+ this.connectionCache = new Map();
145
+ }
146
+ return undefined;
147
+ }
148
+ connection.on('error', (err) => {
149
+ Logger.info('An error was detected on the connection : %s : Clearing', err);
150
+ this.clearDatabaseAccessCache()
151
+ .then((cleared) => {
152
+ Logger.info('Connection cleared: %s', cleared);
153
+ })
154
+ .catch((err) => Logger.error('Failed to clear RDS connection cache: %j', err));
155
+ });
156
+ Logger.info('Added error handler to db, there are now %d error handlers and %d shutdown handlers', connection.rawListeners('error').length, process.rawListeners('exit').length);
157
+ const rval = {
158
+ config: dbCfg,
159
+ db: connection,
160
+ ssh: tunnel,
161
+ };
162
+ return rval;
163
+ }
164
+ configPromise() {
165
+ if (!this.cacheConfigPromise) {
166
+ this.cacheConfigPromise = this.createConnectionConfig();
167
+ }
168
+ return this.cacheConfigPromise;
169
+ }
170
+ async createConnectionConfig() {
171
+ RequireRatchet.notNullOrUndefined(this.configPromiseProvider, 'input');
172
+ const inputPromise = this.configPromiseProvider();
173
+ Logger.info('Creating connection config');
174
+ const cfg = await inputPromise;
175
+ RequireRatchet.true(cfg.dbList.length > 0, 'input.dbList');
176
+ cfg.dbList.forEach((db) => {
177
+ const errors = RdsMysqlStyleConnectionProvider.validDbConfig(db);
178
+ if (errors?.length) {
179
+ throw ErrorRatchet.fErr('Errors found in db config : %j', errors);
180
+ }
181
+ });
182
+ return cfg;
183
+ }
184
+ static validDbConfig(cfg) {
185
+ let rval = [];
186
+ if (!cfg) {
187
+ rval.push('The config is null');
188
+ }
189
+ else {
190
+ rval.push(StringRatchet.trimToNull(cfg.host) ? null : 'host is required and non-empty');
191
+ rval.push(StringRatchet.trimToNull(cfg.label) ? null : 'label is required and non-empty');
192
+ rval.push(StringRatchet.trimToNull(cfg.database) ? null : 'database is required and non-empty');
193
+ rval.push(StringRatchet.trimToNull(cfg.user) ? null : 'user is required and non-empty');
194
+ rval.push(StringRatchet.trimToNull(cfg.password) ? null : 'password is required and non-empty');
195
+ rval.push(cfg.port ? null : 'port is required and non-empty');
196
+ }
197
+ if (cfg.sshTunnelConfig) {
198
+ rval.push(StringRatchet.trimToNull(cfg.sshTunnelConfig.host) ? null : 'If sshTunnelConfig is non-null, host is required and non-empty');
199
+ rval.push(cfg.sshTunnelConfig.port ? null : 'If sshTunnelConfig is non-null, port is required and non-empty');
200
+ }
201
+ rval = rval.filter((s) => !!s);
202
+ return rval;
203
+ }
204
+ }
205
+ //# sourceMappingURL=rds-mysql-style-connection-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rds-mysql-style-connection-provider.js","sourceRoot":"","sources":["../../src/mysql/rds-mysql-style-connection-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAwC,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,6CAA6C,CAAC;AAG5E,OAAO,OAAO,MAAM,UAAU,CAAC;AAM/B,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAK5E,MAAM,OAAO,+BAA+B;IAUhC;IACA;IACA;IATH,MAAM,CAAC,0BAA0B,GAAsB,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC;IAEnF,eAAe,GAAG,IAAI,GAAG,EAAmE,CAAC;IAG7F,kBAAkB,CAA6C;IACvE,YACU,qBAAuE,EACvE,mBAAsC,+BAA+B,CAAC,0BAA0B,EAChG,GAAsB;QAFtB,0BAAqB,GAArB,qBAAqB,CAAkD;QACvE,qBAAgB,GAAhB,gBAAgB,CAAgF;QAChG,QAAG,GAAH,GAAG,CAAmB;QAE9B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;QACnF,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAED,IAAW,cAAc;QACvB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IAEO,2BAA2B;QACjC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACtB,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAC7D,IAAI,CAAC,wBAAwB,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC5C,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,wBAAwB;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;QAExE,MAAM,cAAc,GAA8D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;QAG5H,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QAGjC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC/C,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;gBAC/E,IAAI,CAAC;oBACH,MAAM,IAAI,GAAmD,MAAM,cAAc,CAAC,CAAC,CAAC,CAAC;oBACrF,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;oBACrD,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;wBACZ,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;wBAC/C,IAAI,CAAC;4BACH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;4BAClB,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;wBAC5C,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;4BAE/D,CAAC;iCAAM,CAAC;gCACN,MAAM,CAAC,KAAK,CAAC,2DAA2D,EAAE,GAAG,CAAC,CAAC;4BACjF,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;wBACb,IAAI,CAAC;4BACH,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;4BACnC,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BAClC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;wBACpC,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,MAAM,CAAC,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;wBAC1D,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAAC,IAAY;QAC9C,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,oDAAoD,EAAE,IAAI,CAAC,CAAC;YACxE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;YACzF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,IAAY;QACzC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,GAAmD,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACrG,MAAM,IAAI,GAAmB,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5G,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,kCAAkC,CAC7C,aAA4B,EAC5B,mBAAsC,+BAA+B,CAAC,0BAA0B;QAEhG,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;QACjF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;QACpE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,iCAAiC,CAC5C,aAA4B,EAC5B,mBAAsC,+BAA+B,CAAC,0BAA0B;QAEhG,MAAM,SAAS,GAAmD,MAAM,IAAI,CAAC,kCAAkC,CAC7G,aAAa,EACb,gBAAgB,CACjB,CAAC;QACF,OAAO,SAAS,EAAE,EAAE,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,IAAY;QACpC,MAAM,CAAC,IAAI,CAAC,uEAAuE,EAAE,IAAI,CAAC,CAAC;QAC3F,MAAM,IAAI,GAAsC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3E,MAAM,MAAM,GAAW,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;QACtG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,YAAY,CAAC,IAAI,CACrB,+DAA+D,EAC/D,IAAI,EACJ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAChC,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAGO,KAAK,CAAC,yBAAyB,CACrC,KAAoB,EACpB,mBAAsC,+BAA+B,CAAC,0BAA0B,EAChG,6BAAsC;QAEtC,MAAM,CAAC,IAAI,CAAC,mEAAmE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9F,cAAc,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAElD,IAAI,MAAM,GAAuB,IAAI,CAAC;QACtC,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAW,KAAK,CAAC,eAAe,CAAC,cAAc,IAAI,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC;YACpF,MAAM,CAAC,KAAK,CACV,2EAA2E,EAC3E,KAAK,CAAC,eAAe,CAAC,IAAI,EAC1B,KAAK,CAAC,eAAe,CAAC,IAAI,EAC1B,SAAS,CACV,CAAC;YACF,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YAClG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACvE,IAAI,UAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,OAAO,GAAkB,eAAe,CAAC,KAAK,CAAC,CAAC;YACtD,OAAO,OAAO,CAAC,KAAK,CAAC;YACrB,OAAO,OAAO,CAAC,eAAe,CAAC;YAC/B,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC;gBAC3B,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;YAClC,CAAC;YAED,UAAU,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,EAAE,GAAG,gBAAgB,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QACjF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,8DAA8D,EAAE,GAAG,CAAC,CAAC;YACjF,IAAI,6BAA6B,EAAE,CAAC;gBAClC,IAAI,CAAC,eAAe,GAAG,IAAI,GAAG,EAAmE,CAAC;YACpG,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC7B,MAAM,CAAC,IAAI,CAAC,yDAAyD,EAAE,GAAG,CAAC,CAAC;YAC5E,IAAI,CAAC,wBAAwB,EAAE;iBAC5B,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBAChB,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CACT,qFAAqF,EACrF,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,EACvC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CACpC,CAAC;QAEF,MAAM,IAAI,GAAmD;YAC3D,MAAM,EAAE,KAAK;YACb,EAAE,EAAE,UAAU;YACd,GAAG,EAAE,MAAM;SACZ,CAAC;QAEF,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC1D,CAAC;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,sBAAsB;QAClC,cAAc,CAAC,kBAAkB,CAAC,IAAI,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;QACvE,MAAM,YAAY,GAA+C,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC9F,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAsC,MAAM,YAAY,CAAC;QAClE,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;QAE3D,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACxB,MAAM,MAAM,GAAa,+BAA+B,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAC3E,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;gBACnB,MAAM,YAAY,CAAC,IAAI,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;YACpE,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,GAAkB;QAC5C,IAAI,IAAI,GAAa,EAAE,CAAC;QACxB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC;YACxF,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC;YAC1F,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC;YAChG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC;YACxF,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC;YAChG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CACP,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gEAAgE,CAC7H,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gEAAgE,CAAC,CAAC;QAChH,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './query-builder-result.js';
2
+ export * from './query-builder.js';
3
+ export * from './query-util.js';
@@ -0,0 +1,4 @@
1
+ export * from './query-builder-result.js';
2
+ export * from './query-builder.js';
3
+ export * from './query-util.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/query-builder/index.ts"],"names":[],"mappings":"AAIA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { TransactionIsolationLevel } from '../model/transaction-isolation-level.js';
2
+ import { Paginator } from '../model/paginator.js';
3
+ export declare class QueryBuilderResult {
4
+ query: string;
5
+ namedParams: Record<string, unknown>;
6
+ paginator?: Paginator<any>;
7
+ transactionIsolationLevel: TransactionIsolationLevel;
8
+ constructor(query: string, namedParams: Record<string, unknown>, paginator: Paginator<any> | undefined, transactionIsolationLevel: TransactionIsolationLevel);
9
+ }
@@ -0,0 +1,13 @@
1
+ export class QueryBuilderResult {
2
+ query;
3
+ namedParams;
4
+ paginator;
5
+ transactionIsolationLevel;
6
+ constructor(query, namedParams, paginator, transactionIsolationLevel) {
7
+ this.query = query;
8
+ this.namedParams = namedParams;
9
+ this.paginator = paginator;
10
+ this.transactionIsolationLevel = transactionIsolationLevel;
11
+ }
12
+ }
13
+ //# sourceMappingURL=query-builder-result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder-result.js","sourceRoot":"","sources":["../../src/query-builder/query-builder-result.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,kBAAkB;IAC7B,KAAK,CAAS;IACd,WAAW,CAA0B;IACrC,SAAS,CAAkB;IAC3B,yBAAyB,CAA4B;IAErD,YACE,KAAa,EACb,WAAoC,EACpC,SAAqC,EACrC,yBAAoD;QAEpD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,yBAAyB,GAAG,yBAAyB,CAAC;IAC7D,CAAC;CACF"}
@@ -0,0 +1,52 @@
1
+ import { QueryBuilderResult } from './query-builder-result.js';
2
+ import { TransactionIsolationLevel } from '../model/transaction-isolation-level.js';
3
+ import { QueryTextProvider } from '../model/query-text-provider.js';
4
+ import { Paginator } from '../model/paginator.js';
5
+ export declare class QueryBuilder {
6
+ static readonly ALLOWED_SQL_CONSTRUCT: RegExp;
7
+ private readonly queryProvider;
8
+ private query?;
9
+ meta: {
10
+ queryPath?: string;
11
+ };
12
+ private sqlConstructs;
13
+ private namedParams;
14
+ private conditionals;
15
+ private debugComment;
16
+ private paginator?;
17
+ private debugAnnotateMode;
18
+ private transactionIsolationLevel;
19
+ constructor(queryProvider: QueryTextProvider);
20
+ clone(): QueryBuilder;
21
+ withTransactionIsolationLevel(level: TransactionIsolationLevel): QueryBuilder;
22
+ withDebugComment(comment: string): QueryBuilder;
23
+ appendDebugComment(comment: string): QueryBuilder;
24
+ withNamedQuery(queryPath: string): QueryBuilder;
25
+ withBaseQuery(baseQuery: string): void;
26
+ withSqlConstruct(key: string, value: unknown): QueryBuilder;
27
+ withSqlConstructs(params: Record<string, unknown>): QueryBuilder;
28
+ removeParam(key: string): QueryBuilder;
29
+ paramNames(): string[];
30
+ withParam(key: string, value: unknown): QueryBuilder;
31
+ withParams(params: unknown): QueryBuilder;
32
+ withExpandedParam(keyPrefix: string, values: unknown[], extendIfExists: boolean): QueryBuilder;
33
+ withConditional(tag: string, state?: boolean): QueryBuilder;
34
+ withConditionals(params: Record<string, boolean>): QueryBuilder;
35
+ withPaginator(paginator: Paginator<any>): QueryBuilder;
36
+ fetchCopyOfParam<T>(paramName: string): T | undefined;
37
+ fetchCopyOfConditional<T>(conditionalName: string): T | undefined;
38
+ containsParam(paramName: string): boolean;
39
+ getDebugComment(): string;
40
+ containsConditional(conditionalName: string): boolean;
41
+ build(): QueryBuilderResult;
42
+ buildUnfiltered(): QueryBuilderResult;
43
+ protected internalBuild(unfiltered: boolean): QueryBuilderResult;
44
+ private stripNonAsciiParams;
45
+ private runQueryChecks;
46
+ private applyComments;
47
+ applySqlConstructs(): void;
48
+ private applyRepeatBlocks;
49
+ private applyQueryFragments;
50
+ private applyPagination;
51
+ private applyConditionalBlocks;
52
+ }