wrangler 0.0.0-e95e5a0 → 0.0.0-e98269a59

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 (185) hide show
  1. package/README.md +42 -34
  2. package/bin/wrangler.js +90 -39
  3. package/config-schema.json +3370 -0
  4. package/kv-asset-handler.js +1 -0
  5. package/package.json +133 -98
  6. package/templates/__tests__/pages-dev-util.test.ts +128 -0
  7. package/templates/__tests__/tsconfig-sanity.ts +12 -0
  8. package/templates/__tests__/tsconfig.json +8 -0
  9. package/templates/checked-fetch.js +30 -0
  10. package/templates/facade.d.ts +19 -0
  11. package/templates/gitignore +2 -3
  12. package/templates/init-tests/test-jest-new-worker.js +23 -0
  13. package/templates/init-tests/test-vitest-new-worker.js +24 -0
  14. package/templates/init-tests/test-vitest-new-worker.ts +25 -0
  15. package/templates/middleware/common.ts +67 -0
  16. package/templates/middleware/loader-modules.ts +134 -0
  17. package/templates/middleware/loader-sw.ts +229 -0
  18. package/templates/middleware/middleware-ensure-req-body-drained.ts +18 -0
  19. package/templates/middleware/middleware-miniflare3-json-error.ts +32 -0
  20. package/templates/middleware/middleware-mock-analytics-engine.d.ts +3 -0
  21. package/templates/middleware/middleware-mock-analytics-engine.ts +30 -0
  22. package/templates/middleware/middleware-patch-console-prefix.d.ts +3 -0
  23. package/templates/middleware/middleware-patch-console-prefix.ts +21 -0
  24. package/templates/middleware/middleware-pretty-error.ts +40 -0
  25. package/templates/middleware/middleware-scheduled.ts +29 -0
  26. package/templates/middleware/middleware-serve-static-assets.d.ts +6 -0
  27. package/templates/middleware/middleware-serve-static-assets.ts +56 -0
  28. package/templates/modules-watch-stub.js +4 -0
  29. package/templates/new-worker-scheduled.js +17 -0
  30. package/templates/new-worker-scheduled.ts +32 -0
  31. package/templates/new-worker.js +3 -3
  32. package/templates/new-worker.ts +22 -4
  33. package/templates/no-op-worker.js +10 -0
  34. package/templates/pages-dev-pipeline.ts +32 -0
  35. package/templates/pages-dev-util.ts +55 -0
  36. package/templates/pages-shim.ts +9 -0
  37. package/templates/pages-template-plugin.ts +190 -0
  38. package/templates/pages-template-worker.ts +198 -0
  39. package/templates/startDevWorker/InspectorProxyWorker.ts +664 -0
  40. package/templates/startDevWorker/ProxyWorker.ts +336 -0
  41. package/templates/tsconfig-sanity.ts +11 -0
  42. package/templates/tsconfig.init.json +22 -0
  43. package/templates/tsconfig.json +6 -103
  44. package/wrangler-dist/InspectorProxyWorker.js +464 -0
  45. package/wrangler-dist/InspectorProxyWorker.js.map +6 -0
  46. package/wrangler-dist/ProxyWorker.js +241 -0
  47. package/wrangler-dist/ProxyWorker.js.map +6 -0
  48. package/wrangler-dist/cli.d.ts +26730 -0
  49. package/wrangler-dist/cli.js +166828 -106751
  50. package/import_meta_url.js +0 -3
  51. package/miniflare-config-stubs/.env.empty +0 -0
  52. package/miniflare-config-stubs/package.empty.json +0 -1
  53. package/miniflare-config-stubs/wrangler.empty.toml +0 -0
  54. package/miniflare-dist/index.mjs +0 -4886
  55. package/pages/functions/buildPlugin.ts +0 -92
  56. package/pages/functions/buildWorker.ts +0 -138
  57. package/pages/functions/filepath-routing.test.ts +0 -234
  58. package/pages/functions/filepath-routing.ts +0 -189
  59. package/pages/functions/identifiers.ts +0 -78
  60. package/pages/functions/routes.ts +0 -156
  61. package/pages/functions/template-plugin.ts +0 -146
  62. package/pages/functions/template-worker.ts +0 -143
  63. package/src/__tests__/config-cache.test.ts +0 -36
  64. package/src/__tests__/configuration.test.ts +0 -3125
  65. package/src/__tests__/dev.test.tsx +0 -762
  66. package/src/__tests__/guess-worker-format.test.ts +0 -85
  67. package/src/__tests__/helpers/clipboardy-mock.js +0 -4
  68. package/src/__tests__/helpers/cmd-shim.d.ts +0 -11
  69. package/src/__tests__/helpers/faye-websocket.d.ts +0 -6
  70. package/src/__tests__/helpers/mock-account-id.ts +0 -48
  71. package/src/__tests__/helpers/mock-bin.ts +0 -36
  72. package/src/__tests__/helpers/mock-cfetch.ts +0 -211
  73. package/src/__tests__/helpers/mock-console.ts +0 -87
  74. package/src/__tests__/helpers/mock-dialogs.ts +0 -90
  75. package/src/__tests__/helpers/mock-http-server.ts +0 -46
  76. package/src/__tests__/helpers/mock-istty.ts +0 -27
  77. package/src/__tests__/helpers/mock-kv.ts +0 -33
  78. package/src/__tests__/helpers/mock-oauth-flow.ts +0 -255
  79. package/src/__tests__/helpers/mock-stdin.ts +0 -103
  80. package/src/__tests__/helpers/mock-web-socket.ts +0 -29
  81. package/src/__tests__/helpers/run-in-tmp.ts +0 -39
  82. package/src/__tests__/helpers/run-wrangler.ts +0 -16
  83. package/src/__tests__/helpers/write-worker-source.ts +0 -31
  84. package/src/__tests__/helpers/write-wrangler-toml.ts +0 -17
  85. package/src/__tests__/https-options.test.ts +0 -130
  86. package/src/__tests__/index.test.ts +0 -249
  87. package/src/__tests__/init.test.ts +0 -1516
  88. package/src/__tests__/jest.setup.ts +0 -69
  89. package/src/__tests__/kv.test.ts +0 -1454
  90. package/src/__tests__/logger.test.ts +0 -115
  91. package/src/__tests__/package-manager.test.ts +0 -206
  92. package/src/__tests__/pages.test.ts +0 -329
  93. package/src/__tests__/parse.test.ts +0 -322
  94. package/src/__tests__/publish.test.ts +0 -4875
  95. package/src/__tests__/r2.test.ts +0 -214
  96. package/src/__tests__/route.test.ts +0 -45
  97. package/src/__tests__/secret.test.ts +0 -446
  98. package/src/__tests__/tail.test.ts +0 -690
  99. package/src/__tests__/user.test.ts +0 -131
  100. package/src/__tests__/whoami.test.tsx +0 -105
  101. package/src/bundle.ts +0 -169
  102. package/src/cfetch/index.ts +0 -104
  103. package/src/cfetch/internal.ts +0 -137
  104. package/src/cli.ts +0 -13
  105. package/src/config/README.md +0 -107
  106. package/src/config/config.ts +0 -234
  107. package/src/config/diagnostics.ts +0 -80
  108. package/src/config/environment.ts +0 -394
  109. package/src/config/index.ts +0 -63
  110. package/src/config/validation-helpers.ts +0 -575
  111. package/src/config/validation.ts +0 -1424
  112. package/src/config-cache.ts +0 -45
  113. package/src/create-worker-preview.ts +0 -175
  114. package/src/create-worker-upload-form.ts +0 -240
  115. package/src/dev/dev-vars.ts +0 -36
  116. package/src/dev/dev.tsx +0 -418
  117. package/src/dev/local.tsx +0 -312
  118. package/src/dev/remote.tsx +0 -213
  119. package/src/dev/use-esbuild.ts +0 -118
  120. package/src/dialogs.tsx +0 -87
  121. package/src/entry.ts +0 -267
  122. package/src/environment-variables.ts +0 -35
  123. package/src/errors.ts +0 -11
  124. package/src/https-options.ts +0 -123
  125. package/src/index.tsx +0 -2668
  126. package/src/inspect.ts +0 -623
  127. package/src/intl-polyfill.d.ts +0 -139
  128. package/src/kv.ts +0 -319
  129. package/src/logger.ts +0 -66
  130. package/src/miniflare-cli/README.md +0 -30
  131. package/src/miniflare-cli/enum-keys.ts +0 -17
  132. package/src/miniflare-cli/index.ts +0 -41
  133. package/src/miniflare-cli/request-context.ts +0 -40
  134. package/src/module-collection.ts +0 -258
  135. package/src/open-in-browser.ts +0 -26
  136. package/src/package-manager.ts +0 -127
  137. package/src/pages.tsx +0 -1866
  138. package/src/parse.ts +0 -183
  139. package/src/paths.ts +0 -26
  140. package/src/proxy.ts +0 -449
  141. package/src/publish.ts +0 -469
  142. package/src/r2.ts +0 -50
  143. package/src/selfsigned.d.ts +0 -29
  144. package/src/sites.tsx +0 -293
  145. package/src/tail/filters.ts +0 -279
  146. package/src/tail/index.ts +0 -299
  147. package/src/tail/printing.ts +0 -67
  148. package/src/update-check.ts +0 -19
  149. package/src/user.tsx +0 -1193
  150. package/src/whoami.tsx +0 -70
  151. package/src/worker.ts +0 -172
  152. package/templates/static-asset-facade.js +0 -47
  153. package/vendor/@cloudflare/kv-asset-handler/CHANGELOG.md +0 -332
  154. package/vendor/@cloudflare/kv-asset-handler/LICENSE_APACHE +0 -176
  155. package/vendor/@cloudflare/kv-asset-handler/LICENSE_MIT +0 -25
  156. package/vendor/@cloudflare/kv-asset-handler/README.md +0 -245
  157. package/vendor/@cloudflare/kv-asset-handler/dist/index.d.ts +0 -32
  158. package/vendor/@cloudflare/kv-asset-handler/dist/index.js +0 -354
  159. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.d.ts +0 -13
  160. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.js +0 -148
  161. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.d.ts +0 -1
  162. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.js +0 -436
  163. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.d.ts +0 -1
  164. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.js +0 -40
  165. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.d.ts +0 -1
  166. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.js +0 -42
  167. package/vendor/@cloudflare/kv-asset-handler/dist/types.d.ts +0 -26
  168. package/vendor/@cloudflare/kv-asset-handler/dist/types.js +0 -31
  169. package/vendor/@cloudflare/kv-asset-handler/package.json +0 -52
  170. package/vendor/@cloudflare/kv-asset-handler/src/index.ts +0 -296
  171. package/vendor/@cloudflare/kv-asset-handler/src/mocks.ts +0 -136
  172. package/vendor/@cloudflare/kv-asset-handler/src/test/getAssetFromKV.ts +0 -464
  173. package/vendor/@cloudflare/kv-asset-handler/src/test/mapRequestToAsset.ts +0 -33
  174. package/vendor/@cloudflare/kv-asset-handler/src/test/serveSinglePageApp.ts +0 -42
  175. package/vendor/@cloudflare/kv-asset-handler/src/types.ts +0 -39
  176. package/vendor/wrangler-mime/CHANGELOG.md +0 -289
  177. package/vendor/wrangler-mime/LICENSE +0 -21
  178. package/vendor/wrangler-mime/Mime.js +0 -97
  179. package/vendor/wrangler-mime/README.md +0 -187
  180. package/vendor/wrangler-mime/cli.js +0 -46
  181. package/vendor/wrangler-mime/index.js +0 -4
  182. package/vendor/wrangler-mime/lite.js +0 -4
  183. package/vendor/wrangler-mime/package.json +0 -52
  184. package/vendor/wrangler-mime/types/other.js +0 -1
  185. package/vendor/wrangler-mime/types/standard.js +0 -1
@@ -1,115 +0,0 @@
1
- import { logger } from "../logger";
2
- import { mockConsoleMethods } from "./helpers/mock-console";
3
-
4
- describe("logger", () => {
5
- const std = mockConsoleMethods();
6
-
7
- it("should add colored markers to error and warning messages", () => {
8
- logger.loggerLevel = "debug";
9
- logger.debug("This is a debug message");
10
- logger.log("This is a log message");
11
- logger.warn("This is a warn message");
12
- logger.error("This is a error message");
13
-
14
- expect(std.debug).toMatchInlineSnapshot(`"This is a debug message"`);
15
- expect(std.out).toMatchInlineSnapshot(`"This is a log message"`);
16
- expect(std.warn).toMatchInlineSnapshot(`
17
- "▲ [WARNING] This is a warn message
18
-
19
- "
20
- `);
21
- expect(std.err).toMatchInlineSnapshot(`
22
- "X [ERROR] This is a error message
23
-
24
- "
25
- `);
26
- });
27
-
28
- describe("loggerLevel=debug", () => {
29
- it("should render messages that are at or above the log level set in the logger", () => {
30
- logger.loggerLevel = "debug";
31
- logger.debug("This is a debug message");
32
- logger.log("This is a log message");
33
- logger.warn("This is a warn message");
34
- logger.error("This is a error message");
35
-
36
- expect(std.debug).toMatchInlineSnapshot(`"This is a debug message"`);
37
- expect(std.out).toMatchInlineSnapshot(`"This is a log message"`);
38
- expect(std.warn).toMatchInlineSnapshot(`
39
- "▲ [WARNING] This is a warn message
40
-
41
- "
42
- `);
43
- expect(std.err).toMatchInlineSnapshot(`
44
- "X [ERROR] This is a error message
45
-
46
- "
47
- `);
48
- });
49
- });
50
-
51
- describe("loggerLevel=log", () => {
52
- it("should render messages that are at or above the log level set in the logger", () => {
53
- logger.loggerLevel = "log";
54
- logger.debug("This is a debug message");
55
- logger.log("This is a log message");
56
- logger.warn("This is a warn message");
57
- logger.error("This is a error message");
58
-
59
- expect(std.debug).toMatchInlineSnapshot(`""`);
60
- expect(std.out).toMatchInlineSnapshot(`"This is a log message"`);
61
- expect(std.warn).toMatchInlineSnapshot(`
62
- "▲ [WARNING] This is a warn message
63
-
64
- "
65
- `);
66
- expect(std.err).toMatchInlineSnapshot(`
67
- "X [ERROR] This is a error message
68
-
69
- "
70
- `);
71
- });
72
- });
73
-
74
- describe("loggerLevel=warn", () => {
75
- it("should render messages that are at or above the log level set in the logger", () => {
76
- logger.loggerLevel = "warn";
77
- logger.debug("This is a debug message");
78
- logger.log("This is a log message");
79
- logger.warn("This is a warn message");
80
- logger.error("This is a error message");
81
-
82
- expect(std.debug).toMatchInlineSnapshot(`""`);
83
- expect(std.out).toMatchInlineSnapshot(`""`);
84
- expect(std.warn).toMatchInlineSnapshot(`
85
- "▲ [WARNING] This is a warn message
86
-
87
- "
88
- `);
89
- expect(std.err).toMatchInlineSnapshot(`
90
- "X [ERROR] This is a error message
91
-
92
- "
93
- `);
94
- });
95
- });
96
-
97
- describe("loggerLevel=error", () => {
98
- it("should render messages that are at or above the log level set in the logger", () => {
99
- logger.loggerLevel = "error";
100
- logger.debug("This is a debug message");
101
- logger.log("This is a log message");
102
- logger.warn("This is a warn message");
103
- logger.error("This is a error message");
104
-
105
- expect(std.debug).toMatchInlineSnapshot(`""`);
106
- expect(std.out).toMatchInlineSnapshot(`""`);
107
- expect(std.warn).toMatchInlineSnapshot(`""`);
108
- expect(std.err).toMatchInlineSnapshot(`
109
- "X [ERROR] This is a error message
110
-
111
- "
112
- `);
113
- });
114
- });
115
- });
@@ -1,206 +0,0 @@
1
- import { writeFileSync } from "node:fs";
2
- import { mockBinary } from "./helpers/mock-bin";
3
- import { mockConsoleMethods } from "./helpers/mock-console";
4
- import { runInTempDir } from "./helpers/run-in-tmp";
5
-
6
- const { getPackageManager, getPackageManagerName } =
7
- jest.requireActual("../package-manager");
8
- interface TestCase {
9
- npm: boolean;
10
- yarn: boolean;
11
- npmLockFile: boolean;
12
- yarnLockFile: boolean;
13
- expectedPackageManager: string;
14
- }
15
-
16
- const testCases: TestCase[] = [
17
- // npm binary - no yarn binary
18
- {
19
- npm: true,
20
- yarn: false,
21
- npmLockFile: false,
22
- yarnLockFile: false,
23
- expectedPackageManager: "npm",
24
- },
25
- {
26
- npm: true,
27
- yarn: false,
28
- npmLockFile: true,
29
- yarnLockFile: false,
30
- expectedPackageManager: "npm",
31
- },
32
- {
33
- npm: true,
34
- yarn: false,
35
- npmLockFile: false,
36
- yarnLockFile: true,
37
- expectedPackageManager: "npm",
38
- },
39
- {
40
- npm: true,
41
- yarn: false,
42
- npmLockFile: true,
43
- yarnLockFile: true,
44
- expectedPackageManager: "npm",
45
- },
46
-
47
- // yarn binary - no npm binary
48
- {
49
- npm: false,
50
- yarn: true,
51
- npmLockFile: false,
52
- yarnLockFile: false,
53
- expectedPackageManager: "yarn",
54
- },
55
- {
56
- npm: false,
57
- yarn: true,
58
- npmLockFile: true,
59
- yarnLockFile: false,
60
- expectedPackageManager: "yarn",
61
- },
62
- {
63
- npm: false,
64
- yarn: true,
65
- npmLockFile: false,
66
- yarnLockFile: true,
67
- expectedPackageManager: "yarn",
68
- },
69
- {
70
- npm: false,
71
- yarn: true,
72
- npmLockFile: true,
73
- yarnLockFile: true,
74
- expectedPackageManager: "yarn",
75
- },
76
-
77
- // npm and yarn binaries
78
- {
79
- npm: true,
80
- yarn: true,
81
- npmLockFile: false,
82
- yarnLockFile: false,
83
- expectedPackageManager: "npm",
84
- },
85
- {
86
- npm: true,
87
- yarn: true,
88
- npmLockFile: true,
89
- yarnLockFile: false,
90
- expectedPackageManager: "npm",
91
- },
92
- {
93
- npm: true,
94
- yarn: true,
95
- npmLockFile: false,
96
- yarnLockFile: true,
97
- expectedPackageManager: "yarn",
98
- },
99
- {
100
- npm: true,
101
- yarn: true,
102
- npmLockFile: true,
103
- yarnLockFile: true,
104
- expectedPackageManager: "npm",
105
- },
106
- ];
107
-
108
- describe("getPackageManager()", () => {
109
- runInTempDir();
110
- mockConsoleMethods();
111
-
112
- describe("no supported package manager", () => {
113
- mockYarn(false);
114
- mockNpm(false);
115
-
116
- it("should throw an error", async () => {
117
- await expect(() =>
118
- getPackageManager(process.cwd())
119
- ).rejects.toThrowErrorMatchingInlineSnapshot(
120
- `"Unable to find a package manager. Supported managers are: npm and yarn."`
121
- );
122
- });
123
- });
124
-
125
- for (const {
126
- npm,
127
- yarn,
128
- npmLockFile,
129
- yarnLockFile,
130
- expectedPackageManager,
131
- } of testCases) {
132
- describe(
133
- getTestCaseDescription(npm, yarn, npmLockFile, yarnLockFile),
134
- () => {
135
- mockYarn(yarn);
136
- mockNpm(npm);
137
- mockLockFiles(npmLockFile, yarnLockFile);
138
-
139
- it(`should return the ${expectedPackageManager} package manager`, async () => {
140
- const actualPackageManager = await getPackageManager(process.cwd());
141
- expect(getPackageManagerName(actualPackageManager)).toEqual(
142
- expectedPackageManager
143
- );
144
- });
145
- }
146
- );
147
- }
148
- });
149
-
150
- /**
151
- * Create a fake yarn binary
152
- */
153
- function mockYarn(succeed: boolean): void {
154
- let unMock: () => void;
155
- beforeEach(async () => {
156
- unMock = await mockBinary("yarn", `process.exit(${succeed ? 0 : 1})`);
157
- });
158
- afterEach(() => unMock());
159
- }
160
-
161
- /**
162
- * Create a fake npm binary
163
- */
164
- function mockNpm(succeed: boolean): void {
165
- let unMock: () => void;
166
- beforeEach(async () => {
167
- unMock = await mockBinary("npm", `process.exit(${succeed ? 0 : 1})`);
168
- });
169
- afterEach(() => unMock());
170
- }
171
-
172
- /**
173
- * Create a fake lock files.
174
- */
175
- function mockLockFiles(npmLockFile: boolean, yarnLockFile: boolean) {
176
- beforeEach(() => {
177
- if (npmLockFile) {
178
- writeFileSync("package-lock.json", "");
179
- }
180
- if (yarnLockFile) {
181
- writeFileSync("yarn.lock", "");
182
- }
183
- });
184
- }
185
-
186
- function getTestCaseDescription(
187
- npm: boolean,
188
- yarn: boolean,
189
- npmLockFile: boolean,
190
- yarnLockFile: boolean
191
- ): string {
192
- const criteria: string[] = [];
193
- if (npm) {
194
- criteria.push("npm");
195
- }
196
- if (npmLockFile) {
197
- criteria.push("package-lock.json");
198
- }
199
- if (yarn) {
200
- criteria.push("yarn");
201
- }
202
- if (yarnLockFile) {
203
- criteria.push("yarn.lock");
204
- }
205
- return "using " + criteria.join("; ");
206
- }
@@ -1,329 +0,0 @@
1
- import { writeFileSync } from "node:fs";
2
- import { mockAccountId, mockApiToken } from "./helpers/mock-account-id";
3
- import { setMockResponse, unsetAllMocks } from "./helpers/mock-cfetch";
4
- import { mockConsoleMethods } from "./helpers/mock-console";
5
- import { runInTempDir } from "./helpers/run-in-tmp";
6
- import { runWrangler } from "./helpers/run-wrangler";
7
- import type { Project, Deployment } from "../pages";
8
- import type { File, FormData } from "undici";
9
-
10
- describe("pages", () => {
11
- runInTempDir();
12
- const std = mockConsoleMethods();
13
- function endEventLoop() {
14
- return new Promise((resolve) => setImmediate(resolve));
15
- }
16
-
17
- it("should should display a list of available subcommands, for pages with no subcommand", async () => {
18
- await runWrangler("pages");
19
- await endEventLoop();
20
-
21
- expect(std.out).toMatchInlineSnapshot(`
22
- "wrangler pages
23
-
24
- ⚡️ Configure Cloudflare Pages
25
-
26
- Commands:
27
- wrangler pages dev [directory] [-- command] 🧑‍💻 Develop your full-stack Pages application locally
28
- wrangler pages project ⚡️ Interact with your Pages projects
29
- wrangler pages deployment 🚀 Interact with the deployments of a project
30
- wrangler pages publish [directory] 🆙 Publish a directory of static assets as a Pages deployment
31
-
32
- Flags:
33
- -c, --config Path to .toml configuration file [string]
34
- -h, --help Show help [boolean]
35
- -v, --version Show version number [boolean]
36
- --legacy-env Use legacy environments [boolean]
37
-
38
- 🚧 'wrangler pages <command>' is a beta command. Please report any issues to https://github.com/cloudflare/wrangler2/issues/new/choose"
39
- `);
40
- });
41
-
42
- describe("beta message for subcommands", () => {
43
- it("should display for pages:dev", async () => {
44
- await expect(
45
- runWrangler("pages dev")
46
- ).rejects.toThrowErrorMatchingInlineSnapshot(
47
- `"Must specify a directory of static assets to serve or a command to run."`
48
- );
49
-
50
- expect(std.out).toMatchInlineSnapshot(`
51
- "🚧 'wrangler pages <command>' is a beta command. Please report any issues to https://github.com/cloudflare/wrangler2/issues/new/choose
52
-
53
- If you think this is a bug then please create an issue at https://github.com/cloudflare/wrangler2/issues/new."
54
- `);
55
- });
56
-
57
- it("should display for pages:functions:build", async () => {
58
- await expect(runWrangler("pages functions build")).rejects.toThrowError();
59
-
60
- expect(std.out).toMatchInlineSnapshot(`
61
- "🚧 'wrangler pages <command>' is a beta command. Please report any issues to https://github.com/cloudflare/wrangler2/issues/new/choose
62
-
63
- If you think this is a bug then please create an issue at https://github.com/cloudflare/wrangler2/issues/new."
64
- `);
65
- });
66
- });
67
-
68
- describe("project list", () => {
69
- mockAccountId();
70
- mockApiToken();
71
-
72
- afterEach(() => {
73
- unsetAllMocks();
74
- });
75
-
76
- function mockListRequest(projects: unknown[]) {
77
- const requests = { count: 0 };
78
- setMockResponse(
79
- "/accounts/:accountId/pages/projects",
80
- ([_url, accountId], init, query) => {
81
- requests.count++;
82
- expect(accountId).toEqual("some-account-id");
83
- expect(query.get("per_page")).toEqual("10");
84
- expect(query.get("page")).toEqual(`${requests.count}`);
85
- expect(init).toEqual({});
86
- const pageSize = Number(query.get("per_page"));
87
- const page = Number(query.get("page"));
88
- return projects.slice((page - 1) * pageSize, page * pageSize);
89
- }
90
- );
91
- return requests;
92
- }
93
-
94
- it("should make request to list projects", async () => {
95
- const projects: Project[] = [
96
- {
97
- name: "dogs",
98
- subdomain: "docs.pages.dev",
99
- domains: ["dogs.pages.dev"],
100
- source: {
101
- type: "github",
102
- },
103
- latest_deployment: {
104
- modified_on: "2021-11-17T14:52:26.133835Z",
105
- },
106
- created_on: "2021-11-17T14:52:26.133835Z",
107
- production_branch: "main",
108
- },
109
- {
110
- name: "cats",
111
- subdomain: "cats.pages.dev",
112
- domains: ["cats.pages.dev", "kitten.com"],
113
- latest_deployment: {
114
- modified_on: "2021-11-17T14:52:26.133835Z",
115
- },
116
- created_on: "2021-11-17T14:52:26.133835Z",
117
- production_branch: "main",
118
- },
119
- ];
120
-
121
- const requests = mockListRequest(projects);
122
- await runWrangler("pages project list");
123
-
124
- expect(requests.count).toBe(1);
125
- });
126
-
127
- it("should make multiple requests for paginated results", async () => {
128
- const projects: Project[] = [];
129
- for (let i = 0; i < 15; i++) {
130
- projects.push({
131
- name: "dogs" + i,
132
- subdomain: i + "dogs.pages.dev",
133
- domains: [i + "dogs.pages.dev"],
134
- source: {
135
- type: "github",
136
- },
137
- latest_deployment: {
138
- modified_on: "2021-11-17T14:52:26.133835Z",
139
- },
140
- created_on: "2021-11-17T14:52:26.133835Z",
141
- production_branch: "main",
142
- });
143
- }
144
- const requests = mockListRequest(projects);
145
- await runWrangler("pages project list");
146
- expect(requests.count).toEqual(2);
147
- });
148
- });
149
-
150
- describe("project create", () => {
151
- mockAccountId();
152
- mockApiToken();
153
-
154
- afterEach(() => {
155
- unsetAllMocks();
156
- });
157
-
158
- it("should create a project with a production branch", async () => {
159
- setMockResponse(
160
- "/accounts/:accountId/pages/projects",
161
- ([_url, accountId], init) => {
162
- expect(accountId).toEqual("some-account-id");
163
- expect(init.method).toEqual("POST");
164
- const body = JSON.parse(init.body as string);
165
- expect(body).toEqual({
166
- name: "a-new-project",
167
- production_branch: "main",
168
- });
169
- return {
170
- name: "a-new-project",
171
- subdomain: "a-new-project.pages.dev",
172
- production_branch: "main",
173
- };
174
- }
175
- );
176
- await runWrangler(
177
- "pages project create a-new-project --production-branch=main"
178
- );
179
- expect(std.out).toMatchInlineSnapshot(`
180
- "✨ Successfully created the 'a-new-project' project. It will be available at https://a-new-project.pages.dev/ once you create your first deployment.
181
- To deploy a folder of assets, run 'wrangler pages publish [directory]'."
182
- `);
183
- });
184
- });
185
-
186
- describe("deployment list", () => {
187
- mockAccountId();
188
- mockApiToken();
189
-
190
- afterEach(() => {
191
- unsetAllMocks();
192
- });
193
- function mockListRequest(deployments: unknown[]) {
194
- const requests = { count: 0 };
195
- setMockResponse(
196
- "/accounts/:accountId/pages/projects/:project/deployments",
197
- ([_url, accountId, project]) => {
198
- requests.count++;
199
- expect(project).toEqual("images");
200
- expect(accountId).toEqual("some-account-id");
201
- return deployments;
202
- }
203
- );
204
- return requests;
205
- }
206
-
207
- it("should make request to list deployments", async () => {
208
- const deployments: Deployment[] = [
209
- {
210
- id: "87bbc8fe-16be-45cd-81e0-63d722e82cdf",
211
- url: "https://87bbc8fe.images.pages.dev",
212
- environment: "preview",
213
- latest_stage: {
214
- ended_on: "2021-11-17T14:52:26.133835Z",
215
- status: "success",
216
- },
217
- deployment_trigger: {
218
- metadata: {
219
- branch: "main",
220
- commit_hash: "c7649364c4cb32ad4f65b530b9424e8be5bec9d6",
221
- },
222
- },
223
- project_name: "images",
224
- },
225
- ];
226
-
227
- const requests = mockListRequest(deployments);
228
- await runWrangler("pages deployment list --project-name=images");
229
-
230
- expect(requests.count).toBe(1);
231
- });
232
- });
233
-
234
- describe("deployment create", () => {
235
- let actualProcessEnvCI: string | undefined;
236
-
237
- mockAccountId();
238
- mockApiToken();
239
- runInTempDir();
240
-
241
- beforeEach(() => {
242
- actualProcessEnvCI = process.env.CI;
243
- process.env.CI = "true";
244
- });
245
-
246
- afterEach(() => {
247
- unsetAllMocks();
248
- process.env.CI = actualProcessEnvCI;
249
- });
250
-
251
- it("should be aliased with 'wrangler pages publish'", async () => {
252
- await runWrangler("pages publish --help");
253
- await endEventLoop();
254
-
255
- expect(std.out).toMatchInlineSnapshot(`
256
- "wrangler pages publish [directory]
257
-
258
- 🆙 Publish a directory of static assets as a Pages deployment
259
-
260
- Positionals:
261
- directory The directory of Pages Functions [string] [default: \\"functions\\"]
262
-
263
- Flags:
264
- -c, --config Path to .toml configuration file [string]
265
- -h, --help Show help [boolean]
266
- -v, --version Show version number [boolean]
267
- --legacy-env Use legacy environments [boolean]
268
-
269
- Options:
270
- --project-name The name of the project you want to list deployments for [string]
271
- --branch The branch of the project you want to list deployments for [string]
272
- --commit-hash The branch of the project you want to list deployments for [string]
273
- --commit-message The branch of the project you want to list deployments for [string]
274
- --commit-dirty The branch of the project you want to list deployments for [boolean]
275
-
276
- 🚧 'wrangler pages <command>' is a beta command. Please report any issues to https://github.com/cloudflare/wrangler2/issues/new/choose"
277
- `);
278
- });
279
-
280
- it("should upload a directory of files", async () => {
281
- writeFileSync("logo.png", "foobar");
282
-
283
- setMockResponse(
284
- "/accounts/:accountId/pages/projects/foo/file",
285
- async ([_url, accountId], init) => {
286
- expect(accountId).toEqual("some-account-id");
287
- expect(init.method).toEqual("POST");
288
- const body = init.body as FormData;
289
- const logoPNGFile = body.get("file") as File;
290
- expect(await logoPNGFile.text()).toEqual("foobar");
291
- expect(logoPNGFile.name).toEqual("logo.png");
292
-
293
- return {
294
- id: "2082190357cfd3617ccfe04f340c6247",
295
- };
296
- }
297
- );
298
-
299
- setMockResponse(
300
- "/accounts/:accountId/pages/projects/foo/deployments",
301
- async ([_url, accountId], init) => {
302
- expect(accountId).toEqual("some-account-id");
303
- expect(init.method).toEqual("POST");
304
- const body = init.body as FormData;
305
- const manifest = JSON.parse(body.get("manifest") as string);
306
- expect(manifest).toMatchInlineSnapshot(`
307
- Object {
308
- "/logo.png": "2082190357cfd3617ccfe04f340c6247",
309
- }
310
- `);
311
-
312
- return {
313
- url: "https://abcxyz.foo.pages.dev/",
314
- };
315
- }
316
- );
317
-
318
- await runWrangler("pages publish . --project-name=foo");
319
-
320
- // TODO: Unmounting somehow loses this output
321
-
322
- // expect(std.out).toMatchInlineSnapshot(`
323
- // "✨ Success! Uploaded 1 files (TIMINGS)
324
-
325
- // ✨ Deployment complete! Take a peek over at https://abcxyz.foo.pages.dev/"
326
- // `);
327
- });
328
- });
329
- });