alchemy 0.45.5 → 0.46.0
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 +2 -2
- package/bin/alchemy.mjs +19285 -15137
- package/bin/alchemy.ts +14 -56
- package/bin/commands/create.ts +307 -137
- package/bin/commands/deploy.ts +23 -0
- package/bin/commands/destroy.ts +19 -0
- package/bin/commands/dev.ts +21 -0
- package/bin/commands/login.ts +66 -0
- package/bin/commands/run.ts +29 -0
- package/bin/services/dependencies.ts +0 -5
- package/bin/services/execute-alchemy.ts +160 -0
- package/bin/services/git.ts +27 -0
- package/bin/services/github-workflow.ts +229 -0
- package/bin/services/package-manager.ts +51 -68
- package/bin/services/template-manager.ts +10 -21
- package/bin/trpc.ts +3 -0
- package/bin/types.ts +4 -2
- package/lib/apply.d.ts +2 -0
- package/lib/apply.d.ts.map +1 -1
- package/lib/apply.js +26 -8
- package/lib/apply.js.map +1 -1
- package/lib/build-date.d.ts +1 -1
- package/lib/build-date.js +1 -1
- package/lib/cloudflare/ai.d.ts +8 -4
- package/lib/cloudflare/ai.d.ts.map +1 -1
- package/lib/cloudflare/ai.js +6 -8
- package/lib/cloudflare/ai.js.map +1 -1
- package/lib/cloudflare/analytics-engine.d.ts +11 -7
- package/lib/cloudflare/analytics-engine.d.ts.map +1 -1
- package/lib/cloudflare/analytics-engine.js +11 -9
- package/lib/cloudflare/analytics-engine.js.map +1 -1
- package/lib/cloudflare/{types.d.ts → api-response.d.ts} +6 -1
- package/lib/cloudflare/api-response.d.ts.map +1 -0
- package/lib/cloudflare/api-response.js +38 -0
- package/lib/cloudflare/api-response.js.map +1 -0
- package/lib/cloudflare/auth-wrangler.d.ts +25 -0
- package/lib/cloudflare/auth-wrangler.d.ts.map +1 -0
- package/lib/cloudflare/auth-wrangler.js +224 -0
- package/lib/cloudflare/auth-wrangler.js.map +1 -0
- package/lib/cloudflare/auth.d.ts.map +1 -1
- package/lib/cloudflare/auth.js +7 -116
- package/lib/cloudflare/auth.js.map +1 -1
- package/lib/cloudflare/browser-rendering.d.ts +12 -3
- package/lib/cloudflare/browser-rendering.d.ts.map +1 -1
- package/lib/cloudflare/browser-rendering.js +12 -2
- package/lib/cloudflare/browser-rendering.js.map +1 -1
- package/lib/cloudflare/bundle/fs.d.ts.map +1 -1
- package/lib/cloudflare/bundle/fs.js +3 -0
- package/lib/cloudflare/bundle/fs.js.map +1 -1
- package/lib/cloudflare/bundle/internal-worker-bundle.d.ts +6 -0
- package/lib/cloudflare/bundle/internal-worker-bundle.d.ts.map +1 -0
- package/lib/cloudflare/bundle/internal-worker-bundle.js +14 -0
- package/lib/cloudflare/bundle/internal-worker-bundle.js.map +1 -0
- package/lib/cloudflare/compatibility-presets.d.ts +22 -0
- package/lib/cloudflare/compatibility-presets.d.ts.map +1 -0
- package/lib/cloudflare/compatibility-presets.js +27 -0
- package/lib/cloudflare/compatibility-presets.js.map +1 -0
- package/lib/cloudflare/container.d.ts +6 -2
- package/lib/cloudflare/container.d.ts.map +1 -1
- package/lib/cloudflare/container.js +48 -4
- package/lib/cloudflare/container.js.map +1 -1
- package/lib/cloudflare/dispatch-namespace.d.ts +5 -0
- package/lib/cloudflare/dispatch-namespace.d.ts.map +1 -1
- package/lib/cloudflare/dispatch-namespace.js +8 -0
- package/lib/cloudflare/dispatch-namespace.js.map +1 -1
- package/lib/cloudflare/durable-object-namespace.d.ts +23 -15
- package/lib/cloudflare/durable-object-namespace.d.ts.map +1 -1
- package/lib/cloudflare/durable-object-namespace.js +22 -21
- package/lib/cloudflare/durable-object-namespace.js.map +1 -1
- package/lib/cloudflare/hyperdrive.d.ts +19 -5
- package/lib/cloudflare/hyperdrive.d.ts.map +1 -1
- package/lib/cloudflare/hyperdrive.js +14 -0
- package/lib/cloudflare/hyperdrive.js.map +1 -1
- package/lib/cloudflare/images.d.ts +27 -17
- package/lib/cloudflare/images.d.ts.map +1 -1
- package/lib/cloudflare/images.js +13 -8
- package/lib/cloudflare/images.js.map +1 -1
- package/lib/cloudflare/index.d.ts +1 -3
- package/lib/cloudflare/index.d.ts.map +1 -1
- package/lib/cloudflare/index.js +1 -3
- package/lib/cloudflare/index.js.map +1 -1
- package/lib/cloudflare/miniflare/miniflare.d.ts +3 -3
- package/lib/cloudflare/miniflare/miniflare.d.ts.map +1 -1
- package/lib/cloudflare/miniflare/miniflare.js +7 -7
- package/lib/cloudflare/miniflare/miniflare.js.map +1 -1
- package/lib/cloudflare/miniflare/{mixed-mode.d.ts → remote-binding-proxy.d.ts} +5 -5
- package/lib/cloudflare/miniflare/remote-binding-proxy.d.ts.map +1 -0
- package/lib/cloudflare/miniflare/{mixed-mode.js → remote-binding-proxy.js} +16 -52
- package/lib/cloudflare/miniflare/remote-binding-proxy.js.map +1 -0
- package/lib/cloudflare/state.d.ts +26 -0
- package/lib/cloudflare/state.d.ts.map +1 -0
- package/lib/cloudflare/state.js +14 -0
- package/lib/cloudflare/state.js.map +1 -0
- package/lib/cloudflare/user.d.ts +2 -2
- package/lib/cloudflare/user.d.ts.map +1 -1
- package/lib/cloudflare/user.js +7 -21
- package/lib/cloudflare/user.js.map +1 -1
- package/lib/cloudflare/vectorize-index.d.ts.map +1 -1
- package/lib/cloudflare/vectorize-index.js +5 -2
- package/lib/cloudflare/vectorize-index.js.map +1 -1
- package/lib/cloudflare/version-metadata.d.ts +15 -3
- package/lib/cloudflare/version-metadata.d.ts.map +1 -1
- package/lib/cloudflare/version-metadata.js +11 -2
- package/lib/cloudflare/version-metadata.js.map +1 -1
- package/lib/cloudflare/vite.d.ts.map +1 -1
- package/lib/cloudflare/vite.js +2 -1
- package/lib/cloudflare/vite.js.map +1 -1
- package/lib/cloudflare/worker-metadata.d.ts +13 -2
- package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
- package/lib/cloudflare/worker-metadata.js +10 -15
- package/lib/cloudflare/worker-metadata.js.map +1 -1
- package/lib/cloudflare/worker-subdomain.d.ts +7 -0
- package/lib/cloudflare/worker-subdomain.d.ts.map +1 -1
- package/lib/cloudflare/worker-subdomain.js +17 -22
- package/lib/cloudflare/worker-subdomain.js.map +1 -1
- package/lib/cloudflare/{worker/tail.d.ts → worker-tail.d.ts} +2 -2
- package/lib/cloudflare/worker-tail.d.ts.map +1 -0
- package/lib/cloudflare/{worker/tail.js → worker-tail.js} +11 -9
- package/lib/cloudflare/worker-tail.js.map +1 -0
- package/lib/cloudflare/worker.d.ts +18 -8
- package/lib/cloudflare/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker.js +32 -8
- package/lib/cloudflare/worker.js.map +1 -1
- package/lib/cloudflare/workflow.d.ts +22 -11
- package/lib/cloudflare/workflow.d.ts.map +1 -1
- package/lib/cloudflare/workflow.js +23 -18
- package/lib/cloudflare/workflow.js.map +1 -1
- package/lib/context.d.ts +2 -2
- package/lib/context.d.ts.map +1 -1
- package/lib/docker/api.d.ts.map +1 -1
- package/lib/docker/api.js +30 -8
- package/lib/docker/api.js.map +1 -1
- package/lib/fs/file-system-state-store.d.ts +5 -20
- package/lib/fs/file-system-state-store.d.ts.map +1 -1
- package/lib/fs/file-system-state-store.js +5 -121
- package/lib/fs/file-system-state-store.js.map +1 -1
- package/lib/fs/index.d.ts +0 -1
- package/lib/fs/index.d.ts.map +1 -1
- package/lib/fs/index.js +0 -1
- package/lib/fs/index.js.map +1 -1
- package/lib/llms.cloudflare.txt +6 -5
- package/lib/planetscale/password.js +1 -1
- package/lib/planetscale/password.js.map +1 -1
- package/lib/scope.d.ts.map +1 -1
- package/lib/scope.js +3 -6
- package/lib/scope.js.map +1 -1
- package/lib/state/cloudflare-state-store.d.ts +34 -0
- package/lib/state/cloudflare-state-store.d.ts.map +1 -0
- package/lib/state/cloudflare-state-store.js +116 -0
- package/lib/state/cloudflare-state-store.js.map +1 -0
- package/lib/state/d1-state-store.d.ts +15 -0
- package/lib/state/d1-state-store.d.ts.map +1 -0
- package/lib/{cloudflare → state}/d1-state-store.js +31 -27
- package/lib/state/d1-state-store.js.map +1 -0
- package/lib/{cloudflare/do-state-store/types.d.ts → state/dofs-state-store/api.d.ts} +1 -1
- package/lib/state/dofs-state-store/api.d.ts.map +1 -0
- package/lib/state/dofs-state-store/api.js +1 -0
- package/lib/state/dofs-state-store/api.js.map +1 -0
- package/lib/{cloudflare/do-state-store/store.d.ts → state/dofs-state-store/index.d.ts} +10 -5
- package/lib/state/dofs-state-store/index.d.ts.map +1 -0
- package/lib/{cloudflare/do-state-store/store.js → state/dofs-state-store/index.js} +15 -11
- package/lib/state/dofs-state-store/index.js.map +1 -0
- package/lib/{cloudflare/do-state-store/internal.d.ts → state/dofs-state-store/store.d.ts} +4 -5
- package/lib/state/dofs-state-store/store.d.ts.map +1 -0
- package/lib/{cloudflare/do-state-store/internal.js → state/dofs-state-store/store.js} +7 -22
- package/lib/state/dofs-state-store/store.js.map +1 -0
- package/lib/state/file-system-state-store.d.ts +21 -0
- package/lib/state/file-system-state-store.d.ts.map +1 -0
- package/lib/state/file-system-state-store.js +122 -0
- package/lib/state/file-system-state-store.js.map +1 -0
- package/lib/state/index.d.ts +7 -0
- package/lib/state/index.d.ts.map +1 -0
- package/lib/state/index.js +7 -0
- package/lib/state/index.js.map +1 -0
- package/lib/state/migrations.d.ts +2 -0
- package/lib/state/migrations.d.ts.map +1 -0
- package/lib/state/migrations.js +3 -0
- package/lib/state/migrations.js.map +1 -0
- package/lib/state/operations.d.ts +36 -0
- package/lib/state/operations.d.ts.map +1 -0
- package/lib/state/operations.js +126 -0
- package/lib/state/operations.js.map +1 -0
- package/lib/state/proxy.d.ts +53 -0
- package/lib/state/proxy.d.ts.map +1 -0
- package/lib/state/proxy.js +65 -0
- package/lib/state/proxy.js.map +1 -0
- package/lib/{cloudflare → state}/r2-rest-state-store.d.ts +3 -1
- package/lib/state/r2-rest-state-store.d.ts.map +1 -0
- package/lib/{cloudflare → state}/r2-rest-state-store.js +6 -4
- package/lib/state/r2-rest-state-store.js.map +1 -0
- package/lib/state/schema.d.ts.map +1 -0
- package/lib/state/schema.js.map +1 -0
- package/lib/{sqlite → state}/sqlite-state-store.d.ts +5 -3
- package/lib/state/sqlite-state-store.d.ts.map +1 -0
- package/lib/{sqlite → state}/sqlite-state-store.js +15 -6
- package/lib/state/sqlite-state-store.js.map +1 -0
- package/lib/test/vitest.d.ts.map +1 -1
- package/lib/test/vitest.js +3 -6
- package/lib/test/vitest.js.map +1 -1
- package/lib/util/detect-node-runtime.d.ts +3 -0
- package/lib/util/detect-node-runtime.d.ts.map +1 -0
- package/lib/util/detect-node-runtime.js +10 -0
- package/lib/util/detect-node-runtime.js.map +1 -0
- package/lib/util/detect-package-manager.d.ts +2 -2
- package/lib/util/detect-package-manager.d.ts.map +1 -1
- package/lib/util/detect-package-manager.js +15 -5
- package/lib/util/detect-package-manager.js.map +1 -1
- package/lib/util/http-server.d.ts.map +1 -0
- package/lib/{cloudflare/miniflare → util}/http-server.js +1 -1
- package/lib/util/http-server.js.map +1 -0
- package/lib/util/memoize.d.ts +2 -0
- package/lib/util/memoize.d.ts.map +1 -1
- package/lib/util/memoize.js +14 -7
- package/lib/util/memoize.js.map +1 -1
- package/lib/util/neverthrow.d.ts +9 -0
- package/lib/util/neverthrow.d.ts.map +1 -0
- package/lib/util/neverthrow.js +29 -0
- package/lib/util/neverthrow.js.map +1 -0
- package/package.json +20 -20
- package/src/apply.ts +31 -10
- package/src/build-date.ts +1 -1
- package/src/cloudflare/ai.ts +10 -5
- package/src/cloudflare/analytics-engine.ts +20 -11
- package/src/cloudflare/{types.ts → api-response.ts} +31 -0
- package/src/cloudflare/auth-wrangler.ts +314 -0
- package/src/cloudflare/auth.ts +8 -156
- package/src/cloudflare/browser-rendering.ts +16 -2
- package/src/cloudflare/bundle/fs.ts +5 -0
- package/src/cloudflare/bundle/internal-worker-bundle.ts +21 -0
- package/src/cloudflare/compatibility-presets.ts +34 -0
- package/src/cloudflare/container.ts +77 -6
- package/src/cloudflare/dispatch-namespace.ts +28 -0
- package/src/cloudflare/durable-object-namespace.ts +38 -27
- package/src/cloudflare/hyperdrive.ts +19 -5
- package/src/cloudflare/images.ts +32 -17
- package/src/cloudflare/index.ts +1 -3
- package/src/cloudflare/miniflare/miniflare.ts +10 -7
- package/src/cloudflare/miniflare/{mixed-mode.ts → remote-binding-proxy.ts} +25 -75
- package/src/cloudflare/state.ts +35 -0
- package/src/cloudflare/user.ts +55 -70
- package/src/cloudflare/vectorize-index.ts +7 -2
- package/src/cloudflare/version-metadata.ts +19 -2
- package/src/cloudflare/vite.ts +2 -1
- package/src/cloudflare/worker-metadata.ts +18 -43
- package/src/cloudflare/worker-subdomain.ts +43 -37
- package/src/cloudflare/{worker/tail.ts → worker-tail.ts} +13 -10
- package/src/cloudflare/worker.ts +66 -20
- package/src/cloudflare/workflow.ts +38 -19
- package/src/context.ts +2 -2
- package/src/docker/api.ts +33 -8
- package/src/fs/file-system-state-store.ts +5 -148
- package/src/fs/index.ts +0 -1
- package/src/llms.cloudflare.txt +6 -5
- package/src/planetscale/password.ts +1 -1
- package/src/scope.ts +3 -6
- package/src/state/cloudflare-state-store.ts +170 -0
- package/src/state/d1-state-store.ts +102 -0
- package/src/{cloudflare/do-state-store/store.ts → state/dofs-state-store/index.ts} +20 -13
- package/src/{cloudflare/do-state-store/internal.ts → state/dofs-state-store/store.ts} +9 -27
- package/src/state/file-system-state-store.ts +149 -0
- package/src/state/index.ts +6 -0
- package/src/state/migrations.ts +9 -0
- package/src/state/operations.ts +152 -0
- package/src/state/proxy.ts +132 -0
- package/src/{cloudflare → state}/r2-rest-state-store.ts +11 -8
- package/src/{sqlite → state}/sqlite-state-store.ts +18 -10
- package/src/test/vitest.ts +8 -6
- package/src/util/detect-node-runtime.ts +12 -0
- package/src/util/detect-package-manager.ts +19 -6
- package/src/{cloudflare/miniflare → util}/http-server.ts +1 -1
- package/src/util/memoize.ts +18 -7
- package/src/util/neverthrow.ts +36 -0
- package/templates/astro/package.json +3 -3
- package/templates/nuxt/package.json +3 -3
- package/templates/react-router/package.json +3 -3
- package/templates/rwsdk/alchemy.run.ts +1 -1
- package/templates/rwsdk/package.json +3 -3
- package/templates/sveltekit/package.json +3 -3
- package/templates/tanstack-start/package.json +3 -3
- package/templates/typescript/package.json +3 -2
- package/templates/typescript/tsconfig.json +1 -0
- package/templates/vite/package.json +3 -3
- package/workers/cloudflare-state-store.js +5638 -0
- package/workers/cloudflare-state-store.ts +108 -0
- package/workers/{do-state-store.js → dofs-state-store.js} +4 -4
- package/workers/{do-state-store.ts → dofs-state-store.ts} +12 -8
- package/workers/{mixed-mode-proxy-worker.js → remote-binding-proxy.js} +3 -3
- package/workers/remote-binding-proxy.ts +45 -0
- package/lib/cloudflare/d1-state-store.d.ts +0 -10
- package/lib/cloudflare/d1-state-store.d.ts.map +0 -1
- package/lib/cloudflare/d1-state-store.js.map +0 -1
- package/lib/cloudflare/do-state-store/index.d.ts +0 -2
- package/lib/cloudflare/do-state-store/index.d.ts.map +0 -1
- package/lib/cloudflare/do-state-store/index.js +0 -2
- package/lib/cloudflare/do-state-store/index.js.map +0 -1
- package/lib/cloudflare/do-state-store/internal.d.ts.map +0 -1
- package/lib/cloudflare/do-state-store/internal.js.map +0 -1
- package/lib/cloudflare/do-state-store/store.d.ts.map +0 -1
- package/lib/cloudflare/do-state-store/store.js.map +0 -1
- package/lib/cloudflare/do-state-store/types.d.ts.map +0 -1
- package/lib/cloudflare/do-state-store/types.js +0 -1
- package/lib/cloudflare/do-state-store/types.js.map +0 -1
- package/lib/cloudflare/miniflare/http-server.d.ts.map +0 -1
- package/lib/cloudflare/miniflare/http-server.js.map +0 -1
- package/lib/cloudflare/miniflare/mixed-mode.d.ts.map +0 -1
- package/lib/cloudflare/miniflare/mixed-mode.js.map +0 -1
- package/lib/cloudflare/r2-rest-state-store.d.ts.map +0 -1
- package/lib/cloudflare/r2-rest-state-store.js.map +0 -1
- package/lib/cloudflare/types.d.ts.map +0 -1
- package/lib/cloudflare/types.js +0 -19
- package/lib/cloudflare/types.js.map +0 -1
- package/lib/cloudflare/worker/shared.d.ts +0 -4
- package/lib/cloudflare/worker/shared.d.ts.map +0 -1
- package/lib/cloudflare/worker/shared.js +0 -21
- package/lib/cloudflare/worker/shared.js.map +0 -1
- package/lib/cloudflare/worker/tail.d.ts.map +0 -1
- package/lib/cloudflare/worker/tail.js.map +0 -1
- package/lib/sqlite/base-sqlite-state-store.d.ts +0 -31
- package/lib/sqlite/base-sqlite-state-store.d.ts.map +0 -1
- package/lib/sqlite/base-sqlite-state-store.js +0 -124
- package/lib/sqlite/base-sqlite-state-store.js.map +0 -1
- package/lib/sqlite/index.d.ts +0 -2
- package/lib/sqlite/index.d.ts.map +0 -1
- package/lib/sqlite/index.js +0 -2
- package/lib/sqlite/index.js.map +0 -1
- package/lib/sqlite/schema.d.ts.map +0 -1
- package/lib/sqlite/schema.js.map +0 -1
- package/lib/sqlite/sqlite-state-store.d.ts.map +0 -1
- package/lib/sqlite/sqlite-state-store.js.map +0 -1
- package/src/cloudflare/d1-state-store.ts +0 -105
- package/src/cloudflare/do-state-store/index.ts +0 -1
- package/src/cloudflare/worker/shared.ts +0 -30
- package/src/sqlite/base-sqlite-state-store.ts +0 -199
- package/src/sqlite/index.ts +0 -1
- package/templates/typescript/src/worker.js +0 -5
- package/workers/mixed-mode-proxy-worker.ts +0 -46
- /package/drizzle/{0000_busy_mauler.sql → default/0000_busy_mauler.sql} +0 -0
- /package/drizzle/{0001_concerned_iceman.sql → default/0001_concerned_iceman.sql} +0 -0
- /package/drizzle/{meta → default/meta}/0000_snapshot.json +0 -0
- /package/drizzle/{meta → default/meta}/0001_snapshot.json +0 -0
- /package/drizzle/{meta → default/meta}/_journal.json +0 -0
- /package/lib/{sqlite → state}/schema.d.ts +0 -0
- /package/lib/{sqlite → state}/schema.js +0 -0
- /package/lib/{cloudflare/miniflare → util}/http-server.d.ts +0 -0
- /package/src/{cloudflare/do-state-store/types.ts → state/dofs-state-store/api.ts} +0 -0
- /package/src/{sqlite → state}/schema.ts +0 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import kleur from "kleur";
|
|
2
|
+
import { err, ok, ResultAsync } from "neverthrow";
|
|
3
|
+
import crypto from "node:crypto";
|
|
4
|
+
import fs from "node:fs/promises";
|
|
5
|
+
import os from "node:os";
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
import open from "open";
|
|
8
|
+
import { HTTPServer } from "../util/http-server.js";
|
|
9
|
+
import { memoize, memoizeSync } from "../util/memoize.js";
|
|
10
|
+
import { detached, ensure, singleFlight } from "../util/neverthrow.js";
|
|
11
|
+
import { createXdgAppPaths } from "../util/xdg-paths.js";
|
|
12
|
+
const CLIENT_ID = "54d11594-84e4-41aa-b438-e81b8fa78ee7";
|
|
13
|
+
const REDIRECT_URI = "http://localhost:8976/oauth/callback";
|
|
14
|
+
const ALCHEMY_BASE_URL = "https://alchemy.run";
|
|
15
|
+
export const DEFAULT_SCOPES = [
|
|
16
|
+
"account:read",
|
|
17
|
+
"user:read",
|
|
18
|
+
"workers:write",
|
|
19
|
+
"workers_kv:write",
|
|
20
|
+
"workers_routes:write",
|
|
21
|
+
"workers_scripts:write",
|
|
22
|
+
"workers_tail:read",
|
|
23
|
+
"d1:write",
|
|
24
|
+
"pages:write",
|
|
25
|
+
"zone:read",
|
|
26
|
+
"ssl_certs:write",
|
|
27
|
+
"ai:write",
|
|
28
|
+
"queues:write",
|
|
29
|
+
"pipelines:write",
|
|
30
|
+
"secrets_store:write",
|
|
31
|
+
"containers:write",
|
|
32
|
+
"cloudchamber:write",
|
|
33
|
+
];
|
|
34
|
+
const getWranglerConfigPath = memoize(async () => {
|
|
35
|
+
const xdgConfigDir = createXdgAppPaths(".wrangler").config();
|
|
36
|
+
const legacyConfigDir = path.join(os.homedir(), ".wrangler");
|
|
37
|
+
const configDir = (await fs
|
|
38
|
+
.stat(legacyConfigDir)
|
|
39
|
+
.then((stat) => stat.isDirectory())
|
|
40
|
+
.catch(() => false))
|
|
41
|
+
? legacyConfigDir
|
|
42
|
+
: xdgConfigDir;
|
|
43
|
+
return path.join(configDir, "config", "default.toml");
|
|
44
|
+
});
|
|
45
|
+
const readWranglerConfig = () => {
|
|
46
|
+
return ResultAsync.fromSafePromise(getWranglerConfigPath())
|
|
47
|
+
.andThen((path) => ResultAsync.fromPromise(fs.readFile(path, "utf-8").then(async (text) => {
|
|
48
|
+
const toml = await import("@iarna/toml");
|
|
49
|
+
return toml.parse(text.replace(/\r\n/g, "\n"));
|
|
50
|
+
}), () => new Error("Failed to read Wrangler config.")))
|
|
51
|
+
.andThen((config) => {
|
|
52
|
+
if (typeof config.oauth_token !== "string" ||
|
|
53
|
+
typeof config.refresh_token !== "string" ||
|
|
54
|
+
!config.expiration_time ||
|
|
55
|
+
!Array.isArray(config.scopes)) {
|
|
56
|
+
return err(new Error("Invalid Wrangler config."));
|
|
57
|
+
}
|
|
58
|
+
return ok({
|
|
59
|
+
oauth_token: config.oauth_token,
|
|
60
|
+
refresh_token: config.refresh_token,
|
|
61
|
+
expiration_time: new Date(config.expiration_time),
|
|
62
|
+
scopes: Array.from(config.scopes),
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
const writeWranglerConfig = (config) => {
|
|
67
|
+
return ResultAsync.fromSafePromise(getWranglerConfigPath()).map(async (configPath) => {
|
|
68
|
+
const toml = await import("@iarna/toml");
|
|
69
|
+
await fs.writeFile(configPath, toml.stringify({
|
|
70
|
+
oauth_token: config.oauth_token,
|
|
71
|
+
refresh_token: config.refresh_token,
|
|
72
|
+
expiration_time: config.expiration_time,
|
|
73
|
+
scopes: config.scopes,
|
|
74
|
+
}));
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
const fetchToken = (body) => {
|
|
78
|
+
return ResultAsync.fromPromise(fetch("https://dash.cloudflare.com/oauth2/token", {
|
|
79
|
+
method: "POST",
|
|
80
|
+
headers: {
|
|
81
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
82
|
+
},
|
|
83
|
+
body: new URLSearchParams(body),
|
|
84
|
+
}), () => new OAuthError({
|
|
85
|
+
error: "fetch_error",
|
|
86
|
+
error_description: "Failed to fetch OAuth token.",
|
|
87
|
+
status_code: 0,
|
|
88
|
+
}))
|
|
89
|
+
.andThen((res) => ResultAsync.fromPromise(res.json(), () => new OAuthError({
|
|
90
|
+
error: "invalid_response",
|
|
91
|
+
error_description: "The server returned an invalid response.",
|
|
92
|
+
status_code: res.status,
|
|
93
|
+
})).andThen((json) => res.ok ? ok(json) : err(new OAuthError(json))))
|
|
94
|
+
.map((tokens) => ({
|
|
95
|
+
oauth_token: tokens.access_token,
|
|
96
|
+
refresh_token: tokens.refresh_token,
|
|
97
|
+
expiration_time: new Date(Date.now() + tokens.expires_in * 1000),
|
|
98
|
+
scopes: tokens.scope.split(" "),
|
|
99
|
+
}))
|
|
100
|
+
.andTee((config) => writeWranglerConfig(config));
|
|
101
|
+
};
|
|
102
|
+
export const getRefreshedWranglerConfig = singleFlight(memoizeSync(() => {
|
|
103
|
+
return readWranglerConfig()
|
|
104
|
+
.andThen((config) => {
|
|
105
|
+
if (config.expiration_time.getTime() > Date.now() + 10 * 1000) {
|
|
106
|
+
return ok(config);
|
|
107
|
+
}
|
|
108
|
+
return fetchToken({
|
|
109
|
+
grant_type: "refresh_token",
|
|
110
|
+
refresh_token: config.refresh_token,
|
|
111
|
+
client_id: CLIENT_ID,
|
|
112
|
+
});
|
|
113
|
+
})
|
|
114
|
+
.orElse((error) => {
|
|
115
|
+
if (isInteractive()) {
|
|
116
|
+
return wranglerLogin();
|
|
117
|
+
}
|
|
118
|
+
if (error instanceof OAuthError) {
|
|
119
|
+
return err(error);
|
|
120
|
+
}
|
|
121
|
+
return ok(null);
|
|
122
|
+
});
|
|
123
|
+
}, () => Math.floor(Date.now() / 5000).toString()));
|
|
124
|
+
const isInteractive = () => {
|
|
125
|
+
return process.stdin.isTTY && process.stdout.isTTY && !process.env.CI;
|
|
126
|
+
};
|
|
127
|
+
const generateAuthorizationURL = (scopes) => {
|
|
128
|
+
const state = crypto.randomBytes(32).toString("base64url");
|
|
129
|
+
const verifier = crypto.randomBytes(96).toString("base64url");
|
|
130
|
+
const challenge = crypto
|
|
131
|
+
.createHash("sha256")
|
|
132
|
+
.update(verifier)
|
|
133
|
+
.digest("base64url");
|
|
134
|
+
const url = new URL("https://dash.cloudflare.com/oauth2/auth");
|
|
135
|
+
url.search = new URLSearchParams({
|
|
136
|
+
response_type: "code",
|
|
137
|
+
client_id: CLIENT_ID,
|
|
138
|
+
redirect_uri: REDIRECT_URI,
|
|
139
|
+
scope: [...scopes, "offline_access"].join(" "),
|
|
140
|
+
state,
|
|
141
|
+
code_challenge: challenge,
|
|
142
|
+
code_challenge_method: "S256",
|
|
143
|
+
}).toString();
|
|
144
|
+
return { url: url.toString(), state, verifier };
|
|
145
|
+
};
|
|
146
|
+
class OAuthError extends Error {
|
|
147
|
+
error;
|
|
148
|
+
error_verbose;
|
|
149
|
+
error_hint;
|
|
150
|
+
status_code;
|
|
151
|
+
constructor(params) {
|
|
152
|
+
console.dir(params, { depth: null });
|
|
153
|
+
super(params.error_description);
|
|
154
|
+
this.error = params.error;
|
|
155
|
+
this.error_verbose = params.error_verbose;
|
|
156
|
+
this.error_hint = params.error_hint;
|
|
157
|
+
this.status_code = params.status_code;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
export const wranglerLogin = (scopes = DEFAULT_SCOPES, log = console.log) => {
|
|
161
|
+
const challenge = generateAuthorizationURL(scopes);
|
|
162
|
+
log([
|
|
163
|
+
"Opening browser to authorize with Cloudflare...",
|
|
164
|
+
"",
|
|
165
|
+
kleur.gray("If you are not automatically redirected, please open the following URL in your browser:"),
|
|
166
|
+
challenge.url,
|
|
167
|
+
].join("\n"));
|
|
168
|
+
open(challenge.url);
|
|
169
|
+
const { result, ok, err } = detached();
|
|
170
|
+
const server = new HTTPServer({
|
|
171
|
+
port: 8976,
|
|
172
|
+
fetch: async (request) => {
|
|
173
|
+
const url = new URL(request.url);
|
|
174
|
+
if (url.pathname !== "/oauth/callback") {
|
|
175
|
+
return new Response("Not found", { status: 404 });
|
|
176
|
+
}
|
|
177
|
+
const error = url.searchParams.get("error");
|
|
178
|
+
const error_description = url.searchParams.get("error_description");
|
|
179
|
+
const code = url.searchParams.get("code");
|
|
180
|
+
const state = url.searchParams.get("state");
|
|
181
|
+
if (error) {
|
|
182
|
+
err(new OAuthError({
|
|
183
|
+
error,
|
|
184
|
+
error_description: error_description ?? "Unknown error",
|
|
185
|
+
status_code: 400,
|
|
186
|
+
}));
|
|
187
|
+
return Response.redirect(`${ALCHEMY_BASE_URL}/auth/error`);
|
|
188
|
+
}
|
|
189
|
+
if (!code || !state || state !== challenge.state) {
|
|
190
|
+
err(new OAuthError({
|
|
191
|
+
error: "invalid_request",
|
|
192
|
+
error_description: "Invalid request",
|
|
193
|
+
status_code: 400,
|
|
194
|
+
}));
|
|
195
|
+
return Response.redirect(`${ALCHEMY_BASE_URL}/auth/error`);
|
|
196
|
+
}
|
|
197
|
+
const tokens = await fetchToken({
|
|
198
|
+
grant_type: "authorization_code",
|
|
199
|
+
code,
|
|
200
|
+
code_verifier: challenge.verifier,
|
|
201
|
+
client_id: CLIENT_ID,
|
|
202
|
+
redirect_uri: REDIRECT_URI,
|
|
203
|
+
});
|
|
204
|
+
if (tokens.isErr()) {
|
|
205
|
+
err(tokens.error);
|
|
206
|
+
return Response.redirect(`${ALCHEMY_BASE_URL}/auth/error`);
|
|
207
|
+
}
|
|
208
|
+
ok(tokens.value);
|
|
209
|
+
return Response.redirect(`${ALCHEMY_BASE_URL}/auth/success`);
|
|
210
|
+
},
|
|
211
|
+
});
|
|
212
|
+
const timeout = setTimeout(() => {
|
|
213
|
+
err(new OAuthError({
|
|
214
|
+
error: "timeout",
|
|
215
|
+
error_description: "Authorization timed out after 5 minutes",
|
|
216
|
+
status_code: 408,
|
|
217
|
+
}));
|
|
218
|
+
}, 1000 * 60 * 5);
|
|
219
|
+
return ensure(result, async () => {
|
|
220
|
+
clearTimeout(timeout);
|
|
221
|
+
await server.stop();
|
|
222
|
+
});
|
|
223
|
+
};
|
|
224
|
+
//# sourceMappingURL=auth-wrangler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-wrangler.js","sourceRoot":"","sources":["../../src/cloudflare/auth-wrangler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cloudflare/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cloudflare/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAC7B,2BAA2B,GAC3B,6BAA6B,CAAC;AAElC,MAAM,MAAM,2BAA2B,GAAG;IACxC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,qBAAqB,GAAG,SAAS,GACzC,OAAO,IAAI,2BAA2B,CAExC;AAED,MAAM,MAAM,6BAA6B,GAAG;IAC1C;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,qBAAqB,GAAG,SAAS,GACzC,OAAO,IAAI,6BAA6B,CAE1C;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,qBAAqB,GAAG,SAAS,GACzC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA2BjC"}
|
package/lib/cloudflare/auth.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import os from "node:os";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import { createXdgAppPaths } from "../util/xdg-paths.js";
|
|
1
|
+
import { getRefreshedWranglerConfig } from "./auth-wrangler.js";
|
|
5
2
|
export function isCloudflareApiKeyAuthOptions(options) {
|
|
6
3
|
return options !== undefined && options.apiKey !== undefined;
|
|
7
4
|
}
|
|
@@ -23,121 +20,15 @@ export async function getCloudflareAuthHeaders(options) {
|
|
|
23
20
|
};
|
|
24
21
|
}
|
|
25
22
|
// Wrangler OAuth Token
|
|
26
|
-
const
|
|
27
|
-
if (
|
|
23
|
+
const wranglerConfig = await getRefreshedWranglerConfig();
|
|
24
|
+
if (wranglerConfig.isOk() && wranglerConfig.value) {
|
|
28
25
|
return {
|
|
29
|
-
Authorization: `Bearer ${
|
|
26
|
+
Authorization: `Bearer ${wranglerConfig.value.oauth_token}`,
|
|
30
27
|
};
|
|
31
28
|
}
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
async function refreshAuthToken(options) {
|
|
35
|
-
const response = await fetch("https://dash.cloudflare.com/oauth2/token", {
|
|
36
|
-
method: "POST",
|
|
37
|
-
headers: {
|
|
38
|
-
"Content-Type": "application/x-www-form-urlencoded",
|
|
39
|
-
},
|
|
40
|
-
body: new URLSearchParams({
|
|
41
|
-
grant_type: "refresh_token",
|
|
42
|
-
refresh_token: options.refresh_token,
|
|
43
|
-
client_id: "54d11594-84e4-41aa-b438-e81b8fa78ee7",
|
|
44
|
-
}).toString(),
|
|
45
|
-
});
|
|
46
|
-
if (!response.ok) {
|
|
47
|
-
throw new Error(`Failed to refresh auth token: ${response.status} ${response.statusText} ${await response.text()}`);
|
|
48
|
-
}
|
|
49
|
-
const data = await response.json();
|
|
50
|
-
if (!data.access_token) {
|
|
51
|
-
throw new Error("Failed to refresh auth token - no access token returned");
|
|
52
|
-
}
|
|
53
|
-
options.oauth_token = data.access_token;
|
|
54
|
-
options.refresh_token = data.refresh_token;
|
|
55
|
-
options.expiration_time = new Date(Date.now() + data.expires_in * 1000).toISOString();
|
|
56
|
-
options.scopes = data.scope?.split(" ") || [];
|
|
57
|
-
return options;
|
|
58
|
-
}
|
|
59
|
-
async function getRefreshedAuthConfig() {
|
|
60
|
-
let authConfig = await readWranglerConfig();
|
|
61
|
-
if (authConfig.expiration_time) {
|
|
62
|
-
const expiry = new Date(authConfig.expiration_time);
|
|
63
|
-
// if expiring in 10s
|
|
64
|
-
if (expiry.getTime() < Date.now() + 10 * 1000) {
|
|
65
|
-
authConfig = await refreshAuthToken(authConfig);
|
|
66
|
-
authConfigCache[authConfig.path] = authConfig;
|
|
67
|
-
await writeWranglerConfig(authConfig);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
return authConfig;
|
|
71
|
-
}
|
|
72
|
-
async function writeWranglerConfig(config) {
|
|
73
|
-
if (config.exists === false)
|
|
74
|
-
return;
|
|
75
|
-
const TOML = await import("@iarna/toml");
|
|
76
|
-
const configPath = await findWranglerConfig();
|
|
77
|
-
config = {
|
|
78
|
-
...config,
|
|
79
|
-
};
|
|
80
|
-
// @ts-ignore - i put this here
|
|
81
|
-
delete config.path;
|
|
82
|
-
const toml = TOML.stringify(config);
|
|
83
|
-
await fs.writeFile(configPath, toml);
|
|
84
|
-
}
|
|
85
|
-
// cache the file once per process
|
|
86
|
-
const authConfigCache = {};
|
|
87
|
-
async function readWranglerConfig() {
|
|
88
|
-
const configPath = await findWranglerConfig();
|
|
89
|
-
try {
|
|
90
|
-
const config = (authConfigCache[configPath] ??= await parseTOML(await fs.readFile(configPath, "utf-8")));
|
|
91
|
-
config.path = configPath;
|
|
92
|
-
return config;
|
|
93
|
-
}
|
|
94
|
-
catch (e) {
|
|
95
|
-
if (e.code === "ENOENT") {
|
|
96
|
-
// The config doesn't exist
|
|
97
|
-
return {
|
|
98
|
-
path: configPath,
|
|
99
|
-
exists: false,
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
throw e;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
let wranglerConfigPath;
|
|
106
|
-
async function findWranglerConfig() {
|
|
107
|
-
if (wranglerConfigPath) {
|
|
108
|
-
return wranglerConfigPath;
|
|
109
|
-
}
|
|
110
|
-
const environment = process.env.WRANGLER_API_ENVIRONMENT ?? "production";
|
|
111
|
-
const filePath = path.join("config", `${environment === "production" ? "default.toml" : `${environment}.toml`}`);
|
|
112
|
-
const xdgAppPaths = createXdgAppPaths(".wrangler");
|
|
113
|
-
//TODO: We should implement a custom path --global-config and/or the WRANGLER_HOME type environment variable
|
|
114
|
-
const configDir = xdgAppPaths.config(); // New XDG compliant config path
|
|
115
|
-
const legacyConfigDir = path.join(os.homedir(), ".wrangler"); // Legacy config in user's home directory
|
|
116
|
-
// Check for the .wrangler directory in root if it is not there then use the XDG compliant path.
|
|
117
|
-
wranglerConfigPath = path.join((await isDirectory(legacyConfigDir)) ? legacyConfigDir : configDir, filePath);
|
|
118
|
-
return wranglerConfigPath;
|
|
119
|
-
}
|
|
120
|
-
async function parseTOML(input) {
|
|
121
|
-
const TOML = await import("@iarna/toml");
|
|
122
|
-
try {
|
|
123
|
-
// Normalize CRLF to LF to avoid hitting https://github.com/iarna/iarna-toml/issues/33.
|
|
124
|
-
const normalizedInput = input.replace(/\r\n/g, "\n");
|
|
125
|
-
return TOML.parse(normalizedInput);
|
|
126
|
-
}
|
|
127
|
-
catch (err) {
|
|
128
|
-
const { name } = err;
|
|
129
|
-
if (name !== "TomlError") {
|
|
130
|
-
throw err;
|
|
131
|
-
}
|
|
132
|
-
throw new Error("TOML parse error");
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
async function isDirectory(dir) {
|
|
136
|
-
try {
|
|
137
|
-
return (await fs.stat(dir)).isDirectory();
|
|
138
|
-
}
|
|
139
|
-
catch (_err) {
|
|
140
|
-
return false;
|
|
29
|
+
else if (wranglerConfig.isErr()) {
|
|
30
|
+
throw new Error(`Cloudflare authentication failed: ${wranglerConfig.error.message}`);
|
|
141
31
|
}
|
|
32
|
+
throw new Error("Cloudflare authentication required. Did you forget to login with `wrangler login` or set CLOUDFLARE_API_TOKEN, CLOUDFLARE_API_KEY?");
|
|
142
33
|
}
|
|
143
34
|
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cloudflare/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cloudflare/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAyBhE,MAAM,UAAU,6BAA6B,CAC3C,OAA0C;IAE1C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC;AAC/D,CAAC;AAmBD,MAAM,UAAU,+BAA+B,CAC7C,OAA0C;IAE1C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAA0C;IAE1C,IAAI,6BAA6B,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,iBAAiB;QACjB,OAAO;YACL,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW;YACxC,cAAc,EAAE,OAAO,CAAC,KAAK;SAC9B,CAAC;IACJ,CAAC;SAAM,IAAI,+BAA+B,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,YAAY;QACZ,OAAO;YACL,aAAa,EAAE,UAAU,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE;SACzD,CAAC;IACJ,CAAC;IACD,uBAAuB;IACvB,MAAM,cAAc,GAAG,MAAM,0BAA0B,EAAE,CAAC;IAC1D,IAAI,cAAc,CAAC,IAAI,EAAE,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;QAClD,OAAO;YACL,aAAa,EAAE,UAAU,cAAc,CAAC,KAAK,CAAC,WAAW,EAAE;SAC5D,CAAC;IACJ,CAAC;SAAM,IAAI,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CACb,qCAAqC,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,CACpE,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,KAAK,CACb,oIAAoI,CACrI,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
3
|
-
}
|
|
1
|
+
export type BrowserRendering = {
|
|
2
|
+
type: "browser";
|
|
3
|
+
};
|
|
4
|
+
/**
|
|
5
|
+
* Creates a browser rendering binding for running browser tasks in Workers.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* const browser = BrowserRendering();
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export declare function BrowserRendering(): BrowserRendering;
|
|
4
13
|
//# sourceMappingURL=browser-rendering.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-rendering.d.ts","sourceRoot":"","sources":["../../src/cloudflare/browser-rendering.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"browser-rendering.d.ts","sourceRoot":"","sources":["../../src/cloudflare/browser-rendering.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,IAAI,gBAAgB,CAInD"}
|
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Creates a browser rendering binding for running browser tasks in Workers.
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* const browser = BrowserRendering();
|
|
7
|
+
* ```
|
|
8
|
+
*/
|
|
9
|
+
export function BrowserRendering() {
|
|
10
|
+
return {
|
|
11
|
+
type: "browser",
|
|
12
|
+
};
|
|
3
13
|
}
|
|
4
14
|
//# sourceMappingURL=browser-rendering.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-rendering.js","sourceRoot":"","sources":["../../src/cloudflare/browser-rendering.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"browser-rendering.js","sourceRoot":"","sources":["../../src/cloudflare/browser-rendering.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,IAAI,EAAE,SAAS;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/bundle/fs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAGrB,UAAU,aAAc,SAAQ,qBAAqB;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,gBAAiB,YAAW,oBAAoB;IAC3D,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,MAAM,CAAgB;gBAElB,KAAK,EAAE,aAAa;IAa1B,MAAM,CAAC,GAAG,UAAO,GAAG,OAAO,CAAC,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/bundle/fs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAGrB,UAAU,aAAc,SAAQ,qBAAqB;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,qBAAa,gBAAiB,YAAW,oBAAoB;IAC3D,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,MAAM,CAAgB;gBAElB,KAAK,EAAE,aAAa;IAa1B,MAAM,CAAC,GAAG,UAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAiCzC,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;CA+B7E"}
|
|
@@ -27,6 +27,9 @@ export class FSBundleProvider {
|
|
|
27
27
|
fileNames.add(file);
|
|
28
28
|
}
|
|
29
29
|
}));
|
|
30
|
+
if (fileNames.size === 0) {
|
|
31
|
+
throw new Error(`No files found matching ${this.globs.join(", ")} in ${this.root}`);
|
|
32
|
+
}
|
|
30
33
|
const { files, hash } = await parseFiles(this.root, Array.from(fileNames), this.format);
|
|
31
34
|
if (log) {
|
|
32
35
|
logger.log(`${kleur.gray("worker:")} ${kleur.blue(this.entrypoint)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/cloudflare/bundle/fs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,OAAO,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAO9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AASzC,MAAM,OAAO,gBAAgB;IACnB,IAAI,CAAS;IACb,UAAU,CAAS;IACnB,KAAK,CAAW;IAChB,MAAM,CAAgB;IAE9B,YAAY,KAAoB;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI;YAC1B,SAAS;YACT,UAAU;YACV,WAAW;YACX,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI;QACrB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC5B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBAC3D,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QACF,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,UAAU,CACtC,IAAI,CAAC,IAAI,EACT,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EACrB,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACtE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YACpE,MAAM,CAAC,GAAG,CACR,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CACjF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK;YACL,IAAI;SACL,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAmB;QAC7B,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;YAClC,SAAS,EAAE,IAAI;YACf,MAAM;SACP,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;QACjD,OAAO,IAAI,cAAc,CAAC;YACxB,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBAC1B,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE;gBACzB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC/C,IAAI,GAAG,YAAY,YAAY,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;wBAC7D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;oBACxB,CAAC;oBACD,MAAM,GAAG,CAAC;gBACZ,CAAC,CAAC,CAAC;gBACH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACd,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;oBACtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACxC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;wBAChC,MAAM,GAAG,MAAM,CAAC;wBAChB,UAAU,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC9C,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/cloudflare/bundle/fs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type InternalWorker = "cloudflare-state-store" | "dofs-state-store" | "remote-binding-proxy";
|
|
2
|
+
export declare const getInternalWorkerBundle: (name: InternalWorker) => Promise<{
|
|
3
|
+
file: File;
|
|
4
|
+
tag: string;
|
|
5
|
+
}>;
|
|
6
|
+
//# sourceMappingURL=internal-worker-bundle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal-worker-bundle.d.ts","sourceRoot":"","sources":["../../../src/cloudflare/bundle/internal-worker-bundle.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,cAAc,GACtB,wBAAwB,GACxB,kBAAkB,GAClB,sBAAsB,CAAC;AAE3B,eAAO,MAAM,uBAAuB;;;EAUlC,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { memoize } from "../../util/memoize.js";
|
|
5
|
+
export const getInternalWorkerBundle = memoize(async (name) => {
|
|
6
|
+
const content = await fs.readFile(path.join(import.meta.dirname, "..", "..", "..", "workers", `${name}.js`));
|
|
7
|
+
return {
|
|
8
|
+
file: new File([content], `${name}.js`, {
|
|
9
|
+
type: "application/javascript+module",
|
|
10
|
+
}),
|
|
11
|
+
tag: `${name}:${crypto.createHash("sha256").update(content).digest("hex")}`,
|
|
12
|
+
};
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=internal-worker-bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal-worker-bundle.js","sourceRoot":"","sources":["../../../src/cloudflare/bundle/internal-worker-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAOhD,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC,KAAK,EAAE,IAAoB,EAAE,EAAE;IAC5E,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAC/B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,CAC1E,CAAC;IACF,OAAO;QACL,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,KAAK,EAAE;YACtC,IAAI,EAAE,+BAA+B;SACtC,CAAC;QACF,GAAG,EAAE,GAAG,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;KAC5E,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compatibility presets for Cloudflare Workers
|
|
3
|
+
*
|
|
4
|
+
* These presets provide common sets of compatibility flags to avoid
|
|
5
|
+
* users having to remember which flags they need for common use cases.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Mapping of compatibility presets to their respective compatibility flags
|
|
9
|
+
*/
|
|
10
|
+
export declare const COMPATIBILITY_PRESETS: {
|
|
11
|
+
/**
|
|
12
|
+
* Node.js compatibility preset
|
|
13
|
+
* Enables Node.js APIs and runtime compatibility
|
|
14
|
+
*/
|
|
15
|
+
readonly node: readonly ["nodejs_compat"];
|
|
16
|
+
};
|
|
17
|
+
export type CompatibilityPreset = keyof typeof COMPATIBILITY_PRESETS;
|
|
18
|
+
/**
|
|
19
|
+
* Union preset compatibility flags with user-provided flags
|
|
20
|
+
*/
|
|
21
|
+
export declare function unionCompatibilityFlags(preset: CompatibilityPreset | undefined, userFlags?: string[]): string[];
|
|
22
|
+
//# sourceMappingURL=compatibility-presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compatibility-presets.d.ts","sourceRoot":"","sources":["../../src/cloudflare/compatibility-presets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC;;;OAGG;;CAEK,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,qBAAqB,CAAC;AAErE;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,mBAAmB,GAAG,SAAS,EACvC,SAAS,GAAE,MAAM,EAAO,GACvB,MAAM,EAAE,CAOV"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compatibility presets for Cloudflare Workers
|
|
3
|
+
*
|
|
4
|
+
* These presets provide common sets of compatibility flags to avoid
|
|
5
|
+
* users having to remember which flags they need for common use cases.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Mapping of compatibility presets to their respective compatibility flags
|
|
9
|
+
*/
|
|
10
|
+
export const COMPATIBILITY_PRESETS = {
|
|
11
|
+
/**
|
|
12
|
+
* Node.js compatibility preset
|
|
13
|
+
* Enables Node.js APIs and runtime compatibility
|
|
14
|
+
*/
|
|
15
|
+
node: ["nodejs_compat"],
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Union preset compatibility flags with user-provided flags
|
|
19
|
+
*/
|
|
20
|
+
export function unionCompatibilityFlags(preset, userFlags = []) {
|
|
21
|
+
if (!preset) {
|
|
22
|
+
return userFlags;
|
|
23
|
+
}
|
|
24
|
+
const presetFlags = COMPATIBILITY_PRESETS[preset];
|
|
25
|
+
return Array.from(new Set([...presetFlags, ...userFlags]));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=compatibility-presets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compatibility-presets.js","sourceRoot":"","sources":["../../src/cloudflare/compatibility-presets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC;;;OAGG;IACH,IAAI,EAAE,CAAC,eAAe,CAAC;CACf,CAAC;AAIX;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAuC,EACvC,YAAsB,EAAE;IAExB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,WAAW,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -101,7 +101,7 @@ export type Container<T = any> = {
|
|
|
101
101
|
/** Unique identifier for the container */
|
|
102
102
|
id: string;
|
|
103
103
|
/** Optional human-readable name for the container */
|
|
104
|
-
name
|
|
104
|
+
name: string;
|
|
105
105
|
/** Class name used to identify the container in Worker bindings */
|
|
106
106
|
className: string;
|
|
107
107
|
/** Docker image configuration for the container */
|
|
@@ -448,6 +448,7 @@ export interface ContainerApplicationData {
|
|
|
448
448
|
/** Additional properties that may be returned by the API */
|
|
449
449
|
[key: string]: any;
|
|
450
450
|
}
|
|
451
|
+
export declare function getContainerApplication(api: CloudflareApi, applicationId: string): Promise<ContainerApplicationData | undefined>;
|
|
451
452
|
export declare function listContainerApplications(api: CloudflareApi): Promise<ContainerApplicationData[]>;
|
|
452
453
|
export declare function findContainerApplicationByName(api: CloudflareApi, name: string): Promise<ContainerApplicationData | undefined>;
|
|
453
454
|
export interface CreateContainerApplicationBody {
|
|
@@ -462,9 +463,12 @@ export interface CreateContainerApplicationBody {
|
|
|
462
463
|
constraints?: {
|
|
463
464
|
tier: number;
|
|
464
465
|
};
|
|
466
|
+
affinities?: {
|
|
467
|
+
colocation?: "datacenter";
|
|
468
|
+
};
|
|
465
469
|
[key: string]: any;
|
|
466
470
|
}
|
|
467
|
-
export declare function createContainerApplication(api: CloudflareApi, body: CreateContainerApplicationBody): Promise<ContainerApplicationData>;
|
|
471
|
+
export declare function createContainerApplication(api: CloudflareApi, adopt: boolean | undefined, body: CreateContainerApplicationBody): Promise<ContainerApplicationData>;
|
|
468
472
|
type Region = "AFR" | "APAC" | "EEUR" | "ENAM" | "WNAM" | "ME" | "OC" | "SAM" | "WEUR" | (string & {});
|
|
469
473
|
type City = "AFR" | "APAC" | "EEUR" | "ENAM" | "WNAM" | "ME" | "OC" | "SAM" | "WEUR" | (string & {});
|
|
470
474
|
export type UpdateApplicationRequestBody = {
|