wrangler 0.0.0-afca1b6c → 0.0.0-afdb7e49
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 +0 -4
- package/miniflare-dist/index.mjs +73 -71
- package/package.json +25 -8
- package/src/__tests__/access.test.ts +25 -0
- package/src/__tests__/api-dev.test.ts +24 -4
- package/src/__tests__/api-devregistry.test.js +56 -0
- package/src/__tests__/configuration.test.ts +303 -348
- package/src/__tests__/d1.test.ts +74 -0
- package/src/__tests__/delete.test.ts +230 -0
- package/src/__tests__/deployments.test.ts +91 -0
- package/src/__tests__/dev.test.tsx +249 -33
- package/src/__tests__/generate.test.ts +207 -63
- package/src/__tests__/get-host-from-url.test.ts +16 -0
- package/src/__tests__/helpers/mock-cfetch.ts +18 -1
- package/src/__tests__/helpers/mock-kv.ts +1 -1
- package/src/__tests__/helpers/mock-oauth-flow.ts +4 -2
- package/src/__tests__/helpers/msw/handlers/access.ts +13 -0
- package/src/__tests__/helpers/msw/handlers/deployments.ts +59 -0
- package/src/__tests__/helpers/msw/handlers/namespaces.ts +7 -7
- package/src/__tests__/helpers/msw/handlers/oauth.ts +5 -5
- package/src/__tests__/helpers/msw/handlers/r2.ts +8 -8
- package/src/__tests__/helpers/msw/handlers/script.ts +75 -0
- package/src/__tests__/helpers/msw/handlers/user.ts +6 -6
- package/src/__tests__/helpers/msw/handlers/zones.ts +22 -0
- package/src/__tests__/helpers/msw/index.ts +19 -2
- package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +1 -0
- package/src/__tests__/helpers/{hello-world-worker.js → worker-scripts/hello-world-worker.js} +0 -0
- package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +1 -0
- package/src/__tests__/helpers/worker-scripts/parent-worker.js +8 -0
- package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +5 -0
- package/src/__tests__/index.test.ts +52 -35
- package/src/__tests__/init.test.ts +329 -10
- package/src/__tests__/jest.setup.ts +20 -4
- package/src/__tests__/kv.test.ts +405 -401
- package/src/__tests__/middleware.scheduled.test.ts +135 -0
- package/src/__tests__/middleware.test.ts +703 -745
- package/src/__tests__/pages-deployment-tail.test.ts +820 -0
- package/src/__tests__/pages.test.ts +511 -69
- package/src/__tests__/paths.test.ts +23 -1
- package/src/__tests__/publish.test.ts +1314 -714
- package/src/__tests__/pubsub.test.ts +3 -0
- package/src/__tests__/queues.test.ts +371 -0
- package/src/__tests__/r2.test.ts +290 -268
- package/src/__tests__/secret.test.ts +6 -6
- package/src/__tests__/tail.test.ts +39 -14
- package/src/__tests__/type-generation.test.ts +225 -0
- package/src/__tests__/user.test.ts +4 -4
- package/src/__tests__/utils-collectKeyValues.test.ts +47 -0
- package/src/__tests__/whoami.test.tsx +6 -2
- package/src/__tests__/worker-namespace.test.ts +120 -123
- package/src/api/dev.ts +19 -13
- package/src/bundle-reporter.tsx +41 -2
- package/src/bundle.ts +168 -60
- package/src/cfetch/index.ts +40 -1
- package/src/cfetch/internal.ts +39 -74
- package/src/cli.ts +1 -2
- package/src/config/config.ts +12 -0
- package/src/config/environment.ts +76 -0
- package/src/config/index.ts +87 -4
- package/src/config/validation.ts +241 -0
- package/src/config-cache.ts +1 -1
- package/src/create-worker-preview.ts +10 -3
- package/src/create-worker-upload-form.ts +27 -2
- package/src/d1/backups.tsx +218 -0
- package/src/d1/constants.ts +2 -0
- package/src/d1/create.tsx +63 -0
- package/src/d1/delete.tsx +56 -0
- package/src/d1/execute.tsx +352 -0
- package/src/d1/formatTimeAgo.ts +14 -0
- package/src/d1/index.ts +99 -0
- package/src/d1/list.tsx +48 -0
- package/src/d1/migrations.tsx +446 -0
- package/src/d1/options.ts +22 -0
- package/src/d1/types.tsx +24 -0
- package/src/d1/utils.ts +48 -0
- package/src/delete.ts +108 -0
- package/src/deployments.ts +77 -0
- package/src/deprecated/index.ts +438 -0
- package/src/dev/dev-vars.ts +11 -8
- package/src/dev/dev.tsx +66 -24
- package/src/dev/get-local-persistence-path.tsx +31 -0
- package/src/dev/local.tsx +292 -17
- package/src/dev/remote.tsx +288 -110
- package/src/dev/start-server.ts +166 -43
- package/src/dev/use-esbuild.ts +24 -6
- package/src/dev-registry.tsx +41 -0
- package/src/dev.tsx +105 -52
- package/src/dialogs.tsx +24 -10
- package/src/dispatch-namespace.ts +4 -3
- package/src/entry.ts +1 -1
- package/src/environment-variables.ts +17 -2
- package/src/git-client.ts +85 -3
- package/src/index.tsx +218 -1896
- package/src/init.ts +52 -18
- package/src/inspect.ts +47 -27
- package/src/is-interactive.ts +4 -0
- package/src/{kv.ts → kv/helpers.ts} +3 -3
- package/src/kv/index.ts +596 -0
- package/src/logger.ts +25 -6
- package/src/metrics/send-event.ts +3 -0
- package/src/miniflare-cli/assets.ts +16 -9
- package/src/miniflare-cli/index.ts +19 -19
- package/src/module-collection.ts +9 -0
- package/src/pages/build.tsx +34 -2
- package/src/pages/constants.ts +4 -1
- package/src/pages/deployment-tails.tsx +284 -0
- package/src/pages/deployments.tsx +5 -27
- package/src/pages/dev.tsx +209 -58
- package/src/pages/errors.ts +48 -4
- package/src/pages/functions/buildPlugin.ts +83 -87
- package/src/pages/functions/buildWorker.ts +119 -110
- package/src/pages/functions/routes-transformation.ts +1 -14
- package/src/pages/functions/routes-validation.test.ts +403 -0
- package/src/pages/functions/routes-validation.ts +202 -0
- package/src/pages/functions.tsx +5 -19
- package/src/pages/index.tsx +8 -0
- package/src/pages/prompt-select-project.tsx +31 -0
- package/src/pages/publish.tsx +110 -94
- package/src/pages/types.ts +1 -9
- package/src/pages/upload.tsx +44 -16
- package/src/pages/utils.ts +13 -2
- package/src/paths.ts +30 -4
- package/src/proxy.ts +370 -167
- package/src/publish/index.ts +270 -0
- package/src/{publish.ts → publish/publish.ts} +258 -80
- package/src/pubsub/pubsub-commands.tsx +3 -2
- 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 +33 -0
- package/src/queues/cli/commands/list.ts +25 -0
- package/src/queues/client.ts +135 -0
- package/src/r2/constants.ts +4 -0
- package/src/{r2.ts → r2/helpers.ts} +2 -2
- package/src/r2/index.ts +289 -0
- package/src/routes.ts +140 -0
- package/src/secret/index.ts +378 -0
- package/src/sites.tsx +3 -3
- package/src/tail/createTail.ts +379 -0
- package/src/tail/index.ts +199 -300
- package/src/tail/printing.ts +2 -2
- package/src/type-generation.ts +173 -0
- package/src/user/access.ts +69 -0
- package/src/user/user.tsx +1 -0
- package/src/utils/collectKeyValues.ts +14 -0
- package/src/worker.ts +42 -1
- package/src/yargs-types.ts +24 -0
- package/src/zones.ts +33 -9
- package/templates/__tests__/pages-dev-util.test.ts +128 -0
- package/templates/d1-beta-facade.js +205 -0
- package/templates/{test-new-worker.js → init-tests/test-jest-new-worker.js} +0 -0
- package/templates/init-tests/test-vitest-new-worker.js +26 -0
- package/templates/middleware/middleware-scheduled.ts +2 -1
- package/templates/new-worker.js +1 -1
- package/templates/pages-dev-pipeline.ts +28 -0
- package/templates/pages-dev-util.ts +52 -0
- package/templates/pages-template-plugin.ts +4 -0
- package/templates/pages-template-worker.ts +21 -4
- package/templates/tsconfig.json +2 -1
- package/wrangler-dist/cli.d.ts +491 -6
- package/wrangler-dist/cli.js +131489 -123019
- package/src/__tests__/helpers/msw/handlers/index.ts +0 -13
- package/src/faye-websocket.d.ts +0 -6
- package/src/generate.ts +0 -131
- package/src/miniflare-cli/enum-keys.ts +0 -17
- package/src/preview.ts +0 -31
package/README.md
CHANGED
package/miniflare-dist/index.mjs
CHANGED
|
@@ -111,10 +111,10 @@ var require_mime = __commonJS({
|
|
|
111
111
|
}
|
|
112
112
|
});
|
|
113
113
|
|
|
114
|
-
// ../pages-shared/
|
|
114
|
+
// ../pages-shared/environment-polyfills/index.ts
|
|
115
115
|
var polyfill;
|
|
116
116
|
var init_environment_polyfills = __esm({
|
|
117
|
-
"../pages-shared/
|
|
117
|
+
"../pages-shared/environment-polyfills/index.ts"() {
|
|
118
118
|
polyfill = (environment) => {
|
|
119
119
|
Object.entries(environment).map(([name, value]) => {
|
|
120
120
|
Object.defineProperty(globalThis, name, {
|
|
@@ -128,7 +128,7 @@ var init_environment_polyfills = __esm({
|
|
|
128
128
|
}
|
|
129
129
|
});
|
|
130
130
|
|
|
131
|
-
// ../pages-shared/
|
|
131
|
+
// ../pages-shared/environment-polyfills/miniflare.ts
|
|
132
132
|
var miniflare_exports = {};
|
|
133
133
|
import {
|
|
134
134
|
fetch as miniflareFetch,
|
|
@@ -137,7 +137,7 @@ import {
|
|
|
137
137
|
Response as MiniflareResponse
|
|
138
138
|
} from "@miniflare/core";
|
|
139
139
|
var init_miniflare = __esm({
|
|
140
|
-
"../pages-shared/
|
|
140
|
+
"../pages-shared/environment-polyfills/miniflare.ts"() {
|
|
141
141
|
init_environment_polyfills();
|
|
142
142
|
polyfill({
|
|
143
143
|
fetch: miniflareFetch,
|
|
@@ -148,7 +148,7 @@ var init_miniflare = __esm({
|
|
|
148
148
|
}
|
|
149
149
|
});
|
|
150
150
|
|
|
151
|
-
// ../pages-shared/
|
|
151
|
+
// ../pages-shared/asset-server/responses.ts
|
|
152
152
|
function mergeHeaders(base, extra) {
|
|
153
153
|
base = new Headers(base ?? {});
|
|
154
154
|
extra = new Headers(extra ?? {});
|
|
@@ -159,7 +159,7 @@ function mergeHeaders(base, extra) {
|
|
|
159
159
|
}
|
|
160
160
|
var OkResponse, MovedPermanentlyResponse, FoundResponse, NotModifiedResponse, PermanentRedirectResponse, NotFoundResponse, MethodNotAllowedResponse, NotAcceptableResponse, InternalServerErrorResponse, SeeOtherResponse, TemporaryRedirectResponse;
|
|
161
161
|
var init_responses = __esm({
|
|
162
|
-
"../pages-shared/
|
|
162
|
+
"../pages-shared/asset-server/responses.ts"() {
|
|
163
163
|
OkResponse = class extends Response {
|
|
164
164
|
constructor(...[body, init]) {
|
|
165
165
|
super(body, {
|
|
@@ -278,10 +278,10 @@ ${err.stack}`;
|
|
|
278
278
|
}
|
|
279
279
|
});
|
|
280
280
|
|
|
281
|
-
// ../pages-shared/
|
|
281
|
+
// ../pages-shared/asset-server/rulesEngine.ts
|
|
282
282
|
var ESCAPE_REGEX_CHARACTERS, escapeRegex, HOST_PLACEHOLDER_REGEX, PLACEHOLDER_REGEX2, replacer, generateRulesMatcher;
|
|
283
283
|
var init_rulesEngine = __esm({
|
|
284
|
-
"../pages-shared/
|
|
284
|
+
"../pages-shared/asset-server/rulesEngine.ts"() {
|
|
285
285
|
ESCAPE_REGEX_CHARACTERS = /[-/\\^$*+?.()|[\]{}]/g;
|
|
286
286
|
escapeRegex = (str) => {
|
|
287
287
|
return str.replace(ESCAPE_REGEX_CHARACTERS, "\\$&");
|
|
@@ -329,7 +329,7 @@ var init_rulesEngine = __esm({
|
|
|
329
329
|
}
|
|
330
330
|
});
|
|
331
331
|
|
|
332
|
-
// ../pages-shared/
|
|
332
|
+
// ../pages-shared/asset-server/handler.ts
|
|
333
333
|
var handler_exports = {};
|
|
334
334
|
__export(handler_exports, {
|
|
335
335
|
ANALYTICS_VERSION: () => ANALYTICS_VERSION2,
|
|
@@ -491,34 +491,6 @@ async function generateHandler({
|
|
|
491
491
|
...Object.fromEntries(existingHeaders.entries()),
|
|
492
492
|
...Object.fromEntries(extraHeaders.entries())
|
|
493
493
|
});
|
|
494
|
-
const headersMatcher = generateRulesMatcher(
|
|
495
|
-
headerRules,
|
|
496
|
-
({ set = {}, unset = [] }, replacements) => {
|
|
497
|
-
const replacedSet = {};
|
|
498
|
-
Object.keys(set).forEach((key) => {
|
|
499
|
-
replacedSet[key] = replacer(set[key], replacements);
|
|
500
|
-
});
|
|
501
|
-
return {
|
|
502
|
-
set: replacedSet,
|
|
503
|
-
unset
|
|
504
|
-
};
|
|
505
|
-
}
|
|
506
|
-
);
|
|
507
|
-
const matches = headersMatcher({ request });
|
|
508
|
-
const setMap = /* @__PURE__ */ new Set();
|
|
509
|
-
matches.forEach(({ set = {}, unset = [] }) => {
|
|
510
|
-
Object.keys(set).forEach((key) => {
|
|
511
|
-
if (setMap.has(key.toLowerCase())) {
|
|
512
|
-
headers.append(key, set[key]);
|
|
513
|
-
} else {
|
|
514
|
-
headers.set(key, set[key]);
|
|
515
|
-
setMap.add(key.toLowerCase());
|
|
516
|
-
}
|
|
517
|
-
});
|
|
518
|
-
unset.forEach((key) => {
|
|
519
|
-
headers.delete(key);
|
|
520
|
-
});
|
|
521
|
-
});
|
|
522
494
|
if (earlyHintsCache) {
|
|
523
495
|
const preEarlyHintsHeaders = new Headers(headers);
|
|
524
496
|
const earlyHintsCacheKey = `${protocol}//${host}${pathname}`;
|
|
@@ -537,8 +509,15 @@ async function generateHandler({
|
|
|
537
509
|
(async () => {
|
|
538
510
|
try {
|
|
539
511
|
const links = [];
|
|
540
|
-
const transformedResponse = new HTMLRewriter().on("link[rel
|
|
512
|
+
const transformedResponse = new HTMLRewriter().on("link[rel~=preconnect],link[rel~=preload]", {
|
|
541
513
|
element(element) {
|
|
514
|
+
for (const [attributeName] of element.attributes) {
|
|
515
|
+
if (!ALLOWED_EARLY_HINT_LINK_ATTRIBUTES.includes(
|
|
516
|
+
attributeName.toLowerCase()
|
|
517
|
+
)) {
|
|
518
|
+
return;
|
|
519
|
+
}
|
|
520
|
+
}
|
|
542
521
|
const href = element.getAttribute("href") || void 0;
|
|
543
522
|
const rel = element.getAttribute("rel") || void 0;
|
|
544
523
|
const as = element.getAttribute("as") || void 0;
|
|
@@ -568,6 +547,34 @@ async function generateHandler({
|
|
|
568
547
|
);
|
|
569
548
|
}
|
|
570
549
|
}
|
|
550
|
+
const headersMatcher = generateRulesMatcher(
|
|
551
|
+
headerRules,
|
|
552
|
+
({ set = {}, unset = [] }, replacements) => {
|
|
553
|
+
const replacedSet = {};
|
|
554
|
+
Object.keys(set).forEach((key) => {
|
|
555
|
+
replacedSet[key] = replacer(set[key], replacements);
|
|
556
|
+
});
|
|
557
|
+
return {
|
|
558
|
+
set: replacedSet,
|
|
559
|
+
unset
|
|
560
|
+
};
|
|
561
|
+
}
|
|
562
|
+
);
|
|
563
|
+
const matches = headersMatcher({ request });
|
|
564
|
+
const setMap = /* @__PURE__ */ new Set();
|
|
565
|
+
matches.forEach(({ set = {}, unset = [] }) => {
|
|
566
|
+
unset.forEach((key) => {
|
|
567
|
+
headers.delete(key);
|
|
568
|
+
});
|
|
569
|
+
Object.keys(set).forEach((key) => {
|
|
570
|
+
if (setMap.has(key.toLowerCase())) {
|
|
571
|
+
headers.append(key, set[key]);
|
|
572
|
+
} else {
|
|
573
|
+
headers.set(key, set[key]);
|
|
574
|
+
setMap.add(key.toLowerCase());
|
|
575
|
+
}
|
|
576
|
+
});
|
|
577
|
+
});
|
|
571
578
|
return new Response(
|
|
572
579
|
[101, 204, 205, 304].includes(response.status) ? null : response.body,
|
|
573
580
|
{
|
|
@@ -716,9 +723,9 @@ function isPreview(url) {
|
|
|
716
723
|
}
|
|
717
724
|
return false;
|
|
718
725
|
}
|
|
719
|
-
var ASSET_PRESERVATION_CACHE, CACHE_CONTROL_PRESERVATION, CACHE_CONTROL_BROWSER, REDIRECTS_VERSION2, HEADERS_VERSION2, HEADERS_VERSION_V1, ANALYTICS_VERSION2;
|
|
726
|
+
var ASSET_PRESERVATION_CACHE, CACHE_CONTROL_PRESERVATION, CACHE_CONTROL_BROWSER, REDIRECTS_VERSION2, HEADERS_VERSION2, HEADERS_VERSION_V1, ANALYTICS_VERSION2, ALLOWED_EARLY_HINT_LINK_ATTRIBUTES;
|
|
720
727
|
var init_handler = __esm({
|
|
721
|
-
"../pages-shared/
|
|
728
|
+
"../pages-shared/asset-server/handler.ts"() {
|
|
722
729
|
init_responses();
|
|
723
730
|
init_rulesEngine();
|
|
724
731
|
ASSET_PRESERVATION_CACHE = "assetPreservationCache";
|
|
@@ -728,6 +735,7 @@ var init_handler = __esm({
|
|
|
728
735
|
HEADERS_VERSION2 = 2;
|
|
729
736
|
HEADERS_VERSION_V1 = 1;
|
|
730
737
|
ANALYTICS_VERSION2 = 1;
|
|
738
|
+
ALLOWED_EARLY_HINT_LINK_ATTRIBUTES = ["rel", "as", "href"];
|
|
731
739
|
}
|
|
732
740
|
});
|
|
733
741
|
|
|
@@ -738,11 +746,11 @@ import {
|
|
|
738
746
|
DurableObjectStub
|
|
739
747
|
} from "@miniflare/durable-objects";
|
|
740
748
|
import {
|
|
741
|
-
Log,
|
|
742
|
-
LogLevel,
|
|
749
|
+
Log as MiniflareLog,
|
|
750
|
+
LogLevel as MiniflareLogLevel,
|
|
743
751
|
Miniflare,
|
|
744
|
-
|
|
745
|
-
|
|
752
|
+
Request as MiniflareRequest3,
|
|
753
|
+
Response as MiniflareResponse3
|
|
746
754
|
} from "miniflare";
|
|
747
755
|
|
|
748
756
|
// ../../node_modules/yargs/lib/platform-shims/esm.mjs
|
|
@@ -5564,7 +5572,7 @@ var FatalError = class extends Error {
|
|
|
5564
5572
|
import { existsSync, lstatSync, readFileSync as readFileSync5 } from "node:fs";
|
|
5565
5573
|
import { join } from "node:path";
|
|
5566
5574
|
|
|
5567
|
-
// ../pages-shared/
|
|
5575
|
+
// ../pages-shared/metadata-generator/constants.ts
|
|
5568
5576
|
var REDIRECTS_VERSION = 1;
|
|
5569
5577
|
var HEADERS_VERSION = 2;
|
|
5570
5578
|
var ANALYTICS_VERSION = 1;
|
|
@@ -5578,12 +5586,13 @@ var UNSET_OPERATOR = "! ";
|
|
|
5578
5586
|
var SPLAT_REGEX = /\*/g;
|
|
5579
5587
|
var PLACEHOLDER_REGEX = /:\w+/g;
|
|
5580
5588
|
|
|
5581
|
-
// ../pages-shared/
|
|
5589
|
+
// ../pages-shared/metadata-generator/createMetadataObject.ts
|
|
5582
5590
|
function createMetadataObject({
|
|
5583
5591
|
redirects,
|
|
5584
5592
|
headers,
|
|
5585
5593
|
webAnalyticsToken,
|
|
5586
5594
|
deploymentId,
|
|
5595
|
+
failOpen,
|
|
5587
5596
|
logger = (_message) => {
|
|
5588
5597
|
}
|
|
5589
5598
|
}) {
|
|
@@ -5591,7 +5600,8 @@ function createMetadataObject({
|
|
|
5591
5600
|
...constructRedirects({ redirects, logger }),
|
|
5592
5601
|
...constructHeaders({ headers, logger }),
|
|
5593
5602
|
...constructWebAnalytics({ webAnalyticsToken, logger }),
|
|
5594
|
-
deploymentId
|
|
5603
|
+
deploymentId,
|
|
5604
|
+
failOpen
|
|
5595
5605
|
};
|
|
5596
5606
|
}
|
|
5597
5607
|
function constructRedirects({
|
|
@@ -5691,7 +5701,7 @@ function constructWebAnalytics({
|
|
|
5691
5701
|
};
|
|
5692
5702
|
}
|
|
5693
5703
|
|
|
5694
|
-
// ../pages-shared/
|
|
5704
|
+
// ../pages-shared/metadata-generator/validateURL.ts
|
|
5695
5705
|
var extractPathname = (path = "/", includeSearch, includeHash) => {
|
|
5696
5706
|
if (!path.startsWith("/"))
|
|
5697
5707
|
path = `/${path}`;
|
|
@@ -5734,7 +5744,7 @@ var validateUrl = (token, onlyRelative = false, includeSearch = false, includeHa
|
|
|
5734
5744
|
];
|
|
5735
5745
|
};
|
|
5736
5746
|
|
|
5737
|
-
// ../pages-shared/
|
|
5747
|
+
// ../pages-shared/metadata-generator/parseHeaders.ts
|
|
5738
5748
|
var LINE_IS_PROBABLY_A_PATH = new RegExp(/^([^\s]+:\/\/|^\/)/);
|
|
5739
5749
|
function parseHeaders(input) {
|
|
5740
5750
|
const lines = input.split("\n");
|
|
@@ -5869,7 +5879,7 @@ function isValidRule(rule) {
|
|
|
5869
5879
|
return Object.keys(rule.headers).length > 0 || rule.unsetHeaders.length > 0;
|
|
5870
5880
|
}
|
|
5871
5881
|
|
|
5872
|
-
// ../pages-shared/
|
|
5882
|
+
// ../pages-shared/metadata-generator/parseRedirects.ts
|
|
5873
5883
|
function parseRedirects(input) {
|
|
5874
5884
|
const lines = input.split("\n");
|
|
5875
5885
|
const rules = [];
|
|
@@ -6099,7 +6109,10 @@ async function generateAssetsFetch(directory, log) {
|
|
|
6099
6109
|
);
|
|
6100
6110
|
}
|
|
6101
6111
|
const body = readFileSync5(filepath);
|
|
6102
|
-
|
|
6112
|
+
let contentType = (0, import_mime.getType)(filepath) || "application/octet-stream";
|
|
6113
|
+
if (contentType.startsWith("text/") && !contentType.includes("charset")) {
|
|
6114
|
+
contentType = `${contentType}; charset=utf-8`;
|
|
6115
|
+
}
|
|
6103
6116
|
return { body, contentType };
|
|
6104
6117
|
}
|
|
6105
6118
|
});
|
|
@@ -6115,18 +6128,6 @@ var invalidAssetsFetch = () => {
|
|
|
6115
6128
|
);
|
|
6116
6129
|
};
|
|
6117
6130
|
|
|
6118
|
-
// src/miniflare-cli/enum-keys.ts
|
|
6119
|
-
var enumObject = (e) => {
|
|
6120
|
-
const copy = { ...e };
|
|
6121
|
-
Object.values(e).forEach(
|
|
6122
|
-
(value) => typeof value === "number" && delete copy[value]
|
|
6123
|
-
);
|
|
6124
|
-
return copy;
|
|
6125
|
-
};
|
|
6126
|
-
var enumKeys = (e) => {
|
|
6127
|
-
return Object.keys(enumObject(e));
|
|
6128
|
-
};
|
|
6129
|
-
|
|
6130
6131
|
// src/miniflare-cli/request-context.ts
|
|
6131
6132
|
var getRequestContextCheckOptions = async () => {
|
|
6132
6133
|
let hasAsyncLocalStorage = true;
|
|
@@ -6147,7 +6148,7 @@ var getRequestContextCheckOptions = async () => {
|
|
|
6147
6148
|
};
|
|
6148
6149
|
|
|
6149
6150
|
// src/miniflare-cli/index.ts
|
|
6150
|
-
var
|
|
6151
|
+
var MiniflareNoOpLog = class extends MiniflareLog {
|
|
6151
6152
|
log() {
|
|
6152
6153
|
}
|
|
6153
6154
|
error(message) {
|
|
@@ -6155,18 +6156,19 @@ var NoOpLog = class extends Log {
|
|
|
6155
6156
|
}
|
|
6156
6157
|
};
|
|
6157
6158
|
async function main() {
|
|
6158
|
-
const args = await yargs_default(hideBin(process.argv)).help(false).version(false).
|
|
6159
|
-
choices: enumKeys(LogLevel)
|
|
6160
|
-
}).argv;
|
|
6161
|
-
const logLevel = LogLevel[args.log ?? "INFO"];
|
|
6159
|
+
const args = await yargs_default(hideBin(process.argv)).help(false).version(false).argv;
|
|
6162
6160
|
const requestContextCheckOptions = await getRequestContextCheckOptions();
|
|
6163
6161
|
const config = {
|
|
6164
6162
|
...JSON.parse(args._[0] ?? "{}"),
|
|
6165
6163
|
...requestContextCheckOptions
|
|
6166
6164
|
};
|
|
6167
|
-
|
|
6168
|
-
if (
|
|
6169
|
-
|
|
6165
|
+
let logLevelString = config.logLevel.toUpperCase();
|
|
6166
|
+
if (logLevelString === "LOG")
|
|
6167
|
+
logLevelString = "INFO";
|
|
6168
|
+
const logLevel = MiniflareLogLevel[logLevelString];
|
|
6169
|
+
config.log = logLevel === MiniflareLogLevel.NONE ? new MiniflareNoOpLog() : new MiniflareLog(logLevel, config.logOptions);
|
|
6170
|
+
if (logLevel === MiniflareLogLevel.DEBUG) {
|
|
6171
|
+
console.log("MINIFLARE OPTIONS:\n", JSON.stringify(config, null, 2));
|
|
6170
6172
|
}
|
|
6171
6173
|
config.bindings = {
|
|
6172
6174
|
...config.bindings,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wrangler",
|
|
3
|
-
"version": "0.0.0-
|
|
3
|
+
"version": "0.0.0-afdb7e49",
|
|
4
4
|
"description": "Command-line interface for all things Cloudflare Workers",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"wrangler",
|
|
@@ -28,6 +28,11 @@
|
|
|
28
28
|
"bugs": {
|
|
29
29
|
"url": "https://github.com/cloudflare/wrangler2/issues"
|
|
30
30
|
},
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "https://github.com/cloudflare/wrangler2.git",
|
|
34
|
+
"directory": "packages/wrangler"
|
|
35
|
+
},
|
|
31
36
|
"license": "MIT OR Apache-2.0",
|
|
32
37
|
"author": "wrangler@cloudflare.com",
|
|
33
38
|
"main": "wrangler-dist/cli.js",
|
|
@@ -49,6 +54,7 @@
|
|
|
49
54
|
"Cloudflare_CA.pem"
|
|
50
55
|
],
|
|
51
56
|
"scripts": {
|
|
57
|
+
"assert-git-version": "node -r esbuild-register scripts/assert-git-version.ts",
|
|
52
58
|
"build": "npm run clean && npm run bundle && npm run emit-types",
|
|
53
59
|
"bundle": "node -r esbuild-register scripts/bundle.ts",
|
|
54
60
|
"check:type": "tsc",
|
|
@@ -57,7 +63,7 @@
|
|
|
57
63
|
"emit-types": "tsc -p tsconfig.emit.json && node -r esbuild-register scripts/emit-types.ts",
|
|
58
64
|
"prepublishOnly": "SOURCEMAPS=false npm run build",
|
|
59
65
|
"start": "npm run bundle && cross-env NODE_OPTIONS=--enable-source-maps ./bin/wrangler.js",
|
|
60
|
-
"test": "jest --silent=false --verbose=true",
|
|
66
|
+
"test": "npm run assert-git-version && jest --silent=false --verbose=true",
|
|
61
67
|
"test-watch": "npm run test -- --runInBand --testTimeout=50000 --watch",
|
|
62
68
|
"test:ci": "npm run test -- --verbose=true --coverage"
|
|
63
69
|
},
|
|
@@ -87,17 +93,20 @@
|
|
|
87
93
|
]
|
|
88
94
|
},
|
|
89
95
|
"transformIgnorePatterns": [
|
|
90
|
-
"node_modules/(?!find-up|locate-path|p-locate|p-limit|p-timeout|p-queue|yocto-queue|path-exists|execa|strip-final-newline|npm-run-path|path-key|onetime|mimic-fn|human-signals|is-stream|get-port|supports-color|pretty-bytes)"
|
|
96
|
+
"node_modules/(?!find-up|locate-path|p-locate|p-limit|p-timeout|p-queue|yocto-queue|path-exists|execa|strip-final-newline|npm-run-path|path-key|onetime|mimic-fn|human-signals|is-stream|get-port|supports-color|pretty-bytes|npx-import)"
|
|
91
97
|
]
|
|
92
98
|
},
|
|
93
99
|
"dependencies": {
|
|
94
100
|
"@cloudflare/kv-asset-handler": "^0.2.0",
|
|
95
101
|
"@esbuild-plugins/node-globals-polyfill": "^0.1.1",
|
|
96
102
|
"@esbuild-plugins/node-modules-polyfill": "^0.1.4",
|
|
103
|
+
"@miniflare/core": "2.10.0",
|
|
104
|
+
"@miniflare/d1": "2.10.0",
|
|
105
|
+
"@miniflare/durable-objects": "2.10.0",
|
|
97
106
|
"blake3-wasm": "^2.1.5",
|
|
98
107
|
"chokidar": "^3.5.3",
|
|
99
108
|
"esbuild": "0.14.51",
|
|
100
|
-
"miniflare": "
|
|
109
|
+
"miniflare": "2.10.0",
|
|
101
110
|
"nanoid": "^3.3.3",
|
|
102
111
|
"path-to-regexp": "^6.2.0",
|
|
103
112
|
"selfsigned": "^2.0.1",
|
|
@@ -105,12 +114,18 @@
|
|
|
105
114
|
"xxhash-wasm": "^1.0.1"
|
|
106
115
|
},
|
|
107
116
|
"devDependencies": {
|
|
117
|
+
"@cloudflare/types": "^6.18.4",
|
|
118
|
+
"@databases/split-sql-query": "^1.0.3",
|
|
119
|
+
"@databases/sql": "^3.2.0",
|
|
108
120
|
"@iarna/toml": "^3.0.0",
|
|
109
121
|
"@microsoft/api-extractor": "^7.28.3",
|
|
122
|
+
"@miniflare/tre": "^3.0.0-next.6",
|
|
123
|
+
"@types/better-sqlite3": "^7.6.0",
|
|
110
124
|
"@types/busboy": "^1.5.0",
|
|
111
125
|
"@types/command-exists": "^1.2.0",
|
|
112
126
|
"@types/express": "^4.17.13",
|
|
113
127
|
"@types/glob-to-regexp": "0.4.1",
|
|
128
|
+
"@types/javascript-time-ago": "^2.0.3",
|
|
114
129
|
"@types/mime": "^2.0.3",
|
|
115
130
|
"@types/prompts": "^2.0.14",
|
|
116
131
|
"@types/react": "^17.0.37",
|
|
@@ -121,17 +136,14 @@
|
|
|
121
136
|
"@types/yargs": "^17.0.10",
|
|
122
137
|
"@webcontainer/env": "^1.0.1",
|
|
123
138
|
"body-parser": "^1.20.0",
|
|
124
|
-
"busboy": "^1.6.0",
|
|
125
139
|
"clipboardy": "^3.0.0",
|
|
126
140
|
"cmd-shim": "^4.1.0",
|
|
127
141
|
"command-exists": "^1.2.9",
|
|
128
142
|
"concurrently": "^7.2.2",
|
|
129
|
-
"create-cloudflare": "^1.0.0",
|
|
130
143
|
"devtools-protocol": "^0.0.955664",
|
|
131
144
|
"dotenv": "^16.0.0",
|
|
132
145
|
"execa": "^6.1.0",
|
|
133
146
|
"express": "^4.18.1",
|
|
134
|
-
"faye-websocket": "^0.11.4",
|
|
135
147
|
"finalhandler": "^1.2.0",
|
|
136
148
|
"find-up": "^6.3.0",
|
|
137
149
|
"get-port": "^6.1.2",
|
|
@@ -145,23 +157,28 @@
|
|
|
145
157
|
"ink-testing-library": "^2.1.0",
|
|
146
158
|
"ink-text-input": "^4.0.3",
|
|
147
159
|
"is-ci": "^3.0.1",
|
|
160
|
+
"javascript-time-ago": "^2.5.4",
|
|
148
161
|
"jest-fetch-mock": "^3.0.3",
|
|
149
162
|
"jest-websocket-mock": "^2.3.0",
|
|
150
163
|
"mime": "^3.0.0",
|
|
164
|
+
"minimatch": "^5.1.0",
|
|
151
165
|
"msw": "^0.47.1",
|
|
166
|
+
"npx-import": "^1.1.3",
|
|
152
167
|
"open": "^8.4.0",
|
|
153
168
|
"p-queue": "^7.2.0",
|
|
154
169
|
"pretty-bytes": "^6.0.0",
|
|
155
170
|
"prompts": "^2.4.2",
|
|
156
171
|
"react": "^17.0.2",
|
|
157
172
|
"react-error-boundary": "^3.1.4",
|
|
173
|
+
"remove-accents-esm": "^0.0.1",
|
|
174
|
+
"semiver": "^1.1.0",
|
|
158
175
|
"serve-static": "^1.15.0",
|
|
159
176
|
"signal-exit": "^3.0.7",
|
|
160
177
|
"supports-color": "^9.2.2",
|
|
161
178
|
"timeago.js": "^4.0.2",
|
|
162
179
|
"tmp-promise": "^3.0.3",
|
|
163
180
|
"ts-dedent": "^2.2.0",
|
|
164
|
-
"undici": "^5.
|
|
181
|
+
"undici": "^5.11.0",
|
|
165
182
|
"update-check": "^1.5.4",
|
|
166
183
|
"ws": "^8.5.0",
|
|
167
184
|
"xdg-app-paths": "^7.3.0",
|
|
@@ -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
|
+
});
|
|
@@ -5,10 +5,10 @@ import { runInTempDir } from "./helpers/run-in-tmp";
|
|
|
5
5
|
|
|
6
6
|
jest.unmock("undici");
|
|
7
7
|
|
|
8
|
-
describe("unstable_dev", () => {
|
|
8
|
+
describe.skip("unstable_dev", () => {
|
|
9
9
|
it("should return Hello World", async () => {
|
|
10
10
|
const worker = await unstable_dev(
|
|
11
|
-
"src/__tests__/helpers/hello-world-worker.js",
|
|
11
|
+
"src/__tests__/helpers/worker-scripts/hello-world-worker.js",
|
|
12
12
|
{},
|
|
13
13
|
{ disableExperimentalWarning: true }
|
|
14
14
|
);
|
|
@@ -19,12 +19,32 @@ describe("unstable_dev", () => {
|
|
|
19
19
|
}
|
|
20
20
|
await worker.stop();
|
|
21
21
|
});
|
|
22
|
+
|
|
23
|
+
it("should return the port that the server started on (1)", async () => {
|
|
24
|
+
const worker = await unstable_dev(
|
|
25
|
+
"src/__tests__/helpers/worker-scripts/hello-world-worker.js",
|
|
26
|
+
{},
|
|
27
|
+
{ disableExperimentalWarning: true }
|
|
28
|
+
);
|
|
29
|
+
expect(worker.port).toBeGreaterThan(0);
|
|
30
|
+
await worker.stop();
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
it("should return the port that the server started on (2)", async () => {
|
|
34
|
+
const worker = await unstable_dev(
|
|
35
|
+
"src/__tests__/helpers/worker-scripts/hello-world-worker.js",
|
|
36
|
+
{ port: 9191 },
|
|
37
|
+
{ disableExperimentalWarning: true }
|
|
38
|
+
);
|
|
39
|
+
expect(worker.port).toBe(9191);
|
|
40
|
+
await worker.stop();
|
|
41
|
+
});
|
|
22
42
|
});
|
|
23
43
|
|
|
24
44
|
describe("unstable dev fetch input protocol", () => {
|
|
25
45
|
it("should use http localProtocol", async () => {
|
|
26
46
|
const worker = await unstable_dev(
|
|
27
|
-
"src/__tests__/helpers/hello-world-worker.js",
|
|
47
|
+
"src/__tests__/helpers/worker-scripts/hello-world-worker.js",
|
|
28
48
|
{ localProtocol: "http" },
|
|
29
49
|
{ disableExperimentalWarning: true }
|
|
30
50
|
);
|
|
@@ -38,7 +58,7 @@ describe("unstable dev fetch input protocol", () => {
|
|
|
38
58
|
|
|
39
59
|
it("should use undefined localProtocol", async () => {
|
|
40
60
|
const worker = await unstable_dev(
|
|
41
|
-
"src/__tests__/helpers/hello-world-worker.js",
|
|
61
|
+
"src/__tests__/helpers/worker-scripts/hello-world-worker.js",
|
|
42
62
|
{ localProtocol: undefined },
|
|
43
63
|
{ disableExperimentalWarning: true }
|
|
44
64
|
);
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { unstable_dev } from "../api";
|
|
2
|
+
import { fetch } from "undici";
|
|
3
|
+
|
|
4
|
+
// jest.unmock("undici");
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* a huge caveat to how testing multi-worker scripts works:
|
|
8
|
+
* you can't shutdown the first worker you spun up, or it'll kill the devRegistry
|
|
9
|
+
*/
|
|
10
|
+
describe.skip("multi-worker testing", () => {
|
|
11
|
+
let childWorker;
|
|
12
|
+
let parentWorker;
|
|
13
|
+
|
|
14
|
+
beforeAll(async () => {
|
|
15
|
+
childWorker = await unstable_dev(
|
|
16
|
+
"src/__tests__/helpers/worker-scripts/hello-world-worker.js",
|
|
17
|
+
{ config: "src/__tests__/helpers/worker-scripts/child-wrangler.toml" },
|
|
18
|
+
{ disableExperimentalWarning: true }
|
|
19
|
+
);
|
|
20
|
+
parentWorker = await unstable_dev(
|
|
21
|
+
"src/__tests__/helpers/worker-scripts/parent-worker.js",
|
|
22
|
+
{ config: "src/__tests__/helpers/worker-scripts/parent-wrangler.toml" },
|
|
23
|
+
{ disableExperimentalWarning: true }
|
|
24
|
+
);
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
afterAll(async () => {
|
|
28
|
+
await childWorker.stop();
|
|
29
|
+
await parentWorker.stop();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it("parentWorker and childWorker should be added devRegistry", async () => {
|
|
33
|
+
const resp = await fetch("http://localhost:6284/workers");
|
|
34
|
+
if (resp) {
|
|
35
|
+
const parsedResp = await resp.json();
|
|
36
|
+
expect(parsedResp.parent).toBeTruthy();
|
|
37
|
+
expect(parsedResp.child).toBeTruthy();
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it("childWorker should return Hello World itself", async () => {
|
|
42
|
+
const resp = await childWorker.fetch();
|
|
43
|
+
if (resp) {
|
|
44
|
+
const text = await resp.text();
|
|
45
|
+
expect(text).toMatchInlineSnapshot(`"Hello World!"`);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it("parentWorker should return Hello World by invoking the child worker", async () => {
|
|
50
|
+
const resp = await parentWorker.fetch();
|
|
51
|
+
if (resp) {
|
|
52
|
+
const parsedResp = await resp.text();
|
|
53
|
+
expect(parsedResp).toEqual("Parent worker sees: Hello World!");
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
});
|