wrangler 0.0.0-aeee02c3 → 0.0.0-af4f27c5
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 +29 -9
- package/miniflare-dist/index.mjs +108 -58
- package/package.json +15 -12
- package/src/__tests__/access.test.ts +25 -0
- package/src/__tests__/api-dev.test.ts +64 -35
- package/src/__tests__/api-devregistry.test.js +12 -4
- package/src/__tests__/configuration.test.ts +322 -23
- package/src/__tests__/d1/d1.test.ts +123 -0
- package/src/__tests__/d1/splitter.test.ts +255 -0
- package/src/__tests__/delete.test.ts +85 -49
- package/src/__tests__/deployments.test.ts +40 -26
- package/src/__tests__/dev.test.tsx +271 -42
- package/src/__tests__/generate.test.ts +10 -7
- package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
- package/src/__tests__/helpers/mock-dialogs.ts +71 -85
- package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -5
- package/src/__tests__/helpers/mock-known-routes.ts +7 -2
- package/src/__tests__/helpers/mock-kv.ts +29 -16
- package/src/__tests__/helpers/mock-oauth-flow.ts +103 -92
- package/src/__tests__/helpers/mock-process.ts +8 -13
- package/src/__tests__/helpers/msw/blob-worker.cjs +19 -0
- package/src/__tests__/helpers/msw/handlers/access.ts +13 -0
- package/src/__tests__/helpers/msw/handlers/deployments.ts +41 -44
- package/src/__tests__/helpers/msw/handlers/oauth.ts +13 -18
- package/src/__tests__/helpers/msw/handlers/zones.ts +22 -0
- package/src/__tests__/helpers/msw/index.ts +34 -1
- package/src/__tests__/helpers/msw/read-file-sync.js +61 -0
- package/src/__tests__/index.test.ts +86 -71
- package/src/__tests__/init.test.ts +876 -529
- package/src/__tests__/jest.setup.ts +26 -42
- package/src/__tests__/kv.test.ts +674 -561
- package/src/__tests__/logout.test.ts +47 -0
- package/src/__tests__/metrics.test.ts +94 -51
- package/src/__tests__/middleware.scheduled.test.ts +40 -30
- package/src/__tests__/middleware.test.ts +144 -120
- package/src/__tests__/pages-deployment-tail.test.ts +955 -0
- package/src/__tests__/pages.test.ts +1725 -1045
- package/src/__tests__/publish.test.ts +1961 -1091
- package/src/__tests__/pubsub.test.ts +211 -88
- package/src/__tests__/queues.test.ts +522 -0
- package/src/__tests__/r2.test.ts +77 -55
- package/src/__tests__/secret.test.ts +175 -126
- package/src/__tests__/tail.test.ts +278 -108
- 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__/type-generation.test.ts +42 -26
- package/src/__tests__/user.test.ts +34 -70
- package/src/__tests__/whoami.test.tsx +1 -96
- package/src/__tests__/worker-namespace.test.ts +15 -10
- package/src/api/dev.ts +91 -40
- package/src/api/index.ts +1 -1
- package/src/bundle-reporter.ts +68 -0
- package/src/bundle.ts +216 -149
- package/src/cfetch/index.ts +0 -2
- package/src/cfetch/internal.ts +16 -21
- package/src/cli.ts +2 -3
- package/src/config/environment.ts +72 -0
- package/src/config/index.ts +72 -7
- package/src/config/validation.ts +223 -2
- package/src/create-worker-preview.ts +10 -3
- package/src/create-worker-upload-form.ts +33 -9
- package/src/d1/backups.tsx +7 -2
- package/src/d1/constants.ts +2 -0
- package/src/d1/create.tsx +18 -9
- package/src/d1/{delete.tsx → delete.ts} +4 -4
- package/src/d1/execute.tsx +109 -85
- package/src/d1/index.ts +28 -2
- package/src/d1/migrations/apply.tsx +197 -0
- package/src/d1/migrations/create.tsx +77 -0
- package/src/d1/migrations/helpers.ts +147 -0
- package/src/d1/migrations/index.ts +3 -0
- package/src/d1/migrations/list.tsx +79 -0
- package/src/d1/migrations/options.ts +18 -0
- package/src/d1/options.ts +10 -0
- package/src/d1/splitter.ts +161 -0
- package/src/d1/{types.tsx → types.ts} +10 -0
- package/src/d1/utils.ts +11 -2
- package/src/delete.ts +10 -18
- package/src/deployments.ts +83 -0
- package/src/deprecated/index.ts +11 -319
- package/src/dev/dev-vars.ts +11 -8
- package/src/dev/dev.tsx +64 -25
- package/src/dev/{get-local-persistence-path.tsx → get-local-persistence-path.ts} +0 -0
- package/src/dev/local.tsx +315 -74
- package/src/dev/remote.tsx +30 -1
- package/src/dev/start-server.ts +80 -43
- package/src/dev/use-esbuild.ts +17 -10
- package/src/{dev-registry.tsx → dev-registry.ts} +0 -0
- package/src/dev.tsx +119 -35
- package/src/dialogs.ts +136 -0
- package/src/dispatch-namespace.ts +5 -4
- package/src/docs/index.ts +98 -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/git-client.ts +15 -4
- package/src/{index.tsx → index.ts} +89 -63
- package/src/init.ts +116 -62
- package/src/inspect.ts +21 -1
- package/src/jest.d.ts +4 -0
- package/src/kv/index.ts +5 -54
- package/src/logger.ts +27 -3
- package/src/metrics/metrics-config.ts +3 -3
- package/src/metrics/send-event.ts +4 -1
- package/src/miniflare-cli/assets.ts +63 -28
- package/src/miniflare-cli/index.ts +3 -6
- 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} +34 -2
- package/src/pages/deployment-tails.ts +284 -0
- package/src/pages/deployments.tsx +5 -27
- package/src/pages/{dev.tsx → dev.ts} +110 -104
- package/src/pages/functions/buildPlugin.ts +67 -88
- package/src/pages/functions/buildWorker.ts +235 -109
- package/src/pages/functions/tsconfig.json +8 -0
- package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
- package/src/pages/{functions.tsx → functions.ts} +1 -1
- package/src/pages/{hash.tsx → hash.ts} +0 -0
- package/src/pages/{index.tsx → index.ts} +8 -0
- package/src/pages/projects.tsx +3 -5
- package/src/pages/prompt-select-project.tsx +31 -0
- package/src/pages/publish.tsx +84 -38
- package/src/pages/types.ts +1 -9
- package/src/pages/upload.tsx +29 -7
- package/src/pages/utils.ts +13 -2
- package/src/proxy.ts +43 -6
- package/src/publish/index.ts +11 -8
- package/src/publish/publish.ts +163 -38
- package/src/pubsub/{pubsub-commands.tsx → pubsub-commands.ts} +4 -3
- package/src/queues/cli/commands/consumer/add.ts +71 -0
- package/src/queues/cli/commands/consumer/index.ts +22 -0
- package/src/queues/cli/commands/consumer/remove.ts +38 -0
- package/src/queues/cli/commands/create.ts +25 -0
- package/src/queues/cli/commands/delete.ts +26 -0
- package/src/queues/cli/commands/index.ts +36 -0
- package/src/queues/cli/commands/list.ts +25 -0
- package/src/queues/client.ts +135 -0
- package/src/queues/utils.ts +18 -0
- package/src/r2/constants.ts +4 -0
- package/src/r2/index.ts +12 -0
- package/src/secret/index.ts +16 -40
- package/src/{sites.tsx → sites.ts} +0 -0
- package/src/tail/createTail.ts +94 -3
- package/src/tail/index.ts +7 -11
- package/src/tail/printing.ts +15 -0
- package/src/tsconfig-sanity.ts +16 -0
- package/src/type-generation.ts +78 -56
- package/src/user/access.ts +68 -0
- 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} +118 -78
- package/src/{whoami.tsx → whoami.ts} +37 -71
- package/src/worker.ts +18 -1
- package/src/yargs-types.ts +19 -2
- package/src/zones.ts +31 -5
- package/templates/__tests__/tsconfig-sanity.ts +12 -0
- package/templates/__tests__/tsconfig.json +8 -0
- package/templates/__tests__/tsconfig.tsbuildinfo +1 -0
- package/templates/checked-fetch.js +1 -3
- package/templates/d1-beta-facade.js +89 -22
- 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 +51 -31
- package/templates/middleware/middleware-miniflare3-json-error.ts +20 -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 +121 -58
- package/wrangler-dist/cli.js +42372 -60252
- package/wrangler-dist/wasm-sync.wasm +0 -0
- package/src/__tests__/d1.test.ts +0 -70
- package/src/__tests__/dialogs.test.tsx +0 -40
- package/src/__tests__/helpers/mock-cfetch.ts +0 -333
- package/src/bundle-reporter.tsx +0 -29
- package/src/dialogs.tsx +0 -163
- package/src/environment-variables.ts +0 -50
- package/src/user/env-vars.ts +0 -46
- package/templates/experimental-local-cache-stubs.js +0 -27
package/bin/wrangler.js
CHANGED
|
@@ -62,15 +62,21 @@ Consider using a Node.js version manager such as https://volta.sh/ or https://gi
|
|
|
62
62
|
...process.argv.slice(2),
|
|
63
63
|
],
|
|
64
64
|
{
|
|
65
|
-
stdio: "inherit",
|
|
65
|
+
stdio: ["inherit", "inherit", "inherit", "ipc"],
|
|
66
66
|
env: {
|
|
67
67
|
...process.env,
|
|
68
68
|
NODE_EXTRA_CA_CERTS: pathToCACerts,
|
|
69
69
|
},
|
|
70
70
|
}
|
|
71
|
-
)
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
)
|
|
72
|
+
.on("exit", (code) =>
|
|
73
|
+
process.exit(code === undefined || code === null ? 0 : code)
|
|
74
|
+
)
|
|
75
|
+
.on("message", (message) => {
|
|
76
|
+
if (process.send) {
|
|
77
|
+
process.send(message);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
74
80
|
}
|
|
75
81
|
|
|
76
82
|
/**
|
|
@@ -87,7 +93,15 @@ function runDelegatedWrangler() {
|
|
|
87
93
|
} = JSON.parse(fs.readFileSync(packageJsonPath));
|
|
88
94
|
const resolvedBinaryPath = path.resolve(packageJsonPath, "..", binaryPath);
|
|
89
95
|
|
|
90
|
-
|
|
96
|
+
// Make sure the user knows we're delegating to a different installation
|
|
97
|
+
const currentPackageJsonPath = path.resolve(__dirname, "..", "package.json");
|
|
98
|
+
const currentPackage = JSON.parse(fs.readFileSync(currentPackageJsonPath));
|
|
99
|
+
const argv = process.argv.slice(2).join(" ");
|
|
100
|
+
console.log(
|
|
101
|
+
`Delegating to locally-installed wrangler@${version} over global wrangler@${currentPackage.version}...
|
|
102
|
+
Run \`npx wrangler ${argv}\` to use the local version directly.
|
|
103
|
+
`
|
|
104
|
+
);
|
|
91
105
|
|
|
92
106
|
// this call to `spawn` is simpler because the delegated version will do all
|
|
93
107
|
// of the other work.
|
|
@@ -95,11 +109,17 @@ function runDelegatedWrangler() {
|
|
|
95
109
|
process.execPath,
|
|
96
110
|
[resolvedBinaryPath, ...process.argv.slice(2)],
|
|
97
111
|
{
|
|
98
|
-
stdio: "inherit",
|
|
112
|
+
stdio: ["inherit", "inherit", "inherit", "ipc"],
|
|
99
113
|
}
|
|
100
|
-
)
|
|
101
|
-
|
|
102
|
-
|
|
114
|
+
)
|
|
115
|
+
.on("exit", (code) =>
|
|
116
|
+
process.exit(code === undefined || code === null ? 0 : code)
|
|
117
|
+
)
|
|
118
|
+
.on("message", (message) => {
|
|
119
|
+
if (process.send) {
|
|
120
|
+
process.send(message);
|
|
121
|
+
}
|
|
122
|
+
});
|
|
103
123
|
}
|
|
104
124
|
|
|
105
125
|
/**
|
package/miniflare-dist/index.mjs
CHANGED
|
@@ -128,23 +128,45 @@ var init_environment_polyfills = __esm({
|
|
|
128
128
|
}
|
|
129
129
|
});
|
|
130
130
|
|
|
131
|
+
// ../pages-shared/environment-polyfills/miniflare-tre.ts
|
|
132
|
+
var miniflare_tre_exports = {};
|
|
133
|
+
__export(miniflare_tre_exports, {
|
|
134
|
+
default: () => miniflare_tre_default
|
|
135
|
+
});
|
|
136
|
+
var miniflare_tre_default;
|
|
137
|
+
var init_miniflare_tre = __esm({
|
|
138
|
+
"../pages-shared/environment-polyfills/miniflare-tre.ts"() {
|
|
139
|
+
init_environment_polyfills();
|
|
140
|
+
miniflare_tre_default = async () => {
|
|
141
|
+
const mf = await import("@miniflare/tre");
|
|
142
|
+
polyfill({
|
|
143
|
+
fetch: mf.fetch,
|
|
144
|
+
Headers: mf.Headers,
|
|
145
|
+
Request: mf.Request,
|
|
146
|
+
Response: mf.Response
|
|
147
|
+
});
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
|
|
131
152
|
// ../pages-shared/environment-polyfills/miniflare.ts
|
|
132
153
|
var miniflare_exports = {};
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
Response as MiniflareResponse
|
|
138
|
-
} from "@miniflare/core";
|
|
154
|
+
__export(miniflare_exports, {
|
|
155
|
+
default: () => miniflare_default
|
|
156
|
+
});
|
|
157
|
+
var miniflare_default;
|
|
139
158
|
var init_miniflare = __esm({
|
|
140
159
|
"../pages-shared/environment-polyfills/miniflare.ts"() {
|
|
141
160
|
init_environment_polyfills();
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
161
|
+
miniflare_default = async () => {
|
|
162
|
+
const mf = await import("@miniflare/core");
|
|
163
|
+
polyfill({
|
|
164
|
+
fetch: mf.fetch,
|
|
165
|
+
Headers: mf.Headers,
|
|
166
|
+
Request: mf.Request,
|
|
167
|
+
Response: mf.Response
|
|
168
|
+
});
|
|
169
|
+
};
|
|
148
170
|
}
|
|
149
171
|
});
|
|
150
172
|
|
|
@@ -329,6 +351,15 @@ var init_rulesEngine = __esm({
|
|
|
329
351
|
}
|
|
330
352
|
});
|
|
331
353
|
|
|
354
|
+
// ../pages-shared/asset-server/url.ts
|
|
355
|
+
function stringifyURLToRootRelativePathname(url) {
|
|
356
|
+
return `${url.pathname}${url.search}${url.hash}`;
|
|
357
|
+
}
|
|
358
|
+
var init_url = __esm({
|
|
359
|
+
"../pages-shared/asset-server/url.ts"() {
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
|
|
332
363
|
// ../pages-shared/asset-server/handler.ts
|
|
333
364
|
var handler_exports = {};
|
|
334
365
|
__export(handler_exports, {
|
|
@@ -339,6 +370,7 @@ __export(handler_exports, {
|
|
|
339
370
|
HEADERS_VERSION_V1: () => HEADERS_VERSION_V1,
|
|
340
371
|
REDIRECTS_VERSION: () => REDIRECTS_VERSION2,
|
|
341
372
|
generateHandler: () => generateHandler,
|
|
373
|
+
getResponseFromMatch: () => getResponseFromMatch,
|
|
342
374
|
normaliseHeaders: () => normaliseHeaders,
|
|
343
375
|
parseQualityWeightedList: () => parseQualityWeightedList
|
|
344
376
|
});
|
|
@@ -409,22 +441,7 @@ async function generateHandler({
|
|
|
409
441
|
async function generateResponse() {
|
|
410
442
|
const match = staticRedirectsMatcher() || generateRedirectsMatcher()({ request })[0];
|
|
411
443
|
if (match) {
|
|
412
|
-
|
|
413
|
-
const destination = new URL(to, request.url);
|
|
414
|
-
const location = destination.origin === new URL(request.url).origin ? `${destination.pathname}${destination.search || search}${destination.hash}` : `${destination.href}${destination.search ? "" : search}${destination.hash}`;
|
|
415
|
-
switch (status) {
|
|
416
|
-
case 301:
|
|
417
|
-
return new MovedPermanentlyResponse(location);
|
|
418
|
-
case 303:
|
|
419
|
-
return new SeeOtherResponse(location);
|
|
420
|
-
case 307:
|
|
421
|
-
return new TemporaryRedirectResponse(location);
|
|
422
|
-
case 308:
|
|
423
|
-
return new PermanentRedirectResponse(location);
|
|
424
|
-
case 302:
|
|
425
|
-
default:
|
|
426
|
-
return new FoundResponse(location);
|
|
427
|
-
}
|
|
444
|
+
return getResponseFromMatch(match, url);
|
|
428
445
|
}
|
|
429
446
|
if (!request.method.match(/^(get|head)$/i)) {
|
|
430
447
|
return new MethodNotAllowedResponse();
|
|
@@ -703,6 +720,27 @@ async function generateHandler({
|
|
|
703
720
|
);
|
|
704
721
|
}
|
|
705
722
|
}
|
|
723
|
+
function getResponseFromMatch({
|
|
724
|
+
status,
|
|
725
|
+
to
|
|
726
|
+
}, requestUrl) {
|
|
727
|
+
const destination = new URL(to, requestUrl);
|
|
728
|
+
destination.search = destination.search || requestUrl.search;
|
|
729
|
+
const location = destination.origin === requestUrl.origin ? stringifyURLToRootRelativePathname(destination) : destination.toString();
|
|
730
|
+
switch (status) {
|
|
731
|
+
case 301:
|
|
732
|
+
return new MovedPermanentlyResponse(location);
|
|
733
|
+
case 303:
|
|
734
|
+
return new SeeOtherResponse(location);
|
|
735
|
+
case 307:
|
|
736
|
+
return new TemporaryRedirectResponse(location);
|
|
737
|
+
case 308:
|
|
738
|
+
return new PermanentRedirectResponse(location);
|
|
739
|
+
case 302:
|
|
740
|
+
default:
|
|
741
|
+
return new FoundResponse(location);
|
|
742
|
+
}
|
|
743
|
+
}
|
|
706
744
|
function parseQualityWeightedList(list = "") {
|
|
707
745
|
const items = {};
|
|
708
746
|
list.replace(/\s/g, "").split(",").forEach((el) => {
|
|
@@ -728,6 +766,7 @@ var init_handler = __esm({
|
|
|
728
766
|
"../pages-shared/asset-server/handler.ts"() {
|
|
729
767
|
init_responses();
|
|
730
768
|
init_rulesEngine();
|
|
769
|
+
init_url();
|
|
731
770
|
ASSET_PRESERVATION_CACHE = "assetPreservationCache";
|
|
732
771
|
CACHE_CONTROL_PRESERVATION = "public, s-maxage=604800";
|
|
733
772
|
CACHE_CONTROL_BROWSER = "public, max-age=0, must-revalidate";
|
|
@@ -749,8 +788,8 @@ import {
|
|
|
749
788
|
Log as MiniflareLog,
|
|
750
789
|
LogLevel as MiniflareLogLevel,
|
|
751
790
|
Miniflare,
|
|
752
|
-
Request as
|
|
753
|
-
Response as
|
|
791
|
+
Request as MiniflareRequest,
|
|
792
|
+
Response as MiniflareResponse
|
|
754
793
|
} from "miniflare";
|
|
755
794
|
|
|
756
795
|
// ../../node_modules/yargs/lib/platform-shims/esm.mjs
|
|
@@ -5592,6 +5631,7 @@ function createMetadataObject({
|
|
|
5592
5631
|
headers,
|
|
5593
5632
|
webAnalyticsToken,
|
|
5594
5633
|
deploymentId,
|
|
5634
|
+
failOpen,
|
|
5595
5635
|
logger = (_message) => {
|
|
5596
5636
|
}
|
|
5597
5637
|
}) {
|
|
@@ -5599,7 +5639,8 @@ function createMetadataObject({
|
|
|
5599
5639
|
...constructRedirects({ redirects, logger }),
|
|
5600
5640
|
...constructHeaders({ headers, logger }),
|
|
5601
5641
|
...constructWebAnalytics({ webAnalyticsToken, logger }),
|
|
5602
|
-
deploymentId
|
|
5642
|
+
deploymentId,
|
|
5643
|
+
failOpen
|
|
5603
5644
|
};
|
|
5604
5645
|
}
|
|
5605
5646
|
function constructRedirects({
|
|
@@ -5630,7 +5671,11 @@ function constructRedirects({
|
|
|
5630
5671
|
for (const rule of redirects.rules) {
|
|
5631
5672
|
if (!rule.from.match(SPLAT_REGEX) && !rule.from.match(PLACEHOLDER_REGEX)) {
|
|
5632
5673
|
if (canCreateStaticRule) {
|
|
5633
|
-
staticRedirects[rule.from] = {
|
|
5674
|
+
staticRedirects[rule.from] = {
|
|
5675
|
+
status: rule.status,
|
|
5676
|
+
to: rule.to,
|
|
5677
|
+
lineNumber: rule.lineNumber
|
|
5678
|
+
};
|
|
5634
5679
|
continue;
|
|
5635
5680
|
} else {
|
|
5636
5681
|
logger(
|
|
@@ -5972,14 +6017,9 @@ function parseRedirects(input) {
|
|
|
5972
6017
|
|
|
5973
6018
|
// src/miniflare-cli/assets.ts
|
|
5974
6019
|
var import_mime = __toESM(require_mime());
|
|
5975
|
-
import { fetch as miniflareFetch2 } from "@miniflare/core";
|
|
5976
|
-
import {
|
|
5977
|
-
Response as MiniflareResponse2,
|
|
5978
|
-
Request as MiniflareRequest2
|
|
5979
|
-
} from "@miniflare/core";
|
|
5980
6020
|
import { watch } from "chokidar";
|
|
5981
6021
|
|
|
5982
|
-
// src/pages/hash.
|
|
6022
|
+
// src/pages/hash.ts
|
|
5983
6023
|
import { readFileSync as readFileSync4 } from "node:fs";
|
|
5984
6024
|
import { extname as extname2 } from "node:path";
|
|
5985
6025
|
import { hash as blake3hash } from "blake3-wasm";
|
|
@@ -5992,28 +6032,34 @@ var hashFile = (filepath) => {
|
|
|
5992
6032
|
|
|
5993
6033
|
// src/miniflare-cli/assets.ts
|
|
5994
6034
|
async function generateASSETSBinding(options) {
|
|
5995
|
-
const assetsFetch = options.directory !== void 0 ? await generateAssetsFetch(options.directory, options.log) : invalidAssetsFetch;
|
|
6035
|
+
const assetsFetch = options.directory !== void 0 ? await generateAssetsFetch(options.directory, options.log, options.tre) : invalidAssetsFetch;
|
|
6036
|
+
const miniflare = options.tre ? await import("@miniflare/tre") : await import("@miniflare/core");
|
|
6037
|
+
const Request = miniflare.Request;
|
|
6038
|
+
const Response2 = miniflare.Response;
|
|
6039
|
+
const fetch2 = options.tre ? miniflare.fetch : (await import("@miniflare/web-sockets")).upgradingFetch;
|
|
5996
6040
|
return async function(miniflareRequest) {
|
|
5997
6041
|
if (options.proxyPort) {
|
|
5998
6042
|
try {
|
|
5999
6043
|
const url = new URL(miniflareRequest.url);
|
|
6000
6044
|
url.host = `localhost:${options.proxyPort}`;
|
|
6001
|
-
|
|
6045
|
+
const proxyRequest = new Request(url, miniflareRequest);
|
|
6046
|
+
if (proxyRequest.headers.get("Upgrade") === "websocket") {
|
|
6047
|
+
proxyRequest.headers.delete("Sec-WebSocket-Accept");
|
|
6048
|
+
proxyRequest.headers.delete("Sec-WebSocket-Key");
|
|
6049
|
+
}
|
|
6050
|
+
return await fetch2(proxyRequest);
|
|
6002
6051
|
} catch (thrown) {
|
|
6003
6052
|
options.log.error(new Error(`Could not proxy request: ${thrown}`));
|
|
6004
|
-
return new
|
|
6005
|
-
|
|
6006
|
-
|
|
6007
|
-
status: 502
|
|
6008
|
-
}
|
|
6009
|
-
);
|
|
6053
|
+
return new Response2(`[wrangler] Could not proxy request: ${thrown}`, {
|
|
6054
|
+
status: 502
|
|
6055
|
+
});
|
|
6010
6056
|
}
|
|
6011
6057
|
} else {
|
|
6012
6058
|
try {
|
|
6013
6059
|
return await assetsFetch(miniflareRequest);
|
|
6014
6060
|
} catch (thrown) {
|
|
6015
6061
|
options.log.error(new Error(`Could not serve static asset: ${thrown}`));
|
|
6016
|
-
return new
|
|
6062
|
+
return new Response2(
|
|
6017
6063
|
`[wrangler] Could not serve static asset: ${thrown}`,
|
|
6018
6064
|
{ status: 502 }
|
|
6019
6065
|
);
|
|
@@ -6021,8 +6067,11 @@ async function generateASSETSBinding(options) {
|
|
|
6021
6067
|
}
|
|
6022
6068
|
};
|
|
6023
6069
|
}
|
|
6024
|
-
async function generateAssetsFetch(directory, log) {
|
|
6025
|
-
await Promise.resolve().then(() => (init_miniflare(), miniflare_exports));
|
|
6070
|
+
async function generateAssetsFetch(directory, log, tre) {
|
|
6071
|
+
const polyfill2 = tre ? (await Promise.resolve().then(() => (init_miniflare_tre(), miniflare_tre_exports))).default : (await Promise.resolve().then(() => (init_miniflare(), miniflare_exports))).default;
|
|
6072
|
+
await polyfill2();
|
|
6073
|
+
const miniflare = tre ? await import("@miniflare/tre") : await import("@miniflare/core");
|
|
6074
|
+
const Request = miniflare.Request;
|
|
6026
6075
|
const { generateHandler: generateHandler2, parseQualityWeightedList: parseQualityWeightedList2 } = await Promise.resolve().then(() => (init_handler(), handler_exports));
|
|
6027
6076
|
const headersFile = join(directory, "_headers");
|
|
6028
6077
|
const redirectsFile = join(directory, "_redirects");
|
|
@@ -6116,7 +6165,7 @@ async function generateAssetsFetch(directory, log) {
|
|
|
6116
6165
|
});
|
|
6117
6166
|
};
|
|
6118
6167
|
return async (input, init) => {
|
|
6119
|
-
const request = new
|
|
6168
|
+
const request = new Request(input, init);
|
|
6120
6169
|
return await generateResponse(request);
|
|
6121
6170
|
};
|
|
6122
6171
|
}
|
|
@@ -6184,12 +6233,12 @@ async function main() {
|
|
|
6184
6233
|
namespace.get = (id) => {
|
|
6185
6234
|
const stub = new DurableObjectStub(factory, id);
|
|
6186
6235
|
stub.fetch = (...reqArgs) => {
|
|
6187
|
-
const requestFromArgs = new
|
|
6236
|
+
const requestFromArgs = new MiniflareRequest(...reqArgs);
|
|
6188
6237
|
const url = new URL(requestFromArgs.url);
|
|
6189
6238
|
url.host = host;
|
|
6190
6239
|
if (port !== void 0)
|
|
6191
6240
|
url.port = port.toString();
|
|
6192
|
-
const request = new
|
|
6241
|
+
const request = new MiniflareRequest(
|
|
6193
6242
|
url.toString(),
|
|
6194
6243
|
requestFromArgs
|
|
6195
6244
|
);
|
|
@@ -6222,7 +6271,8 @@ async function main() {
|
|
|
6222
6271
|
const options = {
|
|
6223
6272
|
log: config.log,
|
|
6224
6273
|
proxyPort: opts.proxyPort,
|
|
6225
|
-
directory: opts.directory
|
|
6274
|
+
directory: opts.directory,
|
|
6275
|
+
tre: false
|
|
6226
6276
|
};
|
|
6227
6277
|
config.serviceBindings = {
|
|
6228
6278
|
...config.serviceBindings,
|
|
@@ -6248,7 +6298,7 @@ async function main() {
|
|
|
6248
6298
|
}`,
|
|
6249
6299
|
serviceBindings: {
|
|
6250
6300
|
DO: async (request) => {
|
|
6251
|
-
request = new
|
|
6301
|
+
request = new MiniflareRequest(request);
|
|
6252
6302
|
const name = request.headers.get("x-miniflare-durable-object-name");
|
|
6253
6303
|
const idString = request.headers.get(
|
|
6254
6304
|
"x-miniflare-durable-object-id"
|
|
@@ -6256,7 +6306,7 @@ async function main() {
|
|
|
6256
6306
|
request.headers.delete("x-miniflare-durable-object-name");
|
|
6257
6307
|
request.headers.delete("x-miniflare-durable-object-id");
|
|
6258
6308
|
if (!name || !idString) {
|
|
6259
|
-
return new
|
|
6309
|
+
return new MiniflareResponse(
|
|
6260
6310
|
"[durable-object-proxy-err] Missing `x-miniflare-durable-object-name` or `x-miniflare-durable-object-id` headers.",
|
|
6261
6311
|
{ status: 400 }
|
|
6262
6312
|
);
|
|
@@ -6264,14 +6314,14 @@ async function main() {
|
|
|
6264
6314
|
const namespace = await mf?.getDurableObjectNamespace(name);
|
|
6265
6315
|
const id = namespace?.idFromString(idString);
|
|
6266
6316
|
if (!id) {
|
|
6267
|
-
return new
|
|
6317
|
+
return new MiniflareResponse(
|
|
6268
6318
|
"[durable-object-proxy-err] Could not generate an ID. Possibly due to a mismatched DO name and ID?",
|
|
6269
6319
|
{ status: 500 }
|
|
6270
6320
|
);
|
|
6271
6321
|
}
|
|
6272
6322
|
const stub = namespace?.get(id);
|
|
6273
6323
|
if (!stub) {
|
|
6274
|
-
return new
|
|
6324
|
+
return new MiniflareResponse(
|
|
6275
6325
|
"[durable-object-proxy-err] Could not generate a stub. Possibly due to a mismatched DO name and ID?",
|
|
6276
6326
|
{ status: 500 }
|
|
6277
6327
|
);
|
|
@@ -6286,7 +6336,7 @@ async function main() {
|
|
|
6286
6336
|
}
|
|
6287
6337
|
process.send && process.send(
|
|
6288
6338
|
JSON.stringify({
|
|
6289
|
-
mfPort,
|
|
6339
|
+
port: mfPort,
|
|
6290
6340
|
ready: true,
|
|
6291
6341
|
durableObjectsPort: durableObjectsMfPort
|
|
6292
6342
|
})
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wrangler",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-af4f27c5",
|
|
4
4
|
"description": "Command-line interface for all things Cloudflare Workers",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"wrangler",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"assert-git-version": "node -r esbuild-register scripts/assert-git-version.ts",
|
|
58
58
|
"build": "npm run clean && npm run bundle && npm run emit-types",
|
|
59
59
|
"bundle": "node -r esbuild-register scripts/bundle.ts",
|
|
60
|
-
"check:type": "tsc",
|
|
60
|
+
"check:type": "node -r esbuild-register scripts/tsc-all.ts",
|
|
61
61
|
"clean": "rimraf wrangler-dist miniflare-dist emitted-types",
|
|
62
62
|
"dev": "npm run clean && concurrently -c black,blue --kill-others-on-fail false 'npm run bundle -- --watch' 'npm run check:type -- --watch --preserveWatchOutput'",
|
|
63
63
|
"emit-types": "tsc -p tsconfig.emit.json && node -r esbuild-register scripts/emit-types.ts",
|
|
@@ -100,13 +100,13 @@
|
|
|
100
100
|
"@cloudflare/kv-asset-handler": "^0.2.0",
|
|
101
101
|
"@esbuild-plugins/node-globals-polyfill": "^0.1.1",
|
|
102
102
|
"@esbuild-plugins/node-modules-polyfill": "^0.1.4",
|
|
103
|
-
"@miniflare/core": "2.
|
|
104
|
-
"@miniflare/d1": "2.
|
|
105
|
-
"@miniflare/durable-objects": "2.
|
|
103
|
+
"@miniflare/core": "2.11.0",
|
|
104
|
+
"@miniflare/d1": "2.11.0",
|
|
105
|
+
"@miniflare/durable-objects": "2.11.0",
|
|
106
106
|
"blake3-wasm": "^2.1.5",
|
|
107
107
|
"chokidar": "^3.5.3",
|
|
108
108
|
"esbuild": "0.14.51",
|
|
109
|
-
"miniflare": "2.
|
|
109
|
+
"miniflare": "2.11.0",
|
|
110
110
|
"nanoid": "^3.3.3",
|
|
111
111
|
"path-to-regexp": "^6.2.0",
|
|
112
112
|
"selfsigned": "^2.0.1",
|
|
@@ -114,11 +114,11 @@
|
|
|
114
114
|
"xxhash-wasm": "^1.0.1"
|
|
115
115
|
},
|
|
116
116
|
"devDependencies": {
|
|
117
|
-
"@
|
|
118
|
-
"@
|
|
117
|
+
"@cloudflare/types": "^6.18.4",
|
|
118
|
+
"@cloudflare/workers-types": "^4.20221111.1",
|
|
119
119
|
"@iarna/toml": "^3.0.0",
|
|
120
120
|
"@microsoft/api-extractor": "^7.28.3",
|
|
121
|
-
"@miniflare/tre": "3.0.0-next.
|
|
121
|
+
"@miniflare/tre": "^3.0.0-next.8",
|
|
122
122
|
"@types/better-sqlite3": "^7.6.0",
|
|
123
123
|
"@types/busboy": "^1.5.0",
|
|
124
124
|
"@types/command-exists": "^1.2.0",
|
|
@@ -135,6 +135,8 @@
|
|
|
135
135
|
"@types/yargs": "^17.0.10",
|
|
136
136
|
"@webcontainer/env": "^1.0.1",
|
|
137
137
|
"body-parser": "^1.20.0",
|
|
138
|
+
"chalk": "^2.4.2",
|
|
139
|
+
"cli-table3": "^0.6.3",
|
|
138
140
|
"clipboardy": "^3.0.0",
|
|
139
141
|
"cmd-shim": "^4.1.0",
|
|
140
142
|
"command-exists": "^1.2.9",
|
|
@@ -161,7 +163,7 @@
|
|
|
161
163
|
"jest-websocket-mock": "^2.3.0",
|
|
162
164
|
"mime": "^3.0.0",
|
|
163
165
|
"minimatch": "^5.1.0",
|
|
164
|
-
"msw": "^0.
|
|
166
|
+
"msw": "^0.49.1",
|
|
165
167
|
"npx-import": "^1.1.3",
|
|
166
168
|
"open": "^8.4.0",
|
|
167
169
|
"p-queue": "^7.2.0",
|
|
@@ -177,11 +179,12 @@
|
|
|
177
179
|
"timeago.js": "^4.0.2",
|
|
178
180
|
"tmp-promise": "^3.0.3",
|
|
179
181
|
"ts-dedent": "^2.2.0",
|
|
180
|
-
"undici": "
|
|
182
|
+
"undici": "5.11.0",
|
|
181
183
|
"update-check": "^1.5.4",
|
|
182
184
|
"ws": "^8.5.0",
|
|
183
185
|
"xdg-app-paths": "^7.3.0",
|
|
184
|
-
"yargs": "^17.4.1"
|
|
186
|
+
"yargs": "^17.4.1",
|
|
187
|
+
"yoga-layout": "file:../../vendor/yoga-layout-2.0.0-beta.1.tgz"
|
|
185
188
|
},
|
|
186
189
|
"optionalDependencies": {
|
|
187
190
|
"fsevents": "~2.3.2"
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { domainUsesAccess, getAccessToken } from "../user/access";
|
|
2
|
+
import { msw, mswAccessHandlers } from "./helpers/msw";
|
|
3
|
+
|
|
4
|
+
describe("access", () => {
|
|
5
|
+
beforeEach(() => {
|
|
6
|
+
msw.use(...mswAccessHandlers);
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
describe("basic", () => {
|
|
10
|
+
it("should correctly detect an access protected domain", async () => {
|
|
11
|
+
expect(await domainUsesAccess("access-protected.com")).toBeTruthy();
|
|
12
|
+
expect(await domainUsesAccess("not-access-protected.com")).toBeFalsy();
|
|
13
|
+
});
|
|
14
|
+
it("should not fail without cloudflared installed", async () => {
|
|
15
|
+
expect(await getAccessToken("not-access-protected.com")).toBeFalsy();
|
|
16
|
+
});
|
|
17
|
+
it("should error without cloudflared installed on an access protected domain", async () => {
|
|
18
|
+
await expect(getAccessToken("access-protected.com")).rejects.toEqual(
|
|
19
|
+
new Error(
|
|
20
|
+
"To use Wrangler with Cloudflare Access, please install `cloudflared` from https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/installation"
|
|
21
|
+
)
|
|
22
|
+
);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
});
|
|
@@ -9,8 +9,12 @@ describe("unstable_dev", () => {
|
|
|
9
9
|
it("should return Hello World", async () => {
|
|
10
10
|
const worker = await unstable_dev(
|
|
11
11
|
"src/__tests__/helpers/worker-scripts/hello-world-worker.js",
|
|
12
|
-
{
|
|
13
|
-
|
|
12
|
+
{
|
|
13
|
+
experimental: {
|
|
14
|
+
disableExperimentalWarning: true,
|
|
15
|
+
disableDevRegistry: true,
|
|
16
|
+
},
|
|
17
|
+
}
|
|
14
18
|
);
|
|
15
19
|
const resp = await worker.fetch();
|
|
16
20
|
if (resp) {
|
|
@@ -23,8 +27,12 @@ describe("unstable_dev", () => {
|
|
|
23
27
|
it("should return the port that the server started on (1)", async () => {
|
|
24
28
|
const worker = await unstable_dev(
|
|
25
29
|
"src/__tests__/helpers/worker-scripts/hello-world-worker.js",
|
|
26
|
-
{
|
|
27
|
-
|
|
30
|
+
{
|
|
31
|
+
experimental: {
|
|
32
|
+
disableExperimentalWarning: true,
|
|
33
|
+
disableDevRegistry: true,
|
|
34
|
+
},
|
|
35
|
+
}
|
|
28
36
|
);
|
|
29
37
|
expect(worker.port).toBeGreaterThan(0);
|
|
30
38
|
await worker.stop();
|
|
@@ -33,8 +41,13 @@ describe("unstable_dev", () => {
|
|
|
33
41
|
it("should return the port that the server started on (2)", async () => {
|
|
34
42
|
const worker = await unstable_dev(
|
|
35
43
|
"src/__tests__/helpers/worker-scripts/hello-world-worker.js",
|
|
36
|
-
{
|
|
37
|
-
|
|
44
|
+
{
|
|
45
|
+
port: 9191,
|
|
46
|
+
experimental: {
|
|
47
|
+
disableExperimentalWarning: true,
|
|
48
|
+
disableDevRegistry: true,
|
|
49
|
+
},
|
|
50
|
+
}
|
|
38
51
|
);
|
|
39
52
|
expect(worker.port).toBe(9191);
|
|
40
53
|
await worker.stop();
|
|
@@ -45,8 +58,13 @@ describe("unstable dev fetch input protocol", () => {
|
|
|
45
58
|
it("should use http localProtocol", async () => {
|
|
46
59
|
const worker = await unstable_dev(
|
|
47
60
|
"src/__tests__/helpers/worker-scripts/hello-world-worker.js",
|
|
48
|
-
{
|
|
49
|
-
|
|
61
|
+
{
|
|
62
|
+
localProtocol: "http",
|
|
63
|
+
experimental: {
|
|
64
|
+
disableExperimentalWarning: true,
|
|
65
|
+
disableDevRegistry: true,
|
|
66
|
+
},
|
|
67
|
+
}
|
|
50
68
|
);
|
|
51
69
|
const res = await worker.fetch();
|
|
52
70
|
if (res) {
|
|
@@ -59,8 +77,13 @@ describe("unstable dev fetch input protocol", () => {
|
|
|
59
77
|
it("should use undefined localProtocol", async () => {
|
|
60
78
|
const worker = await unstable_dev(
|
|
61
79
|
"src/__tests__/helpers/worker-scripts/hello-world-worker.js",
|
|
62
|
-
{
|
|
63
|
-
|
|
80
|
+
{
|
|
81
|
+
localProtocol: undefined,
|
|
82
|
+
experimental: {
|
|
83
|
+
disableExperimentalWarning: true,
|
|
84
|
+
disableDevRegistry: true,
|
|
85
|
+
},
|
|
86
|
+
}
|
|
64
87
|
);
|
|
65
88
|
const res = await worker.fetch();
|
|
66
89
|
if (res) {
|
|
@@ -91,11 +114,13 @@ describe("unstable dev fetch input parsing", () => {
|
|
|
91
114
|
`;
|
|
92
115
|
fs.writeFileSync("index.js", scriptContent);
|
|
93
116
|
const port = 21213;
|
|
94
|
-
const worker = await unstable_dev(
|
|
95
|
-
|
|
96
|
-
{
|
|
97
|
-
|
|
98
|
-
|
|
117
|
+
const worker = await unstable_dev("index.js", {
|
|
118
|
+
port,
|
|
119
|
+
experimental: {
|
|
120
|
+
disableExperimentalWarning: true,
|
|
121
|
+
disableDevRegistry: true,
|
|
122
|
+
},
|
|
123
|
+
});
|
|
99
124
|
const req = new Request("http://0.0.0.0:21213/test", {
|
|
100
125
|
method: "POST",
|
|
101
126
|
});
|
|
@@ -119,11 +144,12 @@ describe("unstable dev fetch input parsing", () => {
|
|
|
119
144
|
};
|
|
120
145
|
`;
|
|
121
146
|
fs.writeFileSync("index.js", scriptContent);
|
|
122
|
-
const worker = await unstable_dev(
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
147
|
+
const worker = await unstable_dev("index.js", {
|
|
148
|
+
experimental: {
|
|
149
|
+
disableExperimentalWarning: true,
|
|
150
|
+
disableDevRegistry: true,
|
|
151
|
+
},
|
|
152
|
+
});
|
|
127
153
|
const url = new URL("http://localhost:80/test");
|
|
128
154
|
const resp = await worker.fetch(url);
|
|
129
155
|
let text;
|
|
@@ -145,11 +171,12 @@ describe("unstable dev fetch input parsing", () => {
|
|
|
145
171
|
};
|
|
146
172
|
`;
|
|
147
173
|
fs.writeFileSync("index.js", scriptContent);
|
|
148
|
-
const worker = await unstable_dev(
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
174
|
+
const worker = await unstable_dev("index.js", {
|
|
175
|
+
experimental: {
|
|
176
|
+
disableExperimentalWarning: true,
|
|
177
|
+
disableDevRegistry: true,
|
|
178
|
+
},
|
|
179
|
+
});
|
|
153
180
|
const resp = await worker.fetch("http://example.com/test");
|
|
154
181
|
let text;
|
|
155
182
|
if (resp) text = await resp.text();
|
|
@@ -170,11 +197,12 @@ describe("unstable dev fetch input parsing", () => {
|
|
|
170
197
|
};
|
|
171
198
|
`;
|
|
172
199
|
fs.writeFileSync("index.js", scriptContent);
|
|
173
|
-
const worker = await unstable_dev(
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
200
|
+
const worker = await unstable_dev("index.js", {
|
|
201
|
+
experimental: {
|
|
202
|
+
disableExperimentalWarning: true,
|
|
203
|
+
disableDevRegistry: true,
|
|
204
|
+
},
|
|
205
|
+
});
|
|
178
206
|
const resp = await worker.fetch("/test");
|
|
179
207
|
let text;
|
|
180
208
|
if (resp) text = await resp.text();
|
|
@@ -195,11 +223,12 @@ describe("unstable dev fetch input parsing", () => {
|
|
|
195
223
|
};
|
|
196
224
|
`;
|
|
197
225
|
fs.writeFileSync("index.js", scriptContent);
|
|
198
|
-
const worker = await unstable_dev(
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
226
|
+
const worker = await unstable_dev("index.js", {
|
|
227
|
+
experimental: {
|
|
228
|
+
disableExperimentalWarning: true,
|
|
229
|
+
disableDevRegistry: true,
|
|
230
|
+
},
|
|
231
|
+
});
|
|
203
232
|
const resp = await worker.fetch("");
|
|
204
233
|
let text;
|
|
205
234
|
if (resp) text = await resp.text();
|