@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.
Files changed (311) hide show
  1. package/assets/dev-env.lando.template.yml.ejs +1 -1
  2. package/dist/bin/vip-app-deploy-token-generate.js +110 -78
  3. package/dist/bin/vip-app-deploy-token.js +24 -16
  4. package/dist/bin/vip-app-deploy-validate.js +45 -41
  5. package/dist/bin/vip-app-deploy.js +222 -215
  6. package/dist/bin/vip-app-list.js +59 -43
  7. package/dist/bin/vip-app.js +97 -66
  8. package/dist/bin/vip-backup-db.js +36 -29
  9. package/dist/bin/vip-backup.js +16 -9
  10. package/dist/bin/vip-cache-purge-url.js +93 -55
  11. package/dist/bin/vip-cache.js +23 -14
  12. package/dist/bin/vip-config-envvar-delete.js +74 -73
  13. package/dist/bin/vip-config-envvar-get-all.js +68 -68
  14. package/dist/bin/vip-config-envvar-get.js +46 -46
  15. package/dist/bin/vip-config-envvar-list.js +54 -57
  16. package/dist/bin/vip-config-envvar-set.js +102 -96
  17. package/dist/bin/vip-config-envvar.js +38 -24
  18. package/dist/bin/vip-config-software-get.js +88 -75
  19. package/dist/bin/vip-config-software-update.js +116 -120
  20. package/dist/bin/vip-config-software.js +31 -21
  21. package/dist/bin/vip-config.js +25 -17
  22. package/dist/bin/vip-db-phpmyadmin.js +40 -39
  23. package/dist/bin/vip-db.js +13 -12
  24. package/dist/bin/vip-defensive-mode-configure.js +197 -197
  25. package/dist/bin/vip-defensive-mode-disable.js +43 -35
  26. package/dist/bin/vip-defensive-mode-enable.js +47 -38
  27. package/dist/bin/vip-defensive-mode.js +28 -17
  28. package/dist/bin/vip-dev-env-create.js +147 -104
  29. package/dist/bin/vip-dev-env-destroy.js +48 -39
  30. package/dist/bin/vip-dev-env-envvar-delete.js +60 -49
  31. package/dist/bin/vip-dev-env-envvar-get-all.js +52 -45
  32. package/dist/bin/vip-dev-env-envvar-get.js +48 -37
  33. package/dist/bin/vip-dev-env-envvar-list.js +48 -41
  34. package/dist/bin/vip-dev-env-envvar-set.js +83 -70
  35. package/dist/bin/vip-dev-env-envvar.js +38 -23
  36. package/dist/bin/vip-dev-env-exec.js +81 -74
  37. package/dist/bin/vip-dev-env-import-media.js +34 -26
  38. package/dist/bin/vip-dev-env-import-sql.js +65 -51
  39. package/dist/bin/vip-dev-env-import.js +23 -14
  40. package/dist/bin/vip-dev-env-info.js +59 -50
  41. package/dist/bin/vip-dev-env-list.js +34 -31
  42. package/dist/bin/vip-dev-env-logs.js +59 -49
  43. package/dist/bin/vip-dev-env-purge.js +71 -63
  44. package/dist/bin/vip-dev-env-shell.js +82 -71
  45. package/dist/bin/vip-dev-env-start.js +77 -65
  46. package/dist/bin/vip-dev-env-stop.js +80 -74
  47. package/dist/bin/vip-dev-env-sync-sql.js +80 -72
  48. package/dist/bin/vip-dev-env-sync.js +18 -11
  49. package/dist/bin/vip-dev-env-update.js +93 -84
  50. package/dist/bin/vip-dev-env.js +25 -8
  51. package/dist/bin/vip-edge-workers-build.js +82 -54
  52. package/dist/bin/vip-edge-workers-delete.js +84 -52
  53. package/dist/bin/vip-edge-workers-deploy.js +186 -126
  54. package/dist/bin/vip-edge-workers-disable.js +75 -44
  55. package/dist/bin/vip-edge-workers-enable.js +86 -54
  56. package/dist/bin/vip-edge-workers-get.js +108 -88
  57. package/dist/bin/vip-edge-workers-init.js +83 -53
  58. package/dist/bin/vip-edge-workers-list.js +89 -54
  59. package/dist/bin/vip-edge-workers-new.js +98 -69
  60. package/dist/bin/vip-edge-workers-validate.js +123 -82
  61. package/dist/bin/vip-edge-workers.js +19 -6
  62. package/dist/bin/vip-export-sql.js +75 -69
  63. package/dist/bin/vip-export.js +12 -7
  64. package/dist/bin/vip-import-media-abort.js +99 -73
  65. package/dist/bin/vip-import-media-status.js +83 -51
  66. package/dist/bin/vip-import-media.js +165 -166
  67. package/dist/bin/vip-import-sql-status.js +75 -45
  68. package/dist/bin/vip-import-sql.js +536 -596
  69. package/dist/bin/vip-import-validate-files.js +122 -141
  70. package/dist/bin/vip-import-validate-sql.js +52 -16
  71. package/dist/bin/vip-import.js +16 -7
  72. package/dist/bin/vip-logout.js +17 -13
  73. package/dist/bin/vip-logs.js +209 -183
  74. package/dist/bin/vip-search-replace.js +85 -53
  75. package/dist/bin/vip-slowlogs.js +168 -147
  76. package/dist/bin/vip-sync.js +163 -133
  77. package/dist/bin/vip-whoami.js +71 -35
  78. package/dist/bin/vip-wp.js +506 -549
  79. package/dist/bin/vip.js +161 -116
  80. package/dist/commands/backup-db.js +183 -149
  81. package/dist/commands/dev-env-import-sql.js +162 -117
  82. package/dist/commands/dev-env-sync-sql.js +372 -330
  83. package/dist/commands/export-sql.js +441 -425
  84. package/dist/commands/phpmyadmin.js +232 -212
  85. package/dist/commands/wp-ssh.js +218 -187
  86. package/dist/lib/analytics/clients/tracks.js +84 -91
  87. package/dist/lib/analytics/index.js +27 -27
  88. package/dist/lib/api/app.js +37 -36
  89. package/dist/lib/api/cache-purge.js +17 -20
  90. package/dist/lib/api/constants.js +5 -6
  91. package/dist/lib/api/edge-workers.js +84 -135
  92. package/dist/lib/api/error-debug.js +10 -13
  93. package/dist/lib/api/feature-flags.js +16 -17
  94. package/dist/lib/api/http.js +47 -48
  95. package/dist/lib/api/user.js +17 -18
  96. package/dist/lib/api.js +107 -116
  97. package/dist/lib/app-logs/app-logs.js +24 -25
  98. package/dist/lib/app-slowlogs/app-slowlogs.js +23 -24
  99. package/dist/lib/app-slowlogs/types.js +2 -1
  100. package/dist/lib/app.js +6 -8
  101. package/dist/lib/backup-storage-availability/backup-storage-availability.js +119 -119
  102. package/dist/lib/backup-storage-availability/docker-machine-not-found-error.js +5 -6
  103. package/dist/lib/cli/apiConfig.js +71 -41
  104. package/dist/lib/cli/command.js +1120 -873
  105. package/dist/lib/cli/config.js +29 -29
  106. package/dist/lib/cli/envAlias.js +35 -50
  107. package/dist/lib/cli/exit.js +19 -19
  108. package/dist/lib/cli/format.js +172 -172
  109. package/dist/lib/cli/progress.js +193 -236
  110. package/dist/lib/cli/prompt.js +14 -15
  111. package/dist/lib/cli/runtime-mode.js +5 -6
  112. package/dist/lib/client-file-uploader.js +489 -641
  113. package/dist/lib/config/software.js +206 -212
  114. package/dist/lib/constants/dev-environment.js +40 -37
  115. package/dist/lib/constants/file-size.js +6 -7
  116. package/dist/lib/constants/vipgo.js +24 -12
  117. package/dist/lib/custom-deploy/custom-deploy.js +138 -120
  118. package/dist/lib/database.js +88 -85
  119. package/dist/lib/defensive-mode/api.js +41 -46
  120. package/dist/lib/defensive-mode/cli-helpers.js +40 -40
  121. package/dist/lib/dev-environment/dev-environment-cli.js +776 -735
  122. package/dist/lib/dev-environment/dev-environment-configuration-file.js +224 -191
  123. package/dist/lib/dev-environment/dev-environment-core.js +697 -732
  124. package/dist/lib/dev-environment/dev-environment-database.js +57 -41
  125. package/dist/lib/dev-environment/dev-environment-lando.js +734 -666
  126. package/dist/lib/dev-environment/docker-utils.js +96 -90
  127. package/dist/lib/dev-environment/env-vars.js +61 -59
  128. package/dist/lib/dev-environment/lando-loader.js +6 -7
  129. package/dist/lib/dev-environment/types.js +2 -1
  130. package/dist/lib/edge-workers/confirmation.js +42 -36
  131. package/dist/lib/edge-workers/deployment.js +150 -159
  132. package/dist/lib/edge-workers/index.js +68 -85
  133. package/dist/lib/edge-workers/location.js +26 -26
  134. package/dist/lib/edge-workers/output.js +14 -15
  135. package/dist/lib/edge-workers/project.js +123 -132
  136. package/dist/lib/edge-workers/toolchains/assemblyscript/constants.js +6 -8
  137. package/dist/lib/edge-workers/toolchains/assemblyscript/index.js +100 -101
  138. package/dist/lib/edge-workers/toolchains/assemblyscript/templates.js +31 -33
  139. package/dist/lib/edge-workers/toolchains/index.js +15 -15
  140. package/dist/lib/edge-workers/types.js +10 -38
  141. package/dist/lib/edge-workers/validation.js +161 -150
  142. package/dist/lib/env.js +16 -17
  143. package/dist/lib/envvar/api-delete.js +16 -18
  144. package/dist/lib/envvar/api-get-all.js +15 -19
  145. package/dist/lib/envvar/api-get.js +8 -9
  146. package/dist/lib/envvar/api-list.js +16 -21
  147. package/dist/lib/envvar/api-set.js +20 -19
  148. package/dist/lib/envvar/api.js +34 -29
  149. package/dist/lib/envvar/input.js +29 -34
  150. package/dist/lib/envvar/logging.js +9 -11
  151. package/dist/lib/envvar/read-file.js +6 -7
  152. package/dist/lib/http/download-file.js +76 -44
  153. package/dist/lib/http/proxy-agent.js +37 -40
  154. package/dist/lib/http/proxy-dispatcher.js +69 -71
  155. package/dist/lib/keychain/insecure.js +40 -36
  156. package/dist/lib/keychain/keychain.js +2 -1
  157. package/dist/lib/keychain/secure.js +16 -15
  158. package/dist/lib/keychain.js +22 -22
  159. package/dist/lib/live-backup-copy.js +117 -115
  160. package/dist/lib/logout.js +17 -19
  161. package/dist/lib/media-import/config.js +15 -14
  162. package/dist/lib/media-import/media-file-import.js +9 -13
  163. package/dist/lib/media-import/progress.js +53 -65
  164. package/dist/lib/media-import/status.js +241 -256
  165. package/dist/lib/media-import/utils.js +15 -15
  166. package/dist/lib/node-version-check.js +16 -16
  167. package/dist/lib/promise.js +16 -17
  168. package/dist/lib/read-file.js +48 -16
  169. package/dist/lib/rechallenge/client.js +37 -43
  170. package/dist/lib/rechallenge/errors.js +38 -37
  171. package/dist/lib/rechallenge/flow.js +148 -123
  172. package/dist/lib/rechallenge/index.js +23 -24
  173. package/dist/lib/rechallenge/link.js +153 -151
  174. package/dist/lib/rechallenge/open-browser.js +14 -17
  175. package/dist/lib/rechallenge/token-cache.js +83 -86
  176. package/dist/lib/rechallenge/types.js +5 -14
  177. package/dist/lib/retry.js +93 -129
  178. package/dist/lib/search-and-replace.js +164 -148
  179. package/dist/lib/site-import/db-file-import.js +12 -16
  180. package/dist/lib/site-import/status.js +291 -291
  181. package/dist/lib/token.js +86 -87
  182. package/dist/lib/tracker.js +51 -62
  183. package/dist/lib/types/graphql/rate-limit-exceeded-error.js +2 -1
  184. package/dist/lib/types.js +2 -1
  185. package/dist/lib/user-error.js +6 -8
  186. package/dist/lib/utils.js +81 -87
  187. package/dist/lib/validations/custom-deploy.js +218 -186
  188. package/dist/lib/validations/is-multi-site-sql-dump.js +6 -6
  189. package/dist/lib/validations/is-multi-site.js +83 -50
  190. package/dist/lib/validations/is-multisite-domain-mapped.js +92 -62
  191. package/dist/lib/validations/line-by-line.js +78 -46
  192. package/dist/lib/validations/site-type.js +59 -63
  193. package/dist/lib/validations/sql-insert-parser.js +415 -0
  194. package/dist/lib/validations/sql.js +551 -431
  195. package/dist/lib/validations/utils.js +27 -29
  196. package/dist/lib/vip-import-validate-files.js +481 -490
  197. package/dist/lib/wp/helpers.js +41 -45
  198. package/dist/lib/wp/readline.js +21 -57
  199. package/dist/lib/xdg-data.js +11 -12
  200. package/helpers/mark-cli-executable.js +9 -0
  201. package/node_modules/@apollo/client/CHANGELOG.md +10 -0
  202. package/node_modules/@apollo/client/__cjs/cache/inmemory/helpers.cjs +5 -0
  203. package/node_modules/@apollo/client/__cjs/cache/inmemory/helpers.cjs.map +1 -1
  204. package/node_modules/@apollo/client/__cjs/cache/inmemory/inMemoryCache.cjs +2 -1
  205. package/node_modules/@apollo/client/__cjs/cache/inmemory/inMemoryCache.cjs.map +1 -1
  206. package/node_modules/@apollo/client/__cjs/cache/inmemory/key-extractor.cjs +14 -2
  207. package/node_modules/@apollo/client/__cjs/cache/inmemory/key-extractor.cjs.map +1 -1
  208. package/node_modules/@apollo/client/__cjs/cache/inmemory/policies.cjs +16 -0
  209. package/node_modules/@apollo/client/__cjs/cache/inmemory/policies.cjs.map +1 -1
  210. package/node_modules/@apollo/client/__cjs/cache/inmemory/policies.d.cts +2 -0
  211. package/node_modules/@apollo/client/__cjs/cache/inmemory/writeToStore.cjs +3 -2
  212. package/node_modules/@apollo/client/__cjs/cache/inmemory/writeToStore.cjs.map +1 -1
  213. package/node_modules/@apollo/client/__cjs/core/QueryInfo.cjs +9 -1
  214. package/node_modules/@apollo/client/__cjs/core/QueryInfo.cjs.map +1 -1
  215. package/node_modules/@apollo/client/__cjs/core/QueryInfo.d.cts +1 -1
  216. package/node_modules/@apollo/client/__cjs/core/QueryManager.cjs +10 -3
  217. package/node_modules/@apollo/client/__cjs/core/QueryManager.cjs.map +1 -1
  218. package/node_modules/@apollo/client/__cjs/react/hooks/useFragment.cjs.map +1 -1
  219. package/node_modules/@apollo/client/__cjs/react/hooks/useFragment.d.cts +42 -43
  220. package/node_modules/@apollo/client/__cjs/version.cjs +1 -1
  221. package/node_modules/@apollo/client/cache/inmemory/helpers.js +5 -0
  222. package/node_modules/@apollo/client/cache/inmemory/helpers.js.map +1 -1
  223. package/node_modules/@apollo/client/cache/inmemory/inMemoryCache.js +2 -1
  224. package/node_modules/@apollo/client/cache/inmemory/inMemoryCache.js.map +1 -1
  225. package/node_modules/@apollo/client/cache/inmemory/key-extractor.js +14 -2
  226. package/node_modules/@apollo/client/cache/inmemory/key-extractor.js.map +1 -1
  227. package/node_modules/@apollo/client/cache/inmemory/policies.d.ts +2 -0
  228. package/node_modules/@apollo/client/cache/inmemory/policies.js +17 -1
  229. package/node_modules/@apollo/client/cache/inmemory/policies.js.map +1 -1
  230. package/node_modules/@apollo/client/cache/inmemory/writeToStore.js +3 -2
  231. package/node_modules/@apollo/client/cache/inmemory/writeToStore.js.map +1 -1
  232. package/node_modules/@apollo/client/core/QueryInfo.d.ts +1 -1
  233. package/node_modules/@apollo/client/core/QueryInfo.js +10 -2
  234. package/node_modules/@apollo/client/core/QueryInfo.js.map +1 -1
  235. package/node_modules/@apollo/client/core/QueryManager.js +10 -3
  236. package/node_modules/@apollo/client/core/QueryManager.js.map +1 -1
  237. package/node_modules/@apollo/client/package.json +1 -1
  238. package/node_modules/@apollo/client/react/hooks/useFragment.d.ts +42 -43
  239. package/node_modules/@apollo/client/react/hooks/useFragment.js.map +1 -1
  240. package/node_modules/@apollo/client/react/hooks-compiled/useFragment.d.ts +42 -43
  241. package/node_modules/@apollo/client/react/hooks-compiled/useFragment.js.map +1 -1
  242. package/node_modules/@apollo/client/version.js +1 -1
  243. package/node_modules/@automattic/vip-search-replace/README.md +6 -1
  244. package/node_modules/@automattic/vip-search-replace/lib/index.js +46 -14
  245. package/node_modules/@automattic/vip-search-replace/package.json +1 -1
  246. package/node_modules/@types/node/README.md +1 -1
  247. package/node_modules/@types/node/package.json +2 -2
  248. package/node_modules/@types/node/zlib.d.ts +752 -0
  249. package/node_modules/check-disk-space/README.md +92 -32
  250. package/node_modules/check-disk-space/dist/check-disk-space.d.mts +58 -0
  251. package/node_modules/check-disk-space/dist/check-disk-space.mjs +170 -190
  252. package/node_modules/check-disk-space/package.json +43 -71
  253. package/node_modules/cpu-features/build/Makefile +2 -2
  254. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/filesystem.o.d +1 -1
  255. 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
  256. 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
  257. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_aarch64_windows.o.d +1 -1
  258. 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
  259. 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
  260. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_ppc_linux.o.d +1 -1
  261. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_freebsd.o.d +1 -1
  262. 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
  263. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_macos.o.d +1 -1
  264. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/impl_x86_windows.o.d +1 -1
  265. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/stack_line_reader.o.d +1 -1
  266. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpu_features/deps/cpu_features/src/string_view.o.d +1 -1
  267. package/node_modules/cpu-features/build/Release/.deps/Release/obj.target/cpufeatures/src/binding.o.d +157 -145
  268. package/node_modules/cpu-features/build/Release/cpufeatures.node +0 -0
  269. package/node_modules/cpu-features/build/Release/obj.target/cpufeatures/src/binding.o +0 -0
  270. package/node_modules/cpu-features/build/Release/obj.target/cpufeatures.node +0 -0
  271. package/node_modules/cpu-features/build/config.gypi +100 -31
  272. package/node_modules/cpu-features/build/cpufeatures.target.mk +14 -14
  273. package/node_modules/cpu-features/build/deps/cpu_features/cpu_features.target.mk +14 -14
  274. package/node_modules/ssh2/lib/protocol/crypto/build/Makefile +2 -2
  275. package/node_modules/ssh2/lib/protocol/crypto/build/Release/.deps/Release/obj.target/sshcrypto/src/binding.o.d.raw +136 -0
  276. package/node_modules/ssh2/lib/protocol/crypto/build/sshcrypto.target.mk +14 -14
  277. package/node_modules/undici/docs/docs/api/Interceptors.md +15 -2
  278. package/node_modules/undici/lib/dispatcher/client-h2.js +78 -3
  279. package/node_modules/undici/lib/dispatcher/pool-base.js +20 -3
  280. package/node_modules/undici/package.json +3 -3
  281. package/node_modules/undici/types/api.d.ts +1 -1
  282. package/node_modules/undici/types/utility.d.ts +4 -4
  283. package/package.json +44 -13
  284. package/dist/lib/analytics/clients/client.js +0 -1
  285. package/dist/lib/analytics/clients/pendo.js +0 -78
  286. package/helpers/check-version.js +0 -16
  287. package/node_modules/check-disk-space/dist/check-disk-space.cjs +0 -210
  288. package/node_modules/check-disk-space/dist/check-disk-space.d.ts +0 -53
  289. package/node_modules/fetch-retry/.eslintignore +0 -1
  290. package/node_modules/fetch-retry/.eslintrc.yml +0 -20
  291. package/node_modules/fetch-retry/.github/workflows/node.js.yml +0 -32
  292. package/node_modules/fetch-retry/.husky/pre-commit +0 -6
  293. package/node_modules/fetch-retry/.nycrc.json +0 -24
  294. package/node_modules/fetch-retry/.travis.yml +0 -3
  295. package/node_modules/fetch-retry/LICENSE +0 -21
  296. package/node_modules/fetch-retry/README.md +0 -128
  297. package/node_modules/fetch-retry/dist/fetch-retry.umd.js +0 -151
  298. package/node_modules/fetch-retry/index.d.ts +0 -29
  299. package/node_modules/fetch-retry/index.js +0 -143
  300. package/node_modules/fetch-retry/package.json +0 -41
  301. package/node_modules/fetch-retry/rollup.config.js +0 -12
  302. package/node_modules/fetch-retry/test/.eslintrc.yml +0 -7
  303. package/node_modules/fetch-retry/test/integration/index.js +0 -212
  304. package/node_modules/fetch-retry/test/integration/mock-api/index.js +0 -42
  305. package/node_modules/fetch-retry/test/unit/index.js +0 -1169
  306. package/node_modules/ssh2/lib/protocol/crypto/build/Release/.deps/Release/obj.target/sshcrypto/src/binding.o.d +0 -265
  307. package/node_modules/ssh2/lib/protocol/crypto/build/Release/.deps/Release/obj.target/sshcrypto.node.d +0 -1
  308. package/node_modules/ssh2/lib/protocol/crypto/build/Release/.deps/Release/sshcrypto.node.d +0 -1
  309. package/node_modules/ssh2/lib/protocol/crypto/build/Release/obj.target/sshcrypto/src/binding.o +0 -0
  310. package/node_modules/ssh2/lib/protocol/crypto/build/Release/obj.target/sshcrypto.node +0 -0
  311. 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
- const PROJECT_DESCRIPTOR_FILE = exports.PROJECT_DESCRIPTOR_FILE = 'edge-workers.json';
33
- const WORKER_MANIFEST_FILE = exports.WORKER_MANIFEST_FILE = 'worker.json';
34
- const WORKERS_DIR = exports.WORKERS_DIR = 'workers';
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
- const BUILD_DIR = exports.BUILD_DIR = 'build';
36
+ exports.BUILD_DIR = 'build';
37
37
  /** Conventional subfolder checked when resolving from a site-repo root. */
38
- const CONVENTIONAL_PROJECT_DIR = exports.CONVENTIONAL_PROJECT_DIR = 'edge-workers';
38
+ exports.CONVENTIONAL_PROJECT_DIR = 'edge-workers';
39
39
  function isProjectRoot(dir) {
40
- return _nodeFs.default.existsSync(_nodePath.default.join(dir, PROJECT_DESCRIPTOR_FILE));
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
- let stat;
49
- try {
50
- stat = _nodeFs.default.lstatSync(file);
51
- } catch {
52
- throw new _userError.default(`Could not read ${label} at "${file}".`);
53
- }
54
- if (stat.isSymbolicLink()) {
55
- throw new _userError.default(`${label} at "${file}" must not be a symbolic link.`);
56
- }
57
- try {
58
- return _nodeFs.default.readFileSync(file, 'utf8');
59
- } catch {
60
- throw new _userError.default(`Could not read ${label} at "${file}".`);
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
- 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 _userError.default('The --path flag requires a path to the edge-workers project.');
79
- }
80
- const explicit = _nodePath.default.resolve(cwd, opts.path);
81
- if (!isProjectRoot(explicit)) {
82
- throw new _userError.default(`No edge-workers project found at "${explicit}" (missing ${PROJECT_DESCRIPTOR_FILE}).`);
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
- return explicit;
85
- }
86
-
87
- // Walk up from cwd.
88
- let current = _nodePath.default.resolve(cwd);
89
- while (true) {
90
- if (isProjectRoot(current)) {
91
- return current;
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
- const parent = _nodePath.default.dirname(current);
94
- if (parent === current) {
95
- break;
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
- current = parent;
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
- const file = _nodePath.default.join(projectDir, PROJECT_DESCRIPTOR_FILE);
109
- const raw = readProjectFile(file, 'project descriptor');
110
- let parsed;
111
- try {
112
- parsed = JSON.parse(raw);
113
- } catch {
114
- throw new _userError.default(`Project descriptor at "${file}" is not valid JSON.`);
115
- }
116
- return (0, _validation.parseProjectDescriptor)(parsed, file);
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
- const file = _nodePath.default.join(projectDir, PROJECT_DESCRIPTOR_FILE);
120
- _nodeFs.default.mkdirSync(projectDir, {
121
- recursive: true
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
- const file = _nodePath.default.join(workerDir, WORKER_MANIFEST_FILE);
127
- const raw = readProjectFile(file, 'worker manifest');
128
- let parsed;
129
- try {
130
- parsed = JSON.parse(raw);
131
- } catch {
132
- throw new _userError.default(`Worker manifest at "${file}" is not valid JSON.`);
133
- }
134
- return (0, _validation.parseWorkerManifest)(parsed, file);
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
- const file = _nodePath.default.join(workerDir, WORKER_MANIFEST_FILE);
138
- _nodeFs.default.mkdirSync(workerDir, {
139
- recursive: true
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
- const workersRoot = _nodePath.default.join(projectDir, WORKERS_DIR);
147
- if (!_nodeFs.default.existsSync(workersRoot)) {
148
- return [];
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 dir = _nodePath.default.join(workersRoot, entry.name);
160
- if (!_nodeFs.default.existsSync(_nodePath.default.join(dir, WORKER_MANIFEST_FILE))) {
161
- continue;
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
- const worker = {
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
- const workers = discoverWorkers(projectDir);
183
- const match = workers.find(worker => worker.manifest.name === name) ?? workers.find(worker => _nodePath.default.basename(worker.dir) === name);
184
- if (!match) {
185
- const available = workers.map(worker => worker.manifest.name).join(', ') || '(none)';
186
- throw new _userError.default(`No worker named "${name}" found in this project. Available workers: ${available}.`);
187
- }
188
- return match;
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
- const SDK_PACKAGE = exports.SDK_PACKAGE = '@automattic/vip-edge-workers-sdk';
12
- const SDK_VERSION = exports.SDK_VERSION = '0.5.0';
13
- const ASSEMBLYSCRIPT_VERSION = exports.ASSEMBLYSCRIPT_VERSION = '0.27.0';
14
- const DEFAULT_ENTRY = exports.DEFAULT_ENTRY = 'assembly/index.ts';
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
- _nodeFs.default.mkdirSync(_nodePath.default.dirname(filePath), {
29
- recursive: true
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
- if (!_nodeFs.default.existsSync(projectDir)) return;
35
- // lstatSync (not statSync) so a symlink to a directory is rejected rather than followed.
36
- if (!_nodeFs.default.lstatSync(projectDir).isDirectory()) {
37
- throw new _userError.default(`Cannot create an edge-workers project at "${projectDir}": target is not a directory.`);
38
- }
39
- if (_nodeFs.default.readdirSync(projectDir).length > 0) {
40
- throw new _userError.default(`Cannot create an edge-workers project at "${projectDir}": target is not empty.`);
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
- const binName = process.platform === 'win32' ? 'asc.cmd' : 'asc';
45
- return _nodePath.default.join(projectDir, 'node_modules', '.bin', binName);
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
- type: 'assemblyscript',
49
- scaffoldProject(projectDir) {
50
- assertScaffoldTargetAvailable(projectDir);
51
-
52
- // Every write below ensures its own parent directory, so no standalone
53
- // mkdir is needed up front.
54
- (0, _project.writeProjectDescriptor)(projectDir, {
55
- type: 'assemblyscript',
56
- sdk: `${_constants.SDK_PACKAGE}@${_constants.SDK_VERSION}`
57
- });
58
- writeFileEnsuringDir(_nodePath.default.join(projectDir, 'package.json'), JSON.stringify(_templates.PACKAGE_JSON, null, '\t') + '\n');
59
- writeFileEnsuringDir(_nodePath.default.join(projectDir, 'tsconfig.json'), JSON.stringify(_templates.TSCONFIG_JSON, null, '\t') + '\n');
60
- writeFileEnsuringDir(_nodePath.default.join(projectDir, '.gitignore'), _templates.GITIGNORE);
61
- writeFileEnsuringDir(_nodePath.default.join(projectDir, 'README.md'), _templates.README);
62
- // Keep the workers directory present (and committed) even when empty.
63
- writeFileEnsuringDir(_nodePath.default.join(projectDir, _project.WORKERS_DIR, '.gitkeep'), '');
64
- },
65
- scaffoldWorker(projectDir, name) {
66
- (0, _validation.validateWorkerName)(name);
67
- const workerDir = _nodePath.default.join(projectDir, _project.WORKERS_DIR, name);
68
- if (_nodeFs.default.existsSync(workerDir)) {
69
- throw new _userError.default(`A worker directory already exists at "${workerDir}".`);
70
- }
71
- (0, _project.writeWorkerManifest)(workerDir, {
72
- name,
73
- entry: _constants.DEFAULT_ENTRY
74
- });
75
- writeFileEnsuringDir(_nodePath.default.join(workerDir, _constants.DEFAULT_ENTRY), (0, _templates.starterWorker)());
76
- },
77
- ensureAvailable(projectDir) {
78
- const asc = ascBinaryPath(projectDir);
79
- if (!_nodeFs.default.existsSync(asc)) {
80
- throw new _userError.default(`The AssemblyScript compiler was not found at "${asc}". ` + `Run \`npm install\` in "${projectDir}" first.`);
81
- }
82
- },
83
- compile(projectDir, worker) {
84
- const asc = ascBinaryPath(projectDir);
85
- const entryCandidate = (0, _validation.resolvePathWithin)(worker.dir, worker.manifest.entry, 'Worker entry');
86
- if (!_nodeFs.default.existsSync(entryCandidate)) {
87
- throw new _userError.default(`Worker entry file not found: "${entryCandidate}".`);
88
- }
89
- const entry = (0, _validation.resolveExistingPathWithin)(worker.dir, worker.manifest.entry, 'Worker entry');
90
- const nodeModules = _nodePath.default.join(projectDir, 'node_modules');
91
- const workerName = (0, _validation.validateWorkerName)(worker.manifest.name);
92
- const outFile = (0, _validation.resolveOutputPathWithin)(projectDir, _nodePath.default.join(_project.BUILD_DIR, `${workerName}.wasm`), 'Worker build artifact', 'Worker build directory');
93
- const args = [entry, '--runtime', 'stub', '--path', nodeModules, '--outFile', outFile, '--optimizeLevel', '3', '--shrinkLevel', '2'];
94
-
95
- // Enable the json-as transform when it's installed so workers can parse JSON.
96
- // The transform lives at the `transform` subpath; the package root has no
97
- // requirable entry, so `--transform json-as` fails to resolve.
98
- if (_nodeFs.default.existsSync(_nodePath.default.join(nodeModules, 'json-as'))) {
99
- args.push('--transform', 'json-as/transform');
100
- }
101
-
102
- // asc misbehaves if NODE_OPTIONS is inherited; drop it like the SDK build does.
103
- const env = {
104
- ...process.env
105
- };
106
- delete env.NODE_OPTIONS;
107
- const result = (0, _nodeChild_process.spawnSync)(asc, args, {
108
- cwd: projectDir,
109
- env,
110
- encoding: 'utf8'
111
- });
112
- if (result.error) {
113
- throw new _userError.default(`Failed to run the AssemblyScript compiler: ${result.error.message}`);
114
- }
115
- if (result.status !== 0) {
116
- const details = (result.stderr || result.stdout || '').trim();
117
- throw new _userError.default(`Compilation failed for worker "${worker.manifest.name}"${details ? `:\n${details}` : '.'}`);
118
- }
119
- return (0, _validation.resolveOutputPathWithin)(projectDir, _nodePath.default.join(_project.BUILD_DIR, `${workerName}.wasm`), 'Worker build artifact', 'Worker build directory');
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
- var _default = exports.default = toolchain;
121
+ exports.default = toolchain;