wrangler 0.0.0-e492c10 → 0.0.0-e4ca780f
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/Cloudflare_CA.pem +18 -0
- package/README.md +25 -5
- package/bin/wrangler.js +174 -34
- package/kv-asset-handler.js +1 -0
- package/miniflare-dist/index.mjs +1590 -81
- package/package.json +198 -149
- package/src/__tests__/access.test.ts +25 -0
- package/src/__tests__/api-dev.test.ts +238 -0
- package/src/__tests__/api-devregistry.test.ts +121 -0
- package/src/__tests__/api.test.ts +102 -0
- package/src/__tests__/config-cache-without-cache-dir.test.ts +38 -0
- package/src/__tests__/config-cache.test.ts +30 -24
- package/src/__tests__/configuration.test.ts +4498 -3114
- package/src/__tests__/d1/d1.test.ts +82 -0
- package/src/__tests__/d1/execute.test.ts +66 -0
- package/src/__tests__/d1/migrate.test.ts +157 -0
- package/src/__tests__/d1/splitter.test.ts +255 -0
- package/src/__tests__/delete.test.ts +272 -0
- package/src/__tests__/deployments.test.ts +369 -0
- package/src/__tests__/dev.test.tsx +1592 -802
- package/src/__tests__/generate.test.ts +237 -0
- package/src/__tests__/get-host-from-url.test.ts +16 -0
- package/src/__tests__/guess-worker-format.test.ts +103 -68
- package/src/__tests__/helpers/cmd-shim.d.ts +6 -6
- package/src/__tests__/helpers/end-event-loop.ts +6 -0
- package/src/__tests__/helpers/mock-account-id.ts +24 -24
- package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
- package/src/__tests__/helpers/mock-bin.ts +20 -20
- package/src/__tests__/helpers/mock-console.ts +64 -39
- package/src/__tests__/helpers/mock-dialogs.ts +104 -55
- package/src/__tests__/helpers/mock-get-pages-upload-token.ts +25 -0
- package/src/__tests__/helpers/mock-get-zone-from-host.ts +11 -0
- package/src/__tests__/helpers/mock-http-server.ts +30 -30
- package/src/__tests__/helpers/mock-istty.ts +65 -18
- package/src/__tests__/helpers/mock-known-routes.ts +12 -0
- package/src/__tests__/helpers/mock-kv.ts +41 -28
- package/src/__tests__/helpers/mock-oauth-flow.ts +241 -233
- package/src/__tests__/helpers/mock-process.ts +34 -0
- package/src/__tests__/helpers/mock-set-timeout.ts +16 -0
- package/src/__tests__/helpers/mock-stdin.ts +82 -77
- package/src/__tests__/helpers/mock-web-socket.ts +21 -21
- 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 +160 -0
- package/src/__tests__/helpers/msw/handlers/namespaces.ts +81 -0
- package/src/__tests__/helpers/msw/handlers/oauth.ts +31 -0
- package/src/__tests__/helpers/msw/handlers/r2.ts +60 -0
- package/src/__tests__/helpers/msw/handlers/script.ts +56 -0
- package/src/__tests__/helpers/msw/handlers/user.ts +52 -0
- package/src/__tests__/helpers/msw/handlers/zones.ts +20 -0
- package/src/__tests__/helpers/msw/index.ts +52 -0
- package/src/__tests__/helpers/msw/read-file-sync.js +61 -0
- package/src/__tests__/helpers/run-in-tmp.ts +27 -28
- package/src/__tests__/helpers/run-wrangler.ts +8 -8
- package/src/__tests__/helpers/string-dynamic-values-matcher.ts +28 -0
- package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +1 -0
- package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +5 -0
- package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +1 -0
- package/src/__tests__/helpers/worker-scripts/parent-worker.js +11 -0
- package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +5 -0
- package/src/__tests__/helpers/write-worker-source.ts +16 -16
- package/src/__tests__/helpers/write-wrangler-toml.ts +9 -9
- package/src/__tests__/https-options.test.ts +142 -109
- package/src/__tests__/index.test.ts +262 -224
- package/src/__tests__/init.test.ts +3168 -1488
- package/src/__tests__/jest.setup.ts +152 -50
- package/src/__tests__/kv.test.ts +1789 -1432
- package/src/__tests__/logger.test.ts +167 -75
- package/src/__tests__/logout.test.ts +47 -0
- package/src/__tests__/metrics.test.ts +493 -0
- package/src/__tests__/middleware.scheduled.test.ts +145 -0
- package/src/__tests__/middleware.test.ts +816 -0
- package/src/__tests__/mtls-certificates.test.ts +588 -0
- package/src/__tests__/package-manager.test.ts +312 -165
- package/src/__tests__/pages/deployment-list.test.ts +80 -0
- package/src/__tests__/pages/functions-build.test.ts +452 -0
- package/src/__tests__/pages/pages.test.ts +81 -0
- package/src/__tests__/pages/project-create.test.ts +63 -0
- package/src/__tests__/pages/project-list.test.ts +110 -0
- package/src/__tests__/pages/project-upload.test.ts +500 -0
- package/src/__tests__/pages/publish.test.ts +2864 -0
- package/src/__tests__/pages-deployment-tail.test.ts +955 -0
- package/src/__tests__/parse.test.ts +358 -248
- package/src/__tests__/paths.test.ts +39 -0
- package/src/__tests__/publish.test.ts +8322 -4847
- package/src/__tests__/pubsub.test.ts +496 -0
- package/src/__tests__/queues.test.ts +532 -0
- package/src/__tests__/r2.test.ts +369 -205
- package/src/__tests__/route.test.ts +18 -18
- package/src/__tests__/secret.test.ts +683 -436
- package/src/__tests__/tail.test.ts +835 -567
- package/src/__tests__/test-old-node-version.js +31 -0
- package/src/__tests__/traverse-module-graph.test.ts +220 -0
- package/src/__tests__/tsconfig-sanity.ts +12 -0
- package/src/__tests__/tsconfig.json +8 -0
- package/src/__tests__/tsconfig.tsbuildinfo +1 -0
- package/src/__tests__/type-generation.test.ts +234 -0
- package/src/__tests__/user.test.ts +107 -120
- package/src/__tests__/utils-collectKeyValues.test.ts +47 -0
- package/src/__tests__/validate-dev-props.test.ts +56 -0
- package/src/__tests__/version.test.ts +35 -0
- package/src/__tests__/whoami.test.tsx +165 -98
- package/src/__tests__/worker-namespace.test.ts +340 -0
- package/src/abort.d.ts +3 -0
- package/src/api/dev.ts +316 -0
- package/src/api/index.ts +11 -0
- package/src/api/mtls-certificate.ts +148 -0
- package/src/api/pages/create-worker-bundle-contents.ts +76 -0
- package/src/api/pages/index.ts +5 -0
- package/src/api/pages/publish.tsx +355 -0
- package/src/bundle-reporter.ts +68 -0
- package/src/bundle.ts +874 -135
- package/src/cfetch/index.ts +123 -69
- package/src/cfetch/internal.ts +217 -96
- package/src/cli.ts +23 -8
- package/src/config/config.ts +244 -196
- package/src/config/diagnostics.ts +61 -61
- package/src/config/environment.ts +563 -339
- package/src/config/index.ts +381 -41
- package/src/config/validation-helpers.ts +379 -357
- package/src/config/validation.ts +2181 -1263
- package/src/config-cache.ts +81 -41
- package/src/create-worker-preview.ts +250 -132
- package/src/create-worker-upload-form.ts +343 -224
- package/src/d1/backups.tsx +219 -0
- package/src/d1/constants.ts +2 -0
- package/src/d1/create.tsx +68 -0
- package/src/d1/delete.ts +53 -0
- package/src/d1/execute.tsx +357 -0
- package/src/d1/formatTimeAgo.ts +14 -0
- package/src/d1/index.ts +100 -0
- package/src/d1/list.tsx +60 -0
- package/src/d1/migrations/apply.tsx +212 -0
- package/src/d1/migrations/create.tsx +79 -0
- package/src/d1/migrations/helpers.ts +172 -0
- package/src/d1/migrations/index.ts +3 -0
- package/src/d1/migrations/list.tsx +95 -0
- package/src/d1/migrations/options.ts +23 -0
- package/src/d1/options.ts +22 -0
- package/src/d1/splitter.ts +161 -0
- package/src/d1/types.ts +25 -0
- package/src/d1/utils.ts +49 -0
- package/src/delete.ts +100 -0
- package/src/deployments.ts +368 -0
- package/src/deprecated/index.ts +144 -0
- package/src/dev/dev-vars.ts +20 -17
- package/src/dev/dev.tsx +535 -353
- package/src/dev/get-local-persistence-path.ts +31 -0
- package/src/dev/local.tsx +900 -292
- package/src/dev/remote.tsx +620 -201
- package/src/dev/start-server.ts +534 -0
- package/src/dev/use-esbuild.ts +182 -97
- package/src/dev/validate-dev-props.ts +40 -0
- package/src/dev-registry.ts +202 -0
- package/src/dev.tsx +929 -0
- package/src/dialogs.ts +136 -0
- package/src/dispatch-namespace.ts +211 -0
- package/src/docs/index.ts +97 -0
- package/src/durable.ts +102 -0
- package/src/entry.ts +259 -189
- package/src/environment-variables/factory.ts +88 -0
- package/src/environment-variables/misc-variables.ts +30 -0
- package/src/errors.ts +6 -6
- package/src/generate/index.ts +298 -0
- package/src/git-client.ts +135 -0
- package/src/global-wrangler-config-path.ts +26 -0
- package/src/https-options.ts +84 -80
- package/src/index.ts +758 -0
- package/src/init.ts +1032 -0
- package/src/inspect.ts +721 -562
- package/src/intl-polyfill.d.ts +123 -123
- package/src/is-ci.ts +14 -0
- package/src/is-interactive.ts +16 -0
- package/src/jest.d.ts +4 -0
- package/src/kv/helpers.ts +430 -0
- package/src/kv/index.ts +594 -0
- package/src/logger.ts +96 -43
- package/src/metrics/index.ts +5 -0
- package/src/metrics/metrics-config.ts +239 -0
- package/src/metrics/metrics-dispatcher.ts +96 -0
- package/src/metrics/metrics-usage-headers.ts +24 -0
- package/src/metrics/send-event.ts +99 -0
- package/src/miniflare-cli/assets.ts +251 -0
- package/src/miniflare-cli/index.ts +202 -33
- package/src/miniflare-cli/request-context.ts +18 -18
- 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/module-collection.ts +290 -215
- package/src/mtls-certificate/cli.ts +155 -0
- package/src/open-in-browser.ts +5 -14
- package/src/package-manager.ts +182 -90
- package/src/pages/build.ts +410 -0
- package/src/pages/buildFunctions.ts +140 -0
- package/src/pages/constants.ts +18 -0
- package/src/pages/deployment-tails.ts +281 -0
- package/src/pages/deployments.tsx +84 -0
- package/src/pages/dev.ts +716 -0
- package/src/pages/errors.ts +67 -0
- package/src/pages/functions/buildPlugin.ts +113 -0
- package/src/pages/functions/buildWorker.ts +291 -0
- package/{pages → src/pages}/functions/filepath-routing.test.ts +113 -113
- package/src/pages/functions/filepath-routing.ts +189 -0
- package/src/pages/functions/identifiers.ts +78 -0
- package/src/pages/functions/routes-consolidation.test.ts +250 -0
- package/src/pages/functions/routes-consolidation.ts +73 -0
- package/src/pages/functions/routes-transformation.test.ts +282 -0
- package/src/pages/functions/routes-transformation.ts +115 -0
- package/src/pages/functions/routes-validation.test.ts +403 -0
- package/src/pages/functions/routes-validation.ts +202 -0
- package/src/pages/functions/routes.ts +151 -0
- package/src/pages/functions/tsconfig.json +8 -0
- package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
- package/src/pages/functions.ts +86 -0
- package/src/pages/hash.ts +13 -0
- package/src/pages/index.ts +102 -0
- package/src/pages/projects.tsx +159 -0
- package/src/pages/prompt-select-project.tsx +31 -0
- package/src/pages/publish.tsx +267 -0
- package/src/pages/types.ts +46 -0
- package/src/pages/upload.tsx +469 -0
- package/src/pages/utils.ts +23 -0
- package/src/parse.ts +246 -123
- package/src/paths.ts +53 -8
- package/src/proxy.ts +628 -383
- package/src/publish/index.ts +274 -0
- package/src/publish/publish.ts +1060 -0
- package/src/pubsub/index.ts +286 -0
- package/src/pubsub/pubsub-commands.ts +623 -0
- package/src/queues/cli/commands/consumer/add.ts +71 -0
- package/src/queues/cli/commands/consumer/index.ts +19 -0
- package/src/queues/cli/commands/consumer/remove.ts +31 -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 +35 -0
- package/src/queues/cli/commands/list.ts +25 -0
- package/src/queues/client.ts +136 -0
- package/src/queues/utils.ts +18 -0
- package/src/r2/constants.ts +4 -0
- package/src/r2/helpers.ts +132 -0
- package/src/r2/index.ts +289 -0
- package/src/routes.ts +140 -0
- package/src/secret/index.ts +376 -0
- package/src/selfsigned.d.ts +23 -23
- package/src/sites.ts +372 -0
- package/src/tail/createTail.ts +406 -0
- package/src/tail/filters.ts +109 -111
- package/src/tail/index.ts +208 -296
- package/src/tail/printing.ts +101 -46
- package/src/traverse-module-graph.ts +53 -0
- package/src/tsconfig-sanity.ts +16 -0
- package/src/type-generation.ts +181 -0
- package/src/update-check.ts +11 -11
- package/src/user/access.ts +68 -0
- package/src/user/auth-variables.ts +113 -0
- package/src/user/choose-account.tsx +39 -0
- package/src/user/generate-auth-url.ts +33 -0
- package/src/user/generate-random-state.ts +16 -0
- package/src/user/index.ts +2 -0
- package/src/user/user.ts +1233 -0
- package/src/utils/collectKeyValues.ts +14 -0
- package/src/utils/render.ts +93 -0
- package/src/whoami.ts +135 -0
- package/src/worker.ts +203 -101
- package/src/yargs-types.ts +37 -0
- package/src/zones.ts +191 -0
- 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/__tests__/tsconfig.tsbuildinfo +1 -0
- package/templates/checked-fetch.js +23 -0
- package/templates/d1-beta-facade.js +244 -0
- package/templates/facade.d.ts +14 -0
- package/templates/first-party-worker-module-facade.ts +19 -0
- package/templates/format-dev-errors.ts +34 -0
- package/templates/gitignore +1 -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 +62 -0
- package/templates/middleware/loader-modules.ts +84 -0
- package/templates/middleware/loader-sw.ts +233 -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/new-worker-scheduled.js +17 -0
- package/templates/new-worker-scheduled.ts +32 -0
- package/templates/new-worker.js +3 -3
- package/templates/new-worker.ts +21 -3
- package/templates/no-op-worker.js +10 -0
- package/templates/pages-dev-pipeline.ts +31 -0
- package/templates/pages-dev-util.ts +52 -0
- package/templates/pages-shim.ts +12 -0
- package/templates/pages-template-plugin.ts +180 -0
- package/templates/pages-template-worker.ts +189 -0
- package/templates/serve-static-assets.ts +66 -0
- package/templates/service-bindings-module-facade.js +55 -0
- package/templates/service-bindings-sw-facade.js +42 -0
- package/templates/tsconfig-sanity.ts +11 -0
- package/templates/tsconfig.init.json +105 -0
- package/templates/tsconfig.json +6 -103
- package/templates/tsconfig.tsbuildinfo +1 -0
- package/wrangler-dist/cli.d.ts +1641 -0
- package/wrangler-dist/cli.js +129145 -89350
- package/wrangler-dist/wasm-sync.wasm +0 -0
- package/pages/functions/buildPlugin.ts +0 -92
- package/pages/functions/buildWorker.ts +0 -138
- package/pages/functions/filepath-routing.ts +0 -189
- package/pages/functions/identifiers.ts +0 -78
- package/pages/functions/routes.ts +0 -156
- package/pages/functions/template-plugin.ts +0 -146
- package/pages/functions/template-worker.ts +0 -143
- package/src/__tests__/helpers/faye-websocket.d.ts +0 -6
- package/src/__tests__/helpers/mock-cfetch.ts +0 -211
- package/src/__tests__/pages.test.ts +0 -327
- package/src/dialogs.tsx +0 -87
- package/src/environment-variables.ts +0 -35
- package/src/index.tsx +0 -2698
- package/src/kv.ts +0 -319
- package/src/miniflare-cli/enum-keys.ts +0 -17
- package/src/pages.tsx +0 -1875
- package/src/publish.ts +0 -469
- package/src/r2.ts +0 -50
- package/src/sites.tsx +0 -293
- package/src/user.tsx +0 -1203
- package/src/whoami.tsx +0 -70
- package/templates/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/miniflare-dist/index.mjs
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
1
7
|
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
8
|
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
9
|
}) : x)(function(x) {
|
|
@@ -5,14 +11,791 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
5
11
|
return require.apply(this, arguments);
|
|
6
12
|
throw new Error('Dynamic require of "' + x + '" is not supported');
|
|
7
13
|
});
|
|
14
|
+
var __esm = (fn, res) => function __init() {
|
|
15
|
+
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
16
|
+
};
|
|
17
|
+
var __commonJS = (cb, mod) => function __require2() {
|
|
18
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
19
|
+
};
|
|
20
|
+
var __export = (target, all) => {
|
|
21
|
+
for (var name in all)
|
|
22
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
23
|
+
};
|
|
24
|
+
var __copyProps = (to, from, except, desc) => {
|
|
25
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
26
|
+
for (let key of __getOwnPropNames(from))
|
|
27
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
28
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
29
|
+
}
|
|
30
|
+
return to;
|
|
31
|
+
};
|
|
32
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
33
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
34
|
+
mod
|
|
35
|
+
));
|
|
36
|
+
|
|
37
|
+
// ../../node_modules/mime/Mime.js
|
|
38
|
+
var require_Mime = __commonJS({
|
|
39
|
+
"../../node_modules/mime/Mime.js"(exports, module) {
|
|
40
|
+
"use strict";
|
|
41
|
+
function Mime() {
|
|
42
|
+
this._types = /* @__PURE__ */ Object.create(null);
|
|
43
|
+
this._extensions = /* @__PURE__ */ Object.create(null);
|
|
44
|
+
for (let i = 0; i < arguments.length; i++) {
|
|
45
|
+
this.define(arguments[i]);
|
|
46
|
+
}
|
|
47
|
+
this.define = this.define.bind(this);
|
|
48
|
+
this.getType = this.getType.bind(this);
|
|
49
|
+
this.getExtension = this.getExtension.bind(this);
|
|
50
|
+
}
|
|
51
|
+
Mime.prototype.define = function(typeMap, force) {
|
|
52
|
+
for (let type in typeMap) {
|
|
53
|
+
let extensions = typeMap[type].map(function(t) {
|
|
54
|
+
return t.toLowerCase();
|
|
55
|
+
});
|
|
56
|
+
type = type.toLowerCase();
|
|
57
|
+
for (let i = 0; i < extensions.length; i++) {
|
|
58
|
+
const ext = extensions[i];
|
|
59
|
+
if (ext[0] === "*") {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (!force && ext in this._types) {
|
|
63
|
+
throw new Error(
|
|
64
|
+
'Attempt to change mapping for "' + ext + '" extension from "' + this._types[ext] + '" to "' + type + '". Pass `force=true` to allow this, otherwise remove "' + ext + '" from the list of extensions for "' + type + '".'
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
this._types[ext] = type;
|
|
68
|
+
}
|
|
69
|
+
if (force || !this._extensions[type]) {
|
|
70
|
+
const ext = extensions[0];
|
|
71
|
+
this._extensions[type] = ext[0] !== "*" ? ext : ext.substr(1);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
Mime.prototype.getType = function(path) {
|
|
76
|
+
path = String(path);
|
|
77
|
+
let last = path.replace(/^.*[/\\]/, "").toLowerCase();
|
|
78
|
+
let ext = last.replace(/^.*\./, "").toLowerCase();
|
|
79
|
+
let hasPath = last.length < path.length;
|
|
80
|
+
let hasDot = ext.length < last.length - 1;
|
|
81
|
+
return (hasDot || !hasPath) && this._types[ext] || null;
|
|
82
|
+
};
|
|
83
|
+
Mime.prototype.getExtension = function(type) {
|
|
84
|
+
type = /^\s*([^;\s]*)/.test(type) && RegExp.$1;
|
|
85
|
+
return type && this._extensions[type.toLowerCase()] || null;
|
|
86
|
+
};
|
|
87
|
+
module.exports = Mime;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
// ../../node_modules/mime/types/standard.js
|
|
92
|
+
var require_standard = __commonJS({
|
|
93
|
+
"../../node_modules/mime/types/standard.js"(exports, module) {
|
|
94
|
+
module.exports = { "application/andrew-inset": ["ez"], "application/applixware": ["aw"], "application/atom+xml": ["atom"], "application/atomcat+xml": ["atomcat"], "application/atomdeleted+xml": ["atomdeleted"], "application/atomsvc+xml": ["atomsvc"], "application/atsc-dwd+xml": ["dwd"], "application/atsc-held+xml": ["held"], "application/atsc-rsat+xml": ["rsat"], "application/bdoc": ["bdoc"], "application/calendar+xml": ["xcs"], "application/ccxml+xml": ["ccxml"], "application/cdfx+xml": ["cdfx"], "application/cdmi-capability": ["cdmia"], "application/cdmi-container": ["cdmic"], "application/cdmi-domain": ["cdmid"], "application/cdmi-object": ["cdmio"], "application/cdmi-queue": ["cdmiq"], "application/cu-seeme": ["cu"], "application/dash+xml": ["mpd"], "application/davmount+xml": ["davmount"], "application/docbook+xml": ["dbk"], "application/dssc+der": ["dssc"], "application/dssc+xml": ["xdssc"], "application/ecmascript": ["es", "ecma"], "application/emma+xml": ["emma"], "application/emotionml+xml": ["emotionml"], "application/epub+zip": ["epub"], "application/exi": ["exi"], "application/express": ["exp"], "application/fdt+xml": ["fdt"], "application/font-tdpfr": ["pfr"], "application/geo+json": ["geojson"], "application/gml+xml": ["gml"], "application/gpx+xml": ["gpx"], "application/gxf": ["gxf"], "application/gzip": ["gz"], "application/hjson": ["hjson"], "application/hyperstudio": ["stk"], "application/inkml+xml": ["ink", "inkml"], "application/ipfix": ["ipfix"], "application/its+xml": ["its"], "application/java-archive": ["jar", "war", "ear"], "application/java-serialized-object": ["ser"], "application/java-vm": ["class"], "application/javascript": ["js", "mjs"], "application/json": ["json", "map"], "application/json5": ["json5"], "application/jsonml+json": ["jsonml"], "application/ld+json": ["jsonld"], "application/lgr+xml": ["lgr"], "application/lost+xml": ["lostxml"], "application/mac-binhex40": ["hqx"], "application/mac-compactpro": ["cpt"], "application/mads+xml": ["mads"], "application/manifest+json": ["webmanifest"], "application/marc": ["mrc"], "application/marcxml+xml": ["mrcx"], "application/mathematica": ["ma", "nb", "mb"], "application/mathml+xml": ["mathml"], "application/mbox": ["mbox"], "application/mediaservercontrol+xml": ["mscml"], "application/metalink+xml": ["metalink"], "application/metalink4+xml": ["meta4"], "application/mets+xml": ["mets"], "application/mmt-aei+xml": ["maei"], "application/mmt-usd+xml": ["musd"], "application/mods+xml": ["mods"], "application/mp21": ["m21", "mp21"], "application/mp4": ["mp4s", "m4p"], "application/msword": ["doc", "dot"], "application/mxf": ["mxf"], "application/n-quads": ["nq"], "application/n-triples": ["nt"], "application/node": ["cjs"], "application/octet-stream": ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"], "application/oda": ["oda"], "application/oebps-package+xml": ["opf"], "application/ogg": ["ogx"], "application/omdoc+xml": ["omdoc"], "application/onenote": ["onetoc", "onetoc2", "onetmp", "onepkg"], "application/oxps": ["oxps"], "application/p2p-overlay+xml": ["relo"], "application/patch-ops-error+xml": ["xer"], "application/pdf": ["pdf"], "application/pgp-encrypted": ["pgp"], "application/pgp-signature": ["asc", "sig"], "application/pics-rules": ["prf"], "application/pkcs10": ["p10"], "application/pkcs7-mime": ["p7m", "p7c"], "application/pkcs7-signature": ["p7s"], "application/pkcs8": ["p8"], "application/pkix-attr-cert": ["ac"], "application/pkix-cert": ["cer"], "application/pkix-crl": ["crl"], "application/pkix-pkipath": ["pkipath"], "application/pkixcmp": ["pki"], "application/pls+xml": ["pls"], "application/postscript": ["ai", "eps", "ps"], "application/provenance+xml": ["provx"], "application/pskc+xml": ["pskcxml"], "application/raml+yaml": ["raml"], "application/rdf+xml": ["rdf", "owl"], "application/reginfo+xml": ["rif"], "application/relax-ng-compact-syntax": ["rnc"], "application/resource-lists+xml": ["rl"], "application/resource-lists-diff+xml": ["rld"], "application/rls-services+xml": ["rs"], "application/route-apd+xml": ["rapd"], "application/route-s-tsid+xml": ["sls"], "application/route-usd+xml": ["rusd"], "application/rpki-ghostbusters": ["gbr"], "application/rpki-manifest": ["mft"], "application/rpki-roa": ["roa"], "application/rsd+xml": ["rsd"], "application/rss+xml": ["rss"], "application/rtf": ["rtf"], "application/sbml+xml": ["sbml"], "application/scvp-cv-request": ["scq"], "application/scvp-cv-response": ["scs"], "application/scvp-vp-request": ["spq"], "application/scvp-vp-response": ["spp"], "application/sdp": ["sdp"], "application/senml+xml": ["senmlx"], "application/sensml+xml": ["sensmlx"], "application/set-payment-initiation": ["setpay"], "application/set-registration-initiation": ["setreg"], "application/shf+xml": ["shf"], "application/sieve": ["siv", "sieve"], "application/smil+xml": ["smi", "smil"], "application/sparql-query": ["rq"], "application/sparql-results+xml": ["srx"], "application/srgs": ["gram"], "application/srgs+xml": ["grxml"], "application/sru+xml": ["sru"], "application/ssdl+xml": ["ssdl"], "application/ssml+xml": ["ssml"], "application/swid+xml": ["swidtag"], "application/tei+xml": ["tei", "teicorpus"], "application/thraud+xml": ["tfi"], "application/timestamped-data": ["tsd"], "application/toml": ["toml"], "application/trig": ["trig"], "application/ttml+xml": ["ttml"], "application/ubjson": ["ubj"], "application/urc-ressheet+xml": ["rsheet"], "application/urc-targetdesc+xml": ["td"], "application/voicexml+xml": ["vxml"], "application/wasm": ["wasm"], "application/widget": ["wgt"], "application/winhlp": ["hlp"], "application/wsdl+xml": ["wsdl"], "application/wspolicy+xml": ["wspolicy"], "application/xaml+xml": ["xaml"], "application/xcap-att+xml": ["xav"], "application/xcap-caps+xml": ["xca"], "application/xcap-diff+xml": ["xdf"], "application/xcap-el+xml": ["xel"], "application/xcap-ns+xml": ["xns"], "application/xenc+xml": ["xenc"], "application/xhtml+xml": ["xhtml", "xht"], "application/xliff+xml": ["xlf"], "application/xml": ["xml", "xsl", "xsd", "rng"], "application/xml-dtd": ["dtd"], "application/xop+xml": ["xop"], "application/xproc+xml": ["xpl"], "application/xslt+xml": ["*xsl", "xslt"], "application/xspf+xml": ["xspf"], "application/xv+xml": ["mxml", "xhvml", "xvml", "xvm"], "application/yang": ["yang"], "application/yin+xml": ["yin"], "application/zip": ["zip"], "audio/3gpp": ["*3gpp"], "audio/adpcm": ["adp"], "audio/amr": ["amr"], "audio/basic": ["au", "snd"], "audio/midi": ["mid", "midi", "kar", "rmi"], "audio/mobile-xmf": ["mxmf"], "audio/mp3": ["*mp3"], "audio/mp4": ["m4a", "mp4a"], "audio/mpeg": ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"], "audio/ogg": ["oga", "ogg", "spx", "opus"], "audio/s3m": ["s3m"], "audio/silk": ["sil"], "audio/wav": ["wav"], "audio/wave": ["*wav"], "audio/webm": ["weba"], "audio/xm": ["xm"], "font/collection": ["ttc"], "font/otf": ["otf"], "font/ttf": ["ttf"], "font/woff": ["woff"], "font/woff2": ["woff2"], "image/aces": ["exr"], "image/apng": ["apng"], "image/avif": ["avif"], "image/bmp": ["bmp"], "image/cgm": ["cgm"], "image/dicom-rle": ["drle"], "image/emf": ["emf"], "image/fits": ["fits"], "image/g3fax": ["g3"], "image/gif": ["gif"], "image/heic": ["heic"], "image/heic-sequence": ["heics"], "image/heif": ["heif"], "image/heif-sequence": ["heifs"], "image/hej2k": ["hej2"], "image/hsj2": ["hsj2"], "image/ief": ["ief"], "image/jls": ["jls"], "image/jp2": ["jp2", "jpg2"], "image/jpeg": ["jpeg", "jpg", "jpe"], "image/jph": ["jph"], "image/jphc": ["jhc"], "image/jpm": ["jpm"], "image/jpx": ["jpx", "jpf"], "image/jxr": ["jxr"], "image/jxra": ["jxra"], "image/jxrs": ["jxrs"], "image/jxs": ["jxs"], "image/jxsc": ["jxsc"], "image/jxsi": ["jxsi"], "image/jxss": ["jxss"], "image/ktx": ["ktx"], "image/ktx2": ["ktx2"], "image/png": ["png"], "image/sgi": ["sgi"], "image/svg+xml": ["svg", "svgz"], "image/t38": ["t38"], "image/tiff": ["tif", "tiff"], "image/tiff-fx": ["tfx"], "image/webp": ["webp"], "image/wmf": ["wmf"], "message/disposition-notification": ["disposition-notification"], "message/global": ["u8msg"], "message/global-delivery-status": ["u8dsn"], "message/global-disposition-notification": ["u8mdn"], "message/global-headers": ["u8hdr"], "message/rfc822": ["eml", "mime"], "model/3mf": ["3mf"], "model/gltf+json": ["gltf"], "model/gltf-binary": ["glb"], "model/iges": ["igs", "iges"], "model/mesh": ["msh", "mesh", "silo"], "model/mtl": ["mtl"], "model/obj": ["obj"], "model/step+xml": ["stpx"], "model/step+zip": ["stpz"], "model/step-xml+zip": ["stpxz"], "model/stl": ["stl"], "model/vrml": ["wrl", "vrml"], "model/x3d+binary": ["*x3db", "x3dbz"], "model/x3d+fastinfoset": ["x3db"], "model/x3d+vrml": ["*x3dv", "x3dvz"], "model/x3d+xml": ["x3d", "x3dz"], "model/x3d-vrml": ["x3dv"], "text/cache-manifest": ["appcache", "manifest"], "text/calendar": ["ics", "ifb"], "text/coffeescript": ["coffee", "litcoffee"], "text/css": ["css"], "text/csv": ["csv"], "text/html": ["html", "htm", "shtml"], "text/jade": ["jade"], "text/jsx": ["jsx"], "text/less": ["less"], "text/markdown": ["markdown", "md"], "text/mathml": ["mml"], "text/mdx": ["mdx"], "text/n3": ["n3"], "text/plain": ["txt", "text", "conf", "def", "list", "log", "in", "ini"], "text/richtext": ["rtx"], "text/rtf": ["*rtf"], "text/sgml": ["sgml", "sgm"], "text/shex": ["shex"], "text/slim": ["slim", "slm"], "text/spdx": ["spdx"], "text/stylus": ["stylus", "styl"], "text/tab-separated-values": ["tsv"], "text/troff": ["t", "tr", "roff", "man", "me", "ms"], "text/turtle": ["ttl"], "text/uri-list": ["uri", "uris", "urls"], "text/vcard": ["vcard"], "text/vtt": ["vtt"], "text/xml": ["*xml"], "text/yaml": ["yaml", "yml"], "video/3gpp": ["3gp", "3gpp"], "video/3gpp2": ["3g2"], "video/h261": ["h261"], "video/h263": ["h263"], "video/h264": ["h264"], "video/iso.segment": ["m4s"], "video/jpeg": ["jpgv"], "video/jpm": ["*jpm", "jpgm"], "video/mj2": ["mj2", "mjp2"], "video/mp2t": ["ts"], "video/mp4": ["mp4", "mp4v", "mpg4"], "video/mpeg": ["mpeg", "mpg", "mpe", "m1v", "m2v"], "video/ogg": ["ogv"], "video/quicktime": ["qt", "mov"], "video/webm": ["webm"] };
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
// ../../node_modules/mime/types/other.js
|
|
99
|
+
var require_other = __commonJS({
|
|
100
|
+
"../../node_modules/mime/types/other.js"(exports, module) {
|
|
101
|
+
module.exports = { "application/prs.cww": ["cww"], "application/vnd.1000minds.decision-model+xml": ["1km"], "application/vnd.3gpp.pic-bw-large": ["plb"], "application/vnd.3gpp.pic-bw-small": ["psb"], "application/vnd.3gpp.pic-bw-var": ["pvb"], "application/vnd.3gpp2.tcap": ["tcap"], "application/vnd.3m.post-it-notes": ["pwn"], "application/vnd.accpac.simply.aso": ["aso"], "application/vnd.accpac.simply.imp": ["imp"], "application/vnd.acucobol": ["acu"], "application/vnd.acucorp": ["atc", "acutc"], "application/vnd.adobe.air-application-installer-package+zip": ["air"], "application/vnd.adobe.formscentral.fcdt": ["fcdt"], "application/vnd.adobe.fxp": ["fxp", "fxpl"], "application/vnd.adobe.xdp+xml": ["xdp"], "application/vnd.adobe.xfdf": ["xfdf"], "application/vnd.ahead.space": ["ahead"], "application/vnd.airzip.filesecure.azf": ["azf"], "application/vnd.airzip.filesecure.azs": ["azs"], "application/vnd.amazon.ebook": ["azw"], "application/vnd.americandynamics.acc": ["acc"], "application/vnd.amiga.ami": ["ami"], "application/vnd.android.package-archive": ["apk"], "application/vnd.anser-web-certificate-issue-initiation": ["cii"], "application/vnd.anser-web-funds-transfer-initiation": ["fti"], "application/vnd.antix.game-component": ["atx"], "application/vnd.apple.installer+xml": ["mpkg"], "application/vnd.apple.keynote": ["key"], "application/vnd.apple.mpegurl": ["m3u8"], "application/vnd.apple.numbers": ["numbers"], "application/vnd.apple.pages": ["pages"], "application/vnd.apple.pkpass": ["pkpass"], "application/vnd.aristanetworks.swi": ["swi"], "application/vnd.astraea-software.iota": ["iota"], "application/vnd.audiograph": ["aep"], "application/vnd.balsamiq.bmml+xml": ["bmml"], "application/vnd.blueice.multipass": ["mpm"], "application/vnd.bmi": ["bmi"], "application/vnd.businessobjects": ["rep"], "application/vnd.chemdraw+xml": ["cdxml"], "application/vnd.chipnuts.karaoke-mmd": ["mmd"], "application/vnd.cinderella": ["cdy"], "application/vnd.citationstyles.style+xml": ["csl"], "application/vnd.claymore": ["cla"], "application/vnd.cloanto.rp9": ["rp9"], "application/vnd.clonk.c4group": ["c4g", "c4d", "c4f", "c4p", "c4u"], "application/vnd.cluetrust.cartomobile-config": ["c11amc"], "application/vnd.cluetrust.cartomobile-config-pkg": ["c11amz"], "application/vnd.commonspace": ["csp"], "application/vnd.contact.cmsg": ["cdbcmsg"], "application/vnd.cosmocaller": ["cmc"], "application/vnd.crick.clicker": ["clkx"], "application/vnd.crick.clicker.keyboard": ["clkk"], "application/vnd.crick.clicker.palette": ["clkp"], "application/vnd.crick.clicker.template": ["clkt"], "application/vnd.crick.clicker.wordbank": ["clkw"], "application/vnd.criticaltools.wbs+xml": ["wbs"], "application/vnd.ctc-posml": ["pml"], "application/vnd.cups-ppd": ["ppd"], "application/vnd.curl.car": ["car"], "application/vnd.curl.pcurl": ["pcurl"], "application/vnd.dart": ["dart"], "application/vnd.data-vision.rdz": ["rdz"], "application/vnd.dbf": ["dbf"], "application/vnd.dece.data": ["uvf", "uvvf", "uvd", "uvvd"], "application/vnd.dece.ttml+xml": ["uvt", "uvvt"], "application/vnd.dece.unspecified": ["uvx", "uvvx"], "application/vnd.dece.zip": ["uvz", "uvvz"], "application/vnd.denovo.fcselayout-link": ["fe_launch"], "application/vnd.dna": ["dna"], "application/vnd.dolby.mlp": ["mlp"], "application/vnd.dpgraph": ["dpg"], "application/vnd.dreamfactory": ["dfac"], "application/vnd.ds-keypoint": ["kpxx"], "application/vnd.dvb.ait": ["ait"], "application/vnd.dvb.service": ["svc"], "application/vnd.dynageo": ["geo"], "application/vnd.ecowin.chart": ["mag"], "application/vnd.enliven": ["nml"], "application/vnd.epson.esf": ["esf"], "application/vnd.epson.msf": ["msf"], "application/vnd.epson.quickanime": ["qam"], "application/vnd.epson.salt": ["slt"], "application/vnd.epson.ssf": ["ssf"], "application/vnd.eszigno3+xml": ["es3", "et3"], "application/vnd.ezpix-album": ["ez2"], "application/vnd.ezpix-package": ["ez3"], "application/vnd.fdf": ["fdf"], "application/vnd.fdsn.mseed": ["mseed"], "application/vnd.fdsn.seed": ["seed", "dataless"], "application/vnd.flographit": ["gph"], "application/vnd.fluxtime.clip": ["ftc"], "application/vnd.framemaker": ["fm", "frame", "maker", "book"], "application/vnd.frogans.fnc": ["fnc"], "application/vnd.frogans.ltf": ["ltf"], "application/vnd.fsc.weblaunch": ["fsc"], "application/vnd.fujitsu.oasys": ["oas"], "application/vnd.fujitsu.oasys2": ["oa2"], "application/vnd.fujitsu.oasys3": ["oa3"], "application/vnd.fujitsu.oasysgp": ["fg5"], "application/vnd.fujitsu.oasysprs": ["bh2"], "application/vnd.fujixerox.ddd": ["ddd"], "application/vnd.fujixerox.docuworks": ["xdw"], "application/vnd.fujixerox.docuworks.binder": ["xbd"], "application/vnd.fuzzysheet": ["fzs"], "application/vnd.genomatix.tuxedo": ["txd"], "application/vnd.geogebra.file": ["ggb"], "application/vnd.geogebra.tool": ["ggt"], "application/vnd.geometry-explorer": ["gex", "gre"], "application/vnd.geonext": ["gxt"], "application/vnd.geoplan": ["g2w"], "application/vnd.geospace": ["g3w"], "application/vnd.gmx": ["gmx"], "application/vnd.google-apps.document": ["gdoc"], "application/vnd.google-apps.presentation": ["gslides"], "application/vnd.google-apps.spreadsheet": ["gsheet"], "application/vnd.google-earth.kml+xml": ["kml"], "application/vnd.google-earth.kmz": ["kmz"], "application/vnd.grafeq": ["gqf", "gqs"], "application/vnd.groove-account": ["gac"], "application/vnd.groove-help": ["ghf"], "application/vnd.groove-identity-message": ["gim"], "application/vnd.groove-injector": ["grv"], "application/vnd.groove-tool-message": ["gtm"], "application/vnd.groove-tool-template": ["tpl"], "application/vnd.groove-vcard": ["vcg"], "application/vnd.hal+xml": ["hal"], "application/vnd.handheld-entertainment+xml": ["zmm"], "application/vnd.hbci": ["hbci"], "application/vnd.hhe.lesson-player": ["les"], "application/vnd.hp-hpgl": ["hpgl"], "application/vnd.hp-hpid": ["hpid"], "application/vnd.hp-hps": ["hps"], "application/vnd.hp-jlyt": ["jlt"], "application/vnd.hp-pcl": ["pcl"], "application/vnd.hp-pclxl": ["pclxl"], "application/vnd.hydrostatix.sof-data": ["sfd-hdstx"], "application/vnd.ibm.minipay": ["mpy"], "application/vnd.ibm.modcap": ["afp", "listafp", "list3820"], "application/vnd.ibm.rights-management": ["irm"], "application/vnd.ibm.secure-container": ["sc"], "application/vnd.iccprofile": ["icc", "icm"], "application/vnd.igloader": ["igl"], "application/vnd.immervision-ivp": ["ivp"], "application/vnd.immervision-ivu": ["ivu"], "application/vnd.insors.igm": ["igm"], "application/vnd.intercon.formnet": ["xpw", "xpx"], "application/vnd.intergeo": ["i2g"], "application/vnd.intu.qbo": ["qbo"], "application/vnd.intu.qfx": ["qfx"], "application/vnd.ipunplugged.rcprofile": ["rcprofile"], "application/vnd.irepository.package+xml": ["irp"], "application/vnd.is-xpr": ["xpr"], "application/vnd.isac.fcs": ["fcs"], "application/vnd.jam": ["jam"], "application/vnd.jcp.javame.midlet-rms": ["rms"], "application/vnd.jisp": ["jisp"], "application/vnd.joost.joda-archive": ["joda"], "application/vnd.kahootz": ["ktz", "ktr"], "application/vnd.kde.karbon": ["karbon"], "application/vnd.kde.kchart": ["chrt"], "application/vnd.kde.kformula": ["kfo"], "application/vnd.kde.kivio": ["flw"], "application/vnd.kde.kontour": ["kon"], "application/vnd.kde.kpresenter": ["kpr", "kpt"], "application/vnd.kde.kspread": ["ksp"], "application/vnd.kde.kword": ["kwd", "kwt"], "application/vnd.kenameaapp": ["htke"], "application/vnd.kidspiration": ["kia"], "application/vnd.kinar": ["kne", "knp"], "application/vnd.koan": ["skp", "skd", "skt", "skm"], "application/vnd.kodak-descriptor": ["sse"], "application/vnd.las.las+xml": ["lasxml"], "application/vnd.llamagraphics.life-balance.desktop": ["lbd"], "application/vnd.llamagraphics.life-balance.exchange+xml": ["lbe"], "application/vnd.lotus-1-2-3": ["123"], "application/vnd.lotus-approach": ["apr"], "application/vnd.lotus-freelance": ["pre"], "application/vnd.lotus-notes": ["nsf"], "application/vnd.lotus-organizer": ["org"], "application/vnd.lotus-screencam": ["scm"], "application/vnd.lotus-wordpro": ["lwp"], "application/vnd.macports.portpkg": ["portpkg"], "application/vnd.mapbox-vector-tile": ["mvt"], "application/vnd.mcd": ["mcd"], "application/vnd.medcalcdata": ["mc1"], "application/vnd.mediastation.cdkey": ["cdkey"], "application/vnd.mfer": ["mwf"], "application/vnd.mfmp": ["mfm"], "application/vnd.micrografx.flo": ["flo"], "application/vnd.micrografx.igx": ["igx"], "application/vnd.mif": ["mif"], "application/vnd.mobius.daf": ["daf"], "application/vnd.mobius.dis": ["dis"], "application/vnd.mobius.mbk": ["mbk"], "application/vnd.mobius.mqy": ["mqy"], "application/vnd.mobius.msl": ["msl"], "application/vnd.mobius.plc": ["plc"], "application/vnd.mobius.txf": ["txf"], "application/vnd.mophun.application": ["mpn"], "application/vnd.mophun.certificate": ["mpc"], "application/vnd.mozilla.xul+xml": ["xul"], "application/vnd.ms-artgalry": ["cil"], "application/vnd.ms-cab-compressed": ["cab"], "application/vnd.ms-excel": ["xls", "xlm", "xla", "xlc", "xlt", "xlw"], "application/vnd.ms-excel.addin.macroenabled.12": ["xlam"], "application/vnd.ms-excel.sheet.binary.macroenabled.12": ["xlsb"], "application/vnd.ms-excel.sheet.macroenabled.12": ["xlsm"], "application/vnd.ms-excel.template.macroenabled.12": ["xltm"], "application/vnd.ms-fontobject": ["eot"], "application/vnd.ms-htmlhelp": ["chm"], "application/vnd.ms-ims": ["ims"], "application/vnd.ms-lrm": ["lrm"], "application/vnd.ms-officetheme": ["thmx"], "application/vnd.ms-outlook": ["msg"], "application/vnd.ms-pki.seccat": ["cat"], "application/vnd.ms-pki.stl": ["*stl"], "application/vnd.ms-powerpoint": ["ppt", "pps", "pot"], "application/vnd.ms-powerpoint.addin.macroenabled.12": ["ppam"], "application/vnd.ms-powerpoint.presentation.macroenabled.12": ["pptm"], "application/vnd.ms-powerpoint.slide.macroenabled.12": ["sldm"], "application/vnd.ms-powerpoint.slideshow.macroenabled.12": ["ppsm"], "application/vnd.ms-powerpoint.template.macroenabled.12": ["potm"], "application/vnd.ms-project": ["mpp", "mpt"], "application/vnd.ms-word.document.macroenabled.12": ["docm"], "application/vnd.ms-word.template.macroenabled.12": ["dotm"], "application/vnd.ms-works": ["wps", "wks", "wcm", "wdb"], "application/vnd.ms-wpl": ["wpl"], "application/vnd.ms-xpsdocument": ["xps"], "application/vnd.mseq": ["mseq"], "application/vnd.musician": ["mus"], "application/vnd.muvee.style": ["msty"], "application/vnd.mynfc": ["taglet"], "application/vnd.neurolanguage.nlu": ["nlu"], "application/vnd.nitf": ["ntf", "nitf"], "application/vnd.noblenet-directory": ["nnd"], "application/vnd.noblenet-sealer": ["nns"], "application/vnd.noblenet-web": ["nnw"], "application/vnd.nokia.n-gage.ac+xml": ["*ac"], "application/vnd.nokia.n-gage.data": ["ngdat"], "application/vnd.nokia.n-gage.symbian.install": ["n-gage"], "application/vnd.nokia.radio-preset": ["rpst"], "application/vnd.nokia.radio-presets": ["rpss"], "application/vnd.novadigm.edm": ["edm"], "application/vnd.novadigm.edx": ["edx"], "application/vnd.novadigm.ext": ["ext"], "application/vnd.oasis.opendocument.chart": ["odc"], "application/vnd.oasis.opendocument.chart-template": ["otc"], "application/vnd.oasis.opendocument.database": ["odb"], "application/vnd.oasis.opendocument.formula": ["odf"], "application/vnd.oasis.opendocument.formula-template": ["odft"], "application/vnd.oasis.opendocument.graphics": ["odg"], "application/vnd.oasis.opendocument.graphics-template": ["otg"], "application/vnd.oasis.opendocument.image": ["odi"], "application/vnd.oasis.opendocument.image-template": ["oti"], "application/vnd.oasis.opendocument.presentation": ["odp"], "application/vnd.oasis.opendocument.presentation-template": ["otp"], "application/vnd.oasis.opendocument.spreadsheet": ["ods"], "application/vnd.oasis.opendocument.spreadsheet-template": ["ots"], "application/vnd.oasis.opendocument.text": ["odt"], "application/vnd.oasis.opendocument.text-master": ["odm"], "application/vnd.oasis.opendocument.text-template": ["ott"], "application/vnd.oasis.opendocument.text-web": ["oth"], "application/vnd.olpc-sugar": ["xo"], "application/vnd.oma.dd2+xml": ["dd2"], "application/vnd.openblox.game+xml": ["obgx"], "application/vnd.openofficeorg.extension": ["oxt"], "application/vnd.openstreetmap.data+xml": ["osm"], "application/vnd.openxmlformats-officedocument.presentationml.presentation": ["pptx"], "application/vnd.openxmlformats-officedocument.presentationml.slide": ["sldx"], "application/vnd.openxmlformats-officedocument.presentationml.slideshow": ["ppsx"], "application/vnd.openxmlformats-officedocument.presentationml.template": ["potx"], "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": ["xlsx"], "application/vnd.openxmlformats-officedocument.spreadsheetml.template": ["xltx"], "application/vnd.openxmlformats-officedocument.wordprocessingml.document": ["docx"], "application/vnd.openxmlformats-officedocument.wordprocessingml.template": ["dotx"], "application/vnd.osgeo.mapguide.package": ["mgp"], "application/vnd.osgi.dp": ["dp"], "application/vnd.osgi.subsystem": ["esa"], "application/vnd.palm": ["pdb", "pqa", "oprc"], "application/vnd.pawaafile": ["paw"], "application/vnd.pg.format": ["str"], "application/vnd.pg.osasli": ["ei6"], "application/vnd.picsel": ["efif"], "application/vnd.pmi.widget": ["wg"], "application/vnd.pocketlearn": ["plf"], "application/vnd.powerbuilder6": ["pbd"], "application/vnd.previewsystems.box": ["box"], "application/vnd.proteus.magazine": ["mgz"], "application/vnd.publishare-delta-tree": ["qps"], "application/vnd.pvi.ptid1": ["ptid"], "application/vnd.quark.quarkxpress": ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"], "application/vnd.rar": ["rar"], "application/vnd.realvnc.bed": ["bed"], "application/vnd.recordare.musicxml": ["mxl"], "application/vnd.recordare.musicxml+xml": ["musicxml"], "application/vnd.rig.cryptonote": ["cryptonote"], "application/vnd.rim.cod": ["cod"], "application/vnd.rn-realmedia": ["rm"], "application/vnd.rn-realmedia-vbr": ["rmvb"], "application/vnd.route66.link66+xml": ["link66"], "application/vnd.sailingtracker.track": ["st"], "application/vnd.seemail": ["see"], "application/vnd.sema": ["sema"], "application/vnd.semd": ["semd"], "application/vnd.semf": ["semf"], "application/vnd.shana.informed.formdata": ["ifm"], "application/vnd.shana.informed.formtemplate": ["itp"], "application/vnd.shana.informed.interchange": ["iif"], "application/vnd.shana.informed.package": ["ipk"], "application/vnd.simtech-mindmapper": ["twd", "twds"], "application/vnd.smaf": ["mmf"], "application/vnd.smart.teacher": ["teacher"], "application/vnd.software602.filler.form+xml": ["fo"], "application/vnd.solent.sdkm+xml": ["sdkm", "sdkd"], "application/vnd.spotfire.dxp": ["dxp"], "application/vnd.spotfire.sfs": ["sfs"], "application/vnd.stardivision.calc": ["sdc"], "application/vnd.stardivision.draw": ["sda"], "application/vnd.stardivision.impress": ["sdd"], "application/vnd.stardivision.math": ["smf"], "application/vnd.stardivision.writer": ["sdw", "vor"], "application/vnd.stardivision.writer-global": ["sgl"], "application/vnd.stepmania.package": ["smzip"], "application/vnd.stepmania.stepchart": ["sm"], "application/vnd.sun.wadl+xml": ["wadl"], "application/vnd.sun.xml.calc": ["sxc"], "application/vnd.sun.xml.calc.template": ["stc"], "application/vnd.sun.xml.draw": ["sxd"], "application/vnd.sun.xml.draw.template": ["std"], "application/vnd.sun.xml.impress": ["sxi"], "application/vnd.sun.xml.impress.template": ["sti"], "application/vnd.sun.xml.math": ["sxm"], "application/vnd.sun.xml.writer": ["sxw"], "application/vnd.sun.xml.writer.global": ["sxg"], "application/vnd.sun.xml.writer.template": ["stw"], "application/vnd.sus-calendar": ["sus", "susp"], "application/vnd.svd": ["svd"], "application/vnd.symbian.install": ["sis", "sisx"], "application/vnd.syncml+xml": ["xsm"], "application/vnd.syncml.dm+wbxml": ["bdm"], "application/vnd.syncml.dm+xml": ["xdm"], "application/vnd.syncml.dmddf+xml": ["ddf"], "application/vnd.tao.intent-module-archive": ["tao"], "application/vnd.tcpdump.pcap": ["pcap", "cap", "dmp"], "application/vnd.tmobile-livetv": ["tmo"], "application/vnd.trid.tpt": ["tpt"], "application/vnd.triscape.mxs": ["mxs"], "application/vnd.trueapp": ["tra"], "application/vnd.ufdl": ["ufd", "ufdl"], "application/vnd.uiq.theme": ["utz"], "application/vnd.umajin": ["umj"], "application/vnd.unity": ["unityweb"], "application/vnd.uoml+xml": ["uoml"], "application/vnd.vcx": ["vcx"], "application/vnd.visio": ["vsd", "vst", "vss", "vsw"], "application/vnd.visionary": ["vis"], "application/vnd.vsf": ["vsf"], "application/vnd.wap.wbxml": ["wbxml"], "application/vnd.wap.wmlc": ["wmlc"], "application/vnd.wap.wmlscriptc": ["wmlsc"], "application/vnd.webturbo": ["wtb"], "application/vnd.wolfram.player": ["nbp"], "application/vnd.wordperfect": ["wpd"], "application/vnd.wqd": ["wqd"], "application/vnd.wt.stf": ["stf"], "application/vnd.xara": ["xar"], "application/vnd.xfdl": ["xfdl"], "application/vnd.yamaha.hv-dic": ["hvd"], "application/vnd.yamaha.hv-script": ["hvs"], "application/vnd.yamaha.hv-voice": ["hvp"], "application/vnd.yamaha.openscoreformat": ["osf"], "application/vnd.yamaha.openscoreformat.osfpvg+xml": ["osfpvg"], "application/vnd.yamaha.smaf-audio": ["saf"], "application/vnd.yamaha.smaf-phrase": ["spf"], "application/vnd.yellowriver-custom-menu": ["cmp"], "application/vnd.zul": ["zir", "zirz"], "application/vnd.zzazz.deck+xml": ["zaz"], "application/x-7z-compressed": ["7z"], "application/x-abiword": ["abw"], "application/x-ace-compressed": ["ace"], "application/x-apple-diskimage": ["*dmg"], "application/x-arj": ["arj"], "application/x-authorware-bin": ["aab", "x32", "u32", "vox"], "application/x-authorware-map": ["aam"], "application/x-authorware-seg": ["aas"], "application/x-bcpio": ["bcpio"], "application/x-bdoc": ["*bdoc"], "application/x-bittorrent": ["torrent"], "application/x-blorb": ["blb", "blorb"], "application/x-bzip": ["bz"], "application/x-bzip2": ["bz2", "boz"], "application/x-cbr": ["cbr", "cba", "cbt", "cbz", "cb7"], "application/x-cdlink": ["vcd"], "application/x-cfs-compressed": ["cfs"], "application/x-chat": ["chat"], "application/x-chess-pgn": ["pgn"], "application/x-chrome-extension": ["crx"], "application/x-cocoa": ["cco"], "application/x-conference": ["nsc"], "application/x-cpio": ["cpio"], "application/x-csh": ["csh"], "application/x-debian-package": ["*deb", "udeb"], "application/x-dgc-compressed": ["dgc"], "application/x-director": ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"], "application/x-doom": ["wad"], "application/x-dtbncx+xml": ["ncx"], "application/x-dtbook+xml": ["dtb"], "application/x-dtbresource+xml": ["res"], "application/x-dvi": ["dvi"], "application/x-envoy": ["evy"], "application/x-eva": ["eva"], "application/x-font-bdf": ["bdf"], "application/x-font-ghostscript": ["gsf"], "application/x-font-linux-psf": ["psf"], "application/x-font-pcf": ["pcf"], "application/x-font-snf": ["snf"], "application/x-font-type1": ["pfa", "pfb", "pfm", "afm"], "application/x-freearc": ["arc"], "application/x-futuresplash": ["spl"], "application/x-gca-compressed": ["gca"], "application/x-glulx": ["ulx"], "application/x-gnumeric": ["gnumeric"], "application/x-gramps-xml": ["gramps"], "application/x-gtar": ["gtar"], "application/x-hdf": ["hdf"], "application/x-httpd-php": ["php"], "application/x-install-instructions": ["install"], "application/x-iso9660-image": ["*iso"], "application/x-iwork-keynote-sffkey": ["*key"], "application/x-iwork-numbers-sffnumbers": ["*numbers"], "application/x-iwork-pages-sffpages": ["*pages"], "application/x-java-archive-diff": ["jardiff"], "application/x-java-jnlp-file": ["jnlp"], "application/x-keepass2": ["kdbx"], "application/x-latex": ["latex"], "application/x-lua-bytecode": ["luac"], "application/x-lzh-compressed": ["lzh", "lha"], "application/x-makeself": ["run"], "application/x-mie": ["mie"], "application/x-mobipocket-ebook": ["prc", "mobi"], "application/x-ms-application": ["application"], "application/x-ms-shortcut": ["lnk"], "application/x-ms-wmd": ["wmd"], "application/x-ms-wmz": ["wmz"], "application/x-ms-xbap": ["xbap"], "application/x-msaccess": ["mdb"], "application/x-msbinder": ["obd"], "application/x-mscardfile": ["crd"], "application/x-msclip": ["clp"], "application/x-msdos-program": ["*exe"], "application/x-msdownload": ["*exe", "*dll", "com", "bat", "*msi"], "application/x-msmediaview": ["mvb", "m13", "m14"], "application/x-msmetafile": ["*wmf", "*wmz", "*emf", "emz"], "application/x-msmoney": ["mny"], "application/x-mspublisher": ["pub"], "application/x-msschedule": ["scd"], "application/x-msterminal": ["trm"], "application/x-mswrite": ["wri"], "application/x-netcdf": ["nc", "cdf"], "application/x-ns-proxy-autoconfig": ["pac"], "application/x-nzb": ["nzb"], "application/x-perl": ["pl", "pm"], "application/x-pilot": ["*prc", "*pdb"], "application/x-pkcs12": ["p12", "pfx"], "application/x-pkcs7-certificates": ["p7b", "spc"], "application/x-pkcs7-certreqresp": ["p7r"], "application/x-rar-compressed": ["*rar"], "application/x-redhat-package-manager": ["rpm"], "application/x-research-info-systems": ["ris"], "application/x-sea": ["sea"], "application/x-sh": ["sh"], "application/x-shar": ["shar"], "application/x-shockwave-flash": ["swf"], "application/x-silverlight-app": ["xap"], "application/x-sql": ["sql"], "application/x-stuffit": ["sit"], "application/x-stuffitx": ["sitx"], "application/x-subrip": ["srt"], "application/x-sv4cpio": ["sv4cpio"], "application/x-sv4crc": ["sv4crc"], "application/x-t3vm-image": ["t3"], "application/x-tads": ["gam"], "application/x-tar": ["tar"], "application/x-tcl": ["tcl", "tk"], "application/x-tex": ["tex"], "application/x-tex-tfm": ["tfm"], "application/x-texinfo": ["texinfo", "texi"], "application/x-tgif": ["*obj"], "application/x-ustar": ["ustar"], "application/x-virtualbox-hdd": ["hdd"], "application/x-virtualbox-ova": ["ova"], "application/x-virtualbox-ovf": ["ovf"], "application/x-virtualbox-vbox": ["vbox"], "application/x-virtualbox-vbox-extpack": ["vbox-extpack"], "application/x-virtualbox-vdi": ["vdi"], "application/x-virtualbox-vhd": ["vhd"], "application/x-virtualbox-vmdk": ["vmdk"], "application/x-wais-source": ["src"], "application/x-web-app-manifest+json": ["webapp"], "application/x-x509-ca-cert": ["der", "crt", "pem"], "application/x-xfig": ["fig"], "application/x-xliff+xml": ["*xlf"], "application/x-xpinstall": ["xpi"], "application/x-xz": ["xz"], "application/x-zmachine": ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"], "audio/vnd.dece.audio": ["uva", "uvva"], "audio/vnd.digital-winds": ["eol"], "audio/vnd.dra": ["dra"], "audio/vnd.dts": ["dts"], "audio/vnd.dts.hd": ["dtshd"], "audio/vnd.lucent.voice": ["lvp"], "audio/vnd.ms-playready.media.pya": ["pya"], "audio/vnd.nuera.ecelp4800": ["ecelp4800"], "audio/vnd.nuera.ecelp7470": ["ecelp7470"], "audio/vnd.nuera.ecelp9600": ["ecelp9600"], "audio/vnd.rip": ["rip"], "audio/x-aac": ["aac"], "audio/x-aiff": ["aif", "aiff", "aifc"], "audio/x-caf": ["caf"], "audio/x-flac": ["flac"], "audio/x-m4a": ["*m4a"], "audio/x-matroska": ["mka"], "audio/x-mpegurl": ["m3u"], "audio/x-ms-wax": ["wax"], "audio/x-ms-wma": ["wma"], "audio/x-pn-realaudio": ["ram", "ra"], "audio/x-pn-realaudio-plugin": ["rmp"], "audio/x-realaudio": ["*ra"], "audio/x-wav": ["*wav"], "chemical/x-cdx": ["cdx"], "chemical/x-cif": ["cif"], "chemical/x-cmdf": ["cmdf"], "chemical/x-cml": ["cml"], "chemical/x-csml": ["csml"], "chemical/x-xyz": ["xyz"], "image/prs.btif": ["btif"], "image/prs.pti": ["pti"], "image/vnd.adobe.photoshop": ["psd"], "image/vnd.airzip.accelerator.azv": ["azv"], "image/vnd.dece.graphic": ["uvi", "uvvi", "uvg", "uvvg"], "image/vnd.djvu": ["djvu", "djv"], "image/vnd.dvb.subtitle": ["*sub"], "image/vnd.dwg": ["dwg"], "image/vnd.dxf": ["dxf"], "image/vnd.fastbidsheet": ["fbs"], "image/vnd.fpx": ["fpx"], "image/vnd.fst": ["fst"], "image/vnd.fujixerox.edmics-mmr": ["mmr"], "image/vnd.fujixerox.edmics-rlc": ["rlc"], "image/vnd.microsoft.icon": ["ico"], "image/vnd.ms-dds": ["dds"], "image/vnd.ms-modi": ["mdi"], "image/vnd.ms-photo": ["wdp"], "image/vnd.net-fpx": ["npx"], "image/vnd.pco.b16": ["b16"], "image/vnd.tencent.tap": ["tap"], "image/vnd.valve.source.texture": ["vtf"], "image/vnd.wap.wbmp": ["wbmp"], "image/vnd.xiff": ["xif"], "image/vnd.zbrush.pcx": ["pcx"], "image/x-3ds": ["3ds"], "image/x-cmu-raster": ["ras"], "image/x-cmx": ["cmx"], "image/x-freehand": ["fh", "fhc", "fh4", "fh5", "fh7"], "image/x-icon": ["*ico"], "image/x-jng": ["jng"], "image/x-mrsid-image": ["sid"], "image/x-ms-bmp": ["*bmp"], "image/x-pcx": ["*pcx"], "image/x-pict": ["pic", "pct"], "image/x-portable-anymap": ["pnm"], "image/x-portable-bitmap": ["pbm"], "image/x-portable-graymap": ["pgm"], "image/x-portable-pixmap": ["ppm"], "image/x-rgb": ["rgb"], "image/x-tga": ["tga"], "image/x-xbitmap": ["xbm"], "image/x-xpixmap": ["xpm"], "image/x-xwindowdump": ["xwd"], "message/vnd.wfa.wsc": ["wsc"], "model/vnd.collada+xml": ["dae"], "model/vnd.dwf": ["dwf"], "model/vnd.gdl": ["gdl"], "model/vnd.gtw": ["gtw"], "model/vnd.mts": ["mts"], "model/vnd.opengex": ["ogex"], "model/vnd.parasolid.transmit.binary": ["x_b"], "model/vnd.parasolid.transmit.text": ["x_t"], "model/vnd.sap.vds": ["vds"], "model/vnd.usdz+zip": ["usdz"], "model/vnd.valve.source.compiled-map": ["bsp"], "model/vnd.vtu": ["vtu"], "text/prs.lines.tag": ["dsc"], "text/vnd.curl": ["curl"], "text/vnd.curl.dcurl": ["dcurl"], "text/vnd.curl.mcurl": ["mcurl"], "text/vnd.curl.scurl": ["scurl"], "text/vnd.dvb.subtitle": ["sub"], "text/vnd.fly": ["fly"], "text/vnd.fmi.flexstor": ["flx"], "text/vnd.graphviz": ["gv"], "text/vnd.in3d.3dml": ["3dml"], "text/vnd.in3d.spot": ["spot"], "text/vnd.sun.j2me.app-descriptor": ["jad"], "text/vnd.wap.wml": ["wml"], "text/vnd.wap.wmlscript": ["wmls"], "text/x-asm": ["s", "asm"], "text/x-c": ["c", "cc", "cxx", "cpp", "h", "hh", "dic"], "text/x-component": ["htc"], "text/x-fortran": ["f", "for", "f77", "f90"], "text/x-handlebars-template": ["hbs"], "text/x-java-source": ["java"], "text/x-lua": ["lua"], "text/x-markdown": ["mkd"], "text/x-nfo": ["nfo"], "text/x-opml": ["opml"], "text/x-org": ["*org"], "text/x-pascal": ["p", "pas"], "text/x-processing": ["pde"], "text/x-sass": ["sass"], "text/x-scss": ["scss"], "text/x-setext": ["etx"], "text/x-sfv": ["sfv"], "text/x-suse-ymp": ["ymp"], "text/x-uuencode": ["uu"], "text/x-vcalendar": ["vcs"], "text/x-vcard": ["vcf"], "video/vnd.dece.hd": ["uvh", "uvvh"], "video/vnd.dece.mobile": ["uvm", "uvvm"], "video/vnd.dece.pd": ["uvp", "uvvp"], "video/vnd.dece.sd": ["uvs", "uvvs"], "video/vnd.dece.video": ["uvv", "uvvv"], "video/vnd.dvb.file": ["dvb"], "video/vnd.fvt": ["fvt"], "video/vnd.mpegurl": ["mxu", "m4u"], "video/vnd.ms-playready.media.pyv": ["pyv"], "video/vnd.uvvu.mp4": ["uvu", "uvvu"], "video/vnd.vivo": ["viv"], "video/x-f4v": ["f4v"], "video/x-fli": ["fli"], "video/x-flv": ["flv"], "video/x-m4v": ["m4v"], "video/x-matroska": ["mkv", "mk3d", "mks"], "video/x-mng": ["mng"], "video/x-ms-asf": ["asf", "asx"], "video/x-ms-vob": ["vob"], "video/x-ms-wm": ["wm"], "video/x-ms-wmv": ["wmv"], "video/x-ms-wmx": ["wmx"], "video/x-ms-wvx": ["wvx"], "video/x-msvideo": ["avi"], "video/x-sgi-movie": ["movie"], "video/x-smv": ["smv"], "x-conference/x-cooltalk": ["ice"] };
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
// ../../node_modules/mime/index.js
|
|
106
|
+
var require_mime = __commonJS({
|
|
107
|
+
"../../node_modules/mime/index.js"(exports, module) {
|
|
108
|
+
"use strict";
|
|
109
|
+
var Mime = require_Mime();
|
|
110
|
+
module.exports = new Mime(require_standard(), require_other());
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// ../pages-shared/environment-polyfills/index.ts
|
|
115
|
+
var polyfill;
|
|
116
|
+
var init_environment_polyfills = __esm({
|
|
117
|
+
"../pages-shared/environment-polyfills/index.ts"() {
|
|
118
|
+
polyfill = (environment) => {
|
|
119
|
+
Object.entries(environment).map(([name, value]) => {
|
|
120
|
+
Object.defineProperty(globalThis, name, {
|
|
121
|
+
value,
|
|
122
|
+
configurable: true,
|
|
123
|
+
enumerable: true,
|
|
124
|
+
writable: true
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
});
|
|
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
|
+
|
|
152
|
+
// ../pages-shared/environment-polyfills/miniflare.ts
|
|
153
|
+
var miniflare_exports = {};
|
|
154
|
+
__export(miniflare_exports, {
|
|
155
|
+
default: () => miniflare_default
|
|
156
|
+
});
|
|
157
|
+
var miniflare_default;
|
|
158
|
+
var init_miniflare = __esm({
|
|
159
|
+
"../pages-shared/environment-polyfills/miniflare.ts"() {
|
|
160
|
+
init_environment_polyfills();
|
|
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
|
+
};
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
// ../pages-shared/asset-server/responses.ts
|
|
174
|
+
function mergeHeaders(base, extra) {
|
|
175
|
+
base = new Headers(base ?? {});
|
|
176
|
+
extra = new Headers(extra ?? {});
|
|
177
|
+
return new Headers({
|
|
178
|
+
...Object.fromEntries(base.entries()),
|
|
179
|
+
...Object.fromEntries(extra.entries())
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
var OkResponse, MovedPermanentlyResponse, FoundResponse, NotModifiedResponse, PermanentRedirectResponse, NotFoundResponse, MethodNotAllowedResponse, NotAcceptableResponse, InternalServerErrorResponse, SeeOtherResponse, TemporaryRedirectResponse;
|
|
183
|
+
var init_responses = __esm({
|
|
184
|
+
"../pages-shared/asset-server/responses.ts"() {
|
|
185
|
+
OkResponse = class extends Response {
|
|
186
|
+
constructor(...[body, init]) {
|
|
187
|
+
super(body, {
|
|
188
|
+
...init,
|
|
189
|
+
status: 200,
|
|
190
|
+
statusText: "OK"
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
MovedPermanentlyResponse = class extends Response {
|
|
195
|
+
constructor(location, init) {
|
|
196
|
+
super(`Redirecting to ${location}`, {
|
|
197
|
+
...init,
|
|
198
|
+
status: 301,
|
|
199
|
+
statusText: "Moved Permanently",
|
|
200
|
+
headers: mergeHeaders(init?.headers, {
|
|
201
|
+
location
|
|
202
|
+
})
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
FoundResponse = class extends Response {
|
|
207
|
+
constructor(location, init) {
|
|
208
|
+
super(`Redirecting to ${location}`, {
|
|
209
|
+
...init,
|
|
210
|
+
status: 302,
|
|
211
|
+
statusText: "Found",
|
|
212
|
+
headers: mergeHeaders(init?.headers, {
|
|
213
|
+
location
|
|
214
|
+
})
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
};
|
|
218
|
+
NotModifiedResponse = class extends Response {
|
|
219
|
+
constructor(...[_body, _init]) {
|
|
220
|
+
super(void 0, {
|
|
221
|
+
status: 304,
|
|
222
|
+
statusText: "Not Modified"
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
PermanentRedirectResponse = class extends Response {
|
|
227
|
+
constructor(location, init) {
|
|
228
|
+
super(void 0, {
|
|
229
|
+
...init,
|
|
230
|
+
status: 308,
|
|
231
|
+
statusText: "Permanent Redirect",
|
|
232
|
+
headers: mergeHeaders(init?.headers, {
|
|
233
|
+
location
|
|
234
|
+
})
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
NotFoundResponse = class extends Response {
|
|
239
|
+
constructor(...[body, init]) {
|
|
240
|
+
super(body, {
|
|
241
|
+
...init,
|
|
242
|
+
status: 404,
|
|
243
|
+
statusText: "Not Found"
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
MethodNotAllowedResponse = class extends Response {
|
|
248
|
+
constructor(...[body, init]) {
|
|
249
|
+
super(body, {
|
|
250
|
+
...init,
|
|
251
|
+
status: 405,
|
|
252
|
+
statusText: "Method Not Allowed"
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
NotAcceptableResponse = class extends Response {
|
|
257
|
+
constructor(...[body, init]) {
|
|
258
|
+
super(body, {
|
|
259
|
+
...init,
|
|
260
|
+
status: 406,
|
|
261
|
+
statusText: "Not Acceptable"
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
InternalServerErrorResponse = class extends Response {
|
|
266
|
+
constructor(err, init) {
|
|
267
|
+
let body = void 0;
|
|
268
|
+
if (globalThis.DEBUG) {
|
|
269
|
+
body = `${err.message}
|
|
270
|
+
|
|
271
|
+
${err.stack}`;
|
|
272
|
+
}
|
|
273
|
+
super(body, {
|
|
274
|
+
...init,
|
|
275
|
+
status: 500,
|
|
276
|
+
statusText: "Internal Server Error"
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
SeeOtherResponse = class extends Response {
|
|
281
|
+
constructor(location, init) {
|
|
282
|
+
super(`Redirecting to ${location}`, {
|
|
283
|
+
...init,
|
|
284
|
+
status: 303,
|
|
285
|
+
statusText: "See Other",
|
|
286
|
+
headers: mergeHeaders(init?.headers, { location })
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
TemporaryRedirectResponse = class extends Response {
|
|
291
|
+
constructor(location, init) {
|
|
292
|
+
super(`Redirecting to ${location}`, {
|
|
293
|
+
...init,
|
|
294
|
+
status: 307,
|
|
295
|
+
statusText: "Temporary Redirect",
|
|
296
|
+
headers: mergeHeaders(init?.headers, { location })
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
|
|
303
|
+
// ../pages-shared/asset-server/rulesEngine.ts
|
|
304
|
+
var ESCAPE_REGEX_CHARACTERS, escapeRegex, HOST_PLACEHOLDER_REGEX, PLACEHOLDER_REGEX2, replacer, generateRulesMatcher;
|
|
305
|
+
var init_rulesEngine = __esm({
|
|
306
|
+
"../pages-shared/asset-server/rulesEngine.ts"() {
|
|
307
|
+
ESCAPE_REGEX_CHARACTERS = /[-/\\^$*+?.()|[\]{}]/g;
|
|
308
|
+
escapeRegex = (str) => {
|
|
309
|
+
return str.replace(ESCAPE_REGEX_CHARACTERS, "\\$&");
|
|
310
|
+
};
|
|
311
|
+
HOST_PLACEHOLDER_REGEX = /(?<=^https:\\\/\\\/[^/]*?):([^\\]+)(?=\\)/g;
|
|
312
|
+
PLACEHOLDER_REGEX2 = /:(\w+)/g;
|
|
313
|
+
replacer = (str, replacements) => {
|
|
314
|
+
for (const [replacement, value] of Object.entries(replacements)) {
|
|
315
|
+
str = str.replaceAll(`:${replacement}`, value);
|
|
316
|
+
}
|
|
317
|
+
return str;
|
|
318
|
+
};
|
|
319
|
+
generateRulesMatcher = (rules, replacerFn = (match) => match) => {
|
|
320
|
+
if (!rules)
|
|
321
|
+
return () => [];
|
|
322
|
+
const compiledRules = Object.entries(rules).map(([rule, match]) => {
|
|
323
|
+
const crossHost = rule.startsWith("https://");
|
|
324
|
+
rule = rule.split("*").map(escapeRegex).join("(?<splat>.*)");
|
|
325
|
+
const host_matches = rule.matchAll(HOST_PLACEHOLDER_REGEX);
|
|
326
|
+
for (const host_match of host_matches) {
|
|
327
|
+
rule = rule.split(host_match[0]).join(`(?<${host_match[1]}>[^/.]+)`);
|
|
328
|
+
}
|
|
329
|
+
const path_matches = rule.matchAll(PLACEHOLDER_REGEX2);
|
|
330
|
+
for (const path_match of path_matches) {
|
|
331
|
+
rule = rule.split(path_match[0]).join(`(?<${path_match[1]}>[^/]+)`);
|
|
332
|
+
}
|
|
333
|
+
rule = "^" + rule + "$";
|
|
334
|
+
try {
|
|
335
|
+
const regExp = new RegExp(rule);
|
|
336
|
+
return [{ crossHost, regExp }, match];
|
|
337
|
+
} catch {
|
|
338
|
+
}
|
|
339
|
+
}).filter((value) => value !== void 0);
|
|
340
|
+
return ({ request }) => {
|
|
341
|
+
const { pathname, host } = new URL(request.url);
|
|
342
|
+
return compiledRules.map(([{ crossHost, regExp }, match]) => {
|
|
343
|
+
const test = crossHost ? `https://${host}${pathname}` : pathname;
|
|
344
|
+
const result = regExp.exec(test);
|
|
345
|
+
if (result) {
|
|
346
|
+
return replacerFn(match, result.groups || {});
|
|
347
|
+
}
|
|
348
|
+
}).filter((value) => value !== void 0);
|
|
349
|
+
};
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
});
|
|
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
|
+
|
|
363
|
+
// ../pages-shared/asset-server/handler.ts
|
|
364
|
+
var handler_exports = {};
|
|
365
|
+
__export(handler_exports, {
|
|
366
|
+
ANALYTICS_VERSION: () => ANALYTICS_VERSION2,
|
|
367
|
+
ASSET_PRESERVATION_CACHE: () => ASSET_PRESERVATION_CACHE,
|
|
368
|
+
CACHE_CONTROL_BROWSER: () => CACHE_CONTROL_BROWSER,
|
|
369
|
+
HEADERS_VERSION: () => HEADERS_VERSION2,
|
|
370
|
+
HEADERS_VERSION_V1: () => HEADERS_VERSION_V1,
|
|
371
|
+
REDIRECTS_VERSION: () => REDIRECTS_VERSION2,
|
|
372
|
+
generateHandler: () => generateHandler,
|
|
373
|
+
getResponseFromMatch: () => getResponseFromMatch,
|
|
374
|
+
normaliseHeaders: () => normaliseHeaders,
|
|
375
|
+
parseQualityWeightedList: () => parseQualityWeightedList
|
|
376
|
+
});
|
|
377
|
+
function normaliseHeaders(headers) {
|
|
378
|
+
if (headers.version === HEADERS_VERSION2) {
|
|
379
|
+
return headers.rules;
|
|
380
|
+
} else if (headers.version === HEADERS_VERSION_V1) {
|
|
381
|
+
return Object.keys(headers.rules).reduce(
|
|
382
|
+
(acc, key) => {
|
|
383
|
+
acc[key] = {
|
|
384
|
+
set: headers.rules[key]
|
|
385
|
+
};
|
|
386
|
+
return acc;
|
|
387
|
+
},
|
|
388
|
+
{}
|
|
389
|
+
);
|
|
390
|
+
} else {
|
|
391
|
+
return {};
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
async function generateHandler({
|
|
395
|
+
request,
|
|
396
|
+
metadata,
|
|
397
|
+
xServerEnvHeader,
|
|
398
|
+
logError,
|
|
399
|
+
findAssetEntryForPath,
|
|
400
|
+
getAssetKey,
|
|
401
|
+
negotiateContent,
|
|
402
|
+
fetchAsset,
|
|
403
|
+
generateNotFoundResponse = async (notFoundRequest, notFoundFindAssetEntryForPath, notFoundServeAsset) => {
|
|
404
|
+
let assetEntry;
|
|
405
|
+
if (assetEntry = await notFoundFindAssetEntryForPath("/index.html")) {
|
|
406
|
+
return notFoundServeAsset(assetEntry, { preserve: false });
|
|
407
|
+
}
|
|
408
|
+
return new NotFoundResponse();
|
|
409
|
+
},
|
|
410
|
+
attachAdditionalHeaders = () => {
|
|
411
|
+
},
|
|
412
|
+
caches,
|
|
413
|
+
waitUntil
|
|
414
|
+
}) {
|
|
415
|
+
const url = new URL(request.url);
|
|
416
|
+
const { protocol, host, search } = url;
|
|
417
|
+
let { pathname } = url;
|
|
418
|
+
const earlyHintsCache = metadata.deploymentId ? await caches?.open(`eh:${metadata.deploymentId}`) : void 0;
|
|
419
|
+
const headerRules = metadata.headers ? normaliseHeaders(metadata.headers) : {};
|
|
420
|
+
const staticRules = metadata.redirects?.version === REDIRECTS_VERSION2 ? metadata.redirects.staticRules || {} : {};
|
|
421
|
+
const staticRedirectsMatcher = () => {
|
|
422
|
+
const withHostMatch = staticRules[`https://${host}${pathname}`];
|
|
423
|
+
const withoutHostMatch = staticRules[pathname];
|
|
424
|
+
if (withHostMatch && withoutHostMatch) {
|
|
425
|
+
if (withHostMatch.lineNumber < withoutHostMatch.lineNumber) {
|
|
426
|
+
return withHostMatch;
|
|
427
|
+
} else {
|
|
428
|
+
return withoutHostMatch;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
return withHostMatch || withoutHostMatch;
|
|
432
|
+
};
|
|
433
|
+
const generateRedirectsMatcher = () => generateRulesMatcher(
|
|
434
|
+
metadata.redirects?.version === REDIRECTS_VERSION2 ? metadata.redirects.rules : {},
|
|
435
|
+
({ status, to }, replacements) => ({
|
|
436
|
+
status,
|
|
437
|
+
to: replacer(to, replacements)
|
|
438
|
+
})
|
|
439
|
+
);
|
|
440
|
+
let assetEntry;
|
|
441
|
+
async function generateResponse() {
|
|
442
|
+
const match = staticRedirectsMatcher() || generateRedirectsMatcher()({ request })[0];
|
|
443
|
+
if (match) {
|
|
444
|
+
return getResponseFromMatch(match, url);
|
|
445
|
+
}
|
|
446
|
+
if (!request.method.match(/^(get|head)$/i)) {
|
|
447
|
+
return new MethodNotAllowedResponse();
|
|
448
|
+
}
|
|
449
|
+
try {
|
|
450
|
+
pathname = globalThis.decodeURIComponent(pathname);
|
|
451
|
+
} catch (err) {
|
|
452
|
+
}
|
|
453
|
+
if (pathname.endsWith("/")) {
|
|
454
|
+
if (assetEntry = await findAssetEntryForPath(`${pathname}index.html`)) {
|
|
455
|
+
return serveAsset(assetEntry);
|
|
456
|
+
} else if (pathname.endsWith("/index/")) {
|
|
457
|
+
return new PermanentRedirectResponse(
|
|
458
|
+
`/${pathname.slice(1, -"index/".length)}${search}`
|
|
459
|
+
);
|
|
460
|
+
} else if (assetEntry = await findAssetEntryForPath(
|
|
461
|
+
`${pathname.replace(/\/$/, ".html")}`
|
|
462
|
+
)) {
|
|
463
|
+
return new PermanentRedirectResponse(
|
|
464
|
+
`/${pathname.slice(1, -1)}${search}`
|
|
465
|
+
);
|
|
466
|
+
} else {
|
|
467
|
+
return notFound();
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
if (assetEntry = await findAssetEntryForPath(pathname)) {
|
|
471
|
+
if (pathname.endsWith(".html")) {
|
|
472
|
+
const extensionlessPath = pathname.slice(0, -".html".length);
|
|
473
|
+
if (extensionlessPath.endsWith("/index")) {
|
|
474
|
+
return new PermanentRedirectResponse(
|
|
475
|
+
`${extensionlessPath.replace(/\/index$/, "/")}${search}`
|
|
476
|
+
);
|
|
477
|
+
} else if (await findAssetEntryForPath(extensionlessPath) || extensionlessPath === "/") {
|
|
478
|
+
return serveAsset(assetEntry);
|
|
479
|
+
} else {
|
|
480
|
+
return new PermanentRedirectResponse(`${extensionlessPath}${search}`);
|
|
481
|
+
}
|
|
482
|
+
} else {
|
|
483
|
+
return serveAsset(assetEntry);
|
|
484
|
+
}
|
|
485
|
+
} else if (pathname.endsWith("/index")) {
|
|
486
|
+
return new PermanentRedirectResponse(
|
|
487
|
+
`/${pathname.slice(1, -"index".length)}${search}`
|
|
488
|
+
);
|
|
489
|
+
} else if (assetEntry = await findAssetEntryForPath(`${pathname}.html`)) {
|
|
490
|
+
return serveAsset(assetEntry);
|
|
491
|
+
} else if (hasFileExtension(pathname)) {
|
|
492
|
+
return notFound();
|
|
493
|
+
}
|
|
494
|
+
if (assetEntry = await findAssetEntryForPath(`${pathname}/index.html`)) {
|
|
495
|
+
return new PermanentRedirectResponse(`${pathname}/${search}`);
|
|
496
|
+
} else {
|
|
497
|
+
return notFound();
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
async function attachHeaders(response) {
|
|
501
|
+
const existingHeaders = new Headers(response.headers);
|
|
502
|
+
const extraHeaders = new Headers({
|
|
503
|
+
"access-control-allow-origin": "*",
|
|
504
|
+
"referrer-policy": "strict-origin-when-cross-origin",
|
|
505
|
+
...existingHeaders.has("content-type") ? { "x-content-type-options": "nosniff" } : {}
|
|
506
|
+
});
|
|
507
|
+
const headers = new Headers({
|
|
508
|
+
...Object.fromEntries(existingHeaders.entries()),
|
|
509
|
+
...Object.fromEntries(extraHeaders.entries())
|
|
510
|
+
});
|
|
511
|
+
if (earlyHintsCache) {
|
|
512
|
+
const preEarlyHintsHeaders = new Headers(headers);
|
|
513
|
+
const earlyHintsCacheKey = `${protocol}//${host}${pathname}`;
|
|
514
|
+
const earlyHintsResponse = await earlyHintsCache.match(
|
|
515
|
+
earlyHintsCacheKey
|
|
516
|
+
);
|
|
517
|
+
if (earlyHintsResponse) {
|
|
518
|
+
const earlyHintsLinkHeader = earlyHintsResponse.headers.get("Link");
|
|
519
|
+
if (earlyHintsLinkHeader) {
|
|
520
|
+
headers.set("Link", earlyHintsLinkHeader);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
const clonedResponse = response.clone();
|
|
524
|
+
if (waitUntil) {
|
|
525
|
+
waitUntil(
|
|
526
|
+
(async () => {
|
|
527
|
+
try {
|
|
528
|
+
const links = [];
|
|
529
|
+
const transformedResponse = new HTMLRewriter().on("link[rel~=preconnect],link[rel~=preload]", {
|
|
530
|
+
element(element) {
|
|
531
|
+
for (const [attributeName] of element.attributes) {
|
|
532
|
+
if (!ALLOWED_EARLY_HINT_LINK_ATTRIBUTES.includes(
|
|
533
|
+
attributeName.toLowerCase()
|
|
534
|
+
)) {
|
|
535
|
+
return;
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
const href = element.getAttribute("href") || void 0;
|
|
539
|
+
const rel = element.getAttribute("rel") || void 0;
|
|
540
|
+
const as = element.getAttribute("as") || void 0;
|
|
541
|
+
if (href && !href.startsWith("data:") && rel) {
|
|
542
|
+
links.push({ href, rel, as });
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
}).transform(clonedResponse);
|
|
546
|
+
await transformedResponse.text();
|
|
547
|
+
links.forEach(({ href, rel, as }) => {
|
|
548
|
+
let link = `<${href}>; rel="${rel}"`;
|
|
549
|
+
if (as) {
|
|
550
|
+
link += `; as=${as}`;
|
|
551
|
+
}
|
|
552
|
+
preEarlyHintsHeaders.append("Link", link);
|
|
553
|
+
});
|
|
554
|
+
const linkHeader = preEarlyHintsHeaders.get("Link");
|
|
555
|
+
if (linkHeader) {
|
|
556
|
+
await earlyHintsCache.put(
|
|
557
|
+
earlyHintsCacheKey,
|
|
558
|
+
new Response(null, { headers: { Link: linkHeader } })
|
|
559
|
+
);
|
|
560
|
+
}
|
|
561
|
+
} catch (err) {
|
|
562
|
+
}
|
|
563
|
+
})()
|
|
564
|
+
);
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
const headersMatcher = generateRulesMatcher(
|
|
568
|
+
headerRules,
|
|
569
|
+
({ set = {}, unset = [] }, replacements) => {
|
|
570
|
+
const replacedSet = {};
|
|
571
|
+
Object.keys(set).forEach((key) => {
|
|
572
|
+
replacedSet[key] = replacer(set[key], replacements);
|
|
573
|
+
});
|
|
574
|
+
return {
|
|
575
|
+
set: replacedSet,
|
|
576
|
+
unset
|
|
577
|
+
};
|
|
578
|
+
}
|
|
579
|
+
);
|
|
580
|
+
const matches = headersMatcher({ request });
|
|
581
|
+
const setMap = /* @__PURE__ */ new Set();
|
|
582
|
+
matches.forEach(({ set = {}, unset = [] }) => {
|
|
583
|
+
unset.forEach((key) => {
|
|
584
|
+
headers.delete(key);
|
|
585
|
+
});
|
|
586
|
+
Object.keys(set).forEach((key) => {
|
|
587
|
+
if (setMap.has(key.toLowerCase())) {
|
|
588
|
+
headers.append(key, set[key]);
|
|
589
|
+
} else {
|
|
590
|
+
headers.set(key, set[key]);
|
|
591
|
+
setMap.add(key.toLowerCase());
|
|
592
|
+
}
|
|
593
|
+
});
|
|
594
|
+
});
|
|
595
|
+
return new Response(
|
|
596
|
+
[101, 204, 205, 304].includes(response.status) ? null : response.body,
|
|
597
|
+
{
|
|
598
|
+
headers,
|
|
599
|
+
status: response.status,
|
|
600
|
+
statusText: response.statusText
|
|
601
|
+
}
|
|
602
|
+
);
|
|
603
|
+
}
|
|
604
|
+
return await attachHeaders(await generateResponse());
|
|
605
|
+
async function serveAsset(servingAssetEntry, options = { preserve: true }) {
|
|
606
|
+
let content;
|
|
607
|
+
try {
|
|
608
|
+
content = negotiateContent(request, servingAssetEntry);
|
|
609
|
+
} catch (err) {
|
|
610
|
+
return new NotAcceptableResponse();
|
|
611
|
+
}
|
|
612
|
+
const assetKey = getAssetKey(servingAssetEntry, content);
|
|
613
|
+
const etag = `"${assetKey}"`;
|
|
614
|
+
const weakEtag = `W/${etag}`;
|
|
615
|
+
const ifNoneMatch = request.headers.get("if-none-match");
|
|
616
|
+
if (ifNoneMatch === weakEtag || ifNoneMatch === etag) {
|
|
617
|
+
return new NotModifiedResponse();
|
|
618
|
+
}
|
|
619
|
+
try {
|
|
620
|
+
const asset = await fetchAsset(assetKey);
|
|
621
|
+
const headers = {
|
|
622
|
+
etag,
|
|
623
|
+
"content-type": asset.contentType
|
|
624
|
+
};
|
|
625
|
+
let encodeBody = "automatic";
|
|
626
|
+
if (xServerEnvHeader) {
|
|
627
|
+
headers["x-server-env"] = xServerEnvHeader;
|
|
628
|
+
}
|
|
629
|
+
if (content.encoding) {
|
|
630
|
+
encodeBody = "manual";
|
|
631
|
+
headers["cache-control"] = "no-transform";
|
|
632
|
+
headers["content-encoding"] = content.encoding;
|
|
633
|
+
}
|
|
634
|
+
const response = new OkResponse(
|
|
635
|
+
request.method === "HEAD" ? null : asset.body,
|
|
636
|
+
{
|
|
637
|
+
headers,
|
|
638
|
+
encodeBody
|
|
639
|
+
}
|
|
640
|
+
);
|
|
641
|
+
if (isCacheable(request)) {
|
|
642
|
+
response.headers.append("cache-control", CACHE_CONTROL_BROWSER);
|
|
643
|
+
}
|
|
644
|
+
attachAdditionalHeaders(response, content, servingAssetEntry, asset);
|
|
645
|
+
if (isPreview(new URL(request.url))) {
|
|
646
|
+
response.headers.set("x-robots-tag", "noindex");
|
|
647
|
+
}
|
|
648
|
+
if (options.preserve) {
|
|
649
|
+
const preservedResponse = new Response(
|
|
650
|
+
[101, 204, 205, 304].includes(response.status) ? null : response.clone().body,
|
|
651
|
+
response
|
|
652
|
+
);
|
|
653
|
+
preservedResponse.headers.set(
|
|
654
|
+
"cache-control",
|
|
655
|
+
CACHE_CONTROL_PRESERVATION
|
|
656
|
+
);
|
|
657
|
+
preservedResponse.headers.set("x-robots-tag", "noindex");
|
|
658
|
+
if (waitUntil && caches) {
|
|
659
|
+
waitUntil(
|
|
660
|
+
caches.open(ASSET_PRESERVATION_CACHE).then(
|
|
661
|
+
(assetPreservationCache) => assetPreservationCache.put(request.url, preservedResponse)
|
|
662
|
+
).catch((err) => {
|
|
663
|
+
logError(err);
|
|
664
|
+
})
|
|
665
|
+
);
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
if (asset.contentType.startsWith("text/html") && metadata.analytics?.version === ANALYTICS_VERSION2) {
|
|
669
|
+
return new HTMLRewriter().on("body", {
|
|
670
|
+
element(e) {
|
|
671
|
+
e.append(
|
|
672
|
+
`<!-- Cloudflare Pages Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "${metadata.analytics?.token}"}'></script><!-- Cloudflare Pages Analytics -->`,
|
|
673
|
+
{ html: true }
|
|
674
|
+
);
|
|
675
|
+
}
|
|
676
|
+
}).transform(response);
|
|
677
|
+
}
|
|
678
|
+
return response;
|
|
679
|
+
} catch (err) {
|
|
680
|
+
logError(err);
|
|
681
|
+
return new InternalServerErrorResponse(err);
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
async function notFound() {
|
|
685
|
+
if (caches) {
|
|
686
|
+
const assetPreservationCache = await caches.open(
|
|
687
|
+
ASSET_PRESERVATION_CACHE
|
|
688
|
+
);
|
|
689
|
+
const preservedResponse = await assetPreservationCache.match(request.url);
|
|
690
|
+
if (preservedResponse) {
|
|
691
|
+
return preservedResponse;
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
let cwd = pathname;
|
|
695
|
+
while (cwd) {
|
|
696
|
+
cwd = cwd.slice(0, cwd.lastIndexOf("/"));
|
|
697
|
+
if (assetEntry = await findAssetEntryForPath(`${cwd}/404.html`)) {
|
|
698
|
+
let content;
|
|
699
|
+
try {
|
|
700
|
+
content = negotiateContent(request, assetEntry);
|
|
701
|
+
} catch (err) {
|
|
702
|
+
return new NotAcceptableResponse();
|
|
703
|
+
}
|
|
704
|
+
const assetKey = getAssetKey(assetEntry, content);
|
|
705
|
+
try {
|
|
706
|
+
const { body, contentType } = await fetchAsset(assetKey);
|
|
707
|
+
const response = new NotFoundResponse(body);
|
|
708
|
+
response.headers.set("content-type", contentType);
|
|
709
|
+
return response;
|
|
710
|
+
} catch (err) {
|
|
711
|
+
logError(err);
|
|
712
|
+
return new InternalServerErrorResponse(err);
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
return await generateNotFoundResponse(
|
|
717
|
+
request,
|
|
718
|
+
findAssetEntryForPath,
|
|
719
|
+
serveAsset
|
|
720
|
+
);
|
|
721
|
+
}
|
|
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
|
+
}
|
|
744
|
+
function parseQualityWeightedList(list = "") {
|
|
745
|
+
const items = {};
|
|
746
|
+
list.replace(/\s/g, "").split(",").forEach((el) => {
|
|
747
|
+
const [item, weight] = el.split(";q=");
|
|
748
|
+
items[item] = weight ? parseFloat(weight) : 1;
|
|
749
|
+
});
|
|
750
|
+
return items;
|
|
751
|
+
}
|
|
752
|
+
function isCacheable(request) {
|
|
753
|
+
return !request.headers.has("authorization") && !request.headers.has("range");
|
|
754
|
+
}
|
|
755
|
+
function hasFileExtension(path) {
|
|
756
|
+
return /\/.+\.[a-z0-9]+$/i.test(path);
|
|
757
|
+
}
|
|
758
|
+
function isPreview(url) {
|
|
759
|
+
if (url.hostname.endsWith(".pages.dev")) {
|
|
760
|
+
return url.hostname.split(".").length > 3 ? true : false;
|
|
761
|
+
}
|
|
762
|
+
return false;
|
|
763
|
+
}
|
|
764
|
+
var ASSET_PRESERVATION_CACHE, CACHE_CONTROL_PRESERVATION, CACHE_CONTROL_BROWSER, REDIRECTS_VERSION2, HEADERS_VERSION2, HEADERS_VERSION_V1, ANALYTICS_VERSION2, ALLOWED_EARLY_HINT_LINK_ATTRIBUTES;
|
|
765
|
+
var init_handler = __esm({
|
|
766
|
+
"../pages-shared/asset-server/handler.ts"() {
|
|
767
|
+
init_responses();
|
|
768
|
+
init_rulesEngine();
|
|
769
|
+
init_url();
|
|
770
|
+
ASSET_PRESERVATION_CACHE = "assetPreservationCache";
|
|
771
|
+
CACHE_CONTROL_PRESERVATION = "public, s-maxage=604800";
|
|
772
|
+
CACHE_CONTROL_BROWSER = "public, max-age=0, must-revalidate";
|
|
773
|
+
REDIRECTS_VERSION2 = 1;
|
|
774
|
+
HEADERS_VERSION2 = 2;
|
|
775
|
+
HEADERS_VERSION_V1 = 1;
|
|
776
|
+
ANALYTICS_VERSION2 = 1;
|
|
777
|
+
ALLOWED_EARLY_HINT_LINK_ATTRIBUTES = ["rel", "as", "href"];
|
|
778
|
+
}
|
|
779
|
+
});
|
|
8
780
|
|
|
9
781
|
// src/miniflare-cli/index.ts
|
|
10
|
-
import {
|
|
782
|
+
import {
|
|
783
|
+
DurableObjectNamespace,
|
|
784
|
+
DurableObjectStub
|
|
785
|
+
} from "@miniflare/durable-objects";
|
|
786
|
+
import { upgradingFetch } from "@miniflare/web-sockets";
|
|
787
|
+
import {
|
|
788
|
+
Log as MiniflareLog,
|
|
789
|
+
LogLevel as MiniflareLogLevel,
|
|
790
|
+
Miniflare,
|
|
791
|
+
Request as MiniflareRequest,
|
|
792
|
+
Response as MiniflareResponse
|
|
793
|
+
} from "miniflare";
|
|
11
794
|
|
|
12
795
|
// ../../node_modules/yargs/lib/platform-shims/esm.mjs
|
|
13
796
|
import { notStrictEqual, strictEqual } from "assert";
|
|
14
797
|
|
|
15
|
-
// ../../node_modules/cliui/build/lib/index.js
|
|
798
|
+
// ../../node_modules/yargs/node_modules/cliui/build/lib/index.js
|
|
16
799
|
var align = {
|
|
17
800
|
right: alignRight,
|
|
18
801
|
center: alignCenter
|
|
@@ -23,9 +806,9 @@ var bottom = 2;
|
|
|
23
806
|
var left = 3;
|
|
24
807
|
var UI = class {
|
|
25
808
|
constructor(opts) {
|
|
26
|
-
var
|
|
809
|
+
var _a2;
|
|
27
810
|
this.width = opts.width;
|
|
28
|
-
this.wrap = (
|
|
811
|
+
this.wrap = (_a2 = opts.wrap) !== null && _a2 !== void 0 ? _a2 : true;
|
|
29
812
|
this.rows = [];
|
|
30
813
|
}
|
|
31
814
|
span(...args) {
|
|
@@ -266,7 +1049,7 @@ function cliui(opts, _mixin) {
|
|
|
266
1049
|
});
|
|
267
1050
|
}
|
|
268
1051
|
|
|
269
|
-
// ../../node_modules/cliui/build/lib/string-utils.js
|
|
1052
|
+
// ../../node_modules/yargs/node_modules/cliui/build/lib/string-utils.js
|
|
270
1053
|
var ansi = new RegExp("\x1B(?:\\[(?:\\d+[ABCDEFGJKSTm]|\\d+;\\d+[Hfm]|\\d+;\\d+;\\d+m|6n|s|u|\\?25[lh])|\\w)", "g");
|
|
271
1054
|
function stripAnsi(str) {
|
|
272
1055
|
return str.replace(ansi, "");
|
|
@@ -287,7 +1070,7 @@ function wrap(str, width) {
|
|
|
287
1070
|
return wrapped;
|
|
288
1071
|
}
|
|
289
1072
|
|
|
290
|
-
// ../../node_modules/cliui/index.mjs
|
|
1073
|
+
// ../../node_modules/yargs/node_modules/cliui/index.mjs
|
|
291
1074
|
function ui(opts) {
|
|
292
1075
|
return cliui(opts, {
|
|
293
1076
|
stringWidth: (str) => {
|
|
@@ -578,9 +1361,9 @@ var YargsParser = class {
|
|
|
578
1361
|
let m;
|
|
579
1362
|
let next;
|
|
580
1363
|
let value;
|
|
581
|
-
if (arg !== "--" && isUnknownOptionAsArg(arg)) {
|
|
1364
|
+
if (arg !== "--" && /^-/.test(arg) && isUnknownOptionAsArg(arg)) {
|
|
582
1365
|
pushPositional(arg);
|
|
583
|
-
} else if (truncatedArg.match(
|
|
1366
|
+
} else if (truncatedArg.match(/^---+(=|$)/)) {
|
|
584
1367
|
pushPositional(arg);
|
|
585
1368
|
continue;
|
|
586
1369
|
} else if (arg.match(/^--.+=/) || !configuration["short-option-groups"] && arg.match(/^-.+=/)) {
|
|
@@ -1263,9 +2046,13 @@ function stripQuotes(val) {
|
|
|
1263
2046
|
|
|
1264
2047
|
// ../../node_modules/yargs/node_modules/yargs-parser/build/lib/index.js
|
|
1265
2048
|
import { readFileSync } from "fs";
|
|
2049
|
+
var _a;
|
|
2050
|
+
var _b;
|
|
2051
|
+
var _c;
|
|
1266
2052
|
var minNodeVersion = process && process.env && process.env.YARGS_MIN_NODE_VERSION ? Number(process.env.YARGS_MIN_NODE_VERSION) : 12;
|
|
1267
|
-
|
|
1268
|
-
|
|
2053
|
+
var nodeVersion = (_b = (_a = process === null || process === void 0 ? void 0 : process.versions) === null || _a === void 0 ? void 0 : _a.node) !== null && _b !== void 0 ? _b : (_c = process === null || process === void 0 ? void 0 : process.version) === null || _c === void 0 ? void 0 : _c.slice(1);
|
|
2054
|
+
if (nodeVersion) {
|
|
2055
|
+
const major = Number(nodeVersion.match(/^([^.]+)/)[1]);
|
|
1269
2056
|
if (major < minNodeVersion) {
|
|
1270
2057
|
throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);
|
|
1271
2058
|
}
|
|
@@ -1328,7 +2115,9 @@ var YError = class extends Error {
|
|
|
1328
2115
|
constructor(msg) {
|
|
1329
2116
|
super(msg || "yargs error");
|
|
1330
2117
|
this.name = "YError";
|
|
1331
|
-
Error.captureStackTrace
|
|
2118
|
+
if (Error.captureStackTrace) {
|
|
2119
|
+
Error.captureStackTrace(this, YError);
|
|
2120
|
+
}
|
|
1332
2121
|
}
|
|
1333
2122
|
};
|
|
1334
2123
|
|
|
@@ -1528,7 +2317,7 @@ try {
|
|
|
1528
2317
|
} catch (e) {
|
|
1529
2318
|
__dirname = process.cwd();
|
|
1530
2319
|
}
|
|
1531
|
-
var mainFilename = __dirname.
|
|
2320
|
+
var mainFilename = __dirname.substring(0, __dirname.lastIndexOf("node_modules"));
|
|
1532
2321
|
var esm_default = {
|
|
1533
2322
|
assert: {
|
|
1534
2323
|
notStrictEqual,
|
|
@@ -1913,6 +2702,7 @@ var CommandInstance = class {
|
|
|
1913
2702
|
const builder = commandHandler.builder;
|
|
1914
2703
|
let innerYargs = yargs;
|
|
1915
2704
|
if (isCommandBuilderCallback(builder)) {
|
|
2705
|
+
yargs.getInternalMethods().getUsageInstance().freeze();
|
|
1916
2706
|
const builderOutput = builder(yargs.getInternalMethods().reset(aliases), helpOrVersionSet);
|
|
1917
2707
|
if (isPromise(builderOutput)) {
|
|
1918
2708
|
return builderOutput.then((output) => {
|
|
@@ -1921,6 +2711,7 @@ var CommandInstance = class {
|
|
|
1921
2711
|
});
|
|
1922
2712
|
}
|
|
1923
2713
|
} else if (isCommandBuilderOptionDefinitions(builder)) {
|
|
2714
|
+
yargs.getInternalMethods().getUsageInstance().freeze();
|
|
1924
2715
|
innerYargs = yargs.getInternalMethods().reset(aliases);
|
|
1925
2716
|
Object.keys(commandHandler.builder).forEach((key) => {
|
|
1926
2717
|
innerYargs.option(key, builder[key]);
|
|
@@ -1954,15 +2745,7 @@ var CommandInstance = class {
|
|
|
1954
2745
|
pc.push(c);
|
|
1955
2746
|
return `$0 ${pc.join(" ")}`;
|
|
1956
2747
|
}
|
|
1957
|
-
|
|
1958
|
-
let positionalMap = {};
|
|
1959
|
-
if (helpOnly)
|
|
1960
|
-
return innerArgv;
|
|
1961
|
-
if (!yargs.getInternalMethods().getHasOutput()) {
|
|
1962
|
-
positionalMap = this.populatePositionals(commandHandler, innerArgv, currentContext, yargs);
|
|
1963
|
-
}
|
|
1964
|
-
const middlewares = this.globalMiddleware.getMiddleware().slice(0).concat(commandHandler.middlewares);
|
|
1965
|
-
innerArgv = applyMiddleware(innerArgv, yargs, middlewares, true);
|
|
2748
|
+
handleValidationAndGetResult(isDefaultCommand, commandHandler, innerArgv, currentContext, aliases, yargs, middlewares, positionalMap) {
|
|
1966
2749
|
if (!yargs.getInternalMethods().getHasOutput()) {
|
|
1967
2750
|
const validation2 = yargs.getInternalMethods().runValidation(aliases, positionalMap, yargs.parsed.error, isDefaultCommand);
|
|
1968
2751
|
innerArgv = maybeAsyncResult(innerArgv, (result) => {
|
|
@@ -1997,6 +2780,17 @@ var CommandInstance = class {
|
|
|
1997
2780
|
}
|
|
1998
2781
|
return innerArgv;
|
|
1999
2782
|
}
|
|
2783
|
+
applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, innerArgv, currentContext, helpOnly, aliases, yargs) {
|
|
2784
|
+
let positionalMap = {};
|
|
2785
|
+
if (helpOnly)
|
|
2786
|
+
return innerArgv;
|
|
2787
|
+
if (!yargs.getInternalMethods().getHasOutput()) {
|
|
2788
|
+
positionalMap = this.populatePositionals(commandHandler, innerArgv, currentContext, yargs);
|
|
2789
|
+
}
|
|
2790
|
+
const middlewares = this.globalMiddleware.getMiddleware().slice(0).concat(commandHandler.middlewares);
|
|
2791
|
+
const maybePromiseArgv = applyMiddleware(innerArgv, yargs, middlewares, true);
|
|
2792
|
+
return isPromise(maybePromiseArgv) ? maybePromiseArgv.then((resolvedInnerArgv) => this.handleValidationAndGetResult(isDefaultCommand, commandHandler, resolvedInnerArgv, currentContext, aliases, yargs, middlewares, positionalMap)) : this.handleValidationAndGetResult(isDefaultCommand, commandHandler, maybePromiseArgv, currentContext, aliases, yargs, middlewares, positionalMap);
|
|
2793
|
+
}
|
|
2000
2794
|
populatePositionals(commandHandler, argv, context, yargs) {
|
|
2001
2795
|
argv._ = argv._.slice(context.commands.length);
|
|
2002
2796
|
const demanded = commandHandler.demanded.slice(0);
|
|
@@ -2083,12 +2877,11 @@ var CommandInstance = class {
|
|
|
2083
2877
|
Object.keys(positionalMap).forEach((key) => {
|
|
2084
2878
|
positionalKeys.push(...parsed.aliases[key]);
|
|
2085
2879
|
});
|
|
2086
|
-
const defaults = yargs.getOptions().default;
|
|
2087
2880
|
Object.keys(parsed.argv).forEach((key) => {
|
|
2088
2881
|
if (positionalKeys.includes(key)) {
|
|
2089
2882
|
if (!positionalMap[key])
|
|
2090
2883
|
positionalMap[key] = parsed.argv[key];
|
|
2091
|
-
if (!
|
|
2884
|
+
if (!this.isInConfigs(yargs, key) && !this.isDefaulted(yargs, key) && Object.prototype.hasOwnProperty.call(argv, key) && Object.prototype.hasOwnProperty.call(parsed.argv, key) && (Array.isArray(argv[key]) || Array.isArray(parsed.argv[key]))) {
|
|
2092
2885
|
argv[key] = [].concat(argv[key], parsed.argv[key]);
|
|
2093
2886
|
} else {
|
|
2094
2887
|
argv[key] = parsed.argv[key];
|
|
@@ -2097,6 +2890,14 @@ var CommandInstance = class {
|
|
|
2097
2890
|
});
|
|
2098
2891
|
}
|
|
2099
2892
|
}
|
|
2893
|
+
isDefaulted(yargs, key) {
|
|
2894
|
+
const { default: defaults } = yargs.getOptions();
|
|
2895
|
+
return Object.prototype.hasOwnProperty.call(defaults, key) || Object.prototype.hasOwnProperty.call(defaults, this.shim.Parser.camelCase(key));
|
|
2896
|
+
}
|
|
2897
|
+
isInConfigs(yargs, key) {
|
|
2898
|
+
const { configObjects } = yargs.getOptions();
|
|
2899
|
+
return configObjects.some((c) => Object.prototype.hasOwnProperty.call(c, key)) || configObjects.some((c) => Object.prototype.hasOwnProperty.call(c, this.shim.Parser.camelCase(key)));
|
|
2900
|
+
}
|
|
2100
2901
|
runDefaultBuilderOn(yargs) {
|
|
2101
2902
|
if (!this.defaultCommand)
|
|
2102
2903
|
return;
|
|
@@ -2324,13 +3125,16 @@ function usage(yargs, shim3) {
|
|
|
2324
3125
|
wrapSet = true;
|
|
2325
3126
|
wrap2 = cols;
|
|
2326
3127
|
};
|
|
2327
|
-
|
|
3128
|
+
self.getWrap = () => {
|
|
3129
|
+
if (shim3.getEnv("YARGS_DISABLE_WRAP")) {
|
|
3130
|
+
return null;
|
|
3131
|
+
}
|
|
2328
3132
|
if (!wrapSet) {
|
|
2329
3133
|
wrap2 = windowWidth();
|
|
2330
3134
|
wrapSet = true;
|
|
2331
3135
|
}
|
|
2332
3136
|
return wrap2;
|
|
2333
|
-
}
|
|
3137
|
+
};
|
|
2334
3138
|
const deferY18nLookupPrefix = "__yargsString__:";
|
|
2335
3139
|
self.deferY18nLookup = (str) => deferY18nLookupPrefix + str;
|
|
2336
3140
|
self.help = function help() {
|
|
@@ -2354,7 +3158,7 @@ function usage(yargs, shim3) {
|
|
|
2354
3158
|
acc[key] = true;
|
|
2355
3159
|
return acc;
|
|
2356
3160
|
}, {}));
|
|
2357
|
-
const theWrap = getWrap();
|
|
3161
|
+
const theWrap = self.getWrap();
|
|
2358
3162
|
const ui2 = shim3.cliui({
|
|
2359
3163
|
width: theWrap,
|
|
2360
3164
|
wrap: !!theWrap
|
|
@@ -2494,7 +3298,8 @@ function usage(yargs, shim3) {
|
|
|
2494
3298
|
padding: [0, 2, 0, 2 + getIndentation(kswitch)],
|
|
2495
3299
|
width: maxWidth(switches, theWrap) + 4
|
|
2496
3300
|
}, desc);
|
|
2497
|
-
|
|
3301
|
+
const shouldHideOptionExtras = yargs.getInternalMethods().getUsageConfiguration()["hide-types"] === true;
|
|
3302
|
+
if (extra && !shouldHideOptionExtras)
|
|
2498
3303
|
ui2.div({ text: extra, padding: [0, 0, 0, 2], align: "right" });
|
|
2499
3304
|
else
|
|
2500
3305
|
ui2.div();
|
|
@@ -2755,7 +3560,7 @@ var completionZshTemplate = `#compdef {{app_name}}
|
|
|
2755
3560
|
# yargs command completion script
|
|
2756
3561
|
#
|
|
2757
3562
|
# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc
|
|
2758
|
-
# or {{app_path}} {{completion_command}} >> ~/.
|
|
3563
|
+
# or {{app_path}} {{completion_command}} >> ~/.zprofile on OSX.
|
|
2759
3564
|
#
|
|
2760
3565
|
_{{app_name}}_yargs_completions()
|
|
2761
3566
|
{
|
|
@@ -2773,7 +3578,7 @@ compdef _{{app_name}}_yargs_completions {{app_name}}
|
|
|
2773
3578
|
// ../../node_modules/yargs/build/lib/completion.js
|
|
2774
3579
|
var Completion = class {
|
|
2775
3580
|
constructor(yargs, usage2, command2, shim3) {
|
|
2776
|
-
var
|
|
3581
|
+
var _a2, _b2, _c2;
|
|
2777
3582
|
this.yargs = yargs;
|
|
2778
3583
|
this.usage = usage2;
|
|
2779
3584
|
this.command = command2;
|
|
@@ -2782,7 +3587,7 @@ var Completion = class {
|
|
|
2782
3587
|
this.aliases = null;
|
|
2783
3588
|
this.customCompletionFunction = null;
|
|
2784
3589
|
this.indexAfterLastReset = 0;
|
|
2785
|
-
this.zshShell = (
|
|
3590
|
+
this.zshShell = (_c2 = ((_a2 = this.shim.getEnv("SHELL")) === null || _a2 === void 0 ? void 0 : _a2.includes("zsh")) || ((_b2 = this.shim.getEnv("ZSH_NAME")) === null || _b2 === void 0 ? void 0 : _b2.includes("zsh"))) !== null && _c2 !== void 0 ? _c2 : false;
|
|
2786
3591
|
}
|
|
2787
3592
|
defaultCompletion(args, argv, current, done) {
|
|
2788
3593
|
const handlers = this.command.getCommandHandlers();
|
|
@@ -2827,7 +3632,7 @@ var Completion = class {
|
|
|
2827
3632
|
Object.keys(options.key).forEach((key) => {
|
|
2828
3633
|
const negable = !!options.configuration["boolean-negation"] && options.boolean.includes(key);
|
|
2829
3634
|
const isPositionalKey = positionalKeys.includes(key);
|
|
2830
|
-
if (!isPositionalKey && !options.hiddenOptions.includes(key) && !this.argsContainKey(args,
|
|
3635
|
+
if (!isPositionalKey && !options.hiddenOptions.includes(key) && !this.argsContainKey(args, key, negable)) {
|
|
2831
3636
|
this.completeOptionKey(key, completions, current);
|
|
2832
3637
|
if (negable && !!options.default[key])
|
|
2833
3638
|
this.completeOptionKey(`no-${key}`, completions, current);
|
|
@@ -2892,20 +3697,22 @@ var Completion = class {
|
|
|
2892
3697
|
const choices = this.getPreviousArgChoices(args);
|
|
2893
3698
|
return choices !== void 0 && choices.length > 0;
|
|
2894
3699
|
}
|
|
2895
|
-
argsContainKey(args,
|
|
2896
|
-
|
|
3700
|
+
argsContainKey(args, key, negable) {
|
|
3701
|
+
const argsContains = (s) => args.indexOf((/^[^0-9]$/.test(s) ? "-" : "--") + s) !== -1;
|
|
3702
|
+
if (argsContains(key))
|
|
2897
3703
|
return true;
|
|
2898
|
-
if (negable &&
|
|
3704
|
+
if (negable && argsContains(`no-${key}`))
|
|
2899
3705
|
return true;
|
|
2900
3706
|
if (this.aliases) {
|
|
2901
3707
|
for (const alias of this.aliases[key]) {
|
|
2902
|
-
if (
|
|
3708
|
+
if (argsContains(alias))
|
|
2903
3709
|
return true;
|
|
2904
3710
|
}
|
|
2905
3711
|
}
|
|
2906
3712
|
return false;
|
|
2907
3713
|
}
|
|
2908
3714
|
completeOptionKey(key, completions, current) {
|
|
3715
|
+
var _a2, _b2, _c2;
|
|
2909
3716
|
const descs = this.usage.getDescriptions();
|
|
2910
3717
|
const startsByTwoDashes = (s) => /^--/.test(s);
|
|
2911
3718
|
const isShortOption = (s) => /^[^0-9]$/.test(s);
|
|
@@ -2913,8 +3720,13 @@ var Completion = class {
|
|
|
2913
3720
|
if (!this.zshShell) {
|
|
2914
3721
|
completions.push(dashes + key);
|
|
2915
3722
|
} else {
|
|
2916
|
-
const
|
|
2917
|
-
|
|
3723
|
+
const aliasKey = (_a2 = this === null || this === void 0 ? void 0 : this.aliases) === null || _a2 === void 0 ? void 0 : _a2[key].find((alias) => {
|
|
3724
|
+
const desc2 = descs[alias];
|
|
3725
|
+
return typeof desc2 === "string" && desc2.length > 0;
|
|
3726
|
+
});
|
|
3727
|
+
const descFromAlias = aliasKey ? descs[aliasKey] : void 0;
|
|
3728
|
+
const desc = (_c2 = (_b2 = descs[key]) !== null && _b2 !== void 0 ? _b2 : descFromAlias) !== null && _c2 !== void 0 ? _c2 : "";
|
|
3729
|
+
completions.push(dashes + `${key.replace(/:/g, "\\:")}:${desc.replace("__yargsString__:", "").replace(/(\r\n|\n|\r)/gm, " ")}`);
|
|
2918
3730
|
}
|
|
2919
3731
|
}
|
|
2920
3732
|
customCompletion(args, argv, current, done) {
|
|
@@ -3059,7 +3871,7 @@ ${customMsgs.join("\n")}` : "";
|
|
|
3059
3871
|
}
|
|
3060
3872
|
};
|
|
3061
3873
|
self.unknownArguments = function unknownArguments(argv, aliases, positionalMap, isDefaultCommand, checkPositionals = true) {
|
|
3062
|
-
var
|
|
3874
|
+
var _a2;
|
|
3063
3875
|
const commandKeys = yargs.getInternalMethods().getCommandInstance().getCommands();
|
|
3064
3876
|
const unknown = [];
|
|
3065
3877
|
const currentContext = yargs.getInternalMethods().getContext();
|
|
@@ -3077,7 +3889,7 @@ ${customMsgs.join("\n")}` : "";
|
|
|
3077
3889
|
}
|
|
3078
3890
|
if (checkPositionals) {
|
|
3079
3891
|
const demandedCommands = yargs.getDemandedCommands();
|
|
3080
|
-
const maxNonOptDemanded = ((
|
|
3892
|
+
const maxNonOptDemanded = ((_a2 = demandedCommands._) === null || _a2 === void 0 ? void 0 : _a2.max) || 0;
|
|
3081
3893
|
const expected = currentContext.commands.length + maxNonOptDemanded;
|
|
3082
3894
|
if (expected < argv._.length) {
|
|
3083
3895
|
argv._.slice(expected).forEach((key) => {
|
|
@@ -3377,6 +4189,7 @@ var _YargsInstance_strict;
|
|
|
3377
4189
|
var _YargsInstance_strictCommands;
|
|
3378
4190
|
var _YargsInstance_strictOptions;
|
|
3379
4191
|
var _YargsInstance_usage;
|
|
4192
|
+
var _YargsInstance_usageConfig;
|
|
3380
4193
|
var _YargsInstance_versionOpt;
|
|
3381
4194
|
var _YargsInstance_validation;
|
|
3382
4195
|
function YargsFactory(_shim) {
|
|
@@ -3400,6 +4213,7 @@ var kEmitWarning = Symbol("emitWarning");
|
|
|
3400
4213
|
var kFreeze = Symbol("freeze");
|
|
3401
4214
|
var kGetDollarZero = Symbol("getDollarZero");
|
|
3402
4215
|
var kGetParserConfiguration = Symbol("getParserConfiguration");
|
|
4216
|
+
var kGetUsageConfiguration = Symbol("getUsageConfiguration");
|
|
3403
4217
|
var kGuessLocale = Symbol("guessLocale");
|
|
3404
4218
|
var kGuessVersion = Symbol("guessVersion");
|
|
3405
4219
|
var kParsePositionalNumbers = Symbol("parsePositionalNumbers");
|
|
@@ -3464,6 +4278,7 @@ var YargsInstance = class {
|
|
|
3464
4278
|
_YargsInstance_strictCommands.set(this, false);
|
|
3465
4279
|
_YargsInstance_strictOptions.set(this, false);
|
|
3466
4280
|
_YargsInstance_usage.set(this, void 0);
|
|
4281
|
+
_YargsInstance_usageConfig.set(this, {});
|
|
3467
4282
|
_YargsInstance_versionOpt.set(this, null);
|
|
3468
4283
|
_YargsInstance_validation.set(this, void 0);
|
|
3469
4284
|
__classPrivateFieldSet(this, _YargsInstance_shim, shim3, "f");
|
|
@@ -3573,7 +4388,7 @@ var YargsInstance = class {
|
|
|
3573
4388
|
__classPrivateFieldGet(this, _YargsInstance_options, "f").key[keys] = true;
|
|
3574
4389
|
__classPrivateFieldGet(this, _YargsInstance_globalMiddleware, "f").addCoerceMiddleware((argv, yargs) => {
|
|
3575
4390
|
let aliases;
|
|
3576
|
-
const shouldCoerce = Object.hasOwnProperty.call(argv, keys);
|
|
4391
|
+
const shouldCoerce = Object.prototype.hasOwnProperty.call(argv, keys);
|
|
3577
4392
|
if (!shouldCoerce) {
|
|
3578
4393
|
return argv;
|
|
3579
4394
|
}
|
|
@@ -3888,7 +4703,7 @@ var YargsInstance = class {
|
|
|
3888
4703
|
}
|
|
3889
4704
|
locale(locale) {
|
|
3890
4705
|
argsert("[string]", [locale], arguments.length);
|
|
3891
|
-
if (
|
|
4706
|
+
if (locale === void 0) {
|
|
3892
4707
|
this[kGuessLocale]();
|
|
3893
4708
|
return __classPrivateFieldGet(this, _YargsInstance_shim, "f").y18n.getLocale();
|
|
3894
4709
|
}
|
|
@@ -4010,7 +4825,10 @@ var YargsInstance = class {
|
|
|
4010
4825
|
this.skipValidation(key);
|
|
4011
4826
|
}
|
|
4012
4827
|
const desc = opt.describe || opt.description || opt.desc;
|
|
4013
|
-
this
|
|
4828
|
+
const descriptions = __classPrivateFieldGet(this, _YargsInstance_usage, "f").getDescriptions();
|
|
4829
|
+
if (!Object.prototype.hasOwnProperty.call(descriptions, key) || typeof desc === "string") {
|
|
4830
|
+
this.describe(key, desc);
|
|
4831
|
+
}
|
|
4014
4832
|
if (opt.hidden) {
|
|
4015
4833
|
this.hide(key);
|
|
4016
4834
|
}
|
|
@@ -4251,6 +5069,11 @@ var YargsInstance = class {
|
|
|
4251
5069
|
return this;
|
|
4252
5070
|
}
|
|
4253
5071
|
}
|
|
5072
|
+
usageConfiguration(config) {
|
|
5073
|
+
argsert("<object>", [config], arguments.length);
|
|
5074
|
+
__classPrivateFieldSet(this, _YargsInstance_usageConfig, config, "f");
|
|
5075
|
+
return this;
|
|
5076
|
+
}
|
|
4254
5077
|
version(opt, msg, ver) {
|
|
4255
5078
|
const defaultVersionOpt = "version";
|
|
4256
5079
|
argsert("[boolean|string] [string] [string]", [opt, msg, ver], arguments.length);
|
|
@@ -4284,7 +5107,7 @@ var YargsInstance = class {
|
|
|
4284
5107
|
__classPrivateFieldGet(this, _YargsInstance_usage, "f").wrap(cols);
|
|
4285
5108
|
return this;
|
|
4286
5109
|
}
|
|
4287
|
-
[(_YargsInstance_command = /* @__PURE__ */ new WeakMap(), _YargsInstance_cwd = /* @__PURE__ */ new WeakMap(), _YargsInstance_context = /* @__PURE__ */ new WeakMap(), _YargsInstance_completion = /* @__PURE__ */ new WeakMap(), _YargsInstance_completionCommand = /* @__PURE__ */ new WeakMap(), _YargsInstance_defaultShowHiddenOpt = /* @__PURE__ */ new WeakMap(), _YargsInstance_exitError = /* @__PURE__ */ new WeakMap(), _YargsInstance_detectLocale = /* @__PURE__ */ new WeakMap(), _YargsInstance_emittedWarnings = /* @__PURE__ */ new WeakMap(), _YargsInstance_exitProcess = /* @__PURE__ */ new WeakMap(), _YargsInstance_frozens = /* @__PURE__ */ new WeakMap(), _YargsInstance_globalMiddleware = /* @__PURE__ */ new WeakMap(), _YargsInstance_groups = /* @__PURE__ */ new WeakMap(), _YargsInstance_hasOutput = /* @__PURE__ */ new WeakMap(), _YargsInstance_helpOpt = /* @__PURE__ */ new WeakMap(), _YargsInstance_isGlobalContext = /* @__PURE__ */ new WeakMap(), _YargsInstance_logger = /* @__PURE__ */ new WeakMap(), _YargsInstance_output = /* @__PURE__ */ new WeakMap(), _YargsInstance_options = /* @__PURE__ */ new WeakMap(), _YargsInstance_parentRequire = /* @__PURE__ */ new WeakMap(), _YargsInstance_parserConfig = /* @__PURE__ */ new WeakMap(), _YargsInstance_parseFn = /* @__PURE__ */ new WeakMap(), _YargsInstance_parseContext = /* @__PURE__ */ new WeakMap(), _YargsInstance_pkgs = /* @__PURE__ */ new WeakMap(), _YargsInstance_preservedGroups = /* @__PURE__ */ new WeakMap(), _YargsInstance_processArgs = /* @__PURE__ */ new WeakMap(), _YargsInstance_recommendCommands = /* @__PURE__ */ new WeakMap(), _YargsInstance_shim = /* @__PURE__ */ new WeakMap(), _YargsInstance_strict = /* @__PURE__ */ new WeakMap(), _YargsInstance_strictCommands = /* @__PURE__ */ new WeakMap(), _YargsInstance_strictOptions = /* @__PURE__ */ new WeakMap(), _YargsInstance_usage = /* @__PURE__ */ new WeakMap(), _YargsInstance_versionOpt = /* @__PURE__ */ new WeakMap(), _YargsInstance_validation = /* @__PURE__ */ new WeakMap(), kCopyDoubleDash)](argv) {
|
|
5110
|
+
[(_YargsInstance_command = /* @__PURE__ */ new WeakMap(), _YargsInstance_cwd = /* @__PURE__ */ new WeakMap(), _YargsInstance_context = /* @__PURE__ */ new WeakMap(), _YargsInstance_completion = /* @__PURE__ */ new WeakMap(), _YargsInstance_completionCommand = /* @__PURE__ */ new WeakMap(), _YargsInstance_defaultShowHiddenOpt = /* @__PURE__ */ new WeakMap(), _YargsInstance_exitError = /* @__PURE__ */ new WeakMap(), _YargsInstance_detectLocale = /* @__PURE__ */ new WeakMap(), _YargsInstance_emittedWarnings = /* @__PURE__ */ new WeakMap(), _YargsInstance_exitProcess = /* @__PURE__ */ new WeakMap(), _YargsInstance_frozens = /* @__PURE__ */ new WeakMap(), _YargsInstance_globalMiddleware = /* @__PURE__ */ new WeakMap(), _YargsInstance_groups = /* @__PURE__ */ new WeakMap(), _YargsInstance_hasOutput = /* @__PURE__ */ new WeakMap(), _YargsInstance_helpOpt = /* @__PURE__ */ new WeakMap(), _YargsInstance_isGlobalContext = /* @__PURE__ */ new WeakMap(), _YargsInstance_logger = /* @__PURE__ */ new WeakMap(), _YargsInstance_output = /* @__PURE__ */ new WeakMap(), _YargsInstance_options = /* @__PURE__ */ new WeakMap(), _YargsInstance_parentRequire = /* @__PURE__ */ new WeakMap(), _YargsInstance_parserConfig = /* @__PURE__ */ new WeakMap(), _YargsInstance_parseFn = /* @__PURE__ */ new WeakMap(), _YargsInstance_parseContext = /* @__PURE__ */ new WeakMap(), _YargsInstance_pkgs = /* @__PURE__ */ new WeakMap(), _YargsInstance_preservedGroups = /* @__PURE__ */ new WeakMap(), _YargsInstance_processArgs = /* @__PURE__ */ new WeakMap(), _YargsInstance_recommendCommands = /* @__PURE__ */ new WeakMap(), _YargsInstance_shim = /* @__PURE__ */ new WeakMap(), _YargsInstance_strict = /* @__PURE__ */ new WeakMap(), _YargsInstance_strictCommands = /* @__PURE__ */ new WeakMap(), _YargsInstance_strictOptions = /* @__PURE__ */ new WeakMap(), _YargsInstance_usage = /* @__PURE__ */ new WeakMap(), _YargsInstance_usageConfig = /* @__PURE__ */ new WeakMap(), _YargsInstance_versionOpt = /* @__PURE__ */ new WeakMap(), _YargsInstance_validation = /* @__PURE__ */ new WeakMap(), kCopyDoubleDash)](argv) {
|
|
4288
5111
|
if (!argv._ || !argv["--"])
|
|
4289
5112
|
return argv;
|
|
4290
5113
|
argv._.push.apply(argv._, argv["--"]);
|
|
@@ -4376,6 +5199,9 @@ var YargsInstance = class {
|
|
|
4376
5199
|
[kGetParserConfiguration]() {
|
|
4377
5200
|
return __classPrivateFieldGet(this, _YargsInstance_parserConfig, "f");
|
|
4378
5201
|
}
|
|
5202
|
+
[kGetUsageConfiguration]() {
|
|
5203
|
+
return __classPrivateFieldGet(this, _YargsInstance_usageConfig, "f");
|
|
5204
|
+
}
|
|
4379
5205
|
[kGuessLocale]() {
|
|
4380
5206
|
if (!__classPrivateFieldGet(this, _YargsInstance_detectLocale, "f"))
|
|
4381
5207
|
return;
|
|
@@ -4459,20 +5285,20 @@ var YargsInstance = class {
|
|
|
4459
5285
|
return this;
|
|
4460
5286
|
}
|
|
4461
5287
|
[kUnfreeze]() {
|
|
4462
|
-
var
|
|
5288
|
+
var _a2, _b2, _c2, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
4463
5289
|
const frozen = __classPrivateFieldGet(this, _YargsInstance_frozens, "f").pop();
|
|
4464
5290
|
assertNotStrictEqual(frozen, void 0, __classPrivateFieldGet(this, _YargsInstance_shim, "f"));
|
|
4465
5291
|
let configObjects;
|
|
4466
|
-
|
|
5292
|
+
_a2 = this, _b2 = this, _c2 = this, _d = this, _e = this, _f = this, _g = this, _h = this, _j = this, _k = this, _l = this, _m = this, {
|
|
4467
5293
|
options: { set value(_o) {
|
|
4468
|
-
__classPrivateFieldSet(
|
|
5294
|
+
__classPrivateFieldSet(_a2, _YargsInstance_options, _o, "f");
|
|
4469
5295
|
} }.value,
|
|
4470
5296
|
configObjects,
|
|
4471
5297
|
exitProcess: { set value(_o) {
|
|
4472
|
-
__classPrivateFieldSet(
|
|
5298
|
+
__classPrivateFieldSet(_b2, _YargsInstance_exitProcess, _o, "f");
|
|
4473
5299
|
} }.value,
|
|
4474
5300
|
groups: { set value(_o) {
|
|
4475
|
-
__classPrivateFieldSet(
|
|
5301
|
+
__classPrivateFieldSet(_c2, _YargsInstance_groups, _o, "f");
|
|
4476
5302
|
} }.value,
|
|
4477
5303
|
output: { set value(_o) {
|
|
4478
5304
|
__classPrivateFieldSet(_d, _YargsInstance_output, _o, "f");
|
|
@@ -4523,6 +5349,7 @@ var YargsInstance = class {
|
|
|
4523
5349
|
getLoggerInstance: this[kGetLoggerInstance].bind(this),
|
|
4524
5350
|
getParseContext: this[kGetParseContext].bind(this),
|
|
4525
5351
|
getParserConfiguration: this[kGetParserConfiguration].bind(this),
|
|
5352
|
+
getUsageConfiguration: this[kGetUsageConfiguration].bind(this),
|
|
4526
5353
|
getUsageInstance: this[kGetUsageInstance].bind(this),
|
|
4527
5354
|
getValidationInstance: this[kGetValidationInstance].bind(this),
|
|
4528
5355
|
hasParseCallback: this[kHasParseCallback].bind(this),
|
|
@@ -4816,14 +5643,580 @@ function isYargsInstance(y) {
|
|
|
4816
5643
|
var Yargs = YargsFactory(esm_default);
|
|
4817
5644
|
var yargs_default = Yargs;
|
|
4818
5645
|
|
|
4819
|
-
// src/
|
|
4820
|
-
var
|
|
4821
|
-
|
|
4822
|
-
|
|
4823
|
-
|
|
5646
|
+
// src/errors.ts
|
|
5647
|
+
var FatalError = class extends Error {
|
|
5648
|
+
constructor(message, code) {
|
|
5649
|
+
super(message);
|
|
5650
|
+
this.code = code;
|
|
5651
|
+
}
|
|
5652
|
+
};
|
|
5653
|
+
|
|
5654
|
+
// src/miniflare-cli/assets.ts
|
|
5655
|
+
import { existsSync, lstatSync, readFileSync as readFileSync5 } from "node:fs";
|
|
5656
|
+
import { join } from "node:path";
|
|
5657
|
+
|
|
5658
|
+
// ../pages-shared/metadata-generator/constants.ts
|
|
5659
|
+
var REDIRECTS_VERSION = 1;
|
|
5660
|
+
var HEADERS_VERSION = 2;
|
|
5661
|
+
var ANALYTICS_VERSION = 1;
|
|
5662
|
+
var PERMITTED_STATUS_CODES = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);
|
|
5663
|
+
var HEADER_SEPARATOR = ":";
|
|
5664
|
+
var MAX_LINE_LENGTH = 2e3;
|
|
5665
|
+
var MAX_HEADER_RULES = 100;
|
|
5666
|
+
var MAX_DYNAMIC_REDIRECT_RULES = 100;
|
|
5667
|
+
var MAX_STATIC_REDIRECT_RULES = 2e3;
|
|
5668
|
+
var UNSET_OPERATOR = "! ";
|
|
5669
|
+
var SPLAT_REGEX = /\*/g;
|
|
5670
|
+
var PLACEHOLDER_REGEX = /:\w+/g;
|
|
5671
|
+
|
|
5672
|
+
// ../pages-shared/metadata-generator/createMetadataObject.ts
|
|
5673
|
+
function createMetadataObject({
|
|
5674
|
+
redirects,
|
|
5675
|
+
headers,
|
|
5676
|
+
webAnalyticsToken,
|
|
5677
|
+
deploymentId,
|
|
5678
|
+
failOpen,
|
|
5679
|
+
logger = (_message) => {
|
|
5680
|
+
}
|
|
5681
|
+
}) {
|
|
5682
|
+
return {
|
|
5683
|
+
...constructRedirects({ redirects, logger }),
|
|
5684
|
+
...constructHeaders({ headers, logger }),
|
|
5685
|
+
...constructWebAnalytics({ webAnalyticsToken, logger }),
|
|
5686
|
+
deploymentId,
|
|
5687
|
+
failOpen
|
|
5688
|
+
};
|
|
5689
|
+
}
|
|
5690
|
+
function constructRedirects({
|
|
5691
|
+
redirects,
|
|
5692
|
+
logger
|
|
5693
|
+
}) {
|
|
5694
|
+
if (!redirects)
|
|
5695
|
+
return {};
|
|
5696
|
+
const num_valid = redirects.rules.length;
|
|
5697
|
+
const num_invalid = redirects.invalid.length;
|
|
5698
|
+
logger(
|
|
5699
|
+
`Parsed ${num_valid} valid redirect rule${num_valid === 1 ? "" : "s"}.`
|
|
5700
|
+
);
|
|
5701
|
+
if (num_invalid > 0) {
|
|
5702
|
+
logger(`Found invalid redirect lines:`);
|
|
5703
|
+
for (const { line, lineNumber, message } of redirects.invalid) {
|
|
5704
|
+
if (line)
|
|
5705
|
+
logger(` - ${lineNumber ? `#${lineNumber}: ` : ""}${line}`);
|
|
5706
|
+
logger(` ${message}`);
|
|
5707
|
+
}
|
|
5708
|
+
}
|
|
5709
|
+
if (num_valid === 0) {
|
|
5710
|
+
return {};
|
|
5711
|
+
}
|
|
5712
|
+
const staticRedirects = {};
|
|
5713
|
+
const dynamicRedirects = {};
|
|
5714
|
+
let canCreateStaticRule = true;
|
|
5715
|
+
for (const rule of redirects.rules) {
|
|
5716
|
+
if (!rule.from.match(SPLAT_REGEX) && !rule.from.match(PLACEHOLDER_REGEX)) {
|
|
5717
|
+
if (canCreateStaticRule) {
|
|
5718
|
+
staticRedirects[rule.from] = {
|
|
5719
|
+
status: rule.status,
|
|
5720
|
+
to: rule.to,
|
|
5721
|
+
lineNumber: rule.lineNumber
|
|
5722
|
+
};
|
|
5723
|
+
continue;
|
|
5724
|
+
} else {
|
|
5725
|
+
logger(
|
|
5726
|
+
`Info: the redirect rule ${rule.from} \u2192 ${rule.status} ${rule.to} could be made more performant by bringing it above any lines with splats or placeholders.`
|
|
5727
|
+
);
|
|
5728
|
+
}
|
|
5729
|
+
}
|
|
5730
|
+
dynamicRedirects[rule.from] = { status: rule.status, to: rule.to };
|
|
5731
|
+
canCreateStaticRule = false;
|
|
5732
|
+
}
|
|
5733
|
+
return {
|
|
5734
|
+
redirects: {
|
|
5735
|
+
version: REDIRECTS_VERSION,
|
|
5736
|
+
staticRules: staticRedirects,
|
|
5737
|
+
rules: dynamicRedirects
|
|
5738
|
+
}
|
|
5739
|
+
};
|
|
5740
|
+
}
|
|
5741
|
+
function constructHeaders({
|
|
5742
|
+
headers,
|
|
5743
|
+
logger
|
|
5744
|
+
}) {
|
|
5745
|
+
if (!headers)
|
|
5746
|
+
return {};
|
|
5747
|
+
const num_valid = headers.rules.length;
|
|
5748
|
+
const num_invalid = headers.invalid.length;
|
|
5749
|
+
logger(`Parsed ${num_valid} valid header rule${num_valid === 1 ? "" : "s"}.`);
|
|
5750
|
+
if (num_invalid > 0) {
|
|
5751
|
+
logger(`Found invalid header lines:`);
|
|
5752
|
+
for (const { line, lineNumber, message } of headers.invalid) {
|
|
5753
|
+
if (line)
|
|
5754
|
+
logger(` - ${lineNumber ? `#${lineNumber}: ` : ""} ${line}`);
|
|
5755
|
+
logger(` ${message}`);
|
|
5756
|
+
}
|
|
5757
|
+
}
|
|
5758
|
+
if (num_valid === 0) {
|
|
5759
|
+
return {};
|
|
5760
|
+
}
|
|
5761
|
+
const rules = {};
|
|
5762
|
+
for (const rule of headers.rules) {
|
|
5763
|
+
rules[rule.path] = {};
|
|
5764
|
+
if (Object.keys(rule.headers).length) {
|
|
5765
|
+
rules[rule.path].set = rule.headers;
|
|
5766
|
+
}
|
|
5767
|
+
if (rule.unsetHeaders.length) {
|
|
5768
|
+
rules[rule.path].unset = rule.unsetHeaders;
|
|
5769
|
+
}
|
|
5770
|
+
}
|
|
5771
|
+
return {
|
|
5772
|
+
headers: {
|
|
5773
|
+
version: HEADERS_VERSION,
|
|
5774
|
+
rules
|
|
5775
|
+
}
|
|
5776
|
+
};
|
|
5777
|
+
}
|
|
5778
|
+
function constructWebAnalytics({
|
|
5779
|
+
webAnalyticsToken
|
|
5780
|
+
}) {
|
|
5781
|
+
if (!webAnalyticsToken)
|
|
5782
|
+
return {};
|
|
5783
|
+
return {
|
|
5784
|
+
analytics: {
|
|
5785
|
+
version: ANALYTICS_VERSION,
|
|
5786
|
+
token: webAnalyticsToken
|
|
5787
|
+
}
|
|
5788
|
+
};
|
|
5789
|
+
}
|
|
5790
|
+
|
|
5791
|
+
// ../pages-shared/metadata-generator/validateURL.ts
|
|
5792
|
+
var extractPathname = (path = "/", includeSearch, includeHash) => {
|
|
5793
|
+
if (!path.startsWith("/"))
|
|
5794
|
+
path = `/${path}`;
|
|
5795
|
+
const url = new URL(`//${path}`, "relative://");
|
|
5796
|
+
return `${url.pathname}${includeSearch ? url.search : ""}${includeHash ? url.hash : ""}`;
|
|
5797
|
+
};
|
|
5798
|
+
var URL_REGEX = /^https:\/\/+(?<host>[^/]+)\/?(?<path>.*)/;
|
|
5799
|
+
var PATH_REGEX = /^\//;
|
|
5800
|
+
var validateUrl = (token, onlyRelative = false, includeSearch = false, includeHash = false) => {
|
|
5801
|
+
const host = URL_REGEX.exec(token);
|
|
5802
|
+
if (host && host.groups && host.groups.host) {
|
|
5803
|
+
if (onlyRelative)
|
|
5804
|
+
return [
|
|
5805
|
+
void 0,
|
|
5806
|
+
`Only relative URLs are allowed. Skipping absolute URL ${token}.`
|
|
5807
|
+
];
|
|
5808
|
+
return [
|
|
5809
|
+
`https://${host.groups.host}${extractPathname(
|
|
5810
|
+
host.groups.path,
|
|
5811
|
+
includeSearch,
|
|
5812
|
+
includeHash
|
|
5813
|
+
)}`,
|
|
5814
|
+
void 0
|
|
5815
|
+
];
|
|
5816
|
+
} else {
|
|
5817
|
+
if (!token.startsWith("/") && onlyRelative)
|
|
5818
|
+
token = `/${token}`;
|
|
5819
|
+
const path = PATH_REGEX.exec(token);
|
|
5820
|
+
if (path) {
|
|
5821
|
+
try {
|
|
5822
|
+
return [extractPathname(token, includeSearch, includeHash), void 0];
|
|
5823
|
+
} catch {
|
|
5824
|
+
return [void 0, `Error parsing URL segment ${token}. Skipping.`];
|
|
5825
|
+
}
|
|
5826
|
+
}
|
|
5827
|
+
}
|
|
5828
|
+
return [
|
|
5829
|
+
void 0,
|
|
5830
|
+
onlyRelative ? "URLs should begin with a forward-slash." : 'URLs should either be relative (e.g. begin with a forward-slash), or use HTTPS (e.g. begin with "https://").'
|
|
5831
|
+
];
|
|
5832
|
+
};
|
|
5833
|
+
|
|
5834
|
+
// ../pages-shared/metadata-generator/parseHeaders.ts
|
|
5835
|
+
var LINE_IS_PROBABLY_A_PATH = new RegExp(/^([^\s]+:\/\/|^\/)/);
|
|
5836
|
+
function parseHeaders(input) {
|
|
5837
|
+
const lines = input.split("\n");
|
|
5838
|
+
const rules = [];
|
|
5839
|
+
const invalid = [];
|
|
5840
|
+
let rule = void 0;
|
|
5841
|
+
for (let i = 0; i < lines.length; i++) {
|
|
5842
|
+
const line = lines[i].trim();
|
|
5843
|
+
if (line.length === 0 || line.startsWith("#"))
|
|
5844
|
+
continue;
|
|
5845
|
+
if (line.length > MAX_LINE_LENGTH) {
|
|
5846
|
+
invalid.push({
|
|
5847
|
+
message: `Ignoring line ${i + 1} as it exceeds the maximum allowed length of ${MAX_LINE_LENGTH}.`
|
|
5848
|
+
});
|
|
5849
|
+
continue;
|
|
5850
|
+
}
|
|
5851
|
+
if (LINE_IS_PROBABLY_A_PATH.test(line)) {
|
|
5852
|
+
if (rules.length >= MAX_HEADER_RULES) {
|
|
5853
|
+
invalid.push({
|
|
5854
|
+
message: `Maximum number of rules supported is ${MAX_HEADER_RULES}. Skipping remaining ${lines.length - i} lines of file.`
|
|
5855
|
+
});
|
|
5856
|
+
break;
|
|
5857
|
+
}
|
|
5858
|
+
if (rule) {
|
|
5859
|
+
if (isValidRule(rule)) {
|
|
5860
|
+
rules.push({
|
|
5861
|
+
path: rule.path,
|
|
5862
|
+
headers: rule.headers,
|
|
5863
|
+
unsetHeaders: rule.unsetHeaders
|
|
5864
|
+
});
|
|
5865
|
+
} else {
|
|
5866
|
+
invalid.push({
|
|
5867
|
+
line: rule.line,
|
|
5868
|
+
lineNumber: i + 1,
|
|
5869
|
+
message: "No headers specified"
|
|
5870
|
+
});
|
|
5871
|
+
}
|
|
5872
|
+
}
|
|
5873
|
+
const [path, pathError] = validateUrl(line);
|
|
5874
|
+
if (pathError) {
|
|
5875
|
+
invalid.push({
|
|
5876
|
+
line,
|
|
5877
|
+
lineNumber: i + 1,
|
|
5878
|
+
message: pathError
|
|
5879
|
+
});
|
|
5880
|
+
rule = void 0;
|
|
5881
|
+
continue;
|
|
5882
|
+
}
|
|
5883
|
+
rule = {
|
|
5884
|
+
path,
|
|
5885
|
+
line,
|
|
5886
|
+
headers: {},
|
|
5887
|
+
unsetHeaders: []
|
|
5888
|
+
};
|
|
5889
|
+
continue;
|
|
5890
|
+
}
|
|
5891
|
+
if (!line.includes(HEADER_SEPARATOR)) {
|
|
5892
|
+
if (!rule) {
|
|
5893
|
+
invalid.push({
|
|
5894
|
+
line,
|
|
5895
|
+
lineNumber: i + 1,
|
|
5896
|
+
message: "Expected a path beginning with at least one forward-slash"
|
|
5897
|
+
});
|
|
5898
|
+
} else {
|
|
5899
|
+
if (line.trim().startsWith(UNSET_OPERATOR)) {
|
|
5900
|
+
rule.unsetHeaders.push(line.trim().replace(UNSET_OPERATOR, ""));
|
|
5901
|
+
} else {
|
|
5902
|
+
invalid.push({
|
|
5903
|
+
line,
|
|
5904
|
+
lineNumber: i + 1,
|
|
5905
|
+
message: "Expected a colon-separated header pair (e.g. name: value)"
|
|
5906
|
+
});
|
|
5907
|
+
}
|
|
5908
|
+
}
|
|
5909
|
+
continue;
|
|
5910
|
+
}
|
|
5911
|
+
const [rawName, ...rawValue] = line.split(HEADER_SEPARATOR);
|
|
5912
|
+
const name = rawName.trim().toLowerCase();
|
|
5913
|
+
if (name.includes(" ")) {
|
|
5914
|
+
invalid.push({
|
|
5915
|
+
line,
|
|
5916
|
+
lineNumber: i + 1,
|
|
5917
|
+
message: "Header name cannot include spaces"
|
|
5918
|
+
});
|
|
5919
|
+
continue;
|
|
5920
|
+
}
|
|
5921
|
+
const value = rawValue.join(HEADER_SEPARATOR).trim();
|
|
5922
|
+
if (name === "") {
|
|
5923
|
+
invalid.push({
|
|
5924
|
+
line,
|
|
5925
|
+
lineNumber: i + 1,
|
|
5926
|
+
message: "No header name specified"
|
|
5927
|
+
});
|
|
5928
|
+
continue;
|
|
5929
|
+
}
|
|
5930
|
+
if (value === "") {
|
|
5931
|
+
invalid.push({
|
|
5932
|
+
line,
|
|
5933
|
+
lineNumber: i + 1,
|
|
5934
|
+
message: "No header value specified"
|
|
5935
|
+
});
|
|
5936
|
+
continue;
|
|
5937
|
+
}
|
|
5938
|
+
if (!rule) {
|
|
5939
|
+
invalid.push({
|
|
5940
|
+
line,
|
|
5941
|
+
lineNumber: i + 1,
|
|
5942
|
+
message: `Path should come before header (${name}: ${value})`
|
|
5943
|
+
});
|
|
5944
|
+
continue;
|
|
5945
|
+
}
|
|
5946
|
+
const existingValues = rule.headers[name];
|
|
5947
|
+
rule.headers[name] = existingValues ? `${existingValues}, ${value}` : value;
|
|
5948
|
+
}
|
|
5949
|
+
if (rule) {
|
|
5950
|
+
if (isValidRule(rule)) {
|
|
5951
|
+
rules.push({
|
|
5952
|
+
path: rule.path,
|
|
5953
|
+
headers: rule.headers,
|
|
5954
|
+
unsetHeaders: rule.unsetHeaders
|
|
5955
|
+
});
|
|
5956
|
+
} else {
|
|
5957
|
+
invalid.push({ line: rule.line, message: "No headers specified" });
|
|
5958
|
+
}
|
|
5959
|
+
}
|
|
5960
|
+
return {
|
|
5961
|
+
rules,
|
|
5962
|
+
invalid
|
|
5963
|
+
};
|
|
5964
|
+
}
|
|
5965
|
+
function isValidRule(rule) {
|
|
5966
|
+
return Object.keys(rule.headers).length > 0 || rule.unsetHeaders.length > 0;
|
|
5967
|
+
}
|
|
5968
|
+
|
|
5969
|
+
// ../pages-shared/metadata-generator/parseRedirects.ts
|
|
5970
|
+
function parseRedirects(input) {
|
|
5971
|
+
const lines = input.split("\n");
|
|
5972
|
+
const rules = [];
|
|
5973
|
+
const seen_paths = /* @__PURE__ */ new Set();
|
|
5974
|
+
const invalid = [];
|
|
5975
|
+
let staticRules = 0;
|
|
5976
|
+
let dynamicRules = 0;
|
|
5977
|
+
let canCreateStaticRule = true;
|
|
5978
|
+
for (let i = 0; i < lines.length; i++) {
|
|
5979
|
+
const line = lines[i].trim();
|
|
5980
|
+
if (line.length === 0 || line.startsWith("#"))
|
|
5981
|
+
continue;
|
|
5982
|
+
if (line.length > MAX_LINE_LENGTH) {
|
|
5983
|
+
invalid.push({
|
|
5984
|
+
message: `Ignoring line ${i + 1} as it exceeds the maximum allowed length of ${MAX_LINE_LENGTH}.`
|
|
5985
|
+
});
|
|
5986
|
+
continue;
|
|
5987
|
+
}
|
|
5988
|
+
const tokens = line.split(/\s+/);
|
|
5989
|
+
if (tokens.length < 2 || tokens.length > 3) {
|
|
5990
|
+
invalid.push({
|
|
5991
|
+
line,
|
|
5992
|
+
lineNumber: i + 1,
|
|
5993
|
+
message: `Expected exactly 2 or 3 whitespace-separated tokens. Got ${tokens.length}.`
|
|
5994
|
+
});
|
|
5995
|
+
continue;
|
|
5996
|
+
}
|
|
5997
|
+
const [str_from, str_to, str_status = "302"] = tokens;
|
|
5998
|
+
const fromResult = validateUrl(str_from, true, false, false);
|
|
5999
|
+
if (fromResult[0] === void 0) {
|
|
6000
|
+
invalid.push({
|
|
6001
|
+
line,
|
|
6002
|
+
lineNumber: i + 1,
|
|
6003
|
+
message: fromResult[1]
|
|
6004
|
+
});
|
|
6005
|
+
continue;
|
|
6006
|
+
}
|
|
6007
|
+
const from = fromResult[0];
|
|
6008
|
+
if (canCreateStaticRule && !from.match(SPLAT_REGEX) && !from.match(PLACEHOLDER_REGEX)) {
|
|
6009
|
+
staticRules += 1;
|
|
6010
|
+
if (staticRules > MAX_STATIC_REDIRECT_RULES) {
|
|
6011
|
+
invalid.push({
|
|
6012
|
+
message: `Maximum number of static rules supported is ${MAX_STATIC_REDIRECT_RULES}. Skipping line.`
|
|
6013
|
+
});
|
|
6014
|
+
continue;
|
|
6015
|
+
}
|
|
6016
|
+
} else {
|
|
6017
|
+
dynamicRules += 1;
|
|
6018
|
+
canCreateStaticRule = false;
|
|
6019
|
+
if (dynamicRules > MAX_DYNAMIC_REDIRECT_RULES) {
|
|
6020
|
+
invalid.push({
|
|
6021
|
+
message: `Maximum number of dynamic rules supported is ${MAX_DYNAMIC_REDIRECT_RULES}. Skipping remaining ${lines.length - i} lines of file.`
|
|
6022
|
+
});
|
|
6023
|
+
break;
|
|
6024
|
+
}
|
|
6025
|
+
}
|
|
6026
|
+
const toResult = validateUrl(str_to, false, true, true);
|
|
6027
|
+
if (toResult[0] === void 0) {
|
|
6028
|
+
invalid.push({
|
|
6029
|
+
line,
|
|
6030
|
+
lineNumber: i + 1,
|
|
6031
|
+
message: toResult[1]
|
|
6032
|
+
});
|
|
6033
|
+
continue;
|
|
6034
|
+
}
|
|
6035
|
+
const to = toResult[0];
|
|
6036
|
+
const status = Number(str_status);
|
|
6037
|
+
if (isNaN(status) || !PERMITTED_STATUS_CODES.has(status)) {
|
|
6038
|
+
invalid.push({
|
|
6039
|
+
line,
|
|
6040
|
+
lineNumber: i + 1,
|
|
6041
|
+
message: `Valid status codes are 301, 302 (default), 303, 307, or 308. Got ${str_status}.`
|
|
6042
|
+
});
|
|
6043
|
+
continue;
|
|
6044
|
+
}
|
|
6045
|
+
if (seen_paths.has(from)) {
|
|
6046
|
+
invalid.push({
|
|
6047
|
+
line,
|
|
6048
|
+
lineNumber: i + 1,
|
|
6049
|
+
message: `Ignoring duplicate rule for path ${from}.`
|
|
6050
|
+
});
|
|
6051
|
+
continue;
|
|
6052
|
+
}
|
|
6053
|
+
seen_paths.add(from);
|
|
6054
|
+
rules.push({ from, to, status, lineNumber: i + 1 });
|
|
6055
|
+
}
|
|
6056
|
+
return {
|
|
6057
|
+
rules,
|
|
6058
|
+
invalid
|
|
6059
|
+
};
|
|
6060
|
+
}
|
|
6061
|
+
|
|
6062
|
+
// src/miniflare-cli/assets.ts
|
|
6063
|
+
var import_mime = __toESM(require_mime());
|
|
6064
|
+
import { watch } from "chokidar";
|
|
6065
|
+
|
|
6066
|
+
// src/pages/hash.ts
|
|
6067
|
+
import { readFileSync as readFileSync4 } from "node:fs";
|
|
6068
|
+
import { extname as extname2 } from "node:path";
|
|
6069
|
+
import { hash as blake3hash } from "blake3-wasm";
|
|
6070
|
+
var hashFile = (filepath) => {
|
|
6071
|
+
const contents = readFileSync4(filepath);
|
|
6072
|
+
const base64Contents = contents.toString("base64");
|
|
6073
|
+
const extension = extname2(filepath).substring(1);
|
|
6074
|
+
return blake3hash(base64Contents + extension).toString("hex").slice(0, 32);
|
|
4824
6075
|
};
|
|
4825
|
-
|
|
4826
|
-
|
|
6076
|
+
|
|
6077
|
+
// src/miniflare-cli/assets.ts
|
|
6078
|
+
async function generateASSETSBinding(options) {
|
|
6079
|
+
const assetsFetch = options.directory !== void 0 ? await generateAssetsFetch(options.directory, options.log, options.tre) : invalidAssetsFetch;
|
|
6080
|
+
const miniflare = options.tre ? await import("@miniflare/tre") : await import("@miniflare/core");
|
|
6081
|
+
const Request = miniflare.Request;
|
|
6082
|
+
const Response2 = miniflare.Response;
|
|
6083
|
+
const fetch = options.tre ? miniflare.fetch : (await import("@miniflare/web-sockets")).upgradingFetch;
|
|
6084
|
+
return async function(miniflareRequest) {
|
|
6085
|
+
if (options.proxyPort) {
|
|
6086
|
+
try {
|
|
6087
|
+
const url = new URL(miniflareRequest.url);
|
|
6088
|
+
url.host = `localhost:${options.proxyPort}`;
|
|
6089
|
+
const proxyRequest = new Request(url, miniflareRequest);
|
|
6090
|
+
if (proxyRequest.headers.get("Upgrade") === "websocket") {
|
|
6091
|
+
proxyRequest.headers.delete("Sec-WebSocket-Accept");
|
|
6092
|
+
proxyRequest.headers.delete("Sec-WebSocket-Key");
|
|
6093
|
+
}
|
|
6094
|
+
return await fetch(proxyRequest);
|
|
6095
|
+
} catch (thrown) {
|
|
6096
|
+
options.log.error(new Error(`Could not proxy request: ${thrown}`));
|
|
6097
|
+
return new Response2(`[wrangler] Could not proxy request: ${thrown}`, {
|
|
6098
|
+
status: 502
|
|
6099
|
+
});
|
|
6100
|
+
}
|
|
6101
|
+
} else {
|
|
6102
|
+
try {
|
|
6103
|
+
return await assetsFetch(miniflareRequest);
|
|
6104
|
+
} catch (thrown) {
|
|
6105
|
+
options.log.error(new Error(`Could not serve static asset: ${thrown}`));
|
|
6106
|
+
return new Response2(
|
|
6107
|
+
`[wrangler] Could not serve static asset: ${thrown}`,
|
|
6108
|
+
{ status: 502 }
|
|
6109
|
+
);
|
|
6110
|
+
}
|
|
6111
|
+
}
|
|
6112
|
+
};
|
|
6113
|
+
}
|
|
6114
|
+
async function generateAssetsFetch(directory, log, tre) {
|
|
6115
|
+
const polyfill2 = tre ? (await Promise.resolve().then(() => (init_miniflare_tre(), miniflare_tre_exports))).default : (await Promise.resolve().then(() => (init_miniflare(), miniflare_exports))).default;
|
|
6116
|
+
await polyfill2();
|
|
6117
|
+
const miniflare = tre ? await import("@miniflare/tre") : await import("@miniflare/core");
|
|
6118
|
+
const Request = miniflare.Request;
|
|
6119
|
+
const { generateHandler: generateHandler2, parseQualityWeightedList: parseQualityWeightedList2 } = await Promise.resolve().then(() => (init_handler(), handler_exports));
|
|
6120
|
+
const headersFile = join(directory, "_headers");
|
|
6121
|
+
const redirectsFile = join(directory, "_redirects");
|
|
6122
|
+
const workerFile = join(directory, "_worker.js");
|
|
6123
|
+
const ignoredFiles = [headersFile, redirectsFile, workerFile];
|
|
6124
|
+
let redirects;
|
|
6125
|
+
if (existsSync(redirectsFile)) {
|
|
6126
|
+
const contents = readFileSync5(redirectsFile, "utf-8");
|
|
6127
|
+
redirects = parseRedirects(contents);
|
|
6128
|
+
}
|
|
6129
|
+
let headers;
|
|
6130
|
+
if (existsSync(headersFile)) {
|
|
6131
|
+
const contents = readFileSync5(headersFile, "utf-8");
|
|
6132
|
+
headers = parseHeaders(contents);
|
|
6133
|
+
}
|
|
6134
|
+
let metadata = createMetadataObject({
|
|
6135
|
+
redirects,
|
|
6136
|
+
headers,
|
|
6137
|
+
logger: log.warn.bind(log)
|
|
6138
|
+
});
|
|
6139
|
+
watch([headersFile, redirectsFile], { persistent: true }).on(
|
|
6140
|
+
"change",
|
|
6141
|
+
(path) => {
|
|
6142
|
+
switch (path) {
|
|
6143
|
+
case headersFile: {
|
|
6144
|
+
log.log("_headers modified. Re-evaluating...");
|
|
6145
|
+
const contents = readFileSync5(headersFile).toString();
|
|
6146
|
+
headers = parseHeaders(contents);
|
|
6147
|
+
break;
|
|
6148
|
+
}
|
|
6149
|
+
case redirectsFile: {
|
|
6150
|
+
log.log("_redirects modified. Re-evaluating...");
|
|
6151
|
+
const contents = readFileSync5(redirectsFile).toString();
|
|
6152
|
+
redirects = parseRedirects(contents);
|
|
6153
|
+
break;
|
|
6154
|
+
}
|
|
6155
|
+
}
|
|
6156
|
+
metadata = createMetadataObject({
|
|
6157
|
+
redirects,
|
|
6158
|
+
headers,
|
|
6159
|
+
logger: log.warn
|
|
6160
|
+
});
|
|
6161
|
+
}
|
|
6162
|
+
);
|
|
6163
|
+
const generateResponse = async (request) => {
|
|
6164
|
+
const assetKeyEntryMap = /* @__PURE__ */ new Map();
|
|
6165
|
+
return await generateHandler2({
|
|
6166
|
+
request,
|
|
6167
|
+
metadata,
|
|
6168
|
+
xServerEnvHeader: "dev",
|
|
6169
|
+
logError: console.error,
|
|
6170
|
+
findAssetEntryForPath: async (path) => {
|
|
6171
|
+
const filepath = join(directory, path);
|
|
6172
|
+
if (existsSync(filepath) && lstatSync(filepath).isFile() && !ignoredFiles.includes(filepath)) {
|
|
6173
|
+
const hash = hashFile(filepath);
|
|
6174
|
+
assetKeyEntryMap.set(hash, filepath);
|
|
6175
|
+
return hash;
|
|
6176
|
+
}
|
|
6177
|
+
return null;
|
|
6178
|
+
},
|
|
6179
|
+
getAssetKey: (assetEntry) => {
|
|
6180
|
+
return assetEntry;
|
|
6181
|
+
},
|
|
6182
|
+
negotiateContent: (contentRequest) => {
|
|
6183
|
+
let rawAcceptEncoding;
|
|
6184
|
+
if (contentRequest.cf && "clientAcceptEncoding" in contentRequest.cf && contentRequest.cf.clientAcceptEncoding) {
|
|
6185
|
+
rawAcceptEncoding = contentRequest.cf.clientAcceptEncoding;
|
|
6186
|
+
} else {
|
|
6187
|
+
rawAcceptEncoding = contentRequest.headers.get("Accept-Encoding") || void 0;
|
|
6188
|
+
}
|
|
6189
|
+
const acceptEncoding = parseQualityWeightedList2(rawAcceptEncoding);
|
|
6190
|
+
if (acceptEncoding["identity"] === 0 || acceptEncoding["*"] === 0 && acceptEncoding["identity"] === void 0) {
|
|
6191
|
+
throw new Error("No acceptable encodings available");
|
|
6192
|
+
}
|
|
6193
|
+
return { encoding: null };
|
|
6194
|
+
},
|
|
6195
|
+
fetchAsset: async (assetKey) => {
|
|
6196
|
+
const filepath = assetKeyEntryMap.get(assetKey);
|
|
6197
|
+
if (!filepath) {
|
|
6198
|
+
throw new Error(
|
|
6199
|
+
"Could not fetch asset. Please file an issue on GitHub (https://github.com/cloudflare/workers-sdk/issues/new/choose) with reproduction steps."
|
|
6200
|
+
);
|
|
6201
|
+
}
|
|
6202
|
+
const body = readFileSync5(filepath);
|
|
6203
|
+
let contentType = (0, import_mime.getType)(filepath) || "application/octet-stream";
|
|
6204
|
+
if (contentType.startsWith("text/") && !contentType.includes("charset")) {
|
|
6205
|
+
contentType = `${contentType}; charset=utf-8`;
|
|
6206
|
+
}
|
|
6207
|
+
return { body, contentType };
|
|
6208
|
+
}
|
|
6209
|
+
});
|
|
6210
|
+
};
|
|
6211
|
+
return async (input, init) => {
|
|
6212
|
+
const request = new Request(input, init);
|
|
6213
|
+
return await generateResponse(request);
|
|
6214
|
+
};
|
|
6215
|
+
}
|
|
6216
|
+
var invalidAssetsFetch = () => {
|
|
6217
|
+
throw new Error(
|
|
6218
|
+
"Trying to fetch assets directly when there is no `directory` option specified."
|
|
6219
|
+
);
|
|
4827
6220
|
};
|
|
4828
6221
|
|
|
4829
6222
|
// src/miniflare-cli/request-context.ts
|
|
@@ -4846,41 +6239,157 @@ var getRequestContextCheckOptions = async () => {
|
|
|
4846
6239
|
};
|
|
4847
6240
|
|
|
4848
6241
|
// src/miniflare-cli/index.ts
|
|
6242
|
+
var MiniflareNoOpLog = class extends MiniflareLog {
|
|
6243
|
+
log() {
|
|
6244
|
+
}
|
|
6245
|
+
error(message) {
|
|
6246
|
+
throw message;
|
|
6247
|
+
}
|
|
6248
|
+
};
|
|
4849
6249
|
async function main() {
|
|
4850
|
-
const args = await yargs_default(hideBin(process.argv)).help(false).version(false).
|
|
4851
|
-
choices: enumKeys(LogLevel)
|
|
4852
|
-
}).argv;
|
|
4853
|
-
const logLevel = LogLevel[args.log ?? "INFO"];
|
|
6250
|
+
const args = await yargs_default(hideBin(process.argv)).help(false).version(false).argv;
|
|
4854
6251
|
const requestContextCheckOptions = await getRequestContextCheckOptions();
|
|
4855
6252
|
const config = {
|
|
4856
6253
|
...JSON.parse(args._[0] ?? "{}"),
|
|
4857
|
-
...requestContextCheckOptions
|
|
4858
|
-
log: new Log(logLevel)
|
|
6254
|
+
...requestContextCheckOptions
|
|
4859
6255
|
};
|
|
4860
|
-
|
|
4861
|
-
|
|
4862
|
-
|
|
4863
|
-
const
|
|
6256
|
+
let logLevelString = config.logLevel.toUpperCase();
|
|
6257
|
+
if (logLevelString === "LOG")
|
|
6258
|
+
logLevelString = "INFO";
|
|
6259
|
+
const logLevel = MiniflareLogLevel[logLevelString];
|
|
6260
|
+
config.log = logLevel === MiniflareLogLevel.NONE ? new MiniflareNoOpLog() : new MiniflareLog(logLevel);
|
|
6261
|
+
if (logLevel === MiniflareLogLevel.DEBUG) {
|
|
6262
|
+
console.log("MINIFLARE OPTIONS:\n", JSON.stringify(config, null, 2));
|
|
6263
|
+
}
|
|
6264
|
+
config.bindings = {
|
|
6265
|
+
...config.bindings,
|
|
6266
|
+
...config.externalDurableObjects && Object.fromEntries(
|
|
6267
|
+
Object.entries(
|
|
6268
|
+
config.externalDurableObjects
|
|
6269
|
+
).map(([binding, { name, host, port }]) => {
|
|
6270
|
+
const factory = () => {
|
|
6271
|
+
throw new FatalError(
|
|
6272
|
+
"An external Durable Object instance's state has somehow been attempted to be accessed.",
|
|
6273
|
+
1
|
|
6274
|
+
);
|
|
6275
|
+
};
|
|
6276
|
+
const namespace = new DurableObjectNamespace(name, factory);
|
|
6277
|
+
namespace.get = (id) => {
|
|
6278
|
+
const stub = new DurableObjectStub(factory, id);
|
|
6279
|
+
stub.fetch = (...reqArgs) => {
|
|
6280
|
+
const requestFromArgs = new MiniflareRequest(...reqArgs);
|
|
6281
|
+
const url = new URL(requestFromArgs.url);
|
|
6282
|
+
url.host = host;
|
|
6283
|
+
if (port !== void 0)
|
|
6284
|
+
url.port = port.toString();
|
|
6285
|
+
const request = new MiniflareRequest(
|
|
6286
|
+
url.toString(),
|
|
6287
|
+
requestFromArgs
|
|
6288
|
+
);
|
|
6289
|
+
request.headers.set("x-miniflare-durable-object-name", name);
|
|
6290
|
+
request.headers.set(
|
|
6291
|
+
"x-miniflare-durable-object-id",
|
|
6292
|
+
id.toString()
|
|
6293
|
+
);
|
|
6294
|
+
return upgradingFetch(request);
|
|
6295
|
+
};
|
|
6296
|
+
return stub;
|
|
6297
|
+
};
|
|
6298
|
+
return [binding, namespace];
|
|
6299
|
+
})
|
|
6300
|
+
)
|
|
6301
|
+
};
|
|
6302
|
+
let mf;
|
|
6303
|
+
let durableObjectsMf = void 0;
|
|
6304
|
+
let durableObjectsMfPort = void 0;
|
|
4864
6305
|
try {
|
|
4865
|
-
|
|
6306
|
+
if (args._[1]) {
|
|
6307
|
+
const opts = JSON.parse(
|
|
6308
|
+
args._[1]
|
|
6309
|
+
);
|
|
6310
|
+
if (isNaN(opts.proxyPort || NaN) && !opts.directory) {
|
|
6311
|
+
throw new Error(
|
|
6312
|
+
"MiniflareCLIOptions: built in service bindings set to true, but no port or directory provided"
|
|
6313
|
+
);
|
|
6314
|
+
}
|
|
6315
|
+
const options = {
|
|
6316
|
+
log: config.log,
|
|
6317
|
+
proxyPort: opts.proxyPort,
|
|
6318
|
+
directory: opts.directory,
|
|
6319
|
+
tre: false
|
|
6320
|
+
};
|
|
6321
|
+
config.serviceBindings = {
|
|
6322
|
+
...config.serviceBindings,
|
|
6323
|
+
ASSETS: await generateASSETSBinding(options)
|
|
6324
|
+
};
|
|
6325
|
+
}
|
|
6326
|
+
mf = new Miniflare(config);
|
|
6327
|
+
const mfServer = await mf.startServer();
|
|
6328
|
+
const mfPort = mfServer.address().port;
|
|
4866
6329
|
await mf.startScheduler();
|
|
6330
|
+
const internalDurableObjectClassNames = Object.values(
|
|
6331
|
+
config.durableObjects
|
|
6332
|
+
);
|
|
6333
|
+
if (internalDurableObjectClassNames.length > 0) {
|
|
6334
|
+
durableObjectsMf = new Miniflare({
|
|
6335
|
+
host: config.host,
|
|
6336
|
+
port: 0,
|
|
6337
|
+
script: `
|
|
6338
|
+
export default {
|
|
6339
|
+
fetch(request, env) {
|
|
6340
|
+
return env.DO.fetch(request)
|
|
6341
|
+
}
|
|
6342
|
+
}`,
|
|
6343
|
+
serviceBindings: {
|
|
6344
|
+
DO: async (request) => {
|
|
6345
|
+
request = new MiniflareRequest(request);
|
|
6346
|
+
const name = request.headers.get("x-miniflare-durable-object-name");
|
|
6347
|
+
const idString = request.headers.get(
|
|
6348
|
+
"x-miniflare-durable-object-id"
|
|
6349
|
+
);
|
|
6350
|
+
request.headers.delete("x-miniflare-durable-object-name");
|
|
6351
|
+
request.headers.delete("x-miniflare-durable-object-id");
|
|
6352
|
+
if (!name || !idString) {
|
|
6353
|
+
return new MiniflareResponse(
|
|
6354
|
+
"[durable-object-proxy-err] Missing `x-miniflare-durable-object-name` or `x-miniflare-durable-object-id` headers.",
|
|
6355
|
+
{ status: 400 }
|
|
6356
|
+
);
|
|
6357
|
+
}
|
|
6358
|
+
const namespace = await mf?.getDurableObjectNamespace(name);
|
|
6359
|
+
const id = namespace?.idFromString(idString);
|
|
6360
|
+
if (!id) {
|
|
6361
|
+
return new MiniflareResponse(
|
|
6362
|
+
"[durable-object-proxy-err] Could not generate an ID. Possibly due to a mismatched DO name and ID?",
|
|
6363
|
+
{ status: 500 }
|
|
6364
|
+
);
|
|
6365
|
+
}
|
|
6366
|
+
const stub = namespace?.get(id);
|
|
6367
|
+
if (!stub) {
|
|
6368
|
+
return new MiniflareResponse(
|
|
6369
|
+
"[durable-object-proxy-err] Could not generate a stub. Possibly due to a mismatched DO name and ID?",
|
|
6370
|
+
{ status: 500 }
|
|
6371
|
+
);
|
|
6372
|
+
}
|
|
6373
|
+
return stub.fetch(request);
|
|
6374
|
+
}
|
|
6375
|
+
},
|
|
6376
|
+
modules: true
|
|
6377
|
+
});
|
|
6378
|
+
const server = await durableObjectsMf.startServer();
|
|
6379
|
+
durableObjectsMfPort = server.address().port;
|
|
6380
|
+
}
|
|
6381
|
+
process.send && process.send(
|
|
6382
|
+
JSON.stringify({
|
|
6383
|
+
port: mfPort,
|
|
6384
|
+
ready: true,
|
|
6385
|
+
durableObjectsPort: durableObjectsMfPort
|
|
6386
|
+
})
|
|
6387
|
+
);
|
|
4867
6388
|
} catch (e) {
|
|
4868
|
-
mf
|
|
6389
|
+
mf?.log.error(e);
|
|
4869
6390
|
process.exitCode = 1;
|
|
4870
|
-
await mf
|
|
6391
|
+
await mf?.dispose();
|
|
6392
|
+
await durableObjectsMf?.dispose();
|
|
4871
6393
|
}
|
|
4872
6394
|
}
|
|
4873
6395
|
await main();
|
|
4874
|
-
/**
|
|
4875
|
-
* @fileoverview Main entrypoint for libraries using yargs-parser in Node.js
|
|
4876
|
-
* CJS and ESM environments.
|
|
4877
|
-
*
|
|
4878
|
-
* @license
|
|
4879
|
-
* Copyright (c) 2016, Contributors
|
|
4880
|
-
* SPDX-License-Identifier: ISC
|
|
4881
|
-
*/
|
|
4882
|
-
/**
|
|
4883
|
-
* @license
|
|
4884
|
-
* Copyright (c) 2016, Contributors
|
|
4885
|
-
* SPDX-License-Identifier: ISC
|
|
4886
|
-
*/
|