wrangler 0.0.0-e5a3814 → 0.0.0-e60dc909

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 (302) hide show
  1. package/README.md +23 -3
  2. package/bin/wrangler.js +170 -62
  3. package/kv-asset-handler.js +1 -0
  4. package/miniflare-dist/index.mjs +1499 -21
  5. package/package.json +193 -153
  6. package/src/__tests__/access.test.ts +25 -0
  7. package/src/__tests__/api-dev.test.ts +238 -0
  8. package/src/__tests__/api-devregistry.test.js +64 -0
  9. package/src/__tests__/api.test.ts +80 -0
  10. package/src/__tests__/config-cache-without-cache-dir.test.ts +38 -0
  11. package/src/__tests__/config-cache.test.ts +30 -24
  12. package/src/__tests__/configuration.test.ts +4152 -3476
  13. package/src/__tests__/d1/d1.test.ts +123 -0
  14. package/src/__tests__/d1/splitter.test.ts +255 -0
  15. package/src/__tests__/delete.test.ts +266 -0
  16. package/src/__tests__/deployments.test.ts +105 -0
  17. package/src/__tests__/dev.test.tsx +1559 -956
  18. package/src/__tests__/generate.test.ts +238 -0
  19. package/src/__tests__/get-host-from-url.test.ts +16 -0
  20. package/src/__tests__/guess-worker-format.test.ts +68 -68
  21. package/src/__tests__/helpers/cmd-shim.d.ts +6 -6
  22. package/src/__tests__/helpers/mock-account-id.ts +24 -24
  23. package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
  24. package/src/__tests__/helpers/mock-bin.ts +20 -20
  25. package/src/__tests__/helpers/mock-cfetch.ts +167 -100
  26. package/src/__tests__/helpers/mock-console.ts +58 -39
  27. package/src/__tests__/helpers/mock-dialogs.ts +88 -81
  28. package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -0
  29. package/src/__tests__/helpers/mock-http-server.ts +30 -30
  30. package/src/__tests__/helpers/mock-istty.ts +65 -18
  31. package/src/__tests__/helpers/mock-known-routes.ts +7 -0
  32. package/src/__tests__/helpers/mock-kv.ts +27 -27
  33. package/src/__tests__/helpers/mock-oauth-flow.ts +244 -228
  34. package/src/__tests__/helpers/mock-process.ts +34 -0
  35. package/src/__tests__/helpers/mock-stdin.ts +82 -77
  36. package/src/__tests__/helpers/mock-web-socket.ts +21 -21
  37. package/src/__tests__/helpers/msw/blob-worker.cjs +19 -0
  38. package/src/__tests__/helpers/msw/handlers/access.ts +13 -0
  39. package/src/__tests__/helpers/msw/handlers/deployments.ts +59 -0
  40. package/src/__tests__/helpers/msw/handlers/namespaces.ts +104 -0
  41. package/src/__tests__/helpers/msw/handlers/oauth.ts +31 -0
  42. package/src/__tests__/helpers/msw/handlers/r2.ts +80 -0
  43. package/src/__tests__/helpers/msw/handlers/script.ts +75 -0
  44. package/src/__tests__/helpers/msw/handlers/user.ts +63 -0
  45. package/src/__tests__/helpers/msw/handlers/zones.ts +22 -0
  46. package/src/__tests__/helpers/msw/index.ts +21 -0
  47. package/src/__tests__/helpers/msw/read-file-sync.js +61 -0
  48. package/src/__tests__/helpers/run-in-tmp.ts +27 -28
  49. package/src/__tests__/helpers/run-wrangler.ts +8 -8
  50. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +1 -0
  51. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +5 -0
  52. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +1 -0
  53. package/src/__tests__/helpers/worker-scripts/parent-worker.js +8 -0
  54. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +5 -0
  55. package/src/__tests__/helpers/write-worker-source.ts +16 -16
  56. package/src/__tests__/helpers/write-wrangler-toml.ts +9 -9
  57. package/src/__tests__/https-options.test.ts +142 -109
  58. package/src/__tests__/index.test.ts +245 -234
  59. package/src/__tests__/init.test.ts +3146 -1608
  60. package/src/__tests__/jest.setup.ts +167 -46
  61. package/src/__tests__/kv.test.ts +1778 -1471
  62. package/src/__tests__/logger.test.ts +100 -74
  63. package/src/__tests__/logout.test.ts +47 -0
  64. package/src/__tests__/metrics.test.ts +493 -0
  65. package/src/__tests__/middleware.scheduled.test.ts +145 -0
  66. package/src/__tests__/middleware.test.ts +750 -0
  67. package/src/__tests__/package-manager.test.ts +303 -303
  68. package/src/__tests__/pages-deployment-tail.test.ts +884 -0
  69. package/src/__tests__/pages.test.ts +2888 -743
  70. package/src/__tests__/parse.test.ts +252 -252
  71. package/src/__tests__/paths.test.ts +39 -0
  72. package/src/__tests__/publish.test.ts +7641 -5626
  73. package/src/__tests__/pubsub.test.ts +490 -0
  74. package/src/__tests__/queues.test.ts +522 -0
  75. package/src/__tests__/r2.test.ts +388 -228
  76. package/src/__tests__/route.test.ts +18 -18
  77. package/src/__tests__/secret.test.ts +689 -469
  78. package/src/__tests__/tail.test.ts +782 -567
  79. package/src/__tests__/test-old-node-version.js +31 -0
  80. package/src/__tests__/tsconfig-sanity.ts +12 -0
  81. package/src/__tests__/tsconfig.json +8 -0
  82. package/src/__tests__/tsconfig.tsbuildinfo +1 -0
  83. package/src/__tests__/type-generation.test.ts +233 -0
  84. package/src/__tests__/user.test.ts +117 -119
  85. package/src/__tests__/utils-collectKeyValues.test.ts +47 -0
  86. package/src/__tests__/validate-dev-props.test.ts +56 -0
  87. package/src/__tests__/version.test.ts +35 -0
  88. package/src/__tests__/whoami.test.tsx +176 -132
  89. package/src/__tests__/worker-namespace.test.ts +326 -0
  90. package/src/abort.d.ts +1 -1
  91. package/src/api/dev.ts +247 -0
  92. package/src/api/index.ts +2 -0
  93. package/src/bundle-reporter.ts +68 -0
  94. package/src/bundle.ts +785 -159
  95. package/src/cfetch/index.ts +120 -83
  96. package/src/cfetch/internal.ts +211 -92
  97. package/src/cli.ts +23 -8
  98. package/src/config/config.ts +236 -195
  99. package/src/config/diagnostics.ts +61 -61
  100. package/src/config/environment.ts +514 -357
  101. package/src/config/index.ts +326 -193
  102. package/src/config/validation-helpers.ts +379 -366
  103. package/src/config/validation.ts +1979 -1380
  104. package/src/config-cache.ts +81 -41
  105. package/src/create-worker-preview.ts +239 -142
  106. package/src/create-worker-upload-form.ts +309 -238
  107. package/src/d1/backups.tsx +223 -0
  108. package/src/d1/constants.ts +2 -0
  109. package/src/d1/create.tsx +63 -0
  110. package/src/d1/delete.ts +56 -0
  111. package/src/d1/execute.tsx +323 -0
  112. package/src/d1/formatTimeAgo.ts +14 -0
  113. package/src/d1/index.ts +101 -0
  114. package/src/d1/list.tsx +48 -0
  115. package/src/d1/migrations/apply.tsx +197 -0
  116. package/src/d1/migrations/create.tsx +77 -0
  117. package/src/d1/migrations/helpers.ts +147 -0
  118. package/src/d1/migrations/index.ts +3 -0
  119. package/src/d1/migrations/list.tsx +79 -0
  120. package/src/d1/migrations/options.ts +18 -0
  121. package/src/d1/options.ts +22 -0
  122. package/src/d1/splitter.ts +161 -0
  123. package/src/d1/types.ts +24 -0
  124. package/src/d1/utils.ts +48 -0
  125. package/src/delete.ts +103 -0
  126. package/src/deployments.ts +83 -0
  127. package/src/deprecated/index.ts +145 -0
  128. package/src/dev/dev-vars.ts +20 -17
  129. package/src/dev/dev.tsx +546 -333
  130. package/src/dev/get-local-persistence-path.ts +31 -0
  131. package/src/dev/local.tsx +912 -302
  132. package/src/dev/remote.tsx +618 -225
  133. package/src/dev/start-server.ts +543 -0
  134. package/src/dev/use-esbuild.ts +183 -97
  135. package/src/dev/validate-dev-props.ts +31 -0
  136. package/src/dev-registry.ts +201 -0
  137. package/src/dev.tsx +949 -0
  138. package/src/dialogs.ts +136 -0
  139. package/src/dispatch-namespace.ts +207 -0
  140. package/src/docs/index.ts +97 -0
  141. package/src/durable.ts +87 -87
  142. package/src/entry.ts +235 -228
  143. package/src/environment-variables/factory.ts +88 -0
  144. package/src/environment-variables/misc-variables.ts +30 -0
  145. package/src/errors.ts +6 -6
  146. package/src/generate/index.ts +300 -0
  147. package/src/git-client.ts +135 -0
  148. package/src/global-wrangler-config-path.ts +26 -0
  149. package/src/https-options.ts +84 -80
  150. package/src/index.ts +694 -0
  151. package/src/init.ts +1024 -0
  152. package/src/inspect.ts +698 -593
  153. package/src/intl-polyfill.d.ts +123 -123
  154. package/src/is-ci.ts +14 -0
  155. package/src/is-interactive.ts +16 -0
  156. package/src/jest.d.ts +4 -0
  157. package/src/kv/helpers.ts +430 -0
  158. package/src/kv/index.ts +596 -0
  159. package/src/logger.ts +80 -42
  160. package/src/metrics/index.ts +5 -0
  161. package/src/metrics/metrics-config.ts +239 -0
  162. package/src/metrics/metrics-dispatcher.ts +96 -0
  163. package/src/metrics/metrics-usage-headers.ts +24 -0
  164. package/src/metrics/send-event.ts +97 -0
  165. package/src/miniflare-cli/assets.ts +250 -0
  166. package/src/miniflare-cli/index.ts +202 -33
  167. package/src/miniflare-cli/request-context.ts +18 -18
  168. package/src/miniflare-cli/tsconfig.json +9 -0
  169. package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -0
  170. package/src/miniflare-cli/types.ts +11 -0
  171. package/src/module-collection.ts +221 -212
  172. package/src/open-in-browser.ts +4 -6
  173. package/src/package-manager.ts +173 -128
  174. package/src/pages/build.ts +270 -0
  175. package/src/pages/constants.ts +18 -0
  176. package/src/pages/deployment-tails.ts +284 -0
  177. package/src/pages/deployments.tsx +84 -0
  178. package/src/pages/dev.ts +711 -0
  179. package/src/pages/errors.ts +66 -0
  180. package/src/pages/functions/buildPlugin.ts +107 -0
  181. package/src/pages/functions/buildWorker.ts +166 -0
  182. package/{pages → src/pages}/functions/filepath-routing.test.ts +113 -113
  183. package/src/pages/functions/filepath-routing.ts +189 -0
  184. package/src/pages/functions/identifiers.ts +78 -0
  185. package/src/pages/functions/routes-consolidation.test.ts +250 -0
  186. package/src/pages/functions/routes-consolidation.ts +73 -0
  187. package/src/pages/functions/routes-transformation.test.ts +282 -0
  188. package/src/pages/functions/routes-transformation.ts +115 -0
  189. package/src/pages/functions/routes-validation.test.ts +403 -0
  190. package/src/pages/functions/routes-validation.ts +202 -0
  191. package/src/pages/functions/routes.ts +151 -0
  192. package/src/pages/functions/tsconfig.json +8 -0
  193. package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
  194. package/src/pages/functions.ts +82 -0
  195. package/src/pages/hash.ts +13 -0
  196. package/src/pages/index.ts +102 -0
  197. package/src/pages/projects.tsx +167 -0
  198. package/src/pages/prompt-select-project.tsx +31 -0
  199. package/src/pages/publish.tsx +462 -0
  200. package/src/pages/types.ts +41 -0
  201. package/src/pages/upload.tsx +447 -0
  202. package/src/pages/utils.ts +23 -0
  203. package/src/parse.ts +208 -125
  204. package/src/paths.ts +53 -8
  205. package/src/proxy.ts +623 -407
  206. package/src/publish/index.ts +270 -0
  207. package/src/publish/publish.ts +1038 -0
  208. package/src/pubsub/index.ts +286 -0
  209. package/src/pubsub/pubsub-commands.ts +624 -0
  210. package/src/queues/cli/commands/consumer/add.ts +71 -0
  211. package/src/queues/cli/commands/consumer/index.ts +22 -0
  212. package/src/queues/cli/commands/consumer/remove.ts +38 -0
  213. package/src/queues/cli/commands/create.ts +25 -0
  214. package/src/queues/cli/commands/delete.ts +26 -0
  215. package/src/queues/cli/commands/index.ts +36 -0
  216. package/src/queues/cli/commands/list.ts +25 -0
  217. package/src/queues/client.ts +135 -0
  218. package/src/queues/utils.ts +18 -0
  219. package/src/r2/constants.ts +4 -0
  220. package/src/r2/helpers.ts +131 -0
  221. package/src/r2/index.ts +289 -0
  222. package/src/routes.ts +140 -0
  223. package/src/secret/index.ts +379 -0
  224. package/src/selfsigned.d.ts +23 -23
  225. package/src/sites.ts +372 -0
  226. package/src/tail/createTail.ts +379 -0
  227. package/src/tail/filters.ts +108 -110
  228. package/src/tail/index.ts +210 -296
  229. package/src/tail/printing.ts +86 -46
  230. package/src/tsconfig-sanity.ts +16 -0
  231. package/src/type-generation.ts +181 -0
  232. package/src/update-check.ts +11 -11
  233. package/src/user/access.ts +68 -0
  234. package/src/user/auth-variables.ts +113 -0
  235. package/src/user/choose-account.tsx +39 -0
  236. package/src/user/generate-auth-url.ts +33 -0
  237. package/src/user/generate-random-state.ts +16 -0
  238. package/src/user/index.ts +2 -0
  239. package/src/user/user.ts +1232 -0
  240. package/src/utils/collectKeyValues.ts +14 -0
  241. package/src/whoami.ts +135 -0
  242. package/src/worker.ts +177 -107
  243. package/src/yargs-types.ts +24 -0
  244. package/src/zones.ts +158 -40
  245. package/templates/__tests__/pages-dev-util.test.ts +128 -0
  246. package/templates/__tests__/tsconfig-sanity.ts +12 -0
  247. package/templates/__tests__/tsconfig.json +8 -0
  248. package/templates/__tests__/tsconfig.tsbuildinfo +1 -0
  249. package/templates/checked-fetch.js +17 -0
  250. package/templates/d1-beta-facade.js +241 -0
  251. package/templates/facade.d.ts +14 -0
  252. package/templates/first-party-worker-module-facade.ts +19 -0
  253. package/templates/format-dev-errors.ts +33 -0
  254. package/templates/init-tests/test-jest-new-worker.js +23 -0
  255. package/templates/init-tests/test-vitest-new-worker.js +24 -0
  256. package/templates/init-tests/test-vitest-new-worker.ts +25 -0
  257. package/templates/middleware/common.ts +62 -0
  258. package/templates/middleware/loader-modules.ts +82 -0
  259. package/templates/middleware/loader-sw.ts +233 -0
  260. package/templates/middleware/middleware-miniflare3-json-error.ts +20 -0
  261. package/templates/middleware/middleware-pretty-error.ts +40 -0
  262. package/templates/middleware/middleware-scheduled.ts +15 -0
  263. package/templates/new-worker-scheduled.js +3 -3
  264. package/templates/new-worker-scheduled.ts +15 -15
  265. package/templates/new-worker.js +3 -3
  266. package/templates/new-worker.ts +15 -15
  267. package/templates/no-op-worker.js +10 -0
  268. package/templates/pages-dev-pipeline.ts +31 -0
  269. package/templates/pages-dev-util.ts +52 -0
  270. package/templates/pages-shim.ts +12 -0
  271. package/templates/pages-template-plugin.ts +176 -0
  272. package/templates/pages-template-worker.ts +189 -0
  273. package/templates/serve-static-assets.ts +65 -0
  274. package/templates/service-bindings-module-facade.js +54 -0
  275. package/templates/service-bindings-sw-facade.js +42 -0
  276. package/templates/tsconfig-sanity.ts +11 -0
  277. package/templates/tsconfig.init.json +106 -0
  278. package/templates/tsconfig.json +6 -103
  279. package/templates/tsconfig.tsbuildinfo +1 -0
  280. package/wrangler-dist/cli.d.ts +906 -0
  281. package/wrangler-dist/cli.js +128866 -110945
  282. package/wrangler-dist/wasm-sync.wasm +0 -0
  283. package/pages/functions/buildPlugin.ts +0 -105
  284. package/pages/functions/buildWorker.ts +0 -151
  285. package/pages/functions/filepath-routing.ts +0 -189
  286. package/pages/functions/identifiers.ts +0 -78
  287. package/pages/functions/routes.ts +0 -156
  288. package/pages/functions/template-plugin.ts +0 -147
  289. package/pages/functions/template-worker.ts +0 -143
  290. package/src/__tests__/helpers/faye-websocket.d.ts +0 -6
  291. package/src/dialogs.tsx +0 -135
  292. package/src/environment-variables.ts +0 -35
  293. package/src/index.tsx +0 -2846
  294. package/src/kv.ts +0 -408
  295. package/src/miniflare-cli/enum-keys.ts +0 -17
  296. package/src/pages.tsx +0 -2093
  297. package/src/publish.ts +0 -716
  298. package/src/r2.ts +0 -50
  299. package/src/sites.tsx +0 -326
  300. package/src/user.tsx +0 -1214
  301. package/src/whoami.tsx +0 -71
  302. package/templates/static-asset-facade.js +0 -43
@@ -0,0 +1,11 @@
1
+ // `./assets` dynamically imports `@cloudflare/pages-shared/environment-polyfills`.
2
+ // `@cloudflare/pages-shared/environment-polyfills/types.ts` defines `global`
3
+ // augmentations that pollute the `import`-site's typing environment.
4
+ //
5
+ // This type is used in the main `wrangler` TypeScript project. We split it out
6
+ // into a separate file (rather than putting it in `./index.ts`) so that
7
+ // `import`ing it doesn't bring in the `global` augmentations.
8
+ export interface EnablePagesAssetsServiceBindingOptions {
9
+ proxyPort?: number;
10
+ directory?: string;
11
+ }
@@ -7,14 +7,23 @@ import type { Config, ConfigModuleRuleType } from "./config";
7
7
  import type { CfModule, CfModuleType, CfScriptFormat } from "./worker";
8
8
  import type esbuild from "esbuild";
9
9
 
10
+ function flipObject<
11
+ K extends string | number | symbol,
12
+ V extends string | number | symbol
13
+ >(obj: Record<K, V>): Record<V, K> {
14
+ return Object.fromEntries(Object.entries(obj).map(([k, v]) => [v, k]));
15
+ }
16
+
10
17
  const RuleTypeToModuleType: Record<ConfigModuleRuleType, CfModuleType> = {
11
- ESModule: "esm",
12
- CommonJS: "commonjs",
13
- CompiledWasm: "compiled-wasm",
14
- Data: "buffer",
15
- Text: "text",
18
+ ESModule: "esm",
19
+ CommonJS: "commonjs",
20
+ CompiledWasm: "compiled-wasm",
21
+ Data: "buffer",
22
+ Text: "text",
16
23
  };
17
24
 
25
+ export const ModuleTypeToRuleType = flipObject(RuleTypeToModuleType);
26
+
18
27
  // This is a combination of an esbuild plugin and a mutable array
19
28
  // that we use to collect module references from source code.
20
29
  // There will be modules that _shouldn't_ be inlined directly into
@@ -24,235 +33,235 @@ const RuleTypeToModuleType: Record<ConfigModuleRuleType, CfModuleType> = {
24
33
  // them correctly in the bundle, and add them to the form upload.
25
34
 
26
35
  export const DEFAULT_MODULE_RULES: Config["rules"] = [
27
- { type: "Text", globs: ["**/*.txt", "**/*.html"] },
28
- { type: "Data", globs: ["**/*.bin"] },
29
- { type: "CompiledWasm", globs: ["**/*.wasm"] },
36
+ { type: "Text", globs: ["**/*.txt", "**/*.html"] },
37
+ { type: "Data", globs: ["**/*.bin"] },
38
+ { type: "CompiledWasm", globs: ["**/*.wasm"] },
30
39
  ];
31
40
 
32
41
  export default function createModuleCollector(props: {
33
- format: CfScriptFormat;
34
- rules?: Config["rules"];
35
- // a collection of "legacy" style module references, which are just file names
36
- // we will eventually deprecate this functionality, hence the verbose greppable name
37
- wrangler1xlegacyModuleReferences: {
38
- rootDirectory: string;
39
- fileNames: Set<string>;
40
- };
42
+ format: CfScriptFormat;
43
+ rules?: Config["rules"];
44
+ // a collection of "legacy" style module references, which are just file names
45
+ // we will eventually deprecate this functionality, hence the verbose greppable name
46
+ wrangler1xlegacyModuleReferences: {
47
+ rootDirectory: string;
48
+ fileNames: Set<string>;
49
+ };
41
50
  }): {
42
- modules: CfModule[];
43
- plugin: esbuild.Plugin;
51
+ modules: CfModule[];
52
+ plugin: esbuild.Plugin;
44
53
  } {
45
- const rules: Config["rules"] = [
46
- ...(props.rules || []),
47
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
48
- ...DEFAULT_MODULE_RULES!,
49
- ];
54
+ const rules: Config["rules"] = [
55
+ ...(props.rules || []),
56
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
57
+ ...DEFAULT_MODULE_RULES!,
58
+ ];
50
59
 
51
- // First, we want to add some validations to the module rules
52
- // We want to warn if rules are accidentally configured in such a way that
53
- // subsequent rules will never match because `fallthrough` hasn't been set
60
+ // First, we want to add some validations to the module rules
61
+ // We want to warn if rules are accidentally configured in such a way that
62
+ // subsequent rules will never match because `fallthrough` hasn't been set
54
63
 
55
- const completedRuleLocations: Record<string, number> = {};
56
- let index = 0;
57
- const rulesToRemove: Config["rules"] = [];
58
- for (const rule of rules) {
59
- if (rule.type in completedRuleLocations) {
60
- if (rules[completedRuleLocations[rule.type]].fallthrough !== false) {
61
- if (index < (props.rules || []).length) {
62
- logger.warn(
63
- `The module rule at position ${index} (${JSON.stringify(
64
- rule
65
- )}) has the same type as a previous rule (at position ${
66
- completedRuleLocations[rule.type]
67
- }, ${JSON.stringify(
68
- rules[completedRuleLocations[rule.type]]
69
- )}). This rule will be ignored. To the previous rule, add \`fallthrough = true\` to allow this one to also be used, or \`fallthrough = false\` to silence this warning.`
70
- );
71
- } else {
72
- logger.warn(
73
- `The default module rule ${JSON.stringify(
74
- rule
75
- )} has the same type as a previous rule (at position ${
76
- completedRuleLocations[rule.type]
77
- }, ${JSON.stringify(
78
- rules[completedRuleLocations[rule.type]]
79
- )}). This rule will be ignored. To the previous rule, add \`fallthrough = true\` to allow the default one to also be used, or \`fallthrough = false\` to silence this warning.`
80
- );
81
- }
82
- }
64
+ const completedRuleLocations: Record<string, number> = {};
65
+ let index = 0;
66
+ const rulesToRemove: Config["rules"] = [];
67
+ for (const rule of rules) {
68
+ if (rule.type in completedRuleLocations) {
69
+ if (rules[completedRuleLocations[rule.type]].fallthrough !== false) {
70
+ if (index < (props.rules || []).length) {
71
+ logger.warn(
72
+ `The module rule at position ${index} (${JSON.stringify(
73
+ rule
74
+ )}) has the same type as a previous rule (at position ${
75
+ completedRuleLocations[rule.type]
76
+ }, ${JSON.stringify(
77
+ rules[completedRuleLocations[rule.type]]
78
+ )}). This rule will be ignored. To the previous rule, add \`fallthrough = true\` to allow this one to also be used, or \`fallthrough = false\` to silence this warning.`
79
+ );
80
+ } else {
81
+ logger.warn(
82
+ `The default module rule ${JSON.stringify(
83
+ rule
84
+ )} has the same type as a previous rule (at position ${
85
+ completedRuleLocations[rule.type]
86
+ }, ${JSON.stringify(
87
+ rules[completedRuleLocations[rule.type]]
88
+ )}). This rule will be ignored. To the previous rule, add \`fallthrough = true\` to allow the default one to also be used, or \`fallthrough = false\` to silence this warning.`
89
+ );
90
+ }
91
+ }
83
92
 
84
- rulesToRemove.push(rule);
85
- }
86
- if (!(rule.type in completedRuleLocations) && rule.fallthrough !== true) {
87
- completedRuleLocations[rule.type] = index;
88
- }
89
- index++;
90
- }
93
+ rulesToRemove.push(rule);
94
+ }
95
+ if (!(rule.type in completedRuleLocations) && rule.fallthrough !== true) {
96
+ completedRuleLocations[rule.type] = index;
97
+ }
98
+ index++;
99
+ }
91
100
 
92
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
93
- rulesToRemove.forEach((rule) => rules!.splice(rules!.indexOf(rule), 1));
101
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
102
+ rulesToRemove.forEach((rule) => rules!.splice(rules!.indexOf(rule), 1));
94
103
 
95
- const modules: CfModule[] = [];
96
- return {
97
- modules,
98
- plugin: {
99
- name: "wrangler-module-collector",
100
- setup(build) {
101
- build.onStart(() => {
102
- // reset the module collection array
103
- modules.splice(0);
104
- });
104
+ const modules: CfModule[] = [];
105
+ return {
106
+ modules,
107
+ plugin: {
108
+ name: "wrangler-module-collector",
109
+ setup(build) {
110
+ build.onStart(() => {
111
+ // reset the module collection array
112
+ modules.splice(0);
113
+ });
105
114
 
106
- // ~ start legacy module specifier support ~
115
+ // ~ start legacy module specifier support ~
107
116
 
108
- // This section detects usage of "legacy" 1.x style module specifiers
109
- // and modifies them so they "work" in wrangler v2, but with a warning
117
+ // This section detects usage of "legacy" 1.x style module specifiers
118
+ // and modifies them so they "work" in wrangler v2, but with a warning
110
119
 
111
- const rulesMatchers = rules.flatMap((rule) => {
112
- return rule.globs.map((glob) => {
113
- const regex = globToRegExp(glob);
114
- return {
115
- regex,
116
- rule,
117
- };
118
- });
119
- });
120
+ const rulesMatchers = rules.flatMap((rule) => {
121
+ return rule.globs.map((glob) => {
122
+ const regex = globToRegExp(glob);
123
+ return {
124
+ regex,
125
+ rule,
126
+ };
127
+ });
128
+ });
120
129
 
121
- if (props.wrangler1xlegacyModuleReferences.fileNames.size > 0) {
122
- build.onResolve(
123
- {
124
- filter: new RegExp(
125
- "^(" +
126
- [...props.wrangler1xlegacyModuleReferences.fileNames].join(
127
- "|"
128
- ) +
129
- ")$"
130
- ),
131
- },
132
- async (args: esbuild.OnResolveArgs) => {
133
- if (
134
- args.kind !== "import-statement" &&
135
- args.kind !== "require-call"
136
- ) {
137
- return;
138
- }
139
- // In the future, this will simply throw an error
140
- logger.warn(
141
- `Deprecation: detected a legacy module import in "./${path.relative(
142
- process.cwd(),
143
- args.importer
144
- )}". This will stop working in the future. Replace references to "${
145
- args.path
146
- }" with "./${args.path}";`
147
- );
130
+ if (props.wrangler1xlegacyModuleReferences.fileNames.size > 0) {
131
+ build.onResolve(
132
+ {
133
+ filter: new RegExp(
134
+ "^(" +
135
+ [...props.wrangler1xlegacyModuleReferences.fileNames]
136
+ .map((name) => name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"))
137
+ .join("|") +
138
+ ")$"
139
+ ),
140
+ },
141
+ async (args: esbuild.OnResolveArgs) => {
142
+ if (
143
+ args.kind !== "import-statement" &&
144
+ args.kind !== "require-call"
145
+ ) {
146
+ return;
147
+ }
148
+ // In the future, this will simply throw an error
149
+ logger.warn(
150
+ `Deprecation: detected a legacy module import in "./${path.relative(
151
+ process.cwd(),
152
+ args.importer
153
+ )}". This will stop working in the future. Replace references to "${
154
+ args.path
155
+ }" with "./${args.path}";`
156
+ );
148
157
 
149
- // take the file and massage it to a
150
- // transportable/manageable format
151
- const filePath = path.join(
152
- props.wrangler1xlegacyModuleReferences.rootDirectory,
153
- args.path
154
- );
155
- const fileContent = await readFile(filePath);
156
- const fileHash = crypto
157
- .createHash("sha1")
158
- .update(fileContent)
159
- .digest("hex");
160
- const fileName = `./${fileHash}-${path.basename(args.path)}`;
158
+ // take the file and massage it to a
159
+ // transportable/manageable format
160
+ const filePath = path.join(
161
+ props.wrangler1xlegacyModuleReferences.rootDirectory,
162
+ args.path
163
+ );
164
+ const fileContent = await readFile(filePath);
165
+ const fileHash = crypto
166
+ .createHash("sha1")
167
+ .update(fileContent)
168
+ .digest("hex");
169
+ const fileName = `./${fileHash}-${path.basename(args.path)}`;
161
170
 
162
- const { rule } =
163
- rulesMatchers.find(({ regex }) => regex.test(fileName)) || {};
164
- if (rule) {
165
- // add the module to the array
166
- modules.push({
167
- name: fileName,
168
- content: fileContent,
169
- type: RuleTypeToModuleType[rule.type],
170
- });
171
- return {
172
- path: fileName, // change the reference to the changed module
173
- external: props.format === "modules", // mark it as external in the bundle
174
- namespace: `wrangler-module-${rule.type}`, // just a tag, this isn't strictly necessary
175
- watchFiles: [filePath], // we also add the file to esbuild's watch list
176
- };
177
- }
178
- }
179
- );
180
- }
171
+ const { rule } =
172
+ rulesMatchers.find(({ regex }) => regex.test(fileName)) || {};
173
+ if (rule) {
174
+ // add the module to the array
175
+ modules.push({
176
+ name: fileName,
177
+ content: fileContent,
178
+ type: RuleTypeToModuleType[rule.type],
179
+ });
180
+ return {
181
+ path: fileName, // change the reference to the changed module
182
+ external: props.format === "modules", // mark it as external in the bundle
183
+ namespace: `wrangler-module-${rule.type}`, // just a tag, this isn't strictly necessary
184
+ watchFiles: [filePath], // we also add the file to esbuild's watch list
185
+ };
186
+ }
187
+ }
188
+ );
189
+ }
181
190
 
182
- // ~ end legacy module specifier support ~
191
+ // ~ end legacy module specifier support ~
183
192
 
184
- rules?.forEach((rule) => {
185
- if (rule.type === "ESModule" || rule.type === "CommonJS") return; // TODO: we should treat these as js files, and use the jsx loader
193
+ rules?.forEach((rule) => {
194
+ if (rule.type === "ESModule" || rule.type === "CommonJS") return; // TODO: we should treat these as js files, and use the jsx loader
186
195
 
187
- rule.globs.forEach((glob) => {
188
- build.onResolve(
189
- { filter: globToRegExp(glob) },
190
- async (args: esbuild.OnResolveArgs) => {
191
- // take the file and massage it to a
192
- // transportable/manageable format
196
+ rule.globs.forEach((glob) => {
197
+ build.onResolve(
198
+ { filter: globToRegExp(glob) },
199
+ async (args: esbuild.OnResolveArgs) => {
200
+ // take the file and massage it to a
201
+ // transportable/manageable format
193
202
 
194
- const filePath = path.join(args.resolveDir, args.path);
195
- const fileContent = await readFile(filePath);
196
- const fileHash = crypto
197
- .createHash("sha1")
198
- .update(fileContent)
199
- .digest("hex");
200
- const fileName = `./${fileHash}-${path.basename(args.path)}`;
203
+ const filePath = path.join(args.resolveDir, args.path);
204
+ const fileContent = await readFile(filePath);
205
+ const fileHash = crypto
206
+ .createHash("sha1")
207
+ .update(fileContent)
208
+ .digest("hex");
209
+ const fileName = `./${fileHash}-${path.basename(args.path)}`;
201
210
 
202
- // add the module to the array
203
- modules.push({
204
- name: fileName,
205
- content: fileContent,
206
- type: RuleTypeToModuleType[rule.type],
207
- });
211
+ // add the module to the array
212
+ modules.push({
213
+ name: fileName,
214
+ content: fileContent,
215
+ type: RuleTypeToModuleType[rule.type],
216
+ });
208
217
 
209
- return {
210
- path: fileName, // change the reference to the changed module
211
- external: props.format === "modules", // mark it as external in the bundle
212
- namespace: `wrangler-module-${rule.type}`, // just a tag, this isn't strictly necessary
213
- watchFiles: [filePath], // we also add the file to esbuild's watch list
214
- };
215
- }
216
- );
218
+ return {
219
+ path: fileName, // change the reference to the changed module
220
+ external: props.format === "modules", // mark it as external in the bundle
221
+ namespace: `wrangler-module-${rule.type}`, // just a tag, this isn't strictly necessary
222
+ watchFiles: [filePath], // we also add the file to esbuild's watch list
223
+ };
224
+ }
225
+ );
217
226
 
218
- if (props.format === "service-worker") {
219
- build.onLoad(
220
- { filter: globToRegExp(glob) },
221
- async (args: esbuild.OnLoadArgs) => {
222
- return {
223
- // We replace the the module with an identifier
224
- // that we'll separately add to the form upload
225
- // as part of [wasm_modules]/[text_blobs]/[data_blobs]. This identifier has to be a valid
226
- // JS identifier, so we replace all non alphanumeric characters
227
- // with an underscore.
228
- contents: `export default ${args.path.replace(
229
- /[^a-zA-Z0-9_$]/g,
230
- "_"
231
- )};`,
232
- };
233
- }
234
- );
235
- }
236
- });
237
- });
227
+ if (props.format === "service-worker") {
228
+ build.onLoad(
229
+ { filter: globToRegExp(glob) },
230
+ async (args: esbuild.OnLoadArgs) => {
231
+ return {
232
+ // We replace the the module with an identifier
233
+ // that we'll separately add to the form upload
234
+ // as part of [wasm_modules]/[text_blobs]/[data_blobs]. This identifier has to be a valid
235
+ // JS identifier, so we replace all non alphanumeric characters
236
+ // with an underscore.
237
+ contents: `export default ${args.path.replace(
238
+ /[^a-zA-Z0-9_$]/g,
239
+ "_"
240
+ )};`,
241
+ };
242
+ }
243
+ );
244
+ }
245
+ });
246
+ });
238
247
 
239
- rulesToRemove.forEach((rule) => {
240
- rule.globs.forEach((glob) => {
241
- build.onResolve(
242
- { filter: globToRegExp(glob) },
243
- async (args: esbuild.OnResolveArgs) => {
244
- throw new Error(
245
- `The file ${
246
- args.path
247
- } matched a module rule in your configuration (${JSON.stringify(
248
- rule
249
- )}), but was ignored because a previous rule with the same type was not marked as \`fallthrough = true\`.`
250
- );
251
- }
252
- );
253
- });
254
- });
255
- },
256
- },
257
- };
248
+ rulesToRemove.forEach((rule) => {
249
+ rule.globs.forEach((glob) => {
250
+ build.onResolve(
251
+ { filter: globToRegExp(glob) },
252
+ async (args: esbuild.OnResolveArgs) => {
253
+ throw new Error(
254
+ `The file ${
255
+ args.path
256
+ } matched a module rule in your configuration (${JSON.stringify(
257
+ rule
258
+ )}), but was ignored because a previous rule with the same type was not marked as \`fallthrough = true\`.`
259
+ );
260
+ }
261
+ );
262
+ });
263
+ });
264
+ },
265
+ },
266
+ };
258
267
  }
@@ -10,10 +10,8 @@ import { logger } from "./logger";
10
10
  * @param url the URL to point the browser at
11
11
  */
12
12
  export default async function openInBrowser(url: string): Promise<void> {
13
- const errorMessage = `Failed to open ${url} in a browser`;
14
-
15
- const childProcess = await open(url);
16
- childProcess.on("error", () => {
17
- logger.warn(errorMessage);
18
- });
13
+ const childProcess = await open(url);
14
+ childProcess.on("error", () => {
15
+ logger.warn("Failed to open");
16
+ });
19
17
  }