knex 3.2.3 → 3.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2447 -2441
- package/CONTRIBUTING.md +190 -190
- package/LICENSE +22 -22
- package/README.md +177 -156
- package/UPGRADING.md +245 -245
- package/bin/cli.js +516 -516
- package/bin/knexfile-runtime-error.js +27 -27
- package/bin/utils/cli-config-utils.js +217 -217
- package/bin/utils/constants.js +7 -7
- package/bin/utils/migrationsLister.js +37 -37
- package/knex.js +23 -23
- package/knex.mjs +11 -11
- package/lib/builder-interface-augmenter.js +120 -120
- package/lib/client.js +585 -585
- package/lib/constants.js +61 -61
- package/lib/dialects/better-sqlite3/index.js +101 -101
- package/lib/dialects/cockroachdb/crdb-columncompiler.js +14 -14
- package/lib/dialects/cockroachdb/crdb-querybuilder.js +11 -11
- package/lib/dialects/cockroachdb/crdb-querycompiler.js +122 -122
- package/lib/dialects/cockroachdb/crdb-tablecompiler.js +46 -46
- package/lib/dialects/cockroachdb/crdb-viewcompiler.js +15 -15
- package/lib/dialects/cockroachdb/index.js +86 -86
- package/lib/dialects/index.js +34 -34
- package/lib/dialects/mssql/index.js +498 -498
- package/lib/dialects/mssql/mssql-formatter.js +34 -34
- package/lib/dialects/mssql/query/mssql-querycompiler.js +601 -601
- package/lib/dialects/mssql/schema/mssql-columncompiler.js +185 -185
- package/lib/dialects/mssql/schema/mssql-compiler.js +91 -91
- package/lib/dialects/mssql/schema/mssql-tablecompiler.js +393 -393
- package/lib/dialects/mssql/schema/mssql-viewcompiler.js +55 -55
- package/lib/dialects/mssql/transaction.js +176 -176
- package/lib/dialects/mysql/index.js +317 -317
- package/lib/dialects/mysql/query/mysql-querybuilder.js +14 -14
- package/lib/dialects/mysql/query/mysql-querycompiler.js +292 -292
- package/lib/dialects/mysql/schema/mysql-columncompiler.js +193 -193
- package/lib/dialects/mysql/schema/mysql-compiler.js +60 -60
- package/lib/dialects/mysql/schema/mysql-tablecompiler.js +426 -426
- package/lib/dialects/mysql/schema/mysql-viewbuilder.js +21 -21
- package/lib/dialects/mysql/schema/mysql-viewcompiler.js +15 -15
- package/lib/dialects/mysql/transaction.js +46 -46
- package/lib/dialects/mysql2/index.js +53 -53
- package/lib/dialects/mysql2/transaction.js +44 -44
- package/lib/dialects/oracle/DEAD_CODE.md +5 -5
- package/lib/dialects/oracle/index.js +92 -92
- package/lib/dialects/oracle/query/oracle-querycompiler.js +343 -343
- package/lib/dialects/oracle/schema/internal/incrementUtils.js +22 -22
- package/lib/dialects/oracle/schema/internal/trigger.js +155 -155
- package/lib/dialects/oracle/schema/oracle-columnbuilder.js +17 -17
- package/lib/dialects/oracle/schema/oracle-columncompiler.js +126 -126
- package/lib/dialects/oracle/schema/oracle-compiler.js +124 -124
- package/lib/dialects/oracle/schema/oracle-tablecompiler.js +210 -210
- package/lib/dialects/oracle/utils.js +107 -107
- package/lib/dialects/oracledb/index.js +381 -381
- package/lib/dialects/oracledb/query/oracledb-querycompiler.js +481 -481
- package/lib/dialects/oracledb/schema/oracledb-columncompiler.js +61 -61
- package/lib/dialects/oracledb/schema/oracledb-tablecompiler.js +19 -19
- package/lib/dialects/oracledb/schema/oracledb-viewbuilder.js +13 -13
- package/lib/dialects/oracledb/schema/oracledb-viewcompiler.js +19 -19
- package/lib/dialects/oracledb/transaction.js +98 -98
- package/lib/dialects/oracledb/utils.js +208 -208
- package/lib/dialects/pgnative/index.js +60 -60
- package/lib/dialects/postgres/execution/pg-transaction.js +19 -19
- package/lib/dialects/postgres/index.js +373 -373
- package/lib/dialects/postgres/query/pg-querybuilder.js +43 -43
- package/lib/dialects/postgres/query/pg-querycompiler.js +400 -400
- package/lib/dialects/postgres/schema/pg-columncompiler.js +162 -162
- package/lib/dialects/postgres/schema/pg-compiler.js +138 -138
- package/lib/dialects/postgres/schema/pg-tablecompiler.js +331 -331
- package/lib/dialects/postgres/schema/pg-viewbuilder.js +21 -21
- package/lib/dialects/postgres/schema/pg-viewcompiler.js +35 -35
- package/lib/dialects/redshift/index.js +86 -86
- package/lib/dialects/redshift/query/redshift-querycompiler.js +163 -163
- package/lib/dialects/redshift/schema/redshift-columnbuilder.js +22 -22
- package/lib/dialects/redshift/schema/redshift-columncompiler.js +67 -67
- package/lib/dialects/redshift/schema/redshift-compiler.js +14 -14
- package/lib/dialects/redshift/schema/redshift-tablecompiler.js +134 -134
- package/lib/dialects/redshift/schema/redshift-viewcompiler.js +11 -11
- package/lib/dialects/redshift/transaction.js +32 -32
- package/lib/dialects/sqlite3/execution/sqlite-transaction.js +172 -172
- package/lib/dialects/sqlite3/index.js +263 -263
- package/lib/dialects/sqlite3/query/sqlite-querybuilder.js +33 -33
- package/lib/dialects/sqlite3/query/sqlite-querycompiler.js +341 -341
- package/lib/dialects/sqlite3/schema/ddl.js +380 -380
- package/lib/dialects/sqlite3/schema/internal/compiler.js +327 -327
- package/lib/dialects/sqlite3/schema/internal/parser-combinator.js +161 -161
- package/lib/dialects/sqlite3/schema/internal/parser.js +638 -638
- package/lib/dialects/sqlite3/schema/internal/sqlite-ddl-operations.js +41 -41
- package/lib/dialects/sqlite3/schema/internal/tokenizer.js +38 -38
- package/lib/dialects/sqlite3/schema/internal/utils.js +12 -12
- package/lib/dialects/sqlite3/schema/sqlite-columncompiler.js +50 -50
- package/lib/dialects/sqlite3/schema/sqlite-compiler.js +80 -80
- package/lib/dialects/sqlite3/schema/sqlite-tablecompiler.js +364 -364
- package/lib/dialects/sqlite3/schema/sqlite-viewcompiler.js +40 -40
- package/lib/execution/batch-insert.js +51 -51
- package/lib/execution/internal/delay.js +6 -6
- package/lib/execution/internal/ensure-connection-callback.js +41 -41
- package/lib/execution/internal/query-executioner.js +62 -62
- package/lib/execution/runner.js +325 -325
- package/lib/execution/transaction.js +417 -417
- package/lib/formatter/formatterUtils.js +42 -42
- package/lib/formatter/rawFormatter.js +84 -84
- package/lib/formatter/wrappingFormatter.js +253 -253
- package/lib/formatter.js +25 -25
- package/lib/index.js +3 -3
- package/lib/knex-builder/FunctionHelper.js +80 -80
- package/lib/knex-builder/Knex.js +59 -59
- package/lib/knex-builder/internal/config-resolver.js +57 -57
- package/lib/knex-builder/internal/parse-connection.js +87 -87
- package/lib/knex-builder/make-knex.js +345 -345
- package/lib/logger.js +76 -76
- package/lib/migrations/common/MigrationsLoader.js +36 -36
- package/lib/migrations/migrate/MigrationGenerator.js +84 -84
- package/lib/migrations/migrate/Migrator.js +632 -632
- package/lib/migrations/migrate/migrate-stub.js +17 -17
- package/lib/migrations/migrate/migration-list-resolver.js +33 -33
- package/lib/migrations/migrate/migrator-configuration-merger.js +58 -58
- package/lib/migrations/migrate/sources/fs-migrations.js +74 -74
- package/lib/migrations/migrate/stub/cjs.stub +15 -15
- package/lib/migrations/migrate/stub/coffee.stub +13 -13
- package/lib/migrations/migrate/stub/eg.stub +14 -14
- package/lib/migrations/migrate/stub/js-schema.stub +22 -22
- package/lib/migrations/migrate/stub/js.stub +22 -22
- package/lib/migrations/migrate/stub/knexfile-coffee.stub +34 -34
- package/lib/migrations/migrate/stub/knexfile-eg.stub +43 -43
- package/lib/migrations/migrate/stub/knexfile-js.stub +47 -47
- package/lib/migrations/migrate/stub/knexfile-ls.stub +35 -35
- package/lib/migrations/migrate/stub/knexfile-ts.stub +47 -47
- package/lib/migrations/migrate/stub/ls.stub +14 -14
- package/lib/migrations/migrate/stub/mjs.stub +23 -23
- package/lib/migrations/migrate/stub/ts-schema.stub +21 -21
- package/lib/migrations/migrate/stub/ts.stub +21 -21
- package/lib/migrations/migrate/table-creator.js +77 -77
- package/lib/migrations/migrate/table-resolver.js +27 -27
- package/lib/migrations/seed/Seeder.js +137 -137
- package/lib/migrations/seed/seed-stub.js +13 -13
- package/lib/migrations/seed/seeder-configuration-merger.js +60 -60
- package/lib/migrations/seed/sources/fs-seeds.js +65 -65
- package/lib/migrations/seed/stub/coffee.stub +9 -9
- package/lib/migrations/seed/stub/eg.stub +11 -11
- package/lib/migrations/seed/stub/js.stub +13 -13
- package/lib/migrations/seed/stub/ls.stub +11 -11
- package/lib/migrations/seed/stub/mjs.stub +12 -12
- package/lib/migrations/seed/stub/ts.stub +13 -13
- package/lib/migrations/util/fs.js +86 -86
- package/lib/migrations/util/import-file.js +12 -12
- package/lib/migrations/util/is-module-type.js +9 -9
- package/lib/migrations/util/template.js +52 -52
- package/lib/migrations/util/timestamp.js +14 -14
- package/lib/query/analytic.js +52 -52
- package/lib/query/constants.js +15 -15
- package/lib/query/joinclause.js +270 -270
- package/lib/query/method-constants.js +136 -136
- package/lib/query/querybuilder.js +1793 -1793
- package/lib/query/querycompiler.js +1634 -1634
- package/lib/raw.js +139 -139
- package/lib/ref.js +39 -39
- package/lib/schema/builder.js +115 -115
- package/lib/schema/columnbuilder.js +146 -146
- package/lib/schema/columncompiler.js +307 -307
- package/lib/schema/compiler.js +187 -187
- package/lib/schema/internal/helpers.js +55 -55
- package/lib/schema/tablebuilder.js +379 -379
- package/lib/schema/tablecompiler.js +450 -450
- package/lib/schema/viewbuilder.js +92 -92
- package/lib/schema/viewcompiler.js +138 -138
- package/lib/util/finally-mixin.js +13 -13
- package/lib/util/helpers.js +95 -95
- package/lib/util/is.js +32 -32
- package/lib/util/nanoid.js +40 -40
- package/lib/util/noop.js +1 -1
- package/lib/util/save-async-stack.js +14 -14
- package/lib/util/security.js +32 -32
- package/lib/util/string.js +190 -190
- package/lib/util/timeout.js +29 -29
- package/package.json +295 -293
- package/scripts/act-testing/act.sh +19 -19
- package/scripts/act-testing/merged-no-label.json +11 -11
- package/scripts/act-testing/merged-patch-labeled.json +12 -12
- package/scripts/act-testing/merged-skip-labeled.json +12 -12
- package/scripts/act-testing/not-merged-patch-labeled.json +12 -12
- package/scripts/build-for-release.sh +121 -121
- package/scripts/build.js +125 -125
- package/scripts/clean.js +31 -31
- package/scripts/docker-compose.yml +150 -150
- package/scripts/format-changelog.js +55 -55
- package/scripts/next-release-howto.md +24 -24
- package/scripts/oracledb-install-driver-libs.sh +82 -82
- package/scripts/release.sh +36 -36
- package/scripts/runkit-example.js +35 -35
- package/scripts/stress-test/README.txt +18 -18
- package/scripts/stress-test/docker-compose.yml +55 -55
- package/scripts/stress-test/knex-stress-test.js +212 -212
- package/scripts/stress-test/mysql2-random-hanging-every-now-and-then.js +149 -149
- package/scripts/stress-test/mysql2-sudden-exit-without-error.js +101 -101
- package/scripts/stress-test/reconnect-test-mysql-based-drivers.js +188 -188
- package/types/index.d.mts +14 -0
- package/types/index.d.ts +3321 -3321
- package/types/result.d.ts +27 -27
- package/types/tables.d.ts +4 -4
|
@@ -1,107 +1,107 @@
|
|
|
1
|
-
class NameHelper {
|
|
2
|
-
constructor(oracleVersion) {
|
|
3
|
-
this.oracleVersion = oracleVersion;
|
|
4
|
-
|
|
5
|
-
// In oracle versions prior to 12.2, the maximum length for a database
|
|
6
|
-
// object name was 30 characters. 12.2 extended this to 128.
|
|
7
|
-
const versionParts = oracleVersion
|
|
8
|
-
.split('.')
|
|
9
|
-
.map((versionPart) => parseInt(versionPart));
|
|
10
|
-
if (
|
|
11
|
-
versionParts[0] > 12 ||
|
|
12
|
-
(versionParts[0] === 12 && versionParts[1] >= 2)
|
|
13
|
-
) {
|
|
14
|
-
this.limit = 128;
|
|
15
|
-
} else {
|
|
16
|
-
this.limit = 30;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
generateCombinedName(logger, postfix, name, subNames) {
|
|
21
|
-
const crypto = require('crypto');
|
|
22
|
-
if (!Array.isArray(subNames)) subNames = subNames ? [subNames] : [];
|
|
23
|
-
const table = name.replace(/\.|-/g, '_');
|
|
24
|
-
const subNamesPart = subNames.join('_');
|
|
25
|
-
let result = `${table}_${
|
|
26
|
-
subNamesPart.length ? subNamesPart + '_' : ''
|
|
27
|
-
}${postfix}`.toLowerCase();
|
|
28
|
-
if (result.length > this.limit) {
|
|
29
|
-
logger.warn(
|
|
30
|
-
`Automatically generated name "${result}" exceeds ${this.limit} character ` +
|
|
31
|
-
`limit for Oracle Database ${this.oracleVersion}. Using base64 encoded sha1 of that name instead.`
|
|
32
|
-
);
|
|
33
|
-
// generates the sha1 of the name and encode it with base64
|
|
34
|
-
result = crypto
|
|
35
|
-
.createHash('sha1')
|
|
36
|
-
.update(result)
|
|
37
|
-
.digest('base64')
|
|
38
|
-
.replace('=', '');
|
|
39
|
-
}
|
|
40
|
-
return result;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
function wrapSqlWithCatch(sql, errorNumberToCatch) {
|
|
45
|
-
return (
|
|
46
|
-
`begin execute immediate '${sql.replace(/'/g, "''")}'; ` +
|
|
47
|
-
`exception when others then if sqlcode != ${errorNumberToCatch} then raise; ` +
|
|
48
|
-
`end if; ` +
|
|
49
|
-
`end;`
|
|
50
|
-
);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
function ReturningHelper(columnName) {
|
|
54
|
-
this.columnName = columnName;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
ReturningHelper.prototype.toString = function () {
|
|
58
|
-
return `[object ReturningHelper:${this.columnName}]`;
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
// If the error is any of these, we'll assume we need to
|
|
62
|
-
// mark the connection as failed
|
|
63
|
-
function isConnectionError(err) {
|
|
64
|
-
return [
|
|
65
|
-
'DPI-1010', // not connected
|
|
66
|
-
'DPI-1080', // connection was closed by ORA-%d
|
|
67
|
-
'ORA-03114', // not connected to ORACLE
|
|
68
|
-
'ORA-03113', // end-of-file on communication channel
|
|
69
|
-
'ORA-03135', // connection lost contact
|
|
70
|
-
'ORA-12514', // listener does not currently know of service requested in connect descriptor
|
|
71
|
-
'ORA-00022', // invalid session ID; access denied
|
|
72
|
-
'ORA-00028', // your session has been killed
|
|
73
|
-
'ORA-00031', // your session has been marked for kill
|
|
74
|
-
'ORA-00045', // your session has been terminated with no replay
|
|
75
|
-
'ORA-00378', // buffer pools cannot be created as specified
|
|
76
|
-
'ORA-00602', // internal programming exception
|
|
77
|
-
'ORA-00603', // ORACLE server session terminated by fatal error
|
|
78
|
-
'ORA-00609', // could not attach to incoming connection
|
|
79
|
-
'ORA-01012', // not logged on
|
|
80
|
-
'ORA-01041', // internal error. hostdef extension doesn't exist
|
|
81
|
-
'ORA-01043', // user side memory corruption
|
|
82
|
-
'ORA-01089', // immediate shutdown or close in progress
|
|
83
|
-
'ORA-01092', // ORACLE instance terminated. Disconnection forced
|
|
84
|
-
'ORA-02396', // exceeded maximum idle time, please connect again
|
|
85
|
-
'ORA-03122', // attempt to close ORACLE-side window on user side
|
|
86
|
-
'ORA-12153', // TNS'not connected
|
|
87
|
-
'ORA-12537', // TNS'connection closed
|
|
88
|
-
'ORA-12547', // TNS'lost contact
|
|
89
|
-
'ORA-12570', // TNS'packet reader failure
|
|
90
|
-
'ORA-12583', // TNS'no reader
|
|
91
|
-
'ORA-27146', // post/wait initialization failed
|
|
92
|
-
'ORA-28511', // lost RPC connection
|
|
93
|
-
'ORA-56600', // an illegal OCI function call was issued
|
|
94
|
-
'NJS-024',
|
|
95
|
-
'NJS-003',
|
|
96
|
-
'NJS-500',
|
|
97
|
-
].some(function (prefix) {
|
|
98
|
-
return err.message.indexOf(prefix) === 0;
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
module.exports = {
|
|
103
|
-
NameHelper,
|
|
104
|
-
isConnectionError,
|
|
105
|
-
wrapSqlWithCatch,
|
|
106
|
-
ReturningHelper,
|
|
107
|
-
};
|
|
1
|
+
class NameHelper {
|
|
2
|
+
constructor(oracleVersion) {
|
|
3
|
+
this.oracleVersion = oracleVersion;
|
|
4
|
+
|
|
5
|
+
// In oracle versions prior to 12.2, the maximum length for a database
|
|
6
|
+
// object name was 30 characters. 12.2 extended this to 128.
|
|
7
|
+
const versionParts = oracleVersion
|
|
8
|
+
.split('.')
|
|
9
|
+
.map((versionPart) => parseInt(versionPart));
|
|
10
|
+
if (
|
|
11
|
+
versionParts[0] > 12 ||
|
|
12
|
+
(versionParts[0] === 12 && versionParts[1] >= 2)
|
|
13
|
+
) {
|
|
14
|
+
this.limit = 128;
|
|
15
|
+
} else {
|
|
16
|
+
this.limit = 30;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
generateCombinedName(logger, postfix, name, subNames) {
|
|
21
|
+
const crypto = require('crypto');
|
|
22
|
+
if (!Array.isArray(subNames)) subNames = subNames ? [subNames] : [];
|
|
23
|
+
const table = name.replace(/\.|-/g, '_');
|
|
24
|
+
const subNamesPart = subNames.join('_');
|
|
25
|
+
let result = `${table}_${
|
|
26
|
+
subNamesPart.length ? subNamesPart + '_' : ''
|
|
27
|
+
}${postfix}`.toLowerCase();
|
|
28
|
+
if (result.length > this.limit) {
|
|
29
|
+
logger.warn(
|
|
30
|
+
`Automatically generated name "${result}" exceeds ${this.limit} character ` +
|
|
31
|
+
`limit for Oracle Database ${this.oracleVersion}. Using base64 encoded sha1 of that name instead.`
|
|
32
|
+
);
|
|
33
|
+
// generates the sha1 of the name and encode it with base64
|
|
34
|
+
result = crypto
|
|
35
|
+
.createHash('sha1')
|
|
36
|
+
.update(result)
|
|
37
|
+
.digest('base64')
|
|
38
|
+
.replace('=', '');
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function wrapSqlWithCatch(sql, errorNumberToCatch) {
|
|
45
|
+
return (
|
|
46
|
+
`begin execute immediate '${sql.replace(/'/g, "''")}'; ` +
|
|
47
|
+
`exception when others then if sqlcode != ${errorNumberToCatch} then raise; ` +
|
|
48
|
+
`end if; ` +
|
|
49
|
+
`end;`
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function ReturningHelper(columnName) {
|
|
54
|
+
this.columnName = columnName;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
ReturningHelper.prototype.toString = function () {
|
|
58
|
+
return `[object ReturningHelper:${this.columnName}]`;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// If the error is any of these, we'll assume we need to
|
|
62
|
+
// mark the connection as failed
|
|
63
|
+
function isConnectionError(err) {
|
|
64
|
+
return [
|
|
65
|
+
'DPI-1010', // not connected
|
|
66
|
+
'DPI-1080', // connection was closed by ORA-%d
|
|
67
|
+
'ORA-03114', // not connected to ORACLE
|
|
68
|
+
'ORA-03113', // end-of-file on communication channel
|
|
69
|
+
'ORA-03135', // connection lost contact
|
|
70
|
+
'ORA-12514', // listener does not currently know of service requested in connect descriptor
|
|
71
|
+
'ORA-00022', // invalid session ID; access denied
|
|
72
|
+
'ORA-00028', // your session has been killed
|
|
73
|
+
'ORA-00031', // your session has been marked for kill
|
|
74
|
+
'ORA-00045', // your session has been terminated with no replay
|
|
75
|
+
'ORA-00378', // buffer pools cannot be created as specified
|
|
76
|
+
'ORA-00602', // internal programming exception
|
|
77
|
+
'ORA-00603', // ORACLE server session terminated by fatal error
|
|
78
|
+
'ORA-00609', // could not attach to incoming connection
|
|
79
|
+
'ORA-01012', // not logged on
|
|
80
|
+
'ORA-01041', // internal error. hostdef extension doesn't exist
|
|
81
|
+
'ORA-01043', // user side memory corruption
|
|
82
|
+
'ORA-01089', // immediate shutdown or close in progress
|
|
83
|
+
'ORA-01092', // ORACLE instance terminated. Disconnection forced
|
|
84
|
+
'ORA-02396', // exceeded maximum idle time, please connect again
|
|
85
|
+
'ORA-03122', // attempt to close ORACLE-side window on user side
|
|
86
|
+
'ORA-12153', // TNS'not connected
|
|
87
|
+
'ORA-12537', // TNS'connection closed
|
|
88
|
+
'ORA-12547', // TNS'lost contact
|
|
89
|
+
'ORA-12570', // TNS'packet reader failure
|
|
90
|
+
'ORA-12583', // TNS'no reader
|
|
91
|
+
'ORA-27146', // post/wait initialization failed
|
|
92
|
+
'ORA-28511', // lost RPC connection
|
|
93
|
+
'ORA-56600', // an illegal OCI function call was issued
|
|
94
|
+
'NJS-024',
|
|
95
|
+
'NJS-003',
|
|
96
|
+
'NJS-500',
|
|
97
|
+
].some(function (prefix) {
|
|
98
|
+
return err.message.indexOf(prefix) === 0;
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
module.exports = {
|
|
103
|
+
NameHelper,
|
|
104
|
+
isConnectionError,
|
|
105
|
+
wrapSqlWithCatch,
|
|
106
|
+
ReturningHelper,
|
|
107
|
+
};
|