wrangler 0.0.0-e5d3690 → 0.0.0-e60dc909
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Cloudflare_CA.pem +18 -0
- package/README.md +47 -14
- package/bin/wrangler.js +180 -28
- package/kv-asset-handler.js +1 -0
- package/miniflare-dist/index.mjs +6364 -0
- package/package.json +193 -127
- package/src/__tests__/access.test.ts +25 -0
- package/src/__tests__/api-dev.test.ts +238 -0
- package/src/__tests__/api-devregistry.test.js +64 -0
- package/src/__tests__/api.test.ts +80 -0
- package/src/__tests__/config-cache-without-cache-dir.test.ts +38 -0
- package/src/__tests__/config-cache.test.ts +42 -0
- package/src/__tests__/configuration.test.ts +4163 -0
- package/src/__tests__/d1/d1.test.ts +123 -0
- package/src/__tests__/d1/splitter.test.ts +255 -0
- package/src/__tests__/delete.test.ts +266 -0
- package/src/__tests__/deployments.test.ts +105 -0
- package/src/__tests__/dev.test.tsx +1582 -63
- package/src/__tests__/generate.test.ts +238 -0
- package/src/__tests__/get-host-from-url.test.ts +16 -0
- package/src/__tests__/guess-worker-format.test.ts +85 -0
- package/src/__tests__/{clipboardy-mock.js → helpers/clipboardy-mock.js} +0 -0
- package/src/__tests__/helpers/cmd-shim.d.ts +11 -0
- package/src/__tests__/helpers/mock-account-id.ts +48 -0
- package/src/__tests__/helpers/mock-auth-domain.ts +20 -0
- package/src/__tests__/helpers/mock-bin.ts +36 -0
- package/src/__tests__/helpers/mock-cfetch.ts +278 -0
- package/src/__tests__/helpers/mock-console.ts +106 -0
- package/src/__tests__/helpers/mock-dialogs.ts +137 -0
- package/src/__tests__/helpers/mock-get-zone-from-host.ts +8 -0
- package/src/__tests__/helpers/mock-http-server.ts +46 -0
- package/src/__tests__/helpers/mock-istty.ts +74 -0
- package/src/__tests__/helpers/mock-known-routes.ts +7 -0
- package/src/__tests__/helpers/mock-kv.ts +33 -0
- package/src/__tests__/helpers/mock-oauth-flow.ts +271 -0
- package/src/__tests__/helpers/mock-process.ts +34 -0
- package/src/__tests__/helpers/mock-stdin.ts +108 -0
- package/src/__tests__/helpers/mock-web-socket.ts +29 -0
- package/src/__tests__/helpers/msw/blob-worker.cjs +19 -0
- package/src/__tests__/helpers/msw/handlers/access.ts +13 -0
- package/src/__tests__/helpers/msw/handlers/deployments.ts +59 -0
- package/src/__tests__/helpers/msw/handlers/namespaces.ts +104 -0
- package/src/__tests__/helpers/msw/handlers/oauth.ts +31 -0
- package/src/__tests__/helpers/msw/handlers/r2.ts +80 -0
- package/src/__tests__/helpers/msw/handlers/script.ts +75 -0
- package/src/__tests__/helpers/msw/handlers/user.ts +63 -0
- package/src/__tests__/helpers/msw/handlers/zones.ts +22 -0
- package/src/__tests__/helpers/msw/index.ts +21 -0
- package/src/__tests__/helpers/msw/read-file-sync.js +61 -0
- package/src/__tests__/helpers/run-in-tmp.ts +38 -0
- package/src/__tests__/helpers/run-wrangler.ts +16 -0
- package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +1 -0
- package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +5 -0
- package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +1 -0
- package/src/__tests__/helpers/worker-scripts/parent-worker.js +8 -0
- package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +5 -0
- package/src/__tests__/helpers/write-worker-source.ts +31 -0
- package/src/__tests__/helpers/write-wrangler-toml.ts +17 -0
- package/src/__tests__/https-options.test.ts +163 -0
- package/src/__tests__/index.test.ts +265 -286
- package/src/__tests__/init.test.ts +3175 -0
- package/src/__tests__/jest.setup.ts +190 -14
- package/src/__tests__/kv.test.ts +1780 -1191
- package/src/__tests__/logger.test.ts +141 -0
- package/src/__tests__/logout.test.ts +47 -0
- package/src/__tests__/metrics.test.ts +493 -0
- package/src/__tests__/middleware.scheduled.test.ts +145 -0
- package/src/__tests__/middleware.test.ts +750 -0
- package/src/__tests__/package-manager.test.ts +353 -0
- package/src/__tests__/pages-deployment-tail.test.ts +884 -0
- package/src/__tests__/pages.test.ts +2899 -0
- package/src/__tests__/parse.test.ts +330 -0
- package/src/__tests__/paths.test.ts +39 -0
- package/src/__tests__/publish.test.ts +7740 -643
- package/src/__tests__/pubsub.test.ts +490 -0
- package/src/__tests__/queues.test.ts +522 -0
- package/src/__tests__/r2.test.ts +393 -0
- package/src/__tests__/route.test.ts +45 -0
- package/src/__tests__/secret.test.ts +701 -0
- package/src/__tests__/tail.test.ts +905 -0
- package/src/__tests__/test-old-node-version.js +31 -0
- package/src/__tests__/tsconfig-sanity.ts +12 -0
- package/src/__tests__/tsconfig.json +8 -0
- package/src/__tests__/tsconfig.tsbuildinfo +1 -0
- package/src/__tests__/type-generation.test.ts +233 -0
- package/src/__tests__/user.test.ts +129 -0
- package/src/__tests__/utils-collectKeyValues.test.ts +47 -0
- package/src/__tests__/validate-dev-props.test.ts +56 -0
- package/src/__tests__/version.test.ts +35 -0
- package/src/__tests__/whoami.test.tsx +179 -126
- package/src/__tests__/worker-namespace.test.ts +326 -0
- package/src/abort.d.ts +3 -0
- package/src/api/dev.ts +247 -0
- package/src/api/index.ts +2 -0
- package/src/bundle-reporter.ts +68 -0
- package/src/bundle.ts +823 -0
- package/src/cfetch/index.ts +127 -79
- package/src/cfetch/internal.ts +238 -48
- package/src/cli.ts +25 -6
- package/src/config/README.md +107 -0
- package/src/config/config.ts +275 -0
- package/src/config/diagnostics.ts +80 -0
- package/src/config/environment.ts +577 -0
- package/src/config/index.ts +358 -0
- package/src/config/validation-helpers.ts +597 -0
- package/src/config/validation.ts +2151 -0
- package/src/config-cache.ts +85 -0
- package/src/create-worker-preview.ts +282 -0
- package/src/create-worker-upload-form.ts +325 -0
- package/src/d1/backups.tsx +223 -0
- package/src/d1/constants.ts +2 -0
- package/src/d1/create.tsx +63 -0
- package/src/d1/delete.ts +56 -0
- package/src/d1/execute.tsx +323 -0
- package/src/d1/formatTimeAgo.ts +14 -0
- package/src/d1/index.ts +101 -0
- package/src/d1/list.tsx +48 -0
- package/src/d1/migrations/apply.tsx +197 -0
- package/src/d1/migrations/create.tsx +77 -0
- package/src/d1/migrations/helpers.ts +147 -0
- package/src/d1/migrations/index.ts +3 -0
- package/src/d1/migrations/list.tsx +79 -0
- package/src/d1/migrations/options.ts +18 -0
- package/src/d1/options.ts +22 -0
- package/src/d1/splitter.ts +161 -0
- package/src/d1/types.ts +24 -0
- package/src/d1/utils.ts +48 -0
- package/src/delete.ts +103 -0
- package/src/deployments.ts +83 -0
- package/src/deprecated/index.ts +145 -0
- package/src/dev/dev-vars.ts +39 -0
- package/src/dev/dev.tsx +614 -0
- package/src/dev/get-local-persistence-path.ts +31 -0
- package/src/dev/local.tsx +932 -0
- package/src/dev/remote.tsx +630 -0
- package/src/dev/start-server.ts +543 -0
- package/src/dev/use-esbuild.ts +204 -0
- package/src/dev/validate-dev-props.ts +31 -0
- package/src/dev-registry.ts +201 -0
- package/src/dev.tsx +927 -757
- package/src/dialogs.ts +136 -0
- package/src/dispatch-namespace.ts +207 -0
- package/src/docs/index.ts +97 -0
- package/src/durable.ts +102 -0
- package/src/entry.ts +329 -0
- package/src/environment-variables/factory.ts +88 -0
- package/src/environment-variables/misc-variables.ts +30 -0
- package/src/errors.ts +11 -0
- package/src/generate/index.ts +300 -0
- package/src/git-client.ts +135 -0
- package/src/global-wrangler-config-path.ts +26 -0
- package/src/https-options.ts +127 -0
- package/src/index.ts +694 -0
- package/src/init.ts +1024 -0
- package/src/inspect.ts +720 -496
- package/src/intl-polyfill.d.ts +139 -0
- package/src/is-ci.ts +14 -0
- package/src/is-interactive.ts +16 -0
- package/src/jest.d.ts +4 -0
- package/src/kv/helpers.ts +430 -0
- package/src/kv/index.ts +596 -0
- package/src/logger.ts +104 -0
- package/src/metrics/index.ts +5 -0
- package/src/metrics/metrics-config.ts +239 -0
- package/src/metrics/metrics-dispatcher.ts +96 -0
- package/src/metrics/metrics-usage-headers.ts +24 -0
- package/src/metrics/send-event.ts +97 -0
- package/src/miniflare-cli/README.md +30 -0
- package/src/miniflare-cli/assets.ts +250 -0
- package/src/miniflare-cli/index.ts +210 -0
- package/src/miniflare-cli/request-context.ts +40 -0
- package/src/miniflare-cli/tsconfig.json +9 -0
- package/src/miniflare-cli/tsconfig.tsbuildinfo +1 -0
- package/src/miniflare-cli/types.ts +11 -0
- package/src/module-collection.ts +256 -53
- package/src/open-in-browser.ts +17 -0
- package/src/package-manager.ts +219 -0
- package/src/pages/build.ts +270 -0
- package/src/pages/constants.ts +18 -0
- package/src/pages/deployment-tails.ts +284 -0
- package/src/pages/deployments.tsx +84 -0
- package/src/pages/dev.ts +711 -0
- package/src/pages/errors.ts +66 -0
- package/src/pages/functions/buildPlugin.ts +107 -0
- package/src/pages/functions/buildWorker.ts +166 -0
- package/src/pages/functions/filepath-routing.test.ts +234 -0
- package/src/pages/functions/filepath-routing.ts +189 -0
- package/src/pages/functions/identifiers.ts +78 -0
- package/src/pages/functions/routes-consolidation.test.ts +250 -0
- package/src/pages/functions/routes-consolidation.ts +73 -0
- package/src/pages/functions/routes-transformation.test.ts +282 -0
- package/src/pages/functions/routes-transformation.ts +115 -0
- package/src/pages/functions/routes-validation.test.ts +403 -0
- package/src/pages/functions/routes-validation.ts +202 -0
- package/src/pages/functions/routes.ts +151 -0
- package/src/pages/functions/tsconfig.json +8 -0
- package/src/pages/functions/tsconfig.tsbuildinfo +1 -0
- package/src/pages/functions.ts +82 -0
- package/src/pages/hash.ts +13 -0
- package/src/pages/index.ts +102 -0
- package/src/pages/projects.tsx +167 -0
- package/src/pages/prompt-select-project.tsx +31 -0
- package/src/pages/publish.tsx +462 -0
- package/src/pages/types.ts +41 -0
- package/src/pages/upload.tsx +447 -0
- package/src/pages/utils.ts +23 -0
- package/src/parse.ts +286 -0
- package/src/paths.ts +71 -0
- package/src/proxy.ts +646 -254
- package/src/publish/index.ts +270 -0
- package/src/publish/publish.ts +1038 -0
- package/src/pubsub/index.ts +286 -0
- package/src/pubsub/pubsub-commands.ts +624 -0
- package/src/queues/cli/commands/consumer/add.ts +71 -0
- package/src/queues/cli/commands/consumer/index.ts +22 -0
- package/src/queues/cli/commands/consumer/remove.ts +38 -0
- package/src/queues/cli/commands/create.ts +25 -0
- package/src/queues/cli/commands/delete.ts +26 -0
- package/src/queues/cli/commands/index.ts +36 -0
- package/src/queues/cli/commands/list.ts +25 -0
- package/src/queues/client.ts +135 -0
- package/src/queues/utils.ts +18 -0
- package/src/r2/constants.ts +4 -0
- package/src/r2/helpers.ts +131 -0
- package/src/r2/index.ts +289 -0
- package/src/routes.ts +140 -0
- package/src/secret/index.ts +379 -0
- package/src/selfsigned.d.ts +29 -0
- package/src/sites.ts +372 -0
- package/src/tail/createTail.ts +379 -0
- package/src/tail/filters.ts +277 -0
- package/src/tail/index.ts +213 -0
- package/src/tail/printing.ts +107 -0
- package/src/tsconfig-sanity.ts +16 -0
- package/src/type-generation.ts +181 -0
- package/src/update-check.ts +19 -0
- package/src/user/access.ts +68 -0
- package/src/user/auth-variables.ts +113 -0
- package/src/user/choose-account.tsx +39 -0
- package/src/user/generate-auth-url.ts +33 -0
- package/src/user/generate-random-state.ts +16 -0
- package/src/user/index.ts +2 -0
- package/src/user/user.ts +1232 -0
- package/src/utils/collectKeyValues.ts +14 -0
- package/src/whoami.ts +135 -0
- package/src/worker.ts +251 -0
- package/src/yargs-types.ts +24 -0
- package/src/zones.ts +191 -0
- package/templates/__tests__/pages-dev-util.test.ts +128 -0
- package/templates/__tests__/tsconfig-sanity.ts +12 -0
- package/templates/__tests__/tsconfig.json +8 -0
- package/templates/__tests__/tsconfig.tsbuildinfo +1 -0
- package/templates/checked-fetch.js +17 -0
- package/templates/d1-beta-facade.js +241 -0
- package/templates/facade.d.ts +14 -0
- package/templates/first-party-worker-module-facade.ts +19 -0
- package/templates/format-dev-errors.ts +33 -0
- package/templates/gitignore +171 -0
- package/templates/init-tests/test-jest-new-worker.js +23 -0
- package/templates/init-tests/test-vitest-new-worker.js +24 -0
- package/templates/init-tests/test-vitest-new-worker.ts +25 -0
- package/templates/middleware/common.ts +62 -0
- package/templates/middleware/loader-modules.ts +82 -0
- package/templates/middleware/loader-sw.ts +233 -0
- package/templates/middleware/middleware-miniflare3-json-error.ts +20 -0
- package/templates/middleware/middleware-pretty-error.ts +40 -0
- package/templates/middleware/middleware-scheduled.ts +15 -0
- package/templates/new-worker-scheduled.js +17 -0
- package/templates/new-worker-scheduled.ts +32 -0
- package/templates/new-worker.js +15 -0
- package/templates/new-worker.ts +30 -0
- package/templates/no-op-worker.js +10 -0
- package/templates/pages-dev-pipeline.ts +31 -0
- package/templates/pages-dev-util.ts +52 -0
- package/templates/pages-shim.ts +12 -0
- package/templates/pages-template-plugin.ts +176 -0
- package/templates/pages-template-worker.ts +189 -0
- package/templates/serve-static-assets.ts +65 -0
- package/templates/service-bindings-module-facade.js +54 -0
- package/templates/service-bindings-sw-facade.js +42 -0
- package/templates/tsconfig-sanity.ts +11 -0
- package/templates/tsconfig.init.json +106 -0
- package/templates/tsconfig.json +8 -0
- package/templates/tsconfig.tsbuildinfo +1 -0
- package/wrangler-dist/cli.d.ts +906 -0
- package/wrangler-dist/cli.js +134115 -114092
- package/wrangler-dist/wasm-sync.wasm +0 -0
- package/pages/functions/buildWorker.ts +0 -62
- package/pages/functions/filepath-routing.test.ts +0 -39
- package/pages/functions/filepath-routing.ts +0 -228
- package/pages/functions/identifiers.ts +0 -78
- package/pages/functions/routes.ts +0 -158
- package/pages/functions/template-worker.ts +0 -136
- package/src/__tests__/mock-cfetch.ts +0 -173
- package/src/__tests__/mock-dialogs.ts +0 -65
- package/src/__tests__/run-in-tmp.ts +0 -19
- package/src/__tests__/run-wrangler.ts +0 -32
- package/src/api/form_data.ts +0 -131
- package/src/api/preview.ts +0 -128
- package/src/api/worker.ts +0 -155
- package/src/config.ts +0 -646
- package/src/dialogs.tsx +0 -77
- package/src/index.tsx +0 -1975
- package/src/kv.tsx +0 -276
- package/src/pages.tsx +0 -1040
- package/src/publish.ts +0 -382
- package/src/sites.tsx +0 -243
- package/src/tail.tsx +0 -73
- package/src/user.tsx +0 -1019
- package/src/whoami.tsx +0 -69
- package/static-asset-facade.js +0 -47
- package/vendor/@cloudflare/kv-asset-handler/CHANGELOG.md +0 -332
- package/vendor/@cloudflare/kv-asset-handler/LICENSE_APACHE +0 -176
- package/vendor/@cloudflare/kv-asset-handler/LICENSE_MIT +0 -25
- package/vendor/@cloudflare/kv-asset-handler/README.md +0 -245
- package/vendor/@cloudflare/kv-asset-handler/dist/index.d.ts +0 -32
- package/vendor/@cloudflare/kv-asset-handler/dist/index.js +0 -354
- package/vendor/@cloudflare/kv-asset-handler/dist/mocks.d.ts +0 -13
- package/vendor/@cloudflare/kv-asset-handler/dist/mocks.js +0 -148
- package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.d.ts +0 -1
- package/vendor/@cloudflare/kv-asset-handler/dist/test/getAssetFromKV.js +0 -436
- package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.d.ts +0 -1
- package/vendor/@cloudflare/kv-asset-handler/dist/test/mapRequestToAsset.js +0 -40
- package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.d.ts +0 -1
- package/vendor/@cloudflare/kv-asset-handler/dist/test/serveSinglePageApp.js +0 -42
- package/vendor/@cloudflare/kv-asset-handler/dist/types.d.ts +0 -26
- package/vendor/@cloudflare/kv-asset-handler/dist/types.js +0 -31
- package/vendor/@cloudflare/kv-asset-handler/package.json +0 -52
- package/vendor/@cloudflare/kv-asset-handler/src/index.ts +0 -296
- package/vendor/@cloudflare/kv-asset-handler/src/mocks.ts +0 -136
- package/vendor/@cloudflare/kv-asset-handler/src/test/getAssetFromKV.ts +0 -464
- package/vendor/@cloudflare/kv-asset-handler/src/test/mapRequestToAsset.ts +0 -33
- package/vendor/@cloudflare/kv-asset-handler/src/test/serveSinglePageApp.ts +0 -42
- package/vendor/@cloudflare/kv-asset-handler/src/types.ts +0 -39
- package/vendor/wrangler-mime/CHANGELOG.md +0 -289
- package/vendor/wrangler-mime/LICENSE +0 -21
- package/vendor/wrangler-mime/Mime.js +0 -97
- package/vendor/wrangler-mime/README.md +0 -187
- package/vendor/wrangler-mime/cli.js +0 -46
- package/vendor/wrangler-mime/index.js +0 -4
- package/vendor/wrangler-mime/lite.js +0 -4
- package/vendor/wrangler-mime/package.json +0 -52
- package/vendor/wrangler-mime/types/other.js +0 -1
- package/vendor/wrangler-mime/types/standard.js +0 -1
- package/wrangler-dist/cli.js.map +0 -7
package/src/api/dev.ts
ADDED
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import { fetch, Request } from "undici";
|
|
2
|
+
import { startApiDev, startDev } from "../dev";
|
|
3
|
+
import { logger } from "../logger";
|
|
4
|
+
|
|
5
|
+
import type { Environment } from "../config";
|
|
6
|
+
import type { EnablePagesAssetsServiceBindingOptions } from "../miniflare-cli/types";
|
|
7
|
+
import type { RequestInit, Response, RequestInfo } from "undici";
|
|
8
|
+
|
|
9
|
+
export interface UnstableDevOptions {
|
|
10
|
+
config?: string; // Path to .toml configuration file, relative to cwd
|
|
11
|
+
env?: string; // Environment to use for operations and .env files
|
|
12
|
+
ip?: string; // IP address to listen on
|
|
13
|
+
port?: number; // Port to listen on
|
|
14
|
+
bundle?: boolean; // Set to false to skip internal build steps and directly publish script
|
|
15
|
+
inspectorPort?: number; // Port for devtools to connect to
|
|
16
|
+
localProtocol?: "http" | "https"; // Protocol to listen to requests on, defaults to http.
|
|
17
|
+
assets?: string; // Static assets to be served
|
|
18
|
+
site?: string; // Root folder of static assets for Workers Sites
|
|
19
|
+
siteInclude?: string[]; // Array of .gitignore-style patterns that match file or directory names from the sites directory. Only matched items will be uploaded.
|
|
20
|
+
siteExclude?: string[]; // Array of .gitignore-style patterns that match file or directory names from the sites directory. Matched items will not be uploaded.
|
|
21
|
+
nodeCompat?: boolean; // Enable node.js compatibility
|
|
22
|
+
compatibilityDate?: string; // Date to use for compatibility checks
|
|
23
|
+
compatibilityFlags?: string[]; // Flags to use for compatibility checks
|
|
24
|
+
persist?: boolean; // Enable persistence for local mode, using default path: .wrangler/state
|
|
25
|
+
persistTo?: string; // Specify directory to use for local persistence (implies --persist)
|
|
26
|
+
vars?: {
|
|
27
|
+
[key: string]: unknown;
|
|
28
|
+
};
|
|
29
|
+
kv?: {
|
|
30
|
+
binding: string;
|
|
31
|
+
id: string;
|
|
32
|
+
preview_id?: string;
|
|
33
|
+
}[];
|
|
34
|
+
durableObjects?: {
|
|
35
|
+
name: string;
|
|
36
|
+
class_name: string;
|
|
37
|
+
script_name?: string | undefined;
|
|
38
|
+
environment?: string | undefined;
|
|
39
|
+
}[];
|
|
40
|
+
r2?: {
|
|
41
|
+
binding: string;
|
|
42
|
+
bucket_name: string;
|
|
43
|
+
preview_bucket_name?: string;
|
|
44
|
+
}[];
|
|
45
|
+
logLevel?: "none" | "info" | "error" | "log" | "warn" | "debug"; // Specify logging level [choices: "debug", "info", "log", "warn", "error", "none"] [default: "log"]
|
|
46
|
+
logPrefix?: string;
|
|
47
|
+
inspect?: boolean;
|
|
48
|
+
local?: boolean;
|
|
49
|
+
accountId?: string;
|
|
50
|
+
experimental?: {
|
|
51
|
+
d1Databases?: Environment["d1_databases"];
|
|
52
|
+
disableExperimentalWarning?: boolean; // Disables wrangler's warning when unstable APIs are used.
|
|
53
|
+
disableDevRegistry?: boolean; // Disables wrangler's support multi-worker setups. May reduce flakiness when used in tests in CI.
|
|
54
|
+
enablePagesAssetsServiceBinding?: EnablePagesAssetsServiceBindingOptions;
|
|
55
|
+
experimentalLocal?: boolean; // Use Miniflare 3 instead of Miniflare 2
|
|
56
|
+
experimentalLocalRemoteKv?: boolean;
|
|
57
|
+
forceLocal?: boolean;
|
|
58
|
+
liveReload?: boolean; // Auto reload HTML pages when change is detected in local mode
|
|
59
|
+
showInteractiveDevSession?: boolean;
|
|
60
|
+
testMode?: boolean; // This option shouldn't be used - We plan on removing it eventually
|
|
61
|
+
testScheduled?: boolean; // Test scheduled events by visiting /__scheduled in browser
|
|
62
|
+
watch?: boolean; // unstable_dev doesn't support watch-mode yet in testMode
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface UnstableDevWorker {
|
|
67
|
+
port: number;
|
|
68
|
+
address: string;
|
|
69
|
+
stop: () => Promise<void>;
|
|
70
|
+
fetch: (input?: RequestInfo, init?: RequestInit) => Promise<Response>;
|
|
71
|
+
waitUntilExit: () => Promise<void>;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* unstable_dev starts a wrangler dev server, and returns a promise that resolves with utility functions to interact with it.
|
|
75
|
+
*/
|
|
76
|
+
export async function unstable_dev(
|
|
77
|
+
script: string,
|
|
78
|
+
options?: UnstableDevOptions,
|
|
79
|
+
apiOptions?: unknown
|
|
80
|
+
): Promise<UnstableDevWorker> {
|
|
81
|
+
// Note that not every experimental option is passed directly through to the underlying dev API - experimental options can be used here in unstable_dev. Otherwise we could just pass experimental down to dev blindly.
|
|
82
|
+
const {
|
|
83
|
+
// there are two types of "experimental" options:
|
|
84
|
+
// 1. options to unstable_dev that we're still testing or are unsure of
|
|
85
|
+
disableDevRegistry = false,
|
|
86
|
+
disableExperimentalWarning = false,
|
|
87
|
+
forceLocal,
|
|
88
|
+
liveReload,
|
|
89
|
+
showInteractiveDevSession = false,
|
|
90
|
+
testMode = true,
|
|
91
|
+
testScheduled,
|
|
92
|
+
watch,
|
|
93
|
+
// 2. options for alpha/beta products/libs
|
|
94
|
+
d1Databases,
|
|
95
|
+
experimentalLocal,
|
|
96
|
+
experimentalLocalRemoteKv,
|
|
97
|
+
enablePagesAssetsServiceBinding,
|
|
98
|
+
} = options?.experimental ?? {};
|
|
99
|
+
if (apiOptions) {
|
|
100
|
+
logger.error(
|
|
101
|
+
"unstable_dev's third argument (apiOptions) has been deprecated in favor of an `experimental` property within the second argument (options).\nPlease update your code from:\n`await unstable_dev('...', {...}, {...});`\nto:\n`await unstable_dev('...', {..., experimental: {...}});`"
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (!disableExperimentalWarning) {
|
|
106
|
+
logger.warn(
|
|
107
|
+
`unstable_dev() is experimental\nunstable_dev()'s behaviour will likely change in future releases`
|
|
108
|
+
);
|
|
109
|
+
}
|
|
110
|
+
let readyPort: number;
|
|
111
|
+
let readyAddress: string;
|
|
112
|
+
//due to Pages adoption of unstable_dev, we can't *just* disable rebuilds and watching. instead, we'll have two versions of startDev, which will converge.
|
|
113
|
+
if (testMode) {
|
|
114
|
+
//in testMode, we can run multiple wranglers in parallel, but rebuilds might not work out of the box
|
|
115
|
+
return new Promise<UnstableDevWorker>((resolve) => {
|
|
116
|
+
//lmao
|
|
117
|
+
return new Promise<Awaited<ReturnType<typeof startApiDev>>>((ready) => {
|
|
118
|
+
// once the devServer is ready for requests, we resolve the inner promise
|
|
119
|
+
// (where we've named the resolve function "ready")
|
|
120
|
+
const devServer = startApiDev({
|
|
121
|
+
script: script,
|
|
122
|
+
inspect: false,
|
|
123
|
+
logLevel: "none",
|
|
124
|
+
_: [],
|
|
125
|
+
$0: "",
|
|
126
|
+
port: options?.port ?? 0,
|
|
127
|
+
local: true,
|
|
128
|
+
d1Databases,
|
|
129
|
+
disableDevRegistry,
|
|
130
|
+
testScheduled,
|
|
131
|
+
experimentalLocal,
|
|
132
|
+
experimentalLocalRemoteKv,
|
|
133
|
+
enablePagesAssetsServiceBinding,
|
|
134
|
+
liveReload,
|
|
135
|
+
showInteractiveDevSession,
|
|
136
|
+
forceLocal,
|
|
137
|
+
watch,
|
|
138
|
+
...options,
|
|
139
|
+
onReady: (address, port) => {
|
|
140
|
+
readyPort = port;
|
|
141
|
+
readyAddress = address;
|
|
142
|
+
ready(devServer);
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
}).then((devServer) => {
|
|
146
|
+
// now that the inner promise has resolved, we can resolve the outer promise
|
|
147
|
+
// with an object that lets you fetch and stop the dev server
|
|
148
|
+
resolve({
|
|
149
|
+
port: readyPort,
|
|
150
|
+
address: readyAddress,
|
|
151
|
+
stop: devServer.stop,
|
|
152
|
+
fetch: async (input?: RequestInfo, init?: RequestInit) => {
|
|
153
|
+
return await fetch(
|
|
154
|
+
...parseRequestInput(
|
|
155
|
+
readyAddress,
|
|
156
|
+
readyPort,
|
|
157
|
+
input,
|
|
158
|
+
init,
|
|
159
|
+
options?.localProtocol
|
|
160
|
+
)
|
|
161
|
+
);
|
|
162
|
+
},
|
|
163
|
+
//no-op, does nothing in tests
|
|
164
|
+
waitUntilExit: async () => {
|
|
165
|
+
return;
|
|
166
|
+
},
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
} else {
|
|
171
|
+
//outside of test mode, rebuilds work fine, but only one instance of wrangler will work at a time
|
|
172
|
+
|
|
173
|
+
return new Promise<UnstableDevWorker>((resolve) => {
|
|
174
|
+
//lmao
|
|
175
|
+
return new Promise<Awaited<ReturnType<typeof startDev>>>((ready) => {
|
|
176
|
+
const devServer = startDev({
|
|
177
|
+
script: script,
|
|
178
|
+
inspect: false,
|
|
179
|
+
_: [],
|
|
180
|
+
$0: "",
|
|
181
|
+
local: true,
|
|
182
|
+
showInteractiveDevSession,
|
|
183
|
+
d1Databases,
|
|
184
|
+
disableDevRegistry,
|
|
185
|
+
testScheduled,
|
|
186
|
+
experimentalLocal,
|
|
187
|
+
experimentalLocalRemoteKv,
|
|
188
|
+
enablePagesAssetsServiceBinding,
|
|
189
|
+
liveReload,
|
|
190
|
+
watch,
|
|
191
|
+
...options,
|
|
192
|
+
onReady: (address, port) => {
|
|
193
|
+
readyPort = port;
|
|
194
|
+
readyAddress = address;
|
|
195
|
+
ready(devServer);
|
|
196
|
+
},
|
|
197
|
+
});
|
|
198
|
+
}).then((devServer) => {
|
|
199
|
+
resolve({
|
|
200
|
+
port: readyPort,
|
|
201
|
+
address: readyAddress,
|
|
202
|
+
stop: devServer.stop,
|
|
203
|
+
fetch: async (input?: RequestInfo, init?: RequestInit) => {
|
|
204
|
+
return await fetch(
|
|
205
|
+
...parseRequestInput(
|
|
206
|
+
readyAddress,
|
|
207
|
+
readyPort,
|
|
208
|
+
input,
|
|
209
|
+
init,
|
|
210
|
+
options?.localProtocol
|
|
211
|
+
)
|
|
212
|
+
);
|
|
213
|
+
},
|
|
214
|
+
waitUntilExit: devServer.devReactElement.waitUntilExit,
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
export function parseRequestInput(
|
|
222
|
+
readyAddress: string,
|
|
223
|
+
readyPort: number,
|
|
224
|
+
input?: RequestInfo,
|
|
225
|
+
init?: RequestInit,
|
|
226
|
+
protocol: "http" | "https" = "http"
|
|
227
|
+
): [RequestInfo, RequestInit | undefined] {
|
|
228
|
+
if (input instanceof Request) {
|
|
229
|
+
return [input, undefined];
|
|
230
|
+
} else if (input instanceof URL) {
|
|
231
|
+
input = `${protocol}://${readyAddress}:${readyPort}${input.pathname}`;
|
|
232
|
+
} else if (typeof input === "string") {
|
|
233
|
+
try {
|
|
234
|
+
// Want to strip the URL to only get the pathname, but the user could pass in only the pathname
|
|
235
|
+
// Will error if we try and pass "/something" into new URL("/something")
|
|
236
|
+
input = `${protocol}://${readyAddress}:${readyPort}${
|
|
237
|
+
new URL(input).pathname
|
|
238
|
+
}`;
|
|
239
|
+
} catch {
|
|
240
|
+
input = `${protocol}://${readyAddress}:${readyPort}${input}`;
|
|
241
|
+
}
|
|
242
|
+
} else {
|
|
243
|
+
input = `${protocol}://${readyAddress}:${readyPort}`;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
return [input, init];
|
|
247
|
+
}
|
package/src/api/index.ts
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Blob } from "node:buffer";
|
|
2
|
+
import { gzipSync } from "node:zlib";
|
|
3
|
+
import { logger } from "./logger";
|
|
4
|
+
import type { CfModule } from "./worker";
|
|
5
|
+
import type { Metafile } from "esbuild";
|
|
6
|
+
|
|
7
|
+
const ONE_KIB_BYTES = 1024;
|
|
8
|
+
const ONE_MIB_BYTES = ONE_KIB_BYTES * 1024;
|
|
9
|
+
|
|
10
|
+
async function getSize(modules: CfModule[]) {
|
|
11
|
+
const gzipSize = gzipSync(
|
|
12
|
+
await new Blob(modules.map((file) => file.content)).arrayBuffer()
|
|
13
|
+
).byteLength;
|
|
14
|
+
const aggregateSize = new Blob(modules.map((file) => file.content)).size;
|
|
15
|
+
|
|
16
|
+
return { size: aggregateSize, gzipSize };
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export async function printBundleSize(
|
|
20
|
+
main: {
|
|
21
|
+
name: string;
|
|
22
|
+
content: string;
|
|
23
|
+
},
|
|
24
|
+
modules: CfModule[]
|
|
25
|
+
) {
|
|
26
|
+
const { size, gzipSize } = await getSize([...modules, main]);
|
|
27
|
+
|
|
28
|
+
const bundleReport = `${(size / ONE_KIB_BYTES).toFixed(2)} KiB / gzip: ${(
|
|
29
|
+
gzipSize / ONE_KIB_BYTES
|
|
30
|
+
).toFixed(2)} KiB`;
|
|
31
|
+
|
|
32
|
+
logger.log(`Total Upload: ${bundleReport}`);
|
|
33
|
+
|
|
34
|
+
if (gzipSize > ONE_MIB_BYTES && !process.env.NO_SCRIPT_SIZE_WARNING) {
|
|
35
|
+
logger.warn(
|
|
36
|
+
"We recommend keeping your script less than 1MiB (1024 KiB) after gzip. Exceeding past this can affect cold start time"
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function printOffendingDependencies(
|
|
42
|
+
dependencies: Metafile["outputs"][string]["inputs"]
|
|
43
|
+
) {
|
|
44
|
+
const warning: string[] = [];
|
|
45
|
+
|
|
46
|
+
const dependenciesSorted = Object.entries(dependencies);
|
|
47
|
+
dependenciesSorted.sort(
|
|
48
|
+
([_adep, aData], [_bdep, bData]) =>
|
|
49
|
+
bData.bytesInOutput - aData.bytesInOutput
|
|
50
|
+
);
|
|
51
|
+
const topLargest = dependenciesSorted.slice(0, 5);
|
|
52
|
+
|
|
53
|
+
if (topLargest.length > 0) {
|
|
54
|
+
warning.push(
|
|
55
|
+
`Here are the ${topLargest.length} largest dependencies included in your script:`
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
for (const [dep, data] of topLargest) {
|
|
59
|
+
warning.push(
|
|
60
|
+
`- ${dep} - ${(data.bytesInOutput / ONE_KIB_BYTES).toFixed(2)} KiB`
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
warning.push("If these are unnecessary, consider removing them");
|
|
65
|
+
|
|
66
|
+
logger.warn(warning.join("\n"));
|
|
67
|
+
}
|
|
68
|
+
}
|