wrangler 2.6.1 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/wrangler.js +9 -1
- package/miniflare-dist/index.mjs +1 -1
- package/package.json +12 -10
- package/src/__tests__/api-dev.test.ts +65 -36
- package/src/__tests__/api-devregistry.test.js +14 -6
- package/src/__tests__/configuration.test.ts +2 -31
- package/src/__tests__/{d1.test.ts → d1/d1.test.ts} +48 -5
- package/src/__tests__/d1/splitter.test.ts +255 -0
- package/src/__tests__/delete.test.ts +5 -2
- package/src/__tests__/deployments.test.ts +20 -6
- package/src/__tests__/dev.test.tsx +52 -19
- package/src/__tests__/generate.test.ts +7 -4
- package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
- package/src/__tests__/helpers/mock-cfetch.ts +2 -57
- package/src/__tests__/helpers/mock-dialogs.ts +70 -86
- package/src/__tests__/helpers/mock-oauth-flow.ts +64 -49
- package/src/__tests__/helpers/mock-process.ts +8 -13
- package/src/__tests__/helpers/msw/blob-worker.cjs +19 -0
- package/src/__tests__/helpers/msw/read-file-sync.js +61 -0
- package/src/__tests__/index.test.ts +46 -42
- package/src/__tests__/init.test.ts +782 -522
- package/src/__tests__/jest.setup.ts +20 -24
- package/src/__tests__/kv.test.ts +286 -173
- package/src/__tests__/logout.test.ts +1 -1
- package/src/__tests__/metrics.test.ts +5 -7
- package/src/__tests__/middleware.scheduled.test.ts +40 -30
- package/src/__tests__/middleware.test.ts +144 -120
- package/src/__tests__/pages.test.ts +1618 -1161
- package/src/__tests__/publish.test.ts +174 -125
- package/src/__tests__/r2.test.ts +2 -2
- package/src/__tests__/secret.test.ts +183 -126
- package/src/__tests__/tail.test.ts +6 -0
- package/src/__tests__/tsconfig-sanity.ts +12 -0
- package/src/__tests__/tsconfig.json +8 -0
- package/src/__tests__/tsconfig.tsbuildinfo +1 -0
- package/src/__tests__/whoami.test.tsx +1 -96
- package/src/api/dev.ts +78 -41
- package/src/api/index.ts +1 -1
- package/src/{bundle-reporter.tsx → bundle-reporter.ts} +0 -0
- package/src/cfetch/index.ts +0 -2
- package/src/cfetch/internal.ts +16 -18
- package/src/cli.ts +2 -2
- package/src/config/index.ts +2 -1
- package/src/config/validation.ts +1 -2
- package/src/create-worker-upload-form.ts +2 -2
- package/src/d1/{delete.tsx → delete.ts} +0 -0
- package/src/d1/execute.tsx +8 -37
- package/src/d1/migrations/apply.tsx +32 -19
- package/src/d1/migrations/{index.tsx → index.ts} +0 -0
- package/src/d1/splitter.ts +161 -0
- package/src/d1/{types.tsx → types.ts} +0 -0
- package/src/delete.ts +3 -8
- package/src/deployments.ts +6 -0
- package/src/deprecated/index.ts +2 -295
- package/src/dev/dev.tsx +2 -2
- package/src/dev/{get-local-persistence-path.tsx → get-local-persistence-path.ts} +0 -0
- package/src/dev/local.tsx +16 -4
- package/src/dev/remote.tsx +28 -1
- package/src/dev/start-server.ts +19 -11
- package/src/dev/use-esbuild.ts +1 -1
- package/src/{dev-registry.tsx → dev-registry.ts} +0 -0
- package/src/dev.tsx +35 -11
- package/src/dialogs.ts +136 -0
- package/src/dispatch-namespace.ts +1 -1
- package/src/docs/index.ts +97 -0
- package/src/environment-variables/factory.ts +88 -0
- package/src/environment-variables/misc-variables.ts +30 -0
- package/src/generate/index.ts +300 -0
- package/src/{index.tsx → index.ts} +16 -10
- package/src/init.ts +106 -60
- package/src/jest.d.ts +4 -0
- package/src/logger.ts +15 -3
- package/src/metrics/metrics-config.ts +1 -1
- package/src/metrics/send-event.ts +2 -1
- package/src/miniflare-cli/assets.ts +4 -0
- package/src/miniflare-cli/index.ts +1 -5
- package/src/miniflare-cli/tsconfig.json +9 -0
- package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -0
- package/src/miniflare-cli/types.ts +11 -0
- package/src/pages/{build.tsx → build.ts} +0 -0
- package/src/pages/{deployment-tails.tsx → deployment-tails.ts} +0 -0
- package/src/pages/{dev.tsx → dev.ts} +53 -55
- package/src/pages/functions/buildWorker.ts +1 -1
- package/src/pages/functions/tsconfig.json +8 -0
- package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
- package/src/pages/{functions.tsx → functions.ts} +0 -0
- package/src/pages/{hash.tsx → hash.ts} +0 -0
- package/src/pages/{index.tsx → index.ts} +0 -0
- package/src/pages/projects.tsx +3 -5
- package/src/pages/publish.tsx +16 -5
- package/src/pages/upload.tsx +27 -6
- package/src/publish/publish.ts +9 -7
- package/src/pubsub/{pubsub-commands.tsx → pubsub-commands.ts} +1 -1
- package/src/secret/index.ts +1 -1
- package/src/{sites.tsx → sites.ts} +0 -0
- package/src/tail/index.ts +2 -3
- package/src/tsconfig-sanity.ts +16 -0
- package/src/user/access.ts +0 -1
- package/src/user/auth-variables.ts +113 -0
- package/src/user/choose-account.tsx +1 -31
- package/src/user/index.ts +0 -1
- package/src/user/{user.tsx → user.ts} +107 -73
- package/src/{whoami.tsx → whoami.ts} +37 -71
- package/templates/__tests__/tsconfig-sanity.ts +12 -0
- package/templates/__tests__/tsconfig.json +8 -0
- package/templates/__tests__/tsconfig.tsbuildinfo +1 -0
- package/templates/d1-beta-facade.js +36 -0
- package/templates/facade.d.ts +14 -0
- package/templates/first-party-worker-module-facade.ts +4 -3
- package/templates/format-dev-errors.ts +7 -6
- package/templates/init-tests/test-jest-new-worker.js +3 -5
- package/templates/init-tests/test-vitest-new-worker.js +3 -5
- package/templates/init-tests/test-vitest-new-worker.ts +25 -0
- package/templates/middleware/loader-modules.ts +0 -2
- package/templates/middleware/loader-sw.ts +6 -0
- package/templates/pages-dev-pipeline.ts +4 -1
- package/templates/pages-shim.ts +4 -1
- package/templates/pages-template-plugin.ts +12 -7
- package/templates/serve-static-assets.ts +16 -14
- package/templates/tsconfig-sanity.ts +11 -0
- package/templates/tsconfig.init.json +106 -0
- package/templates/tsconfig.json +5 -103
- package/templates/tsconfig.tsbuildinfo +1 -0
- package/wrangler-dist/cli.d.ts +58 -60
- package/wrangler-dist/cli.js +34498 -55459
- package/wrangler-dist/wasm-sync.wasm +0 -0
- package/src/__tests__/dialogs.test.tsx +0 -40
- package/src/dialogs.tsx +0 -168
- package/src/environment-variables.ts +0 -50
- package/src/user/env-vars.ts +0 -46
|
@@ -2,23 +2,17 @@ import * as fs from "node:fs";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import * as TOML from "@iarna/toml";
|
|
4
4
|
import { execa, execaSync } from "execa";
|
|
5
|
+
import { rest } from "msw";
|
|
5
6
|
import { parseConfigFileTextToJson } from "typescript";
|
|
7
|
+
import { FormData } from "undici";
|
|
6
8
|
import { version as wranglerVersion } from "../../package.json";
|
|
9
|
+
import { fetchDashboardScript } from "../cfetch/internal";
|
|
7
10
|
import { getPackageManager } from "../package-manager";
|
|
8
11
|
import { mockAccountId, mockApiToken } from "./helpers/mock-account-id";
|
|
9
|
-
import {
|
|
10
|
-
setMockFetchDashScript,
|
|
11
|
-
setMockResponse,
|
|
12
|
-
unsetAllMocks,
|
|
13
|
-
unsetSpecialMockFns,
|
|
14
|
-
} from "./helpers/mock-cfetch";
|
|
15
12
|
import { mockConsoleMethods } from "./helpers/mock-console";
|
|
16
|
-
import {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
mockSelect,
|
|
20
|
-
clearSelectMocks,
|
|
21
|
-
} from "./helpers/mock-dialogs";
|
|
13
|
+
import { clearDialogs, mockConfirm, mockSelect } from "./helpers/mock-dialogs";
|
|
14
|
+
import { useMockIsTTY } from "./helpers/mock-istty";
|
|
15
|
+
import { msw } from "./helpers/msw";
|
|
22
16
|
import { runInTempDir } from "./helpers/run-in-tmp";
|
|
23
17
|
import { runWrangler } from "./helpers/run-wrangler";
|
|
24
18
|
import type { PackageManager } from "../package-manager";
|
|
@@ -35,8 +29,11 @@ const MINIMAL_WRANGLER_TOML = {
|
|
|
35
29
|
describe("init", () => {
|
|
36
30
|
let mockPackageManager: PackageManager;
|
|
37
31
|
runInTempDir();
|
|
32
|
+
const { setIsTTY } = useMockIsTTY();
|
|
38
33
|
|
|
39
34
|
beforeEach(() => {
|
|
35
|
+
setIsTTY(true);
|
|
36
|
+
|
|
40
37
|
mockPackageManager = {
|
|
41
38
|
cwd: process.cwd(),
|
|
42
39
|
// @ts-expect-error we're making a fake package manager here
|
|
@@ -48,8 +45,9 @@ describe("init", () => {
|
|
|
48
45
|
});
|
|
49
46
|
|
|
50
47
|
afterEach(() => {
|
|
51
|
-
|
|
52
|
-
|
|
48
|
+
clearDialogs();
|
|
49
|
+
msw.resetHandlers();
|
|
50
|
+
msw.restoreHandlers();
|
|
53
51
|
});
|
|
54
52
|
|
|
55
53
|
const std = mockConsoleMethods();
|
|
@@ -69,16 +67,18 @@ describe("init", () => {
|
|
|
69
67
|
});
|
|
70
68
|
|
|
71
69
|
expect(std.out).toMatchInlineSnapshot(`
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
70
|
+
"✨ Created wrangler.toml
|
|
71
|
+
✨ Initialized git repository
|
|
72
|
+
✨ Created package.json
|
|
73
|
+
✨ Created tsconfig.json
|
|
74
|
+
✨ Created src/index.ts
|
|
75
|
+
✨ Created src/index.test.ts
|
|
76
|
+
✨ Installed @cloudflare/workers-types, typescript, and vitest into devDependencies
|
|
78
77
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
To start developing your Worker, run \`npm start\`
|
|
79
|
+
To start testing your Worker, run \`npm test\`
|
|
80
|
+
To publish your Worker to the Internet, run \`npm run deploy\`"
|
|
81
|
+
`);
|
|
82
82
|
expect(std.err).toMatchInlineSnapshot(`""`);
|
|
83
83
|
expect(std.warn).toMatchInlineSnapshot(`""`);
|
|
84
84
|
});
|
|
@@ -100,16 +100,18 @@ describe("init", () => {
|
|
|
100
100
|
});
|
|
101
101
|
|
|
102
102
|
expect(std.out).toMatchInlineSnapshot(`
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
103
|
+
"✨ Created my-worker/wrangler.toml
|
|
104
|
+
✨ Initialized git repository at my-worker
|
|
105
|
+
✨ Created my-worker/package.json
|
|
106
|
+
✨ Created my-worker/tsconfig.json
|
|
107
|
+
✨ Created my-worker/src/index.ts
|
|
108
|
+
✨ Created my-worker/src/index.test.ts
|
|
109
|
+
✨ Installed @cloudflare/workers-types, typescript, and vitest into devDependencies
|
|
110
|
+
|
|
111
|
+
To start developing your Worker, run \`cd my-worker && npm start\`
|
|
112
|
+
To start testing your Worker, run \`npm test\`
|
|
113
|
+
To publish your Worker to the Internet, run \`npm run deploy\`"
|
|
114
|
+
`);
|
|
113
115
|
expect(std.err).toMatchInlineSnapshot(`""`);
|
|
114
116
|
expect(std.warn).toMatchInlineSnapshot(`""`);
|
|
115
117
|
});
|
|
@@ -128,21 +130,23 @@ describe("init", () => {
|
|
|
128
130
|
});
|
|
129
131
|
|
|
130
132
|
expect(std).toMatchInlineSnapshot(`
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
133
|
+
Object {
|
|
134
|
+
"debug": "",
|
|
135
|
+
"err": "",
|
|
136
|
+
"out": "✨ Created wrangler.toml
|
|
137
|
+
✨ Initialized git repository
|
|
138
|
+
✨ Created package.json
|
|
139
|
+
✨ Created tsconfig.json
|
|
140
|
+
✨ Created src/index.ts
|
|
141
|
+
✨ Created src/index.test.ts
|
|
142
|
+
✨ Installed @cloudflare/workers-types, typescript, and vitest into devDependencies
|
|
140
143
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
144
|
+
To start developing your Worker, run \`npm start\`
|
|
145
|
+
To start testing your Worker, run \`npm test\`
|
|
146
|
+
To publish your Worker to the Internet, run \`npm run deploy\`",
|
|
147
|
+
"warn": "",
|
|
148
|
+
}
|
|
149
|
+
`);
|
|
146
150
|
});
|
|
147
151
|
|
|
148
152
|
it("should error if `--type javascript` is used", async () => {
|
|
@@ -320,15 +324,15 @@ describe("init", () => {
|
|
|
320
324
|
},
|
|
321
325
|
});
|
|
322
326
|
expect(std).toMatchInlineSnapshot(`
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
327
|
+
Object {
|
|
328
|
+
"debug": "",
|
|
329
|
+
"err": "",
|
|
330
|
+
"out": "",
|
|
331
|
+
"warn": "[33m▲ [43;33m[[43;30mWARNING[43;33m][0m [1mpath/to/worker/wrangler.toml already exists![0m
|
|
328
332
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
333
|
+
",
|
|
334
|
+
}
|
|
335
|
+
`);
|
|
332
336
|
});
|
|
333
337
|
|
|
334
338
|
it("should not overwrite an existing wrangler.toml, after agreeing to other prompts", async () => {
|
|
@@ -341,11 +345,11 @@ describe("init", () => {
|
|
|
341
345
|
});
|
|
342
346
|
mockConfirm(
|
|
343
347
|
{
|
|
344
|
-
text: "
|
|
348
|
+
text: "Do you want to continue initializing this project?",
|
|
345
349
|
result: true,
|
|
346
350
|
},
|
|
347
351
|
{
|
|
348
|
-
text: "
|
|
352
|
+
text: "Would you like to use git to manage this Worker?",
|
|
349
353
|
result: true,
|
|
350
354
|
},
|
|
351
355
|
{
|
|
@@ -359,9 +363,16 @@ describe("init", () => {
|
|
|
359
363
|
);
|
|
360
364
|
|
|
361
365
|
mockSelect({
|
|
362
|
-
text:
|
|
366
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
367
|
+
"src",
|
|
368
|
+
"index.ts"
|
|
369
|
+
)}?`,
|
|
363
370
|
result: "fetch",
|
|
364
371
|
});
|
|
372
|
+
mockConfirm({
|
|
373
|
+
text: "Would you like us to write your first test with Vitest?",
|
|
374
|
+
result: true,
|
|
375
|
+
});
|
|
365
376
|
|
|
366
377
|
await runWrangler("init");
|
|
367
378
|
|
|
@@ -408,15 +419,15 @@ describe("init", () => {
|
|
|
408
419
|
},
|
|
409
420
|
});
|
|
410
421
|
expect(std).toMatchInlineSnapshot(`
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
422
|
+
Object {
|
|
423
|
+
"debug": "",
|
|
424
|
+
"err": "",
|
|
425
|
+
"out": "",
|
|
426
|
+
"warn": "[33m▲ [43;33m[[43;30mWARNING[43;33m][0m [1mwrangler.toml already exists![0m
|
|
416
427
|
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
428
|
+
",
|
|
429
|
+
}
|
|
430
|
+
`);
|
|
420
431
|
});
|
|
421
432
|
|
|
422
433
|
it("should not add a Cron Trigger to wrangler.toml when creating a Scheduled Worker if wrangler.toml already exists", async () => {
|
|
@@ -429,13 +440,14 @@ describe("init", () => {
|
|
|
429
440
|
});
|
|
430
441
|
mockConfirm(
|
|
431
442
|
{
|
|
432
|
-
text: "
|
|
443
|
+
text: "Do you want to continue initializing this project?",
|
|
433
444
|
result: true,
|
|
434
445
|
},
|
|
435
446
|
{
|
|
436
|
-
text: "
|
|
447
|
+
text: "Would you like to use git to manage this Worker?",
|
|
437
448
|
result: true,
|
|
438
449
|
},
|
|
450
|
+
|
|
439
451
|
{
|
|
440
452
|
text: "No package.json found. Would you like to create one?",
|
|
441
453
|
result: true,
|
|
@@ -446,10 +458,17 @@ describe("init", () => {
|
|
|
446
458
|
}
|
|
447
459
|
);
|
|
448
460
|
mockSelect({
|
|
449
|
-
text:
|
|
461
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
462
|
+
"src",
|
|
463
|
+
"index.ts"
|
|
464
|
+
)}?`,
|
|
450
465
|
result: "scheduled",
|
|
451
466
|
});
|
|
452
467
|
|
|
468
|
+
mockConfirm({
|
|
469
|
+
text: "Would you like us to write your first test with Vitest?",
|
|
470
|
+
result: true,
|
|
471
|
+
});
|
|
453
472
|
await runWrangler("init");
|
|
454
473
|
|
|
455
474
|
checkFiles({
|
|
@@ -477,10 +496,16 @@ describe("init", () => {
|
|
|
477
496
|
}
|
|
478
497
|
);
|
|
479
498
|
mockSelect({
|
|
480
|
-
text:
|
|
499
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
500
|
+
"src",
|
|
501
|
+
"index.ts"
|
|
502
|
+
)}?`,
|
|
481
503
|
result: "scheduled",
|
|
482
504
|
});
|
|
483
|
-
|
|
505
|
+
mockConfirm({
|
|
506
|
+
text: "Would you like us to write your first test with Vitest?",
|
|
507
|
+
result: true,
|
|
508
|
+
});
|
|
484
509
|
await runWrangler("init");
|
|
485
510
|
|
|
486
511
|
checkFiles({
|
|
@@ -552,20 +577,22 @@ describe("init", () => {
|
|
|
552
577
|
|
|
553
578
|
// Note the lack of "✨ Initialized git repository" in the log
|
|
554
579
|
expect(std).toMatchInlineSnapshot(`
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
580
|
+
Object {
|
|
581
|
+
"debug": "",
|
|
582
|
+
"err": "",
|
|
583
|
+
"out": "✨ Created wrangler.toml
|
|
584
|
+
✨ Created package.json
|
|
585
|
+
✨ Created tsconfig.json
|
|
586
|
+
✨ Created src/index.ts
|
|
587
|
+
✨ Created src/index.test.ts
|
|
588
|
+
✨ Installed @cloudflare/workers-types, typescript, and vitest into devDependencies
|
|
563
589
|
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
590
|
+
To start developing your Worker, run \`npm start\`
|
|
591
|
+
To start testing your Worker, run \`npm test\`
|
|
592
|
+
To publish your Worker to the Internet, run \`npm run deploy\`",
|
|
593
|
+
"warn": "",
|
|
594
|
+
}
|
|
595
|
+
`);
|
|
569
596
|
});
|
|
570
597
|
|
|
571
598
|
it("should not offer to initialize a git repo if it's already inside one (when using a path as name)", async () => {
|
|
@@ -577,20 +604,22 @@ describe("init", () => {
|
|
|
577
604
|
|
|
578
605
|
// Note the lack of "✨ Initialized git repository" in the log
|
|
579
606
|
expect(std).toMatchInlineSnapshot(`
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
607
|
+
Object {
|
|
608
|
+
"debug": "",
|
|
609
|
+
"err": "",
|
|
610
|
+
"out": "✨ Created path/to/worker/my-worker/wrangler.toml
|
|
611
|
+
✨ Created path/to/worker/my-worker/package.json
|
|
612
|
+
✨ Created path/to/worker/my-worker/tsconfig.json
|
|
613
|
+
✨ Created path/to/worker/my-worker/src/index.ts
|
|
614
|
+
✨ Created path/to/worker/my-worker/src/index.test.ts
|
|
615
|
+
✨ Installed @cloudflare/workers-types, typescript, and vitest into devDependencies
|
|
616
|
+
|
|
617
|
+
To start developing your Worker, run \`cd path/to/worker/my-worker && npm start\`
|
|
618
|
+
To start testing your Worker, run \`npm test\`
|
|
619
|
+
To publish your Worker to the Internet, run \`npm run deploy\`",
|
|
620
|
+
"warn": "",
|
|
621
|
+
}
|
|
622
|
+
`);
|
|
594
623
|
});
|
|
595
624
|
|
|
596
625
|
// I... don't know how to test this lol
|
|
@@ -611,14 +640,14 @@ describe("init", () => {
|
|
|
611
640
|
);
|
|
612
641
|
await runWrangler("init");
|
|
613
642
|
expect(std).toMatchInlineSnapshot(`
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
643
|
+
Object {
|
|
644
|
+
"debug": "",
|
|
645
|
+
"err": "",
|
|
646
|
+
"out": "✨ Created wrangler.toml
|
|
647
|
+
✨ Initialized git repository",
|
|
648
|
+
"warn": "",
|
|
649
|
+
}
|
|
650
|
+
`);
|
|
622
651
|
|
|
623
652
|
expect(execaSync("git", ["symbolic-ref", "HEAD"]).stdout).toEqual(
|
|
624
653
|
`refs/heads/${getDefaultBranchName()}`
|
|
@@ -643,7 +672,10 @@ describe("init", () => {
|
|
|
643
672
|
}
|
|
644
673
|
);
|
|
645
674
|
mockSelect({
|
|
646
|
-
text:
|
|
675
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
676
|
+
"src",
|
|
677
|
+
"index.js"
|
|
678
|
+
)}?`,
|
|
647
679
|
result: "none",
|
|
648
680
|
});
|
|
649
681
|
|
|
@@ -691,7 +723,11 @@ describe("init", () => {
|
|
|
691
723
|
}
|
|
692
724
|
);
|
|
693
725
|
mockSelect({
|
|
694
|
-
text:
|
|
726
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
727
|
+
"my-worker",
|
|
728
|
+
"src",
|
|
729
|
+
"index.js"
|
|
730
|
+
)}?`,
|
|
695
731
|
result: "none",
|
|
696
732
|
});
|
|
697
733
|
|
|
@@ -738,7 +774,10 @@ describe("init", () => {
|
|
|
738
774
|
}
|
|
739
775
|
);
|
|
740
776
|
mockSelect({
|
|
741
|
-
text:
|
|
777
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
778
|
+
"src",
|
|
779
|
+
"index.js"
|
|
780
|
+
)}?`,
|
|
742
781
|
result: "none",
|
|
743
782
|
});
|
|
744
783
|
writeFiles({
|
|
@@ -755,13 +794,13 @@ describe("init", () => {
|
|
|
755
794
|
},
|
|
756
795
|
});
|
|
757
796
|
expect(std).toMatchInlineSnapshot(`
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
797
|
+
Object {
|
|
798
|
+
"debug": "",
|
|
799
|
+
"err": "",
|
|
800
|
+
"out": "✨ Created wrangler.toml",
|
|
801
|
+
"warn": "",
|
|
802
|
+
}
|
|
803
|
+
`);
|
|
765
804
|
});
|
|
766
805
|
|
|
767
806
|
it("should not touch an existing package.json in an ancestor directory, when a name is passed", async () => {
|
|
@@ -774,17 +813,20 @@ describe("init", () => {
|
|
|
774
813
|
text: "No package.json found. Would you like to create one?",
|
|
775
814
|
result: true,
|
|
776
815
|
},
|
|
777
|
-
{
|
|
778
|
-
text: "Would you like to install wrangler into path/to/worker/my-worker/package.json?",
|
|
779
|
-
result: false,
|
|
780
|
-
},
|
|
781
816
|
{
|
|
782
817
|
text: "Would you like to use TypeScript?",
|
|
783
818
|
result: false,
|
|
784
819
|
}
|
|
785
820
|
);
|
|
786
821
|
mockSelect({
|
|
787
|
-
text:
|
|
822
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
823
|
+
"path",
|
|
824
|
+
"to",
|
|
825
|
+
"worker",
|
|
826
|
+
"my-worker",
|
|
827
|
+
"src",
|
|
828
|
+
"index.js"
|
|
829
|
+
)}?`,
|
|
788
830
|
result: "none",
|
|
789
831
|
});
|
|
790
832
|
writeFiles({
|
|
@@ -805,14 +847,14 @@ describe("init", () => {
|
|
|
805
847
|
},
|
|
806
848
|
});
|
|
807
849
|
expect(std).toMatchInlineSnapshot(`
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
850
|
+
Object {
|
|
851
|
+
"debug": "",
|
|
852
|
+
"err": "",
|
|
853
|
+
"out": "✨ Created path/to/worker/my-worker/wrangler.toml
|
|
854
|
+
✨ Created path/to/worker/my-worker/package.json",
|
|
855
|
+
"warn": "",
|
|
856
|
+
}
|
|
857
|
+
`);
|
|
816
858
|
});
|
|
817
859
|
|
|
818
860
|
it("should offer to install wrangler into an existing package.json", async () => {
|
|
@@ -831,7 +873,10 @@ describe("init", () => {
|
|
|
831
873
|
}
|
|
832
874
|
);
|
|
833
875
|
mockSelect({
|
|
834
|
-
text:
|
|
876
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
877
|
+
"src",
|
|
878
|
+
"index.js"
|
|
879
|
+
)}?`,
|
|
835
880
|
result: "none",
|
|
836
881
|
});
|
|
837
882
|
writeFiles({
|
|
@@ -872,7 +917,10 @@ describe("init", () => {
|
|
|
872
917
|
result: false,
|
|
873
918
|
},
|
|
874
919
|
{
|
|
875
|
-
text:
|
|
920
|
+
text: `Would you like to install wrangler into ${path.join(
|
|
921
|
+
"..",
|
|
922
|
+
"package.json"
|
|
923
|
+
)}?`,
|
|
876
924
|
result: true,
|
|
877
925
|
},
|
|
878
926
|
{
|
|
@@ -881,7 +929,10 @@ describe("init", () => {
|
|
|
881
929
|
}
|
|
882
930
|
);
|
|
883
931
|
mockSelect({
|
|
884
|
-
text:
|
|
932
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
933
|
+
"src",
|
|
934
|
+
"index.js"
|
|
935
|
+
)}?`,
|
|
885
936
|
result: "none",
|
|
886
937
|
});
|
|
887
938
|
writeFiles({
|
|
@@ -926,7 +977,11 @@ describe("init", () => {
|
|
|
926
977
|
result: false,
|
|
927
978
|
},
|
|
928
979
|
{
|
|
929
|
-
text:
|
|
980
|
+
text: `Would you like to install wrangler into ${path.join(
|
|
981
|
+
"..",
|
|
982
|
+
"..",
|
|
983
|
+
"package.json"
|
|
984
|
+
)}?`,
|
|
930
985
|
result: false,
|
|
931
986
|
},
|
|
932
987
|
{
|
|
@@ -935,7 +990,10 @@ describe("init", () => {
|
|
|
935
990
|
}
|
|
936
991
|
);
|
|
937
992
|
mockSelect({
|
|
938
|
-
text:
|
|
993
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
994
|
+
"src",
|
|
995
|
+
"index.js"
|
|
996
|
+
)}?`,
|
|
939
997
|
result: "none",
|
|
940
998
|
});
|
|
941
999
|
writeFiles({
|
|
@@ -958,13 +1016,13 @@ describe("init", () => {
|
|
|
958
1016
|
},
|
|
959
1017
|
});
|
|
960
1018
|
expect(std).toMatchInlineSnapshot(`
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
1019
|
+
Object {
|
|
1020
|
+
"debug": "",
|
|
1021
|
+
"err": "",
|
|
1022
|
+
"out": "✨ Created wrangler.toml",
|
|
1023
|
+
"warn": "",
|
|
1024
|
+
}
|
|
1025
|
+
`);
|
|
968
1026
|
});
|
|
969
1027
|
});
|
|
970
1028
|
|
|
@@ -982,13 +1040,19 @@ describe("init", () => {
|
|
|
982
1040
|
{
|
|
983
1041
|
text: "Would you like to use TypeScript?",
|
|
984
1042
|
result: false,
|
|
985
|
-
}
|
|
986
|
-
{ text: "Would you like us to write your first test?", result: false }
|
|
1043
|
+
}
|
|
987
1044
|
);
|
|
988
1045
|
mockSelect({
|
|
989
|
-
text:
|
|
1046
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
1047
|
+
"src",
|
|
1048
|
+
"index.js"
|
|
1049
|
+
)}?`,
|
|
990
1050
|
result: "fetch",
|
|
991
1051
|
});
|
|
1052
|
+
mockConfirm({
|
|
1053
|
+
text: "Would you like us to write your first test?",
|
|
1054
|
+
result: false,
|
|
1055
|
+
});
|
|
992
1056
|
writeFiles({
|
|
993
1057
|
items: {
|
|
994
1058
|
"package.json": {
|
|
@@ -1039,9 +1103,16 @@ describe("init", () => {
|
|
|
1039
1103
|
}
|
|
1040
1104
|
);
|
|
1041
1105
|
mockSelect({
|
|
1042
|
-
text:
|
|
1106
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
1107
|
+
"src",
|
|
1108
|
+
"index.ts"
|
|
1109
|
+
)}?`,
|
|
1043
1110
|
result: "fetch",
|
|
1044
1111
|
});
|
|
1112
|
+
mockConfirm({
|
|
1113
|
+
text: "Would you like us to write your first test with Vitest?",
|
|
1114
|
+
result: true,
|
|
1115
|
+
});
|
|
1045
1116
|
writeFiles({
|
|
1046
1117
|
items: {
|
|
1047
1118
|
"package.json": {
|
|
@@ -1059,19 +1130,20 @@ describe("init", () => {
|
|
|
1059
1130
|
},
|
|
1060
1131
|
});
|
|
1061
1132
|
expect(std).toMatchInlineSnapshot(`
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1133
|
+
Object {
|
|
1134
|
+
"debug": "",
|
|
1135
|
+
"err": "",
|
|
1136
|
+
"out": "✨ Created wrangler.toml
|
|
1137
|
+
✨ Created tsconfig.json
|
|
1138
|
+
✨ Created src/index.ts
|
|
1139
|
+
✨ Created src/index.test.ts
|
|
1140
|
+
✨ Installed @cloudflare/workers-types, typescript, and vitest into devDependencies
|
|
1141
|
+
|
|
1142
|
+
To start developing your Worker, run \`npx wrangler dev\`
|
|
1143
|
+
To publish your Worker to the Internet, run \`npx wrangler publish\`",
|
|
1144
|
+
"warn": "",
|
|
1145
|
+
}
|
|
1146
|
+
`);
|
|
1075
1147
|
});
|
|
1076
1148
|
|
|
1077
1149
|
it("should add scripts for a typescript project with .ts extension", async () => {
|
|
@@ -1084,19 +1156,23 @@ describe("init", () => {
|
|
|
1084
1156
|
text: "No package.json found. Would you like to create one?",
|
|
1085
1157
|
result: true,
|
|
1086
1158
|
},
|
|
1087
|
-
|
|
1088
|
-
text: "Would you like to install wrangler into package.json?",
|
|
1089
|
-
result: false,
|
|
1090
|
-
},
|
|
1159
|
+
|
|
1091
1160
|
{
|
|
1092
1161
|
text: "Would you like to use TypeScript?",
|
|
1093
1162
|
result: true,
|
|
1094
1163
|
}
|
|
1095
1164
|
);
|
|
1096
1165
|
mockSelect({
|
|
1097
|
-
text:
|
|
1166
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
1167
|
+
"src",
|
|
1168
|
+
"index.ts"
|
|
1169
|
+
)}?`,
|
|
1098
1170
|
result: "fetch",
|
|
1099
1171
|
});
|
|
1172
|
+
mockConfirm({
|
|
1173
|
+
text: "Would you like us to write your first test with Vitest?",
|
|
1174
|
+
result: true,
|
|
1175
|
+
});
|
|
1100
1176
|
|
|
1101
1177
|
await runWrangler("init");
|
|
1102
1178
|
|
|
@@ -1107,8 +1183,12 @@ describe("init", () => {
|
|
|
1107
1183
|
name: expect.stringContaining("wrangler-tests"),
|
|
1108
1184
|
version: "0.0.0",
|
|
1109
1185
|
scripts: {
|
|
1110
|
-
start: "wrangler dev",
|
|
1111
1186
|
deploy: "wrangler publish",
|
|
1187
|
+
start: "wrangler dev",
|
|
1188
|
+
test: "vitest",
|
|
1189
|
+
},
|
|
1190
|
+
devDependencies: {
|
|
1191
|
+
wrangler: expect.any(String),
|
|
1112
1192
|
},
|
|
1113
1193
|
}),
|
|
1114
1194
|
},
|
|
@@ -1117,15 +1197,17 @@ describe("init", () => {
|
|
|
1117
1197
|
},
|
|
1118
1198
|
});
|
|
1119
1199
|
expect(std.out).toMatchInlineSnapshot(`
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1200
|
+
"✨ Created wrangler.toml
|
|
1201
|
+
✨ Created package.json
|
|
1202
|
+
✨ Created tsconfig.json
|
|
1203
|
+
✨ Created src/index.ts
|
|
1204
|
+
✨ Created src/index.test.ts
|
|
1205
|
+
✨ Installed @cloudflare/workers-types, typescript, and vitest into devDependencies
|
|
1125
1206
|
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1207
|
+
To start developing your Worker, run \`npm start\`
|
|
1208
|
+
To start testing your Worker, run \`npm test\`
|
|
1209
|
+
To publish your Worker to the Internet, run \`npm run deploy\`"
|
|
1210
|
+
`);
|
|
1129
1211
|
});
|
|
1130
1212
|
|
|
1131
1213
|
it("should not overwrite package.json scripts for a typescript project", async () => {
|
|
@@ -1144,9 +1226,16 @@ describe("init", () => {
|
|
|
1144
1226
|
}
|
|
1145
1227
|
);
|
|
1146
1228
|
mockSelect({
|
|
1147
|
-
text:
|
|
1229
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
1230
|
+
"src",
|
|
1231
|
+
"index.ts"
|
|
1232
|
+
)}?`,
|
|
1148
1233
|
result: "fetch",
|
|
1149
1234
|
});
|
|
1235
|
+
mockConfirm({
|
|
1236
|
+
text: "Would you like us to write your first test with Vitest?",
|
|
1237
|
+
result: true,
|
|
1238
|
+
});
|
|
1150
1239
|
writeFiles({
|
|
1151
1240
|
items: {
|
|
1152
1241
|
"package.json": {
|
|
@@ -1177,14 +1266,15 @@ describe("init", () => {
|
|
|
1177
1266
|
},
|
|
1178
1267
|
});
|
|
1179
1268
|
expect(std.out).toMatchInlineSnapshot(`
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1269
|
+
"✨ Created wrangler.toml
|
|
1270
|
+
✨ Created tsconfig.json
|
|
1271
|
+
✨ Created src/index.ts
|
|
1272
|
+
✨ Created src/index.test.ts
|
|
1273
|
+
✨ Installed @cloudflare/workers-types, typescript, and vitest into devDependencies
|
|
1184
1274
|
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1275
|
+
To start developing your Worker, run \`npx wrangler dev\`
|
|
1276
|
+
To publish your Worker to the Internet, run \`npx wrangler publish\`"
|
|
1277
|
+
`);
|
|
1188
1278
|
});
|
|
1189
1279
|
|
|
1190
1280
|
it("should not offer to create a worker in a ts project if a file already exists at the location", async () => {
|
|
@@ -1219,15 +1309,15 @@ describe("init", () => {
|
|
|
1219
1309
|
},
|
|
1220
1310
|
});
|
|
1221
1311
|
expect(std).toMatchInlineSnapshot(`
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1312
|
+
Object {
|
|
1313
|
+
"debug": "",
|
|
1314
|
+
"err": "",
|
|
1315
|
+
"out": "✨ Created wrangler.toml
|
|
1316
|
+
✨ Created tsconfig.json
|
|
1317
|
+
✨ Installed @cloudflare/workers-types and typescript into devDependencies",
|
|
1318
|
+
"warn": "",
|
|
1319
|
+
}
|
|
1320
|
+
`);
|
|
1231
1321
|
});
|
|
1232
1322
|
|
|
1233
1323
|
it("should not offer to create a worker in a ts project for a named worker if a file already exists at the location", async () => {
|
|
@@ -1240,10 +1330,7 @@ describe("init", () => {
|
|
|
1240
1330
|
text: "No package.json found. Would you like to create one?",
|
|
1241
1331
|
result: true,
|
|
1242
1332
|
},
|
|
1243
|
-
|
|
1244
|
-
text: "Would you like to install wrangler into package.json?",
|
|
1245
|
-
result: false,
|
|
1246
|
-
},
|
|
1333
|
+
|
|
1247
1334
|
{
|
|
1248
1335
|
text: "Would you like to use TypeScript?",
|
|
1249
1336
|
result: true,
|
|
@@ -1266,16 +1353,16 @@ describe("init", () => {
|
|
|
1266
1353
|
},
|
|
1267
1354
|
});
|
|
1268
1355
|
expect(std).toMatchInlineSnapshot(`
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1356
|
+
Object {
|
|
1357
|
+
"debug": "",
|
|
1358
|
+
"err": "",
|
|
1359
|
+
"out": "✨ Created my-worker/wrangler.toml
|
|
1360
|
+
✨ Created my-worker/package.json
|
|
1361
|
+
✨ Created my-worker/tsconfig.json
|
|
1362
|
+
✨ Installed @cloudflare/workers-types and typescript into devDependencies",
|
|
1363
|
+
"warn": "",
|
|
1364
|
+
}
|
|
1365
|
+
`);
|
|
1279
1366
|
});
|
|
1280
1367
|
|
|
1281
1368
|
it("should create a tsconfig.json and install `workers-types` if none is found and user confirms", async () => {
|
|
@@ -1294,7 +1381,10 @@ describe("init", () => {
|
|
|
1294
1381
|
}
|
|
1295
1382
|
);
|
|
1296
1383
|
mockSelect({
|
|
1297
|
-
text:
|
|
1384
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
1385
|
+
"src",
|
|
1386
|
+
"index.ts"
|
|
1387
|
+
)}?`,
|
|
1298
1388
|
result: "none",
|
|
1299
1389
|
});
|
|
1300
1390
|
|
|
@@ -1319,16 +1409,16 @@ describe("init", () => {
|
|
|
1319
1409
|
"typescript"
|
|
1320
1410
|
);
|
|
1321
1411
|
expect(std).toMatchInlineSnapshot(`
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1412
|
+
Object {
|
|
1413
|
+
"debug": "",
|
|
1414
|
+
"err": "",
|
|
1415
|
+
"out": "✨ Created wrangler.toml
|
|
1416
|
+
✨ Created package.json
|
|
1417
|
+
✨ Created tsconfig.json
|
|
1418
|
+
✨ Installed @cloudflare/workers-types and typescript into devDependencies",
|
|
1419
|
+
"warn": "",
|
|
1420
|
+
}
|
|
1421
|
+
`);
|
|
1332
1422
|
});
|
|
1333
1423
|
|
|
1334
1424
|
it("should not touch an existing tsconfig.json in the same directory", async () => {
|
|
@@ -1337,9 +1427,16 @@ describe("init", () => {
|
|
|
1337
1427
|
result: false,
|
|
1338
1428
|
});
|
|
1339
1429
|
mockSelect({
|
|
1340
|
-
text:
|
|
1430
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
1431
|
+
"src",
|
|
1432
|
+
"index.ts"
|
|
1433
|
+
)}?`,
|
|
1341
1434
|
result: "fetch",
|
|
1342
1435
|
});
|
|
1436
|
+
mockConfirm({
|
|
1437
|
+
text: "Would you like us to write your first test with Vitest?",
|
|
1438
|
+
result: true,
|
|
1439
|
+
});
|
|
1343
1440
|
writeFiles({
|
|
1344
1441
|
items: {
|
|
1345
1442
|
"package.json": {
|
|
@@ -1366,17 +1463,19 @@ describe("init", () => {
|
|
|
1366
1463
|
},
|
|
1367
1464
|
});
|
|
1368
1465
|
expect(std).toMatchInlineSnapshot(`
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1466
|
+
Object {
|
|
1467
|
+
"debug": "",
|
|
1468
|
+
"err": "",
|
|
1469
|
+
"out": "✨ Created wrangler.toml
|
|
1470
|
+
✨ Created src/index.ts
|
|
1471
|
+
✨ Created src/index.test.ts
|
|
1472
|
+
✨ Installed vitest into devDependencies
|
|
1374
1473
|
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1474
|
+
To start developing your Worker, run \`npx wrangler dev\`
|
|
1475
|
+
To publish your Worker to the Internet, run \`npx wrangler publish\`",
|
|
1476
|
+
"warn": "",
|
|
1477
|
+
}
|
|
1478
|
+
`);
|
|
1380
1479
|
});
|
|
1381
1480
|
|
|
1382
1481
|
it("should not touch an existing tsconfig.json in the ancestor of a target directory, if a name is passed", async () => {
|
|
@@ -1395,9 +1494,20 @@ describe("init", () => {
|
|
|
1395
1494
|
}
|
|
1396
1495
|
);
|
|
1397
1496
|
mockSelect({
|
|
1398
|
-
text:
|
|
1497
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
1498
|
+
"path",
|
|
1499
|
+
"to",
|
|
1500
|
+
"worker",
|
|
1501
|
+
"my-worker",
|
|
1502
|
+
"src",
|
|
1503
|
+
"index.ts"
|
|
1504
|
+
)}?`,
|
|
1399
1505
|
result: "fetch",
|
|
1400
1506
|
});
|
|
1507
|
+
mockConfirm({
|
|
1508
|
+
text: "Would you like us to write your first test with Vitest?",
|
|
1509
|
+
result: true,
|
|
1510
|
+
});
|
|
1401
1511
|
writeFiles({
|
|
1402
1512
|
items: {
|
|
1403
1513
|
"path/to/worker/package.json": {
|
|
@@ -1424,20 +1534,22 @@ describe("init", () => {
|
|
|
1424
1534
|
},
|
|
1425
1535
|
});
|
|
1426
1536
|
expect(std).toMatchInlineSnapshot(`
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1537
|
+
Object {
|
|
1538
|
+
"debug": "",
|
|
1539
|
+
"err": "",
|
|
1540
|
+
"out": "✨ Created path/to/worker/my-worker/wrangler.toml
|
|
1541
|
+
✨ Created path/to/worker/my-worker/package.json
|
|
1542
|
+
✨ Created path/to/worker/my-worker/tsconfig.json
|
|
1543
|
+
✨ Created path/to/worker/my-worker/src/index.ts
|
|
1544
|
+
✨ Created path/to/worker/my-worker/src/index.test.ts
|
|
1545
|
+
✨ Installed @cloudflare/workers-types, typescript, and vitest into devDependencies
|
|
1546
|
+
|
|
1547
|
+
To start developing your Worker, run \`cd path/to/worker/my-worker && npm start\`
|
|
1548
|
+
To start testing your Worker, run \`npm test\`
|
|
1549
|
+
To publish your Worker to the Internet, run \`npm run deploy\`",
|
|
1550
|
+
"warn": "",
|
|
1551
|
+
}
|
|
1552
|
+
`);
|
|
1441
1553
|
});
|
|
1442
1554
|
|
|
1443
1555
|
it("should offer to install type definitions in an existing typescript project", async () => {
|
|
@@ -1456,7 +1568,10 @@ describe("init", () => {
|
|
|
1456
1568
|
}
|
|
1457
1569
|
);
|
|
1458
1570
|
mockSelect({
|
|
1459
|
-
text:
|
|
1571
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
1572
|
+
"src",
|
|
1573
|
+
"index.ts"
|
|
1574
|
+
)}?`,
|
|
1460
1575
|
result: "none",
|
|
1461
1576
|
});
|
|
1462
1577
|
writeFiles({
|
|
@@ -1500,9 +1615,16 @@ describe("init", () => {
|
|
|
1500
1615
|
result: false,
|
|
1501
1616
|
});
|
|
1502
1617
|
mockSelect({
|
|
1503
|
-
text:
|
|
1618
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
1619
|
+
"src",
|
|
1620
|
+
"index.ts"
|
|
1621
|
+
)}?`,
|
|
1504
1622
|
result: "fetch",
|
|
1505
1623
|
});
|
|
1624
|
+
mockConfirm({
|
|
1625
|
+
text: "Would you like us to write your first test with Vitest?",
|
|
1626
|
+
result: true,
|
|
1627
|
+
});
|
|
1506
1628
|
writeFiles({
|
|
1507
1629
|
items: {
|
|
1508
1630
|
"package.json": {
|
|
@@ -1531,17 +1653,19 @@ describe("init", () => {
|
|
|
1531
1653
|
},
|
|
1532
1654
|
});
|
|
1533
1655
|
expect(std).toMatchInlineSnapshot(`
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1656
|
+
Object {
|
|
1657
|
+
"debug": "",
|
|
1658
|
+
"err": "",
|
|
1659
|
+
"out": "✨ Created wrangler.toml
|
|
1660
|
+
✨ Created src/index.ts
|
|
1661
|
+
✨ Created src/index.test.ts
|
|
1662
|
+
✨ Installed vitest into devDependencies
|
|
1539
1663
|
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1664
|
+
To start developing your Worker, run \`npx wrangler dev\`
|
|
1665
|
+
To publish your Worker to the Internet, run \`npx wrangler publish\`",
|
|
1666
|
+
"warn": "",
|
|
1667
|
+
}
|
|
1668
|
+
`);
|
|
1545
1669
|
});
|
|
1546
1670
|
});
|
|
1547
1671
|
|
|
@@ -1556,21 +1680,23 @@ describe("init", () => {
|
|
|
1556
1680
|
text: "No package.json found. Would you like to create one?",
|
|
1557
1681
|
result: true,
|
|
1558
1682
|
},
|
|
1559
|
-
|
|
1560
|
-
text: "Would you like to install wrangler into package.json?",
|
|
1561
|
-
result: false,
|
|
1562
|
-
},
|
|
1683
|
+
|
|
1563
1684
|
{
|
|
1564
1685
|
text: "Would you like to use TypeScript?",
|
|
1565
1686
|
result: false,
|
|
1566
|
-
}
|
|
1567
|
-
{ text: "Would you like us to write your first test?", result: false }
|
|
1687
|
+
}
|
|
1568
1688
|
);
|
|
1569
1689
|
mockSelect({
|
|
1570
|
-
text:
|
|
1690
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
1691
|
+
"src",
|
|
1692
|
+
"index.js"
|
|
1693
|
+
)}?`,
|
|
1571
1694
|
result: "fetch",
|
|
1572
1695
|
});
|
|
1573
|
-
|
|
1696
|
+
mockConfirm({
|
|
1697
|
+
text: "Would you like us to write your first test?",
|
|
1698
|
+
result: false,
|
|
1699
|
+
});
|
|
1574
1700
|
await runWrangler("init");
|
|
1575
1701
|
|
|
1576
1702
|
checkFiles({
|
|
@@ -1608,24 +1734,26 @@ describe("init", () => {
|
|
|
1608
1734
|
text: "No package.json found. Would you like to create one?",
|
|
1609
1735
|
result: true,
|
|
1610
1736
|
},
|
|
1611
|
-
{
|
|
1612
|
-
text: "Would you like to install wrangler into package.json?",
|
|
1613
|
-
result: false,
|
|
1614
|
-
},
|
|
1615
1737
|
{
|
|
1616
1738
|
text: "Would you like to use TypeScript?",
|
|
1617
1739
|
result: false,
|
|
1618
|
-
}
|
|
1619
|
-
{ text: "Would you like us to write your first test?", result: true }
|
|
1620
|
-
);
|
|
1621
|
-
mockSelect(
|
|
1622
|
-
{
|
|
1623
|
-
text: "Would you like to create a Worker at src/index.js?",
|
|
1624
|
-
result: "fetch",
|
|
1625
|
-
},
|
|
1626
|
-
{ text: "Which test runner would you like to use?", result: "jest" }
|
|
1740
|
+
}
|
|
1627
1741
|
);
|
|
1628
|
-
|
|
1742
|
+
mockSelect({
|
|
1743
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
1744
|
+
"src",
|
|
1745
|
+
"index.js"
|
|
1746
|
+
)}?`,
|
|
1747
|
+
result: "fetch",
|
|
1748
|
+
});
|
|
1749
|
+
mockConfirm({
|
|
1750
|
+
text: "Would you like us to write your first test?",
|
|
1751
|
+
result: true,
|
|
1752
|
+
});
|
|
1753
|
+
mockSelect({
|
|
1754
|
+
text: "Which test runner would you like to use?",
|
|
1755
|
+
result: "jest",
|
|
1756
|
+
});
|
|
1629
1757
|
await runWrangler("init");
|
|
1630
1758
|
|
|
1631
1759
|
checkFiles({
|
|
@@ -1669,24 +1797,26 @@ describe("init", () => {
|
|
|
1669
1797
|
text: "No package.json found. Would you like to create one?",
|
|
1670
1798
|
result: true,
|
|
1671
1799
|
},
|
|
1672
|
-
{
|
|
1673
|
-
text: "Would you like to install wrangler into package.json?",
|
|
1674
|
-
result: false,
|
|
1675
|
-
},
|
|
1676
1800
|
{
|
|
1677
1801
|
text: "Would you like to use TypeScript?",
|
|
1678
1802
|
result: false,
|
|
1679
|
-
}
|
|
1680
|
-
{ text: "Would you like us to write your first test?", result: true }
|
|
1681
|
-
);
|
|
1682
|
-
mockSelect(
|
|
1683
|
-
{
|
|
1684
|
-
text: "Would you like to create a Worker at src/index.js?",
|
|
1685
|
-
result: "fetch",
|
|
1686
|
-
},
|
|
1687
|
-
{ text: "Which test runner would you like to use?", result: "vitest" }
|
|
1803
|
+
}
|
|
1688
1804
|
);
|
|
1689
|
-
|
|
1805
|
+
mockSelect({
|
|
1806
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
1807
|
+
"src",
|
|
1808
|
+
"index.js"
|
|
1809
|
+
)}?`,
|
|
1810
|
+
result: "fetch",
|
|
1811
|
+
});
|
|
1812
|
+
mockConfirm({
|
|
1813
|
+
text: "Would you like us to write your first test?",
|
|
1814
|
+
result: true,
|
|
1815
|
+
});
|
|
1816
|
+
mockSelect({
|
|
1817
|
+
text: "Which test runner would you like to use?",
|
|
1818
|
+
result: "vitest",
|
|
1819
|
+
});
|
|
1690
1820
|
await runWrangler("init");
|
|
1691
1821
|
|
|
1692
1822
|
checkFiles({
|
|
@@ -1733,13 +1863,19 @@ describe("init", () => {
|
|
|
1733
1863
|
{
|
|
1734
1864
|
text: "Would you like to use TypeScript?",
|
|
1735
1865
|
result: false,
|
|
1736
|
-
}
|
|
1737
|
-
{ text: "Would you like us to write your first test?", result: false }
|
|
1866
|
+
}
|
|
1738
1867
|
);
|
|
1739
1868
|
mockSelect({
|
|
1740
|
-
text:
|
|
1869
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
1870
|
+
"src",
|
|
1871
|
+
"index.js"
|
|
1872
|
+
)}?`,
|
|
1741
1873
|
result: "fetch",
|
|
1742
1874
|
});
|
|
1875
|
+
mockConfirm({
|
|
1876
|
+
text: "Would you like us to write your first test?",
|
|
1877
|
+
result: false,
|
|
1878
|
+
});
|
|
1743
1879
|
writeFiles({
|
|
1744
1880
|
items: {
|
|
1745
1881
|
"package.json": {
|
|
@@ -1826,7 +1962,10 @@ describe("init", () => {
|
|
|
1826
1962
|
result: false,
|
|
1827
1963
|
},
|
|
1828
1964
|
{
|
|
1829
|
-
text:
|
|
1965
|
+
text: `Would you like to install wrangler into ${path.join(
|
|
1966
|
+
"my-worker",
|
|
1967
|
+
"package.json"
|
|
1968
|
+
)}?`,
|
|
1830
1969
|
result: false,
|
|
1831
1970
|
},
|
|
1832
1971
|
{
|
|
@@ -1887,24 +2026,40 @@ describe("init", () => {
|
|
|
1887
2026
|
...MINIMAL_WRANGLER_TOML,
|
|
1888
2027
|
name: workerName,
|
|
1889
2028
|
}),
|
|
2029
|
+
"package.json": {
|
|
2030
|
+
contents: expect.objectContaining({
|
|
2031
|
+
name: expect.stringContaining("wrangler-tests"),
|
|
2032
|
+
version: "0.0.0",
|
|
2033
|
+
scripts: {
|
|
2034
|
+
deploy: "wrangler publish",
|
|
2035
|
+
start: "wrangler dev",
|
|
2036
|
+
test: "vitest",
|
|
2037
|
+
},
|
|
2038
|
+
devDependencies: {
|
|
2039
|
+
wrangler: expect.any(String),
|
|
2040
|
+
},
|
|
2041
|
+
}),
|
|
2042
|
+
},
|
|
1890
2043
|
},
|
|
1891
2044
|
});
|
|
1892
2045
|
expect(std).toMatchInlineSnapshot(`
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
2046
|
+
Object {
|
|
2047
|
+
"debug": "",
|
|
2048
|
+
"err": "",
|
|
2049
|
+
"out": "✨ Created wrangler.toml
|
|
2050
|
+
✨ Initialized git repository
|
|
2051
|
+
✨ Created package.json
|
|
2052
|
+
✨ Created tsconfig.json
|
|
2053
|
+
✨ Created src/index.ts
|
|
2054
|
+
✨ Created src/index.test.ts
|
|
2055
|
+
✨ Installed @cloudflare/workers-types, typescript, and vitest into devDependencies
|
|
1902
2056
|
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
2057
|
+
To start developing your Worker, run \`npm start\`
|
|
2058
|
+
To start testing your Worker, run \`npm test\`
|
|
2059
|
+
To publish your Worker to the Internet, run \`npm run deploy\`",
|
|
2060
|
+
"warn": "",
|
|
2061
|
+
}
|
|
2062
|
+
`);
|
|
1908
2063
|
});
|
|
1909
2064
|
|
|
1910
2065
|
it('should create a worker in a nested directory if "name" is path/to/worker', async () => {
|
|
@@ -1919,21 +2074,23 @@ describe("init", () => {
|
|
|
1919
2074
|
},
|
|
1920
2075
|
});
|
|
1921
2076
|
expect(std).toMatchInlineSnapshot(`
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
2077
|
+
Object {
|
|
2078
|
+
"debug": "",
|
|
2079
|
+
"err": "",
|
|
2080
|
+
"out": "✨ Created path/to/worker/wrangler.toml
|
|
2081
|
+
✨ Initialized git repository at path/to/worker
|
|
2082
|
+
✨ Created path/to/worker/package.json
|
|
2083
|
+
✨ Created path/to/worker/tsconfig.json
|
|
2084
|
+
✨ Created path/to/worker/src/index.ts
|
|
2085
|
+
✨ Created path/to/worker/src/index.test.ts
|
|
2086
|
+
✨ Installed @cloudflare/workers-types, typescript, and vitest into devDependencies
|
|
2087
|
+
|
|
2088
|
+
To start developing your Worker, run \`cd path/to/worker && npm start\`
|
|
2089
|
+
To start testing your Worker, run \`npm test\`
|
|
2090
|
+
To publish your Worker to the Internet, run \`npm run deploy\`",
|
|
2091
|
+
"warn": "",
|
|
2092
|
+
}
|
|
2093
|
+
`);
|
|
1937
2094
|
});
|
|
1938
2095
|
|
|
1939
2096
|
it("should normalize characters that aren't lowercase alphanumeric, underscores, or dashes", async () => {
|
|
@@ -1948,21 +2105,23 @@ describe("init", () => {
|
|
|
1948
2105
|
},
|
|
1949
2106
|
});
|
|
1950
2107
|
expect(std).toMatchInlineSnapshot(`
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
2108
|
+
Object {
|
|
2109
|
+
"debug": "",
|
|
2110
|
+
"err": "",
|
|
2111
|
+
"out": "✨ Created WEIRD_w0rkr_N4m3.js.tsx.tar.gz/wrangler.toml
|
|
2112
|
+
✨ Initialized git repository at WEIRD_w0rkr_N4m3.js.tsx.tar.gz
|
|
2113
|
+
✨ Created WEIRD_w0rkr_N4m3.js.tsx.tar.gz/package.json
|
|
2114
|
+
✨ Created WEIRD_w0rkr_N4m3.js.tsx.tar.gz/tsconfig.json
|
|
2115
|
+
✨ Created WEIRD_w0rkr_N4m3.js.tsx.tar.gz/src/index.ts
|
|
2116
|
+
✨ Created WEIRD_w0rkr_N4m3.js.tsx.tar.gz/src/index.test.ts
|
|
2117
|
+
✨ Installed @cloudflare/workers-types, typescript, and vitest into devDependencies
|
|
2118
|
+
|
|
2119
|
+
To start developing your Worker, run \`cd WEIRD_w0rkr_N4m3.js.tsx.tar.gz && npm start\`
|
|
2120
|
+
To start testing your Worker, run \`npm test\`
|
|
2121
|
+
To publish your Worker to the Internet, run \`npm run deploy\`",
|
|
2122
|
+
"warn": "",
|
|
2123
|
+
}
|
|
2124
|
+
`);
|
|
1966
2125
|
});
|
|
1967
2126
|
|
|
1968
2127
|
it("should ignore ancestor files (such as wrangler.toml, package.json and tsconfig.json) if a name/path is given", async () => {
|
|
@@ -1971,23 +2130,29 @@ describe("init", () => {
|
|
|
1971
2130
|
text: "Would you like to use git to manage this Worker?",
|
|
1972
2131
|
result: false,
|
|
1973
2132
|
},
|
|
1974
|
-
{
|
|
1975
|
-
text: "Would you like to use TypeScript?",
|
|
1976
|
-
result: true,
|
|
1977
|
-
},
|
|
1978
2133
|
{
|
|
1979
2134
|
text: "No package.json found. Would you like to create one?",
|
|
1980
2135
|
result: true,
|
|
1981
2136
|
},
|
|
1982
2137
|
{
|
|
1983
|
-
text: "Would you like to
|
|
2138
|
+
text: "Would you like to use TypeScript?",
|
|
1984
2139
|
result: true,
|
|
1985
2140
|
}
|
|
1986
2141
|
);
|
|
1987
2142
|
mockSelect({
|
|
1988
|
-
text:
|
|
2143
|
+
text: `Would you like to create a Worker at ${path.join(
|
|
2144
|
+
"sub",
|
|
2145
|
+
"folder",
|
|
2146
|
+
"worker",
|
|
2147
|
+
"src",
|
|
2148
|
+
"index.ts"
|
|
2149
|
+
)}?`,
|
|
1989
2150
|
result: "fetch",
|
|
1990
2151
|
});
|
|
2152
|
+
mockConfirm({
|
|
2153
|
+
text: "Would you like us to write your first test with Vitest?",
|
|
2154
|
+
result: true,
|
|
2155
|
+
});
|
|
1991
2156
|
writeFiles({
|
|
1992
2157
|
items: {
|
|
1993
2158
|
"package.json": { contents: { name: "top-level" } },
|
|
@@ -2035,10 +2200,7 @@ describe("init", () => {
|
|
|
2035
2200
|
describe("from dashboard", () => {
|
|
2036
2201
|
mockApiToken();
|
|
2037
2202
|
mockAccountId({ accountId: "LCARS" });
|
|
2038
|
-
|
|
2039
|
-
unsetAllMocks();
|
|
2040
|
-
unsetSpecialMockFns();
|
|
2041
|
-
});
|
|
2203
|
+
|
|
2042
2204
|
const mockDashboardScript = `
|
|
2043
2205
|
export default {
|
|
2044
2206
|
async fetch(request, env, ctx) {
|
|
@@ -2114,7 +2276,7 @@ describe("init", () => {
|
|
|
2114
2276
|
type: "service",
|
|
2115
2277
|
},
|
|
2116
2278
|
{
|
|
2117
|
-
type: "
|
|
2279
|
+
type: "dispatch_namespace",
|
|
2118
2280
|
name: "name-namespace-mock",
|
|
2119
2281
|
namespace: "namespace-mock",
|
|
2120
2282
|
},
|
|
@@ -2276,69 +2438,108 @@ describe("init", () => {
|
|
|
2276
2438
|
expectedEnvironment: string;
|
|
2277
2439
|
expectedCompatDate: string | undefined;
|
|
2278
2440
|
}) {
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
|
|
2287
|
-
|
|
2288
|
-
|
|
2289
|
-
|
|
2290
|
-
|
|
2291
|
-
|
|
2292
|
-
|
|
2293
|
-
|
|
2294
|
-
|
|
2295
|
-
|
|
2296
|
-
|
|
2297
|
-
|
|
2298
|
-
|
|
2299
|
-
|
|
2300
|
-
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2441
|
+
msw.use(
|
|
2442
|
+
rest.get(
|
|
2443
|
+
`*/accounts/:accountId/workers/services/:scriptName`,
|
|
2444
|
+
(req, res, ctx) => {
|
|
2445
|
+
expect(req.params.accountId).toEqual(expectedAccountId);
|
|
2446
|
+
expect(req.params.scriptName).toEqual(expectedScriptName);
|
|
2447
|
+
|
|
2448
|
+
if (expectedCompatDate === undefined)
|
|
2449
|
+
(mockServiceMetadata.default_environment.script
|
|
2450
|
+
.compatibility_date as unknown) = expectedCompatDate;
|
|
2451
|
+
|
|
2452
|
+
return res.once(
|
|
2453
|
+
ctx.status(200),
|
|
2454
|
+
ctx.json({
|
|
2455
|
+
success: true,
|
|
2456
|
+
errors: [],
|
|
2457
|
+
messages: [],
|
|
2458
|
+
result: mockServiceMetadata,
|
|
2459
|
+
})
|
|
2460
|
+
);
|
|
2461
|
+
}
|
|
2462
|
+
),
|
|
2463
|
+
rest.get(
|
|
2464
|
+
`*/accounts/:accountId/workers/services/:scriptName/environments/:environment/bindings`,
|
|
2465
|
+
(req, res, ctx) => {
|
|
2466
|
+
expect(req.params.accountId).toEqual(expectedAccountId);
|
|
2467
|
+
expect(req.params.scriptName).toEqual(expectedScriptName);
|
|
2468
|
+
expect(req.params.environment).toEqual(expectedEnvironment);
|
|
2469
|
+
|
|
2470
|
+
return res.once(
|
|
2471
|
+
ctx.status(200),
|
|
2472
|
+
ctx.json({
|
|
2473
|
+
success: true,
|
|
2474
|
+
errors: [],
|
|
2475
|
+
messages: [],
|
|
2476
|
+
result: mockBindingsRes,
|
|
2477
|
+
})
|
|
2478
|
+
);
|
|
2479
|
+
}
|
|
2480
|
+
),
|
|
2481
|
+
rest.get(
|
|
2482
|
+
`*/accounts/:accountId/workers/services/:scriptName/environments/:environment/routes`,
|
|
2483
|
+
(req, res, ctx) => {
|
|
2484
|
+
expect(req.params.accountId).toEqual(expectedAccountId);
|
|
2485
|
+
expect(req.params.scriptName).toEqual(expectedScriptName);
|
|
2486
|
+
expect(req.params.environment).toEqual(expectedEnvironment);
|
|
2487
|
+
|
|
2488
|
+
return res.once(
|
|
2489
|
+
ctx.status(200),
|
|
2490
|
+
ctx.json({
|
|
2491
|
+
success: true,
|
|
2492
|
+
errors: [],
|
|
2493
|
+
messages: [],
|
|
2494
|
+
result: mockRoutesRes,
|
|
2495
|
+
})
|
|
2496
|
+
);
|
|
2497
|
+
}
|
|
2498
|
+
),
|
|
2499
|
+
rest.get(
|
|
2500
|
+
`*/accounts/:accountId/workers/services/:scriptName/environments/:environment`,
|
|
2501
|
+
|
|
2502
|
+
(req, res, ctx) => {
|
|
2503
|
+
expect(req.params.accountId).toEqual(expectedAccountId);
|
|
2504
|
+
expect(req.params.scriptName).toEqual(expectedScriptName);
|
|
2505
|
+
expect(req.params.environment).toEqual(expectedEnvironment);
|
|
2506
|
+
|
|
2507
|
+
return res.once(
|
|
2508
|
+
ctx.status(200),
|
|
2509
|
+
ctx.json({
|
|
2510
|
+
success: true,
|
|
2511
|
+
errors: [],
|
|
2512
|
+
messages: [],
|
|
2513
|
+
result: mockServiceMetadata.default_environment,
|
|
2514
|
+
})
|
|
2515
|
+
);
|
|
2516
|
+
}
|
|
2517
|
+
),
|
|
2518
|
+
rest.get(
|
|
2519
|
+
`*/accounts/:accountId/workers/scripts/:scriptName/schedules`,
|
|
2520
|
+
(req, res, ctx) => {
|
|
2521
|
+
expect(req.params.accountId).toEqual(expectedAccountId);
|
|
2522
|
+
expect(req.params.scriptName).toEqual(expectedScriptName);
|
|
2523
|
+
|
|
2524
|
+
return res.once(
|
|
2525
|
+
ctx.status(200),
|
|
2526
|
+
ctx.json({
|
|
2527
|
+
success: true,
|
|
2528
|
+
errors: [],
|
|
2529
|
+
messages: [],
|
|
2530
|
+
result: {
|
|
2531
|
+
schedules: [
|
|
2532
|
+
{
|
|
2533
|
+
cron: "0 0 0 * * *",
|
|
2534
|
+
created_on: new Date(1987, 9, 27),
|
|
2535
|
+
modified_on: new Date(1987, 9, 27),
|
|
2536
|
+
},
|
|
2537
|
+
],
|
|
2538
|
+
},
|
|
2539
|
+
})
|
|
2540
|
+
);
|
|
2541
|
+
}
|
|
2542
|
+
)
|
|
2342
2543
|
);
|
|
2343
2544
|
}
|
|
2344
2545
|
|
|
@@ -2350,27 +2551,18 @@ describe("init", () => {
|
|
|
2350
2551
|
expectedEnvironment: "test",
|
|
2351
2552
|
expectedCompatDate: "1987-9-27",
|
|
2352
2553
|
});
|
|
2353
|
-
setMockFetchDashScript(
|
|
2354
|
-
accountId: "LCARS",
|
|
2355
|
-
fromDashScriptName: "memory-crystal",
|
|
2356
|
-
environment: mockServiceMetadata.default_environment.environment,
|
|
2357
|
-
mockResponse: mockDashboardScript,
|
|
2358
|
-
});
|
|
2554
|
+
setMockFetchDashScript(mockDashboardScript);
|
|
2359
2555
|
mockConfirm(
|
|
2360
2556
|
{
|
|
2361
2557
|
text: "Would you like to use git to manage this Worker?",
|
|
2362
2558
|
result: false,
|
|
2363
2559
|
},
|
|
2364
|
-
{
|
|
2365
|
-
text: "Would you like to use TypeScript?",
|
|
2366
|
-
result: true,
|
|
2367
|
-
},
|
|
2368
2560
|
{
|
|
2369
2561
|
text: "No package.json found. Would you like to create one?",
|
|
2370
2562
|
result: true,
|
|
2371
2563
|
},
|
|
2372
2564
|
{
|
|
2373
|
-
text: "Would you like to
|
|
2565
|
+
text: "Would you like to use TypeScript?",
|
|
2374
2566
|
result: true,
|
|
2375
2567
|
}
|
|
2376
2568
|
);
|
|
@@ -2400,6 +2592,44 @@ describe("init", () => {
|
|
|
2400
2592
|
});
|
|
2401
2593
|
});
|
|
2402
2594
|
|
|
2595
|
+
it("should fail on init --from-dash on non-existent worker name", async () => {
|
|
2596
|
+
msw.use(
|
|
2597
|
+
rest.get(
|
|
2598
|
+
`*/accounts/:accountId/workers/services/:scriptName`,
|
|
2599
|
+
(req, res, ctx) => {
|
|
2600
|
+
return res.once(
|
|
2601
|
+
ctx.status(200),
|
|
2602
|
+
ctx.json({
|
|
2603
|
+
success: true,
|
|
2604
|
+
errors: [],
|
|
2605
|
+
messages: [],
|
|
2606
|
+
result: mockServiceMetadata,
|
|
2607
|
+
})
|
|
2608
|
+
);
|
|
2609
|
+
}
|
|
2610
|
+
)
|
|
2611
|
+
);
|
|
2612
|
+
setMockFetchDashScript(mockDashboardScript);
|
|
2613
|
+
mockConfirm(
|
|
2614
|
+
{
|
|
2615
|
+
text: "Would you like to use git to manage this Worker?",
|
|
2616
|
+
result: false,
|
|
2617
|
+
},
|
|
2618
|
+
{
|
|
2619
|
+
text: "No package.json found. Would you like to create one?",
|
|
2620
|
+
result: true,
|
|
2621
|
+
},
|
|
2622
|
+
{
|
|
2623
|
+
text: "Would you like to use TypeScript?",
|
|
2624
|
+
result: true,
|
|
2625
|
+
}
|
|
2626
|
+
);
|
|
2627
|
+
|
|
2628
|
+
await expect(
|
|
2629
|
+
runWrangler("init isolinear-optical-chip --from-dash i-dont-exist")
|
|
2630
|
+
).rejects.toThrowError();
|
|
2631
|
+
});
|
|
2632
|
+
|
|
2403
2633
|
it("should download source script from dashboard w/ out positional <name>", async () => {
|
|
2404
2634
|
mockSupportingDashRequests({
|
|
2405
2635
|
expectedAccountId: "LCARS",
|
|
@@ -2407,32 +2637,23 @@ describe("init", () => {
|
|
|
2407
2637
|
expectedEnvironment: "test",
|
|
2408
2638
|
expectedCompatDate: "1987-9-27",
|
|
2409
2639
|
});
|
|
2410
|
-
setMockFetchDashScript(
|
|
2411
|
-
accountId: "LCARS",
|
|
2412
|
-
fromDashScriptName: "isolinear-optical-chip",
|
|
2413
|
-
environment: mockServiceMetadata.default_environment.environment,
|
|
2414
|
-
mockResponse: mockDashboardScript,
|
|
2415
|
-
});
|
|
2640
|
+
setMockFetchDashScript(mockDashboardScript);
|
|
2416
2641
|
mockConfirm(
|
|
2417
2642
|
{
|
|
2418
2643
|
text: "Would you like to use git to manage this Worker?",
|
|
2419
2644
|
result: false,
|
|
2420
2645
|
},
|
|
2421
|
-
{
|
|
2422
|
-
text: "Would you like to use TypeScript?",
|
|
2423
|
-
result: true,
|
|
2424
|
-
},
|
|
2425
2646
|
{
|
|
2426
2647
|
text: "No package.json found. Would you like to create one?",
|
|
2427
2648
|
result: true,
|
|
2428
2649
|
},
|
|
2429
2650
|
{
|
|
2430
|
-
text: "Would you like to
|
|
2651
|
+
text: "Would you like to use TypeScript?",
|
|
2431
2652
|
result: true,
|
|
2432
2653
|
}
|
|
2433
2654
|
);
|
|
2434
2655
|
|
|
2435
|
-
await runWrangler("init
|
|
2656
|
+
await runWrangler("init --from-dash isolinear-optical-chip");
|
|
2436
2657
|
|
|
2437
2658
|
expect(fs.readFileSync("./isolinear-optical-chip/wrangler.toml", "utf8"))
|
|
2438
2659
|
.toMatchInlineSnapshot(`
|
|
@@ -2544,28 +2765,19 @@ describe("init", () => {
|
|
|
2544
2765
|
expectedEnvironment: "test",
|
|
2545
2766
|
expectedCompatDate: "1987-9-27",
|
|
2546
2767
|
});
|
|
2547
|
-
setMockFetchDashScript(
|
|
2548
|
-
accountId: "LCARS",
|
|
2549
|
-
fromDashScriptName: "isolinear-optical-chip",
|
|
2550
|
-
environment: mockServiceMetadata.default_environment.environment,
|
|
2551
|
-
mockResponse: mockDashboardScript,
|
|
2552
|
-
});
|
|
2768
|
+
setMockFetchDashScript(mockDashboardScript);
|
|
2553
2769
|
mockConfirm(
|
|
2554
2770
|
{
|
|
2555
2771
|
text: "Would you like to use git to manage this Worker?",
|
|
2556
2772
|
result: false,
|
|
2557
2773
|
},
|
|
2558
|
-
{
|
|
2559
|
-
text: "Would you like to use TypeScript?",
|
|
2560
|
-
result: false,
|
|
2561
|
-
},
|
|
2562
2774
|
{
|
|
2563
2775
|
text: "No package.json found. Would you like to create one?",
|
|
2564
2776
|
result: true,
|
|
2565
2777
|
},
|
|
2566
2778
|
{
|
|
2567
|
-
text: "Would you like to
|
|
2568
|
-
result:
|
|
2779
|
+
text: "Would you like to use TypeScript?",
|
|
2780
|
+
result: false,
|
|
2569
2781
|
}
|
|
2570
2782
|
);
|
|
2571
2783
|
|
|
@@ -2603,27 +2815,18 @@ describe("init", () => {
|
|
|
2603
2815
|
expectedEnvironment: "test",
|
|
2604
2816
|
expectedCompatDate: undefined,
|
|
2605
2817
|
});
|
|
2606
|
-
setMockFetchDashScript(
|
|
2607
|
-
accountId: "LCARS",
|
|
2608
|
-
fromDashScriptName: "isolinear-optical-chip",
|
|
2609
|
-
environment: mockServiceMetadata.default_environment.environment,
|
|
2610
|
-
mockResponse: mockDashboardScript,
|
|
2611
|
-
});
|
|
2818
|
+
setMockFetchDashScript(mockDashboardScript);
|
|
2612
2819
|
mockConfirm(
|
|
2613
2820
|
{
|
|
2614
2821
|
text: "Would you like to use git to manage this Worker?",
|
|
2615
2822
|
result: false,
|
|
2616
2823
|
},
|
|
2617
|
-
{
|
|
2618
|
-
text: "Would you like to use TypeScript?",
|
|
2619
|
-
result: true,
|
|
2620
|
-
},
|
|
2621
2824
|
{
|
|
2622
2825
|
text: "No package.json found. Would you like to create one?",
|
|
2623
2826
|
result: true,
|
|
2624
2827
|
},
|
|
2625
2828
|
{
|
|
2626
|
-
text: "Would you like to
|
|
2829
|
+
text: "Would you like to use TypeScript?",
|
|
2627
2830
|
result: true,
|
|
2628
2831
|
}
|
|
2629
2832
|
);
|
|
@@ -2651,23 +2854,32 @@ describe("init", () => {
|
|
|
2651
2854
|
});
|
|
2652
2855
|
|
|
2653
2856
|
it("should throw an error to retry if a request fails", async () => {
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2857
|
+
msw.use(
|
|
2858
|
+
rest.get(
|
|
2859
|
+
`*/accounts/:accountId/workers/services/:scriptName`,
|
|
2860
|
+
(req, res, ctx) => {
|
|
2861
|
+
expect(req.params.accountId).toBe("LCARS");
|
|
2862
|
+
expect(req.params.scriptName).toBe("isolinear-optical-chip");
|
|
2863
|
+
return res.once(
|
|
2864
|
+
ctx.status(200),
|
|
2865
|
+
ctx.json({
|
|
2866
|
+
success: true,
|
|
2867
|
+
errors: [],
|
|
2868
|
+
messages: [],
|
|
2869
|
+
result: mockServiceMetadata,
|
|
2870
|
+
})
|
|
2871
|
+
);
|
|
2872
|
+
}
|
|
2873
|
+
),
|
|
2874
|
+
rest.get(
|
|
2875
|
+
`*/accounts/:accountId/workers/services/:scriptName/environments/:environment/bindings`,
|
|
2876
|
+
(req, res) => {
|
|
2877
|
+
return res.networkError("Mock Network Error");
|
|
2878
|
+
}
|
|
2879
|
+
)
|
|
2663
2880
|
);
|
|
2664
2881
|
|
|
2665
|
-
setMockFetchDashScript(
|
|
2666
|
-
accountId: "LCARS",
|
|
2667
|
-
fromDashScriptName: "isolinear-optical-chip",
|
|
2668
|
-
environment: mockServiceMetadata.default_environment.environment,
|
|
2669
|
-
mockResponse: mockDashboardScript,
|
|
2670
|
-
});
|
|
2882
|
+
setMockFetchDashScript(mockDashboardScript);
|
|
2671
2883
|
mockConfirm(
|
|
2672
2884
|
{
|
|
2673
2885
|
text: "Would you like to use git to manage this Worker?",
|
|
@@ -2676,23 +2888,15 @@ describe("init", () => {
|
|
|
2676
2888
|
{
|
|
2677
2889
|
text: "Would you like to use TypeScript?",
|
|
2678
2890
|
result: false,
|
|
2679
|
-
},
|
|
2680
|
-
{
|
|
2681
|
-
text: "No package.json found. Would you like to create one?",
|
|
2682
|
-
result: true,
|
|
2683
|
-
},
|
|
2684
|
-
{
|
|
2685
|
-
text: "Would you like to install the type definitions for Workers into your package.json?",
|
|
2686
|
-
result: true,
|
|
2687
2891
|
}
|
|
2688
2892
|
);
|
|
2689
2893
|
|
|
2690
2894
|
await expect(
|
|
2691
|
-
runWrangler("init
|
|
2895
|
+
runWrangler("init --from-dash isolinear-optical-chip")
|
|
2692
2896
|
).rejects.toThrowError();
|
|
2693
2897
|
});
|
|
2694
2898
|
|
|
2695
|
-
it("should not
|
|
2899
|
+
it("should not include migrations in config file when none are necessary", async () => {
|
|
2696
2900
|
const mockDate = "1988-08-07";
|
|
2697
2901
|
jest
|
|
2698
2902
|
.spyOn(Date.prototype, "toISOString")
|
|
@@ -2716,59 +2920,93 @@ describe("init", () => {
|
|
|
2716
2920
|
},
|
|
2717
2921
|
environments: [],
|
|
2718
2922
|
};
|
|
2719
|
-
|
|
2720
|
-
|
|
2721
|
-
|
|
2722
|
-
|
|
2723
|
-
|
|
2724
|
-
|
|
2725
|
-
|
|
2726
|
-
|
|
2727
|
-
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
2737
|
-
|
|
2738
|
-
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
|
|
2745
|
-
|
|
2746
|
-
}
|
|
2747
|
-
|
|
2923
|
+
msw.use(
|
|
2924
|
+
rest.get(
|
|
2925
|
+
`*/accounts/:accountId/workers/services/:scriptName`,
|
|
2926
|
+
(req, res, ctx) => {
|
|
2927
|
+
return res.once(
|
|
2928
|
+
ctx.status(200),
|
|
2929
|
+
ctx.json({
|
|
2930
|
+
success: true,
|
|
2931
|
+
errors: [],
|
|
2932
|
+
messages: [],
|
|
2933
|
+
result: mockData,
|
|
2934
|
+
})
|
|
2935
|
+
);
|
|
2936
|
+
}
|
|
2937
|
+
),
|
|
2938
|
+
rest.get(
|
|
2939
|
+
`*/accounts/:accountId/workers/services/:scriptName/environments/:environment/bindings`,
|
|
2940
|
+
(req, res, ctx) => {
|
|
2941
|
+
return res.once(
|
|
2942
|
+
ctx.status(200),
|
|
2943
|
+
ctx.json({
|
|
2944
|
+
success: true,
|
|
2945
|
+
errors: [],
|
|
2946
|
+
messages: [],
|
|
2947
|
+
result: [],
|
|
2948
|
+
})
|
|
2949
|
+
);
|
|
2950
|
+
}
|
|
2951
|
+
),
|
|
2952
|
+
rest.get(
|
|
2953
|
+
`*/accounts/:accountId/workers/services/:scriptName/environments/:environment/routes`,
|
|
2954
|
+
(req, res, ctx) => {
|
|
2955
|
+
return res.once(
|
|
2956
|
+
ctx.status(200),
|
|
2957
|
+
ctx.json({
|
|
2958
|
+
success: true,
|
|
2959
|
+
errors: [],
|
|
2960
|
+
messages: [],
|
|
2961
|
+
result: [],
|
|
2962
|
+
})
|
|
2963
|
+
);
|
|
2964
|
+
}
|
|
2965
|
+
),
|
|
2966
|
+
rest.get(
|
|
2967
|
+
`*/accounts/:accountId/workers/services/:scriptName/environments/:environment`,
|
|
2968
|
+
(req, res, ctx) => {
|
|
2969
|
+
return res.once(
|
|
2970
|
+
ctx.status(200),
|
|
2971
|
+
ctx.json({
|
|
2972
|
+
success: true,
|
|
2973
|
+
errors: [],
|
|
2974
|
+
messages: [],
|
|
2975
|
+
result: mockServiceMetadata.default_environment,
|
|
2976
|
+
})
|
|
2977
|
+
);
|
|
2978
|
+
}
|
|
2979
|
+
),
|
|
2980
|
+
rest.get(
|
|
2981
|
+
`*/accounts/:accountId/workers/scripts/:scriptName/schedules`,
|
|
2982
|
+
(req, res, ctx) => {
|
|
2983
|
+
return res.once(
|
|
2984
|
+
ctx.status(200),
|
|
2985
|
+
ctx.json({
|
|
2986
|
+
success: true,
|
|
2987
|
+
errors: [],
|
|
2988
|
+
messages: [],
|
|
2989
|
+
result: { schedules: [] },
|
|
2990
|
+
})
|
|
2991
|
+
);
|
|
2992
|
+
}
|
|
2993
|
+
)
|
|
2748
2994
|
);
|
|
2749
2995
|
|
|
2750
|
-
setMockFetchDashScript(
|
|
2751
|
-
accountId: "LCARS",
|
|
2752
|
-
fromDashScriptName: "isolinear-optical-chip",
|
|
2753
|
-
environment: mockServiceMetadata.default_environment.environment,
|
|
2754
|
-
mockResponse: mockDashboardScript,
|
|
2755
|
-
});
|
|
2996
|
+
setMockFetchDashScript(mockDashboardScript);
|
|
2756
2997
|
|
|
2757
2998
|
mockConfirm(
|
|
2758
2999
|
{
|
|
2759
3000
|
text: "Would you like to use git to manage this Worker?",
|
|
2760
3001
|
result: false,
|
|
2761
3002
|
},
|
|
2762
|
-
|
|
2763
|
-
text: "Would you like to use TypeScript?",
|
|
2764
|
-
result: true,
|
|
2765
|
-
},
|
|
3003
|
+
|
|
2766
3004
|
{
|
|
2767
3005
|
text: "No package.json found. Would you like to create one?",
|
|
2768
3006
|
result: true,
|
|
2769
3007
|
},
|
|
2770
3008
|
{
|
|
2771
|
-
text: "Would you like to
|
|
3009
|
+
text: "Would you like to use TypeScript?",
|
|
2772
3010
|
result: true,
|
|
2773
3011
|
}
|
|
2774
3012
|
);
|
|
@@ -2795,7 +3033,7 @@ describe("init", () => {
|
|
|
2795
3033
|
await expect(
|
|
2796
3034
|
runWrangler("init --from-dash")
|
|
2797
3035
|
).rejects.toMatchInlineSnapshot(
|
|
2798
|
-
`[
|
|
3036
|
+
`[Error: Not enough arguments following: from-dash]`
|
|
2799
3037
|
);
|
|
2800
3038
|
checkFiles({
|
|
2801
3039
|
items: {
|
|
@@ -2825,6 +3063,28 @@ function getDefaultBranchName() {
|
|
|
2825
3063
|
}
|
|
2826
3064
|
}
|
|
2827
3065
|
|
|
3066
|
+
/**
|
|
3067
|
+
* Mock setter for usage within test blocks for dashboard script
|
|
3068
|
+
*/
|
|
3069
|
+
export function setMockFetchDashScript(mockResponse: string) {
|
|
3070
|
+
msw.use(
|
|
3071
|
+
rest.get(
|
|
3072
|
+
`*/accounts/:accountId/workers/services/:fromDashScriptName/environments/:environment/content`,
|
|
3073
|
+
(req, res, ctx) => {
|
|
3074
|
+
// This is a fake FormData object, until we can get MSW (beta) that supports FormData
|
|
3075
|
+
const mockForm = new FormData();
|
|
3076
|
+
mockForm.append("name", mockResponse);
|
|
3077
|
+
// Sending it as JSON will result in empty object, but cause the fetchDashboardScript to execute its code
|
|
3078
|
+
return res(ctx.status(200), ctx.json(mockForm));
|
|
3079
|
+
}
|
|
3080
|
+
)
|
|
3081
|
+
);
|
|
3082
|
+
// Mock the actual return value that FormData would return
|
|
3083
|
+
(fetchDashboardScript as jest.Mock).mockImplementationOnce(() => {
|
|
3084
|
+
return mockResponse;
|
|
3085
|
+
});
|
|
3086
|
+
}
|
|
3087
|
+
|
|
2828
3088
|
/**
|
|
2829
3089
|
* Change the current working directory, ensuring that this exists.
|
|
2830
3090
|
*/
|