wrangler 2.0.15 → 2.0.18

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 (141) hide show
  1. package/README.md +7 -1
  2. package/bin/wrangler.js +92 -92
  3. package/miniflare-dist/index.mjs +10 -2
  4. package/package.json +159 -155
  5. package/src/__tests__/config-cache-without-cache-dir.test.ts +38 -0
  6. package/src/__tests__/config-cache.test.ts +30 -24
  7. package/src/__tests__/configuration.test.ts +3935 -3537
  8. package/src/__tests__/dev.test.tsx +1128 -1024
  9. package/src/__tests__/guess-worker-format.test.ts +68 -68
  10. package/src/__tests__/helpers/cmd-shim.d.ts +6 -6
  11. package/src/__tests__/helpers/mock-account-id.ts +24 -24
  12. package/src/__tests__/helpers/mock-bin.ts +20 -20
  13. package/src/__tests__/helpers/mock-cfetch.ts +91 -91
  14. package/src/__tests__/helpers/mock-console.ts +42 -42
  15. package/src/__tests__/helpers/mock-dialogs.ts +94 -94
  16. package/src/__tests__/helpers/mock-http-server.ts +30 -30
  17. package/src/__tests__/helpers/mock-istty.ts +65 -23
  18. package/src/__tests__/helpers/mock-kv.ts +26 -26
  19. package/src/__tests__/helpers/mock-oauth-flow.ts +214 -214
  20. package/src/__tests__/helpers/mock-process.ts +27 -27
  21. package/src/__tests__/helpers/mock-stdin.ts +81 -81
  22. package/src/__tests__/helpers/mock-web-socket.ts +21 -21
  23. package/src/__tests__/helpers/run-in-tmp.ts +27 -28
  24. package/src/__tests__/helpers/run-wrangler.ts +8 -8
  25. package/src/__tests__/helpers/write-worker-source.ts +16 -16
  26. package/src/__tests__/helpers/write-wrangler-toml.ts +9 -9
  27. package/src/__tests__/https-options.test.ts +142 -109
  28. package/src/__tests__/index.test.ts +239 -235
  29. package/src/__tests__/init.test.ts +1558 -1558
  30. package/src/__tests__/jest.setup.ts +69 -56
  31. package/src/__tests__/kv.test.ts +1126 -1095
  32. package/src/__tests__/logger.test.ts +96 -96
  33. package/src/__tests__/package-manager.test.ts +303 -303
  34. package/src/__tests__/pages.test.ts +1123 -1104
  35. package/src/__tests__/parse.test.ts +252 -252
  36. package/src/__tests__/publish.test.ts +6383 -5976
  37. package/src/__tests__/pubsub.test.ts +367 -0
  38. package/src/__tests__/r2.test.ts +133 -133
  39. package/src/__tests__/route.test.ts +18 -18
  40. package/src/__tests__/secret.test.ts +465 -459
  41. package/src/__tests__/tail.test.ts +538 -530
  42. package/src/__tests__/user.test.ts +123 -112
  43. package/src/__tests__/whoami.test.tsx +208 -117
  44. package/src/__tests__/worker-namespace.test.ts +327 -0
  45. package/src/abort.d.ts +1 -1
  46. package/src/api/dev.ts +52 -0
  47. package/src/api/index.ts +1 -0
  48. package/src/bundle-reporter.tsx +15 -15
  49. package/src/bundle.ts +157 -149
  50. package/src/cfetch/index.ts +80 -80
  51. package/src/cfetch/internal.ts +89 -82
  52. package/src/cli.ts +21 -7
  53. package/src/config/config.ts +204 -204
  54. package/src/config/diagnostics.ts +61 -61
  55. package/src/config/environment.ts +390 -357
  56. package/src/config/index.ts +206 -193
  57. package/src/config/validation-helpers.ts +366 -366
  58. package/src/config/validation.ts +1566 -1401
  59. package/src/config-cache.ts +79 -40
  60. package/src/create-worker-preview.ts +206 -136
  61. package/src/create-worker-upload-form.ts +247 -238
  62. package/src/dev/dev-vars.ts +13 -13
  63. package/src/dev/dev.tsx +329 -311
  64. package/src/dev/local.tsx +310 -277
  65. package/src/dev/remote.tsx +347 -247
  66. package/src/dev/use-esbuild.ts +126 -88
  67. package/src/dev.tsx +538 -0
  68. package/src/dialogs.tsx +97 -97
  69. package/src/durable.ts +87 -87
  70. package/src/entry.ts +234 -234
  71. package/src/environment-variables.ts +23 -23
  72. package/src/errors.ts +6 -6
  73. package/src/faye-websocket.d.ts +6 -0
  74. package/src/generate.ts +33 -0
  75. package/src/git-client.ts +18 -18
  76. package/src/global-wrangler-config-path.ts +26 -0
  77. package/src/https-options.ts +84 -80
  78. package/src/index.tsx +1797 -2809
  79. package/src/init.ts +549 -0
  80. package/src/inspect.ts +593 -593
  81. package/src/intl-polyfill.d.ts +123 -123
  82. package/src/is-interactive.ts +12 -0
  83. package/src/kv.ts +298 -276
  84. package/src/logger.ts +42 -42
  85. package/src/miniflare-cli/enum-keys.ts +8 -8
  86. package/src/miniflare-cli/index.ts +43 -31
  87. package/src/miniflare-cli/request-context.ts +18 -18
  88. package/src/module-collection.ts +212 -212
  89. package/src/open-in-browser.ts +4 -4
  90. package/src/package-manager.ts +173 -128
  91. package/src/pages/build.tsx +166 -166
  92. package/src/pages/deployments.tsx +67 -67
  93. package/src/pages/dev.tsx +878 -862
  94. package/src/pages/functions/buildPlugin.ts +87 -87
  95. package/src/pages/functions/buildWorker.ts +124 -124
  96. package/src/pages/functions/filepath-routing.test.ts +110 -110
  97. package/src/pages/functions/filepath-routing.ts +162 -162
  98. package/src/pages/functions/identifiers.ts +60 -60
  99. package/src/pages/functions/routes.ts +105 -105
  100. package/src/pages/index.tsx +66 -66
  101. package/src/pages/projects.tsx +113 -113
  102. package/src/pages/publish.tsx +303 -293
  103. package/src/pages/types.ts +31 -31
  104. package/src/pages/upload.tsx +358 -325
  105. package/src/pages/utils.ts +3 -3
  106. package/src/parse.ts +202 -138
  107. package/src/paths.ts +6 -6
  108. package/src/preview.ts +31 -0
  109. package/src/proxy.ts +400 -400
  110. package/src/publish.ts +672 -631
  111. package/src/pubsub/index.ts +286 -0
  112. package/src/pubsub/pubsub-commands.tsx +577 -0
  113. package/src/r2.ts +19 -19
  114. package/src/selfsigned.d.ts +23 -23
  115. package/src/sites.tsx +256 -256
  116. package/src/tail/filters.ts +108 -108
  117. package/src/tail/index.ts +217 -217
  118. package/src/tail/printing.ts +45 -45
  119. package/src/update-check.ts +11 -11
  120. package/src/user/choose-account.tsx +38 -38
  121. package/src/user/env-vars.ts +36 -7
  122. package/src/user/generate-auth-url.ts +23 -23
  123. package/src/user/generate-random-state.ts +6 -6
  124. package/src/user/user.tsx +671 -634
  125. package/src/whoami.tsx +61 -42
  126. package/src/worker-namespace.ts +190 -0
  127. package/src/worker.ts +110 -100
  128. package/src/zones.ts +39 -36
  129. package/templates/checked-fetch.js +17 -0
  130. package/templates/new-worker-scheduled.js +3 -3
  131. package/templates/new-worker-scheduled.ts +15 -15
  132. package/templates/new-worker.js +3 -3
  133. package/templates/new-worker.ts +15 -15
  134. package/templates/no-op-worker.js +8 -8
  135. package/templates/pages-template-plugin.ts +123 -123
  136. package/templates/pages-template-worker.ts +124 -124
  137. package/templates/static-asset-facade.js +38 -32
  138. package/templates/tsconfig.json +95 -95
  139. package/wrangler-dist/cli.d.ts +298 -0
  140. package/wrangler-dist/cli.js +42177 -40578
  141. package/src/__tests__/helpers/faye-websocket.d.ts +0 -6
package/README.md CHANGED
@@ -1,4 +1,10 @@
1
- ## ⛅️ wrangler
1
+ <h1 align="center"> ⛅️ wrangler </h1>
2
+ <section align="center" id="shieldio-badges">
3
+ <a href="https://www.npmjs.com/package/wrangler"><img alt="npm" src="https://img.shields.io/npm/dw/wrangler?style=flat-square"></a>
4
+ <img alt="GitHub contributors" src="https://img.shields.io/github/contributors/cloudflare/wrangler2?style=flat-square">
5
+ <img alt="GitHub commit activity (branch)" src="https://img.shields.io/github/commit-activity/w/cloudflare/wrangler2/main?style=flat-square">
6
+ <a href="https://discord.gg/CloudflareDev"><img alt="Discord" src="https://img.shields.io/discord/595317990191398933?color=%23F48120&style=flat-square"></a>
7
+ </section>
2
8
 
3
9
  > This package is for wrangler v2.x, released first in May 2022. If you're looking for v1.x of the `@cloudflare/wrangler` package, visit https://www.npmjs.com/package/@cloudflare/wrangler / https://github.com/cloudflare/wrangler.
4
10
 
package/bin/wrangler.js CHANGED
@@ -6,6 +6,10 @@ const os = require("os");
6
6
  const semiver = require("semiver");
7
7
 
8
8
  const MIN_NODE_VERSION = "16.7.0";
9
+ const debug =
10
+ process.env["WRANGLER_LOG"] === "debug"
11
+ ? (...args) => console.log(...args)
12
+ : () => {};
9
13
 
10
14
  let wranglerProcess;
11
15
 
@@ -13,64 +17,61 @@ let wranglerProcess;
13
17
  * Executes ../wrangler-dist/cli.js
14
18
  */
15
19
  function runWrangler() {
16
- if (semiver(process.versions.node, MIN_NODE_VERSION) < 0) {
17
- // Note Volta and nvm are also recommended in the official docs:
18
- // https://developers.cloudflare.com/workers/get-started/guide#2-install-the-workers-cli
19
- console.error(
20
- `Wrangler requires at least Node.js v${MIN_NODE_VERSION}. You are using v${process.versions.node}.
20
+ if (semiver(process.versions.node, MIN_NODE_VERSION) < 0) {
21
+ // Note Volta and nvm are also recommended in the official docs:
22
+ // https://developers.cloudflare.com/workers/get-started/guide#2-install-the-workers-cli
23
+ console.error(
24
+ `Wrangler requires at least Node.js v${MIN_NODE_VERSION}. You are using v${process.versions.node}.
21
25
  You should use the latest Node.js version if possible, as Cloudflare Workers use a very up-to-date version of V8.
22
26
  Consider using a Node.js version manager such as https://volta.sh/ or https://github.com/nvm-sh/nvm.`
23
- );
24
- process.exitCode = 1;
25
- return;
26
- }
27
+ );
28
+ process.exitCode = 1;
29
+ return;
30
+ }
27
31
 
28
- let pathToCACerts = process.env.NODE_EXTRA_CA_CERTS;
29
- if (pathToCACerts) {
30
- // TODO:
31
- // - should we log a warning here?
32
- // - maybe we can generate a certificate that concatenates with ours?
33
- //
34
- // I do think it'll be rare that someone wants to add a cert AND
35
- // use cloudflare WARP, but let's wait till the situation actually
36
- // arises before we do anything about it
37
- } else {
38
- const osTempDir = os.tmpdir();
39
- const certDir = path.join(osTempDir, "wrangler-cert");
40
- const certPath = path.join(certDir, "Cloudflare_CA.pem");
41
- // copy cert to the system temp dir if needed
42
- if (!fs.existsSync(certPath)) {
43
- fs.mkdirSync(certDir, { recursive: true });
44
- fs.writeFileSync(
45
- certPath,
46
- fs.readFileSync(path.join(__dirname, "../Cloudflare_CA.pem"), "utf-8")
47
- );
48
- }
49
- pathToCACerts = certPath;
50
- }
32
+ let pathToCACerts = process.env.NODE_EXTRA_CA_CERTS;
33
+ if (pathToCACerts) {
34
+ // TODO:
35
+ // - should we log a warning here?
36
+ // - maybe we can generate a certificate that concatenates with ours?
37
+ //
38
+ // I do think it'll be rare that someone wants to add a cert AND
39
+ // use cloudflare WARP, but let's wait till the situation actually
40
+ // arises before we do anything about it
41
+ } else {
42
+ const osTempDir = os.tmpdir();
43
+ const certDir = path.join(osTempDir, "wrangler-cert");
44
+ const certPath = path.join(certDir, "Cloudflare_CA.pem");
45
+ // copy cert to the system temp dir if needed
46
+ if (!fs.existsSync(certPath)) {
47
+ fs.mkdirSync(certDir, { recursive: true });
48
+ fs.writeFileSync(
49
+ certPath,
50
+ fs.readFileSync(path.join(__dirname, "../Cloudflare_CA.pem"), "utf-8")
51
+ );
52
+ }
53
+ pathToCACerts = certPath;
54
+ }
51
55
 
52
- return spawn(
53
- process.execPath,
54
- [
55
- ...(semiver(process.versions.node, "18.0.0") >= 0
56
- ? ["--no-experimental-fetch"] // TODO: remove this when https://github.com/cloudflare/wrangler2/issues/834 is properly fixed
57
- : []),
58
- "--no-warnings",
59
- "--experimental-vm-modules",
60
- ...process.execArgv,
61
- path.join(__dirname, "../wrangler-dist/cli.js"),
62
- ...process.argv.slice(2),
63
- ],
64
- {
65
- stdio: "inherit",
66
- env: {
67
- ...process.env,
68
- NODE_EXTRA_CA_CERTS: pathToCACerts,
69
- },
70
- }
71
- ).on("exit", (code) =>
72
- process.exit(code === undefined || code === null ? 0 : code)
73
- );
56
+ return spawn(
57
+ process.execPath,
58
+ [
59
+ "--no-warnings",
60
+ "--experimental-vm-modules",
61
+ ...process.execArgv,
62
+ path.join(__dirname, "../wrangler-dist/cli.js"),
63
+ ...process.argv.slice(2),
64
+ ],
65
+ {
66
+ stdio: "inherit",
67
+ env: {
68
+ ...process.env,
69
+ NODE_EXTRA_CA_CERTS: pathToCACerts,
70
+ },
71
+ }
72
+ ).on("exit", (code) =>
73
+ process.exit(code === undefined || code === null ? 0 : code)
74
+ );
74
75
  }
75
76
 
76
77
  /**
@@ -78,29 +79,28 @@ Consider using a Node.js version manager such as https://volta.sh/ or https://gi
78
79
  * @throws {MODULE_NOT_FOUND} if there isn't a locally installed version of wrangler.
79
80
  */
80
81
  function runDelegatedWrangler() {
81
- const packageJsonPath = require.resolve("wrangler/package.json", {
82
- paths: [process.cwd()],
83
- });
84
- const {
85
- bin: { wrangler: binaryPath },
86
- version,
87
- } = JSON.parse(fs.readFileSync(packageJsonPath));
88
- const resolvedBinaryPath = path.resolve(packageJsonPath, "..", binaryPath);
82
+ const packageJsonPath = require.resolve("wrangler/package.json", {
83
+ paths: [process.cwd()],
84
+ });
85
+ const {
86
+ bin: { wrangler: binaryPath },
87
+ version,
88
+ } = JSON.parse(fs.readFileSync(packageJsonPath));
89
+ const resolvedBinaryPath = path.resolve(packageJsonPath, "..", binaryPath);
89
90
 
90
- console.log(
91
- `Delegating to locally-installed version of wrangler @ v${version}`
92
- );
93
- // this call to `spawn` is simpler because the delegated version will do all
94
- // of the other work.
95
- return spawn(
96
- process.execPath,
97
- [resolvedBinaryPath, ...process.argv.slice(2)],
98
- {
99
- stdio: "inherit",
100
- }
101
- ).on("exit", (code) =>
102
- process.exit(code === undefined || code === null ? 0 : code)
103
- );
91
+ debug(`Delegating to locally-installed version of wrangler @ v${version}`);
92
+
93
+ // this call to `spawn` is simpler because the delegated version will do all
94
+ // of the other work.
95
+ return spawn(
96
+ process.execPath,
97
+ [resolvedBinaryPath, ...process.argv.slice(2)],
98
+ {
99
+ stdio: "inherit",
100
+ }
101
+ ).on("exit", (code) =>
102
+ process.exit(code === undefined || code === null ? 0 : code)
103
+ );
104
104
  }
105
105
 
106
106
  /**
@@ -108,30 +108,30 @@ function runDelegatedWrangler() {
108
108
  * to a locally-installed version.
109
109
  */
110
110
  function shouldDelegate() {
111
- try {
112
- // `require.resolve` will throw if it can't find
113
- // a locally-installed version of `wrangler`
114
- const delegatedPackageJson = require.resolve("wrangler/package.json", {
115
- paths: [process.cwd()],
116
- });
117
- const thisPackageJson = path.resolve(__dirname, "..", "package.json");
118
- // if it's the same path, then we're already a local install -- no need to delegate
119
- return thisPackageJson !== delegatedPackageJson;
120
- } catch (e) {
121
- // there's no local version to delegate to -- `require.resolve` threw
122
- return false;
123
- }
111
+ try {
112
+ // `require.resolve` will throw if it can't find
113
+ // a locally-installed version of `wrangler`
114
+ const delegatedPackageJson = require.resolve("wrangler/package.json", {
115
+ paths: [process.cwd()],
116
+ });
117
+ const thisPackageJson = path.resolve(__dirname, "..", "package.json");
118
+ // if it's the same path, then we're already a local install -- no need to delegate
119
+ return thisPackageJson !== delegatedPackageJson;
120
+ } catch (e) {
121
+ // there's no local version to delegate to -- `require.resolve` threw
122
+ return false;
123
+ }
124
124
  }
125
125
 
126
126
  async function main() {
127
- wranglerProcess = shouldDelegate() ? runDelegatedWrangler() : runWrangler();
127
+ wranglerProcess = shouldDelegate() ? runDelegatedWrangler() : runWrangler();
128
128
  }
129
129
 
130
130
  process.on("SIGINT", () => {
131
- wranglerProcess?.kill();
131
+ wranglerProcess?.kill();
132
132
  });
133
133
  process.on("SIGTERM", () => {
134
- wranglerProcess?.kill();
134
+ wranglerProcess?.kill();
135
135
  });
136
136
 
137
137
  void main();
@@ -4846,6 +4846,13 @@ var getRequestContextCheckOptions = async () => {
4846
4846
  };
4847
4847
 
4848
4848
  // src/miniflare-cli/index.ts
4849
+ var NoOpLog = class extends Log {
4850
+ log() {
4851
+ }
4852
+ error(message) {
4853
+ throw message;
4854
+ }
4855
+ };
4849
4856
  async function main() {
4850
4857
  const args = await yargs_default(hideBin(process.argv)).help(false).version(false).option("log", {
4851
4858
  choices: enumKeys(LogLevel)
@@ -4854,9 +4861,9 @@ async function main() {
4854
4861
  const requestContextCheckOptions = await getRequestContextCheckOptions();
4855
4862
  const config = {
4856
4863
  ...JSON.parse(args._[0] ?? "{}"),
4857
- ...requestContextCheckOptions,
4858
- log: new Log(logLevel)
4864
+ ...requestContextCheckOptions
4859
4865
  };
4866
+ config.log = config.disableLogs ? new NoOpLog() : new Log(logLevel);
4860
4867
  if (logLevel > LogLevel.INFO) {
4861
4868
  console.log("OPTIONS:\n", JSON.stringify(config, null, 2));
4862
4869
  }
@@ -4864,6 +4871,7 @@ async function main() {
4864
4871
  try {
4865
4872
  await mf.startServer();
4866
4873
  await mf.startScheduler();
4874
+ process.send && process.send("ready");
4867
4875
  } catch (e) {
4868
4876
  mf.log.error(e);
4869
4877
  process.exitCode = 1;
package/package.json CHANGED
@@ -1,157 +1,161 @@
1
1
  {
2
- "name": "wrangler",
3
- "version": "2.0.15",
4
- "author": "wrangler@cloudflare.com",
5
- "description": "Command-line interface for all things Cloudflare Workers",
6
- "bin": {
7
- "wrangler": "./bin/wrangler.js",
8
- "wrangler2": "./bin/wrangler.js"
9
- },
10
- "license": "MIT OR Apache-2.0",
11
- "bugs": {
12
- "url": "https://github.com/cloudflare/wrangler2/issues"
13
- },
14
- "homepage": "https://github.com/cloudflare/wrangler2#readme",
15
- "keywords": [
16
- "wrangler",
17
- "cloudflare",
18
- "workers",
19
- "cloudflare workers",
20
- "edge",
21
- "compute",
22
- "serverless",
23
- "serverless application",
24
- "serverless module",
25
- "wasm",
26
- "web",
27
- "assembly",
28
- "webassembly",
29
- "rust",
30
- "emscripten",
31
- "rust",
32
- "typescript",
33
- "graphql",
34
- "router",
35
- "http",
36
- "cli"
37
- ],
38
- "dependencies": {
39
- "@cloudflare/kv-asset-handler": "^0.2.0",
40
- "@esbuild-plugins/node-globals-polyfill": "^0.1.1",
41
- "@esbuild-plugins/node-modules-polyfill": "^0.1.4",
42
- "blake3-wasm": "^2.1.5",
43
- "esbuild": "0.14.34",
44
- "miniflare": "^2.5.1",
45
- "nanoid": "^3.3.3",
46
- "path-to-regexp": "^6.2.0",
47
- "selfsigned": "^2.0.1",
48
- "semiver": "^1.1.0",
49
- "xxhash-wasm": "^1.0.1"
50
- },
51
- "optionalDependencies": {
52
- "fsevents": "~2.3.2"
53
- },
54
- "devDependencies": {
55
- "@iarna/toml": "^3.0.0",
56
- "@types/command-exists": "^1.2.0",
57
- "@types/glob-to-regexp": "0.4.1",
58
- "@types/mime": "^2.0.3",
59
- "@types/prompts": "^2.0.14",
60
- "@types/react": "^17.0.37",
61
- "@types/serve-static": "^1.13.10",
62
- "@types/signal-exit": "^3.0.1",
63
- "@types/supports-color": "^8.1.1",
64
- "@types/ws": "^8.5.3",
65
- "@types/yargs": "^17.0.10",
66
- "@webcontainer/env": "^1.0.1",
67
- "chokidar": "^3.5.3",
68
- "clipboardy": "^3.0.0",
69
- "cmd-shim": "^4.1.0",
70
- "command-exists": "^1.2.9",
71
- "concurrently": "^7.2.2",
72
- "devtools-protocol": "^0.0.955664",
73
- "dotenv": "^16.0.0",
74
- "execa": "^6.1.0",
75
- "faye-websocket": "^0.11.4",
76
- "finalhandler": "^1.2.0",
77
- "find-up": "^6.3.0",
78
- "get-port": "^6.1.2",
79
- "glob-to-regexp": "0.4.1",
80
- "http-terminator": "^3.2.0",
81
- "ignore": "^5.2.0",
82
- "ink": "^3.2.0",
83
- "ink-select-input": "^4.2.1",
84
- "ink-spinner": "^4.0.3",
85
- "ink-table": "^3.0.0",
86
- "ink-testing-library": "^2.1.0",
87
- "ink-text-input": "^4.0.3",
88
- "jest-fetch-mock": "^3.0.3",
89
- "jest-websocket-mock": "^2.3.0",
90
- "mime": "^3.0.0",
91
- "open": "^8.4.0",
92
- "p-queue": "^7.2.0",
93
- "pretty-bytes": "^6.0.0",
94
- "prompts": "^2.4.2",
95
- "react": "^17.0.2",
96
- "react-error-boundary": "^3.1.4",
97
- "serve-static": "^1.15.0",
98
- "signal-exit": "^3.0.7",
99
- "supports-color": "^9.2.2",
100
- "timeago.js": "^4.0.2",
101
- "tmp-promise": "^3.0.3",
102
- "ts-dedent": "^2.2.0",
103
- "undici": "^5.5.1",
104
- "update-check": "^1.5.4",
105
- "ws": "^8.5.0",
106
- "yargs": "^17.4.1"
107
- },
108
- "files": [
109
- "src",
110
- "bin",
111
- "miniflare-config-stubs",
112
- "miniflare-dist",
113
- "wrangler-dist",
114
- "templates",
115
- "vendor",
116
- "import_meta_url.js",
117
- "kv-asset-handler.js",
118
- "Cloudflare_CA.pem"
119
- ],
120
- "scripts": {
121
- "clean": "rm -rf wrangler-dist miniflare-dist",
122
- "check:type": "tsc",
123
- "bundle": "node -r esbuild-register scripts/bundle.ts",
124
- "build": "npm run clean && npm run bundle",
125
- "dev": "npm run clean && concurrently -c black,blue 'npm run bundle -- --watch' 'npm run check:type -- --watch --preserveWatchOutput'",
126
- "prepublishOnly": "SOURCEMAPS=false npm run build",
127
- "start": "npm run bundle && NODE_OPTIONS=--enable-source-maps ./bin/wrangler.js",
128
- "test": "jest --silent=false --verbose=true",
129
- "test-watch": "npm run test -- --runInBand --testTimeout=50000 --watch"
130
- },
131
- "engines": {
132
- "node": ">=16.7.0"
133
- },
134
- "jest": {
135
- "restoreMocks": true,
136
- "testTimeout": 30000,
137
- "testRegex": ".*.(test|spec)\\.[jt]sx?$",
138
- "transformIgnorePatterns": [
139
- "node_modules/(?!find-up|locate-path|p-locate|p-limit|p-timeout|p-queue|yocto-queue|path-exists|execa|strip-final-newline|npm-run-path|path-key|onetime|mimic-fn|human-signals|is-stream|get-port|supports-color|pretty-bytes)"
140
- ],
141
- "moduleNameMapper": {
142
- "clipboardy": "<rootDir>/src/__tests__/helpers/clipboardy-mock.js",
143
- "miniflare/cli": "<rootDir>/../../node_modules/miniflare/dist/src/cli.js"
144
- },
145
- "transform": {
146
- "^.+\\.c?(t|j)sx?$": [
147
- "esbuild-jest",
148
- {
149
- "sourcemap": true
150
- }
151
- ]
152
- },
153
- "setupFilesAfterEnv": [
154
- "<rootDir>/src/__tests__/jest.setup.ts"
155
- ]
156
- }
2
+ "name": "wrangler",
3
+ "version": "2.0.18",
4
+ "description": "Command-line interface for all things Cloudflare Workers",
5
+ "keywords": [
6
+ "wrangler",
7
+ "cloudflare",
8
+ "workers",
9
+ "cloudflare workers",
10
+ "edge",
11
+ "compute",
12
+ "serverless",
13
+ "serverless application",
14
+ "serverless module",
15
+ "wasm",
16
+ "web",
17
+ "assembly",
18
+ "webassembly",
19
+ "rust",
20
+ "emscripten",
21
+ "typescript",
22
+ "graphql",
23
+ "router",
24
+ "http",
25
+ "cli"
26
+ ],
27
+ "homepage": "https://github.com/cloudflare/wrangler2#readme",
28
+ "bugs": {
29
+ "url": "https://github.com/cloudflare/wrangler2/issues"
30
+ },
31
+ "license": "MIT OR Apache-2.0",
32
+ "author": "wrangler@cloudflare.com",
33
+ "main": "wrangler-dist/cli.js",
34
+ "types": "wrangler-dist/cli.d.ts",
35
+ "bin": {
36
+ "wrangler": "./bin/wrangler.js",
37
+ "wrangler2": "./bin/wrangler.js"
38
+ },
39
+ "files": [
40
+ "src",
41
+ "bin",
42
+ "miniflare-config-stubs",
43
+ "miniflare-dist",
44
+ "wrangler-dist",
45
+ "templates",
46
+ "vendor",
47
+ "import_meta_url.js",
48
+ "kv-asset-handler.js",
49
+ "Cloudflare_CA.pem"
50
+ ],
51
+ "scripts": {
52
+ "build": "npm run clean && npm run bundle && npm run emit-types",
53
+ "bundle": "node -r esbuild-register scripts/bundle.ts",
54
+ "check:type": "tsc",
55
+ "clean": "rm -rf wrangler-dist miniflare-dist emitted-types",
56
+ "dev": "npm run clean && concurrently -c black,blue 'npm run bundle -- --watch' 'npm run check:type -- --watch --preserveWatchOutput'",
57
+ "emit-types": "tsc -p tsconfig.emit.json && node -r esbuild-register scripts/emit-types.ts",
58
+ "prepublishOnly": "SOURCEMAPS=false npm run build",
59
+ "start": "npm run bundle && NODE_OPTIONS=--enable-source-maps ./bin/wrangler.js",
60
+ "test": "jest --silent=false --verbose=true",
61
+ "test-watch": "npm run test -- --runInBand --testTimeout=50000 --watch"
62
+ },
63
+ "jest": {
64
+ "moduleNameMapper": {
65
+ "clipboardy": "<rootDir>/src/__tests__/helpers/clipboardy-mock.js",
66
+ "miniflare/cli": "<rootDir>/../../node_modules/miniflare/dist/src/cli.js"
67
+ },
68
+ "restoreMocks": true,
69
+ "setupFilesAfterEnv": [
70
+ "<rootDir>/src/__tests__/jest.setup.ts"
71
+ ],
72
+ "testRegex": ".*.(test|spec)\\.[jt]sx?$",
73
+ "testTimeout": 30000,
74
+ "transform": {
75
+ "^.+\\.c?(t|j)sx?$": [
76
+ "esbuild-jest",
77
+ {
78
+ "sourcemap": true
79
+ }
80
+ ]
81
+ },
82
+ "transformIgnorePatterns": [
83
+ "node_modules/(?!find-up|locate-path|p-locate|p-limit|p-timeout|p-queue|yocto-queue|path-exists|execa|strip-final-newline|npm-run-path|path-key|onetime|mimic-fn|human-signals|is-stream|get-port|supports-color|pretty-bytes)"
84
+ ]
85
+ },
86
+ "dependencies": {
87
+ "@cloudflare/kv-asset-handler": "^0.2.0",
88
+ "@esbuild-plugins/node-globals-polyfill": "^0.1.1",
89
+ "@esbuild-plugins/node-modules-polyfill": "^0.1.4",
90
+ "blake3-wasm": "^2.1.5",
91
+ "esbuild": "0.14.47",
92
+ "miniflare": "^2.6.0",
93
+ "nanoid": "^3.3.3",
94
+ "path-to-regexp": "^6.2.0",
95
+ "selfsigned": "^2.0.1",
96
+ "semiver": "^1.1.0",
97
+ "xxhash-wasm": "^1.0.1"
98
+ },
99
+ "devDependencies": {
100
+ "@iarna/toml": "^3.0.0",
101
+ "@microsoft/api-extractor": "^7.28.3",
102
+ "@types/command-exists": "^1.2.0",
103
+ "@types/glob-to-regexp": "0.4.1",
104
+ "@types/mime": "^2.0.3",
105
+ "@types/prompts": "^2.0.14",
106
+ "@types/react": "^17.0.37",
107
+ "@types/serve-static": "^1.13.10",
108
+ "@types/signal-exit": "^3.0.1",
109
+ "@types/supports-color": "^8.1.1",
110
+ "@types/ws": "^8.5.3",
111
+ "@types/yargs": "^17.0.10",
112
+ "@webcontainer/env": "^1.0.1",
113
+ "chokidar": "^3.5.3",
114
+ "clipboardy": "^3.0.0",
115
+ "cmd-shim": "^4.1.0",
116
+ "command-exists": "^1.2.9",
117
+ "concurrently": "^7.2.2",
118
+ "devtools-protocol": "^0.0.955664",
119
+ "dotenv": "^16.0.0",
120
+ "execa": "^6.1.0",
121
+ "faye-websocket": "^0.11.4",
122
+ "finalhandler": "^1.2.0",
123
+ "find-up": "^6.3.0",
124
+ "get-port": "^6.1.2",
125
+ "glob-to-regexp": "0.4.1",
126
+ "http-terminator": "^3.2.0",
127
+ "ignore": "^5.2.0",
128
+ "ink": "^3.2.0",
129
+ "ink-select-input": "^4.2.1",
130
+ "ink-spinner": "^4.0.3",
131
+ "ink-table": "^3.0.0",
132
+ "ink-testing-library": "^2.1.0",
133
+ "ink-text-input": "^4.0.3",
134
+ "jest-fetch-mock": "^3.0.3",
135
+ "jest-websocket-mock": "^2.3.0",
136
+ "mime": "^3.0.0",
137
+ "open": "^8.4.0",
138
+ "p-queue": "^7.2.0",
139
+ "pretty-bytes": "^6.0.0",
140
+ "prompts": "^2.4.2",
141
+ "react": "^17.0.2",
142
+ "react-error-boundary": "^3.1.4",
143
+ "serve-static": "^1.15.0",
144
+ "signal-exit": "^3.0.7",
145
+ "supports-color": "^9.2.2",
146
+ "timeago.js": "^4.0.2",
147
+ "tmp-promise": "^3.0.3",
148
+ "ts-dedent": "^2.2.0",
149
+ "undici": "^5.5.1",
150
+ "update-check": "^1.5.4",
151
+ "ws": "^8.5.0",
152
+ "xdg-app-paths": "^7.3.0",
153
+ "yargs": "^17.4.1"
154
+ },
155
+ "optionalDependencies": {
156
+ "fsevents": "~2.3.2"
157
+ },
158
+ "engines": {
159
+ "node": ">=16.7.0"
160
+ }
157
161
  }
@@ -0,0 +1,38 @@
1
+ import { getConfigCache, saveToConfigCache } from "../config-cache";
2
+ import { mockConsoleMethods } from "./helpers/mock-console";
3
+ import { runInTempDir } from "./helpers/run-in-tmp";
4
+
5
+ interface PagesConfigCache {
6
+ account_id: string;
7
+ pages_project_name: string;
8
+ }
9
+
10
+ describe("config cache", () => {
11
+ runInTempDir();
12
+ mockConsoleMethods();
13
+ // In this set of tests, we don't create a node_modules folder
14
+ const pagesConfigCacheFilename = "pages-config-cache.json";
15
+
16
+ it("should return an empty config if no file exists", () => {
17
+ expect(
18
+ getConfigCache<PagesConfigCache>(pagesConfigCacheFilename)
19
+ ).toMatchInlineSnapshot(`Object {}`);
20
+ });
21
+
22
+ it("should ignore attempts to cache values ", () => {
23
+ saveToConfigCache<PagesConfigCache>(pagesConfigCacheFilename, {
24
+ account_id: "some-account-id",
25
+ pages_project_name: "foo",
26
+ });
27
+ expect(getConfigCache<PagesConfigCache>(pagesConfigCacheFilename)).toEqual(
28
+ {}
29
+ );
30
+
31
+ saveToConfigCache<PagesConfigCache>(pagesConfigCacheFilename, {
32
+ pages_project_name: "bar",
33
+ });
34
+ expect(getConfigCache<PagesConfigCache>(pagesConfigCacheFilename)).toEqual(
35
+ {}
36
+ );
37
+ });
38
+ });