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,150 +1,150 @@
|
|
|
1
|
-
services:
|
|
2
|
-
mssql:
|
|
3
|
-
image: mcr.microsoft.com/mssql/server:2019-latest
|
|
4
|
-
ports:
|
|
5
|
-
- '21433:1433'
|
|
6
|
-
environment:
|
|
7
|
-
- ACCEPT_EULA=Y
|
|
8
|
-
- SA_PASSWORD=S0meVeryHardPassword
|
|
9
|
-
healthcheck:
|
|
10
|
-
test: /opt/mssql-tools/bin/sqlcmd -S mssql -U sa -P 'S0meVeryHardPassword' -Q 'select 1'
|
|
11
|
-
waitmssql:
|
|
12
|
-
image: mcr.microsoft.com/mssql/server:2017-latest
|
|
13
|
-
links:
|
|
14
|
-
- mssql
|
|
15
|
-
depends_on:
|
|
16
|
-
- mssql
|
|
17
|
-
entrypoint:
|
|
18
|
-
- bash
|
|
19
|
-
- -c
|
|
20
|
-
# https://docs.microsoft.com/en-us/sql/relational-databases/logs/control-transaction-durability?view=sql-server-ver15#bkmk_DbControl
|
|
21
|
-
- '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'
|
|
22
|
-
|
|
23
|
-
mysql:
|
|
24
|
-
image: mysql:8.0.40
|
|
25
|
-
# https://dev.mysql.com/doc/refman/8.0/en/mysql-acid.html
|
|
26
|
-
# https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_flush_method
|
|
27
|
-
# nosync only for unix, edit for local start on other systems
|
|
28
|
-
command: --default-authentication-plugin=mysql_native_password --sync_binlog=0 --innodb_doublewrite=OFF --innodb-flush-log-at-trx-commit=0 --innodb-flush-method=nosync
|
|
29
|
-
ports:
|
|
30
|
-
- '23306:3306'
|
|
31
|
-
environment:
|
|
32
|
-
- MYSQL_ROOT_PASSWORD=testrootpassword
|
|
33
|
-
- MYSQL_DATABASE=knex_test
|
|
34
|
-
- MYSQL_USER=testuser
|
|
35
|
-
- MYSQL_PASSWORD=testpassword
|
|
36
|
-
healthcheck:
|
|
37
|
-
test:
|
|
38
|
-
[
|
|
39
|
-
'CMD',
|
|
40
|
-
'/usr/bin/mysql',
|
|
41
|
-
'-hlocalhost',
|
|
42
|
-
'-utestuser',
|
|
43
|
-
'-ptestpassword',
|
|
44
|
-
'-e',
|
|
45
|
-
'SELECT 1',
|
|
46
|
-
]
|
|
47
|
-
interval: 30s
|
|
48
|
-
timeout: 5s
|
|
49
|
-
retries: 3
|
|
50
|
-
restart: always
|
|
51
|
-
volumes:
|
|
52
|
-
- mysql_data:/var/lib/mysql
|
|
53
|
-
waitmysql:
|
|
54
|
-
image: mysql:8.0.40
|
|
55
|
-
links:
|
|
56
|
-
- mysql
|
|
57
|
-
depends_on:
|
|
58
|
-
- mysql
|
|
59
|
-
entrypoint:
|
|
60
|
-
- bash
|
|
61
|
-
- -c
|
|
62
|
-
- 'until /usr/bin/mysql -hmysql -utestuser -ptestpassword -e "SELECT 1"; do sleep 5; done'
|
|
63
|
-
|
|
64
|
-
postgres:
|
|
65
|
-
image: postgres:17-alpine
|
|
66
|
-
# see https://www.postgresql.org/docs/current/non-durability.html
|
|
67
|
-
command: '-c full_page_writes=off -c fsync=off -c synchronous_commit=off'
|
|
68
|
-
ports:
|
|
69
|
-
- '25432:5432'
|
|
70
|
-
environment:
|
|
71
|
-
- POSTGRES_USER=testuser
|
|
72
|
-
- POSTGRES_PASSWORD=knextest
|
|
73
|
-
- POSTGRES_DB=knex_test
|
|
74
|
-
waitpostgres:
|
|
75
|
-
image: postgres:17-alpine
|
|
76
|
-
links:
|
|
77
|
-
- postgres
|
|
78
|
-
depends_on:
|
|
79
|
-
- postgres
|
|
80
|
-
entrypoint:
|
|
81
|
-
- bash
|
|
82
|
-
- -c
|
|
83
|
-
- 'until /usr/local/bin/psql postgres://testuser:knextest@postgres/knex_test -c "SELECT 1"; do sleep 5; done'
|
|
84
|
-
|
|
85
|
-
cockroachdb:
|
|
86
|
-
image: cockroachdb/cockroach:latest-v23.2
|
|
87
|
-
container_name: crdb
|
|
88
|
-
hostname: crdb
|
|
89
|
-
command: start-single-node --cluster-name=example-single-node --insecure --store=type=mem,size=0.25
|
|
90
|
-
ports:
|
|
91
|
-
- '26257:26257'
|
|
92
|
-
- '8080:8080'
|
|
93
|
-
|
|
94
|
-
waitcockroachdb:
|
|
95
|
-
container_name: crdb-init
|
|
96
|
-
hostname: crdb-init
|
|
97
|
-
image: timveil/cockroachdb-remote-client:latest
|
|
98
|
-
environment:
|
|
99
|
-
- COCKROACH_HOST=crdb:26257
|
|
100
|
-
- COCKROACH_INSECURE=true
|
|
101
|
-
- DATABASE_NAME=test
|
|
102
|
-
depends_on:
|
|
103
|
-
- cockroachdb
|
|
104
|
-
|
|
105
|
-
pgnative:
|
|
106
|
-
image: postgres:17-alpine
|
|
107
|
-
# see https://www.postgresql.org/docs/current/non-durability.html
|
|
108
|
-
command: '-c full_page_writes=off -c fsync=off -c synchronous_commit=off'
|
|
109
|
-
ports:
|
|
110
|
-
- '25433:5432'
|
|
111
|
-
environment:
|
|
112
|
-
- POSTGRES_USER=testuser
|
|
113
|
-
- POSTGRES_PASSWORD=knextest
|
|
114
|
-
- POSTGRES_DB=knex_test
|
|
115
|
-
waitpgnative:
|
|
116
|
-
image: postgres:17-alpine
|
|
117
|
-
links:
|
|
118
|
-
- pgnative
|
|
119
|
-
depends_on:
|
|
120
|
-
- pgnative
|
|
121
|
-
entrypoint:
|
|
122
|
-
- bash
|
|
123
|
-
- -c
|
|
124
|
-
- 'until /usr/local/bin/psql postgres://testuser:knextest@pgnative/knex_test -c "SELECT 1"; do sleep 5; done'
|
|
125
|
-
|
|
126
|
-
oracledb:
|
|
127
|
-
image: quillbuilduser/oracle-18-xe
|
|
128
|
-
container_name: oracledb_container
|
|
129
|
-
ports:
|
|
130
|
-
- '21521:1521'
|
|
131
|
-
environment:
|
|
132
|
-
- ORACLE_ALLOW_REMOTE=true
|
|
133
|
-
waitoracledb:
|
|
134
|
-
image: quillbuilduser/oracle-18-xe
|
|
135
|
-
links:
|
|
136
|
-
- oracledb
|
|
137
|
-
depends_on:
|
|
138
|
-
- oracledb
|
|
139
|
-
environment:
|
|
140
|
-
- ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE
|
|
141
|
-
entrypoint:
|
|
142
|
-
- bash
|
|
143
|
-
- -c
|
|
144
|
-
- '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'
|
|
145
|
-
|
|
146
|
-
volumes:
|
|
147
|
-
mysql_data:
|
|
148
|
-
driver_opts:
|
|
149
|
-
type: tmpfs
|
|
150
|
-
device: tmpfs
|
|
1
|
+
services:
|
|
2
|
+
mssql:
|
|
3
|
+
image: mcr.microsoft.com/mssql/server:2019-latest
|
|
4
|
+
ports:
|
|
5
|
+
- '21433:1433'
|
|
6
|
+
environment:
|
|
7
|
+
- ACCEPT_EULA=Y
|
|
8
|
+
- SA_PASSWORD=S0meVeryHardPassword
|
|
9
|
+
healthcheck:
|
|
10
|
+
test: /opt/mssql-tools/bin/sqlcmd -S mssql -U sa -P 'S0meVeryHardPassword' -Q 'select 1'
|
|
11
|
+
waitmssql:
|
|
12
|
+
image: mcr.microsoft.com/mssql/server:2017-latest
|
|
13
|
+
links:
|
|
14
|
+
- mssql
|
|
15
|
+
depends_on:
|
|
16
|
+
- mssql
|
|
17
|
+
entrypoint:
|
|
18
|
+
- bash
|
|
19
|
+
- -c
|
|
20
|
+
# https://docs.microsoft.com/en-us/sql/relational-databases/logs/control-transaction-durability?view=sql-server-ver15#bkmk_DbControl
|
|
21
|
+
- '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'
|
|
22
|
+
|
|
23
|
+
mysql:
|
|
24
|
+
image: mysql:8.0.40
|
|
25
|
+
# https://dev.mysql.com/doc/refman/8.0/en/mysql-acid.html
|
|
26
|
+
# https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_flush_method
|
|
27
|
+
# nosync only for unix, edit for local start on other systems
|
|
28
|
+
command: --default-authentication-plugin=mysql_native_password --sync_binlog=0 --innodb_doublewrite=OFF --innodb-flush-log-at-trx-commit=0 --innodb-flush-method=nosync
|
|
29
|
+
ports:
|
|
30
|
+
- '23306:3306'
|
|
31
|
+
environment:
|
|
32
|
+
- MYSQL_ROOT_PASSWORD=testrootpassword
|
|
33
|
+
- MYSQL_DATABASE=knex_test
|
|
34
|
+
- MYSQL_USER=testuser
|
|
35
|
+
- MYSQL_PASSWORD=testpassword
|
|
36
|
+
healthcheck:
|
|
37
|
+
test:
|
|
38
|
+
[
|
|
39
|
+
'CMD',
|
|
40
|
+
'/usr/bin/mysql',
|
|
41
|
+
'-hlocalhost',
|
|
42
|
+
'-utestuser',
|
|
43
|
+
'-ptestpassword',
|
|
44
|
+
'-e',
|
|
45
|
+
'SELECT 1',
|
|
46
|
+
]
|
|
47
|
+
interval: 30s
|
|
48
|
+
timeout: 5s
|
|
49
|
+
retries: 3
|
|
50
|
+
restart: always
|
|
51
|
+
volumes:
|
|
52
|
+
- mysql_data:/var/lib/mysql
|
|
53
|
+
waitmysql:
|
|
54
|
+
image: mysql:8.0.40
|
|
55
|
+
links:
|
|
56
|
+
- mysql
|
|
57
|
+
depends_on:
|
|
58
|
+
- mysql
|
|
59
|
+
entrypoint:
|
|
60
|
+
- bash
|
|
61
|
+
- -c
|
|
62
|
+
- 'until /usr/bin/mysql -hmysql -utestuser -ptestpassword -e "SELECT 1"; do sleep 5; done'
|
|
63
|
+
|
|
64
|
+
postgres:
|
|
65
|
+
image: postgres:17-alpine
|
|
66
|
+
# see https://www.postgresql.org/docs/current/non-durability.html
|
|
67
|
+
command: '-c full_page_writes=off -c fsync=off -c synchronous_commit=off'
|
|
68
|
+
ports:
|
|
69
|
+
- '25432:5432'
|
|
70
|
+
environment:
|
|
71
|
+
- POSTGRES_USER=testuser
|
|
72
|
+
- POSTGRES_PASSWORD=knextest
|
|
73
|
+
- POSTGRES_DB=knex_test
|
|
74
|
+
waitpostgres:
|
|
75
|
+
image: postgres:17-alpine
|
|
76
|
+
links:
|
|
77
|
+
- postgres
|
|
78
|
+
depends_on:
|
|
79
|
+
- postgres
|
|
80
|
+
entrypoint:
|
|
81
|
+
- bash
|
|
82
|
+
- -c
|
|
83
|
+
- 'until /usr/local/bin/psql postgres://testuser:knextest@postgres/knex_test -c "SELECT 1"; do sleep 5; done'
|
|
84
|
+
|
|
85
|
+
cockroachdb:
|
|
86
|
+
image: cockroachdb/cockroach:latest-v23.2
|
|
87
|
+
container_name: crdb
|
|
88
|
+
hostname: crdb
|
|
89
|
+
command: start-single-node --cluster-name=example-single-node --insecure --store=type=mem,size=0.25
|
|
90
|
+
ports:
|
|
91
|
+
- '26257:26257'
|
|
92
|
+
- '8080:8080'
|
|
93
|
+
|
|
94
|
+
waitcockroachdb:
|
|
95
|
+
container_name: crdb-init
|
|
96
|
+
hostname: crdb-init
|
|
97
|
+
image: timveil/cockroachdb-remote-client:latest
|
|
98
|
+
environment:
|
|
99
|
+
- COCKROACH_HOST=crdb:26257
|
|
100
|
+
- COCKROACH_INSECURE=true
|
|
101
|
+
- DATABASE_NAME=test
|
|
102
|
+
depends_on:
|
|
103
|
+
- cockroachdb
|
|
104
|
+
|
|
105
|
+
pgnative:
|
|
106
|
+
image: postgres:17-alpine
|
|
107
|
+
# see https://www.postgresql.org/docs/current/non-durability.html
|
|
108
|
+
command: '-c full_page_writes=off -c fsync=off -c synchronous_commit=off'
|
|
109
|
+
ports:
|
|
110
|
+
- '25433:5432'
|
|
111
|
+
environment:
|
|
112
|
+
- POSTGRES_USER=testuser
|
|
113
|
+
- POSTGRES_PASSWORD=knextest
|
|
114
|
+
- POSTGRES_DB=knex_test
|
|
115
|
+
waitpgnative:
|
|
116
|
+
image: postgres:17-alpine
|
|
117
|
+
links:
|
|
118
|
+
- pgnative
|
|
119
|
+
depends_on:
|
|
120
|
+
- pgnative
|
|
121
|
+
entrypoint:
|
|
122
|
+
- bash
|
|
123
|
+
- -c
|
|
124
|
+
- 'until /usr/local/bin/psql postgres://testuser:knextest@pgnative/knex_test -c "SELECT 1"; do sleep 5; done'
|
|
125
|
+
|
|
126
|
+
oracledb:
|
|
127
|
+
image: quillbuilduser/oracle-18-xe
|
|
128
|
+
container_name: oracledb_container
|
|
129
|
+
ports:
|
|
130
|
+
- '21521:1521'
|
|
131
|
+
environment:
|
|
132
|
+
- ORACLE_ALLOW_REMOTE=true
|
|
133
|
+
waitoracledb:
|
|
134
|
+
image: quillbuilduser/oracle-18-xe
|
|
135
|
+
links:
|
|
136
|
+
- oracledb
|
|
137
|
+
depends_on:
|
|
138
|
+
- oracledb
|
|
139
|
+
environment:
|
|
140
|
+
- ORACLE_HOME=/opt/oracle/product/18c/dbhomeXE
|
|
141
|
+
entrypoint:
|
|
142
|
+
- bash
|
|
143
|
+
- -c
|
|
144
|
+
- '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'
|
|
145
|
+
|
|
146
|
+
volumes:
|
|
147
|
+
mysql_data:
|
|
148
|
+
driver_opts:
|
|
149
|
+
type: tmpfs
|
|
150
|
+
device: tmpfs
|
|
@@ -1,55 +1,55 @@
|
|
|
1
|
-
const { readFileSync, writeFileSync } = require('fs');
|
|
2
|
-
const { resolve } = require('path');
|
|
3
|
-
const { greenBright, redBright } = require('colorette');
|
|
4
|
-
|
|
5
|
-
const CHANGELOG = resolve(__dirname, '..', 'CHANGELOG.md');
|
|
6
|
-
const lines = readFileSync(CHANGELOG, 'utf-8').split(/\r?\n/);
|
|
7
|
-
|
|
8
|
-
// ensure that every `#NNNN` is a markdown link
|
|
9
|
-
// to https://github.com/knex/knex/issues/NNNN
|
|
10
|
-
//
|
|
11
|
-
// https://docs.github.com/en/rest/issues/issues?apiVersion=2022-11-28#list-repository-issues
|
|
12
|
-
//
|
|
13
|
-
// GitHub's REST API considers every pull request an issue, but not every issue is a pull request.
|
|
14
|
-
// For this reason, "Issues" endpoints may return both issues and pull requests in the response.
|
|
15
|
-
//
|
|
16
|
-
// Web links to /issues/NNNN will redirect to /pull/NNNN
|
|
17
|
-
|
|
18
|
-
// match first: a markdown link, then: #NNNN
|
|
19
|
-
const markdownRE = /\[#(\d+)\]\(([^)]+)\)/;
|
|
20
|
-
const referenceRE = /#(\d+)/;
|
|
21
|
-
const regex = new RegExp(`${markdownRE.source}|${referenceRE.source}`, 'g');
|
|
22
|
-
// eslint-disable-next-line no-control-regex
|
|
23
|
-
const ansiRegex = /\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g;
|
|
24
|
-
const stripAnsi = (str) => str.replace(ansiRegex, '');
|
|
25
|
-
|
|
26
|
-
for (let i = 0; i < lines.length; i++) {
|
|
27
|
-
const line = lines[i];
|
|
28
|
-
|
|
29
|
-
const newLine = line.replace(regex, (match, anchor, url, issueno) => {
|
|
30
|
-
if (issueno !== undefined) {
|
|
31
|
-
return `${greenBright('[#')}${issueno}${greenBright(
|
|
32
|
-
`](https://github.com/knex/knex/issues/${issueno})`
|
|
33
|
-
)}`;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (url !== undefined && anchor !== undefined) {
|
|
37
|
-
if (!url.endsWith(`/${anchor}`)) {
|
|
38
|
-
console.warn('Mismatched URL:', url);
|
|
39
|
-
return `${redBright(
|
|
40
|
-
`[#${anchor}](https://github.com/knex/knex/issues/${anchor})`
|
|
41
|
-
)}`;
|
|
42
|
-
} else {
|
|
43
|
-
return match;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
throw new Error('Regex failed');
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
if (line !== newLine) {
|
|
50
|
-
lines[i] = stripAnsi(newLine);
|
|
51
|
-
console.log(newLine);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
writeFileSync(CHANGELOG, lines.join('\n'), 'utf-8');
|
|
1
|
+
const { readFileSync, writeFileSync } = require('fs');
|
|
2
|
+
const { resolve } = require('path');
|
|
3
|
+
const { greenBright, redBright } = require('colorette');
|
|
4
|
+
|
|
5
|
+
const CHANGELOG = resolve(__dirname, '..', 'CHANGELOG.md');
|
|
6
|
+
const lines = readFileSync(CHANGELOG, 'utf-8').split(/\r?\n/);
|
|
7
|
+
|
|
8
|
+
// ensure that every `#NNNN` is a markdown link
|
|
9
|
+
// to https://github.com/knex/knex/issues/NNNN
|
|
10
|
+
//
|
|
11
|
+
// https://docs.github.com/en/rest/issues/issues?apiVersion=2022-11-28#list-repository-issues
|
|
12
|
+
//
|
|
13
|
+
// GitHub's REST API considers every pull request an issue, but not every issue is a pull request.
|
|
14
|
+
// For this reason, "Issues" endpoints may return both issues and pull requests in the response.
|
|
15
|
+
//
|
|
16
|
+
// Web links to /issues/NNNN will redirect to /pull/NNNN
|
|
17
|
+
|
|
18
|
+
// match first: a markdown link, then: #NNNN
|
|
19
|
+
const markdownRE = /\[#(\d+)\]\(([^)]+)\)/;
|
|
20
|
+
const referenceRE = /#(\d+)/;
|
|
21
|
+
const regex = new RegExp(`${markdownRE.source}|${referenceRE.source}`, 'g');
|
|
22
|
+
// eslint-disable-next-line no-control-regex
|
|
23
|
+
const ansiRegex = /\x1B(?:[@-Z\\-_]|\[[0-?]*[ -/]*[@-~])/g;
|
|
24
|
+
const stripAnsi = (str) => str.replace(ansiRegex, '');
|
|
25
|
+
|
|
26
|
+
for (let i = 0; i < lines.length; i++) {
|
|
27
|
+
const line = lines[i];
|
|
28
|
+
|
|
29
|
+
const newLine = line.replace(regex, (match, anchor, url, issueno) => {
|
|
30
|
+
if (issueno !== undefined) {
|
|
31
|
+
return `${greenBright('[#')}${issueno}${greenBright(
|
|
32
|
+
`](https://github.com/knex/knex/issues/${issueno})`
|
|
33
|
+
)}`;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (url !== undefined && anchor !== undefined) {
|
|
37
|
+
if (!url.endsWith(`/${anchor}`)) {
|
|
38
|
+
console.warn('Mismatched URL:', url);
|
|
39
|
+
return `${redBright(
|
|
40
|
+
`[#${anchor}](https://github.com/knex/knex/issues/${anchor})`
|
|
41
|
+
)}`;
|
|
42
|
+
} else {
|
|
43
|
+
return match;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
throw new Error('Regex failed');
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
if (line !== newLine) {
|
|
50
|
+
lines[i] = stripAnsi(newLine);
|
|
51
|
+
console.log(newLine);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
writeFileSync(CHANGELOG, lines.join('\n'), 'utf-8');
|
|
@@ -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
|
+
```
|
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
#!/usr/bin/env bash
|
|
2
|
-
|
|
3
|
-
# Exit on error
|
|
4
|
-
set -e
|
|
5
|
-
|
|
6
|
-
# Directory constants
|
|
7
|
-
repo_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." >/dev/null 2>&1 && pwd )"
|
|
8
|
-
exec_dir="$( pwd )"
|
|
9
|
-
script_dir="$repo_dir/scripts/"
|
|
10
|
-
docker_compose_file="$repo_dir/scripts/docker-compose.yml"
|
|
11
|
-
|
|
12
|
-
help_text="
|
|
13
|
-
Helper script to install oracle drivers on local linux machine from Oracle
|
|
14
|
-
database container.
|
|
15
|
-
|
|
16
|
-
oracledb-install-driver-libs.sh COMMAND
|
|
17
|
-
|
|
18
|
-
COMMAND:
|
|
19
|
-
run: Do the driver install.
|
|
20
|
-
dry-run: Do the driver install but do not save any files.
|
|
21
|
-
help: Print this menu.
|
|
22
|
-
|
|
23
|
-
NOTES FOR USAGE:
|
|
24
|
-
1. This script is tested to work on Ubuntu 18.04 LTS.
|
|
25
|
-
2. This script requires you to have sudo capabilities so to use ldconfig.
|
|
26
|
-
"
|
|
27
|
-
|
|
28
|
-
# Main script logic
|
|
29
|
-
cmd="$1"
|
|
30
|
-
|
|
31
|
-
function main () {
|
|
32
|
-
case "$1" in
|
|
33
|
-
"run")
|
|
34
|
-
printf "Starting run ...\n"
|
|
35
|
-
do_install true
|
|
36
|
-
exit 0
|
|
37
|
-
;;
|
|
38
|
-
"dry-run")
|
|
39
|
-
printf "Starting dry-run ...\n"
|
|
40
|
-
do_install false
|
|
41
|
-
exit 0
|
|
42
|
-
;;
|
|
43
|
-
"help"|"--help"|"-h"|"")
|
|
44
|
-
printf "$help_text"
|
|
45
|
-
exit 0
|
|
46
|
-
;;
|
|
47
|
-
*)
|
|
48
|
-
printf "Unsupported command: $cmd\n"
|
|
49
|
-
printf "Try running with 'help' to see supported commands.\n"
|
|
50
|
-
exit 1
|
|
51
|
-
;;
|
|
52
|
-
esac
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
function do_install () {
|
|
56
|
-
do_changes="$1"
|
|
57
|
-
printf "\nEnsuring oracle containers from docker compose are up ...\n"
|
|
58
|
-
docker compose -f "$docker_compose_file" up --build -d oracledb
|
|
59
|
-
docker compose -f "$docker_compose_file" up waitoracledb
|
|
60
|
-
printf "\nSleeping an extra 15 seconds to ensure oracle has fully started ...\n"
|
|
61
|
-
sleep 15
|
|
62
|
-
printf "\nInstalling oracle client libs to db container ...\n"
|
|
63
|
-
set -x
|
|
64
|
-
docker compose -f "$docker_compose_file" exec -T oracledb curl http://yum.oracle.com/public-yum-ol7.repo -o /etc/yum.repos.d/public-yum-ol7.repo
|
|
65
|
-
docker compose -f "$docker_compose_file" exec -T oracledb yum install -y yum-utils
|
|
66
|
-
docker compose -f "$docker_compose_file" exec -T oracledb yum-config-manager --enable ol7_oracle_instantclient
|
|
67
|
-
docker compose -f "$docker_compose_file" exec -T oracledb yum install -y oracle-instantclient18.3-basiclite
|
|
68
|
-
set +x
|
|
69
|
-
printf "\nCopying to host's ~/lib directory and adding to ldconfig ...\n"
|
|
70
|
-
if [ "$do_changes" = "true" ]; then
|
|
71
|
-
set -x
|
|
72
|
-
docker cp oracledb_container:/usr/lib/oracle/18.3/client64/lib/ ~/
|
|
73
|
-
sudo sh -c "echo $HOME/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"
|
|
74
|
-
sudo ldconfig
|
|
75
|
-
set +x
|
|
76
|
-
else
|
|
77
|
-
printf "(skipping because dry-run)\n"
|
|
78
|
-
fi
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
# Start the bash app's main function
|
|
82
|
-
main "$cmd"
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# Exit on error
|
|
4
|
+
set -e
|
|
5
|
+
|
|
6
|
+
# Directory constants
|
|
7
|
+
repo_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." >/dev/null 2>&1 && pwd )"
|
|
8
|
+
exec_dir="$( pwd )"
|
|
9
|
+
script_dir="$repo_dir/scripts/"
|
|
10
|
+
docker_compose_file="$repo_dir/scripts/docker-compose.yml"
|
|
11
|
+
|
|
12
|
+
help_text="
|
|
13
|
+
Helper script to install oracle drivers on local linux machine from Oracle
|
|
14
|
+
database container.
|
|
15
|
+
|
|
16
|
+
oracledb-install-driver-libs.sh COMMAND
|
|
17
|
+
|
|
18
|
+
COMMAND:
|
|
19
|
+
run: Do the driver install.
|
|
20
|
+
dry-run: Do the driver install but do not save any files.
|
|
21
|
+
help: Print this menu.
|
|
22
|
+
|
|
23
|
+
NOTES FOR USAGE:
|
|
24
|
+
1. This script is tested to work on Ubuntu 18.04 LTS.
|
|
25
|
+
2. This script requires you to have sudo capabilities so to use ldconfig.
|
|
26
|
+
"
|
|
27
|
+
|
|
28
|
+
# Main script logic
|
|
29
|
+
cmd="$1"
|
|
30
|
+
|
|
31
|
+
function main () {
|
|
32
|
+
case "$1" in
|
|
33
|
+
"run")
|
|
34
|
+
printf "Starting run ...\n"
|
|
35
|
+
do_install true
|
|
36
|
+
exit 0
|
|
37
|
+
;;
|
|
38
|
+
"dry-run")
|
|
39
|
+
printf "Starting dry-run ...\n"
|
|
40
|
+
do_install false
|
|
41
|
+
exit 0
|
|
42
|
+
;;
|
|
43
|
+
"help"|"--help"|"-h"|"")
|
|
44
|
+
printf "$help_text"
|
|
45
|
+
exit 0
|
|
46
|
+
;;
|
|
47
|
+
*)
|
|
48
|
+
printf "Unsupported command: $cmd\n"
|
|
49
|
+
printf "Try running with 'help' to see supported commands.\n"
|
|
50
|
+
exit 1
|
|
51
|
+
;;
|
|
52
|
+
esac
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function do_install () {
|
|
56
|
+
do_changes="$1"
|
|
57
|
+
printf "\nEnsuring oracle containers from docker compose are up ...\n"
|
|
58
|
+
docker compose -f "$docker_compose_file" up --build -d oracledb
|
|
59
|
+
docker compose -f "$docker_compose_file" up waitoracledb
|
|
60
|
+
printf "\nSleeping an extra 15 seconds to ensure oracle has fully started ...\n"
|
|
61
|
+
sleep 15
|
|
62
|
+
printf "\nInstalling oracle client libs to db container ...\n"
|
|
63
|
+
set -x
|
|
64
|
+
docker compose -f "$docker_compose_file" exec -T oracledb curl http://yum.oracle.com/public-yum-ol7.repo -o /etc/yum.repos.d/public-yum-ol7.repo
|
|
65
|
+
docker compose -f "$docker_compose_file" exec -T oracledb yum install -y yum-utils
|
|
66
|
+
docker compose -f "$docker_compose_file" exec -T oracledb yum-config-manager --enable ol7_oracle_instantclient
|
|
67
|
+
docker compose -f "$docker_compose_file" exec -T oracledb yum install -y oracle-instantclient18.3-basiclite
|
|
68
|
+
set +x
|
|
69
|
+
printf "\nCopying to host's ~/lib directory and adding to ldconfig ...\n"
|
|
70
|
+
if [ "$do_changes" = "true" ]; then
|
|
71
|
+
set -x
|
|
72
|
+
docker cp oracledb_container:/usr/lib/oracle/18.3/client64/lib/ ~/
|
|
73
|
+
sudo sh -c "echo $HOME/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"
|
|
74
|
+
sudo ldconfig
|
|
75
|
+
set +x
|
|
76
|
+
else
|
|
77
|
+
printf "(skipping because dry-run)\n"
|
|
78
|
+
fi
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
# Start the bash app's main function
|
|
82
|
+
main "$cmd"
|