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.
Files changed (360) hide show
  1. package/Cloudflare_CA.pem +18 -0
  2. package/README.md +25 -5
  3. package/bin/wrangler.js +174 -34
  4. package/kv-asset-handler.js +1 -0
  5. package/miniflare-dist/index.mjs +1590 -81
  6. package/package.json +198 -149
  7. package/src/__tests__/access.test.ts +25 -0
  8. package/src/__tests__/api-dev.test.ts +238 -0
  9. package/src/__tests__/api-devregistry.test.ts +121 -0
  10. package/src/__tests__/api.test.ts +102 -0
  11. package/src/__tests__/config-cache-without-cache-dir.test.ts +38 -0
  12. package/src/__tests__/config-cache.test.ts +30 -24
  13. package/src/__tests__/configuration.test.ts +4498 -3114
  14. package/src/__tests__/d1/d1.test.ts +82 -0
  15. package/src/__tests__/d1/execute.test.ts +66 -0
  16. package/src/__tests__/d1/migrate.test.ts +157 -0
  17. package/src/__tests__/d1/splitter.test.ts +255 -0
  18. package/src/__tests__/delete.test.ts +272 -0
  19. package/src/__tests__/deployments.test.ts +369 -0
  20. package/src/__tests__/dev.test.tsx +1592 -802
  21. package/src/__tests__/generate.test.ts +237 -0
  22. package/src/__tests__/get-host-from-url.test.ts +16 -0
  23. package/src/__tests__/guess-worker-format.test.ts +103 -68
  24. package/src/__tests__/helpers/cmd-shim.d.ts +6 -6
  25. package/src/__tests__/helpers/end-event-loop.ts +6 -0
  26. package/src/__tests__/helpers/mock-account-id.ts +24 -24
  27. package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
  28. package/src/__tests__/helpers/mock-bin.ts +20 -20
  29. package/src/__tests__/helpers/mock-console.ts +64 -39
  30. package/src/__tests__/helpers/mock-dialogs.ts +104 -55
  31. package/src/__tests__/helpers/mock-get-pages-upload-token.ts +25 -0
  32. package/src/__tests__/helpers/mock-get-zone-from-host.ts +11 -0
  33. package/src/__tests__/helpers/mock-http-server.ts +30 -30
  34. package/src/__tests__/helpers/mock-istty.ts +65 -18
  35. package/src/__tests__/helpers/mock-known-routes.ts +12 -0
  36. package/src/__tests__/helpers/mock-kv.ts +41 -28
  37. package/src/__tests__/helpers/mock-oauth-flow.ts +241 -233
  38. package/src/__tests__/helpers/mock-process.ts +34 -0
  39. package/src/__tests__/helpers/mock-set-timeout.ts +16 -0
  40. package/src/__tests__/helpers/mock-stdin.ts +82 -77
  41. package/src/__tests__/helpers/mock-web-socket.ts +21 -21
  42. package/src/__tests__/helpers/msw/blob-worker.cjs +19 -0
  43. package/src/__tests__/helpers/msw/handlers/access.ts +13 -0
  44. package/src/__tests__/helpers/msw/handlers/deployments.ts +160 -0
  45. package/src/__tests__/helpers/msw/handlers/namespaces.ts +81 -0
  46. package/src/__tests__/helpers/msw/handlers/oauth.ts +31 -0
  47. package/src/__tests__/helpers/msw/handlers/r2.ts +60 -0
  48. package/src/__tests__/helpers/msw/handlers/script.ts +56 -0
  49. package/src/__tests__/helpers/msw/handlers/user.ts +52 -0
  50. package/src/__tests__/helpers/msw/handlers/zones.ts +20 -0
  51. package/src/__tests__/helpers/msw/index.ts +52 -0
  52. package/src/__tests__/helpers/msw/read-file-sync.js +61 -0
  53. package/src/__tests__/helpers/run-in-tmp.ts +27 -28
  54. package/src/__tests__/helpers/run-wrangler.ts +8 -8
  55. package/src/__tests__/helpers/string-dynamic-values-matcher.ts +28 -0
  56. package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +1 -0
  57. package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +5 -0
  58. package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +1 -0
  59. package/src/__tests__/helpers/worker-scripts/parent-worker.js +11 -0
  60. package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +5 -0
  61. package/src/__tests__/helpers/write-worker-source.ts +16 -16
  62. package/src/__tests__/helpers/write-wrangler-toml.ts +9 -9
  63. package/src/__tests__/https-options.test.ts +142 -109
  64. package/src/__tests__/index.test.ts +262 -224
  65. package/src/__tests__/init.test.ts +3168 -1488
  66. package/src/__tests__/jest.setup.ts +152 -50
  67. package/src/__tests__/kv.test.ts +1789 -1432
  68. package/src/__tests__/logger.test.ts +167 -75
  69. package/src/__tests__/logout.test.ts +47 -0
  70. package/src/__tests__/metrics.test.ts +493 -0
  71. package/src/__tests__/middleware.scheduled.test.ts +145 -0
  72. package/src/__tests__/middleware.test.ts +816 -0
  73. package/src/__tests__/mtls-certificates.test.ts +588 -0
  74. package/src/__tests__/package-manager.test.ts +312 -165
  75. package/src/__tests__/pages/deployment-list.test.ts +80 -0
  76. package/src/__tests__/pages/functions-build.test.ts +452 -0
  77. package/src/__tests__/pages/pages.test.ts +81 -0
  78. package/src/__tests__/pages/project-create.test.ts +63 -0
  79. package/src/__tests__/pages/project-list.test.ts +110 -0
  80. package/src/__tests__/pages/project-upload.test.ts +500 -0
  81. package/src/__tests__/pages/publish.test.ts +2864 -0
  82. package/src/__tests__/pages-deployment-tail.test.ts +955 -0
  83. package/src/__tests__/parse.test.ts +358 -248
  84. package/src/__tests__/paths.test.ts +39 -0
  85. package/src/__tests__/publish.test.ts +8322 -4847
  86. package/src/__tests__/pubsub.test.ts +496 -0
  87. package/src/__tests__/queues.test.ts +532 -0
  88. package/src/__tests__/r2.test.ts +369 -205
  89. package/src/__tests__/route.test.ts +18 -18
  90. package/src/__tests__/secret.test.ts +683 -436
  91. package/src/__tests__/tail.test.ts +835 -567
  92. package/src/__tests__/test-old-node-version.js +31 -0
  93. package/src/__tests__/traverse-module-graph.test.ts +220 -0
  94. package/src/__tests__/tsconfig-sanity.ts +12 -0
  95. package/src/__tests__/tsconfig.json +8 -0
  96. package/src/__tests__/tsconfig.tsbuildinfo +1 -0
  97. package/src/__tests__/type-generation.test.ts +234 -0
  98. package/src/__tests__/user.test.ts +107 -120
  99. package/src/__tests__/utils-collectKeyValues.test.ts +47 -0
  100. package/src/__tests__/validate-dev-props.test.ts +56 -0
  101. package/src/__tests__/version.test.ts +35 -0
  102. package/src/__tests__/whoami.test.tsx +165 -98
  103. package/src/__tests__/worker-namespace.test.ts +340 -0
  104. package/src/abort.d.ts +3 -0
  105. package/src/api/dev.ts +316 -0
  106. package/src/api/index.ts +11 -0
  107. package/src/api/mtls-certificate.ts +148 -0
  108. package/src/api/pages/create-worker-bundle-contents.ts +76 -0
  109. package/src/api/pages/index.ts +5 -0
  110. package/src/api/pages/publish.tsx +355 -0
  111. package/src/bundle-reporter.ts +68 -0
  112. package/src/bundle.ts +874 -135
  113. package/src/cfetch/index.ts +123 -69
  114. package/src/cfetch/internal.ts +217 -96
  115. package/src/cli.ts +23 -8
  116. package/src/config/config.ts +244 -196
  117. package/src/config/diagnostics.ts +61 -61
  118. package/src/config/environment.ts +563 -339
  119. package/src/config/index.ts +381 -41
  120. package/src/config/validation-helpers.ts +379 -357
  121. package/src/config/validation.ts +2181 -1263
  122. package/src/config-cache.ts +81 -41
  123. package/src/create-worker-preview.ts +250 -132
  124. package/src/create-worker-upload-form.ts +343 -224
  125. package/src/d1/backups.tsx +219 -0
  126. package/src/d1/constants.ts +2 -0
  127. package/src/d1/create.tsx +68 -0
  128. package/src/d1/delete.ts +53 -0
  129. package/src/d1/execute.tsx +357 -0
  130. package/src/d1/formatTimeAgo.ts +14 -0
  131. package/src/d1/index.ts +100 -0
  132. package/src/d1/list.tsx +60 -0
  133. package/src/d1/migrations/apply.tsx +212 -0
  134. package/src/d1/migrations/create.tsx +79 -0
  135. package/src/d1/migrations/helpers.ts +172 -0
  136. package/src/d1/migrations/index.ts +3 -0
  137. package/src/d1/migrations/list.tsx +95 -0
  138. package/src/d1/migrations/options.ts +23 -0
  139. package/src/d1/options.ts +22 -0
  140. package/src/d1/splitter.ts +161 -0
  141. package/src/d1/types.ts +25 -0
  142. package/src/d1/utils.ts +49 -0
  143. package/src/delete.ts +100 -0
  144. package/src/deployments.ts +368 -0
  145. package/src/deprecated/index.ts +144 -0
  146. package/src/dev/dev-vars.ts +20 -17
  147. package/src/dev/dev.tsx +535 -353
  148. package/src/dev/get-local-persistence-path.ts +31 -0
  149. package/src/dev/local.tsx +900 -292
  150. package/src/dev/remote.tsx +620 -201
  151. package/src/dev/start-server.ts +534 -0
  152. package/src/dev/use-esbuild.ts +182 -97
  153. package/src/dev/validate-dev-props.ts +40 -0
  154. package/src/dev-registry.ts +202 -0
  155. package/src/dev.tsx +929 -0
  156. package/src/dialogs.ts +136 -0
  157. package/src/dispatch-namespace.ts +211 -0
  158. package/src/docs/index.ts +97 -0
  159. package/src/durable.ts +102 -0
  160. package/src/entry.ts +259 -189
  161. package/src/environment-variables/factory.ts +88 -0
  162. package/src/environment-variables/misc-variables.ts +30 -0
  163. package/src/errors.ts +6 -6
  164. package/src/generate/index.ts +298 -0
  165. package/src/git-client.ts +135 -0
  166. package/src/global-wrangler-config-path.ts +26 -0
  167. package/src/https-options.ts +84 -80
  168. package/src/index.ts +758 -0
  169. package/src/init.ts +1032 -0
  170. package/src/inspect.ts +721 -562
  171. package/src/intl-polyfill.d.ts +123 -123
  172. package/src/is-ci.ts +14 -0
  173. package/src/is-interactive.ts +16 -0
  174. package/src/jest.d.ts +4 -0
  175. package/src/kv/helpers.ts +430 -0
  176. package/src/kv/index.ts +594 -0
  177. package/src/logger.ts +96 -43
  178. package/src/metrics/index.ts +5 -0
  179. package/src/metrics/metrics-config.ts +239 -0
  180. package/src/metrics/metrics-dispatcher.ts +96 -0
  181. package/src/metrics/metrics-usage-headers.ts +24 -0
  182. package/src/metrics/send-event.ts +99 -0
  183. package/src/miniflare-cli/assets.ts +251 -0
  184. package/src/miniflare-cli/index.ts +202 -33
  185. package/src/miniflare-cli/request-context.ts +18 -18
  186. package/src/miniflare-cli/tsconfig.json +9 -0
  187. package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -0
  188. package/src/miniflare-cli/types.ts +11 -0
  189. package/src/module-collection.ts +290 -215
  190. package/src/mtls-certificate/cli.ts +155 -0
  191. package/src/open-in-browser.ts +5 -14
  192. package/src/package-manager.ts +182 -90
  193. package/src/pages/build.ts +410 -0
  194. package/src/pages/buildFunctions.ts +140 -0
  195. package/src/pages/constants.ts +18 -0
  196. package/src/pages/deployment-tails.ts +281 -0
  197. package/src/pages/deployments.tsx +84 -0
  198. package/src/pages/dev.ts +716 -0
  199. package/src/pages/errors.ts +67 -0
  200. package/src/pages/functions/buildPlugin.ts +113 -0
  201. package/src/pages/functions/buildWorker.ts +291 -0
  202. package/{pages → src/pages}/functions/filepath-routing.test.ts +113 -113
  203. package/src/pages/functions/filepath-routing.ts +189 -0
  204. package/src/pages/functions/identifiers.ts +78 -0
  205. package/src/pages/functions/routes-consolidation.test.ts +250 -0
  206. package/src/pages/functions/routes-consolidation.ts +73 -0
  207. package/src/pages/functions/routes-transformation.test.ts +282 -0
  208. package/src/pages/functions/routes-transformation.ts +115 -0
  209. package/src/pages/functions/routes-validation.test.ts +403 -0
  210. package/src/pages/functions/routes-validation.ts +202 -0
  211. package/src/pages/functions/routes.ts +151 -0
  212. package/src/pages/functions/tsconfig.json +8 -0
  213. package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
  214. package/src/pages/functions.ts +86 -0
  215. package/src/pages/hash.ts +13 -0
  216. package/src/pages/index.ts +102 -0
  217. package/src/pages/projects.tsx +159 -0
  218. package/src/pages/prompt-select-project.tsx +31 -0
  219. package/src/pages/publish.tsx +267 -0
  220. package/src/pages/types.ts +46 -0
  221. package/src/pages/upload.tsx +469 -0
  222. package/src/pages/utils.ts +23 -0
  223. package/src/parse.ts +246 -123
  224. package/src/paths.ts +53 -8
  225. package/src/proxy.ts +628 -383
  226. package/src/publish/index.ts +274 -0
  227. package/src/publish/publish.ts +1060 -0
  228. package/src/pubsub/index.ts +286 -0
  229. package/src/pubsub/pubsub-commands.ts +623 -0
  230. package/src/queues/cli/commands/consumer/add.ts +71 -0
  231. package/src/queues/cli/commands/consumer/index.ts +19 -0
  232. package/src/queues/cli/commands/consumer/remove.ts +31 -0
  233. package/src/queues/cli/commands/create.ts +25 -0
  234. package/src/queues/cli/commands/delete.ts +26 -0
  235. package/src/queues/cli/commands/index.ts +35 -0
  236. package/src/queues/cli/commands/list.ts +25 -0
  237. package/src/queues/client.ts +136 -0
  238. package/src/queues/utils.ts +18 -0
  239. package/src/r2/constants.ts +4 -0
  240. package/src/r2/helpers.ts +132 -0
  241. package/src/r2/index.ts +289 -0
  242. package/src/routes.ts +140 -0
  243. package/src/secret/index.ts +376 -0
  244. package/src/selfsigned.d.ts +23 -23
  245. package/src/sites.ts +372 -0
  246. package/src/tail/createTail.ts +406 -0
  247. package/src/tail/filters.ts +109 -111
  248. package/src/tail/index.ts +208 -296
  249. package/src/tail/printing.ts +101 -46
  250. package/src/traverse-module-graph.ts +53 -0
  251. package/src/tsconfig-sanity.ts +16 -0
  252. package/src/type-generation.ts +181 -0
  253. package/src/update-check.ts +11 -11
  254. package/src/user/access.ts +68 -0
  255. package/src/user/auth-variables.ts +113 -0
  256. package/src/user/choose-account.tsx +39 -0
  257. package/src/user/generate-auth-url.ts +33 -0
  258. package/src/user/generate-random-state.ts +16 -0
  259. package/src/user/index.ts +2 -0
  260. package/src/user/user.ts +1233 -0
  261. package/src/utils/collectKeyValues.ts +14 -0
  262. package/src/utils/render.ts +93 -0
  263. package/src/whoami.ts +135 -0
  264. package/src/worker.ts +203 -101
  265. package/src/yargs-types.ts +37 -0
  266. package/src/zones.ts +191 -0
  267. package/templates/__tests__/pages-dev-util.test.ts +128 -0
  268. package/templates/__tests__/tsconfig-sanity.ts +12 -0
  269. package/templates/__tests__/tsconfig.json +8 -0
  270. package/templates/__tests__/tsconfig.tsbuildinfo +1 -0
  271. package/templates/checked-fetch.js +23 -0
  272. package/templates/d1-beta-facade.js +244 -0
  273. package/templates/facade.d.ts +14 -0
  274. package/templates/first-party-worker-module-facade.ts +19 -0
  275. package/templates/format-dev-errors.ts +34 -0
  276. package/templates/gitignore +1 -0
  277. package/templates/init-tests/test-jest-new-worker.js +23 -0
  278. package/templates/init-tests/test-vitest-new-worker.js +24 -0
  279. package/templates/init-tests/test-vitest-new-worker.ts +25 -0
  280. package/templates/middleware/common.ts +62 -0
  281. package/templates/middleware/loader-modules.ts +84 -0
  282. package/templates/middleware/loader-sw.ts +233 -0
  283. package/templates/middleware/middleware-miniflare3-json-error.ts +32 -0
  284. package/templates/middleware/middleware-pretty-error.ts +40 -0
  285. package/templates/middleware/middleware-scheduled.ts +15 -0
  286. package/templates/new-worker-scheduled.js +17 -0
  287. package/templates/new-worker-scheduled.ts +32 -0
  288. package/templates/new-worker.js +3 -3
  289. package/templates/new-worker.ts +21 -3
  290. package/templates/no-op-worker.js +10 -0
  291. package/templates/pages-dev-pipeline.ts +31 -0
  292. package/templates/pages-dev-util.ts +52 -0
  293. package/templates/pages-shim.ts +12 -0
  294. package/templates/pages-template-plugin.ts +180 -0
  295. package/templates/pages-template-worker.ts +189 -0
  296. package/templates/serve-static-assets.ts +66 -0
  297. package/templates/service-bindings-module-facade.js +55 -0
  298. package/templates/service-bindings-sw-facade.js +42 -0
  299. package/templates/tsconfig-sanity.ts +11 -0
  300. package/templates/tsconfig.init.json +105 -0
  301. package/templates/tsconfig.json +6 -103
  302. package/templates/tsconfig.tsbuildinfo +1 -0
  303. package/wrangler-dist/cli.d.ts +1641 -0
  304. package/wrangler-dist/cli.js +129145 -89350
  305. package/wrangler-dist/wasm-sync.wasm +0 -0
  306. package/pages/functions/buildPlugin.ts +0 -92
  307. package/pages/functions/buildWorker.ts +0 -138
  308. package/pages/functions/filepath-routing.ts +0 -189
  309. package/pages/functions/identifiers.ts +0 -78
  310. package/pages/functions/routes.ts +0 -156
  311. package/pages/functions/template-plugin.ts +0 -146
  312. package/pages/functions/template-worker.ts +0 -143
  313. package/src/__tests__/helpers/faye-websocket.d.ts +0 -6
  314. package/src/__tests__/helpers/mock-cfetch.ts +0 -211
  315. package/src/__tests__/pages.test.ts +0 -327
  316. package/src/dialogs.tsx +0 -87
  317. package/src/environment-variables.ts +0 -35
  318. package/src/index.tsx +0 -2698
  319. package/src/kv.ts +0 -319
  320. package/src/miniflare-cli/enum-keys.ts +0 -17
  321. package/src/pages.tsx +0 -1875
  322. package/src/publish.ts +0 -469
  323. package/src/r2.ts +0 -50
  324. package/src/sites.tsx +0 -293
  325. package/src/user.tsx +0 -1203
  326. package/src/whoami.tsx +0 -70
  327. package/templates/static-asset-facade.js +0 -47
  328. package/vendor/@cloudflare/kv-asset-handler/CHANGELOG.md +0 -332
  329. package/vendor/@cloudflare/kv-asset-handler/LICENSE_APACHE +0 -176
  330. package/vendor/@cloudflare/kv-asset-handler/LICENSE_MIT +0 -25
  331. package/vendor/@cloudflare/kv-asset-handler/README.md +0 -245
  332. package/vendor/@cloudflare/kv-asset-handler/dist/index.d.ts +0 -32
  333. package/vendor/@cloudflare/kv-asset-handler/dist/index.js +0 -354
  334. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.d.ts +0 -13
  335. package/vendor/@cloudflare/kv-asset-handler/dist/mocks.js +0 -148
  336. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.d.ts +0 -1
  337. package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.js +0 -436
  338. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.d.ts +0 -1
  339. package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.js +0 -40
  340. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.d.ts +0 -1
  341. package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.js +0 -42
  342. package/vendor/@cloudflare/kv-asset-handler/dist/types.d.ts +0 -26
  343. package/vendor/@cloudflare/kv-asset-handler/dist/types.js +0 -31
  344. package/vendor/@cloudflare/kv-asset-handler/package.json +0 -52
  345. package/vendor/@cloudflare/kv-asset-handler/src/index.ts +0 -296
  346. package/vendor/@cloudflare/kv-asset-handler/src/mocks.ts +0 -136
  347. package/vendor/@cloudflare/kv-asset-handler/src/test/getAssetFromKV.ts +0 -464
  348. package/vendor/@cloudflare/kv-asset-handler/src/test/mapRequestToAsset.ts +0 -33
  349. package/vendor/@cloudflare/kv-asset-handler/src/test/serveSinglePageApp.ts +0 -42
  350. package/vendor/@cloudflare/kv-asset-handler/src/types.ts +0 -39
  351. package/vendor/wrangler-mime/CHANGELOG.md +0 -289
  352. package/vendor/wrangler-mime/LICENSE +0 -21
  353. package/vendor/wrangler-mime/Mime.js +0 -97
  354. package/vendor/wrangler-mime/README.md +0 -187
  355. package/vendor/wrangler-mime/cli.js +0 -46
  356. package/vendor/wrangler-mime/index.js +0 -4
  357. package/vendor/wrangler-mime/lite.js +0 -4
  358. package/vendor/wrangler-mime/package.json +0 -52
  359. package/vendor/wrangler-mime/types/other.js +0 -1
  360. package/vendor/wrangler-mime/types/standard.js +0 -1
@@ -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 { Log, LogLevel, Miniflare } from "miniflare";
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 _a;
809
+ var _a2;
27
810
  this.width = opts.width;
28
- this.wrap = (_a = opts.wrap) !== null && _a !== void 0 ? _a : true;
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
- if (process && process.version) {
1268
- const major = Number(process.version.match(/v([^.]+)/)[1]);
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(this, YError);
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.split("node_modules")[0];
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
- applyMiddlewareAndGetResult(isDefaultCommand, commandHandler, innerArgv, currentContext, helpOnly, aliases, yargs) {
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 (!Object.hasOwnProperty.call(defaults, key) && Object.hasOwnProperty.call(argv, key) && Object.hasOwnProperty.call(parsed.argv, key) && (Array.isArray(argv[key]) || Array.isArray(parsed.argv[key]))) {
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
- function getWrap() {
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
- if (extra)
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}} >> ~/.zsh_profile on OSX.
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 _a, _b, _c;
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 = (_c = ((_a = this.shim.getEnv("SHELL")) === null || _a === void 0 ? void 0 : _a.includes("zsh")) || ((_b = this.shim.getEnv("ZSH_NAME")) === null || _b === void 0 ? void 0 : _b.includes("zsh"))) !== null && _c !== void 0 ? _c : false;
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, argv, key, negable)) {
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, argv, key, negable) {
2896
- if (args.indexOf(`--${key}`) !== -1)
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 && args.indexOf(`--no-${key}`) !== -1)
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 (argv[alias] !== void 0)
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 desc = descs[key] || "";
2917
- completions.push(dashes + `${key.replace(/:/g, "\\:")}:${desc.replace("__yargsString__:", "")}`);
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 _a;
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 = ((_a = demandedCommands._) === null || _a === void 0 ? void 0 : _a.max) || 0;
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 (!locale) {
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.describe(key, desc);
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 _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
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
- _a = this, _b = this, _c = this, _d = this, _e = this, _f = this, _g = this, _h = this, _j = this, _k = this, _l = this, _m = this, {
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(_a, _YargsInstance_options, _o, "f");
5294
+ __classPrivateFieldSet(_a2, _YargsInstance_options, _o, "f");
4469
5295
  } }.value,
4470
5296
  configObjects,
4471
5297
  exitProcess: { set value(_o) {
4472
- __classPrivateFieldSet(_b, _YargsInstance_exitProcess, _o, "f");
5298
+ __classPrivateFieldSet(_b2, _YargsInstance_exitProcess, _o, "f");
4473
5299
  } }.value,
4474
5300
  groups: { set value(_o) {
4475
- __classPrivateFieldSet(_c, _YargsInstance_groups, _o, "f");
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/miniflare-cli/enum-keys.ts
4820
- var enumObject = (e) => {
4821
- const copy = { ...e };
4822
- Object.values(e).forEach((value) => typeof value === "number" && delete copy[value]);
4823
- return copy;
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
- var enumKeys = (e) => {
4826
- return Object.keys(enumObject(e));
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).option("log", {
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
- if (logLevel > LogLevel.INFO) {
4861
- console.log("OPTIONS:\n", JSON.stringify(config, null, 2));
4862
- }
4863
- const mf = new Miniflare(config);
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
- await mf.startServer();
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.log.error(e);
6389
+ mf?.log.error(e);
4869
6390
  process.exitCode = 1;
4870
- await mf.dispose();
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
- */