knex 3.2.3 → 3.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/CHANGELOG.md +2447 -2441
  2. package/CONTRIBUTING.md +190 -190
  3. package/LICENSE +22 -22
  4. package/README.md +156 -156
  5. package/UPGRADING.md +245 -245
  6. package/bin/cli.js +516 -516
  7. package/bin/knexfile-runtime-error.js +27 -27
  8. package/bin/utils/cli-config-utils.js +217 -217
  9. package/bin/utils/constants.js +7 -7
  10. package/bin/utils/migrationsLister.js +37 -37
  11. package/knex.js +23 -23
  12. package/knex.mjs +11 -11
  13. package/lib/builder-interface-augmenter.js +120 -120
  14. package/lib/client.js +585 -585
  15. package/lib/constants.js +61 -61
  16. package/lib/dialects/better-sqlite3/index.js +101 -101
  17. package/lib/dialects/cockroachdb/crdb-columncompiler.js +14 -14
  18. package/lib/dialects/cockroachdb/crdb-querybuilder.js +11 -11
  19. package/lib/dialects/cockroachdb/crdb-querycompiler.js +122 -122
  20. package/lib/dialects/cockroachdb/crdb-tablecompiler.js +46 -46
  21. package/lib/dialects/cockroachdb/crdb-viewcompiler.js +15 -15
  22. package/lib/dialects/cockroachdb/index.js +86 -86
  23. package/lib/dialects/index.js +34 -34
  24. package/lib/dialects/mssql/index.js +498 -498
  25. package/lib/dialects/mssql/mssql-formatter.js +34 -34
  26. package/lib/dialects/mssql/query/mssql-querycompiler.js +601 -601
  27. package/lib/dialects/mssql/schema/mssql-columncompiler.js +185 -185
  28. package/lib/dialects/mssql/schema/mssql-compiler.js +91 -91
  29. package/lib/dialects/mssql/schema/mssql-tablecompiler.js +393 -393
  30. package/lib/dialects/mssql/schema/mssql-viewcompiler.js +55 -55
  31. package/lib/dialects/mssql/transaction.js +176 -176
  32. package/lib/dialects/mysql/index.js +317 -317
  33. package/lib/dialects/mysql/query/mysql-querybuilder.js +14 -14
  34. package/lib/dialects/mysql/query/mysql-querycompiler.js +292 -292
  35. package/lib/dialects/mysql/schema/mysql-columncompiler.js +193 -193
  36. package/lib/dialects/mysql/schema/mysql-compiler.js +60 -60
  37. package/lib/dialects/mysql/schema/mysql-tablecompiler.js +426 -426
  38. package/lib/dialects/mysql/schema/mysql-viewbuilder.js +21 -21
  39. package/lib/dialects/mysql/schema/mysql-viewcompiler.js +15 -15
  40. package/lib/dialects/mysql/transaction.js +46 -46
  41. package/lib/dialects/mysql2/index.js +53 -53
  42. package/lib/dialects/mysql2/transaction.js +44 -44
  43. package/lib/dialects/oracle/DEAD_CODE.md +5 -5
  44. package/lib/dialects/oracle/index.js +92 -92
  45. package/lib/dialects/oracle/query/oracle-querycompiler.js +343 -343
  46. package/lib/dialects/oracle/schema/internal/incrementUtils.js +22 -22
  47. package/lib/dialects/oracle/schema/internal/trigger.js +155 -155
  48. package/lib/dialects/oracle/schema/oracle-columnbuilder.js +17 -17
  49. package/lib/dialects/oracle/schema/oracle-columncompiler.js +126 -126
  50. package/lib/dialects/oracle/schema/oracle-compiler.js +124 -124
  51. package/lib/dialects/oracle/schema/oracle-tablecompiler.js +210 -210
  52. package/lib/dialects/oracle/utils.js +107 -107
  53. package/lib/dialects/oracledb/index.js +381 -381
  54. package/lib/dialects/oracledb/query/oracledb-querycompiler.js +481 -481
  55. package/lib/dialects/oracledb/schema/oracledb-columncompiler.js +61 -61
  56. package/lib/dialects/oracledb/schema/oracledb-tablecompiler.js +19 -19
  57. package/lib/dialects/oracledb/schema/oracledb-viewbuilder.js +13 -13
  58. package/lib/dialects/oracledb/schema/oracledb-viewcompiler.js +19 -19
  59. package/lib/dialects/oracledb/transaction.js +98 -98
  60. package/lib/dialects/oracledb/utils.js +208 -208
  61. package/lib/dialects/pgnative/index.js +60 -60
  62. package/lib/dialects/postgres/execution/pg-transaction.js +19 -19
  63. package/lib/dialects/postgres/index.js +373 -373
  64. package/lib/dialects/postgres/query/pg-querybuilder.js +43 -43
  65. package/lib/dialects/postgres/query/pg-querycompiler.js +400 -400
  66. package/lib/dialects/postgres/schema/pg-columncompiler.js +162 -162
  67. package/lib/dialects/postgres/schema/pg-compiler.js +138 -138
  68. package/lib/dialects/postgres/schema/pg-tablecompiler.js +331 -331
  69. package/lib/dialects/postgres/schema/pg-viewbuilder.js +21 -21
  70. package/lib/dialects/postgres/schema/pg-viewcompiler.js +35 -35
  71. package/lib/dialects/redshift/index.js +86 -86
  72. package/lib/dialects/redshift/query/redshift-querycompiler.js +163 -163
  73. package/lib/dialects/redshift/schema/redshift-columnbuilder.js +22 -22
  74. package/lib/dialects/redshift/schema/redshift-columncompiler.js +67 -67
  75. package/lib/dialects/redshift/schema/redshift-compiler.js +14 -14
  76. package/lib/dialects/redshift/schema/redshift-tablecompiler.js +134 -134
  77. package/lib/dialects/redshift/schema/redshift-viewcompiler.js +11 -11
  78. package/lib/dialects/redshift/transaction.js +32 -32
  79. package/lib/dialects/sqlite3/execution/sqlite-transaction.js +172 -172
  80. package/lib/dialects/sqlite3/index.js +263 -263
  81. package/lib/dialects/sqlite3/query/sqlite-querybuilder.js +33 -33
  82. package/lib/dialects/sqlite3/query/sqlite-querycompiler.js +341 -341
  83. package/lib/dialects/sqlite3/schema/ddl.js +380 -380
  84. package/lib/dialects/sqlite3/schema/internal/compiler.js +327 -327
  85. package/lib/dialects/sqlite3/schema/internal/parser-combinator.js +161 -161
  86. package/lib/dialects/sqlite3/schema/internal/parser.js +638 -638
  87. package/lib/dialects/sqlite3/schema/internal/sqlite-ddl-operations.js +41 -41
  88. package/lib/dialects/sqlite3/schema/internal/tokenizer.js +38 -38
  89. package/lib/dialects/sqlite3/schema/internal/utils.js +12 -12
  90. package/lib/dialects/sqlite3/schema/sqlite-columncompiler.js +50 -50
  91. package/lib/dialects/sqlite3/schema/sqlite-compiler.js +80 -80
  92. package/lib/dialects/sqlite3/schema/sqlite-tablecompiler.js +364 -364
  93. package/lib/dialects/sqlite3/schema/sqlite-viewcompiler.js +40 -40
  94. package/lib/execution/batch-insert.js +51 -51
  95. package/lib/execution/internal/delay.js +6 -6
  96. package/lib/execution/internal/ensure-connection-callback.js +41 -41
  97. package/lib/execution/internal/query-executioner.js +62 -62
  98. package/lib/execution/runner.js +325 -325
  99. package/lib/execution/transaction.js +417 -417
  100. package/lib/formatter/formatterUtils.js +42 -42
  101. package/lib/formatter/rawFormatter.js +84 -84
  102. package/lib/formatter/wrappingFormatter.js +253 -253
  103. package/lib/formatter.js +25 -25
  104. package/lib/index.js +3 -3
  105. package/lib/knex-builder/FunctionHelper.js +80 -80
  106. package/lib/knex-builder/Knex.js +59 -59
  107. package/lib/knex-builder/internal/config-resolver.js +57 -57
  108. package/lib/knex-builder/internal/parse-connection.js +87 -87
  109. package/lib/knex-builder/make-knex.js +345 -345
  110. package/lib/logger.js +76 -76
  111. package/lib/migrations/common/MigrationsLoader.js +36 -36
  112. package/lib/migrations/migrate/MigrationGenerator.js +84 -84
  113. package/lib/migrations/migrate/Migrator.js +632 -632
  114. package/lib/migrations/migrate/migrate-stub.js +17 -17
  115. package/lib/migrations/migrate/migration-list-resolver.js +33 -33
  116. package/lib/migrations/migrate/migrator-configuration-merger.js +58 -58
  117. package/lib/migrations/migrate/sources/fs-migrations.js +74 -74
  118. package/lib/migrations/migrate/stub/cjs.stub +15 -15
  119. package/lib/migrations/migrate/stub/coffee.stub +13 -13
  120. package/lib/migrations/migrate/stub/eg.stub +14 -14
  121. package/lib/migrations/migrate/stub/js-schema.stub +22 -22
  122. package/lib/migrations/migrate/stub/js.stub +22 -22
  123. package/lib/migrations/migrate/stub/knexfile-coffee.stub +34 -34
  124. package/lib/migrations/migrate/stub/knexfile-eg.stub +43 -43
  125. package/lib/migrations/migrate/stub/knexfile-js.stub +47 -47
  126. package/lib/migrations/migrate/stub/knexfile-ls.stub +35 -35
  127. package/lib/migrations/migrate/stub/knexfile-ts.stub +47 -47
  128. package/lib/migrations/migrate/stub/ls.stub +14 -14
  129. package/lib/migrations/migrate/stub/mjs.stub +23 -23
  130. package/lib/migrations/migrate/stub/ts-schema.stub +21 -21
  131. package/lib/migrations/migrate/stub/ts.stub +21 -21
  132. package/lib/migrations/migrate/table-creator.js +77 -77
  133. package/lib/migrations/migrate/table-resolver.js +27 -27
  134. package/lib/migrations/seed/Seeder.js +137 -137
  135. package/lib/migrations/seed/seed-stub.js +13 -13
  136. package/lib/migrations/seed/seeder-configuration-merger.js +60 -60
  137. package/lib/migrations/seed/sources/fs-seeds.js +65 -65
  138. package/lib/migrations/seed/stub/coffee.stub +9 -9
  139. package/lib/migrations/seed/stub/eg.stub +11 -11
  140. package/lib/migrations/seed/stub/js.stub +13 -13
  141. package/lib/migrations/seed/stub/ls.stub +11 -11
  142. package/lib/migrations/seed/stub/mjs.stub +12 -12
  143. package/lib/migrations/seed/stub/ts.stub +13 -13
  144. package/lib/migrations/util/fs.js +86 -86
  145. package/lib/migrations/util/import-file.js +12 -12
  146. package/lib/migrations/util/is-module-type.js +9 -9
  147. package/lib/migrations/util/template.js +52 -52
  148. package/lib/migrations/util/timestamp.js +14 -14
  149. package/lib/query/analytic.js +52 -52
  150. package/lib/query/constants.js +15 -15
  151. package/lib/query/joinclause.js +270 -270
  152. package/lib/query/method-constants.js +136 -136
  153. package/lib/query/querybuilder.js +1793 -1793
  154. package/lib/query/querycompiler.js +1634 -1634
  155. package/lib/raw.js +139 -139
  156. package/lib/ref.js +39 -39
  157. package/lib/schema/builder.js +115 -115
  158. package/lib/schema/columnbuilder.js +146 -146
  159. package/lib/schema/columncompiler.js +307 -307
  160. package/lib/schema/compiler.js +187 -187
  161. package/lib/schema/internal/helpers.js +55 -55
  162. package/lib/schema/tablebuilder.js +379 -379
  163. package/lib/schema/tablecompiler.js +450 -450
  164. package/lib/schema/viewbuilder.js +92 -92
  165. package/lib/schema/viewcompiler.js +138 -138
  166. package/lib/util/finally-mixin.js +13 -13
  167. package/lib/util/helpers.js +95 -95
  168. package/lib/util/is.js +32 -32
  169. package/lib/util/nanoid.js +40 -40
  170. package/lib/util/noop.js +1 -1
  171. package/lib/util/save-async-stack.js +14 -14
  172. package/lib/util/security.js +32 -32
  173. package/lib/util/string.js +190 -190
  174. package/lib/util/timeout.js +29 -29
  175. package/package.json +294 -293
  176. package/scripts/act-testing/act.sh +19 -19
  177. package/scripts/act-testing/merged-no-label.json +11 -11
  178. package/scripts/act-testing/merged-patch-labeled.json +12 -12
  179. package/scripts/act-testing/merged-skip-labeled.json +12 -12
  180. package/scripts/act-testing/not-merged-patch-labeled.json +12 -12
  181. package/scripts/build-for-release.sh +121 -121
  182. package/scripts/build.js +125 -125
  183. package/scripts/clean.js +31 -31
  184. package/scripts/docker-compose.yml +150 -150
  185. package/scripts/format-changelog.js +55 -55
  186. package/scripts/next-release-howto.md +24 -24
  187. package/scripts/oracledb-install-driver-libs.sh +82 -82
  188. package/scripts/release.sh +36 -36
  189. package/scripts/runkit-example.js +35 -35
  190. package/scripts/stress-test/README.txt +18 -18
  191. package/scripts/stress-test/docker-compose.yml +55 -55
  192. package/scripts/stress-test/knex-stress-test.js +212 -212
  193. package/scripts/stress-test/mysql2-random-hanging-every-now-and-then.js +149 -149
  194. package/scripts/stress-test/mysql2-sudden-exit-without-error.js +101 -101
  195. package/scripts/stress-test/reconnect-test-mysql-based-drivers.js +188 -188
  196. package/types/index.d.mts +11 -0
  197. package/types/index.d.ts +3321 -3321
  198. package/types/result.d.ts +27 -27
  199. package/types/tables.d.ts +4 -4
@@ -1,12 +1,12 @@
1
- {
2
- "pull_request": {
3
- "head": {
4
- "ref": "pr-getting-merged"
5
- },
6
- "base": {
7
- "ref": "master"
8
- },
9
- "merged": true,
10
- "labels": [{ "name": "patch" }]
11
- }
12
- }
1
+ {
2
+ "pull_request": {
3
+ "head": {
4
+ "ref": "pr-getting-merged"
5
+ },
6
+ "base": {
7
+ "ref": "master"
8
+ },
9
+ "merged": true,
10
+ "labels": [{ "name": "patch" }]
11
+ }
12
+ }
@@ -1,12 +1,12 @@
1
- {
2
- "pull_request": {
3
- "head": {
4
- "ref": "pr-getting-merged"
5
- },
6
- "base": {
7
- "ref": "master"
8
- },
9
- "merged": true,
10
- "labels": [{ "name": "skip-release" }]
11
- }
12
- }
1
+ {
2
+ "pull_request": {
3
+ "head": {
4
+ "ref": "pr-getting-merged"
5
+ },
6
+ "base": {
7
+ "ref": "master"
8
+ },
9
+ "merged": true,
10
+ "labels": [{ "name": "skip-release" }]
11
+ }
12
+ }
@@ -1,12 +1,12 @@
1
- {
2
- "pull_request": {
3
- "head": {
4
- "ref": "pr-getting-merged"
5
- },
6
- "base": {
7
- "ref": "master"
8
- },
9
- "merged": false,
10
- "labels": [{ "name": "patch" }]
11
- }
12
- }
1
+ {
2
+ "pull_request": {
3
+ "head": {
4
+ "ref": "pr-getting-merged"
5
+ },
6
+ "base": {
7
+ "ref": "master"
8
+ },
9
+ "merged": false,
10
+ "labels": [{ "name": "patch" }]
11
+ }
12
+ }
@@ -1,122 +1,122 @@
1
- #!/bin/bash -e
2
-
3
- # context: currently, no package lockfile is utilized in this repository.
4
- # this is so that CI tests run on the ~latest versions of dependencies,
5
- # especially the peer dependencies of database clients, so that our tests
6
- # will more readily surface problems that our users will experience when
7
- # they just do the normal thing.
8
-
9
- # however, for automatic release publishing, we want to be much stricter
10
- # with the dependencies that are involved in the workflow to avoid risks
11
- # from e.g. supply chain attacks.
12
-
13
- # we could use "npm ci" if we had a lockfile, but instead we're going to
14
- # separately maintain pinned versions of the build dependencies and run
15
- # exactly those versions. care should be taken when updating/altering the
16
- # versions to vet them.
17
-
18
- # pinned versions of the dependencies required to perform a release build
19
- declare -A PINNED_VERSIONS=(
20
- [typescript]="5.0.4"
21
- [prettier]="2.8.7"
22
- [@types/node]="20.19.11"
23
- [@tsconfig/node12]="1.0.11"
24
- )
25
-
26
- # validate args
27
- BUMP_TYPE="$1"
28
- case "$BUMP_TYPE" in
29
- major|minor|patch)
30
- # valid
31
- ;;
32
- *)
33
- >&2 echo "Invalid bump type. Use: $0 {major|minor|patch}"
34
- exit 1
35
- ;;
36
- esac
37
-
38
-
39
- # npm 7 doesn't provide a way to install only a specific dependency, it's
40
- # all-or-nothing. so we have to do some shenanigans to validate our pinned
41
- # versions against package.json
42
-
43
- # create a jq expression for a minimal package.json that includes only
44
- # our build dependencies
45
- tmpl='
46
- {
47
- name: "dep-check",
48
- private: true,
49
- version: "0.0.0",
50
- devDependencies: {
51
- '
52
- for pkg in "${!PINNED_VERSIONS[@]}"; do
53
- # for each pinned dependency, add something like:
54
- # pkg: .devDependencies.pkg
55
- tmpl+=" \"${pkg}\": .devDependencies[\"${pkg}\"],
56
- "
57
- done
58
- tmpl+='
59
- }
60
- }'
61
-
62
- PROJECT_DIR="$(pwd)"
63
- TMP_DIR="$(mktemp -d)"
64
-
65
- # render the template to a package.json file in a temp dir
66
- echo
67
- echo "Build dependencies:"
68
- jq "$tmpl" package.json | tee "$TMP_DIR/package.json"
69
-
70
- # install dependencies at the pinned version in the temp dir
71
- # ignore pre/post script hooks
72
- echo
73
- echo "Installing packages"
74
- >/dev/null pushd "$TMP_DIR"
75
-
76
- failed=0
77
- for pkg in "${!PINNED_VERSIONS[@]}"; do
78
- fqpkg="${pkg}@${PINNED_VERSIONS[$pkg]}"
79
- echo "npm install --no-save --ignore-scripts $fqpkg"
80
- >/dev/null 2>/dev/null npm install --no-save --ignore-scripts "$fqpkg"
81
-
82
-
83
- # ensure the pinned version conforms to package.json semver specification
84
- if npm ls 2>/dev/null | grep invalid; then
85
- failed=1
86
- fi
87
- done
88
-
89
- # one or more pins is incorrect, do not publish
90
- if [[ "$failed" = 1 ]]; then
91
- echo
92
- echo "One or more pinned dependencies do not satisfy package.json requirements"
93
- echo "Please update '$0'"
94
- exit 1
95
- fi
96
-
97
- >/dev/null popd
98
-
99
- # move tempdir node_modules to build dir
100
- mv "$TMP_DIR/node_modules" "$PROJECT_DIR/node_modules"
101
- echo
102
- echo "node_modules:"
103
- ls -l node_modules
104
-
105
- echo "Running build steps"
106
-
107
- # run the package.json build script
108
- # currently, this executes typescript and uses
109
- # prettier to format the TS output
110
- npm run build
111
-
112
- # bump the version in package.json
113
- npm version "$BUMP_TYPE" --no-git-tag-version
114
-
115
- # we don't commit here, but we do create the tarball that
116
- # will be published to npm. the dependent job takes the
117
- # tarball and commits the changes + publishes the tarball
118
-
119
- # create the tarball for handoff and record its filename
120
- TARBALL="$(npm pack --silent)"
121
- echo "tarball=$TARBALL" >> "$GITHUB_OUTPUT"
1
+ #!/bin/bash -e
2
+
3
+ # context: currently, no package lockfile is utilized in this repository.
4
+ # this is so that CI tests run on the ~latest versions of dependencies,
5
+ # especially the peer dependencies of database clients, so that our tests
6
+ # will more readily surface problems that our users will experience when
7
+ # they just do the normal thing.
8
+
9
+ # however, for automatic release publishing, we want to be much stricter
10
+ # with the dependencies that are involved in the workflow to avoid risks
11
+ # from e.g. supply chain attacks.
12
+
13
+ # we could use "npm ci" if we had a lockfile, but instead we're going to
14
+ # separately maintain pinned versions of the build dependencies and run
15
+ # exactly those versions. care should be taken when updating/altering the
16
+ # versions to vet them.
17
+
18
+ # pinned versions of the dependencies required to perform a release build
19
+ declare -A PINNED_VERSIONS=(
20
+ [typescript]="5.0.4"
21
+ [prettier]="2.8.7"
22
+ [@types/node]="20.19.11"
23
+ [@tsconfig/node12]="1.0.11"
24
+ )
25
+
26
+ # validate args
27
+ BUMP_TYPE="$1"
28
+ case "$BUMP_TYPE" in
29
+ major|minor|patch)
30
+ # valid
31
+ ;;
32
+ *)
33
+ >&2 echo "Invalid bump type. Use: $0 {major|minor|patch}"
34
+ exit 1
35
+ ;;
36
+ esac
37
+
38
+
39
+ # npm 7 doesn't provide a way to install only a specific dependency, it's
40
+ # all-or-nothing. so we have to do some shenanigans to validate our pinned
41
+ # versions against package.json
42
+
43
+ # create a jq expression for a minimal package.json that includes only
44
+ # our build dependencies
45
+ tmpl='
46
+ {
47
+ name: "dep-check",
48
+ private: true,
49
+ version: "0.0.0",
50
+ devDependencies: {
51
+ '
52
+ for pkg in "${!PINNED_VERSIONS[@]}"; do
53
+ # for each pinned dependency, add something like:
54
+ # pkg: .devDependencies.pkg
55
+ tmpl+=" \"${pkg}\": .devDependencies[\"${pkg}\"],
56
+ "
57
+ done
58
+ tmpl+='
59
+ }
60
+ }'
61
+
62
+ PROJECT_DIR="$(pwd)"
63
+ TMP_DIR="$(mktemp -d)"
64
+
65
+ # render the template to a package.json file in a temp dir
66
+ echo
67
+ echo "Build dependencies:"
68
+ jq "$tmpl" package.json | tee "$TMP_DIR/package.json"
69
+
70
+ # install dependencies at the pinned version in the temp dir
71
+ # ignore pre/post script hooks
72
+ echo
73
+ echo "Installing packages"
74
+ >/dev/null pushd "$TMP_DIR"
75
+
76
+ failed=0
77
+ for pkg in "${!PINNED_VERSIONS[@]}"; do
78
+ fqpkg="${pkg}@${PINNED_VERSIONS[$pkg]}"
79
+ echo "npm install --no-save --ignore-scripts $fqpkg"
80
+ >/dev/null 2>/dev/null npm install --no-save --ignore-scripts "$fqpkg"
81
+
82
+
83
+ # ensure the pinned version conforms to package.json semver specification
84
+ if npm ls 2>/dev/null | grep invalid; then
85
+ failed=1
86
+ fi
87
+ done
88
+
89
+ # one or more pins is incorrect, do not publish
90
+ if [[ "$failed" = 1 ]]; then
91
+ echo
92
+ echo "One or more pinned dependencies do not satisfy package.json requirements"
93
+ echo "Please update '$0'"
94
+ exit 1
95
+ fi
96
+
97
+ >/dev/null popd
98
+
99
+ # move tempdir node_modules to build dir
100
+ mv "$TMP_DIR/node_modules" "$PROJECT_DIR/node_modules"
101
+ echo
102
+ echo "node_modules:"
103
+ ls -l node_modules
104
+
105
+ echo "Running build steps"
106
+
107
+ # run the package.json build script
108
+ # currently, this executes typescript and uses
109
+ # prettier to format the TS output
110
+ npm run build
111
+
112
+ # bump the version in package.json
113
+ npm version "$BUMP_TYPE" --no-git-tag-version
114
+
115
+ # we don't commit here, but we do create the tarball that
116
+ # will be published to npm. the dependent job takes the
117
+ # tarball and commits the changes + publishes the tarball
118
+
119
+ # create the tarball for handoff and record its filename
120
+ TARBALL="$(npm pack --silent)"
121
+ echo "tarball=$TARBALL" >> "$GITHUB_OUTPUT"
122
122
  ls -la "$TARBALL"
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,31 +1,31 @@
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
+ #!/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();