wrangler 0.0.0-e7cf0caa → 0.0.0-e7ea6005c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -13
- package/bin/wrangler.js +13 -102
- package/config-schema.json +3126 -0
- package/package.json +198 -199
- package/templates/__tests__/tsconfig.json +1 -1
- package/templates/checked-fetch.js +11 -4
- package/templates/facade.d.ts +7 -2
- package/templates/gitignore +2 -4
- package/templates/init-tests/test-vitest-new-worker.js +1 -1
- package/templates/init-tests/test-vitest-new-worker.ts +1 -1
- package/templates/middleware/common.ts +9 -4
- package/templates/middleware/loader-modules.ts +94 -44
- package/templates/middleware/loader-sw.ts +6 -10
- package/templates/middleware/middleware-ensure-req-body-drained.ts +18 -0
- package/templates/middleware/middleware-mock-analytics-engine.d.ts +3 -0
- package/templates/middleware/middleware-mock-analytics-engine.ts +30 -0
- package/templates/middleware/middleware-scheduled.ts +15 -1
- package/templates/middleware/middleware-serve-static-assets.d.ts +6 -0
- package/templates/middleware/middleware-serve-static-assets.ts +56 -0
- package/templates/modules-watch-stub.js +4 -0
- package/templates/new-worker-scheduled.ts +1 -1
- package/templates/new-worker.ts +1 -1
- package/templates/pages-dev-pipeline.ts +2 -1
- package/templates/pages-dev-util.ts +4 -1
- package/templates/pages-shim.ts +0 -3
- package/templates/pages-template-plugin.ts +14 -4
- package/templates/pages-template-worker.ts +12 -3
- package/templates/startDevWorker/InspectorProxyWorker.ts +664 -0
- package/templates/startDevWorker/ProxyWorker.ts +336 -0
- package/templates/tsconfig.init.json +4 -87
- package/templates/tsconfig.json +1 -1
- package/wrangler-dist/InspectorProxyWorker.js +464 -0
- package/wrangler-dist/InspectorProxyWorker.js.map +6 -0
- package/wrangler-dist/ProxyWorker.js +241 -0
- package/wrangler-dist/ProxyWorker.js.map +6 -0
- package/wrangler-dist/cli.d.ts +25101 -246
- package/wrangler-dist/cli.js +192565 -125621
- package/wrangler-dist/wasm-sync.wasm +0 -0
- package/Cloudflare_CA.pem +0 -18
- package/import_meta_url.js +0 -3
- package/miniflare-config-stubs/.env.empty +0 -0
- package/miniflare-config-stubs/package.empty.json +0 -1
- package/miniflare-config-stubs/wrangler.empty.toml +0 -0
- package/miniflare-dist/index.mjs +0 -6368
- package/src/__tests__/access.test.ts +0 -25
- package/src/__tests__/api-dev.test.ts +0 -238
- package/src/__tests__/api-devregistry.test.ts +0 -121
- package/src/__tests__/api.test.ts +0 -102
- package/src/__tests__/config-cache-without-cache-dir.test.ts +0 -38
- package/src/__tests__/config-cache.test.ts +0 -42
- package/src/__tests__/configuration.test.ts +0 -4509
- package/src/__tests__/d1/d1.test.ts +0 -82
- package/src/__tests__/d1/execute.test.ts +0 -66
- package/src/__tests__/d1/migrate.test.ts +0 -157
- package/src/__tests__/d1/splitter.test.ts +0 -255
- package/src/__tests__/delete.test.ts +0 -272
- package/src/__tests__/deployments.test.ts +0 -369
- package/src/__tests__/dev.test.tsx +0 -1617
- package/src/__tests__/generate.test.ts +0 -237
- package/src/__tests__/get-host-from-url.test.ts +0 -16
- package/src/__tests__/guess-worker-format.test.ts +0 -120
- package/src/__tests__/helpers/clipboardy-mock.js +0 -4
- package/src/__tests__/helpers/cmd-shim.d.ts +0 -11
- package/src/__tests__/helpers/end-event-loop.ts +0 -6
- package/src/__tests__/helpers/mock-account-id.ts +0 -48
- package/src/__tests__/helpers/mock-auth-domain.ts +0 -20
- package/src/__tests__/helpers/mock-bin.ts +0 -36
- package/src/__tests__/helpers/mock-console.ts +0 -112
- package/src/__tests__/helpers/mock-dialogs.ts +0 -139
- package/src/__tests__/helpers/mock-get-pages-upload-token.ts +0 -25
- package/src/__tests__/helpers/mock-get-zone-from-host.ts +0 -11
- package/src/__tests__/helpers/mock-http-server.ts +0 -46
- package/src/__tests__/helpers/mock-istty.ts +0 -74
- package/src/__tests__/helpers/mock-known-routes.ts +0 -12
- package/src/__tests__/helpers/mock-kv.ts +0 -46
- package/src/__tests__/helpers/mock-oauth-flow.ts +0 -263
- package/src/__tests__/helpers/mock-process.ts +0 -34
- package/src/__tests__/helpers/mock-set-timeout.ts +0 -16
- package/src/__tests__/helpers/mock-stdin.ts +0 -108
- package/src/__tests__/helpers/mock-web-socket.ts +0 -29
- package/src/__tests__/helpers/msw/blob-worker.cjs +0 -19
- package/src/__tests__/helpers/msw/handlers/access.ts +0 -13
- package/src/__tests__/helpers/msw/handlers/deployments.ts +0 -160
- package/src/__tests__/helpers/msw/handlers/namespaces.ts +0 -81
- package/src/__tests__/helpers/msw/handlers/oauth.ts +0 -31
- package/src/__tests__/helpers/msw/handlers/r2.ts +0 -60
- package/src/__tests__/helpers/msw/handlers/script.ts +0 -56
- package/src/__tests__/helpers/msw/handlers/user.ts +0 -52
- package/src/__tests__/helpers/msw/handlers/zones.ts +0 -20
- package/src/__tests__/helpers/msw/index.ts +0 -52
- package/src/__tests__/helpers/msw/read-file-sync.js +0 -61
- package/src/__tests__/helpers/run-in-tmp.ts +0 -38
- package/src/__tests__/helpers/run-wrangler.ts +0 -16
- package/src/__tests__/helpers/string-dynamic-values-matcher.ts +0 -28
- package/src/__tests__/helpers/worker-scripts/child-wrangler.toml +0 -1
- package/src/__tests__/helpers/worker-scripts/hello-world-worker.js +0 -5
- package/src/__tests__/helpers/worker-scripts/hello-world-wrangler.toml +0 -1
- package/src/__tests__/helpers/worker-scripts/parent-worker.js +0 -11
- package/src/__tests__/helpers/worker-scripts/parent-wrangler.toml +0 -5
- package/src/__tests__/helpers/write-worker-source.ts +0 -31
- package/src/__tests__/helpers/write-wrangler-toml.ts +0 -17
- package/src/__tests__/https-options.test.ts +0 -163
- package/src/__tests__/index.test.ts +0 -280
- package/src/__tests__/init.test.ts +0 -3196
- package/src/__tests__/jest.setup.ts +0 -179
- package/src/__tests__/kv.test.ts +0 -1799
- package/src/__tests__/logger.test.ts +0 -207
- package/src/__tests__/logout.test.ts +0 -47
- package/src/__tests__/metrics.test.ts +0 -493
- package/src/__tests__/middleware.scheduled.test.ts +0 -145
- package/src/__tests__/middleware.test.ts +0 -816
- package/src/__tests__/mtls-certificates.test.ts +0 -588
- package/src/__tests__/package-manager.test.ts +0 -353
- package/src/__tests__/pages/deployment-list.test.ts +0 -80
- package/src/__tests__/pages/functions-build.test.ts +0 -452
- package/src/__tests__/pages/pages.test.ts +0 -81
- package/src/__tests__/pages/project-create.test.ts +0 -63
- package/src/__tests__/pages/project-list.test.ts +0 -110
- package/src/__tests__/pages/project-upload.test.ts +0 -500
- package/src/__tests__/pages/publish.test.ts +0 -2864
- package/src/__tests__/pages-deployment-tail.test.ts +0 -955
- package/src/__tests__/parse.test.ts +0 -436
- package/src/__tests__/paths.test.ts +0 -39
- package/src/__tests__/publish.test.ts +0 -8423
- package/src/__tests__/pubsub.test.ts +0 -496
- package/src/__tests__/queues.test.ts +0 -532
- package/src/__tests__/r2.test.ts +0 -374
- package/src/__tests__/route.test.ts +0 -45
- package/src/__tests__/secret.test.ts +0 -693
- package/src/__tests__/tail.test.ts +0 -958
- package/src/__tests__/test-old-node-version.js +0 -31
- package/src/__tests__/traverse-module-graph.test.ts +0 -220
- package/src/__tests__/tsconfig-sanity.ts +0 -12
- package/src/__tests__/tsconfig.json +0 -8
- package/src/__tests__/tsconfig.tsbuildinfo +0 -1
- package/src/__tests__/type-generation.test.ts +0 -234
- package/src/__tests__/user.test.ts +0 -118
- package/src/__tests__/utils-collectKeyValues.test.ts +0 -47
- package/src/__tests__/validate-dev-props.test.ts +0 -56
- package/src/__tests__/version.test.ts +0 -35
- package/src/__tests__/whoami.test.tsx +0 -172
- package/src/__tests__/worker-namespace.test.ts +0 -340
- package/src/abort.d.ts +0 -3
- package/src/api/dev.ts +0 -316
- package/src/api/index.ts +0 -11
- package/src/api/mtls-certificate.ts +0 -148
- package/src/api/pages/create-worker-bundle-contents.ts +0 -76
- package/src/api/pages/index.ts +0 -5
- package/src/api/pages/publish.tsx +0 -355
- package/src/bundle-reporter.ts +0 -68
- package/src/bundle.ts +0 -908
- package/src/cfetch/index.ts +0 -158
- package/src/cfetch/internal.ts +0 -258
- package/src/cli.ts +0 -28
- package/src/config/README.md +0 -107
- package/src/config/config.ts +0 -282
- package/src/config/diagnostics.ts +0 -80
- package/src/config/environment.ts +0 -618
- package/src/config/index.ts +0 -403
- package/src/config/validation-helpers.ts +0 -597
- package/src/config/validation.ts +0 -2342
- package/src/config-cache.ts +0 -85
- package/src/create-worker-preview.ts +0 -293
- package/src/create-worker-upload-form.ts +0 -359
- package/src/d1/backups.tsx +0 -219
- package/src/d1/constants.ts +0 -2
- package/src/d1/create.tsx +0 -68
- package/src/d1/delete.ts +0 -53
- package/src/d1/execute.tsx +0 -357
- package/src/d1/formatTimeAgo.ts +0 -14
- package/src/d1/index.ts +0 -100
- package/src/d1/list.tsx +0 -60
- package/src/d1/migrations/apply.tsx +0 -212
- package/src/d1/migrations/create.tsx +0 -79
- package/src/d1/migrations/helpers.ts +0 -172
- package/src/d1/migrations/index.ts +0 -3
- package/src/d1/migrations/list.tsx +0 -95
- package/src/d1/migrations/options.ts +0 -23
- package/src/d1/options.ts +0 -22
- package/src/d1/splitter.ts +0 -161
- package/src/d1/types.ts +0 -25
- package/src/d1/utils.ts +0 -49
- package/src/delete.ts +0 -100
- package/src/deployments.ts +0 -368
- package/src/deprecated/index.ts +0 -144
- package/src/dev/dev-vars.ts +0 -39
- package/src/dev/dev.tsx +0 -600
- package/src/dev/get-local-persistence-path.ts +0 -31
- package/src/dev/local.tsx +0 -920
- package/src/dev/remote.tsx +0 -632
- package/src/dev/start-server.ts +0 -534
- package/src/dev/use-esbuild.ts +0 -203
- package/src/dev/validate-dev-props.ts +0 -40
- package/src/dev-registry.ts +0 -202
- package/src/dev.tsx +0 -929
- package/src/dialogs.ts +0 -136
- package/src/dispatch-namespace.ts +0 -211
- package/src/docs/index.ts +0 -97
- package/src/durable.ts +0 -102
- package/src/entry.ts +0 -337
- package/src/environment-variables/factory.ts +0 -88
- package/src/environment-variables/misc-variables.ts +0 -30
- package/src/errors.ts +0 -11
- package/src/generate/index.ts +0 -298
- package/src/git-client.ts +0 -135
- package/src/global-wrangler-config-path.ts +0 -26
- package/src/https-options.ts +0 -127
- package/src/index.ts +0 -758
- package/src/init.ts +0 -1032
- package/src/inspect.ts +0 -782
- package/src/intl-polyfill.d.ts +0 -139
- package/src/is-ci.ts +0 -14
- package/src/is-interactive.ts +0 -16
- package/src/jest.d.ts +0 -4
- package/src/kv/helpers.ts +0 -430
- package/src/kv/index.ts +0 -594
- package/src/logger.ts +0 -119
- package/src/metrics/index.ts +0 -5
- package/src/metrics/metrics-config.ts +0 -239
- package/src/metrics/metrics-dispatcher.ts +0 -96
- package/src/metrics/metrics-usage-headers.ts +0 -24
- package/src/metrics/send-event.ts +0 -99
- package/src/miniflare-cli/README.md +0 -30
- package/src/miniflare-cli/assets.ts +0 -251
- package/src/miniflare-cli/index.ts +0 -210
- package/src/miniflare-cli/request-context.ts +0 -40
- package/src/miniflare-cli/tsconfig.json +0 -9
- package/src/miniflare-cli/tsconfig.tsbuildinfo +0 -1
- package/src/miniflare-cli/types.ts +0 -11
- package/src/module-collection.ts +0 -333
- package/src/mtls-certificate/cli.ts +0 -155
- package/src/open-in-browser.ts +0 -17
- package/src/package-manager.ts +0 -219
- package/src/pages/build.ts +0 -410
- package/src/pages/buildFunctions.ts +0 -140
- package/src/pages/constants.ts +0 -18
- package/src/pages/deployment-tails.ts +0 -281
- package/src/pages/deployments.tsx +0 -84
- package/src/pages/dev.ts +0 -716
- package/src/pages/errors.ts +0 -67
- package/src/pages/functions/buildPlugin.ts +0 -113
- package/src/pages/functions/buildWorker.ts +0 -291
- package/src/pages/functions/filepath-routing.test.ts +0 -234
- package/src/pages/functions/filepath-routing.ts +0 -189
- package/src/pages/functions/identifiers.ts +0 -78
- package/src/pages/functions/routes-consolidation.test.ts +0 -250
- package/src/pages/functions/routes-consolidation.ts +0 -73
- package/src/pages/functions/routes-transformation.test.ts +0 -282
- package/src/pages/functions/routes-transformation.ts +0 -115
- package/src/pages/functions/routes-validation.test.ts +0 -403
- package/src/pages/functions/routes-validation.ts +0 -202
- package/src/pages/functions/routes.ts +0 -151
- package/src/pages/functions/tsconfig.json +0 -8
- package/src/pages/functions/tsconfig.tsbuildinfo +0 -1
- package/src/pages/functions.ts +0 -86
- package/src/pages/hash.ts +0 -13
- package/src/pages/index.ts +0 -102
- package/src/pages/projects.tsx +0 -159
- package/src/pages/prompt-select-project.tsx +0 -31
- package/src/pages/publish.tsx +0 -267
- package/src/pages/types.ts +0 -46
- package/src/pages/upload.tsx +0 -469
- package/src/pages/utils.ts +0 -23
- package/src/parse.ts +0 -308
- package/src/paths.ts +0 -71
- package/src/proxy.ts +0 -694
- package/src/publish/index.ts +0 -274
- package/src/publish/publish.ts +0 -1060
- package/src/pubsub/index.ts +0 -286
- package/src/pubsub/pubsub-commands.ts +0 -623
- package/src/queues/cli/commands/consumer/add.ts +0 -71
- package/src/queues/cli/commands/consumer/index.ts +0 -19
- package/src/queues/cli/commands/consumer/remove.ts +0 -31
- package/src/queues/cli/commands/create.ts +0 -25
- package/src/queues/cli/commands/delete.ts +0 -26
- package/src/queues/cli/commands/index.ts +0 -35
- package/src/queues/cli/commands/list.ts +0 -25
- package/src/queues/client.ts +0 -136
- package/src/queues/utils.ts +0 -18
- package/src/r2/constants.ts +0 -4
- package/src/r2/helpers.ts +0 -132
- package/src/r2/index.ts +0 -289
- package/src/routes.ts +0 -140
- package/src/secret/index.ts +0 -376
- package/src/selfsigned.d.ts +0 -29
- package/src/sites.ts +0 -372
- package/src/tail/createTail.ts +0 -406
- package/src/tail/filters.ts +0 -277
- package/src/tail/index.ts +0 -211
- package/src/tail/printing.ts +0 -122
- package/src/traverse-module-graph.ts +0 -53
- package/src/tsconfig-sanity.ts +0 -16
- package/src/type-generation.ts +0 -181
- package/src/update-check.ts +0 -19
- package/src/user/access.ts +0 -68
- package/src/user/auth-variables.ts +0 -113
- package/src/user/choose-account.tsx +0 -39
- package/src/user/generate-auth-url.ts +0 -33
- package/src/user/generate-random-state.ts +0 -16
- package/src/user/index.ts +0 -2
- package/src/user/user.ts +0 -1233
- package/src/utils/collectKeyValues.ts +0 -14
- package/src/utils/render.ts +0 -93
- package/src/whoami.ts +0 -135
- package/src/worker.ts +0 -274
- package/src/yargs-types.ts +0 -37
- package/src/zones.ts +0 -191
- package/templates/__tests__/tsconfig.tsbuildinfo +0 -1
- package/templates/d1-beta-facade.js +0 -244
- package/templates/first-party-worker-module-facade.ts +0 -19
- package/templates/format-dev-errors.ts +0 -34
- package/templates/serve-static-assets.ts +0 -66
- package/templates/service-bindings-module-facade.js +0 -55
- package/templates/service-bindings-sw-facade.js +0 -42
- package/templates/tsconfig.tsbuildinfo +0 -1
|
@@ -1,359 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from "node:fs";
|
|
2
|
-
import { FormData, File } from "undici";
|
|
3
|
-
import type {
|
|
4
|
-
CfWorkerInit,
|
|
5
|
-
CfModuleType,
|
|
6
|
-
CfDurableObjectMigrations,
|
|
7
|
-
} from "./worker.js";
|
|
8
|
-
|
|
9
|
-
export function toMimeType(type: CfModuleType): string {
|
|
10
|
-
switch (type) {
|
|
11
|
-
case "esm":
|
|
12
|
-
return "application/javascript+module";
|
|
13
|
-
case "commonjs":
|
|
14
|
-
return "application/javascript";
|
|
15
|
-
case "compiled-wasm":
|
|
16
|
-
return "application/wasm";
|
|
17
|
-
case "buffer":
|
|
18
|
-
return "application/octet-stream";
|
|
19
|
-
case "text":
|
|
20
|
-
return "text/plain";
|
|
21
|
-
default:
|
|
22
|
-
throw new TypeError("Unsupported module: " + type);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export type WorkerMetadataBinding =
|
|
27
|
-
// If you add any new binding types here, also add it to safeBindings
|
|
28
|
-
// under validateUnsafeBinding in config/validation.ts
|
|
29
|
-
| { type: "plain_text"; name: string; text: string }
|
|
30
|
-
| { type: "json"; name: string; json: unknown }
|
|
31
|
-
| { type: "wasm_module"; name: string; part: string }
|
|
32
|
-
| { type: "text_blob"; name: string; part: string }
|
|
33
|
-
| { type: "data_blob"; name: string; part: string }
|
|
34
|
-
| { type: "kv_namespace"; name: string; namespace_id: string }
|
|
35
|
-
| {
|
|
36
|
-
type: "send_email";
|
|
37
|
-
name: string;
|
|
38
|
-
destination_address?: string;
|
|
39
|
-
allowed_destination_addresses?: string[];
|
|
40
|
-
}
|
|
41
|
-
| {
|
|
42
|
-
type: "durable_object_namespace";
|
|
43
|
-
name: string;
|
|
44
|
-
class_name: string;
|
|
45
|
-
script_name?: string;
|
|
46
|
-
environment?: string;
|
|
47
|
-
}
|
|
48
|
-
| { type: "queue"; name: string; queue_name: string }
|
|
49
|
-
| { type: "r2_bucket"; name: string; bucket_name: string }
|
|
50
|
-
| { type: "d1"; name: string; id: string; internalEnv?: string }
|
|
51
|
-
| { type: "service"; name: string; service: string; environment?: string }
|
|
52
|
-
| { type: "analytics_engine"; name: string; dataset?: string }
|
|
53
|
-
| { type: "dispatch_namespace"; name: string; namespace: string }
|
|
54
|
-
| { type: "mtls_certificate"; name: string; certificate_id: string }
|
|
55
|
-
| {
|
|
56
|
-
type: "logfwdr";
|
|
57
|
-
name: string;
|
|
58
|
-
destination: string;
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
export interface WorkerMetadata {
|
|
62
|
-
/** The name of the entry point module. Only exists when the worker is in the ES module format */
|
|
63
|
-
main_module?: string;
|
|
64
|
-
/** The name of the entry point module. Only exists when the worker is in the service-worker format */
|
|
65
|
-
body_part?: string;
|
|
66
|
-
compatibility_date?: string;
|
|
67
|
-
compatibility_flags?: string[];
|
|
68
|
-
usage_model?: "bundled" | "unbound";
|
|
69
|
-
migrations?: CfDurableObjectMigrations;
|
|
70
|
-
capnp_schema?: string;
|
|
71
|
-
bindings: WorkerMetadataBinding[];
|
|
72
|
-
keep_bindings?: WorkerMetadataBinding["type"][];
|
|
73
|
-
logpush?: boolean;
|
|
74
|
-
// Allow unsafe.metadata to add arbitary properties at runtime
|
|
75
|
-
[key: string]: unknown;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Creates a `FormData` upload from a `CfWorkerInit`.
|
|
80
|
-
*/
|
|
81
|
-
export function createWorkerUploadForm(worker: CfWorkerInit): FormData {
|
|
82
|
-
const formData = new FormData();
|
|
83
|
-
const {
|
|
84
|
-
main,
|
|
85
|
-
bindings,
|
|
86
|
-
migrations,
|
|
87
|
-
usage_model,
|
|
88
|
-
compatibility_date,
|
|
89
|
-
compatibility_flags,
|
|
90
|
-
keepVars,
|
|
91
|
-
logpush,
|
|
92
|
-
} = worker;
|
|
93
|
-
|
|
94
|
-
let { modules } = worker;
|
|
95
|
-
|
|
96
|
-
const metadataBindings: WorkerMetadata["bindings"] = [];
|
|
97
|
-
|
|
98
|
-
Object.entries(bindings.vars || {})?.forEach(([key, value]) => {
|
|
99
|
-
if (typeof value === "string") {
|
|
100
|
-
metadataBindings.push({ name: key, type: "plain_text", text: value });
|
|
101
|
-
} else {
|
|
102
|
-
metadataBindings.push({ name: key, type: "json", json: value });
|
|
103
|
-
}
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
bindings.kv_namespaces?.forEach(({ id, binding }) => {
|
|
107
|
-
metadataBindings.push({
|
|
108
|
-
name: binding,
|
|
109
|
-
type: "kv_namespace",
|
|
110
|
-
namespace_id: id,
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
bindings.send_email?.forEach(
|
|
115
|
-
({ name, destination_address, allowed_destination_addresses }) => {
|
|
116
|
-
metadataBindings.push({
|
|
117
|
-
name: name,
|
|
118
|
-
type: "send_email",
|
|
119
|
-
destination_address,
|
|
120
|
-
allowed_destination_addresses,
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
);
|
|
124
|
-
|
|
125
|
-
bindings.durable_objects?.bindings.forEach(
|
|
126
|
-
({ name, class_name, script_name, environment }) => {
|
|
127
|
-
metadataBindings.push({
|
|
128
|
-
name,
|
|
129
|
-
type: "durable_object_namespace",
|
|
130
|
-
class_name: class_name,
|
|
131
|
-
...(script_name && { script_name }),
|
|
132
|
-
...(environment && { environment }),
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
);
|
|
136
|
-
|
|
137
|
-
bindings.queues?.forEach(({ binding, queue_name }) => {
|
|
138
|
-
metadataBindings.push({
|
|
139
|
-
type: "queue",
|
|
140
|
-
name: binding,
|
|
141
|
-
queue_name,
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
bindings.r2_buckets?.forEach(({ binding, bucket_name }) => {
|
|
146
|
-
metadataBindings.push({
|
|
147
|
-
name: binding,
|
|
148
|
-
type: "r2_bucket",
|
|
149
|
-
bucket_name,
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
bindings.d1_databases?.forEach(
|
|
154
|
-
({ binding, database_id, database_internal_env }) => {
|
|
155
|
-
metadataBindings.push({
|
|
156
|
-
name: binding,
|
|
157
|
-
type: "d1",
|
|
158
|
-
id: database_id,
|
|
159
|
-
internalEnv: database_internal_env,
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
);
|
|
163
|
-
|
|
164
|
-
bindings.services?.forEach(({ binding, service, environment }) => {
|
|
165
|
-
metadataBindings.push({
|
|
166
|
-
name: binding,
|
|
167
|
-
type: "service",
|
|
168
|
-
service,
|
|
169
|
-
...(environment && { environment }),
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
bindings.analytics_engine_datasets?.forEach(({ binding, dataset }) => {
|
|
174
|
-
metadataBindings.push({
|
|
175
|
-
name: binding,
|
|
176
|
-
type: "analytics_engine",
|
|
177
|
-
dataset,
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
bindings.dispatch_namespaces?.forEach(({ binding, namespace }) => {
|
|
182
|
-
metadataBindings.push({
|
|
183
|
-
name: binding,
|
|
184
|
-
type: "dispatch_namespace",
|
|
185
|
-
namespace,
|
|
186
|
-
});
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
bindings.mtls_certificates?.forEach(({ binding, certificate_id }) => {
|
|
190
|
-
metadataBindings.push({
|
|
191
|
-
name: binding,
|
|
192
|
-
type: "mtls_certificate",
|
|
193
|
-
certificate_id,
|
|
194
|
-
});
|
|
195
|
-
});
|
|
196
|
-
|
|
197
|
-
bindings.logfwdr?.bindings.forEach(({ name, destination }) => {
|
|
198
|
-
metadataBindings.push({
|
|
199
|
-
name: name,
|
|
200
|
-
type: "logfwdr",
|
|
201
|
-
destination,
|
|
202
|
-
});
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
for (const [name, filePath] of Object.entries(bindings.wasm_modules || {})) {
|
|
206
|
-
metadataBindings.push({
|
|
207
|
-
name,
|
|
208
|
-
type: "wasm_module",
|
|
209
|
-
part: name,
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
formData.set(
|
|
213
|
-
name,
|
|
214
|
-
new File([readFileSync(filePath)], filePath, {
|
|
215
|
-
type: "application/wasm",
|
|
216
|
-
})
|
|
217
|
-
);
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
for (const [name, filePath] of Object.entries(bindings.text_blobs || {})) {
|
|
221
|
-
metadataBindings.push({
|
|
222
|
-
name,
|
|
223
|
-
type: "text_blob",
|
|
224
|
-
part: name,
|
|
225
|
-
});
|
|
226
|
-
|
|
227
|
-
if (name !== "__STATIC_CONTENT_MANIFEST") {
|
|
228
|
-
formData.set(
|
|
229
|
-
name,
|
|
230
|
-
new File([readFileSync(filePath)], filePath, {
|
|
231
|
-
type: "text/plain",
|
|
232
|
-
})
|
|
233
|
-
);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
for (const [name, filePath] of Object.entries(bindings.data_blobs || {})) {
|
|
238
|
-
metadataBindings.push({
|
|
239
|
-
name,
|
|
240
|
-
type: "data_blob",
|
|
241
|
-
part: name,
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
formData.set(
|
|
245
|
-
name,
|
|
246
|
-
new File([readFileSync(filePath)], filePath, {
|
|
247
|
-
type: "application/octet-stream",
|
|
248
|
-
})
|
|
249
|
-
);
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
if (main.type === "commonjs") {
|
|
253
|
-
// This is a service-worker format worker.
|
|
254
|
-
for (const module of Object.values([...(modules || [])])) {
|
|
255
|
-
if (module.name === "__STATIC_CONTENT_MANIFEST") {
|
|
256
|
-
// Add the manifest to the form data.
|
|
257
|
-
formData.set(
|
|
258
|
-
module.name,
|
|
259
|
-
new File([module.content], module.name, {
|
|
260
|
-
type: "text/plain",
|
|
261
|
-
})
|
|
262
|
-
);
|
|
263
|
-
// And then remove it from the modules collection
|
|
264
|
-
modules = modules?.filter((m) => m !== module);
|
|
265
|
-
} else if (
|
|
266
|
-
module.type === "compiled-wasm" ||
|
|
267
|
-
module.type === "text" ||
|
|
268
|
-
module.type === "buffer"
|
|
269
|
-
) {
|
|
270
|
-
// Convert all wasm/text/data modules into `wasm_module`/`text_blob`/`data_blob` bindings.
|
|
271
|
-
// The "name" of the module is a file path. We use it
|
|
272
|
-
// to instead be a "part" of the body, and a reference
|
|
273
|
-
// that we can use inside our source. This identifier has to be a valid
|
|
274
|
-
// JS identifier, so we replace all non alphanumeric characters
|
|
275
|
-
// with an underscore.
|
|
276
|
-
const name = module.name.replace(/[^a-zA-Z0-9_$]/g, "_");
|
|
277
|
-
metadataBindings.push({
|
|
278
|
-
name,
|
|
279
|
-
type:
|
|
280
|
-
module.type === "compiled-wasm"
|
|
281
|
-
? "wasm_module"
|
|
282
|
-
: module.type === "text"
|
|
283
|
-
? "text_blob"
|
|
284
|
-
: "data_blob",
|
|
285
|
-
part: name,
|
|
286
|
-
});
|
|
287
|
-
|
|
288
|
-
// Add the module to the form data.
|
|
289
|
-
formData.set(
|
|
290
|
-
name,
|
|
291
|
-
new File([module.content], module.name, {
|
|
292
|
-
type:
|
|
293
|
-
module.type === "compiled-wasm"
|
|
294
|
-
? "application/wasm"
|
|
295
|
-
: module.type === "text"
|
|
296
|
-
? "text/plain"
|
|
297
|
-
: "application/octet-stream",
|
|
298
|
-
})
|
|
299
|
-
);
|
|
300
|
-
// And then remove it from the modules collection
|
|
301
|
-
modules = modules?.filter((m) => m !== module);
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
if (bindings.unsafe?.bindings) {
|
|
307
|
-
// @ts-expect-error unsafe bindings don't need to match a specific type here
|
|
308
|
-
metadataBindings.push(...bindings.unsafe.bindings);
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
const metadata: WorkerMetadata = {
|
|
312
|
-
...(main.type !== "commonjs"
|
|
313
|
-
? { main_module: main.name }
|
|
314
|
-
: { body_part: main.name }),
|
|
315
|
-
bindings: metadataBindings,
|
|
316
|
-
...(compatibility_date && { compatibility_date }),
|
|
317
|
-
...(compatibility_flags && { compatibility_flags }),
|
|
318
|
-
...(usage_model && { usage_model }),
|
|
319
|
-
...(migrations && { migrations }),
|
|
320
|
-
capnp_schema: bindings.logfwdr?.schema,
|
|
321
|
-
...(keepVars && { keep_bindings: ["plain_text", "json"] }),
|
|
322
|
-
...(logpush !== undefined && { logpush }),
|
|
323
|
-
};
|
|
324
|
-
|
|
325
|
-
if (bindings.unsafe?.metadata !== undefined) {
|
|
326
|
-
for (const key of Object.keys(bindings.unsafe.metadata)) {
|
|
327
|
-
metadata[key] = bindings.unsafe.metadata[key];
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
formData.set("metadata", JSON.stringify(metadata));
|
|
332
|
-
|
|
333
|
-
if (main.type === "commonjs" && modules && modules.length > 0) {
|
|
334
|
-
throw new TypeError(
|
|
335
|
-
"More than one module can only be specified when type = 'esm'"
|
|
336
|
-
);
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
for (const module of [main].concat(modules || [])) {
|
|
340
|
-
formData.set(
|
|
341
|
-
module.name,
|
|
342
|
-
new File([module.content], module.name, {
|
|
343
|
-
type: toMimeType(module.type ?? main.type ?? "esm"),
|
|
344
|
-
})
|
|
345
|
-
);
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
if (bindings.logfwdr && bindings.logfwdr.schema) {
|
|
349
|
-
const filePath = bindings.logfwdr.schema;
|
|
350
|
-
formData.set(
|
|
351
|
-
filePath,
|
|
352
|
-
new File([readFileSync(filePath)], filePath, {
|
|
353
|
-
type: "application/octet-stream",
|
|
354
|
-
})
|
|
355
|
-
);
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
return formData;
|
|
359
|
-
}
|
package/src/d1/backups.tsx
DELETED
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs/promises";
|
|
2
|
-
import * as path from "path";
|
|
3
|
-
import Table from "ink-table";
|
|
4
|
-
import React from "react";
|
|
5
|
-
import { fetchResult } from "../cfetch";
|
|
6
|
-
import { performApiFetch } from "../cfetch/internal";
|
|
7
|
-
import { withConfig } from "../config";
|
|
8
|
-
import { logger } from "../logger";
|
|
9
|
-
import { requireAuth } from "../user";
|
|
10
|
-
import { renderToString } from "../utils/render";
|
|
11
|
-
import { formatBytes, formatTimeAgo } from "./formatTimeAgo";
|
|
12
|
-
import { Name } from "./options";
|
|
13
|
-
import { d1BetaWarning, getDatabaseByNameOrBinding } from "./utils";
|
|
14
|
-
import type {
|
|
15
|
-
CommonYargsArgv,
|
|
16
|
-
StrictYargsOptionsToInterface,
|
|
17
|
-
} from "../yargs-types";
|
|
18
|
-
import type { Backup, Database } from "./types";
|
|
19
|
-
import type { Response } from "undici";
|
|
20
|
-
|
|
21
|
-
export function ListOptions(yargs: CommonYargsArgv) {
|
|
22
|
-
return Name(yargs);
|
|
23
|
-
}
|
|
24
|
-
type ListHandlerOptions = StrictYargsOptionsToInterface<typeof ListOptions>;
|
|
25
|
-
export const ListHandler = withConfig<ListHandlerOptions>(
|
|
26
|
-
async ({ config, name }): Promise<void> => {
|
|
27
|
-
const accountId = await requireAuth({});
|
|
28
|
-
logger.log(d1BetaWarning);
|
|
29
|
-
const db: Database = await getDatabaseByNameOrBinding(
|
|
30
|
-
config,
|
|
31
|
-
accountId,
|
|
32
|
-
name
|
|
33
|
-
);
|
|
34
|
-
|
|
35
|
-
const backups: Backup[] = await listBackups(accountId, db.uuid);
|
|
36
|
-
logger.log(
|
|
37
|
-
renderToString(
|
|
38
|
-
<Table
|
|
39
|
-
data={backups}
|
|
40
|
-
columns={["created_at", "id", "num_tables", "size"]}
|
|
41
|
-
></Table>
|
|
42
|
-
)
|
|
43
|
-
);
|
|
44
|
-
}
|
|
45
|
-
);
|
|
46
|
-
|
|
47
|
-
export const listBackups = async (
|
|
48
|
-
accountId: string,
|
|
49
|
-
uuid: string
|
|
50
|
-
): Promise<Array<Backup>> => {
|
|
51
|
-
const json: Backup[] = await fetchResult(
|
|
52
|
-
`/accounts/${accountId}/d1/database/${uuid}/backup`,
|
|
53
|
-
{}
|
|
54
|
-
);
|
|
55
|
-
const results: Record<string, Backup> = {};
|
|
56
|
-
|
|
57
|
-
json
|
|
58
|
-
// First, convert created_at to a Date
|
|
59
|
-
.map((backup) => ({
|
|
60
|
-
...backup,
|
|
61
|
-
created_at: new Date(backup.created_at),
|
|
62
|
-
}))
|
|
63
|
-
// Then, sort descending based on created_at
|
|
64
|
-
.sort((a, b) => +b.created_at - +a.created_at)
|
|
65
|
-
// then group_by their human-readable timestamp i.e. "2 days ago"
|
|
66
|
-
// (storing only the first of each group)
|
|
67
|
-
// and replace the Date version with this new human-readable one
|
|
68
|
-
.forEach((backup) => {
|
|
69
|
-
const timeAgo = formatTimeAgo(backup.created_at);
|
|
70
|
-
if (!results[timeAgo]) {
|
|
71
|
-
results[timeAgo] = {
|
|
72
|
-
...backup,
|
|
73
|
-
created_at: timeAgo,
|
|
74
|
-
size: formatBytes(backup.file_size),
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
// Take advantage of JS objects' sorting to return the newest backup of a certain age
|
|
80
|
-
return Object.values(results);
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
export function CreateOptions(yargs: CommonYargsArgv) {
|
|
84
|
-
return ListOptions(yargs);
|
|
85
|
-
}
|
|
86
|
-
type CreateHandlerOptions = StrictYargsOptionsToInterface<typeof CreateOptions>;
|
|
87
|
-
|
|
88
|
-
export const CreateHandler = withConfig<CreateHandlerOptions>(
|
|
89
|
-
async ({ config, name }): Promise<void> => {
|
|
90
|
-
const accountId = await requireAuth({});
|
|
91
|
-
logger.log(d1BetaWarning);
|
|
92
|
-
const db: Database = await getDatabaseByNameOrBinding(
|
|
93
|
-
config,
|
|
94
|
-
accountId,
|
|
95
|
-
name
|
|
96
|
-
);
|
|
97
|
-
|
|
98
|
-
const backup: Backup = await createBackup(accountId, db.uuid);
|
|
99
|
-
logger.log(
|
|
100
|
-
renderToString(
|
|
101
|
-
<Table
|
|
102
|
-
data={[backup]}
|
|
103
|
-
columns={["created_at", "id", "num_tables", "size", "state"]}
|
|
104
|
-
></Table>
|
|
105
|
-
)
|
|
106
|
-
);
|
|
107
|
-
}
|
|
108
|
-
);
|
|
109
|
-
|
|
110
|
-
export const createBackup = async (
|
|
111
|
-
accountId: string,
|
|
112
|
-
uuid: string
|
|
113
|
-
): Promise<Backup> => {
|
|
114
|
-
const backup: Backup = await fetchResult(
|
|
115
|
-
`/accounts/${accountId}/d1/database/${uuid}/backup`,
|
|
116
|
-
{
|
|
117
|
-
method: "POST",
|
|
118
|
-
}
|
|
119
|
-
);
|
|
120
|
-
return {
|
|
121
|
-
...backup,
|
|
122
|
-
size: formatBytes(backup.file_size),
|
|
123
|
-
};
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
export function RestoreOptions(yargs: CommonYargsArgv) {
|
|
127
|
-
return ListOptions(yargs).positional("backup-id", {
|
|
128
|
-
describe: "The Backup ID to restore",
|
|
129
|
-
type: "string",
|
|
130
|
-
demandOption: true,
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
type RestoreHandlerOptions = StrictYargsOptionsToInterface<
|
|
134
|
-
typeof RestoreOptions
|
|
135
|
-
>;
|
|
136
|
-
export const RestoreHandler = withConfig<RestoreHandlerOptions>(
|
|
137
|
-
async ({ config, name, backupId }): Promise<void> => {
|
|
138
|
-
const accountId = await requireAuth({});
|
|
139
|
-
logger.log(d1BetaWarning);
|
|
140
|
-
const db: Database = await getDatabaseByNameOrBinding(
|
|
141
|
-
config,
|
|
142
|
-
accountId,
|
|
143
|
-
name
|
|
144
|
-
);
|
|
145
|
-
|
|
146
|
-
logger.log(`Restoring ${name} from backup ${backupId}....`);
|
|
147
|
-
await restoreBackup(accountId, db.uuid, backupId);
|
|
148
|
-
logger.log(`Done!`);
|
|
149
|
-
}
|
|
150
|
-
);
|
|
151
|
-
|
|
152
|
-
export const restoreBackup = async (
|
|
153
|
-
accountId: string,
|
|
154
|
-
uuid: string,
|
|
155
|
-
backupId: string
|
|
156
|
-
): Promise<void> => {
|
|
157
|
-
await fetchResult(
|
|
158
|
-
`/accounts/${accountId}/d1/database/${uuid}/backup/${backupId}/restore`,
|
|
159
|
-
{
|
|
160
|
-
method: "POST",
|
|
161
|
-
headers: {
|
|
162
|
-
"Content-Type": "application/json",
|
|
163
|
-
},
|
|
164
|
-
}
|
|
165
|
-
);
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
export function DownloadOptions(yargs: CommonYargsArgv) {
|
|
169
|
-
return ListOptions(yargs)
|
|
170
|
-
.positional("backup-id", {
|
|
171
|
-
describe: "The Backup ID to download",
|
|
172
|
-
type: "string",
|
|
173
|
-
demandOption: true,
|
|
174
|
-
})
|
|
175
|
-
.option("output", {
|
|
176
|
-
describe:
|
|
177
|
-
"The .sqlite3 file to write to (defaults to '<db-name>.<short-backup-id>.sqlite3'",
|
|
178
|
-
type: "string",
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
type DownloadHandlerOptions = StrictYargsOptionsToInterface<
|
|
182
|
-
typeof DownloadOptions
|
|
183
|
-
>;
|
|
184
|
-
export const DownloadHandler = withConfig<DownloadHandlerOptions>(
|
|
185
|
-
async ({ name, backupId, output, config }): Promise<void> => {
|
|
186
|
-
const accountId = await requireAuth({});
|
|
187
|
-
logger.log(d1BetaWarning);
|
|
188
|
-
const db: Database = await getDatabaseByNameOrBinding(
|
|
189
|
-
config,
|
|
190
|
-
accountId,
|
|
191
|
-
name
|
|
192
|
-
);
|
|
193
|
-
const filename =
|
|
194
|
-
output || path.resolve(`${name}.${backupId.slice(0, 8)}.sqlite3`);
|
|
195
|
-
|
|
196
|
-
logger.log(`🌀 Downloading backup ${backupId} from '${name}'`);
|
|
197
|
-
const response = await getBackupResponse(accountId, db.uuid, backupId);
|
|
198
|
-
if (!response.ok) {
|
|
199
|
-
throw new Error(
|
|
200
|
-
`Failed to download backup ${backupId} from '${name}' - got ${response.status} from the API`
|
|
201
|
-
);
|
|
202
|
-
}
|
|
203
|
-
logger.log(`🌀 Saving to ${filename}`);
|
|
204
|
-
// TODO: stream this once we upgrade to Node18 and can use Writable.fromWeb
|
|
205
|
-
const buffer = await response.arrayBuffer();
|
|
206
|
-
await fs.writeFile(filename, new Buffer(buffer));
|
|
207
|
-
logger.log(`🌀 Done!`);
|
|
208
|
-
}
|
|
209
|
-
);
|
|
210
|
-
|
|
211
|
-
export const getBackupResponse = async (
|
|
212
|
-
accountId: string,
|
|
213
|
-
uuid: string,
|
|
214
|
-
backupId: string
|
|
215
|
-
): Promise<Response> => {
|
|
216
|
-
return await performApiFetch(
|
|
217
|
-
`/accounts/${accountId}/d1/database/${uuid}/backup/${backupId}/download`
|
|
218
|
-
);
|
|
219
|
-
};
|
package/src/d1/constants.ts
DELETED
package/src/d1/create.tsx
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { Text, Box } from "ink";
|
|
2
|
-
import React from "react";
|
|
3
|
-
import { fetchResult } from "../cfetch";
|
|
4
|
-
import { logger } from "../logger";
|
|
5
|
-
import { requireAuth } from "../user";
|
|
6
|
-
import { renderToString } from "../utils/render";
|
|
7
|
-
import { d1BetaWarning } from "./utils";
|
|
8
|
-
import type {
|
|
9
|
-
CommonYargsArgv,
|
|
10
|
-
StrictYargsOptionsToInterface,
|
|
11
|
-
} from "../yargs-types";
|
|
12
|
-
import type { Database } from "./types";
|
|
13
|
-
|
|
14
|
-
export function Options(yargs: CommonYargsArgv) {
|
|
15
|
-
return yargs
|
|
16
|
-
.positional("name", {
|
|
17
|
-
describe: "The name of the new DB",
|
|
18
|
-
type: "string",
|
|
19
|
-
demandOption: true,
|
|
20
|
-
})
|
|
21
|
-
.epilogue(d1BetaWarning);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export async function Handler({
|
|
25
|
-
name,
|
|
26
|
-
}: StrictYargsOptionsToInterface<typeof Options>): Promise<void> {
|
|
27
|
-
const accountId = await requireAuth({});
|
|
28
|
-
|
|
29
|
-
logger.log(d1BetaWarning);
|
|
30
|
-
|
|
31
|
-
let db: Database;
|
|
32
|
-
try {
|
|
33
|
-
db = await fetchResult(`/accounts/${accountId}/d1/database`, {
|
|
34
|
-
method: "POST",
|
|
35
|
-
headers: {
|
|
36
|
-
"Content-Type": "application/json",
|
|
37
|
-
},
|
|
38
|
-
body: JSON.stringify({
|
|
39
|
-
name,
|
|
40
|
-
}),
|
|
41
|
-
});
|
|
42
|
-
} catch (e) {
|
|
43
|
-
if ((e as { code: number }).code === 7502) {
|
|
44
|
-
throw new Error("A database with that name already exists");
|
|
45
|
-
}
|
|
46
|
-
throw e;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
logger.log(
|
|
50
|
-
renderToString(
|
|
51
|
-
<Box flexDirection="column">
|
|
52
|
-
<Text>✅ Successfully created DB '{db.name}'!</Text>
|
|
53
|
-
<Text> </Text>
|
|
54
|
-
<Text>
|
|
55
|
-
Add the following to your wrangler.toml to connect to it from a
|
|
56
|
-
Worker:
|
|
57
|
-
</Text>
|
|
58
|
-
<Text> </Text>
|
|
59
|
-
<Text>[[ d1_databases ]]</Text>
|
|
60
|
-
<Text>
|
|
61
|
-
binding = "DB" # i.e. available in your Worker on env.DB
|
|
62
|
-
</Text>
|
|
63
|
-
<Text>database_name = "{db.name}"</Text>
|
|
64
|
-
<Text>database_id = "{db.uuid}"</Text>
|
|
65
|
-
</Box>
|
|
66
|
-
)
|
|
67
|
-
);
|
|
68
|
-
}
|
package/src/d1/delete.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { fetchResult } from "../cfetch";
|
|
2
|
-
import { withConfig } from "../config";
|
|
3
|
-
import { confirm } from "../dialogs";
|
|
4
|
-
import { logger } from "../logger";
|
|
5
|
-
import { requireAuth } from "../user";
|
|
6
|
-
import { Name } from "./options";
|
|
7
|
-
import { d1BetaWarning, getDatabaseByNameOrBinding } from "./utils";
|
|
8
|
-
import type {
|
|
9
|
-
CommonYargsArgv,
|
|
10
|
-
StrictYargsOptionsToInterface,
|
|
11
|
-
} from "../yargs-types";
|
|
12
|
-
import type { Database } from "./types";
|
|
13
|
-
|
|
14
|
-
export function Options(d1ListYargs: CommonYargsArgv) {
|
|
15
|
-
return Name(d1ListYargs)
|
|
16
|
-
.option("skip-confirmation", {
|
|
17
|
-
describe: "Skip confirmation",
|
|
18
|
-
type: "boolean",
|
|
19
|
-
alias: "y",
|
|
20
|
-
default: false,
|
|
21
|
-
})
|
|
22
|
-
.epilogue(d1BetaWarning);
|
|
23
|
-
}
|
|
24
|
-
type HandlerOptions = StrictYargsOptionsToInterface<typeof Options>;
|
|
25
|
-
export const Handler = withConfig<HandlerOptions>(
|
|
26
|
-
async ({ name, skipConfirmation, config }): Promise<void> => {
|
|
27
|
-
const accountId = await requireAuth({});
|
|
28
|
-
logger.log(d1BetaWarning);
|
|
29
|
-
|
|
30
|
-
const db: Database = await getDatabaseByNameOrBinding(
|
|
31
|
-
config,
|
|
32
|
-
accountId,
|
|
33
|
-
name
|
|
34
|
-
);
|
|
35
|
-
|
|
36
|
-
logger.log(`About to delete DB '${name}' (${db.uuid}).`);
|
|
37
|
-
if (!skipConfirmation) {
|
|
38
|
-
const response = await confirm(`Ok to proceed?`);
|
|
39
|
-
if (!response) {
|
|
40
|
-
logger.log(`Not deleting.`);
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
logger.log("Deleting...");
|
|
46
|
-
|
|
47
|
-
await fetchResult(`/accounts/${accountId}/d1/database/${db.uuid}`, {
|
|
48
|
-
method: "DELETE",
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
logger.log(`Deleted '${name}' successfully.`);
|
|
52
|
-
}
|
|
53
|
-
);
|