wrangler 0.0.0-e6c9c5c0 → 0.0.0-e6ddf8a7
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/README.md +12 -14
- package/bin/wrangler.js +14 -75
- package/package.json +210 -194
- package/templates/__tests__/tsconfig.json +1 -1
- package/templates/checked-fetch.js +19 -4
- package/templates/facade.d.ts +4 -1
- package/templates/gitignore +1 -0
- package/templates/middleware/common.ts +9 -4
- package/templates/middleware/loader-modules.ts +64 -11
- package/templates/middleware/loader-sw.ts +2 -7
- package/templates/middleware/middleware-d1-beta.d.ts +3 -0
- package/templates/middleware/middleware-miniflare3-json-error.ts +18 -5
- package/templates/middleware/middleware-multiworker-dev.d.ts +4 -0
- package/templates/middleware/middleware-multiworker-dev.ts +68 -0
- package/templates/middleware/middleware-serve-static-assets.d.ts +6 -0
- package/templates/middleware/middleware-serve-static-assets.ts +56 -0
- package/templates/modules-watch-stub.js +4 -0
- package/templates/new-worker-scheduled.ts +1 -1
- package/templates/new-worker.ts +4 -1
- package/templates/pages-dev-util.ts +4 -1
- package/templates/pages-shim.ts +0 -3
- package/templates/pages-template-plugin.ts +19 -5
- package/templates/pages-template-worker.ts +11 -2
- package/templates/tsconfig.init.json +1 -2
- package/templates/tsconfig.json +1 -1
- package/wrangler-dist/cli.d.ts +842 -128
- package/wrangler-dist/cli.js +110076 -103044
- package/wrangler-dist/wasm-sync.wasm +0 -0
- package/import_meta_url.js +0 -3
- package/miniflare-config-stubs/.env.empty +0 -0
- package/miniflare-config-stubs/package.empty.json +0 -1
- package/miniflare-config-stubs/wrangler.empty.toml +0 -0
- package/miniflare-dist/index.mjs +0 -6364
- package/src/__tests__/access.test.ts +0 -25
- package/src/__tests__/api-dev.test.ts +0 -238
- package/src/__tests__/api-devregistry.test.js +0 -64
- package/src/__tests__/api.test.ts +0 -80
- package/src/__tests__/config-cache-without-cache-dir.test.ts +0 -38
- package/src/__tests__/config-cache.test.ts +0 -42
- package/src/__tests__/configuration.test.ts +0 -4163
- package/src/__tests__/d1/d1.test.ts +0 -127
- package/src/__tests__/d1/splitter.test.ts +0 -255
- package/src/__tests__/delete.test.ts +0 -266
- package/src/__tests__/deployments.test.ts +0 -105
- package/src/__tests__/dev.test.tsx +0 -1586
- package/src/__tests__/generate.test.ts +0 -238
- package/src/__tests__/get-host-from-url.test.ts +0 -16
- package/src/__tests__/guess-worker-format.test.ts +0 -85
- package/src/__tests__/helpers/clipboardy-mock.js +0 -4
- package/src/__tests__/helpers/cmd-shim.d.ts +0 -11
- package/src/__tests__/helpers/mock-account-id.ts +0 -48
- package/src/__tests__/helpers/mock-auth-domain.ts +0 -20
- package/src/__tests__/helpers/mock-bin.ts +0 -36
- package/src/__tests__/helpers/mock-console.ts +0 -106
- package/src/__tests__/helpers/mock-dialogs.ts +0 -139
- package/src/__tests__/helpers/mock-get-zone-from-host.ts +0 -11
- package/src/__tests__/helpers/mock-http-server.ts +0 -46
- package/src/__tests__/helpers/mock-istty.ts +0 -74
- package/src/__tests__/helpers/mock-known-routes.ts +0 -12
- package/src/__tests__/helpers/mock-kv.ts +0 -46
- package/src/__tests__/helpers/mock-oauth-flow.ts +0 -263
- package/src/__tests__/helpers/mock-process.ts +0 -34
- package/src/__tests__/helpers/mock-stdin.ts +0 -108
- package/src/__tests__/helpers/mock-web-socket.ts +0 -29
- package/src/__tests__/helpers/msw/blob-worker.cjs +0 -19
- package/src/__tests__/helpers/msw/handlers/access.ts +0 -13
- package/src/__tests__/helpers/msw/handlers/deployments.ts +0 -69
- package/src/__tests__/helpers/msw/handlers/namespaces.ts +0 -81
- package/src/__tests__/helpers/msw/handlers/oauth.ts +0 -31
- package/src/__tests__/helpers/msw/handlers/r2.ts +0 -60
- package/src/__tests__/helpers/msw/handlers/script.ts +0 -56
- package/src/__tests__/helpers/msw/handlers/user.ts +0 -52
- package/src/__tests__/helpers/msw/handlers/zones.ts +0 -20
- package/src/__tests__/helpers/msw/index.ts +0 -50
- package/src/__tests__/helpers/msw/read-file-sync.js +0 -61
- package/src/__tests__/helpers/run-in-tmp.ts +0 -38
- package/src/__tests__/helpers/run-wrangler.ts +0 -16
- package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +0 -1
- package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +0 -5
- package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +0 -1
- package/src/__tests__/helpers/worker-scripts/parent-worker.js +0 -8
- package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +0 -5
- package/src/__tests__/helpers/write-worker-source.ts +0 -31
- package/src/__tests__/helpers/write-wrangler-toml.ts +0 -17
- package/src/__tests__/https-options.test.ts +0 -163
- package/src/__tests__/index.test.ts +0 -268
- package/src/__tests__/init.test.ts +0 -3164
- package/src/__tests__/jest.setup.ts +0 -175
- package/src/__tests__/kv.test.ts +0 -1788
- package/src/__tests__/logger.test.ts +0 -141
- package/src/__tests__/logout.test.ts +0 -47
- package/src/__tests__/metrics.test.ts +0 -493
- package/src/__tests__/middleware.scheduled.test.ts +0 -145
- package/src/__tests__/middleware.test.ts +0 -750
- package/src/__tests__/package-manager.test.ts +0 -353
- package/src/__tests__/pages-deployment-tail.test.ts +0 -955
- package/src/__tests__/pages.test.ts +0 -2898
- package/src/__tests__/parse.test.ts +0 -330
- package/src/__tests__/paths.test.ts +0 -39
- package/src/__tests__/publish.test.ts +0 -8117
- package/src/__tests__/pubsub.test.ts +0 -490
- package/src/__tests__/queues.test.ts +0 -522
- package/src/__tests__/r2.test.ts +0 -369
- package/src/__tests__/route.test.ts +0 -45
- package/src/__tests__/secret.test.ts +0 -693
- package/src/__tests__/tail.test.ts +0 -958
- package/src/__tests__/test-old-node-version.js +0 -31
- package/src/__tests__/tsconfig-sanity.ts +0 -12
- package/src/__tests__/tsconfig.json +0 -8
- package/src/__tests__/tsconfig.tsbuildinfo +0 -1
- package/src/__tests__/type-generation.test.ts +0 -233
- package/src/__tests__/user.test.ts +0 -118
- package/src/__tests__/utils-collectKeyValues.test.ts +0 -47
- package/src/__tests__/validate-dev-props.test.ts +0 -56
- package/src/__tests__/version.test.ts +0 -35
- package/src/__tests__/whoami.test.tsx +0 -172
- package/src/__tests__/worker-namespace.test.ts +0 -334
- package/src/abort.d.ts +0 -3
- package/src/api/dev.ts +0 -259
- package/src/api/index.ts +0 -3
- package/src/api/pages/index.ts +0 -5
- package/src/api/pages/publish.tsx +0 -321
- package/src/bundle-reporter.ts +0 -68
- package/src/bundle.ts +0 -875
- package/src/cfetch/index.ts +0 -158
- package/src/cfetch/internal.ts +0 -258
- package/src/cli.ts +0 -28
- package/src/config/README.md +0 -107
- package/src/config/config.ts +0 -275
- package/src/config/diagnostics.ts +0 -80
- package/src/config/environment.ts +0 -579
- package/src/config/index.ts +0 -358
- package/src/config/validation-helpers.ts +0 -597
- package/src/config/validation.ts +0 -2151
- package/src/config-cache.ts +0 -85
- package/src/create-worker-preview.ts +0 -282
- package/src/create-worker-upload-form.ts +0 -325
- package/src/d1/backups.tsx +0 -219
- package/src/d1/constants.ts +0 -2
- package/src/d1/create.tsx +0 -63
- package/src/d1/delete.ts +0 -56
- package/src/d1/execute.tsx +0 -323
- package/src/d1/formatTimeAgo.ts +0 -14
- package/src/d1/index.ts +0 -101
- package/src/d1/list.tsx +0 -48
- package/src/d1/migrations/apply.tsx +0 -197
- package/src/d1/migrations/create.tsx +0 -77
- package/src/d1/migrations/helpers.ts +0 -147
- package/src/d1/migrations/index.ts +0 -3
- package/src/d1/migrations/list.tsx +0 -79
- package/src/d1/migrations/options.ts +0 -18
- package/src/d1/options.ts +0 -22
- package/src/d1/splitter.ts +0 -161
- package/src/d1/types.ts +0 -24
- package/src/d1/utils.ts +0 -48
- package/src/delete.ts +0 -103
- package/src/deployments.ts +0 -93
- package/src/deprecated/index.ts +0 -145
- package/src/dev/dev-vars.ts +0 -39
- package/src/dev/dev.tsx +0 -614
- package/src/dev/get-local-persistence-path.ts +0 -31
- package/src/dev/local.tsx +0 -923
- package/src/dev/remote.tsx +0 -632
- package/src/dev/start-server.ts +0 -538
- package/src/dev/use-esbuild.ts +0 -205
- package/src/dev/validate-dev-props.ts +0 -31
- package/src/dev-registry.ts +0 -201
- package/src/dev.tsx +0 -949
- package/src/dialogs.ts +0 -136
- package/src/dispatch-namespace.ts +0 -207
- package/src/docs/index.ts +0 -98
- package/src/durable.ts +0 -102
- package/src/entry.ts +0 -328
- package/src/environment-variables/factory.ts +0 -88
- package/src/environment-variables/misc-variables.ts +0 -30
- package/src/errors.ts +0 -11
- package/src/generate/index.ts +0 -300
- package/src/git-client.ts +0 -135
- package/src/global-wrangler-config-path.ts +0 -26
- package/src/https-options.ts +0 -127
- package/src/index.ts +0 -694
- package/src/init.ts +0 -1024
- package/src/inspect.ts +0 -767
- package/src/intl-polyfill.d.ts +0 -139
- package/src/is-ci.ts +0 -14
- package/src/is-interactive.ts +0 -16
- package/src/jest.d.ts +0 -4
- package/src/kv/helpers.ts +0 -430
- package/src/kv/index.ts +0 -596
- package/src/logger.ts +0 -104
- package/src/metrics/index.ts +0 -5
- package/src/metrics/metrics-config.ts +0 -239
- package/src/metrics/metrics-dispatcher.ts +0 -96
- package/src/metrics/metrics-usage-headers.ts +0 -24
- package/src/metrics/send-event.ts +0 -98
- package/src/miniflare-cli/README.md +0 -30
- package/src/miniflare-cli/assets.ts +0 -250
- package/src/miniflare-cli/index.ts +0 -210
- package/src/miniflare-cli/request-context.ts +0 -40
- package/src/miniflare-cli/tsconfig.json +0 -9
- package/src/miniflare-cli/tsconfig.tsbuildinfo +0 -1
- package/src/miniflare-cli/types.ts +0 -11
- package/src/module-collection.ts +0 -267
- package/src/open-in-browser.ts +0 -17
- package/src/package-manager.ts +0 -219
- package/src/pages/build.ts +0 -150
- package/src/pages/buildFunctions.ts +0 -129
- package/src/pages/constants.ts +0 -18
- package/src/pages/deployment-tails.ts +0 -284
- package/src/pages/deployments.tsx +0 -84
- package/src/pages/dev.ts +0 -716
- package/src/pages/errors.ts +0 -66
- package/src/pages/functions/buildPlugin.ts +0 -90
- package/src/pages/functions/buildWorker.ts +0 -288
- package/src/pages/functions/filepath-routing.test.ts +0 -234
- package/src/pages/functions/filepath-routing.ts +0 -189
- package/src/pages/functions/identifiers.ts +0 -78
- package/src/pages/functions/routes-consolidation.test.ts +0 -250
- package/src/pages/functions/routes-consolidation.ts +0 -73
- package/src/pages/functions/routes-transformation.test.ts +0 -282
- package/src/pages/functions/routes-transformation.ts +0 -115
- package/src/pages/functions/routes-validation.test.ts +0 -403
- package/src/pages/functions/routes-validation.ts +0 -202
- package/src/pages/functions/routes.ts +0 -151
- package/src/pages/functions/tsconfig.json +0 -8
- package/src/pages/functions/tsconfig.tsbuildinfo +0 -1
- package/src/pages/functions.ts +0 -82
- package/src/pages/hash.ts +0 -13
- package/src/pages/index.ts +0 -102
- package/src/pages/projects.tsx +0 -167
- package/src/pages/prompt-select-project.tsx +0 -31
- package/src/pages/publish.tsx +0 -263
- package/src/pages/types.ts +0 -41
- package/src/pages/upload.tsx +0 -447
- package/src/pages/utils.ts +0 -23
- package/src/parse.ts +0 -286
- package/src/paths.ts +0 -71
- package/src/proxy.ts +0 -694
- package/src/publish/index.ts +0 -270
- package/src/publish/publish.ts +0 -1064
- package/src/pubsub/index.ts +0 -286
- package/src/pubsub/pubsub-commands.ts +0 -624
- package/src/queues/cli/commands/consumer/add.ts +0 -71
- package/src/queues/cli/commands/consumer/index.ts +0 -22
- package/src/queues/cli/commands/consumer/remove.ts +0 -38
- package/src/queues/cli/commands/create.ts +0 -25
- package/src/queues/cli/commands/delete.ts +0 -26
- package/src/queues/cli/commands/index.ts +0 -36
- package/src/queues/cli/commands/list.ts +0 -25
- package/src/queues/client.ts +0 -135
- package/src/queues/utils.ts +0 -18
- package/src/r2/constants.ts +0 -4
- package/src/r2/helpers.ts +0 -131
- package/src/r2/index.ts +0 -289
- package/src/routes.ts +0 -140
- package/src/secret/index.ts +0 -379
- package/src/selfsigned.d.ts +0 -29
- package/src/sites.ts +0 -372
- package/src/tail/createTail.ts +0 -406
- package/src/tail/filters.ts +0 -277
- package/src/tail/index.ts +0 -213
- package/src/tail/printing.ts +0 -122
- package/src/tsconfig-sanity.ts +0 -16
- package/src/type-generation.ts +0 -181
- package/src/update-check.ts +0 -19
- package/src/user/access.ts +0 -68
- package/src/user/auth-variables.ts +0 -113
- package/src/user/choose-account.tsx +0 -39
- package/src/user/generate-auth-url.ts +0 -33
- package/src/user/generate-random-state.ts +0 -16
- package/src/user/index.ts +0 -2
- package/src/user/user.ts +0 -1232
- package/src/utils/collectKeyValues.ts +0 -14
- package/src/whoami.ts +0 -135
- package/src/worker.ts +0 -251
- package/src/yargs-types.ts +0 -24
- package/src/zones.ts +0 -191
- package/templates/__tests__/tsconfig.tsbuildinfo +0 -1
- package/templates/d1-beta-facade.js +0 -241
- package/templates/first-party-worker-module-facade.ts +0 -19
- package/templates/format-dev-errors.ts +0 -33
- package/templates/serve-static-assets.ts +0 -65
- package/templates/service-bindings-module-facade.js +0 -54
- package/templates/service-bindings-sw-facade.js +0 -42
- package/templates/tsconfig.tsbuildinfo +0 -1
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
const ORIGINAL_STDIN = process.stdin;
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Mock process.stdin so that we can pipe in text for non-interactive mode tests.
|
|
5
|
-
*/
|
|
6
|
-
export function useMockStdin({ isTTY }: { isTTY: boolean }) {
|
|
7
|
-
const mockStdin = new MockStdIn(isTTY);
|
|
8
|
-
|
|
9
|
-
beforeEach(() => {
|
|
10
|
-
mockStdin.reset();
|
|
11
|
-
Object.defineProperty(process, "stdin", {
|
|
12
|
-
value: mockStdin,
|
|
13
|
-
configurable: true,
|
|
14
|
-
writable: false,
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
|
|
18
|
-
afterEach(() => {
|
|
19
|
-
Object.defineProperty(process, "stdin", {
|
|
20
|
-
value: ORIGINAL_STDIN,
|
|
21
|
-
configurable: true,
|
|
22
|
-
writable: false,
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
|
|
26
|
-
return mockStdin;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const failCallback: (value: unknown) => void = () => {
|
|
30
|
-
throw new Error(
|
|
31
|
-
"TEST FAILURE: stdin callback called before being initialized."
|
|
32
|
-
);
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* A mock version of `process.std`, which can be used to simulate piping data
|
|
37
|
-
* into the wrangler process in non-interactive mode.
|
|
38
|
-
*/
|
|
39
|
-
class MockStdIn {
|
|
40
|
-
private endCallback = failCallback;
|
|
41
|
-
private errorCallback = failCallback;
|
|
42
|
-
private chunks: string[] = [];
|
|
43
|
-
private error: Error | undefined;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Set this to true if you want the stdin stream to error.
|
|
47
|
-
*/
|
|
48
|
-
throwError(error: Error) {
|
|
49
|
-
this.error = error;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* Call this to clean out the chunks that are queued for sending.
|
|
54
|
-
*/
|
|
55
|
-
reset() {
|
|
56
|
-
this.chunks.length = 0;
|
|
57
|
-
this.error = undefined;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Queue up some chunks to be sent.
|
|
62
|
-
*/
|
|
63
|
-
send(...chunks: string[]) {
|
|
64
|
-
this.chunks.push(...chunks);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
constructor(
|
|
68
|
-
/**
|
|
69
|
-
* Used by wrangler to check whether stdin is interactive.
|
|
70
|
-
*/
|
|
71
|
-
readonly isTTY: boolean
|
|
72
|
-
) {}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Used by wrangler to add event listeners.
|
|
76
|
-
*/
|
|
77
|
-
on(eventName: string, callback: () => void) {
|
|
78
|
-
switch (eventName) {
|
|
79
|
-
case "readable":
|
|
80
|
-
setImmediate(callback);
|
|
81
|
-
break;
|
|
82
|
-
case "end":
|
|
83
|
-
this.endCallback = callback;
|
|
84
|
-
break;
|
|
85
|
-
case "error":
|
|
86
|
-
this.errorCallback = callback;
|
|
87
|
-
break;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Used by wrangler to get the next chunk of data in the stream.
|
|
93
|
-
*/
|
|
94
|
-
read() {
|
|
95
|
-
if (this.error) {
|
|
96
|
-
setImmediate(() => this.errorCallback(this.error));
|
|
97
|
-
}
|
|
98
|
-
if (this.chunks.length === 0) {
|
|
99
|
-
setImmediate(this.endCallback);
|
|
100
|
-
}
|
|
101
|
-
return this.chunks.shift() ?? null;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Used by Ink.js to set the encoding of the stdout.
|
|
106
|
-
*/
|
|
107
|
-
setEncoding() {}
|
|
108
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { WebSocket } from "mock-socket";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* A version of the mock WebSocket that supports the methods that we use.
|
|
5
|
-
*/
|
|
6
|
-
export class MockWebSocket extends WebSocket {
|
|
7
|
-
on(event: string | symbol, listener: (...args: unknown[]) => void): this {
|
|
8
|
-
switch (event) {
|
|
9
|
-
case "message":
|
|
10
|
-
this.onmessage = ({ data }) => {
|
|
11
|
-
listener(data);
|
|
12
|
-
};
|
|
13
|
-
break;
|
|
14
|
-
case "open":
|
|
15
|
-
this.onopen = listener;
|
|
16
|
-
break;
|
|
17
|
-
case "close":
|
|
18
|
-
this.onclose = listener;
|
|
19
|
-
break;
|
|
20
|
-
default:
|
|
21
|
-
throw new Error("Unknown event type: " + event.toString());
|
|
22
|
-
}
|
|
23
|
-
return this;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
terminate() {
|
|
27
|
-
this.close();
|
|
28
|
-
}
|
|
29
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/*! Read blob sync in NodeJS. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource>
|
|
2
|
-
* Special Thanks to Jimmy Wärting helping in https://github.com/nodejs/undici/issues/1830
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
const { workerData } = require("worker_threads");
|
|
6
|
-
|
|
7
|
-
const { signal, port, blob } = workerData;
|
|
8
|
-
|
|
9
|
-
blob.arrayBuffer().then((ab) => {
|
|
10
|
-
// Post the result back to the main thread before unlocking 'signal'
|
|
11
|
-
port.postMessage(ab, [ab]);
|
|
12
|
-
port.close();
|
|
13
|
-
|
|
14
|
-
// Change the value of signal[0] to 1
|
|
15
|
-
Atomics.store(signal, 0, 1);
|
|
16
|
-
|
|
17
|
-
// This will unlock the main thread when we notify it
|
|
18
|
-
Atomics.notify(signal, 0);
|
|
19
|
-
});
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { rest } from "msw";
|
|
2
|
-
|
|
3
|
-
export default [
|
|
4
|
-
rest.get("*access-protected.com*", (_, response, cxt) => {
|
|
5
|
-
return response.once(
|
|
6
|
-
cxt.status(302),
|
|
7
|
-
cxt.set("location", "access-protected-com.cloudflareaccess.com")
|
|
8
|
-
);
|
|
9
|
-
}),
|
|
10
|
-
rest.get("*not-access-protected.com*", (_, response, cxt) => {
|
|
11
|
-
return response.once(cxt.status(200), cxt.body("OK"));
|
|
12
|
-
}),
|
|
13
|
-
];
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { rest } from "msw";
|
|
2
|
-
import { createFetchResult } from "../index";
|
|
3
|
-
|
|
4
|
-
export const mswSuccessDeployments = [
|
|
5
|
-
rest.get(
|
|
6
|
-
"*/accounts/:accountId/workers/deployments/by-script/:scriptTag",
|
|
7
|
-
(_, response, context) =>
|
|
8
|
-
response.once(
|
|
9
|
-
context.json(
|
|
10
|
-
createFetchResult({
|
|
11
|
-
latest: {
|
|
12
|
-
id: "Galaxy-Class",
|
|
13
|
-
number: "1701-E",
|
|
14
|
-
metadata: {
|
|
15
|
-
author_id: "Picard-Gamma-6-0-7-3",
|
|
16
|
-
author_email: "Jean-Luc-Picard@federation.org",
|
|
17
|
-
source: "wrangler",
|
|
18
|
-
created_on: "2021-01-01T00:00:00.000000Z",
|
|
19
|
-
modified_on: "2021-01-01T00:00:00.000000Z",
|
|
20
|
-
},
|
|
21
|
-
resources: {
|
|
22
|
-
script: "MOCK-TAG",
|
|
23
|
-
bindings: [],
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
items: [
|
|
27
|
-
{
|
|
28
|
-
id: "Galaxy-Class",
|
|
29
|
-
number: "1701-E",
|
|
30
|
-
metadata: {
|
|
31
|
-
author_id: "Picard-Gamma-6-0-7-3",
|
|
32
|
-
author_email: "Jean-Luc-Picard@federation.org",
|
|
33
|
-
source: "wrangler",
|
|
34
|
-
created_on: "2021-01-01T00:00:00.000000Z",
|
|
35
|
-
modified_on: "2021-01-01T00:00:00.000000Z",
|
|
36
|
-
},
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
id: "Intrepid-Class",
|
|
40
|
-
number: "NCC-74656",
|
|
41
|
-
metadata: {
|
|
42
|
-
author_id: "Kathryn-Jane-Gamma-6-0-7-3",
|
|
43
|
-
author_email: "Kathryn-Janeway@federation.org",
|
|
44
|
-
source: "wrangler",
|
|
45
|
-
created_on: "2021-02-02T00:00:00.000000Z",
|
|
46
|
-
modified_on: "2021-02-02T00:00:00.000000Z",
|
|
47
|
-
},
|
|
48
|
-
},
|
|
49
|
-
],
|
|
50
|
-
})
|
|
51
|
-
)
|
|
52
|
-
)
|
|
53
|
-
),
|
|
54
|
-
];
|
|
55
|
-
|
|
56
|
-
export const mswSuccessLastDeployment = [
|
|
57
|
-
rest.get(
|
|
58
|
-
"*/accounts/:accountId/workers/services/:scriptName",
|
|
59
|
-
(_, res, ctx) => {
|
|
60
|
-
return res.once(
|
|
61
|
-
ctx.json(
|
|
62
|
-
createFetchResult({
|
|
63
|
-
default_environment: { script: { last_deployed_from: "wrangler" } },
|
|
64
|
-
})
|
|
65
|
-
)
|
|
66
|
-
);
|
|
67
|
-
}
|
|
68
|
-
),
|
|
69
|
-
];
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import { rest } from "msw";
|
|
2
|
-
import { createFetchResult } from "../index";
|
|
3
|
-
|
|
4
|
-
export const mswSuccessNamespacesHandlers = [
|
|
5
|
-
rest.post(
|
|
6
|
-
"*/accounts/:accountId/workers/dispatch/namespaces",
|
|
7
|
-
(_, response, context) => {
|
|
8
|
-
return response.once(
|
|
9
|
-
context.json(
|
|
10
|
-
createFetchResult({
|
|
11
|
-
namespace_id: "some-namespace-id",
|
|
12
|
-
namespace_name: "namespace-name",
|
|
13
|
-
created_on: "2022-06-29T14:30:08.16152Z",
|
|
14
|
-
created_by: "1fc1df98cc4420fe00367c3ab68c1639",
|
|
15
|
-
modified_on: "2022-06-29T14:30:08.16152Z",
|
|
16
|
-
modified_by: "1fc1df98cc4420fe00367c3ab68c1639",
|
|
17
|
-
})
|
|
18
|
-
)
|
|
19
|
-
);
|
|
20
|
-
}
|
|
21
|
-
),
|
|
22
|
-
rest.delete(
|
|
23
|
-
"*/accounts/:accountId/workers/dispatch/namespaces/:namespaceName",
|
|
24
|
-
(_, response, context) => {
|
|
25
|
-
return response.once(context.json(createFetchResult(null)));
|
|
26
|
-
}
|
|
27
|
-
),
|
|
28
|
-
rest.put(
|
|
29
|
-
"*/accounts/:accountId/workers/dispatch/namespaces/:namespaceName",
|
|
30
|
-
(_, response, context) => {
|
|
31
|
-
return response.once(
|
|
32
|
-
context.json(
|
|
33
|
-
createFetchResult({
|
|
34
|
-
namespace_id: "some-namespace-id",
|
|
35
|
-
namespace_name: "namespace-name",
|
|
36
|
-
created_on: "2022-06-29T14:30:08.16152Z",
|
|
37
|
-
created_by: "1fc1df98cc4420fe00367c3ab68c1639",
|
|
38
|
-
modified_on: "2022-06-29T14:30:08.16152Z",
|
|
39
|
-
modified_by: "1fc1df98cc4420fe00367c3ab68c1639",
|
|
40
|
-
})
|
|
41
|
-
)
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
),
|
|
45
|
-
rest.get(
|
|
46
|
-
"*/accounts/:accountId/workers/dispatch/namespaces/:namespaceName",
|
|
47
|
-
(_, response, context) => {
|
|
48
|
-
return response.once(
|
|
49
|
-
context.json(
|
|
50
|
-
createFetchResult({
|
|
51
|
-
namespace_id: "some-namespace-id",
|
|
52
|
-
namespace_name: "namespace-name",
|
|
53
|
-
created_on: "2022-06-29T14:30:08.16152Z",
|
|
54
|
-
created_by: "1fc1df98cc4420fe00367c3ab68c1639",
|
|
55
|
-
modified_on: "2022-06-29T14:30:08.16152Z",
|
|
56
|
-
modified_by: "1fc1df98cc4420fe00367c3ab68c1639",
|
|
57
|
-
})
|
|
58
|
-
)
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
),
|
|
62
|
-
rest.get(
|
|
63
|
-
"*/accounts/:accountId/workers/dispatch/namespaces",
|
|
64
|
-
(_, response, context) => {
|
|
65
|
-
return response.once(
|
|
66
|
-
context.json(
|
|
67
|
-
createFetchResult([
|
|
68
|
-
{
|
|
69
|
-
namespace_id: "some-namespace-id",
|
|
70
|
-
namespace_name: "namespace-name",
|
|
71
|
-
created_on: "2022-06-29T14:30:08.16152Z",
|
|
72
|
-
created_by: "1fc1df98cc4420fe00367c3ab68c1639",
|
|
73
|
-
modified_on: "2022-06-29T14:30:08.16152Z",
|
|
74
|
-
modified_by: "1fc1df98cc4420fe00367c3ab68c1639",
|
|
75
|
-
},
|
|
76
|
-
])
|
|
77
|
-
)
|
|
78
|
-
);
|
|
79
|
-
}
|
|
80
|
-
),
|
|
81
|
-
];
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { rest } from "msw";
|
|
2
|
-
|
|
3
|
-
export const mswSuccessOauthHandlers = [
|
|
4
|
-
rest.all("*/oauth/callback", (_, response, context) => {
|
|
5
|
-
return response.once(
|
|
6
|
-
context.status(200),
|
|
7
|
-
context.json({
|
|
8
|
-
success: true,
|
|
9
|
-
errors: [],
|
|
10
|
-
messages: [],
|
|
11
|
-
code: "test-oauth-code",
|
|
12
|
-
})
|
|
13
|
-
);
|
|
14
|
-
}),
|
|
15
|
-
// revoke access token
|
|
16
|
-
rest.post("*/oauth2/revoke", (_, response, context) =>
|
|
17
|
-
response.once(context.status(200), context.text(""))
|
|
18
|
-
),
|
|
19
|
-
// exchange (auth code | refresh token) for access token
|
|
20
|
-
rest.post("*/oauth2/token", (_, response, context) => {
|
|
21
|
-
return response.once(
|
|
22
|
-
context.status(200),
|
|
23
|
-
context.json({
|
|
24
|
-
access_token: "test-access-token",
|
|
25
|
-
expires_in: 100000,
|
|
26
|
-
refresh_token: "test-refresh-token",
|
|
27
|
-
scope: "account:read",
|
|
28
|
-
})
|
|
29
|
-
);
|
|
30
|
-
}),
|
|
31
|
-
];
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { rest } from "msw";
|
|
2
|
-
import { createFetchResult } from "../index";
|
|
3
|
-
|
|
4
|
-
export const mswSuccessR2handlers = [
|
|
5
|
-
// List endpoint r2Buckets
|
|
6
|
-
rest.get("*/accounts/:accountId/r2/buckets", (_, response, context) =>
|
|
7
|
-
response.once(
|
|
8
|
-
context.json(
|
|
9
|
-
createFetchResult({
|
|
10
|
-
buckets: [
|
|
11
|
-
{ name: "bucket-1", creation_date: "01-01-2001" },
|
|
12
|
-
{ name: "bucket-2", creation_date: "01-01-2001" },
|
|
13
|
-
],
|
|
14
|
-
})
|
|
15
|
-
)
|
|
16
|
-
)
|
|
17
|
-
),
|
|
18
|
-
rest.post("*/accounts/:accountId/r2/buckets", (_, response, context) =>
|
|
19
|
-
response.once(context.json(createFetchResult({})))
|
|
20
|
-
),
|
|
21
|
-
rest.put(
|
|
22
|
-
"*/accounts/:accountId/r2/buckets/:bucketName",
|
|
23
|
-
(_, response, context) => response.once(context.json(createFetchResult({})))
|
|
24
|
-
),
|
|
25
|
-
rest.delete(
|
|
26
|
-
"*/accounts/:accountId/r2/buckets/:bucketName",
|
|
27
|
-
(_, response, context) =>
|
|
28
|
-
response.once(context.json(createFetchResult(null)))
|
|
29
|
-
),
|
|
30
|
-
rest.get(
|
|
31
|
-
"*/accounts/:accountId/r2/buckets/:bucketName/objects/:objectName",
|
|
32
|
-
(_, response, context) => {
|
|
33
|
-
const imageBuffer = Buffer.from("wormhole-img.png");
|
|
34
|
-
return response.once(
|
|
35
|
-
context.set("Content-Length", imageBuffer.byteLength.toString()),
|
|
36
|
-
context.set("Content-Type", "image/png"),
|
|
37
|
-
|
|
38
|
-
context.body(imageBuffer)
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
),
|
|
42
|
-
rest.put(
|
|
43
|
-
"*/accounts/:accountId/r2/buckets/:bucketName/objects/:objectName",
|
|
44
|
-
(_, response, context) =>
|
|
45
|
-
response.once(
|
|
46
|
-
context.json(
|
|
47
|
-
createFetchResult({
|
|
48
|
-
accountId: "some-account-id",
|
|
49
|
-
bucketName: "bucketName-object-test",
|
|
50
|
-
objectName: "wormhole-img.png",
|
|
51
|
-
})
|
|
52
|
-
)
|
|
53
|
-
)
|
|
54
|
-
),
|
|
55
|
-
rest.delete(
|
|
56
|
-
"*/accounts/:accountId/r2/buckets/:bucketName/objects/:objectName",
|
|
57
|
-
(_, response, context) =>
|
|
58
|
-
response.once(context.json(createFetchResult(null)))
|
|
59
|
-
),
|
|
60
|
-
];
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { rest } from "msw";
|
|
2
|
-
import { createFetchResult } from "../index";
|
|
3
|
-
import type { WorkerMetadata } from "../../../../create-worker-upload-form";
|
|
4
|
-
|
|
5
|
-
const bindings: Record<string, WorkerMetadata["bindings"]> = {
|
|
6
|
-
"durable-object": [
|
|
7
|
-
{
|
|
8
|
-
type: "durable_object_namespace",
|
|
9
|
-
name: "TestDO",
|
|
10
|
-
class_name: "TestDO",
|
|
11
|
-
},
|
|
12
|
-
],
|
|
13
|
-
};
|
|
14
|
-
const scripts: Record<string, string> = {
|
|
15
|
-
websocket: `new WebSocket("ws://dummy")`,
|
|
16
|
-
response: `return new Response("ok")`,
|
|
17
|
-
};
|
|
18
|
-
function getBindings(scriptName: string | readonly string[]) {
|
|
19
|
-
if (typeof scriptName !== "string") return "";
|
|
20
|
-
return scriptName.split("--").flatMap((part) => bindings[part] ?? []);
|
|
21
|
-
}
|
|
22
|
-
function getScript(scriptName: string | readonly string[]): string {
|
|
23
|
-
if (typeof scriptName !== "string") return "";
|
|
24
|
-
return `export default {fetch(request){
|
|
25
|
-
${scriptName
|
|
26
|
-
.split("--")
|
|
27
|
-
.map((part) => scripts[part] ?? "")
|
|
28
|
-
.join(";\n")}
|
|
29
|
-
}}`;
|
|
30
|
-
}
|
|
31
|
-
export default [
|
|
32
|
-
rest.get(
|
|
33
|
-
"*/accounts/:accountId/workers/services/:scriptName/environments/:env/content",
|
|
34
|
-
({ params: { scriptName } }, res, context) => {
|
|
35
|
-
return res(context.text(getScript(scriptName)));
|
|
36
|
-
}
|
|
37
|
-
),
|
|
38
|
-
rest.get(
|
|
39
|
-
"*/accounts/:accountId/workers/scripts/:scriptName",
|
|
40
|
-
({ params: { scriptName } }, res, context) => {
|
|
41
|
-
return res(context.text(getScript(scriptName)));
|
|
42
|
-
}
|
|
43
|
-
),
|
|
44
|
-
rest.get(
|
|
45
|
-
"*/accounts/:accountId/workers/services/:scriptName/environments/:env/bindings",
|
|
46
|
-
({ params: { scriptName } }, res, context) => {
|
|
47
|
-
return res(context.json(createFetchResult(getBindings(scriptName))));
|
|
48
|
-
}
|
|
49
|
-
),
|
|
50
|
-
rest.get(
|
|
51
|
-
"*/accounts/:accountId/workers/scripts/:scriptName/bindings",
|
|
52
|
-
({ params: { scriptName } }, res, context) => {
|
|
53
|
-
return res(context.json(createFetchResult(getBindings(scriptName))));
|
|
54
|
-
}
|
|
55
|
-
),
|
|
56
|
-
];
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { rest } from "msw";
|
|
2
|
-
import { createFetchResult } from "../index";
|
|
3
|
-
|
|
4
|
-
export const mswSuccessUserHandlers = [
|
|
5
|
-
rest.get("*/user", (_, response, cxt) => {
|
|
6
|
-
return response.once(
|
|
7
|
-
cxt.json(
|
|
8
|
-
createFetchResult({
|
|
9
|
-
id: "7c5dae5552338874e5053f2534d2767a",
|
|
10
|
-
email: "user@example.com",
|
|
11
|
-
first_name: "John",
|
|
12
|
-
last_name: "Appleseed",
|
|
13
|
-
username: "cfuser12345",
|
|
14
|
-
telephone: "+1 123-123-1234",
|
|
15
|
-
country: "US",
|
|
16
|
-
zipcode: "12345",
|
|
17
|
-
created_on: "2014-01-01T05:20:00Z",
|
|
18
|
-
modified_on: "2014-01-01T05:20:00Z",
|
|
19
|
-
two_factor_authentication_enabled: false,
|
|
20
|
-
suspended: false,
|
|
21
|
-
})
|
|
22
|
-
)
|
|
23
|
-
);
|
|
24
|
-
}),
|
|
25
|
-
rest.get("*/accounts", (_, response, cxt) => {
|
|
26
|
-
return response.once(
|
|
27
|
-
cxt.json(
|
|
28
|
-
createFetchResult([
|
|
29
|
-
{ name: "Account One", id: "account-1" },
|
|
30
|
-
{ name: "Account Two", id: "account-2" },
|
|
31
|
-
{ name: "Account Three", id: "account-3" },
|
|
32
|
-
])
|
|
33
|
-
)
|
|
34
|
-
);
|
|
35
|
-
}),
|
|
36
|
-
rest.get("*/memberships", (_, response, context) => {
|
|
37
|
-
return response.once(
|
|
38
|
-
context.json(
|
|
39
|
-
createFetchResult([
|
|
40
|
-
{
|
|
41
|
-
id: "membership-id-1",
|
|
42
|
-
account: { id: "account-id-1", name: "My Personal Account" },
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
id: "membership-id-2",
|
|
46
|
-
account: { id: "account-id-2", name: "Enterprise Account" },
|
|
47
|
-
},
|
|
48
|
-
])
|
|
49
|
-
)
|
|
50
|
-
);
|
|
51
|
-
}),
|
|
52
|
-
];
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { rest } from "msw";
|
|
2
|
-
import { createFetchResult } from "../index";
|
|
3
|
-
|
|
4
|
-
export default [
|
|
5
|
-
rest.get("*/zones", ({ url: { searchParams } }, res, context) => {
|
|
6
|
-
return res(
|
|
7
|
-
context.json(
|
|
8
|
-
createFetchResult(
|
|
9
|
-
searchParams.get("name") === "exists.com"
|
|
10
|
-
? [
|
|
11
|
-
{
|
|
12
|
-
id: "exists-com",
|
|
13
|
-
},
|
|
14
|
-
]
|
|
15
|
-
: []
|
|
16
|
-
)
|
|
17
|
-
)
|
|
18
|
-
);
|
|
19
|
-
}),
|
|
20
|
-
];
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { setupServer } from "msw/node";
|
|
2
|
-
import { default as mswAccessHandlers } from "./handlers/access";
|
|
3
|
-
import {
|
|
4
|
-
mswSuccessDeployments,
|
|
5
|
-
mswSuccessLastDeployment,
|
|
6
|
-
} from "./handlers/deployments";
|
|
7
|
-
import { mswSuccessNamespacesHandlers } from "./handlers/namespaces";
|
|
8
|
-
import { mswSuccessOauthHandlers } from "./handlers/oauth";
|
|
9
|
-
import { mswSuccessR2handlers } from "./handlers/r2";
|
|
10
|
-
import { default as mswSucessScriptHandlers } from "./handlers/script";
|
|
11
|
-
import { mswSuccessUserHandlers } from "./handlers/user";
|
|
12
|
-
import { default as mswZoneHandlers } from "./handlers/zones";
|
|
13
|
-
|
|
14
|
-
export const msw = setupServer();
|
|
15
|
-
|
|
16
|
-
function createFetchResult(
|
|
17
|
-
result: unknown,
|
|
18
|
-
success = true,
|
|
19
|
-
errors: unknown[] = [],
|
|
20
|
-
messages: unknown[] = [],
|
|
21
|
-
result_info?: Record<string, unknown>
|
|
22
|
-
) {
|
|
23
|
-
return result_info
|
|
24
|
-
? {
|
|
25
|
-
result,
|
|
26
|
-
success,
|
|
27
|
-
errors,
|
|
28
|
-
messages,
|
|
29
|
-
result_info,
|
|
30
|
-
}
|
|
31
|
-
: {
|
|
32
|
-
result,
|
|
33
|
-
success,
|
|
34
|
-
errors,
|
|
35
|
-
messages,
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export {
|
|
40
|
-
createFetchResult,
|
|
41
|
-
mswSuccessUserHandlers,
|
|
42
|
-
mswSuccessR2handlers,
|
|
43
|
-
mswSuccessOauthHandlers,
|
|
44
|
-
mswSuccessNamespacesHandlers,
|
|
45
|
-
mswSucessScriptHandlers,
|
|
46
|
-
mswZoneHandlers,
|
|
47
|
-
mswSuccessDeployments,
|
|
48
|
-
mswAccessHandlers,
|
|
49
|
-
mswSuccessLastDeployment,
|
|
50
|
-
};
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
/*! Read blob sync in NodeJS. MIT License. Jimmy Wärting <https://jimmy.warting.se/opensource>
|
|
2
|
-
* Special Thanks to Jimmy Wärting helping in https://github.com/nodejs/undici/issues/1830
|
|
3
|
-
*/
|
|
4
|
-
const { join } = require("path");
|
|
5
|
-
const {
|
|
6
|
-
Worker,
|
|
7
|
-
receiveMessageOnPort,
|
|
8
|
-
MessageChannel,
|
|
9
|
-
} = require("worker_threads");
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* blob-worker & read-file-sync are part of a polyfill to synchronously read a blob in NodeJS
|
|
13
|
-
* this is needed for MSW FormData patching to work and support Blobs, serializing them to a string before recreating the FormData.
|
|
14
|
-
*/
|
|
15
|
-
function read(blob) {
|
|
16
|
-
const subChannel = new MessageChannel();
|
|
17
|
-
const signal = new Int32Array(new SharedArrayBuffer(4));
|
|
18
|
-
signal[0] = 0;
|
|
19
|
-
|
|
20
|
-
const path = join(__dirname, "blob-worker.cjs");
|
|
21
|
-
|
|
22
|
-
const worker = new Worker(path, {
|
|
23
|
-
transferList: [subChannel.port1],
|
|
24
|
-
workerData: {
|
|
25
|
-
signal,
|
|
26
|
-
port: subChannel.port1,
|
|
27
|
-
blob,
|
|
28
|
-
},
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
// Sleep until the other thread sets signal[0] to 1
|
|
32
|
-
Atomics.wait(signal, 0, 0);
|
|
33
|
-
|
|
34
|
-
// Close the worker thread
|
|
35
|
-
worker.terminate();
|
|
36
|
-
|
|
37
|
-
return receiveMessageOnPort(subChannel.port2)?.message;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
class FileReaderSync {
|
|
41
|
-
readAsArrayBuffer(blob) {
|
|
42
|
-
this.result = read(blob);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
readAsDataURL(blob) {
|
|
46
|
-
const ab = read(blob);
|
|
47
|
-
this.result = `data:${blob.type};base64,${Buffer.from(ab).toString(
|
|
48
|
-
"base64"
|
|
49
|
-
)}`;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
readAsText(blob) {
|
|
53
|
-
const ab = read(blob);
|
|
54
|
-
this.result = new TextDecoder().decode(ab);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// Should not be used, use readAsArrayBuffer instead
|
|
58
|
-
// readAsBinaryString(blob) { ... }
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
exports.FileReaderSync = FileReaderSync;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import * as fs from "node:fs";
|
|
2
|
-
import os from "node:os";
|
|
3
|
-
import * as path from "node:path";
|
|
4
|
-
import { reinitialiseAuthTokens } from "../../user";
|
|
5
|
-
|
|
6
|
-
const originalCwd = process.cwd();
|
|
7
|
-
|
|
8
|
-
export function runInTempDir({ homedir } = { homedir: "./home" }) {
|
|
9
|
-
let tmpDir: string;
|
|
10
|
-
|
|
11
|
-
beforeEach(() => {
|
|
12
|
-
// Use realpath because the temporary path can point to a symlink rather than the actual path.
|
|
13
|
-
tmpDir = fs.realpathSync(
|
|
14
|
-
fs.mkdtempSync(path.join(os.tmpdir(), "wrangler-tests"))
|
|
15
|
-
);
|
|
16
|
-
|
|
17
|
-
process.chdir(tmpDir);
|
|
18
|
-
// The path that is returned from `homedir()` should be absolute.
|
|
19
|
-
const absHomedir = path.resolve(tmpDir, homedir);
|
|
20
|
-
// Override where the home directory is so that we can write our own user config,
|
|
21
|
-
// without destroying the real thing.
|
|
22
|
-
fs.mkdirSync(absHomedir, { recursive: true });
|
|
23
|
-
// Note it is very important that we use the "default" value from "node:os" (e.g. `import os from "node:os";`)
|
|
24
|
-
// rather than an alias to the module (e.g. `import * as os from "node:os";`).
|
|
25
|
-
// This is because the module gets transpiled so that the "method" `homedir()` gets converted to a
|
|
26
|
-
// getter that is not configurable (and so cannot be spied upon).
|
|
27
|
-
jest.spyOn(os, "homedir")?.mockReturnValue(absHomedir);
|
|
28
|
-
// Now that we have changed the home directory location, we must reinitialize the user auth state
|
|
29
|
-
reinitialiseAuthTokens();
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
afterEach(() => {
|
|
33
|
-
if (fs.existsSync(tmpDir)) {
|
|
34
|
-
process.chdir(originalCwd);
|
|
35
|
-
fs.rmSync(tmpDir, { recursive: true });
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
}
|