@automattic/vip 4.1.6 → 4.1.8
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/assets/dev-env.lando.template.yml.ejs +1 -1
- package/dist/bin/vip-app-deploy-token-generate.js +110 -78
- package/dist/bin/vip-app-deploy-token.js +24 -16
- package/dist/bin/vip-app-deploy-validate.js +45 -41
- package/dist/bin/vip-app-deploy.js +222 -215
- package/dist/bin/vip-app-list.js +59 -43
- package/dist/bin/vip-app.js +97 -66
- package/dist/bin/vip-backup-db.js +36 -29
- package/dist/bin/vip-backup.js +16 -9
- package/dist/bin/vip-cache-purge-url.js +93 -55
- package/dist/bin/vip-cache.js +23 -14
- package/dist/bin/vip-config-envvar-delete.js +74 -73
- package/dist/bin/vip-config-envvar-get-all.js +68 -68
- package/dist/bin/vip-config-envvar-get.js +46 -46
- package/dist/bin/vip-config-envvar-list.js +54 -57
- package/dist/bin/vip-config-envvar-set.js +102 -96
- package/dist/bin/vip-config-envvar.js +38 -24
- package/dist/bin/vip-config-software-get.js +88 -75
- package/dist/bin/vip-config-software-update.js +116 -120
- package/dist/bin/vip-config-software.js +31 -21
- package/dist/bin/vip-config.js +25 -17
- package/dist/bin/vip-db-phpmyadmin.js +40 -39
- package/dist/bin/vip-db.js +13 -12
- package/dist/bin/vip-defensive-mode-configure.js +197 -197
- package/dist/bin/vip-defensive-mode-disable.js +43 -35
- package/dist/bin/vip-defensive-mode-enable.js +47 -38
- package/dist/bin/vip-defensive-mode.js +28 -17
- package/dist/bin/vip-dev-env-create.js +147 -104
- package/dist/bin/vip-dev-env-destroy.js +48 -39
- package/dist/bin/vip-dev-env-envvar-delete.js +60 -49
- package/dist/bin/vip-dev-env-envvar-get-all.js +52 -45
- package/dist/bin/vip-dev-env-envvar-get.js +48 -37
- package/dist/bin/vip-dev-env-envvar-list.js +48 -41
- package/dist/bin/vip-dev-env-envvar-set.js +83 -70
- package/dist/bin/vip-dev-env-envvar.js +38 -23
- package/dist/bin/vip-dev-env-exec.js +81 -74
- package/dist/bin/vip-dev-env-import-media.js +34 -26
- package/dist/bin/vip-dev-env-import-sql.js +65 -51
- package/dist/bin/vip-dev-env-import.js +23 -14
- package/dist/bin/vip-dev-env-info.js +59 -50
- package/dist/bin/vip-dev-env-list.js +34 -31
- package/dist/bin/vip-dev-env-logs.js +59 -49
- package/dist/bin/vip-dev-env-purge.js +71 -63
- package/dist/bin/vip-dev-env-shell.js +82 -71
- package/dist/bin/vip-dev-env-start.js +77 -65
- package/dist/bin/vip-dev-env-stop.js +80 -74
- package/dist/bin/vip-dev-env-sync-sql.js +80 -72
- package/dist/bin/vip-dev-env-sync.js +18 -11
- package/dist/bin/vip-dev-env-update.js +93 -84
- package/dist/bin/vip-dev-env.js +25 -8
- package/dist/bin/vip-edge-workers-build.js +82 -54
- package/dist/bin/vip-edge-workers-delete.js +84 -52
- package/dist/bin/vip-edge-workers-deploy.js +186 -126
- package/dist/bin/vip-edge-workers-disable.js +75 -44
- package/dist/bin/vip-edge-workers-enable.js +86 -54
- package/dist/bin/vip-edge-workers-get.js +108 -88
- package/dist/bin/vip-edge-workers-init.js +83 -53
- package/dist/bin/vip-edge-workers-list.js +89 -54
- package/dist/bin/vip-edge-workers-new.js +98 -69
- package/dist/bin/vip-edge-workers-validate.js +123 -82
- package/dist/bin/vip-edge-workers.js +19 -6
- package/dist/bin/vip-export-sql.js +75 -69
- package/dist/bin/vip-export.js +12 -7
- package/dist/bin/vip-import-media-abort.js +99 -73
- package/dist/bin/vip-import-media-status.js +83 -51
- package/dist/bin/vip-import-media.js +165 -166
- package/dist/bin/vip-import-sql-status.js +75 -45
- package/dist/bin/vip-import-sql.js +536 -596
- package/dist/bin/vip-import-validate-files.js +122 -141
- package/dist/bin/vip-import-validate-sql.js +52 -16
- package/dist/bin/vip-import.js +16 -7
- package/dist/bin/vip-logout.js +17 -13
- package/dist/bin/vip-logs.js +209 -183
- package/dist/bin/vip-search-replace.js +85 -53
- package/dist/bin/vip-slowlogs.js +168 -147
- package/dist/bin/vip-sync.js +163 -133
- package/dist/bin/vip-whoami.js +71 -35
- package/dist/bin/vip-wp.js +506 -549
- package/dist/bin/vip.js +161 -116
- package/dist/commands/backup-db.js +183 -149
- package/dist/commands/dev-env-import-sql.js +162 -117
- package/dist/commands/dev-env-sync-sql.js +372 -330
- package/dist/commands/export-sql.js +441 -425
- package/dist/commands/phpmyadmin.js +232 -212
- package/dist/commands/wp-ssh.js +218 -187
- package/dist/lib/analytics/clients/tracks.js +84 -91
- package/dist/lib/analytics/index.js +27 -27
- package/dist/lib/api/app.js +37 -36
- package/dist/lib/api/cache-purge.js +17 -20
- package/dist/lib/api/constants.js +5 -6
- package/dist/lib/api/edge-workers.js +84 -135
- package/dist/lib/api/error-debug.js +10 -13
- package/dist/lib/api/feature-flags.js +16 -17
- package/dist/lib/api/http.js +47 -48
- package/dist/lib/api/user.js +17 -18
- package/dist/lib/api.js +107 -116
- package/dist/lib/app-logs/app-logs.js +24 -25
- package/dist/lib/app-slowlogs/app-slowlogs.js +23 -24
- package/dist/lib/app-slowlogs/types.js +2 -1
- package/dist/lib/app.js +6 -8
- package/dist/lib/backup-storage-availability/backup-storage-availability.js +119 -119
- package/dist/lib/backup-storage-availability/docker-machine-not-found-error.js +5 -6
- package/dist/lib/cli/apiConfig.js +71 -41
- package/dist/lib/cli/command.js +1120 -873
- package/dist/lib/cli/config.js +29 -29
- package/dist/lib/cli/envAlias.js +35 -50
- package/dist/lib/cli/exit.js +19 -19
- package/dist/lib/cli/format.js +172 -172
- package/dist/lib/cli/progress.js +193 -236
- package/dist/lib/cli/prompt.js +14 -15
- package/dist/lib/cli/runtime-mode.js +5 -6
- package/dist/lib/client-file-uploader.js +489 -641
- package/dist/lib/config/software.js +206 -212
- package/dist/lib/constants/dev-environment.js +40 -37
- package/dist/lib/constants/file-size.js +6 -7
- package/dist/lib/constants/vipgo.js +24 -12
- package/dist/lib/custom-deploy/custom-deploy.js +138 -120
- package/dist/lib/database.js +88 -85
- package/dist/lib/defensive-mode/api.js +41 -46
- package/dist/lib/defensive-mode/cli-helpers.js +40 -40
- package/dist/lib/dev-environment/dev-environment-cli.js +776 -735
- package/dist/lib/dev-environment/dev-environment-configuration-file.js +224 -191
- package/dist/lib/dev-environment/dev-environment-core.js +697 -732
- package/dist/lib/dev-environment/dev-environment-database.js +57 -41
- package/dist/lib/dev-environment/dev-environment-lando.js +734 -666
- package/dist/lib/dev-environment/docker-utils.js +96 -90
- package/dist/lib/dev-environment/env-vars.js +61 -59
- package/dist/lib/dev-environment/lando-loader.js +6 -7
- package/dist/lib/dev-environment/types.js +2 -1
- package/dist/lib/edge-workers/confirmation.js +42 -36
- package/dist/lib/edge-workers/deployment.js +150 -159
- package/dist/lib/edge-workers/index.js +68 -85
- package/dist/lib/edge-workers/location.js +26 -26
- package/dist/lib/edge-workers/output.js +14 -15
- package/dist/lib/edge-workers/project.js +123 -132
- package/dist/lib/edge-workers/toolchains/assemblyscript/constants.js +6 -8
- package/dist/lib/edge-workers/toolchains/assemblyscript/index.js +100 -101
- package/dist/lib/edge-workers/toolchains/assemblyscript/templates.js +31 -33
- package/dist/lib/edge-workers/toolchains/index.js +15 -15
- package/dist/lib/edge-workers/types.js +10 -38
- package/dist/lib/edge-workers/validation.js +161 -150
- package/dist/lib/env.js +16 -17
- package/dist/lib/envvar/api-delete.js +16 -18
- package/dist/lib/envvar/api-get-all.js +15 -19
- package/dist/lib/envvar/api-get.js +8 -9
- package/dist/lib/envvar/api-list.js +16 -21
- package/dist/lib/envvar/api-set.js +20 -19
- package/dist/lib/envvar/api.js +34 -29
- package/dist/lib/envvar/input.js +29 -34
- package/dist/lib/envvar/logging.js +9 -11
- package/dist/lib/envvar/read-file.js +6 -7
- package/dist/lib/http/download-file.js +76 -44
- package/dist/lib/http/proxy-agent.js +37 -40
- package/dist/lib/http/proxy-dispatcher.js +69 -71
- package/dist/lib/keychain/insecure.js +40 -36
- package/dist/lib/keychain/keychain.js +2 -1
- package/dist/lib/keychain/secure.js +16 -15
- package/dist/lib/keychain.js +22 -22
- package/dist/lib/live-backup-copy.js +117 -115
- package/dist/lib/logout.js +17 -19
- package/dist/lib/media-import/config.js +15 -14
- package/dist/lib/media-import/media-file-import.js +9 -13
- package/dist/lib/media-import/progress.js +53 -65
- package/dist/lib/media-import/status.js +241 -256
- package/dist/lib/media-import/utils.js +15 -15
- package/dist/lib/node-version-check.js +16 -16
- package/dist/lib/promise.js +16 -17
- package/dist/lib/read-file.js +48 -16
- package/dist/lib/rechallenge/client.js +37 -43
- package/dist/lib/rechallenge/errors.js +38 -37
- package/dist/lib/rechallenge/flow.js +148 -123
- package/dist/lib/rechallenge/index.js +23 -24
- package/dist/lib/rechallenge/link.js +153 -151
- package/dist/lib/rechallenge/open-browser.js +14 -17
- package/dist/lib/rechallenge/token-cache.js +83 -86
- package/dist/lib/rechallenge/types.js +5 -14
- package/dist/lib/retry.js +93 -129
- package/dist/lib/search-and-replace.js +164 -148
- package/dist/lib/site-import/db-file-import.js +12 -16
- package/dist/lib/site-import/status.js +291 -291
- package/dist/lib/token.js +86 -87
- package/dist/lib/tracker.js +51 -62
- package/dist/lib/types/graphql/rate-limit-exceeded-error.js +2 -1
- package/dist/lib/types.js +2 -1
- package/dist/lib/user-error.js +6 -8
- package/dist/lib/utils.js +81 -87
- package/dist/lib/validations/custom-deploy.js +218 -186
- package/dist/lib/validations/is-multi-site-sql-dump.js +6 -6
- package/dist/lib/validations/is-multi-site.js +83 -50
- package/dist/lib/validations/is-multisite-domain-mapped.js +92 -62
- package/dist/lib/validations/line-by-line.js +78 -46
- package/dist/lib/validations/site-type.js +59 -63
- package/dist/lib/validations/sql-insert-parser.js +415 -0
- package/dist/lib/validations/sql.js +551 -431
- package/dist/lib/validations/utils.js +27 -29
- package/dist/lib/vip-import-validate-files.js +481 -490
- package/dist/lib/wp/helpers.js +41 -45
- package/dist/lib/wp/readline.js +21 -57
- package/dist/lib/xdg-data.js +11 -12
- package/helpers/mark-cli-executable.js +9 -0
- package/node_modules/@apollo/client/CHANGELOG.md +10 -0
- package/node_modules/@apollo/client/__cjs/cache/inmemory/helpers.cjs +5 -0
- package/node_modules/@apollo/client/__cjs/cache/inmemory/helpers.cjs.map +1 -1
- package/node_modules/@apollo/client/__cjs/cache/inmemory/inMemoryCache.cjs +2 -1
- package/node_modules/@apollo/client/__cjs/cache/inmemory/inMemoryCache.cjs.map +1 -1
- package/node_modules/@apollo/client/__cjs/cache/inmemory/key-extractor.cjs +14 -2
- package/node_modules/@apollo/client/__cjs/cache/inmemory/key-extractor.cjs.map +1 -1
- package/node_modules/@apollo/client/__cjs/cache/inmemory/policies.cjs +16 -0
- package/node_modules/@apollo/client/__cjs/cache/inmemory/policies.cjs.map +1 -1
- package/node_modules/@apollo/client/__cjs/cache/inmemory/policies.d.cts +2 -0
- package/node_modules/@apollo/client/__cjs/cache/inmemory/writeToStore.cjs +3 -2
- package/node_modules/@apollo/client/__cjs/cache/inmemory/writeToStore.cjs.map +1 -1
- package/node_modules/@apollo/client/__cjs/core/QueryInfo.cjs +9 -1
- package/node_modules/@apollo/client/__cjs/core/QueryInfo.cjs.map +1 -1
- package/node_modules/@apollo/client/__cjs/core/QueryInfo.d.cts +1 -1
- package/node_modules/@apollo/client/__cjs/core/QueryManager.cjs +10 -3
- package/node_modules/@apollo/client/__cjs/core/QueryManager.cjs.map +1 -1
- package/node_modules/@apollo/client/__cjs/react/hooks/useFragment.cjs.map +1 -1
- package/node_modules/@apollo/client/__cjs/react/hooks/useFragment.d.cts +42 -43
- package/node_modules/@apollo/client/__cjs/version.cjs +1 -1
- package/node_modules/@apollo/client/cache/inmemory/helpers.js +5 -0
- package/node_modules/@apollo/client/cache/inmemory/helpers.js.map +1 -1
- package/node_modules/@apollo/client/cache/inmemory/inMemoryCache.js +2 -1
- package/node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.map +1 -1
- package/node_modules/@apollo/client/cache/inmemory/key-extractor.js +14 -2
- package/node_modules/@apollo/client/cache/inmemory/key-extractor.js.map +1 -1
- package/node_modules/@apollo/client/cache/inmemory/policies.d.ts +2 -0
- package/node_modules/@apollo/client/cache/inmemory/policies.js +17 -1
- package/node_modules/@apollo/client/cache/inmemory/policies.js.map +1 -1
- package/node_modules/@apollo/client/cache/inmemory/writeToStore.js +3 -2
- package/node_modules/@apollo/client/cache/inmemory/writeToStore.js.map +1 -1
- package/node_modules/@apollo/client/core/QueryInfo.d.ts +1 -1
- package/node_modules/@apollo/client/core/QueryInfo.js +10 -2
- package/node_modules/@apollo/client/core/QueryInfo.js.map +1 -1
- package/node_modules/@apollo/client/core/QueryManager.js +10 -3
- package/node_modules/@apollo/client/core/QueryManager.js.map +1 -1
- package/node_modules/@apollo/client/package.json +1 -1
- package/node_modules/@apollo/client/react/hooks/useFragment.d.ts +42 -43
- package/node_modules/@apollo/client/react/hooks/useFragment.js.map +1 -1
- package/node_modules/@apollo/client/react/hooks-compiled/useFragment.d.ts +42 -43
- package/node_modules/@apollo/client/react/hooks-compiled/useFragment.js.map +1 -1
- package/node_modules/@apollo/client/version.js +1 -1
- package/node_modules/@automattic/vip-search-replace/README.md +6 -1
- package/node_modules/@automattic/vip-search-replace/lib/index.js +46 -14
- package/node_modules/@automattic/vip-search-replace/package.json +1 -1
- package/node_modules/@types/node/README.md +1 -1
- package/node_modules/@types/node/package.json +2 -2
- package/node_modules/@types/node/zlib.d.ts +752 -0
- package/node_modules/check-disk-space/README.md +92 -32
- package/node_modules/check-disk-space/dist/check-disk-space.d.mts +58 -0
- package/node_modules/check-disk-space/dist/check-disk-space.mjs +170 -190
- package/node_modules/check-disk-space/package.json +43 -71
- package/node_modules/cpu-features/build/Makefile +2 -2
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/filesystem.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_aarch64_linux_or_android.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_aarch64_macos_or_iphone.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_aarch64_windows.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_arm_linux_or_android.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_mips_linux_or_android.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_ppc_linux.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_freebsd.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_linux_or_android.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_macos.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_windows.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/stack_line_reader.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/string_view.o.d +1 -1
- package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpufeatures/src/binding.o.d +157 -145
- package/node_modules/cpu-features/build/Release/cpufeatures.node +0 -0
- package/node_modules/cpu-features/build/Release/obj.target/cpufeatures/src/binding.o +0 -0
- package/node_modules/cpu-features/build/Release/obj.target/cpufeatures.node +0 -0
- package/node_modules/cpu-features/build/config.gypi +100 -31
- package/node_modules/cpu-features/build/cpufeatures.target.mk +14 -14
- package/node_modules/cpu-features/build/deps/cpu_features/cpu_features.target.mk +14 -14
- package/node_modules/ssh2/lib/protocol/crypto/build/Makefile +2 -2
- package/node_modules/ssh2/lib/protocol/crypto/build/Release/.deps/Release/obj.target/sshcrypto/src/binding.o.d.raw +136 -0
- package/node_modules/ssh2/lib/protocol/crypto/build/sshcrypto.target.mk +14 -14
- package/node_modules/undici/docs/docs/api/Interceptors.md +15 -2
- package/node_modules/undici/lib/dispatcher/client-h2.js +78 -3
- package/node_modules/undici/lib/dispatcher/pool-base.js +20 -3
- package/node_modules/undici/package.json +3 -3
- package/node_modules/undici/types/api.d.ts +1 -1
- package/node_modules/undici/types/utility.d.ts +4 -4
- package/package.json +44 -13
- package/dist/lib/analytics/clients/client.js +0 -1
- package/dist/lib/analytics/clients/pendo.js +0 -78
- package/helpers/check-version.js +0 -16
- package/node_modules/check-disk-space/dist/check-disk-space.cjs +0 -210
- package/node_modules/check-disk-space/dist/check-disk-space.d.ts +0 -53
- package/node_modules/fetch-retry/.eslintignore +0 -1
- package/node_modules/fetch-retry/.eslintrc.yml +0 -20
- package/node_modules/fetch-retry/.github/workflows/node.js.yml +0 -32
- package/node_modules/fetch-retry/.husky/pre-commit +0 -6
- package/node_modules/fetch-retry/.nycrc.json +0 -24
- package/node_modules/fetch-retry/.travis.yml +0 -3
- package/node_modules/fetch-retry/LICENSE +0 -21
- package/node_modules/fetch-retry/README.md +0 -128
- package/node_modules/fetch-retry/dist/fetch-retry.umd.js +0 -151
- package/node_modules/fetch-retry/index.d.ts +0 -29
- package/node_modules/fetch-retry/index.js +0 -143
- package/node_modules/fetch-retry/package.json +0 -41
- package/node_modules/fetch-retry/rollup.config.js +0 -12
- package/node_modules/fetch-retry/test/.eslintrc.yml +0 -7
- package/node_modules/fetch-retry/test/integration/index.js +0 -212
- package/node_modules/fetch-retry/test/integration/mock-api/index.js +0 -42
- package/node_modules/fetch-retry/test/unit/index.js +0 -1169
- package/node_modules/ssh2/lib/protocol/crypto/build/Release/.deps/Release/obj.target/sshcrypto/src/binding.o.d +0 -265
- package/node_modules/ssh2/lib/protocol/crypto/build/Release/.deps/Release/obj.target/sshcrypto.node.d +0 -1
- package/node_modules/ssh2/lib/protocol/crypto/build/Release/.deps/Release/sshcrypto.node.d +0 -1
- package/node_modules/ssh2/lib/protocol/crypto/build/Release/obj.target/sshcrypto/src/binding.o +0 -0
- package/node_modules/ssh2/lib/protocol/crypto/build/Release/obj.target/sshcrypto.node +0 -0
- package/node_modules/ssh2/lib/protocol/crypto/build/Release/sshcrypto.node +0 -0
|
@@ -1,19 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
exports.__esModule = true;
|
|
4
|
-
exports.WORKER_MANIFEST_FILE = exports.WORKERS_DIR = exports.PROJECT_DESCRIPTOR_FILE = exports.CONVENTIONAL_PROJECT_DIR = exports.BUILD_DIR = void 0;
|
|
5
|
-
exports.discoverWorkers = discoverWorkers;
|
|
6
|
-
exports.findWorker = findWorker;
|
|
7
|
-
exports.readProjectDescriptor = readProjectDescriptor;
|
|
8
|
-
exports.readWorkerManifest = readWorkerManifest;
|
|
9
|
-
exports.resolveProjectDir = resolveProjectDir;
|
|
10
|
-
exports.writeProjectDescriptor = writeProjectDescriptor;
|
|
11
|
-
exports.writeWorkerManifest = writeWorkerManifest;
|
|
12
|
-
var _nodeFs = _interopRequireDefault(require("node:fs"));
|
|
13
|
-
var _nodePath = _interopRequireDefault(require("node:path"));
|
|
14
|
-
var _userError = _interopRequireDefault(require("../user-error"));
|
|
15
|
-
var _validation = require("./validation");
|
|
16
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
17
2
|
/**
|
|
18
3
|
* Edge-workers project resolution and on-disk layout helpers.
|
|
19
4
|
*
|
|
@@ -28,39 +13,54 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
28
13
|
* worker.json <- per-worker manifest
|
|
29
14
|
* assembly/index.ts <- entry (toolchain-specific)
|
|
30
15
|
*/
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.CONVENTIONAL_PROJECT_DIR = exports.BUILD_DIR = exports.WORKERS_DIR = exports.WORKER_MANIFEST_FILE = exports.PROJECT_DESCRIPTOR_FILE = void 0;
|
|
21
|
+
exports.resolveProjectDir = resolveProjectDir;
|
|
22
|
+
exports.readProjectDescriptor = readProjectDescriptor;
|
|
23
|
+
exports.writeProjectDescriptor = writeProjectDescriptor;
|
|
24
|
+
exports.readWorkerManifest = readWorkerManifest;
|
|
25
|
+
exports.writeWorkerManifest = writeWorkerManifest;
|
|
26
|
+
exports.discoverWorkers = discoverWorkers;
|
|
27
|
+
exports.findWorker = findWorker;
|
|
28
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
29
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
30
|
+
const user_error_1 = __importDefault(require("../user-error"));
|
|
31
|
+
const validation_1 = require("./validation");
|
|
32
|
+
exports.PROJECT_DESCRIPTOR_FILE = 'edge-workers.json';
|
|
33
|
+
exports.WORKER_MANIFEST_FILE = 'worker.json';
|
|
34
|
+
exports.WORKERS_DIR = 'workers';
|
|
35
35
|
/** Conventional output directory for compiled artifacts, relative to the project root. */
|
|
36
|
-
|
|
36
|
+
exports.BUILD_DIR = 'build';
|
|
37
37
|
/** Conventional subfolder checked when resolving from a site-repo root. */
|
|
38
|
-
|
|
38
|
+
exports.CONVENTIONAL_PROJECT_DIR = 'edge-workers';
|
|
39
39
|
function isProjectRoot(dir) {
|
|
40
|
-
|
|
40
|
+
return node_fs_1.default.existsSync(node_path_1.default.join(dir, exports.PROJECT_DESCRIPTOR_FILE));
|
|
41
41
|
}
|
|
42
|
-
|
|
43
42
|
/**
|
|
44
43
|
* Read a project file as UTF-8, rejecting symlinks before opening so a symlinked
|
|
45
44
|
* descriptor/manifest can't redirect the read outside the project tree.
|
|
46
45
|
*/
|
|
47
46
|
function readProjectFile(file, label) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
47
|
+
let stat;
|
|
48
|
+
try {
|
|
49
|
+
stat = node_fs_1.default.lstatSync(file);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
throw new user_error_1.default(`Could not read ${label} at "${file}".`);
|
|
53
|
+
}
|
|
54
|
+
if (stat.isSymbolicLink()) {
|
|
55
|
+
throw new user_error_1.default(`${label} at "${file}" must not be a symbolic link.`);
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
return node_fs_1.default.readFileSync(file, 'utf8');
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
throw new user_error_1.default(`Could not read ${label} at "${file}".`);
|
|
62
|
+
}
|
|
62
63
|
}
|
|
63
|
-
|
|
64
64
|
/**
|
|
65
65
|
* Resolve the edge-workers project directory for a command.
|
|
66
66
|
*
|
|
@@ -71,119 +71,110 @@ function readProjectFile(file, label) {
|
|
|
71
71
|
* 4. Otherwise throw a UserError with guidance.
|
|
72
72
|
*/
|
|
73
73
|
function resolveProjectDir(opts = {}, cwd = process.cwd()) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
74
|
+
if (opts.path !== undefined) {
|
|
75
|
+
// `--path` passed without a value arrives as a boolean, not a string;
|
|
76
|
+
// guard so we surface a clear error instead of a throw from path.resolve().
|
|
77
|
+
if (typeof opts.path !== 'string' || opts.path === '') {
|
|
78
|
+
throw new user_error_1.default('The --path flag requires a path to the edge-workers project.');
|
|
79
|
+
}
|
|
80
|
+
const explicit = node_path_1.default.resolve(cwd, opts.path);
|
|
81
|
+
if (!isProjectRoot(explicit)) {
|
|
82
|
+
throw new user_error_1.default(`No edge-workers project found at "${explicit}" (missing ${exports.PROJECT_DESCRIPTOR_FILE}).`);
|
|
83
|
+
}
|
|
84
|
+
return explicit;
|
|
83
85
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
86
|
+
// Walk up from cwd.
|
|
87
|
+
let current = node_path_1.default.resolve(cwd);
|
|
88
|
+
while (true) {
|
|
89
|
+
if (isProjectRoot(current)) {
|
|
90
|
+
return current;
|
|
91
|
+
}
|
|
92
|
+
const parent = node_path_1.default.dirname(current);
|
|
93
|
+
if (parent === current) {
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
current = parent;
|
|
92
97
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
98
|
+
// Conventional subfolder fallback.
|
|
99
|
+
const conventional = node_path_1.default.resolve(cwd, exports.CONVENTIONAL_PROJECT_DIR);
|
|
100
|
+
if (isProjectRoot(conventional)) {
|
|
101
|
+
return conventional;
|
|
96
102
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
// Conventional subfolder fallback.
|
|
101
|
-
const conventional = _nodePath.default.resolve(cwd, CONVENTIONAL_PROJECT_DIR);
|
|
102
|
-
if (isProjectRoot(conventional)) {
|
|
103
|
-
return conventional;
|
|
104
|
-
}
|
|
105
|
-
throw new _userError.default('No edge-workers project found here. Run `vip edge-workers init` to create one, ' + 'run the command from inside a project, or pass `--path` to point at one.');
|
|
103
|
+
throw new user_error_1.default('No edge-workers project found here. Run `vip edge-workers init` to create one, ' +
|
|
104
|
+
'run the command from inside a project, or pass `--path` to point at one.');
|
|
106
105
|
}
|
|
107
106
|
function readProjectDescriptor(projectDir) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
107
|
+
const file = node_path_1.default.join(projectDir, exports.PROJECT_DESCRIPTOR_FILE);
|
|
108
|
+
const raw = readProjectFile(file, 'project descriptor');
|
|
109
|
+
let parsed;
|
|
110
|
+
try {
|
|
111
|
+
parsed = JSON.parse(raw);
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
throw new user_error_1.default(`Project descriptor at "${file}" is not valid JSON.`);
|
|
115
|
+
}
|
|
116
|
+
return (0, validation_1.parseProjectDescriptor)(parsed, file);
|
|
117
117
|
}
|
|
118
118
|
function writeProjectDescriptor(projectDir, descriptor) {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
});
|
|
123
|
-
_nodeFs.default.writeFileSync(file, JSON.stringify(descriptor, null, '\t') + '\n');
|
|
119
|
+
const file = node_path_1.default.join(projectDir, exports.PROJECT_DESCRIPTOR_FILE);
|
|
120
|
+
node_fs_1.default.mkdirSync(projectDir, { recursive: true });
|
|
121
|
+
node_fs_1.default.writeFileSync(file, JSON.stringify(descriptor, null, '\t') + '\n');
|
|
124
122
|
}
|
|
125
123
|
function readWorkerManifest(workerDir) {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
124
|
+
const file = node_path_1.default.join(workerDir, exports.WORKER_MANIFEST_FILE);
|
|
125
|
+
const raw = readProjectFile(file, 'worker manifest');
|
|
126
|
+
let parsed;
|
|
127
|
+
try {
|
|
128
|
+
parsed = JSON.parse(raw);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
throw new user_error_1.default(`Worker manifest at "${file}" is not valid JSON.`);
|
|
132
|
+
}
|
|
133
|
+
return (0, validation_1.parseWorkerManifest)(parsed, file);
|
|
135
134
|
}
|
|
136
135
|
function writeWorkerManifest(workerDir, manifest) {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
});
|
|
141
|
-
_nodeFs.default.writeFileSync(file, JSON.stringify(manifest, null, '\t') + '\n');
|
|
136
|
+
const file = node_path_1.default.join(workerDir, exports.WORKER_MANIFEST_FILE);
|
|
137
|
+
node_fs_1.default.mkdirSync(workerDir, { recursive: true });
|
|
138
|
+
node_fs_1.default.writeFileSync(file, JSON.stringify(manifest, null, '\t') + '\n');
|
|
142
139
|
}
|
|
143
|
-
|
|
144
140
|
/** Discover all workers in a project by scanning each `workers/<name>/worker.json`. */
|
|
145
141
|
function discoverWorkers(projectDir) {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
}
|
|
150
|
-
const entries = _nodeFs.default.readdirSync(workersRoot, {
|
|
151
|
-
withFileTypes: true
|
|
152
|
-
});
|
|
153
|
-
const workers = [];
|
|
154
|
-
const workersByName = new Map();
|
|
155
|
-
for (const entry of entries) {
|
|
156
|
-
if (!entry.isDirectory()) {
|
|
157
|
-
continue;
|
|
142
|
+
const workersRoot = node_path_1.default.join(projectDir, exports.WORKERS_DIR);
|
|
143
|
+
if (!node_fs_1.default.existsSync(workersRoot)) {
|
|
144
|
+
return [];
|
|
158
145
|
}
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
146
|
+
const entries = node_fs_1.default.readdirSync(workersRoot, { withFileTypes: true });
|
|
147
|
+
const workers = [];
|
|
148
|
+
const workersByName = new Map();
|
|
149
|
+
for (const entry of entries) {
|
|
150
|
+
if (!entry.isDirectory()) {
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
const dir = node_path_1.default.join(workersRoot, entry.name);
|
|
154
|
+
if (!node_fs_1.default.existsSync(node_path_1.default.join(dir, exports.WORKER_MANIFEST_FILE))) {
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
const worker = { dir, manifest: readWorkerManifest(dir) };
|
|
158
|
+
const normalizedName = worker.manifest.name.toLocaleLowerCase('en-US');
|
|
159
|
+
if (workersByName.has(normalizedName)) {
|
|
160
|
+
throw new user_error_1.default(`Duplicate worker name "${worker.manifest.name}" found in this project.`);
|
|
161
|
+
}
|
|
162
|
+
workersByName.set(normalizedName, worker);
|
|
163
|
+
workers.push(worker);
|
|
162
164
|
}
|
|
163
|
-
|
|
164
|
-
dir,
|
|
165
|
-
manifest: readWorkerManifest(dir)
|
|
166
|
-
};
|
|
167
|
-
const normalizedName = worker.manifest.name.toLocaleLowerCase('en-US');
|
|
168
|
-
if (workersByName.has(normalizedName)) {
|
|
169
|
-
throw new _userError.default(`Duplicate worker name "${worker.manifest.name}" found in this project.`);
|
|
170
|
-
}
|
|
171
|
-
workersByName.set(normalizedName, worker);
|
|
172
|
-
workers.push(worker);
|
|
173
|
-
}
|
|
174
|
-
return workers.sort((left, right) => left.manifest.name.localeCompare(right.manifest.name));
|
|
165
|
+
return workers.sort((left, right) => left.manifest.name.localeCompare(right.manifest.name));
|
|
175
166
|
}
|
|
176
|
-
|
|
177
167
|
/**
|
|
178
168
|
* Find a single worker by name (the manifest `name`, falling back to the
|
|
179
169
|
* directory name for convenience).
|
|
180
170
|
*/
|
|
181
171
|
function findWorker(projectDir, name) {
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
172
|
+
const workers = discoverWorkers(projectDir);
|
|
173
|
+
const match = workers.find(worker => worker.manifest.name === name) ??
|
|
174
|
+
workers.find(worker => node_path_1.default.basename(worker.dir) === name);
|
|
175
|
+
if (!match) {
|
|
176
|
+
const available = workers.map(worker => worker.manifest.name).join(', ') || '(none)';
|
|
177
|
+
throw new user_error_1.default(`No worker named "${name}" found in this project. Available workers: ${available}.`);
|
|
178
|
+
}
|
|
179
|
+
return match;
|
|
180
|
+
}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
exports.__esModule = true;
|
|
4
|
-
exports.SDK_VERSION = exports.SDK_PACKAGE = exports.DEFAULT_ENTRY = exports.ASSEMBLYSCRIPT_VERSION = void 0;
|
|
5
2
|
/**
|
|
6
3
|
* Shared constants for the AssemblyScript toolchain. Kept in one place so a
|
|
7
4
|
* version bump or an SDK rename is a single-line change that flows into both the
|
|
8
5
|
* scaffolded templates and the scaffold/compile logic.
|
|
9
6
|
*/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.DEFAULT_ENTRY = exports.ASSEMBLYSCRIPT_VERSION = exports.SDK_VERSION = exports.SDK_PACKAGE = void 0;
|
|
9
|
+
exports.SDK_PACKAGE = '@automattic/vip-edge-workers-sdk';
|
|
10
|
+
exports.SDK_VERSION = '0.5.0';
|
|
11
|
+
exports.ASSEMBLYSCRIPT_VERSION = '0.27.0';
|
|
12
|
+
exports.DEFAULT_ENTRY = 'assembly/index.ts';
|
|
@@ -1,16 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
exports.__esModule = true;
|
|
4
|
-
exports.default = void 0;
|
|
5
|
-
var _nodeChild_process = require("node:child_process");
|
|
6
|
-
var _nodeFs = _interopRequireDefault(require("node:fs"));
|
|
7
|
-
var _nodePath = _interopRequireDefault(require("node:path"));
|
|
8
|
-
var _constants = require("./constants");
|
|
9
|
-
var _templates = require("./templates");
|
|
10
|
-
var _userError = _interopRequireDefault(require("../../../user-error"));
|
|
11
|
-
var _project = require("../../project");
|
|
12
|
-
var _validation = require("../../validation");
|
|
13
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
2
|
/**
|
|
15
3
|
* AssemblyScript toolchain: scaffolds an AssemblyScript edge-workers project,
|
|
16
4
|
* adds workers, and compiles them to `.wasm` with the canonical `asc` flags.
|
|
@@ -22,101 +10,112 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
|
|
|
22
10
|
* The scaffolded file contents live in `./templates`; shared constants (versions,
|
|
23
11
|
* SDK name, paths) live in `./constants`.
|
|
24
12
|
*/
|
|
25
|
-
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
const node_child_process_1 = require("node:child_process");
|
|
18
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
19
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
20
|
+
const constants_1 = require("./constants");
|
|
21
|
+
const templates_1 = require("./templates");
|
|
22
|
+
const user_error_1 = __importDefault(require("../../../user-error"));
|
|
23
|
+
const project_1 = require("../../project");
|
|
24
|
+
const validation_1 = require("../../validation");
|
|
26
25
|
/** Write `contents` to `filePath`, creating any missing parent directories. */
|
|
27
26
|
function writeFileEnsuringDir(filePath, contents) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
});
|
|
31
|
-
_nodeFs.default.writeFileSync(filePath, contents);
|
|
27
|
+
node_fs_1.default.mkdirSync(node_path_1.default.dirname(filePath), { recursive: true });
|
|
28
|
+
node_fs_1.default.writeFileSync(filePath, contents);
|
|
32
29
|
}
|
|
33
30
|
function assertScaffoldTargetAvailable(projectDir) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
31
|
+
if (!node_fs_1.default.existsSync(projectDir))
|
|
32
|
+
return;
|
|
33
|
+
// lstatSync (not statSync) so a symlink to a directory is rejected rather than followed.
|
|
34
|
+
if (!node_fs_1.default.lstatSync(projectDir).isDirectory()) {
|
|
35
|
+
throw new user_error_1.default(`Cannot create an edge-workers project at "${projectDir}": target is not a directory.`);
|
|
36
|
+
}
|
|
37
|
+
if (node_fs_1.default.readdirSync(projectDir).length > 0) {
|
|
38
|
+
throw new user_error_1.default(`Cannot create an edge-workers project at "${projectDir}": target is not empty.`);
|
|
39
|
+
}
|
|
42
40
|
}
|
|
43
41
|
function ascBinaryPath(projectDir) {
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
const binName = process.platform === 'win32' ? 'asc.cmd' : 'asc';
|
|
43
|
+
return node_path_1.default.join(projectDir, 'node_modules', '.bin', binName);
|
|
46
44
|
}
|
|
47
45
|
const toolchain = {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
46
|
+
type: 'assemblyscript',
|
|
47
|
+
scaffoldProject(projectDir) {
|
|
48
|
+
assertScaffoldTargetAvailable(projectDir);
|
|
49
|
+
// Every write below ensures its own parent directory, so no standalone
|
|
50
|
+
// mkdir is needed up front.
|
|
51
|
+
(0, project_1.writeProjectDescriptor)(projectDir, {
|
|
52
|
+
type: 'assemblyscript',
|
|
53
|
+
sdk: `${constants_1.SDK_PACKAGE}@${constants_1.SDK_VERSION}`,
|
|
54
|
+
});
|
|
55
|
+
writeFileEnsuringDir(node_path_1.default.join(projectDir, 'package.json'), JSON.stringify(templates_1.PACKAGE_JSON, null, '\t') + '\n');
|
|
56
|
+
writeFileEnsuringDir(node_path_1.default.join(projectDir, 'tsconfig.json'), JSON.stringify(templates_1.TSCONFIG_JSON, null, '\t') + '\n');
|
|
57
|
+
writeFileEnsuringDir(node_path_1.default.join(projectDir, '.gitignore'), templates_1.GITIGNORE);
|
|
58
|
+
writeFileEnsuringDir(node_path_1.default.join(projectDir, 'README.md'), templates_1.README);
|
|
59
|
+
// Keep the workers directory present (and committed) even when empty.
|
|
60
|
+
writeFileEnsuringDir(node_path_1.default.join(projectDir, project_1.WORKERS_DIR, '.gitkeep'), '');
|
|
61
|
+
},
|
|
62
|
+
scaffoldWorker(projectDir, name) {
|
|
63
|
+
(0, validation_1.validateWorkerName)(name);
|
|
64
|
+
const workerDir = node_path_1.default.join(projectDir, project_1.WORKERS_DIR, name);
|
|
65
|
+
if (node_fs_1.default.existsSync(workerDir)) {
|
|
66
|
+
throw new user_error_1.default(`A worker directory already exists at "${workerDir}".`);
|
|
67
|
+
}
|
|
68
|
+
(0, project_1.writeWorkerManifest)(workerDir, { name, entry: constants_1.DEFAULT_ENTRY });
|
|
69
|
+
writeFileEnsuringDir(node_path_1.default.join(workerDir, constants_1.DEFAULT_ENTRY), (0, templates_1.starterWorker)());
|
|
70
|
+
},
|
|
71
|
+
ensureAvailable(projectDir) {
|
|
72
|
+
const asc = ascBinaryPath(projectDir);
|
|
73
|
+
if (!node_fs_1.default.existsSync(asc)) {
|
|
74
|
+
throw new user_error_1.default(`The AssemblyScript compiler was not found at "${asc}". ` +
|
|
75
|
+
`Run \`npm install\` in "${projectDir}" first.`);
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
compile(projectDir, worker) {
|
|
79
|
+
const asc = ascBinaryPath(projectDir);
|
|
80
|
+
const entryCandidate = (0, validation_1.resolvePathWithin)(worker.dir, worker.manifest.entry, 'Worker entry');
|
|
81
|
+
if (!node_fs_1.default.existsSync(entryCandidate)) {
|
|
82
|
+
throw new user_error_1.default(`Worker entry file not found: "${entryCandidate}".`);
|
|
83
|
+
}
|
|
84
|
+
const entry = (0, validation_1.resolveExistingPathWithin)(worker.dir, worker.manifest.entry, 'Worker entry');
|
|
85
|
+
const nodeModules = node_path_1.default.join(projectDir, 'node_modules');
|
|
86
|
+
const workerName = (0, validation_1.validateWorkerName)(worker.manifest.name);
|
|
87
|
+
const outFile = (0, validation_1.resolveOutputPathWithin)(projectDir, node_path_1.default.join(project_1.BUILD_DIR, `${workerName}.wasm`), 'Worker build artifact', 'Worker build directory');
|
|
88
|
+
const args = [
|
|
89
|
+
entry,
|
|
90
|
+
'--runtime',
|
|
91
|
+
'stub',
|
|
92
|
+
'--path',
|
|
93
|
+
nodeModules,
|
|
94
|
+
'--outFile',
|
|
95
|
+
outFile,
|
|
96
|
+
'--optimizeLevel',
|
|
97
|
+
'3',
|
|
98
|
+
'--shrinkLevel',
|
|
99
|
+
'2',
|
|
100
|
+
];
|
|
101
|
+
// Enable the json-as transform when it's installed so workers can parse JSON.
|
|
102
|
+
// The transform lives at the `transform` subpath; the package root has no
|
|
103
|
+
// requirable entry, so `--transform json-as` fails to resolve.
|
|
104
|
+
if (node_fs_1.default.existsSync(node_path_1.default.join(nodeModules, 'json-as'))) {
|
|
105
|
+
args.push('--transform', 'json-as/transform');
|
|
106
|
+
}
|
|
107
|
+
// asc misbehaves if NODE_OPTIONS is inherited; drop it like the SDK build does.
|
|
108
|
+
const env = { ...process.env };
|
|
109
|
+
delete env.NODE_OPTIONS;
|
|
110
|
+
const result = (0, node_child_process_1.spawnSync)(asc, args, { cwd: projectDir, env, encoding: 'utf8' });
|
|
111
|
+
if (result.error) {
|
|
112
|
+
throw new user_error_1.default(`Failed to run the AssemblyScript compiler: ${result.error.message}`);
|
|
113
|
+
}
|
|
114
|
+
if (result.status !== 0) {
|
|
115
|
+
const details = (result.stderr || result.stdout || '').trim();
|
|
116
|
+
throw new user_error_1.default(`Compilation failed for worker "${worker.manifest.name}"${details ? `:\n${details}` : '.'}`);
|
|
117
|
+
}
|
|
118
|
+
return (0, validation_1.resolveOutputPathWithin)(projectDir, node_path_1.default.join(project_1.BUILD_DIR, `${workerName}.wasm`), 'Worker build artifact', 'Worker build directory');
|
|
119
|
+
},
|
|
121
120
|
};
|
|
122
|
-
|
|
121
|
+
exports.default = toolchain;
|