@astrale-os/adapter-cloudflare 0.4.10 → 0.5.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/build/codegen/identity.d.ts.map +1 -0
  2. package/dist/build/codegen/identity.js.map +1 -0
  3. package/dist/build/codegen/merge.d.ts.map +1 -0
  4. package/dist/build/codegen/merge.js.map +1 -0
  5. package/dist/build/codegen/worker.d.ts +12 -0
  6. package/dist/build/codegen/worker.d.ts.map +1 -0
  7. package/dist/build/codegen/worker.js +40 -0
  8. package/dist/build/codegen/worker.js.map +1 -0
  9. package/dist/{codegen → build/codegen}/wrangler.d.ts +6 -3
  10. package/dist/build/codegen/wrangler.d.ts.map +1 -0
  11. package/dist/{codegen → build/codegen}/wrangler.js +29 -10
  12. package/dist/build/codegen/wrangler.js.map +1 -0
  13. package/dist/build/frontend.d.ts +26 -0
  14. package/dist/build/frontend.d.ts.map +1 -0
  15. package/dist/build/frontend.js +263 -0
  16. package/dist/build/frontend.js.map +1 -0
  17. package/dist/{build.js → build/index.d.ts} +5 -4
  18. package/dist/build/index.d.ts.map +1 -0
  19. package/dist/{build.d.ts → build/index.js} +5 -5
  20. package/dist/build/index.js.map +1 -0
  21. package/dist/{parse-output.d.ts → build/parse-output.d.ts} +2 -0
  22. package/dist/build/parse-output.d.ts.map +1 -0
  23. package/dist/{parse-output.js → build/parse-output.js} +5 -0
  24. package/dist/build/parse-output.js.map +1 -0
  25. package/dist/build/prepare.d.ts +18 -0
  26. package/dist/build/prepare.d.ts.map +1 -0
  27. package/dist/build/prepare.js +117 -0
  28. package/dist/build/prepare.js.map +1 -0
  29. package/dist/build/worker.d.ts +15 -0
  30. package/dist/build/worker.d.ts.map +1 -0
  31. package/dist/build/worker.js +21 -0
  32. package/dist/build/worker.js.map +1 -0
  33. package/dist/{wrangler-cli.d.ts → build/wrangler-cli.d.ts} +8 -0
  34. package/dist/build/wrangler-cli.d.ts.map +1 -0
  35. package/dist/{wrangler-cli.js → build/wrangler-cli.js} +28 -4
  36. package/dist/build/wrangler-cli.js.map +1 -0
  37. package/dist/cloudflare.d.ts +21 -24
  38. package/dist/cloudflare.d.ts.map +1 -1
  39. package/dist/cloudflare.js +125 -191
  40. package/dist/cloudflare.js.map +1 -1
  41. package/dist/index.d.ts +4 -4
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +3 -3
  44. package/dist/index.js.map +1 -1
  45. package/dist/params.d.ts +13 -16
  46. package/dist/params.d.ts.map +1 -1
  47. package/dist/worker/index.d.ts +48 -0
  48. package/dist/worker/index.d.ts.map +1 -0
  49. package/dist/worker/index.js +186 -0
  50. package/dist/worker/index.js.map +1 -0
  51. package/package.json +13 -5
  52. package/src/build/codegen/worker.ts +53 -0
  53. package/src/{codegen → build/codegen}/wrangler.ts +34 -12
  54. package/src/build/frontend.ts +324 -0
  55. package/src/{build.ts → build/index.ts} +17 -4
  56. package/src/{parse-output.ts → build/parse-output.ts} +6 -0
  57. package/src/build/prepare.ts +161 -0
  58. package/src/build/worker.ts +37 -0
  59. package/src/{wrangler-cli.ts → build/wrangler-cli.ts} +44 -6
  60. package/src/cloudflare.ts +153 -223
  61. package/src/index.ts +4 -4
  62. package/src/params.ts +13 -17
  63. package/src/worker/index.ts +276 -0
  64. package/src/worker/tsconfig.json +10 -0
  65. package/template/astrale.config.ts +7 -7
  66. package/dist/assets-pack.d.ts +0 -8
  67. package/dist/assets-pack.d.ts.map +0 -1
  68. package/dist/assets-pack.js +0 -30
  69. package/dist/assets-pack.js.map +0 -1
  70. package/dist/build.d.ts.map +0 -1
  71. package/dist/build.js.map +0 -1
  72. package/dist/client.d.ts +0 -17
  73. package/dist/client.d.ts.map +0 -1
  74. package/dist/client.js +0 -59
  75. package/dist/client.js.map +0 -1
  76. package/dist/codegen/identity.d.ts.map +0 -1
  77. package/dist/codegen/identity.js.map +0 -1
  78. package/dist/codegen/merge.d.ts.map +0 -1
  79. package/dist/codegen/merge.js.map +0 -1
  80. package/dist/codegen/worker.d.ts +0 -51
  81. package/dist/codegen/worker.d.ts.map +0 -1
  82. package/dist/codegen/worker.js +0 -120
  83. package/dist/codegen/worker.js.map +0 -1
  84. package/dist/codegen/wrangler.d.ts.map +0 -1
  85. package/dist/codegen/wrangler.js.map +0 -1
  86. package/dist/parse-output.d.ts.map +0 -1
  87. package/dist/parse-output.js.map +0 -1
  88. package/dist/wrangler-cli.d.ts.map +0 -1
  89. package/dist/wrangler-cli.js.map +0 -1
  90. package/src/assets-pack.ts +0 -32
  91. package/src/client.ts +0 -89
  92. package/src/codegen/worker.ts +0 -136
  93. package/template/.env.example +0 -9
  94. package/template/.gitignore.template +0 -16
  95. package/template/CLAUDE.md +0 -13
  96. package/template/README.md +0 -47
  97. package/template/client/.gitignore.template +0 -4
  98. package/template/client/__tests__/app.test.tsx +0 -15
  99. package/template/client/components.json +0 -25
  100. package/template/client/index.html +0 -12
  101. package/template/client/package.json +0 -35
  102. package/template/client/src/app.tsx +0 -52
  103. package/template/client/src/components/ui/cn.ts +0 -6
  104. package/template/client/src/main.tsx +0 -9
  105. package/template/client/src/styles.css +0 -78
  106. package/template/client/tsconfig.json +0 -26
  107. package/template/client/vite.config.ts +0 -22
  108. package/template/client/vitest.config.ts +0 -13
  109. package/template/core/README.md +0 -7
  110. package/template/deps.ts +0 -9
  111. package/template/domain.ts +0 -11
  112. package/template/env.ts +0 -8
  113. package/template/icons.ts +0 -4
  114. package/template/integrations/README.md +0 -7
  115. package/template/oxlint.config.ts +0 -1
  116. package/template/package.json +0 -58
  117. package/template/pnpm-workspace.yaml +0 -31
  118. package/template/runtime/index.ts +0 -8
  119. package/template/schema/index.ts +0 -10
  120. package/template/simulation/README.md +0 -12
  121. package/template/tsconfig.json +0 -28
  122. package/template/vitest.config.ts +0 -7
  123. /package/dist/{codegen → build/codegen}/identity.d.ts +0 -0
  124. /package/dist/{codegen → build/codegen}/identity.js +0 -0
  125. /package/dist/{codegen → build/codegen}/merge.d.ts +0 -0
  126. /package/dist/{codegen → build/codegen}/merge.js +0 -0
  127. /package/src/{codegen → build/codegen}/identity.ts +0 -0
  128. /package/src/{codegen → build/codegen}/merge.ts +0 -0
@@ -0,0 +1,117 @@
1
+ import { mkdir, rename, writeFile } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { ensureIdentity } from './codegen/identity.js';
4
+ import { generateWorkerEntry } from './codegen/worker.js';
5
+ import { generateWranglerConfig } from './codegen/wrangler.js';
6
+ const DEFAULT_PORT = 8787;
7
+ const DEPLOYMENT_VERSION_BINDING = 'ASTRALE_DEPLOYMENT_VERSION';
8
+ const WORKER_NAME_RE = /^[a-z0-9][a-z0-9-]*$/;
9
+ /** Prepare immutable generated Worker sources and Wrangler configuration. */
10
+ export async function prepare(params, ctx, mode, frontend) {
11
+ if (Object.hasOwn(params.vars ?? {}, DEPLOYMENT_VERSION_BINDING)) {
12
+ throw new Error(`cloudflare adapter: \`${DEPLOYMENT_VERSION_BINDING}\` is adapter-managed and cannot be set in \`vars\`.`);
13
+ }
14
+ const astraleDir = join(ctx.projectDir, '.astrale');
15
+ await mkdir(astraleDir, { recursive: true });
16
+ await ensureIdentity(astraleDir, ctx.definition.schema.origin);
17
+ const name = workerName(params, ctx.definition.schema.origin);
18
+ const router = resolveRouter(params.router);
19
+ const localFrontend = ctx.definition.frontend !== undefined && ctx.definition.frontend.source.kind !== 'external';
20
+ if (localFrontend !== (frontend !== undefined && frontend.artifact.source.kind !== 'external')) {
21
+ throw new TypeError('cloudflare adapter: materialized frontend must match definition.frontend.');
22
+ }
23
+ await writeFileAtomic(join(astraleDir, 'worker.gen.ts'), generateWorkerEntry({
24
+ origin: ctx.definition.schema.origin,
25
+ ...(router
26
+ ? {
27
+ router: {
28
+ binding: router.binding,
29
+ hostSuffix: router.hostSuffix,
30
+ minLabels: router.minLabels,
31
+ },
32
+ }
33
+ : {}),
34
+ }));
35
+ const workerUrl = mode === 'deploy' && params.route
36
+ ? `https://${params.route}`
37
+ : mode === 'dev' && params.host
38
+ ? params.host
39
+ : undefined;
40
+ const vars = {
41
+ ...(workerUrl ? { WORKER_URL: workerUrl } : {}),
42
+ ...(mode === 'dev'
43
+ ? { ...params.vars, ...('secrets' in ctx ? ctx.secrets : {}) }
44
+ : { ...params.vars }),
45
+ };
46
+ const baseConfig = {
47
+ workerName: name,
48
+ ...(mode === 'deploy' && params.route ? { route: params.route } : {}),
49
+ ...(localFrontend
50
+ ? {
51
+ frontend: {
52
+ directory: './frontend',
53
+ routes: localFrontendRoutes(ctx.definition),
54
+ },
55
+ }
56
+ : {}),
57
+ vars,
58
+ ...(router ? { router: { binding: router.binding, service: router.service } } : {}),
59
+ ...(params.wrangler ? { wrangler: params.wrangler } : {}),
60
+ };
61
+ const configPath = join(astraleDir, 'wrangler.gen.jsonc');
62
+ await writeFileAtomic(configPath, generateWranglerConfig({ ...baseConfig, selfBinding: true }));
63
+ let fallbackConfigPath;
64
+ if (mode === 'deploy') {
65
+ fallbackConfigPath = join(astraleDir, 'wrangler.no-self.gen.jsonc');
66
+ await writeFileAtomic(fallbackConfigPath, generateWranglerConfig({ ...baseConfig, selfBinding: false }));
67
+ }
68
+ return {
69
+ configPath,
70
+ ...(fallbackConfigPath ? { fallbackConfigPath } : {}),
71
+ port: params.port ?? DEFAULT_PORT,
72
+ workerName: name,
73
+ };
74
+ }
75
+ function localFrontendRoutes(definition) {
76
+ const frontend = definition.frontend;
77
+ if (frontend === undefined || frontend.source.kind === 'external')
78
+ return Object.freeze([]);
79
+ return Object.freeze(Object.values(frontend.routes)
80
+ .flatMap((route) => (route.path === undefined ? [] : [route.path]))
81
+ .sort());
82
+ }
83
+ async function writeFileAtomic(path, content) {
84
+ const tmp = `${path}.tmp`;
85
+ await writeFile(tmp, content);
86
+ await rename(tmp, path);
87
+ }
88
+ export function workerName(params, origin) {
89
+ if (params.workerName !== undefined) {
90
+ if (!WORKER_NAME_RE.test(params.workerName) || params.workerName.length > 63) {
91
+ throw new Error(`cloudflare adapter: invalid \`workerName\` "${params.workerName}". A Cloudflare worker ` +
92
+ 'name must be lowercase, start with a letter or digit, contain only letters, digits and ' +
93
+ 'dashes, and be at most 63 chars.');
94
+ }
95
+ return params.workerName;
96
+ }
97
+ return origin
98
+ .toLowerCase()
99
+ .replace(/[^a-z0-9]+/g, '-')
100
+ .slice(0, 54)
101
+ .replace(/^-+|-+$/g, '');
102
+ }
103
+ export function resolveRouter(ir) {
104
+ if (ir === false)
105
+ return undefined;
106
+ const cfg = ir ?? {};
107
+ return {
108
+ binding: cfg.binding ?? 'ROUTER',
109
+ service: cfg.service ?? 'admin-router',
110
+ hostSuffix: cfg.hostSuffix ?? '.astrale.ai',
111
+ minLabels: cfg.minLabels ?? 4,
112
+ };
113
+ }
114
+ export function logTo() {
115
+ return (line) => process.stderr.write(`\x1b[2m ${line}\x1b[0m\n`);
116
+ }
117
+ //# sourceMappingURL=prepare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/build/prepare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { BuildCtx, CompiledFrontendArtifact } from '@astrale-os/sdk';
2
+ import type { CloudflareParams } from '../params.js';
3
+ export interface CloudflareWorkerBuild {
4
+ readonly frontend: CompiledFrontendArtifact | undefined;
5
+ readonly configPath: string;
6
+ readonly bundlePath: string;
7
+ }
8
+ /** One shared frontend/config/Worker qualification lifecycle for Cloudflare-based adapters. */
9
+ export declare function buildCloudflareWorker(input: {
10
+ readonly params: CloudflareParams;
11
+ readonly context: BuildCtx;
12
+ readonly outDir?: string;
13
+ readonly onLog?: (line: string) => void;
14
+ }): Promise<CloudflareWorkerBuild>;
15
+ //# sourceMappingURL=worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/build/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAIzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAMpD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,GAAG,SAAS,CAAA;IACvD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,+FAA+F;AAC/F,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAA;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAcjC"}
@@ -0,0 +1,21 @@
1
+ import { join } from 'node:path';
2
+ import { buildFrontend } from './frontend.js';
3
+ import { prepare } from './prepare.js';
4
+ import { runWranglerBundle } from './wrangler-cli.js';
5
+ /** One shared frontend/config/Worker qualification lifecycle for Cloudflare-based adapters. */
6
+ export async function buildCloudflareWorker(input) {
7
+ const frontend = await buildFrontend({
8
+ definition: input.context.definition,
9
+ projectDir: input.context.projectDir,
10
+ onLog: input.onLog,
11
+ });
12
+ const { configPath } = await prepare(input.params, input.context, 'build', frontend);
13
+ const bundlePath = await runWranglerBundle({
14
+ projectDir: input.context.projectDir,
15
+ configPath,
16
+ outDir: input.outDir ?? join(input.context.projectDir, '.astrale', 'dist-build'),
17
+ onLog: input.onLog,
18
+ });
19
+ return Object.freeze({ frontend, configPath, bundlePath });
20
+ }
21
+ //# sourceMappingURL=worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/build/worker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAIhC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAQrD,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAK3C;IACC,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC;QACnC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU;QACpC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU;QACpC,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC,CAAA;IACF,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;IACpF,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC;QACzC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU;QACpC,UAAU;QACV,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC;QAChF,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC,CAAA;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAA;AAC5D,CAAC"}
@@ -36,6 +36,7 @@ export declare function runWranglerDeploy(args: DeployArgs & {
36
36
  }): Promise<{
37
37
  url: string;
38
38
  raw: string;
39
+ deploymentVersion?: string;
39
40
  }>;
40
41
  /**
41
42
  * Deploy with a one-time SELF-binding first-deploy recovery. A fresh worker that
@@ -51,6 +52,7 @@ export declare function deployWithSelfFallback(deploy: (configPath: string) => P
51
52
  }>, args: DeployArgs): Promise<{
52
53
  url: string;
53
54
  raw: string;
55
+ deploymentVersion?: string;
54
56
  }>;
55
57
  /**
56
58
  * True when wrangler failed specifically because the worker's OWN `SELF` service
@@ -75,4 +77,10 @@ export declare function runWranglerBundle(args: {
75
77
  outDir: string;
76
78
  onLog?: (line: string) => void;
77
79
  }): Promise<string>;
80
+ /** Generate the exact binding and runtime types selected by the generated config. */
81
+ export declare function runWranglerTypes(args: {
82
+ readonly projectDir: string;
83
+ readonly configPath: string;
84
+ readonly onLog?: (line: string) => void;
85
+ }): Promise<string>;
78
86
  //# sourceMappingURL=wrangler-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrangler-cli.d.ts","sourceRoot":"","sources":["../../src/build/wrangler-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmBH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AA8BD,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;IACf,sFAAsF;IACtF,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,gFAAgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B,GAAG,OAAO,CAAC,SAAS,CAAC,CAmGrB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,qFAAqF;IACrF,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,UAAU,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAMnE;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,EACtE,IAAI,EAAE,UAAU,GACf,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAyBnE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAO9E;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBhB;AAyCD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B,GAAG,OAAO,CAAC,MAAM,CAAC,CAclB;AAED,qFAAqF;AACrF,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBlB"}
@@ -11,8 +11,8 @@ import { existsSync, readdirSync } from 'node:fs';
11
11
  import { mkdtemp, rm, writeFile } from 'node:fs/promises';
12
12
  import { createServer } from 'node:net';
13
13
  import { tmpdir } from 'node:os';
14
- import { join } from 'node:path';
15
- import { parseDeployUrl, parseDevReadyUrl } from './parse-output';
14
+ import { dirname, join } from 'node:path';
15
+ import { parseDeployUrl, parseDeployVersionId, parseDevReadyUrl } from './parse-output.js';
16
16
  function wranglerCommand(projectDir) {
17
17
  const local = join(projectDir, 'node_modules', '.bin', 'wrangler');
18
18
  if (existsSync(local))
@@ -46,6 +46,7 @@ function ephemeralPort(host) {
46
46
  });
47
47
  }
48
48
  export async function runWranglerDev(args) {
49
+ await runWranglerTypes(args);
49
50
  const { cmd, prefix } = wranglerCommand(args.projectDir);
50
51
  const bindHost = args.ip ?? '127.0.0.1';
51
52
  if (args.autoPickPort && !(await portFree(args.port, bindHost))) {
@@ -78,9 +79,11 @@ export async function runWranglerDev(args) {
78
79
  // never answers) — the classic silent hang. Track build errors so the
79
80
  // safety net can fail LOUD instead of resolving a dead URL.
80
81
  let buildErrorTail = '';
82
+ let outputTail = '';
81
83
  const url = await new Promise((resolve, reject) => {
82
84
  const onData = (buf) => {
83
85
  const text = buf.toString();
86
+ outputTail = (outputTail + text).slice(-3000);
84
87
  for (const line of text.split('\n')) {
85
88
  if (line.trim())
86
89
  args.onLog?.(line);
@@ -104,7 +107,7 @@ export async function runWranglerDev(args) {
104
107
  child.on('exit', (code) => {
105
108
  if (!resolved) {
106
109
  resolved = true;
107
- reject(new Error(`wrangler dev exited before becoming ready (code ${code ?? 'null'}).`));
110
+ reject(new Error(`wrangler dev exited before becoming ready (code ${code ?? 'null'}).\n${outputTail}`));
108
111
  }
109
112
  });
110
113
  child.on('error', (err) => {
@@ -134,6 +137,7 @@ export async function runWranglerDev(args) {
134
137
  return { url, stop: () => stopChild(child) };
135
138
  }
136
139
  export async function runWranglerDeploy(args) {
140
+ await runWranglerTypes(args);
137
141
  const { cmd, prefix } = wranglerCommand(args.projectDir);
138
142
  const deploy = (configPath) => runCapture(cmd, [...prefix, 'deploy', '--config', configPath], args.projectDir, args.onLog);
139
143
  return deployWithSelfFallback(deploy, args);
@@ -164,7 +168,8 @@ export async function deployWithSelfFallback(deploy, args) {
164
168
  if (!url) {
165
169
  throw new Error(`could not determine deployed URL from wrangler output:\n${out.slice(-2000)}`);
166
170
  }
167
- return { url, raw: out };
171
+ const deploymentVersion = parseDeployVersionId(out);
172
+ return { url, raw: out, ...(deploymentVersion === undefined ? {} : { deploymentVersion }) };
168
173
  }
169
174
  /**
170
175
  * True when wrangler failed specifically because the worker's OWN `SELF` service
@@ -238,6 +243,7 @@ async function stopChild(child) {
238
243
  * bundled .js module (the managed adapter publishes its bytes).
239
244
  */
240
245
  export async function runWranglerBundle(args) {
246
+ await runWranglerTypes(args);
241
247
  const { cmd, prefix } = wranglerCommand(args.projectDir);
242
248
  const { code, out } = await runCapture(cmd, [...prefix, 'deploy', '--dry-run', '--outdir', args.outDir, '--config', args.configPath], args.projectDir, args.onLog);
243
249
  if (code !== 0)
@@ -248,4 +254,22 @@ export async function runWranglerBundle(args) {
248
254
  const preferred = js.find((f) => f.startsWith('worker')) ?? js[0];
249
255
  return join(args.outDir, preferred);
250
256
  }
257
+ /** Generate the exact binding and runtime types selected by the generated config. */
258
+ export async function runWranglerTypes(args) {
259
+ const { cmd, prefix } = wranglerCommand(args.projectDir);
260
+ const outputPath = join(dirname(args.configPath), 'worker-configuration.d.ts');
261
+ const { code, out } = await runCapture(cmd, [
262
+ ...prefix,
263
+ 'types',
264
+ outputPath,
265
+ '--env-interface',
266
+ 'CloudflareEnv',
267
+ '--config',
268
+ args.configPath,
269
+ ], args.projectDir, args.onLog);
270
+ if (code !== 0) {
271
+ throw new Error(`wrangler types failed (code ${code}):\n${out.slice(-2000)}`);
272
+ }
273
+ return outputPath;
274
+ }
251
275
  //# sourceMappingURL=wrangler-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrangler-cli.js","sourceRoot":"","sources":["../../src/build/wrangler-cli.ts"],"names":[],"mappings":"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"}
@@ -2,36 +2,33 @@
2
2
  * `cloudflare(envs)` — the Cloudflare deployment adapter.
3
3
  *
4
4
  * Owns everything target-specific: it codegens the Worker entry + wrangler
5
- * config (the dev never sees a `wrangler.jsonc`), builds the optional client
5
+ * config (the dev never sees a `wrangler.jsonc`), materializes the optional frontend
6
6
  * SPA, and shells out to `wrangler`. `watch` → `wrangler dev` (local URL);
7
7
  * `deploy` → `wrangler deploy` (workers.dev or a custom-domain URL); secrets →
8
8
  * `wrangler secret bulk`. Both `watch` and `deploy` return the URL the CLI
9
9
  * prints and `astrale domain install <url>` consumes.
10
10
  */
11
- import type { DeployCtx, DomainAdapter, WatchCtx } from '@astrale-os/sdk';
12
- import type { CloudflareParams } from './params';
11
+ import type { DomainAdapter } from '@astrale-os/sdk';
12
+ import type { CloudflareParams } from './params.js';
13
+ import { bulkPutSecrets, buildCloudflareWorker, buildFrontend, logTo, prepare, runWranglerDeploy, runWranglerDev, runWranglerTypes, watchFrontend } from './build/index.js';
13
14
  export declare function cloudflare(envs: Record<string, CloudflareParams>): DomainAdapter<CloudflareParams>;
14
- export declare function prepare(params: CloudflareParams, ctx: WatchCtx | DeployCtx, mode: 'dev' | 'deploy', clientAssets?: {
15
- servesClient: boolean;
16
- bundleAssets: boolean;
17
- }): Promise<{
18
- configPath: string;
19
- fallbackConfigPath?: string;
20
- port: number;
21
- workerName: string;
22
- }>;
23
- export declare function workerName(params: CloudflareParams, origin: string): string;
15
+ interface CloudflareAdapterDependencies {
16
+ readonly bulkPutSecrets: typeof bulkPutSecrets;
17
+ readonly buildCloudflareWorker: typeof buildCloudflareWorker;
18
+ readonly buildFrontend: typeof buildFrontend;
19
+ readonly logTo: typeof logTo;
20
+ readonly prepare: typeof prepare;
21
+ readonly runWranglerDeploy: typeof runWranglerDeploy;
22
+ readonly runWranglerDev: typeof runWranglerDev;
23
+ readonly runWranglerTypes: typeof runWranglerTypes;
24
+ readonly watchFrontend: typeof watchFrontend;
25
+ readonly waitUntilLive: typeof waitUntilLive;
26
+ }
27
+ /** Exact orchestration seam used by adapter-level deployment qualification. */
28
+ export declare function cloudflareWithDependencies(envs: Record<string, CloudflareParams>, dependencies: CloudflareAdapterDependencies): DomainAdapter<CloudflareParams>;
24
29
  /**
25
- * Resolve the instance-router config. ON by default (targets `admin-router`) so
26
- * every adapter-deployed worker can reach other instances' hosts internally and
27
- * verify cross-instance credentials without a 522; `false` disables it. The
28
- * returned shape carries every value the worker- and wrangler-codegen need.
30
+ * Poll until the deployed Worker health endpoint returns exactly 200.
29
31
  */
30
- export declare function resolveRouter(ir: CloudflareParams['router']): {
31
- binding: string;
32
- service: string;
33
- hostSuffix: string;
34
- minLabels: number;
35
- } | undefined;
36
- export declare function logTo(): (line: string) => void;
32
+ declare function waitUntilLive(url: string, onLog: (line: string) => void, expectedDeploymentVersion?: string, timeoutMs?: number): Promise<void>;
33
+ export {};
37
34
  //# sourceMappingURL=cloudflare.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../src/cloudflare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAMzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAUhD,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GACrC,aAAa,CAAC,gBAAgB,CAAC,CA+EjC;AAiBD,wBAAsB,OAAO,CAC3B,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,QAAQ,GAAG,SAAS,EACzB,IAAI,EAAE,KAAK,GAAG,QAAQ,EACtB,YAAY,GAAE;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAG3D,GACA,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAgGhG;AA8CD,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAsB3E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,gBAAgB,CAAC,QAAQ,CAAC,GAC7B;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CASzF;AAED,wBAAgB,KAAK,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAE9C"}
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../src/cloudflare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAIpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAEnD,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,KAAK,EACL,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACd,MAAM,kBAAkB,CAAA;AAEzB,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GACrC,aAAa,CAAC,gBAAgB,CAAC,CAajC;AAED,UAAU,6BAA6B;IACrC,QAAQ,CAAC,cAAc,EAAE,OAAO,cAAc,CAAA;IAC9C,QAAQ,CAAC,qBAAqB,EAAE,OAAO,qBAAqB,CAAA;IAC5D,QAAQ,CAAC,aAAa,EAAE,OAAO,aAAa,CAAA;IAC5C,QAAQ,CAAC,KAAK,EAAE,OAAO,KAAK,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,OAAO,CAAA;IAChC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,iBAAiB,CAAA;IACpD,QAAQ,CAAC,cAAc,EAAE,OAAO,cAAc,CAAA;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,OAAO,gBAAgB,CAAA;IAClD,QAAQ,CAAC,aAAa,EAAE,OAAO,aAAa,CAAA;IAC5C,QAAQ,CAAC,aAAa,EAAE,OAAO,aAAa,CAAA;CAC7C;AAED,+EAA+E;AAC/E,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACtC,YAAY,EAAE,6BAA6B,GAC1C,aAAa,CAAC,gBAAgB,CAAC,CAsIjC;AAED;;GAEG;AACH,iBAAe,aAAa,CAC1B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC7B,yBAAyB,CAAC,EAAE,MAAM,EAClC,SAAS,SAAS,GACjB,OAAO,CAAC,IAAI,CAAC,CA2Cf"}