knex 0.21.20 → 0.21.21
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 +6 -0
- package/CONTRIBUTING.md +184 -184
- package/LICENSE +22 -22
- package/README.md +95 -95
- package/bin/cli.js +414 -414
- package/bin/utils/cli-config-utils.js +151 -151
- package/bin/utils/constants.js +7 -7
- package/bin/utils/migrationsLister.js +37 -37
- package/knex.js +8 -8
- package/lib/client.js +413 -413
- package/lib/config-resolver.js +61 -61
- package/lib/constants.js +44 -44
- package/lib/dialects/mssql/index.js +390 -390
- package/lib/dialects/mssql/query/compiler.js +444 -444
- package/lib/dialects/mssql/schema/columncompiler.js +103 -103
- package/lib/dialects/mssql/schema/compiler.js +59 -59
- package/lib/dialects/mssql/schema/tablecompiler.js +245 -245
- package/lib/dialects/mssql/transaction.js +97 -97
- package/lib/dialects/mysql/index.js +191 -191
- package/lib/dialects/mysql/query/compiler.js +142 -142
- package/lib/dialects/mysql/schema/columncompiler.js +171 -171
- package/lib/dialects/mysql/schema/compiler.js +60 -60
- package/lib/dialects/mysql/schema/tablecompiler.js +262 -262
- package/lib/dialects/mysql/transaction.js +48 -48
- package/lib/dialects/mysql2/index.js +35 -35
- package/lib/dialects/mysql2/transaction.js +46 -46
- package/lib/dialects/oracle/DEAD_CODE.md +5 -5
- package/lib/dialects/oracle/formatter.js +20 -20
- package/lib/dialects/oracle/index.js +79 -79
- package/lib/dialects/oracle/query/compiler.js +327 -327
- package/lib/dialects/oracle/schema/columnbuilder.js +18 -18
- package/lib/dialects/oracle/schema/columncompiler.js +139 -139
- package/lib/dialects/oracle/schema/compiler.js +81 -81
- package/lib/dialects/oracle/schema/tablecompiler.js +165 -165
- package/lib/dialects/oracle/schema/trigger.js +126 -126
- package/lib/dialects/oracle/utils.js +86 -86
- package/lib/dialects/oracledb/index.js +489 -489
- package/lib/dialects/oracledb/query/compiler.js +363 -363
- package/lib/dialects/oracledb/schema/columncompiler.js +35 -35
- package/lib/dialects/oracledb/transaction.js +76 -76
- package/lib/dialects/oracledb/utils.js +14 -14
- package/lib/dialects/postgres/index.js +319 -319
- package/lib/dialects/postgres/query/compiler.js +206 -206
- package/lib/dialects/postgres/schema/columncompiler.js +125 -125
- package/lib/dialects/postgres/schema/compiler.js +109 -109
- package/lib/dialects/postgres/schema/tablecompiler.js +183 -183
- package/lib/dialects/redshift/index.js +73 -73
- package/lib/dialects/redshift/query/compiler.js +119 -119
- package/lib/dialects/redshift/schema/columnbuilder.js +20 -20
- package/lib/dialects/redshift/schema/columncompiler.js +60 -60
- package/lib/dialects/redshift/schema/compiler.js +14 -14
- package/lib/dialects/redshift/schema/tablecompiler.js +123 -123
- package/lib/dialects/redshift/transaction.js +18 -18
- package/lib/dialects/sqlite3/formatter.js +21 -21
- package/lib/dialects/sqlite3/index.js +169 -169
- package/lib/dialects/sqlite3/query/compiler.js +222 -222
- package/lib/dialects/sqlite3/schema/columncompiler.js +27 -27
- package/lib/dialects/sqlite3/schema/compiler.js +49 -49
- package/lib/dialects/sqlite3/schema/ddl.js +525 -525
- package/lib/dialects/sqlite3/schema/tablecompiler.js +238 -238
- package/lib/formatter.js +295 -295
- package/lib/functionhelper.js +14 -14
- package/lib/helpers.js +92 -92
- package/lib/index.js +3 -3
- package/lib/interface.js +115 -115
- package/lib/knex.js +42 -42
- package/lib/logger.js +76 -76
- package/lib/migrate/MigrationGenerator.js +82 -82
- package/lib/migrate/Migrator.js +611 -611
- package/lib/migrate/configuration-merger.js +60 -60
- package/lib/migrate/migrate-stub.js +17 -17
- package/lib/migrate/migration-list-resolver.js +36 -36
- package/lib/migrate/sources/fs-migrations.js +99 -99
- package/lib/migrate/stub/cjs.stub +15 -15
- package/lib/migrate/stub/coffee.stub +13 -13
- package/lib/migrate/stub/eg.stub +14 -14
- package/lib/migrate/stub/js.stub +15 -15
- package/lib/migrate/stub/knexfile-coffee.stub +34 -34
- package/lib/migrate/stub/knexfile-eg.stub +43 -43
- package/lib/migrate/stub/knexfile-js.stub +44 -44
- package/lib/migrate/stub/knexfile-ls.stub +35 -35
- package/lib/migrate/stub/knexfile-ts.stub +44 -44
- package/lib/migrate/stub/ls.stub +14 -14
- package/lib/migrate/stub/ts.stub +21 -21
- package/lib/migrate/table-creator.js +67 -67
- package/lib/migrate/table-resolver.js +27 -27
- package/lib/query/builder.js +1372 -1372
- package/lib/query/compiler.js +889 -889
- package/lib/query/constants.js +13 -13
- package/lib/query/joinclause.js +263 -263
- package/lib/query/methods.js +92 -92
- package/lib/query/string.js +190 -190
- package/lib/raw.js +188 -188
- package/lib/ref.js +39 -39
- package/lib/runner.js +285 -285
- package/lib/schema/builder.js +82 -82
- package/lib/schema/columnbuilder.js +117 -117
- package/lib/schema/columncompiler.js +177 -177
- package/lib/schema/compiler.js +101 -101
- package/lib/schema/helpers.js +51 -51
- package/lib/schema/tablebuilder.js +288 -288
- package/lib/schema/tablecompiler.js +296 -296
- package/lib/seed/Seeder.js +203 -203
- package/lib/seed/seed-stub.js +13 -13
- package/lib/seed/stub/coffee.stub +9 -9
- package/lib/seed/stub/eg.stub +11 -11
- package/lib/seed/stub/js.stub +13 -13
- package/lib/seed/stub/ls.stub +11 -11
- package/lib/seed/stub/ts.stub +13 -13
- package/lib/transaction.js +363 -363
- package/lib/util/batchInsert.js +59 -59
- package/lib/util/delay.js +6 -6
- package/lib/util/fake-client.js +9 -9
- package/lib/util/finally-mixin.js +13 -13
- package/lib/util/fs.js +76 -76
- package/lib/util/import-file.js +13 -13
- package/lib/util/is-module-type.js +14 -14
- package/lib/util/is.js +32 -32
- package/lib/util/make-knex.js +338 -338
- package/lib/util/nanoid.js +29 -29
- package/lib/util/noop.js +1 -1
- package/lib/util/parse-connection.js +66 -66
- package/lib/util/save-async-stack.js +14 -14
- package/lib/util/template.js +52 -52
- package/lib/util/timeout.js +29 -29
- package/lib/util/timestamp.js +16 -16
- package/package.json +1 -1
- package/scripts/build.js +125 -125
- package/scripts/docker-compose.yml +111 -111
- package/scripts/next-release-howto.md +24 -24
- package/scripts/release.sh +34 -34
- package/scripts/runkit-example.js +34 -34
- package/scripts/stress-test/README.txt +18 -18
- package/scripts/stress-test/docker-compose.yml +47 -47
- package/scripts/stress-test/knex-stress-test.js +196 -196
- package/scripts/stress-test/mysql2-random-hanging-every-now-and-then.js +145 -145
- package/scripts/stress-test/mysql2-sudden-exit-without-error.js +100 -100
- package/scripts/stress-test/reconnect-test-mysql-based-drivers.js +184 -184
- package/types/index.d.ts +2249 -2249
- package/types/result.d.ts +27 -27
- package/types/tables.d.ts +4 -4
package/lib/config-resolver.js
CHANGED
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
const Client = require('./client');
|
|
2
|
-
const { SUPPORTED_CLIENTS } = require('./constants');
|
|
3
|
-
|
|
4
|
-
const parseConnection = require('./util/parse-connection');
|
|
5
|
-
const { resolveClientNameWithAliases } = require('./helpers');
|
|
6
|
-
|
|
7
|
-
function resolveConfig(config) {
|
|
8
|
-
let Dialect;
|
|
9
|
-
let resolvedConfig;
|
|
10
|
-
|
|
11
|
-
// If config is a string, try to parse it
|
|
12
|
-
const parsedConfig =
|
|
13
|
-
typeof config === 'string'
|
|
14
|
-
? Object.assign(parseConnection(config), arguments[2])
|
|
15
|
-
: config;
|
|
16
|
-
|
|
17
|
-
// If user provided no relevant parameters, use generic client
|
|
18
|
-
if (
|
|
19
|
-
arguments.length === 0 ||
|
|
20
|
-
(!parsedConfig.client && !parsedConfig.dialect)
|
|
21
|
-
) {
|
|
22
|
-
Dialect = Client;
|
|
23
|
-
}
|
|
24
|
-
// If user provided Client constructor as a parameter, use it
|
|
25
|
-
else if (
|
|
26
|
-
typeof parsedConfig.client === 'function' &&
|
|
27
|
-
parsedConfig.client.prototype instanceof Client
|
|
28
|
-
) {
|
|
29
|
-
Dialect = parsedConfig.client;
|
|
30
|
-
}
|
|
31
|
-
// If neither applies, let's assume user specified name of a client or dialect as a string
|
|
32
|
-
else {
|
|
33
|
-
const clientName = parsedConfig.client || parsedConfig.dialect;
|
|
34
|
-
if (!SUPPORTED_CLIENTS.includes(clientName)) {
|
|
35
|
-
throw new Error(
|
|
36
|
-
`knex: Unknown configuration option 'client' value ${clientName}. Note that it is case-sensitive, check documentation for supported values.`
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
const resolvedClientName = resolveClientNameWithAliases(clientName);
|
|
41
|
-
Dialect = require(`./dialects/${resolvedClientName}/index.js`);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
// If config connection parameter is passed as string, try to parse it
|
|
45
|
-
if (typeof parsedConfig.connection === 'string') {
|
|
46
|
-
resolvedConfig = Object.assign({}, parsedConfig, {
|
|
47
|
-
connection: parseConnection(parsedConfig.connection).connection,
|
|
48
|
-
});
|
|
49
|
-
} else {
|
|
50
|
-
resolvedConfig = Object.assign({}, parsedConfig);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return {
|
|
54
|
-
resolvedConfig,
|
|
55
|
-
Dialect,
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
module.exports = {
|
|
60
|
-
resolveConfig,
|
|
61
|
-
};
|
|
1
|
+
const Client = require('./client');
|
|
2
|
+
const { SUPPORTED_CLIENTS } = require('./constants');
|
|
3
|
+
|
|
4
|
+
const parseConnection = require('./util/parse-connection');
|
|
5
|
+
const { resolveClientNameWithAliases } = require('./helpers');
|
|
6
|
+
|
|
7
|
+
function resolveConfig(config) {
|
|
8
|
+
let Dialect;
|
|
9
|
+
let resolvedConfig;
|
|
10
|
+
|
|
11
|
+
// If config is a string, try to parse it
|
|
12
|
+
const parsedConfig =
|
|
13
|
+
typeof config === 'string'
|
|
14
|
+
? Object.assign(parseConnection(config), arguments[2])
|
|
15
|
+
: config;
|
|
16
|
+
|
|
17
|
+
// If user provided no relevant parameters, use generic client
|
|
18
|
+
if (
|
|
19
|
+
arguments.length === 0 ||
|
|
20
|
+
(!parsedConfig.client && !parsedConfig.dialect)
|
|
21
|
+
) {
|
|
22
|
+
Dialect = Client;
|
|
23
|
+
}
|
|
24
|
+
// If user provided Client constructor as a parameter, use it
|
|
25
|
+
else if (
|
|
26
|
+
typeof parsedConfig.client === 'function' &&
|
|
27
|
+
parsedConfig.client.prototype instanceof Client
|
|
28
|
+
) {
|
|
29
|
+
Dialect = parsedConfig.client;
|
|
30
|
+
}
|
|
31
|
+
// If neither applies, let's assume user specified name of a client or dialect as a string
|
|
32
|
+
else {
|
|
33
|
+
const clientName = parsedConfig.client || parsedConfig.dialect;
|
|
34
|
+
if (!SUPPORTED_CLIENTS.includes(clientName)) {
|
|
35
|
+
throw new Error(
|
|
36
|
+
`knex: Unknown configuration option 'client' value ${clientName}. Note that it is case-sensitive, check documentation for supported values.`
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const resolvedClientName = resolveClientNameWithAliases(clientName);
|
|
41
|
+
Dialect = require(`./dialects/${resolvedClientName}/index.js`);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// If config connection parameter is passed as string, try to parse it
|
|
45
|
+
if (typeof parsedConfig.connection === 'string') {
|
|
46
|
+
resolvedConfig = Object.assign({}, parsedConfig, {
|
|
47
|
+
connection: parseConnection(parsedConfig.connection).connection,
|
|
48
|
+
});
|
|
49
|
+
} else {
|
|
50
|
+
resolvedConfig = Object.assign({}, parsedConfig);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return {
|
|
54
|
+
resolvedConfig,
|
|
55
|
+
Dialect,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
module.exports = {
|
|
60
|
+
resolveConfig,
|
|
61
|
+
};
|
package/lib/constants.js
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
// The client names we'll allow in the `{name: lib}` pairing.
|
|
2
|
-
const CLIENT_ALIASES = Object.freeze({
|
|
3
|
-
pg: 'postgres',
|
|
4
|
-
postgresql: 'postgres',
|
|
5
|
-
sqlite: 'sqlite3',
|
|
6
|
-
});
|
|
7
|
-
|
|
8
|
-
const SUPPORTED_CLIENTS = Object.freeze(
|
|
9
|
-
[
|
|
10
|
-
'mssql',
|
|
11
|
-
'mysql',
|
|
12
|
-
'mysql2',
|
|
13
|
-
'oracledb',
|
|
14
|
-
'postgres',
|
|
15
|
-
'redshift',
|
|
16
|
-
'sqlite3',
|
|
17
|
-
].concat(Object.keys(CLIENT_ALIASES))
|
|
18
|
-
);
|
|
19
|
-
|
|
20
|
-
const POOL_CONFIG_OPTIONS = Object.freeze([
|
|
21
|
-
'maxWaitingClients',
|
|
22
|
-
'testOnBorrow',
|
|
23
|
-
'fifo',
|
|
24
|
-
'priorityRange',
|
|
25
|
-
'autostart',
|
|
26
|
-
'evictionRunIntervalMillis',
|
|
27
|
-
'numTestsPerRun',
|
|
28
|
-
'softIdleTimeoutMillis',
|
|
29
|
-
'Promise',
|
|
30
|
-
]);
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Regex that only matches comma's in strings that aren't wrapped in parentheses. Can be used to
|
|
34
|
-
* safely split strings like `id int, name string, body text, primary key (id, name)` into definition
|
|
35
|
-
* rows
|
|
36
|
-
*/
|
|
37
|
-
const COMMA_NO_PAREN_REGEX = /,[\s](?![^(]*\))/g;
|
|
38
|
-
|
|
39
|
-
module.exports = {
|
|
40
|
-
CLIENT_ALIASES,
|
|
41
|
-
SUPPORTED_CLIENTS,
|
|
42
|
-
POOL_CONFIG_OPTIONS,
|
|
43
|
-
COMMA_NO_PAREN_REGEX,
|
|
44
|
-
};
|
|
1
|
+
// The client names we'll allow in the `{name: lib}` pairing.
|
|
2
|
+
const CLIENT_ALIASES = Object.freeze({
|
|
3
|
+
pg: 'postgres',
|
|
4
|
+
postgresql: 'postgres',
|
|
5
|
+
sqlite: 'sqlite3',
|
|
6
|
+
});
|
|
7
|
+
|
|
8
|
+
const SUPPORTED_CLIENTS = Object.freeze(
|
|
9
|
+
[
|
|
10
|
+
'mssql',
|
|
11
|
+
'mysql',
|
|
12
|
+
'mysql2',
|
|
13
|
+
'oracledb',
|
|
14
|
+
'postgres',
|
|
15
|
+
'redshift',
|
|
16
|
+
'sqlite3',
|
|
17
|
+
].concat(Object.keys(CLIENT_ALIASES))
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
const POOL_CONFIG_OPTIONS = Object.freeze([
|
|
21
|
+
'maxWaitingClients',
|
|
22
|
+
'testOnBorrow',
|
|
23
|
+
'fifo',
|
|
24
|
+
'priorityRange',
|
|
25
|
+
'autostart',
|
|
26
|
+
'evictionRunIntervalMillis',
|
|
27
|
+
'numTestsPerRun',
|
|
28
|
+
'softIdleTimeoutMillis',
|
|
29
|
+
'Promise',
|
|
30
|
+
]);
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Regex that only matches comma's in strings that aren't wrapped in parentheses. Can be used to
|
|
34
|
+
* safely split strings like `id int, name string, body text, primary key (id, name)` into definition
|
|
35
|
+
* rows
|
|
36
|
+
*/
|
|
37
|
+
const COMMA_NO_PAREN_REGEX = /,[\s](?![^(]*\))/g;
|
|
38
|
+
|
|
39
|
+
module.exports = {
|
|
40
|
+
CLIENT_ALIASES,
|
|
41
|
+
SUPPORTED_CLIENTS,
|
|
42
|
+
POOL_CONFIG_OPTIONS,
|
|
43
|
+
COMMA_NO_PAREN_REGEX,
|
|
44
|
+
};
|