knex 2.4.1 → 2.4.2
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 +194 -194
- package/LICENSE +22 -22
- package/README.md +148 -148
- package/UPGRADING.md +233 -233
- package/bin/cli.js +473 -472
- package/bin/utils/cli-config-utils.js +210 -210
- package/bin/utils/constants.js +7 -7
- package/bin/utils/migrationsLister.js +37 -37
- package/knex.js +23 -23
- package/lib/builder-interface-augmenter.js +120 -120
- package/lib/client.js +475 -475
- package/lib/constants.js +61 -61
- package/lib/dialects/better-sqlite3/index.js +72 -72
- 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 +37 -37
- package/lib/dialects/cockroachdb/crdb-viewcompiler.js +15 -15
- package/lib/dialects/cockroachdb/index.js +86 -86
- package/lib/dialects/mssql/index.js +495 -495
- package/lib/dialects/mssql/mssql-formatter.js +34 -34
- package/lib/dialects/mssql/query/mssql-querycompiler.js +600 -600
- 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 +378 -378
- package/lib/dialects/mssql/schema/mssql-viewcompiler.js +55 -55
- package/lib/dialects/mssql/transaction.js +176 -176
- package/lib/dialects/mysql/index.js +201 -201
- package/lib/dialects/mysql/query/mysql-querycompiler.js +274 -274
- 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 +381 -381
- 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 +33 -33
- 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 +342 -342
- package/lib/dialects/oracle/schema/internal/incrementUtils.js +20 -20
- package/lib/dialects/oracle/schema/internal/trigger.js +135 -135
- 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 +122 -122
- package/lib/dialects/oracle/schema/oracle-tablecompiler.js +190 -190
- package/lib/dialects/oracle/utils.js +87 -87
- package/lib/dialects/oracledb/index.js +327 -327
- package/lib/dialects/oracledb/query/oracledb-querycompiler.js +481 -481
- package/lib/dialects/oracledb/schema/oracledb-columncompiler.js +55 -55
- 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 +12 -12
- package/lib/dialects/postgres/index.js +358 -358
- package/lib/dialects/postgres/query/pg-querybuilder.js +38 -38
- package/lib/dialects/postgres/query/pg-querycompiler.js +395 -395
- package/lib/dialects/postgres/schema/pg-columncompiler.js +156 -156
- package/lib/dialects/postgres/schema/pg-compiler.js +138 -136
- package/lib/dialects/postgres/schema/pg-tablecompiler.js +299 -299
- 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 +122 -122
- package/lib/dialects/redshift/schema/redshift-viewcompiler.js +11 -11
- package/lib/dialects/redshift/transaction.js +25 -25
- package/lib/dialects/sqlite3/execution/sqlite-transaction.js +18 -18
- package/lib/dialects/sqlite3/index.js +250 -250
- package/lib/dialects/sqlite3/query/sqlite-querybuilder.js +33 -33
- package/lib/dialects/sqlite3/query/sqlite-querycompiler.js +334 -334
- package/lib/dialects/sqlite3/schema/ddl.js +400 -400
- 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 +347 -347
- 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 +307 -307
- package/lib/execution/transaction.js +401 -401
- package/lib/formatter/formatterUtils.js +42 -42
- package/lib/formatter/rawFormatter.js +84 -84
- package/lib/formatter/wrappingFormatter.js +250 -250
- package/lib/formatter.js +25 -25
- package/lib/index.js +3 -3
- package/lib/knex-builder/FunctionHelper.js +54 -54
- 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 +340 -340
- package/lib/logger.js +76 -76
- package/lib/migrations/common/MigrationsLoader.js +36 -36
- package/lib/migrations/migrate/MigrationGenerator.js +84 -82
- package/lib/migrations/migrate/Migrator.js +598 -598
- 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 +135 -135
- package/lib/query/querybuilder.js +1794 -1794
- package/lib/query/querycompiler.js +1580 -1580
- package/lib/raw.js +139 -139
- package/lib/ref.js +39 -39
- package/lib/schema/builder.js +115 -114
- package/lib/schema/columnbuilder.js +146 -145
- 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 +376 -375
- package/lib/schema/tablecompiler.js +433 -433
- package/lib/schema/viewbuilder.js +92 -93
- 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/string.js +190 -190
- package/lib/util/timeout.js +29 -29
- package/package.json +8 -6
- package/scripts/build.js +125 -125
- package/scripts/clean.js +31 -29
- package/scripts/docker-compose.yml +152 -152
- package/scripts/next-release-howto.md +24 -24
- package/scripts/oracledb-install-driver-libs.sh +82 -82
- 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 +57 -57
- package/scripts/stress-test/knex-stress-test.js +208 -208
- 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/scripts/update_gitignore_for_tsc_output.js +90 -86
- package/types/index.d.ts +3233 -3233
- package/types/result.d.ts +27 -27
- package/types/tables.d.ts +4 -4
package/scripts/build.js
CHANGED
|
@@ -1,125 +1,125 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
const fs = require('fs');
|
|
3
|
-
const path = require('path');
|
|
4
|
-
const child_process = require('child_process');
|
|
5
|
-
const _ = require('lodash');
|
|
6
|
-
|
|
7
|
-
const exec = function (cmd, args) {
|
|
8
|
-
return new Promise(function (resolve, reject) {
|
|
9
|
-
// Execute command
|
|
10
|
-
const child = child_process.exec(cmd, {
|
|
11
|
-
cwd: process.cwd(),
|
|
12
|
-
env: process.env,
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
// Pass stdout and stderr
|
|
16
|
-
child.stdout.on('data', function (data) {
|
|
17
|
-
process.stdout.write(data.toString());
|
|
18
|
-
});
|
|
19
|
-
child.stderr.on('data', function (data) {
|
|
20
|
-
process.stderr.write(data.toString());
|
|
21
|
-
});
|
|
22
|
-
// Handle result
|
|
23
|
-
child.on('exit', function (code) {
|
|
24
|
-
if (code) reject(code);
|
|
25
|
-
else resolve();
|
|
26
|
-
});
|
|
27
|
-
child.on('error', reject);
|
|
28
|
-
});
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
const CWD = process.cwd();
|
|
32
|
-
const POSTINSTALL_BUILD_CWD = process.env.POSTINSTALL_BUILD_CWD;
|
|
33
|
-
|
|
34
|
-
// If we didn't have this check, then we'd be stuck in an infinite `postinstall`
|
|
35
|
-
// loop, since we run `npm install --only=dev` below, triggering another
|
|
36
|
-
// `postinstall`. We can't use `--ignore-scripts` because that ignores scripts
|
|
37
|
-
// on all the modules that get installed, too, which would break stuff. So
|
|
38
|
-
// instead, we set an environment variable, `POSTINSTALL_BUILD_CWD`, that keeps
|
|
39
|
-
// track of what we're installing. It's more than just a yes/no flag because
|
|
40
|
-
// the dev dependencies we're installing might use `postinstall-build` too, and
|
|
41
|
-
// we don't want the flag to prevent them from running.
|
|
42
|
-
if (POSTINSTALL_BUILD_CWD !== CWD) {
|
|
43
|
-
const BUILD_ARTIFACT = process.argv[2];
|
|
44
|
-
const BUILD_COMMAND = process.argv[3];
|
|
45
|
-
|
|
46
|
-
fs.stat(BUILD_ARTIFACT, function (err, stats) {
|
|
47
|
-
if (err || !(stats.isFile() || stats.isDirectory())) {
|
|
48
|
-
// This script will run again after we run `npm install` below. Set an
|
|
49
|
-
// environment variable to tell it to skip the check. Really we just want
|
|
50
|
-
// the execSync's `env` to be modified, but it's easier just modify and
|
|
51
|
-
// pass along the entire `process.env`.
|
|
52
|
-
process.env.POSTINSTALL_BUILD_CWD = CWD;
|
|
53
|
-
// We already have prod dependencies, that's what triggered `postinstall`
|
|
54
|
-
// in the first place. So only install dev.
|
|
55
|
-
|
|
56
|
-
// Fetch package.json
|
|
57
|
-
const pkgJson = require(path.join(CWD, 'package.json'));
|
|
58
|
-
const devDeps = pkgJson.devDependencies;
|
|
59
|
-
// Values listed under `buildDependencies` contain the dependency names
|
|
60
|
-
// that are required for `lib` building.
|
|
61
|
-
const buildDependencies = _.pick(devDeps, pkgJson.buildDependencies);
|
|
62
|
-
|
|
63
|
-
// Proceed only if there is something to install
|
|
64
|
-
if (!_.isEmpty(buildDependencies)) {
|
|
65
|
-
const opts = { env: process.env, stdio: 'inherit' };
|
|
66
|
-
|
|
67
|
-
console.log('Building Knex.js');
|
|
68
|
-
|
|
69
|
-
// Map all key (dependency) value (semver) pairs to
|
|
70
|
-
// "dependency@semver dependency@semver ..." string that can be used
|
|
71
|
-
// for `npm install` command
|
|
72
|
-
const installArgs = _(buildDependencies)
|
|
73
|
-
.pickBy(function (semver, dep) {
|
|
74
|
-
// Check if the dependency is already installed
|
|
75
|
-
try {
|
|
76
|
-
require(dep);
|
|
77
|
-
return false;
|
|
78
|
-
} catch (err) {
|
|
79
|
-
return true;
|
|
80
|
-
}
|
|
81
|
-
})
|
|
82
|
-
.map(function (semver, dep) {
|
|
83
|
-
// Format installable dependencies
|
|
84
|
-
return dep + '@' + semver;
|
|
85
|
-
})
|
|
86
|
-
.value()
|
|
87
|
-
.join(' ');
|
|
88
|
-
const needsDepInstallation = !_.isEmpty(installArgs);
|
|
89
|
-
const dependenciesInstalledQ = needsDepInstallation
|
|
90
|
-
? exec('npm install ' + installArgs, opts)
|
|
91
|
-
: Promise.resolve();
|
|
92
|
-
dependenciesInstalledQ
|
|
93
|
-
.then(function () {
|
|
94
|
-
console.log('✓');
|
|
95
|
-
// Don't need the flag anymore as `postinstall` was already run.
|
|
96
|
-
// Change it back so the environment is minimally changed for the
|
|
97
|
-
// remaining commands.
|
|
98
|
-
process.env.POSTINSTALL_BUILD_CWD = POSTINSTALL_BUILD_CWD;
|
|
99
|
-
console.log('Building compiled files (' + BUILD_COMMAND + ')');
|
|
100
|
-
return exec(BUILD_COMMAND, opts);
|
|
101
|
-
})
|
|
102
|
-
.catch(function (err) {
|
|
103
|
-
console.error(err);
|
|
104
|
-
process.exit(1);
|
|
105
|
-
})
|
|
106
|
-
.then(function () {
|
|
107
|
-
if (process.env.NODE_ENV === 'production') {
|
|
108
|
-
console.log('✓');
|
|
109
|
-
console.log('Pruning dev dependencies for production build');
|
|
110
|
-
return exec('npm prune --production', opts);
|
|
111
|
-
} else {
|
|
112
|
-
console.log('Skipping npm prune');
|
|
113
|
-
}
|
|
114
|
-
})
|
|
115
|
-
.then(function () {
|
|
116
|
-
console.log('✓');
|
|
117
|
-
})
|
|
118
|
-
.catch(function (err) {
|
|
119
|
-
console.error(err);
|
|
120
|
-
process.exit(1);
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
});
|
|
125
|
-
}
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
const fs = require('fs');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const child_process = require('child_process');
|
|
5
|
+
const _ = require('lodash');
|
|
6
|
+
|
|
7
|
+
const exec = function (cmd, args) {
|
|
8
|
+
return new Promise(function (resolve, reject) {
|
|
9
|
+
// Execute command
|
|
10
|
+
const child = child_process.exec(cmd, {
|
|
11
|
+
cwd: process.cwd(),
|
|
12
|
+
env: process.env,
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
// Pass stdout and stderr
|
|
16
|
+
child.stdout.on('data', function (data) {
|
|
17
|
+
process.stdout.write(data.toString());
|
|
18
|
+
});
|
|
19
|
+
child.stderr.on('data', function (data) {
|
|
20
|
+
process.stderr.write(data.toString());
|
|
21
|
+
});
|
|
22
|
+
// Handle result
|
|
23
|
+
child.on('exit', function (code) {
|
|
24
|
+
if (code) reject(code);
|
|
25
|
+
else resolve();
|
|
26
|
+
});
|
|
27
|
+
child.on('error', reject);
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const CWD = process.cwd();
|
|
32
|
+
const POSTINSTALL_BUILD_CWD = process.env.POSTINSTALL_BUILD_CWD;
|
|
33
|
+
|
|
34
|
+
// If we didn't have this check, then we'd be stuck in an infinite `postinstall`
|
|
35
|
+
// loop, since we run `npm install --only=dev` below, triggering another
|
|
36
|
+
// `postinstall`. We can't use `--ignore-scripts` because that ignores scripts
|
|
37
|
+
// on all the modules that get installed, too, which would break stuff. So
|
|
38
|
+
// instead, we set an environment variable, `POSTINSTALL_BUILD_CWD`, that keeps
|
|
39
|
+
// track of what we're installing. It's more than just a yes/no flag because
|
|
40
|
+
// the dev dependencies we're installing might use `postinstall-build` too, and
|
|
41
|
+
// we don't want the flag to prevent them from running.
|
|
42
|
+
if (POSTINSTALL_BUILD_CWD !== CWD) {
|
|
43
|
+
const BUILD_ARTIFACT = process.argv[2];
|
|
44
|
+
const BUILD_COMMAND = process.argv[3];
|
|
45
|
+
|
|
46
|
+
fs.stat(BUILD_ARTIFACT, function (err, stats) {
|
|
47
|
+
if (err || !(stats.isFile() || stats.isDirectory())) {
|
|
48
|
+
// This script will run again after we run `npm install` below. Set an
|
|
49
|
+
// environment variable to tell it to skip the check. Really we just want
|
|
50
|
+
// the execSync's `env` to be modified, but it's easier just modify and
|
|
51
|
+
// pass along the entire `process.env`.
|
|
52
|
+
process.env.POSTINSTALL_BUILD_CWD = CWD;
|
|
53
|
+
// We already have prod dependencies, that's what triggered `postinstall`
|
|
54
|
+
// in the first place. So only install dev.
|
|
55
|
+
|
|
56
|
+
// Fetch package.json
|
|
57
|
+
const pkgJson = require(path.join(CWD, 'package.json'));
|
|
58
|
+
const devDeps = pkgJson.devDependencies;
|
|
59
|
+
// Values listed under `buildDependencies` contain the dependency names
|
|
60
|
+
// that are required for `lib` building.
|
|
61
|
+
const buildDependencies = _.pick(devDeps, pkgJson.buildDependencies);
|
|
62
|
+
|
|
63
|
+
// Proceed only if there is something to install
|
|
64
|
+
if (!_.isEmpty(buildDependencies)) {
|
|
65
|
+
const opts = { env: process.env, stdio: 'inherit' };
|
|
66
|
+
|
|
67
|
+
console.log('Building Knex.js');
|
|
68
|
+
|
|
69
|
+
// Map all key (dependency) value (semver) pairs to
|
|
70
|
+
// "dependency@semver dependency@semver ..." string that can be used
|
|
71
|
+
// for `npm install` command
|
|
72
|
+
const installArgs = _(buildDependencies)
|
|
73
|
+
.pickBy(function (semver, dep) {
|
|
74
|
+
// Check if the dependency is already installed
|
|
75
|
+
try {
|
|
76
|
+
require(dep);
|
|
77
|
+
return false;
|
|
78
|
+
} catch (err) {
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
})
|
|
82
|
+
.map(function (semver, dep) {
|
|
83
|
+
// Format installable dependencies
|
|
84
|
+
return dep + '@' + semver;
|
|
85
|
+
})
|
|
86
|
+
.value()
|
|
87
|
+
.join(' ');
|
|
88
|
+
const needsDepInstallation = !_.isEmpty(installArgs);
|
|
89
|
+
const dependenciesInstalledQ = needsDepInstallation
|
|
90
|
+
? exec('npm install ' + installArgs, opts)
|
|
91
|
+
: Promise.resolve();
|
|
92
|
+
dependenciesInstalledQ
|
|
93
|
+
.then(function () {
|
|
94
|
+
console.log('✓');
|
|
95
|
+
// Don't need the flag anymore as `postinstall` was already run.
|
|
96
|
+
// Change it back so the environment is minimally changed for the
|
|
97
|
+
// remaining commands.
|
|
98
|
+
process.env.POSTINSTALL_BUILD_CWD = POSTINSTALL_BUILD_CWD;
|
|
99
|
+
console.log('Building compiled files (' + BUILD_COMMAND + ')');
|
|
100
|
+
return exec(BUILD_COMMAND, opts);
|
|
101
|
+
})
|
|
102
|
+
.catch(function (err) {
|
|
103
|
+
console.error(err);
|
|
104
|
+
process.exit(1);
|
|
105
|
+
})
|
|
106
|
+
.then(function () {
|
|
107
|
+
if (process.env.NODE_ENV === 'production') {
|
|
108
|
+
console.log('✓');
|
|
109
|
+
console.log('Pruning dev dependencies for production build');
|
|
110
|
+
return exec('npm prune --production', opts);
|
|
111
|
+
} else {
|
|
112
|
+
console.log('Skipping npm prune');
|
|
113
|
+
}
|
|
114
|
+
})
|
|
115
|
+
.then(function () {
|
|
116
|
+
console.log('✓');
|
|
117
|
+
})
|
|
118
|
+
.catch(function (err) {
|
|
119
|
+
console.error(err);
|
|
120
|
+
process.exit(1);
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
package/scripts/clean.js
CHANGED
|
@@ -1,29 +1,31 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
const fs = require('fs')
|
|
4
|
-
const path = require('path')
|
|
5
|
-
const { execSync } = require(
|
|
6
|
-
|
|
7
|
-
function main() {
|
|
8
|
-
const repoDir = path.dirname(__dirname)
|
|
9
|
-
const gitDir = path.join(repoDir, '.git')
|
|
10
|
-
const gitDirExists = doesDirectoryExist(gitDir)
|
|
11
|
-
if (!gitDirExists) {
|
|
12
|
-
console.log("No .git directory detected so can not clean 'lib/'. Exiting.")
|
|
13
|
-
process.exit(0)
|
|
14
|
-
}
|
|
15
|
-
console.log(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const { execSync } = require('child_process');
|
|
6
|
+
|
|
7
|
+
function main() {
|
|
8
|
+
const repoDir = path.dirname(__dirname);
|
|
9
|
+
const gitDir = path.join(repoDir, '.git');
|
|
10
|
+
const gitDirExists = doesDirectoryExist(gitDir);
|
|
11
|
+
if (!gitDirExists) {
|
|
12
|
+
console.log("No .git directory detected so can not clean 'lib/'. Exiting.");
|
|
13
|
+
process.exit(0);
|
|
14
|
+
}
|
|
15
|
+
console.log(
|
|
16
|
+
"Cleaning 'lib/' of outputted files from Typescript compilation ..."
|
|
17
|
+
);
|
|
18
|
+
const cmd = 'git clean -f -X lib/';
|
|
19
|
+
const output = execSync(cmd, { cwd: repoDir });
|
|
20
|
+
console.log(output.toString('utf8'));
|
|
21
|
+
console.log('Done');
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function doesDirectoryExist(p) {
|
|
25
|
+
if (fs.existsSync(p)) {
|
|
26
|
+
return fs.lstatSync(p).isDirectory();
|
|
27
|
+
}
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
main();
|
|
@@ -1,152 +1,152 @@
|
|
|
1
|
-
version: '3'
|
|
2
|
-
|
|
3
|
-
services:
|
|
4
|
-
mssql:
|
|
5
|
-
image: mcr.microsoft.com/mssql/server:2019-latest
|
|
6
|
-
ports:
|
|
7
|
-
- '21433:1433'
|
|
8
|
-
environment:
|
|
9
|
-
- ACCEPT_EULA=Y
|
|
10
|
-
- SA_PASSWORD=S0meVeryHardPassword
|
|
11
|
-
healthcheck:
|
|
12
|
-
test: /opt/mssql-tools/bin/sqlcmd -S mssql -U sa -P 'S0meVeryHardPassword' -Q 'select 1'
|
|
13
|
-
waitmssql:
|
|
14
|
-
image: mcr.microsoft.com/mssql/server:2017-latest
|
|
15
|
-
links:
|
|
16
|
-
- mssql
|
|
17
|
-
depends_on:
|
|
18
|
-
- mssql
|
|
19
|
-
entrypoint:
|
|
20
|
-
- bash
|
|
21
|
-
- -c
|
|
22
|
-
# https://docs.microsoft.com/en-us/sql/relational-databases/logs/control-transaction-durability?view=sql-server-ver15#bkmk_DbControl
|
|
23
|
-
- 'until /opt/mssql-tools/bin/sqlcmd -S mssql -U sa -P S0meVeryHardPassword -d master -Q "CREATE DATABASE knex_test; ALTER DATABASE knex_test SET ALLOW_SNAPSHOT_ISOLATION ON; ALTER DATABASE knex_test SET DELAYED_DURABILITY = FORCED"; do sleep 5; done'
|
|
24
|
-
|
|
25
|
-
mysql:
|
|
26
|
-
image: mysql
|
|
27
|
-
# https://dev.mysql.com/doc/refman/8.0/en/mysql-acid.html
|
|
28
|
-
# https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_flush_method
|
|
29
|
-
# nosync only for unix, edit for local start on other systems
|
|
30
|
-
command: --default-authentication-plugin=mysql_native_password --sync_binlog=0 --innodb_doublewrite=OFF --innodb-flush-log-at-trx-commit=0 --innodb-flush-method=nosync
|
|
31
|
-
ports:
|
|
32
|
-
- '23306:3306'
|
|
33
|
-
environment:
|
|
34
|
-
- MYSQL_ROOT_PASSWORD=testrootpassword
|
|
35
|
-
- MYSQL_DATABASE=knex_test
|
|
36
|
-
- MYSQL_USER=testuser
|
|
37
|
-
- MYSQL_PASSWORD=testpassword
|
|
38
|
-
healthcheck:
|
|
39
|
-
test:
|
|
40
|
-
[
|
|
41
|
-
'CMD',
|
|
42
|
-
'/usr/bin/mysql',
|
|
43
|
-
'-hlocalhost',
|
|
44
|
-
'-utestuser',
|
|
45
|
-
'-ptestpassword',
|
|
46
|
-
'-e',
|
|
47
|
-
'SELECT 1',
|
|
48
|
-
]
|
|
49
|
-
interval: 30s
|
|
50
|
-
timeout: 5s
|
|
51
|
-
retries: 3
|
|
52
|
-
restart: always
|
|
53
|
-
volumes:
|
|
54
|
-
- mysql_data:/var/lib/mysql
|
|
55
|
-
waitmysql:
|
|
56
|
-
image: mysql
|
|
57
|
-
links:
|
|
58
|
-
- mysql
|
|
59
|
-
depends_on:
|
|
60
|
-
- mysql
|
|
61
|
-
entrypoint:
|
|
62
|
-
- bash
|
|
63
|
-
- -c
|
|
64
|
-
- 'until /usr/bin/mysql -hmysql -utestuser -ptestpassword -e "SELECT 1"; do sleep 5; done'
|
|
65
|
-
|
|
66
|
-
postgres:
|
|
67
|
-
image: postgres:13-alpine
|
|
68
|
-
# see https://www.postgresql.org/docs/current/non-durability.html
|
|
69
|
-
command: '-c full_page_writes=off -c fsync=off -c synchronous_commit=off'
|
|
70
|
-
ports:
|
|
71
|
-
- '25432:5432'
|
|
72
|
-
environment:
|
|
73
|
-
- POSTGRES_USER=testuser
|
|
74
|
-
- POSTGRES_PASSWORD=knextest
|
|
75
|
-
- POSTGRES_DB=knex_test
|
|
76
|
-
waitpostgres:
|
|
77
|
-
image: postgres:13-alpine
|
|
78
|
-
links:
|
|
79
|
-
- postgres
|
|
80
|
-
depends_on:
|
|
81
|
-
- postgres
|
|
82
|
-
entrypoint:
|
|
83
|
-
- bash
|
|
84
|
-
- -c
|
|
85
|
-
- 'until /usr/local/bin/psql postgres://testuser:knextest@postgres/knex_test -c "SELECT 1"; do sleep 5; done'
|
|
86
|
-
|
|
87
|
-
cockroachdb:
|
|
88
|
-
image: cockroachdb/cockroach:latest-v21.2
|
|
89
|
-
container_name: crdb
|
|
90
|
-
hostname: crdb
|
|
91
|
-
command: start-single-node --cluster-name=example-single-node --insecure
|
|
92
|
-
ports:
|
|
93
|
-
- "26257:26257"
|
|
94
|
-
- "8080:8080"
|
|
95
|
-
|
|
96
|
-
waitcockroachdb:
|
|
97
|
-
container_name: crdb-init
|
|
98
|
-
hostname: crdb-init
|
|
99
|
-
image: timveil/cockroachdb-remote-client:latest
|
|
100
|
-
environment:
|
|
101
|
-
- COCKROACH_HOST=crdb:26257
|
|
102
|
-
- COCKROACH_INSECURE=true
|
|
103
|
-
- DATABASE_NAME=test
|
|
104
|
-
depends_on:
|
|
105
|
-
- cockroachdb
|
|
106
|
-
|
|
107
|
-
pgnative:
|
|
108
|
-
image: postgres:13-alpine
|
|
109
|
-
# see https://www.postgresql.org/docs/current/non-durability.html
|
|
110
|
-
command: '-c full_page_writes=off -c fsync=off -c synchronous_commit=off'
|
|
111
|
-
ports:
|
|
112
|
-
- '25433:5432'
|
|
113
|
-
environment:
|
|
114
|
-
- POSTGRES_USER=testuser
|
|
115
|
-
- POSTGRES_PASSWORD=knextest
|
|
116
|
-
- POSTGRES_DB=knex_test
|
|
117
|
-
waitpgnative:
|
|
118
|
-
image: postgres:13-alpine
|
|
119
|
-
links:
|
|
120
|
-
- pgnative
|
|
121
|
-
depends_on:
|
|
122
|
-
- pgnative
|
|
123
|
-
entrypoint:
|
|
124
|
-
- bash
|
|
125
|
-
- -c
|
|
126
|
-
- 'until /usr/local/bin/psql postgres://testuser:knextest@pgnative/knex_test -c "SELECT 1"; do sleep 5; done'
|
|
127
|
-
|
|
128
|
-
oracledb:
|
|
129
|
-
image: quillbuilduser/oracle-18-xe
|
|
130
|
-
container_name: oracledb_container
|
|
131
|
-
ports:
|
|
132
|
-
- '21521:1521'
|
|
133
|
-
environment:
|
|
134
|
-
- ORACLE_ALLOW_REMOTE=true
|
|
135
|
-
waitoracledb:
|
|
136
|
-
image: quillbuilduser/oracle-18-xe
|
|
137
|
-
links:
|
|
138
|
-
- oracledb
|
|
139
|
-
depends_on:
|
|
140
|
-
- oracledb
|
|
141
|
-
environment:
|
|
142
|
-
- ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE
|
|
143
|
-
entrypoint:
|
|
144
|
-
- bash
|
|
145
|
-
- -c
|
|
146
|
-
- 'until /opt/oracle/product/18c/dbhomeXE/bin/sqlplus -s sys/Oracle18@oracledb/XE as sysdba <<< "SELECT 13376411 FROM DUAL; exit;" | grep "13376411"; do echo "Could not connect to oracle... sleep for a while"; sleep 5; done'
|
|
147
|
-
|
|
148
|
-
volumes:
|
|
149
|
-
mysql_data:
|
|
150
|
-
driver_opts:
|
|
151
|
-
type: tmpfs
|
|
152
|
-
device: tmpfs
|
|
1
|
+
version: '3'
|
|
2
|
+
|
|
3
|
+
services:
|
|
4
|
+
mssql:
|
|
5
|
+
image: mcr.microsoft.com/mssql/server:2019-latest
|
|
6
|
+
ports:
|
|
7
|
+
- '21433:1433'
|
|
8
|
+
environment:
|
|
9
|
+
- ACCEPT_EULA=Y
|
|
10
|
+
- SA_PASSWORD=S0meVeryHardPassword
|
|
11
|
+
healthcheck:
|
|
12
|
+
test: /opt/mssql-tools/bin/sqlcmd -S mssql -U sa -P 'S0meVeryHardPassword' -Q 'select 1'
|
|
13
|
+
waitmssql:
|
|
14
|
+
image: mcr.microsoft.com/mssql/server:2017-latest
|
|
15
|
+
links:
|
|
16
|
+
- mssql
|
|
17
|
+
depends_on:
|
|
18
|
+
- mssql
|
|
19
|
+
entrypoint:
|
|
20
|
+
- bash
|
|
21
|
+
- -c
|
|
22
|
+
# https://docs.microsoft.com/en-us/sql/relational-databases/logs/control-transaction-durability?view=sql-server-ver15#bkmk_DbControl
|
|
23
|
+
- 'until /opt/mssql-tools/bin/sqlcmd -S mssql -U sa -P S0meVeryHardPassword -d master -Q "CREATE DATABASE knex_test; ALTER DATABASE knex_test SET ALLOW_SNAPSHOT_ISOLATION ON; ALTER DATABASE knex_test SET DELAYED_DURABILITY = FORCED"; do sleep 5; done'
|
|
24
|
+
|
|
25
|
+
mysql:
|
|
26
|
+
image: mysql
|
|
27
|
+
# https://dev.mysql.com/doc/refman/8.0/en/mysql-acid.html
|
|
28
|
+
# https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_flush_method
|
|
29
|
+
# nosync only for unix, edit for local start on other systems
|
|
30
|
+
command: --default-authentication-plugin=mysql_native_password --sync_binlog=0 --innodb_doublewrite=OFF --innodb-flush-log-at-trx-commit=0 --innodb-flush-method=nosync
|
|
31
|
+
ports:
|
|
32
|
+
- '23306:3306'
|
|
33
|
+
environment:
|
|
34
|
+
- MYSQL_ROOT_PASSWORD=testrootpassword
|
|
35
|
+
- MYSQL_DATABASE=knex_test
|
|
36
|
+
- MYSQL_USER=testuser
|
|
37
|
+
- MYSQL_PASSWORD=testpassword
|
|
38
|
+
healthcheck:
|
|
39
|
+
test:
|
|
40
|
+
[
|
|
41
|
+
'CMD',
|
|
42
|
+
'/usr/bin/mysql',
|
|
43
|
+
'-hlocalhost',
|
|
44
|
+
'-utestuser',
|
|
45
|
+
'-ptestpassword',
|
|
46
|
+
'-e',
|
|
47
|
+
'SELECT 1',
|
|
48
|
+
]
|
|
49
|
+
interval: 30s
|
|
50
|
+
timeout: 5s
|
|
51
|
+
retries: 3
|
|
52
|
+
restart: always
|
|
53
|
+
volumes:
|
|
54
|
+
- mysql_data:/var/lib/mysql
|
|
55
|
+
waitmysql:
|
|
56
|
+
image: mysql
|
|
57
|
+
links:
|
|
58
|
+
- mysql
|
|
59
|
+
depends_on:
|
|
60
|
+
- mysql
|
|
61
|
+
entrypoint:
|
|
62
|
+
- bash
|
|
63
|
+
- -c
|
|
64
|
+
- 'until /usr/bin/mysql -hmysql -utestuser -ptestpassword -e "SELECT 1"; do sleep 5; done'
|
|
65
|
+
|
|
66
|
+
postgres:
|
|
67
|
+
image: postgres:13-alpine
|
|
68
|
+
# see https://www.postgresql.org/docs/current/non-durability.html
|
|
69
|
+
command: '-c full_page_writes=off -c fsync=off -c synchronous_commit=off'
|
|
70
|
+
ports:
|
|
71
|
+
- '25432:5432'
|
|
72
|
+
environment:
|
|
73
|
+
- POSTGRES_USER=testuser
|
|
74
|
+
- POSTGRES_PASSWORD=knextest
|
|
75
|
+
- POSTGRES_DB=knex_test
|
|
76
|
+
waitpostgres:
|
|
77
|
+
image: postgres:13-alpine
|
|
78
|
+
links:
|
|
79
|
+
- postgres
|
|
80
|
+
depends_on:
|
|
81
|
+
- postgres
|
|
82
|
+
entrypoint:
|
|
83
|
+
- bash
|
|
84
|
+
- -c
|
|
85
|
+
- 'until /usr/local/bin/psql postgres://testuser:knextest@postgres/knex_test -c "SELECT 1"; do sleep 5; done'
|
|
86
|
+
|
|
87
|
+
cockroachdb:
|
|
88
|
+
image: cockroachdb/cockroach:latest-v21.2
|
|
89
|
+
container_name: crdb
|
|
90
|
+
hostname: crdb
|
|
91
|
+
command: start-single-node --cluster-name=example-single-node --insecure
|
|
92
|
+
ports:
|
|
93
|
+
- "26257:26257"
|
|
94
|
+
- "8080:8080"
|
|
95
|
+
|
|
96
|
+
waitcockroachdb:
|
|
97
|
+
container_name: crdb-init
|
|
98
|
+
hostname: crdb-init
|
|
99
|
+
image: timveil/cockroachdb-remote-client:latest
|
|
100
|
+
environment:
|
|
101
|
+
- COCKROACH_HOST=crdb:26257
|
|
102
|
+
- COCKROACH_INSECURE=true
|
|
103
|
+
- DATABASE_NAME=test
|
|
104
|
+
depends_on:
|
|
105
|
+
- cockroachdb
|
|
106
|
+
|
|
107
|
+
pgnative:
|
|
108
|
+
image: postgres:13-alpine
|
|
109
|
+
# see https://www.postgresql.org/docs/current/non-durability.html
|
|
110
|
+
command: '-c full_page_writes=off -c fsync=off -c synchronous_commit=off'
|
|
111
|
+
ports:
|
|
112
|
+
- '25433:5432'
|
|
113
|
+
environment:
|
|
114
|
+
- POSTGRES_USER=testuser
|
|
115
|
+
- POSTGRES_PASSWORD=knextest
|
|
116
|
+
- POSTGRES_DB=knex_test
|
|
117
|
+
waitpgnative:
|
|
118
|
+
image: postgres:13-alpine
|
|
119
|
+
links:
|
|
120
|
+
- pgnative
|
|
121
|
+
depends_on:
|
|
122
|
+
- pgnative
|
|
123
|
+
entrypoint:
|
|
124
|
+
- bash
|
|
125
|
+
- -c
|
|
126
|
+
- 'until /usr/local/bin/psql postgres://testuser:knextest@pgnative/knex_test -c "SELECT 1"; do sleep 5; done'
|
|
127
|
+
|
|
128
|
+
oracledb:
|
|
129
|
+
image: quillbuilduser/oracle-18-xe
|
|
130
|
+
container_name: oracledb_container
|
|
131
|
+
ports:
|
|
132
|
+
- '21521:1521'
|
|
133
|
+
environment:
|
|
134
|
+
- ORACLE_ALLOW_REMOTE=true
|
|
135
|
+
waitoracledb:
|
|
136
|
+
image: quillbuilduser/oracle-18-xe
|
|
137
|
+
links:
|
|
138
|
+
- oracledb
|
|
139
|
+
depends_on:
|
|
140
|
+
- oracledb
|
|
141
|
+
environment:
|
|
142
|
+
- ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE
|
|
143
|
+
entrypoint:
|
|
144
|
+
- bash
|
|
145
|
+
- -c
|
|
146
|
+
- 'until /opt/oracle/product/18c/dbhomeXE/bin/sqlplus -s sys/Oracle18@oracledb/XE as sysdba <<< "SELECT 13376411 FROM DUAL; exit;" | grep "13376411"; do echo "Could not connect to oracle... sleep for a while"; sleep 5; done'
|
|
147
|
+
|
|
148
|
+
volumes:
|
|
149
|
+
mysql_data:
|
|
150
|
+
driver_opts:
|
|
151
|
+
type: tmpfs
|
|
152
|
+
device: tmpfs
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
# Checklist for crating knex @next releases
|
|
2
|
-
|
|
3
|
-
1. Go through all commits since the last release and add them to CHANGELOG.md under unreleased changes section.
|
|
4
|
-
2. Commit changes to CHANGELOG
|
|
5
|
-
3. Check that master compiles and tests are running fine (check also that CI tests are passing)
|
|
6
|
-
|
|
7
|
-
```sh
|
|
8
|
-
npm run build
|
|
9
|
-
|
|
10
|
-
# run bunch of tests, but skipping coverage which doesn't really work locally at least
|
|
11
|
-
npm plaintest
|
|
12
|
-
npm bin_test
|
|
13
|
-
npm oracledb:test
|
|
14
|
-
npm mssql:init
|
|
15
|
-
npm mssql:test
|
|
16
|
-
npm mssql:destroy
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
4. Update package.json version to be e.g. 0.16.0-next1 or 0.16.0-next2 and commit yo master
|
|
20
|
-
5. Publish it under @next tag
|
|
21
|
-
|
|
22
|
-
```sh
|
|
23
|
-
npm publish --tag next
|
|
24
|
-
```
|
|
1
|
+
# Checklist for crating knex @next releases
|
|
2
|
+
|
|
3
|
+
1. Go through all commits since the last release and add them to CHANGELOG.md under unreleased changes section.
|
|
4
|
+
2. Commit changes to CHANGELOG
|
|
5
|
+
3. Check that master compiles and tests are running fine (check also that CI tests are passing)
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
npm run build
|
|
9
|
+
|
|
10
|
+
# run bunch of tests, but skipping coverage which doesn't really work locally at least
|
|
11
|
+
npm plaintest
|
|
12
|
+
npm bin_test
|
|
13
|
+
npm oracledb:test
|
|
14
|
+
npm mssql:init
|
|
15
|
+
npm mssql:test
|
|
16
|
+
npm mssql:destroy
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
4. Update package.json version to be e.g. 0.16.0-next1 or 0.16.0-next2 and commit yo master
|
|
20
|
+
5. Publish it under @next tag
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
npm publish --tag next
|
|
24
|
+
```
|