wrangler 0.0.0-e6733a3 → 0.0.0-e6ada079
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.
Potentially problematic release.
This version of wrangler might be problematic. Click here for more details.
- package/README.md +47 -16
- package/bin/wrangler.js +94 -31
- package/config-schema.json +3100 -0
- package/kv-asset-handler.js +1 -0
- package/package.json +154 -82
- package/templates/__tests__/pages-dev-util.test.ts +128 -0
- package/templates/__tests__/tsconfig-sanity.ts +12 -0
- package/templates/__tests__/tsconfig.json +8 -0
- package/templates/checked-fetch.js +30 -0
- package/templates/facade.d.ts +19 -0
- package/templates/gitignore +170 -0
- package/templates/init-tests/test-jest-new-worker.js +23 -0
- package/templates/init-tests/test-vitest-new-worker.js +24 -0
- package/templates/init-tests/test-vitest-new-worker.ts +25 -0
- package/templates/middleware/common.ts +67 -0
- package/templates/middleware/loader-modules.ts +134 -0
- package/templates/middleware/loader-sw.ts +229 -0
- package/templates/middleware/middleware-ensure-req-body-drained.ts +18 -0
- package/templates/middleware/middleware-miniflare3-json-error.ts +32 -0
- package/templates/middleware/middleware-pretty-error.ts +40 -0
- package/templates/middleware/middleware-scheduled.ts +15 -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.js +17 -0
- package/templates/new-worker-scheduled.ts +32 -0
- package/templates/new-worker.js +15 -0
- package/templates/new-worker.ts +33 -0
- package/templates/no-op-worker.js +10 -0
- package/templates/pages-dev-pipeline.ts +32 -0
- package/templates/pages-dev-util.ts +55 -0
- package/templates/pages-shim.ts +9 -0
- package/templates/pages-template-plugin.ts +190 -0
- package/templates/pages-template-worker.ts +198 -0
- package/templates/startDevWorker/InspectorProxyWorker.ts +664 -0
- package/templates/startDevWorker/ProxyWorker.ts +334 -0
- package/templates/tsconfig-sanity.ts +11 -0
- package/templates/tsconfig.init.json +22 -0
- package/templates/tsconfig.json +8 -0
- package/wrangler-dist/InspectorProxyWorker.js +464 -0
- package/wrangler-dist/InspectorProxyWorker.js.map +6 -0
- package/wrangler-dist/ProxyWorker.js +240 -0
- package/wrangler-dist/ProxyWorker.js.map +6 -0
- package/wrangler-dist/cli.d.ts +26391 -0
- package/wrangler-dist/cli.js +204293 -116652
- 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/pages/functions/buildWorker.ts +0 -62
- package/pages/functions/filepath-routing.test.ts +0 -39
- package/pages/functions/filepath-routing.ts +0 -221
- package/pages/functions/identifiers.ts +0 -78
- package/pages/functions/routes.ts +0 -158
- package/pages/functions/template-worker.ts +0 -144
- package/src/__tests__/clipboardy-mock.js +0 -4
- package/src/__tests__/dev.test.tsx +0 -66
- package/src/__tests__/index.test.ts +0 -287
- package/src/__tests__/jest.setup.ts +0 -22
- package/src/__tests__/kv.test.ts +0 -1098
- package/src/__tests__/mock-cfetch.ts +0 -171
- package/src/__tests__/mock-dialogs.ts +0 -65
- package/src/__tests__/run-in-tmp.ts +0 -19
- package/src/__tests__/run-wrangler.ts +0 -32
- package/src/api/form_data.ts +0 -131
- package/src/api/preview.ts +0 -128
- package/src/api/worker.ts +0 -155
- package/src/cfetch/index.ts +0 -102
- package/src/cfetch/internal.ts +0 -69
- package/src/cli.ts +0 -9
- package/src/config.ts +0 -487
- package/src/dev.tsx +0 -771
- package/src/dialogs.tsx +0 -77
- package/src/index.tsx +0 -1974
- package/src/inspect.ts +0 -524
- package/src/kv.tsx +0 -267
- package/src/module-collection.ts +0 -64
- package/src/pages.tsx +0 -1031
- package/src/proxy.ts +0 -294
- package/src/publish.ts +0 -358
- package/src/sites.tsx +0 -114
- package/src/tail.tsx +0 -73
- package/src/user.tsx +0 -1025
- package/static-asset-facade.js +0 -47
- package/vendor/@cloudflare/kv-asset-handler/CHANGELOG.md +0 -332
- package/vendor/@cloudflare/kv-asset-handler/LICENSE_APACHE +0 -176
- package/vendor/@cloudflare/kv-asset-handler/LICENSE_MIT +0 -25
- package/vendor/@cloudflare/kv-asset-handler/README.md +0 -245
- package/vendor/@cloudflare/kv-asset-handler/dist/index.d.ts +0 -32
- package/vendor/@cloudflare/kv-asset-handler/dist/index.js +0 -354
- package/vendor/@cloudflare/kv-asset-handler/dist/mocks.d.ts +0 -13
- package/vendor/@cloudflare/kv-asset-handler/dist/mocks.js +0 -148
- package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.d.ts +0 -1
- package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.js +0 -436
- package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.d.ts +0 -1
- package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.js +0 -40
- package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.d.ts +0 -1
- package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.js +0 -42
- package/vendor/@cloudflare/kv-asset-handler/dist/types.d.ts +0 -26
- package/vendor/@cloudflare/kv-asset-handler/dist/types.js +0 -31
- package/vendor/@cloudflare/kv-asset-handler/package.json +0 -52
- package/vendor/@cloudflare/kv-asset-handler/src/index.ts +0 -296
- package/vendor/@cloudflare/kv-asset-handler/src/mocks.ts +0 -136
- package/vendor/@cloudflare/kv-asset-handler/src/test/getAssetFromKV.ts +0 -464
- package/vendor/@cloudflare/kv-asset-handler/src/test/mapRequestToAsset.ts +0 -33
- package/vendor/@cloudflare/kv-asset-handler/src/test/serveSinglePageApp.ts +0 -42
- package/vendor/@cloudflare/kv-asset-handler/src/types.ts +0 -39
- package/vendor/wrangler-mime/CHANGELOG.md +0 -289
- package/vendor/wrangler-mime/LICENSE +0 -21
- package/vendor/wrangler-mime/Mime.js +0 -97
- package/vendor/wrangler-mime/README.md +0 -187
- package/vendor/wrangler-mime/cli.js +0 -46
- package/vendor/wrangler-mime/index.js +0 -4
- package/vendor/wrangler-mime/lite.js +0 -4
- package/vendor/wrangler-mime/package.json +0 -52
- package/vendor/wrangler-mime/types/other.js +0 -1
- package/vendor/wrangler-mime/types/standard.js +0 -1
- package/wrangler-dist/cli.js.map +0 -7
@@ -0,0 +1 @@
|
|
1
|
+
export * from "@cloudflare/kv-asset-handler";
|
package/package.json
CHANGED
@@ -1,17 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "wrangler",
|
3
|
-
"version": "0.0.0-
|
4
|
-
"author": "wrangler@cloudflare.com",
|
3
|
+
"version": "0.0.0-e6ada079",
|
5
4
|
"description": "Command-line interface for all things Cloudflare Workers",
|
6
|
-
"bin": {
|
7
|
-
"wrangler": "./bin/wrangler.js",
|
8
|
-
"wrangler2": "./bin/wrangler.js"
|
9
|
-
},
|
10
|
-
"license": "MIT OR Apache-2.0",
|
11
|
-
"bugs": {
|
12
|
-
"url": "https://github.com/cloudflare/wrangler/issues"
|
13
|
-
},
|
14
|
-
"homepage": "https://github.com/cloudflare/wrangler#readme",
|
15
5
|
"keywords": [
|
16
6
|
"wrangler",
|
17
7
|
"cloudflare",
|
@@ -28,99 +18,181 @@
|
|
28
18
|
"webassembly",
|
29
19
|
"rust",
|
30
20
|
"emscripten",
|
31
|
-
"rust",
|
32
21
|
"typescript",
|
33
22
|
"graphql",
|
34
23
|
"router",
|
35
24
|
"http",
|
36
25
|
"cli"
|
37
26
|
],
|
27
|
+
"homepage": "https://github.com/cloudflare/workers-sdk#readme",
|
28
|
+
"bugs": {
|
29
|
+
"url": "https://github.com/cloudflare/workers-sdk/issues"
|
30
|
+
},
|
31
|
+
"repository": {
|
32
|
+
"type": "git",
|
33
|
+
"url": "https://github.com/cloudflare/workers-sdk.git",
|
34
|
+
"directory": "packages/wrangler"
|
35
|
+
},
|
36
|
+
"license": "MIT OR Apache-2.0",
|
37
|
+
"author": "wrangler@cloudflare.com",
|
38
|
+
"main": "wrangler-dist/cli.js",
|
39
|
+
"types": "wrangler-dist/cli.d.ts",
|
40
|
+
"bin": {
|
41
|
+
"wrangler": "./bin/wrangler.js",
|
42
|
+
"wrangler2": "./bin/wrangler.js"
|
43
|
+
},
|
44
|
+
"files": [
|
45
|
+
"bin",
|
46
|
+
"miniflare-dist",
|
47
|
+
"wrangler-dist",
|
48
|
+
"templates",
|
49
|
+
"kv-asset-handler.js",
|
50
|
+
"config-schema.json"
|
51
|
+
],
|
38
52
|
"dependencies": {
|
39
|
-
"esbuild": "0.
|
40
|
-
"
|
53
|
+
"@esbuild-plugins/node-globals-polyfill": "^0.2.3",
|
54
|
+
"@esbuild-plugins/node-modules-polyfill": "^0.2.2",
|
55
|
+
"blake3-wasm": "^2.1.5",
|
56
|
+
"chokidar": "^3.5.3",
|
57
|
+
"date-fns": "^3.6.0",
|
58
|
+
"esbuild": "0.17.19",
|
59
|
+
"nanoid": "^3.3.3",
|
41
60
|
"path-to-regexp": "^6.2.0",
|
42
|
-
"
|
43
|
-
|
44
|
-
|
45
|
-
"
|
61
|
+
"resolve": "^1.22.8",
|
62
|
+
"resolve.exports": "^2.0.2",
|
63
|
+
"selfsigned": "^2.0.1",
|
64
|
+
"source-map": "^0.6.1",
|
65
|
+
"unenv": "npm:unenv-nightly@1.10.0-1717606461.a117952",
|
66
|
+
"workerd": "1.20240718.0",
|
67
|
+
"xxhash-wasm": "^1.0.1",
|
68
|
+
"@cloudflare/kv-asset-handler": "0.3.4",
|
69
|
+
"miniflare": "3.20240718.0"
|
46
70
|
},
|
47
71
|
"devDependencies": {
|
48
|
-
"@
|
49
|
-
"@
|
50
|
-
"@
|
51
|
-
"@
|
52
|
-
"@
|
72
|
+
"@cloudflare/types": "^6.18.4",
|
73
|
+
"@cloudflare/workers-types": "^4.20240718.0",
|
74
|
+
"@cspotcode/source-map-support": "0.8.1",
|
75
|
+
"@iarna/toml": "^3.0.0",
|
76
|
+
"@microsoft/api-extractor": "^7.47.0",
|
77
|
+
"@sentry/node": "^7.86.0",
|
78
|
+
"@sentry/types": "^7.86.0",
|
79
|
+
"@sentry/utils": "^7.86.0",
|
80
|
+
"@types/body-parser": "^1.19.2",
|
81
|
+
"@types/command-exists": "^1.2.0",
|
82
|
+
"@types/express": "^4.17.13",
|
83
|
+
"@types/glob-to-regexp": "^0.4.1",
|
84
|
+
"@types/is-ci": "^3.0.0",
|
85
|
+
"@types/javascript-time-ago": "^2.0.3",
|
86
|
+
"@types/mime": "^3.0.4",
|
87
|
+
"@types/minimatch": "^5.1.2",
|
88
|
+
"@types/prompts": "^2.0.14",
|
89
|
+
"@types/react": "^18.2.21",
|
90
|
+
"@types/resolve": "^1.20.6",
|
53
91
|
"@types/serve-static": "^1.13.10",
|
92
|
+
"@types/shell-quote": "^1.7.2",
|
54
93
|
"@types/signal-exit": "^3.0.1",
|
55
|
-
"@types/
|
56
|
-
"@types/
|
57
|
-
"
|
58
|
-
"
|
59
|
-
"
|
94
|
+
"@types/supports-color": "^8.1.1",
|
95
|
+
"@types/ws": "^8.5.7",
|
96
|
+
"@types/yargs": "^17.0.22",
|
97
|
+
"@vitest/ui": "^1.6.0",
|
98
|
+
"@webcontainer/env": "^1.1.0",
|
99
|
+
"body-parser": "^1.20.0",
|
100
|
+
"chalk": "^5.2.0",
|
101
|
+
"cli-table3": "^0.6.3",
|
60
102
|
"clipboardy": "^3.0.0",
|
103
|
+
"cmd-shim": "^4.1.0",
|
61
104
|
"command-exists": "^1.2.9",
|
62
|
-
"
|
63
|
-
"
|
64
|
-
"
|
65
|
-
"
|
66
|
-
"
|
67
|
-
"
|
105
|
+
"concurrently": "^8.2.2",
|
106
|
+
"devtools-protocol": "^0.0.1182435",
|
107
|
+
"dotenv": "^16.0.0",
|
108
|
+
"es-module-lexer": "^1.3.0",
|
109
|
+
"execa": "^6.1.0",
|
110
|
+
"express": "^4.18.1",
|
111
|
+
"find-up": "^6.3.0",
|
112
|
+
"get-port": "^7.0.0",
|
113
|
+
"glob-to-regexp": "^0.4.1",
|
114
|
+
"http-terminator": "^3.2.0",
|
115
|
+
"https-proxy-agent": "7.0.2",
|
116
|
+
"ignore": "^5.2.0",
|
68
117
|
"ink": "^3.2.0",
|
69
118
|
"ink-select-input": "^4.2.1",
|
119
|
+
"ink-spinner": "^4.0.3",
|
70
120
|
"ink-table": "^3.0.0",
|
71
|
-
"
|
72
|
-
"
|
121
|
+
"is-ci": "^3.0.1",
|
122
|
+
"javascript-time-ago": "^2.5.4",
|
123
|
+
"md5-file": "5.0.0",
|
73
124
|
"mime": "^3.0.0",
|
74
|
-
"
|
125
|
+
"minimatch": "^5.1.0",
|
126
|
+
"mock-socket": "^9.3.1",
|
127
|
+
"msw": "^2.3.0",
|
75
128
|
"open": "^8.4.0",
|
76
|
-
"
|
129
|
+
"p-queue": "^7.2.0",
|
130
|
+
"patch-console": "^1.0.0",
|
131
|
+
"pretty-bytes": "^6.0.0",
|
132
|
+
"prompts": "^2.4.2",
|
133
|
+
"ps-list": "^8.1.1",
|
134
|
+
"react": "^18.2.0",
|
77
135
|
"react-error-boundary": "^3.1.4",
|
78
|
-
"
|
79
|
-
"
|
80
|
-
"
|
81
|
-
"
|
82
|
-
"
|
83
|
-
"
|
136
|
+
"semiver": "^1.1.0",
|
137
|
+
"serve-static": "^1.15.0",
|
138
|
+
"shell-quote": "^1.8.1",
|
139
|
+
"shellac": "^0.8.0",
|
140
|
+
"signal-exit": "^3.0.7",
|
141
|
+
"strip-ansi": "^7.1.0",
|
142
|
+
"supports-color": "^9.2.2",
|
143
|
+
"timeago.js": "^4.0.2",
|
144
|
+
"tree-kill": "^1.2.2",
|
145
|
+
"ts-dedent": "^2.2.0",
|
146
|
+
"ts-json-schema-generator": "^1.5.0",
|
147
|
+
"undici": "^5.28.4",
|
148
|
+
"update-check": "^1.5.4",
|
149
|
+
"vitest": "^1.6.0",
|
150
|
+
"vitest-websocket-mock": "^0.3.0",
|
151
|
+
"ws": "^8.17.1",
|
152
|
+
"xdg-app-paths": "^8.3.0",
|
153
|
+
"yargs": "^17.7.2",
|
154
|
+
"yoga-layout": "file:../../vendor/yoga-layout-2.0.0-beta.1.tgz",
|
155
|
+
"@cloudflare/cli": "1.1.1",
|
156
|
+
"@cloudflare/eslint-config-worker": "1.1.0",
|
157
|
+
"@cloudflare/pages-shared": "^0.11.48",
|
158
|
+
"@cloudflare/workers-tsconfig": "0.0.0"
|
84
159
|
},
|
85
|
-
"
|
86
|
-
"
|
87
|
-
|
88
|
-
|
89
|
-
"
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
"scripts": {
|
96
|
-
"clean": "rm -rf wrangler-dist",
|
97
|
-
"bundle": "node -r esbuild-register scripts/bundle.ts",
|
98
|
-
"build": "npm run clean && npm run bundle",
|
99
|
-
"start": "npm run bundle && NODE_OPTIONS=--enable-source-maps ./bin/wrangler.js",
|
100
|
-
"test": "CF_API_TOKEN=some-api-token CF_ACCOUNT_ID=some-account-id jest --silent=false --verbose=true"
|
160
|
+
"peerDependencies": {
|
161
|
+
"@cloudflare/workers-types": "^4.20240718.0"
|
162
|
+
},
|
163
|
+
"peerDependenciesMeta": {
|
164
|
+
"@cloudflare/workers-types": {
|
165
|
+
"optional": true
|
166
|
+
}
|
167
|
+
},
|
168
|
+
"optionalDependencies": {
|
169
|
+
"fsevents": "~2.3.2"
|
101
170
|
},
|
102
171
|
"engines": {
|
103
|
-
"node": ">=16.
|
172
|
+
"node": ">=16.17.0"
|
104
173
|
},
|
105
|
-
"
|
106
|
-
"
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
"
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
"
|
123
|
-
|
124
|
-
|
174
|
+
"volta": {
|
175
|
+
"extends": "../../package.json"
|
176
|
+
},
|
177
|
+
"workers-sdk": {
|
178
|
+
"prerelease": true
|
179
|
+
},
|
180
|
+
"scripts": {
|
181
|
+
"assert-git-version": "node -r esbuild-register scripts/assert-git-version.ts",
|
182
|
+
"build": "pnpm run clean && pnpm run bundle && pnpm run emit-types && pnpm run generate-json-schema",
|
183
|
+
"bundle": "node -r esbuild-register scripts/bundle.ts",
|
184
|
+
"check:lint": "eslint . --max-warnings=0",
|
185
|
+
"check:type": "tsc",
|
186
|
+
"clean": "rimraf wrangler-dist miniflare-dist emitted-types",
|
187
|
+
"dev": "pnpm run clean && concurrently -c black,blue --kill-others-on-fail false \"pnpm run bundle --watch\" \"pnpm run check:type --watch --preserveWatchOutput\"",
|
188
|
+
"emit-types": "tsc -p tsconfig.emit.json && node -r esbuild-register scripts/emit-types.ts",
|
189
|
+
"generate-json-schema": "pnpm exec ts-json-schema-generator --no-type-check --path src/config/config.ts --type RawConfig --out config-schema.json",
|
190
|
+
"start": "pnpm run bundle && cross-env NODE_OPTIONS=--enable-source-maps ./bin/wrangler.js",
|
191
|
+
"test": "pnpm run assert-git-version && vitest",
|
192
|
+
"test:ci": "pnpm run test run",
|
193
|
+
"test:debug": "pnpm run test --silent=false --verbose=true",
|
194
|
+
"test:e2e": "vitest -c ./e2e/vitest.config.mts",
|
195
|
+
"test:watch": "pnpm run test --testTimeout=50000 --watch",
|
196
|
+
"type:tests": "tsc -p ./src/__tests__/tsconfig.json && tsc -p ./e2e/tsconfig.json"
|
125
197
|
}
|
126
|
-
}
|
198
|
+
}
|
@@ -0,0 +1,128 @@
|
|
1
|
+
import { isRoutingRuleMatch } from "../pages-dev-util";
|
2
|
+
|
3
|
+
describe("isRoutingRuleMatch", () => {
|
4
|
+
it("should match rules referencing root level correctly", () => {
|
5
|
+
const routingRule = "/";
|
6
|
+
|
7
|
+
expect(isRoutingRuleMatch("/", routingRule)).toBeTruthy();
|
8
|
+
expect(isRoutingRuleMatch("/foo", routingRule)).toBeFalsy();
|
9
|
+
expect(isRoutingRuleMatch("/foo/", routingRule)).toBeFalsy();
|
10
|
+
expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeFalsy();
|
11
|
+
});
|
12
|
+
|
13
|
+
it("should match include-all rules correctly", () => {
|
14
|
+
const routingRule = "/*";
|
15
|
+
|
16
|
+
expect(isRoutingRuleMatch("/", routingRule)).toBeTruthy();
|
17
|
+
expect(isRoutingRuleMatch("/foo", routingRule)).toBeTruthy();
|
18
|
+
expect(isRoutingRuleMatch("/foo/", routingRule)).toBeTruthy();
|
19
|
+
expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeTruthy();
|
20
|
+
expect(isRoutingRuleMatch("/foo/bar/", routingRule)).toBeTruthy();
|
21
|
+
expect(isRoutingRuleMatch("/foo/bar/baz", routingRule)).toBeTruthy();
|
22
|
+
expect(isRoutingRuleMatch("/foo/bar/baz/", routingRule)).toBeTruthy();
|
23
|
+
});
|
24
|
+
|
25
|
+
it("should match `/*` suffix-ed rules correctly", () => {
|
26
|
+
let routingRule = "/foo/*";
|
27
|
+
|
28
|
+
expect(isRoutingRuleMatch("/foo", routingRule)).toBeTruthy();
|
29
|
+
expect(isRoutingRuleMatch("/foo/", routingRule)).toBeTruthy();
|
30
|
+
expect(isRoutingRuleMatch("/foobar", routingRule)).toBeFalsy();
|
31
|
+
expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeTruthy();
|
32
|
+
expect(isRoutingRuleMatch("/foo/bar/baz", routingRule)).toBeTruthy();
|
33
|
+
expect(isRoutingRuleMatch("/bar/foo", routingRule)).toBeFalsy();
|
34
|
+
expect(isRoutingRuleMatch("/bar/foo/baz", routingRule)).toBeFalsy();
|
35
|
+
|
36
|
+
routingRule = "/foo/bar/*";
|
37
|
+
|
38
|
+
expect(isRoutingRuleMatch("/foo", routingRule)).toBeFalsy();
|
39
|
+
expect(isRoutingRuleMatch("/foo/", routingRule)).toBeFalsy();
|
40
|
+
expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeTruthy();
|
41
|
+
expect(isRoutingRuleMatch("/foo/bar/baz", routingRule)).toBeTruthy();
|
42
|
+
expect(isRoutingRuleMatch("/foo/barfoo", routingRule)).toBeFalsy();
|
43
|
+
expect(isRoutingRuleMatch("baz/foo/bar", routingRule)).toBeFalsy();
|
44
|
+
expect(isRoutingRuleMatch("baz/foo/bar/", routingRule)).toBeFalsy();
|
45
|
+
});
|
46
|
+
|
47
|
+
it("should match `/` suffix-ed rules correctly", () => {
|
48
|
+
let routingRule = "/foo/";
|
49
|
+
expect(isRoutingRuleMatch("/foo/", routingRule)).toBeTruthy();
|
50
|
+
expect(isRoutingRuleMatch("/foo", routingRule)).toBeTruthy();
|
51
|
+
|
52
|
+
routingRule = "/foo/bar/";
|
53
|
+
expect(isRoutingRuleMatch("/foo/bar/", routingRule)).toBeTruthy();
|
54
|
+
expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeTruthy();
|
55
|
+
});
|
56
|
+
|
57
|
+
it("should match `*` suffix-ed rules correctly", () => {
|
58
|
+
let routingRule = "/foo*";
|
59
|
+
expect(isRoutingRuleMatch("/foo", routingRule)).toBeTruthy();
|
60
|
+
expect(isRoutingRuleMatch("/foo/", routingRule)).toBeTruthy();
|
61
|
+
expect(isRoutingRuleMatch("/foobar", routingRule)).toBeTruthy();
|
62
|
+
expect(isRoutingRuleMatch("/barfoo", routingRule)).toBeFalsy();
|
63
|
+
expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeTruthy();
|
64
|
+
expect(isRoutingRuleMatch("/bar/foo", routingRule)).toBeFalsy();
|
65
|
+
expect(isRoutingRuleMatch("/bar/foobar", routingRule)).toBeFalsy();
|
66
|
+
expect(isRoutingRuleMatch("/foo/bar/baz", routingRule)).toBeTruthy();
|
67
|
+
expect(isRoutingRuleMatch("/bar/foo/baz", routingRule)).toBeFalsy();
|
68
|
+
|
69
|
+
routingRule = "/foo/bar*";
|
70
|
+
expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeTruthy();
|
71
|
+
expect(isRoutingRuleMatch("/foo/bar/", routingRule)).toBeTruthy();
|
72
|
+
expect(isRoutingRuleMatch("/foo/barfoo", routingRule)).toBeTruthy();
|
73
|
+
expect(isRoutingRuleMatch("/bar/foo/barfoo", routingRule)).toBeFalsy();
|
74
|
+
expect(isRoutingRuleMatch("/foo/bar/baz", routingRule)).toBeTruthy();
|
75
|
+
expect(isRoutingRuleMatch("/bar/foo/bar/baz", routingRule)).toBeFalsy();
|
76
|
+
});
|
77
|
+
|
78
|
+
it("should match rules without wildcards correctly", () => {
|
79
|
+
let routingRule = "/foo";
|
80
|
+
|
81
|
+
expect(isRoutingRuleMatch("/foo", routingRule)).toBeTruthy();
|
82
|
+
expect(isRoutingRuleMatch("/foo/", routingRule)).toBeTruthy();
|
83
|
+
expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeFalsy();
|
84
|
+
expect(isRoutingRuleMatch("/bar/foo", routingRule)).toBeFalsy();
|
85
|
+
|
86
|
+
routingRule = "/foo/bar";
|
87
|
+
expect(isRoutingRuleMatch("/foo/bar", routingRule)).toBeTruthy();
|
88
|
+
expect(isRoutingRuleMatch("/foo/bar/", routingRule)).toBeTruthy();
|
89
|
+
expect(isRoutingRuleMatch("/foo/bar/baz", routingRule)).toBeFalsy();
|
90
|
+
expect(isRoutingRuleMatch("/baz/foo/bar", routingRule)).toBeFalsy();
|
91
|
+
});
|
92
|
+
|
93
|
+
it("should throw an error if pathname or routing rule params are missing", () => {
|
94
|
+
// MISSING PATHNAME
|
95
|
+
expect(() =>
|
96
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
97
|
+
// @ts-ignore: sanity check
|
98
|
+
isRoutingRuleMatch(undefined, "/*")
|
99
|
+
).toThrow("Pathname is undefined.");
|
100
|
+
|
101
|
+
expect(() =>
|
102
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
103
|
+
// @ts-ignore: sanity check
|
104
|
+
isRoutingRuleMatch(null, "/*")
|
105
|
+
).toThrow("Pathname is undefined.");
|
106
|
+
|
107
|
+
expect(() => isRoutingRuleMatch("", "/*")).toThrow(
|
108
|
+
"Pathname is undefined."
|
109
|
+
);
|
110
|
+
|
111
|
+
// MISSING ROUTING RULE
|
112
|
+
expect(() =>
|
113
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
114
|
+
// @ts-ignore: sanity check
|
115
|
+
isRoutingRuleMatch("/foo", undefined)
|
116
|
+
).toThrow("Routing rule is undefined.");
|
117
|
+
|
118
|
+
expect(() =>
|
119
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
120
|
+
// @ts-ignore: sanity check
|
121
|
+
isRoutingRuleMatch("/foo", null)
|
122
|
+
).toThrow("Routing rule is undefined.");
|
123
|
+
|
124
|
+
expect(() => isRoutingRuleMatch("/foo", "")).toThrow(
|
125
|
+
"Routing rule is undefined."
|
126
|
+
);
|
127
|
+
});
|
128
|
+
});
|
@@ -0,0 +1,12 @@
|
|
1
|
+
// `@types/node` should be included
|
2
|
+
Buffer.from("test");
|
3
|
+
|
4
|
+
// `@types/jest` should be included
|
5
|
+
test("test");
|
6
|
+
|
7
|
+
// @ts-expect-error `@cloudflare/workers-types` should NOT be included
|
8
|
+
const _handler: ExportedHandler = {};
|
9
|
+
// @ts-expect-error `@cloudflare/workers-types` should NOT be included
|
10
|
+
new HTMLRewriter();
|
11
|
+
|
12
|
+
export {};
|
@@ -0,0 +1,30 @@
|
|
1
|
+
const urls = new Set();
|
2
|
+
|
3
|
+
function checkURL(request, init) {
|
4
|
+
const url =
|
5
|
+
request instanceof URL
|
6
|
+
? request
|
7
|
+
: new URL(
|
8
|
+
(typeof request === "string"
|
9
|
+
? new Request(request, init)
|
10
|
+
: request
|
11
|
+
).url
|
12
|
+
);
|
13
|
+
if (url.port && url.port !== "443" && url.protocol === "https:") {
|
14
|
+
if (!urls.has(url.toString())) {
|
15
|
+
urls.add(url.toString());
|
16
|
+
console.warn(
|
17
|
+
`WARNING: known issue with \`fetch()\` requests to custom HTTPS ports in published Workers:\n` +
|
18
|
+
` - ${url.toString()} - the custom port will be ignored when the Worker is published using the \`wrangler deploy\` command.\n`
|
19
|
+
);
|
20
|
+
}
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
globalThis.fetch = new Proxy(globalThis.fetch, {
|
25
|
+
apply(target, thisArg, argArray) {
|
26
|
+
const [request, init] = argArray;
|
27
|
+
checkURL(request, init);
|
28
|
+
return Reflect.apply(target, thisArg, argArray);
|
29
|
+
},
|
30
|
+
});
|
@@ -0,0 +1,19 @@
|
|
1
|
+
declare module "__ENTRY_POINT__" {
|
2
|
+
import { Middleware } from "./middleware/common";
|
3
|
+
import { WorkerEntrypoint } from "cloudflare:workers";
|
4
|
+
|
5
|
+
export type WorkerEntrypointConstructor = typeof WorkerEntrypoint;
|
6
|
+
|
7
|
+
const worker: ExportedHandler | WorkerEntrypointConstructor;
|
8
|
+
export default worker;
|
9
|
+
export const __INTERNAL_WRANGLER_MIDDLEWARE__: Middleware[];
|
10
|
+
}
|
11
|
+
|
12
|
+
declare module "__KV_ASSET_HANDLER__" {
|
13
|
+
export * from "@cloudflare/kv-asset-handler";
|
14
|
+
}
|
15
|
+
|
16
|
+
declare module "__STATIC_CONTENT_MANIFEST" {
|
17
|
+
const manifest: string;
|
18
|
+
export default manifest;
|
19
|
+
}
|
@@ -0,0 +1,170 @@
|
|
1
|
+
# Logs
|
2
|
+
|
3
|
+
logs
|
4
|
+
_.log
|
5
|
+
npm-debug.log_
|
6
|
+
yarn-debug.log*
|
7
|
+
yarn-error.log*
|
8
|
+
lerna-debug.log*
|
9
|
+
.pnpm-debug.log*
|
10
|
+
|
11
|
+
# Diagnostic reports (https://nodejs.org/api/report.html)
|
12
|
+
|
13
|
+
report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json
|
14
|
+
|
15
|
+
# Runtime data
|
16
|
+
|
17
|
+
pids
|
18
|
+
_.pid
|
19
|
+
_.seed
|
20
|
+
\*.pid.lock
|
21
|
+
|
22
|
+
# Directory for instrumented libs generated by jscoverage/JSCover
|
23
|
+
|
24
|
+
lib-cov
|
25
|
+
|
26
|
+
# Coverage directory used by tools like istanbul
|
27
|
+
|
28
|
+
coverage
|
29
|
+
\*.lcov
|
30
|
+
|
31
|
+
# nyc test coverage
|
32
|
+
|
33
|
+
.nyc_output
|
34
|
+
|
35
|
+
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
36
|
+
|
37
|
+
.grunt
|
38
|
+
|
39
|
+
# Bower dependency directory (https://bower.io/)
|
40
|
+
|
41
|
+
bower_components
|
42
|
+
|
43
|
+
# node-waf configuration
|
44
|
+
|
45
|
+
.lock-wscript
|
46
|
+
|
47
|
+
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
48
|
+
|
49
|
+
build/Release
|
50
|
+
|
51
|
+
# Dependency directories
|
52
|
+
|
53
|
+
node_modules/
|
54
|
+
jspm_packages/
|
55
|
+
|
56
|
+
# Snowpack dependency directory (https://snowpack.dev/)
|
57
|
+
|
58
|
+
web_modules/
|
59
|
+
|
60
|
+
# TypeScript cache
|
61
|
+
|
62
|
+
\*.tsbuildinfo
|
63
|
+
|
64
|
+
# Optional npm cache directory
|
65
|
+
|
66
|
+
.npm
|
67
|
+
|
68
|
+
# Optional eslint cache
|
69
|
+
|
70
|
+
.eslintcache
|
71
|
+
|
72
|
+
# Optional stylelint cache
|
73
|
+
|
74
|
+
.stylelintcache
|
75
|
+
|
76
|
+
# Microbundle cache
|
77
|
+
|
78
|
+
.rpt2_cache/
|
79
|
+
.rts2_cache_cjs/
|
80
|
+
.rts2_cache_es/
|
81
|
+
.rts2_cache_umd/
|
82
|
+
|
83
|
+
# Optional REPL history
|
84
|
+
|
85
|
+
.node_repl_history
|
86
|
+
|
87
|
+
# Output of 'npm pack'
|
88
|
+
|
89
|
+
\*.tgz
|
90
|
+
|
91
|
+
# Yarn Integrity file
|
92
|
+
|
93
|
+
.yarn-integrity
|
94
|
+
|
95
|
+
# dotenv environment variable files
|
96
|
+
|
97
|
+
.env
|
98
|
+
.env.development.local
|
99
|
+
.env.test.local
|
100
|
+
.env.production.local
|
101
|
+
.env.local
|
102
|
+
|
103
|
+
# parcel-bundler cache (https://parceljs.org/)
|
104
|
+
|
105
|
+
.cache
|
106
|
+
.parcel-cache
|
107
|
+
|
108
|
+
# Next.js build output
|
109
|
+
|
110
|
+
.next
|
111
|
+
out
|
112
|
+
|
113
|
+
# Nuxt.js build / generate output
|
114
|
+
|
115
|
+
.nuxt
|
116
|
+
dist
|
117
|
+
|
118
|
+
# Gatsby files
|
119
|
+
|
120
|
+
.cache/
|
121
|
+
|
122
|
+
# Comment in the public line in if your project uses Gatsby and not Next.js
|
123
|
+
|
124
|
+
# https://nextjs.org/blog/next-9-1#public-directory-support
|
125
|
+
|
126
|
+
# public
|
127
|
+
|
128
|
+
# vuepress build output
|
129
|
+
|
130
|
+
.vuepress/dist
|
131
|
+
|
132
|
+
# vuepress v2.x temp and cache directory
|
133
|
+
|
134
|
+
.temp
|
135
|
+
.cache
|
136
|
+
|
137
|
+
# Docusaurus cache and generated files
|
138
|
+
|
139
|
+
.docusaurus
|
140
|
+
|
141
|
+
# Serverless directories
|
142
|
+
|
143
|
+
.serverless/
|
144
|
+
|
145
|
+
# FuseBox cache
|
146
|
+
|
147
|
+
.fusebox/
|
148
|
+
|
149
|
+
# DynamoDB Local files
|
150
|
+
|
151
|
+
.dynamodb/
|
152
|
+
|
153
|
+
# TernJS port file
|
154
|
+
|
155
|
+
.tern-port
|
156
|
+
|
157
|
+
# Stores VSCode versions used for testing VSCode extensions
|
158
|
+
|
159
|
+
.vscode-test
|
160
|
+
|
161
|
+
# yarn v2
|
162
|
+
|
163
|
+
.yarn/cache
|
164
|
+
.yarn/unplugged
|
165
|
+
.yarn/build-state.yml
|
166
|
+
.yarn/install-state.gz
|
167
|
+
.pnp.\*
|
168
|
+
|
169
|
+
.wrangler
|
170
|
+
.DS_Store
|
@@ -0,0 +1,23 @@
|
|
1
|
+
const { unstable_dev } = require("wrangler");
|
2
|
+
|
3
|
+
describe("Worker", () => {
|
4
|
+
let worker;
|
5
|
+
|
6
|
+
beforeAll(async () => {
|
7
|
+
worker = await unstable_dev("src/index.js", {
|
8
|
+
experimental: { disableExperimentalWarning: true },
|
9
|
+
});
|
10
|
+
});
|
11
|
+
|
12
|
+
afterAll(async () => {
|
13
|
+
await worker.stop();
|
14
|
+
});
|
15
|
+
|
16
|
+
it("should return Hello World", async () => {
|
17
|
+
const resp = await worker.fetch();
|
18
|
+
if (resp) {
|
19
|
+
const text = await resp.text();
|
20
|
+
expect(text).toMatchInlineSnapshot(`"Hello World!"`);
|
21
|
+
}
|
22
|
+
});
|
23
|
+
});
|