@astrale-os/adapter-cloudflare 0.1.2 → 0.1.3
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/dist/astrale.d.ts +27 -0
- package/dist/astrale.d.ts.map +1 -0
- package/dist/astrale.js +163 -0
- package/dist/astrale.js.map +1 -0
- package/dist/cloudflare.d.ts +8 -1
- package/dist/cloudflare.d.ts.map +1 -1
- package/dist/cloudflare.js +2 -2
- package/dist/cloudflare.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/params.d.ts +19 -0
- package/dist/params.d.ts.map +1 -1
- package/dist/wrangler-cli.d.ts +11 -0
- package/dist/wrangler-cli.d.ts.map +1 -1
- package/dist/wrangler-cli.js +17 -1
- package/dist/wrangler-cli.js.map +1 -1
- package/package.json +1 -1
- package/src/astrale.ts +194 -0
- package/src/cloudflare.ts +2 -2
- package/src/index.ts +2 -1
- package/src/params.ts +20 -0
- package/src/wrangler-cli.ts +26 -1
- package/template/astrale.config.ts +9 -0
- package/template/package.json +10 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `astrale(envs)` — the Astrale-managed deployment adapter.
|
|
3
|
+
*
|
|
4
|
+
* Ships the domain THROUGH the platform instead of to the author's own cloud
|
|
5
|
+
* account: `deploy` builds the same single-module workerd bundle the Cloudflare
|
|
6
|
+
* adapter ships (shared codegen + `wrangler deploy --dry-run`), then publishes
|
|
7
|
+
* it via the admin domain's catalog — `DomainPublished.register` →
|
|
8
|
+
* `::release { bundleBase64 }` (the worker stages the bytes in the platform
|
|
9
|
+
* registry) → `::install { instanceId, source: { kind: 'package' } }`, which
|
|
10
|
+
* deploys it as a host-local Service next to the target instance and installs
|
|
11
|
+
* the domain on it. No Cloudflare account, no wrangler auth — the only
|
|
12
|
+
* credential is the author's Astrale identity, supplied by the `astrale` CLI
|
|
13
|
+
* session this adapter shells out to (the same trust source as
|
|
14
|
+
* `astrale instance install`).
|
|
15
|
+
*
|
|
16
|
+
* `watch` is identical to the Cloudflare adapter's local dev (wrangler dev on
|
|
17
|
+
* localhost) — managed deploys change WHERE the worker runs, not how you
|
|
18
|
+
* iterate locally.
|
|
19
|
+
*
|
|
20
|
+
* Current limits (v1): client/ SPA assets are not shipped (managed packages
|
|
21
|
+
* serve no `/ui` yet) and no runtime secrets reach the service — the bundle
|
|
22
|
+
* must be self-contained (its signing identity is baked in by the codegen).
|
|
23
|
+
*/
|
|
24
|
+
import type { DomainAdapter } from '@astrale-os/devkit';
|
|
25
|
+
import type { AstraleParams } from './params';
|
|
26
|
+
export declare function astrale(envs: Record<string, AstraleParams>): DomainAdapter<AstraleParams>;
|
|
27
|
+
//# sourceMappingURL=astrale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"astrale.d.ts","sourceRoot":"","sources":["../src/astrale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAQvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAU7C,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,aAAa,CAAC,aAAa,CAAC,CA2FzF"}
|
package/dist/astrale.js
ADDED
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `astrale(envs)` — the Astrale-managed deployment adapter.
|
|
3
|
+
*
|
|
4
|
+
* Ships the domain THROUGH the platform instead of to the author's own cloud
|
|
5
|
+
* account: `deploy` builds the same single-module workerd bundle the Cloudflare
|
|
6
|
+
* adapter ships (shared codegen + `wrangler deploy --dry-run`), then publishes
|
|
7
|
+
* it via the admin domain's catalog — `DomainPublished.register` →
|
|
8
|
+
* `::release { bundleBase64 }` (the worker stages the bytes in the platform
|
|
9
|
+
* registry) → `::install { instanceId, source: { kind: 'package' } }`, which
|
|
10
|
+
* deploys it as a host-local Service next to the target instance and installs
|
|
11
|
+
* the domain on it. No Cloudflare account, no wrangler auth — the only
|
|
12
|
+
* credential is the author's Astrale identity, supplied by the `astrale` CLI
|
|
13
|
+
* session this adapter shells out to (the same trust source as
|
|
14
|
+
* `astrale instance install`).
|
|
15
|
+
*
|
|
16
|
+
* `watch` is identical to the Cloudflare adapter's local dev (wrangler dev on
|
|
17
|
+
* localhost) — managed deploys change WHERE the worker runs, not how you
|
|
18
|
+
* iterate locally.
|
|
19
|
+
*
|
|
20
|
+
* Current limits (v1): client/ SPA assets are not shipped (managed packages
|
|
21
|
+
* serve no `/ui` yet) and no runtime secrets reach the service — the bundle
|
|
22
|
+
* must be self-contained (its signing identity is baked in by the codegen).
|
|
23
|
+
*/
|
|
24
|
+
import { defineAdapter } from '@astrale-os/devkit';
|
|
25
|
+
import { spawn } from 'node:child_process';
|
|
26
|
+
import { existsSync } from 'node:fs';
|
|
27
|
+
import { readFile } from 'node:fs/promises';
|
|
28
|
+
import { join } from 'node:path';
|
|
29
|
+
import { logTo, prepare } from './cloudflare';
|
|
30
|
+
import { runWranglerBundle, runWranglerDev } from './wrangler-cli';
|
|
31
|
+
const DEFAULT_PORT = 8787;
|
|
32
|
+
const DEFAULT_ADMIN_URL = 'https://admin.eu.astrale.ai/api';
|
|
33
|
+
const DEFAULT_REGION = 'eu';
|
|
34
|
+
const ADMIN_ORIGIN = 'admin.astrale.ai';
|
|
35
|
+
export function astrale(envs) {
|
|
36
|
+
return defineAdapter({
|
|
37
|
+
name: 'astrale',
|
|
38
|
+
envs,
|
|
39
|
+
// Local dev is unchanged: wrangler dev on localhost. Managed deploys change
|
|
40
|
+
// WHERE the worker ships, not the inner loop.
|
|
41
|
+
async watch(params, ctx) {
|
|
42
|
+
const { configPath } = await prepare({ ...(params.vars ? { vars: params.vars } : {}), port: params.port ?? DEFAULT_PORT }, ctx, 'dev');
|
|
43
|
+
const handle = await runWranglerDev({
|
|
44
|
+
projectDir: ctx.projectDir,
|
|
45
|
+
configPath,
|
|
46
|
+
port: params.port ?? DEFAULT_PORT,
|
|
47
|
+
remote: false,
|
|
48
|
+
onReload: ctx.onReload,
|
|
49
|
+
onLog: logTo(),
|
|
50
|
+
});
|
|
51
|
+
return { url: handle.url, stop: handle.stop };
|
|
52
|
+
},
|
|
53
|
+
async deploy(params, ctx) {
|
|
54
|
+
const log = logTo();
|
|
55
|
+
if (ctx.clientDir) {
|
|
56
|
+
log(`client/ detected — managed deploys do not ship SPA assets yet; ` +
|
|
57
|
+
`/ui will not serve on the managed service (functions/methods are unaffected).`);
|
|
58
|
+
}
|
|
59
|
+
// 1. Codegen + bundle: the exact worker module a Cloudflare deploy would
|
|
60
|
+
// ship, produced locally with `wrangler deploy --dry-run` (no auth).
|
|
61
|
+
// `clientDir` is stripped: managed packages don't ship SPA assets yet,
|
|
62
|
+
// and leaving it in would put a dangling `assets.directory` (the
|
|
63
|
+
// unbuilt dist-client) into the generated config.
|
|
64
|
+
const { clientDir: _omitted, ...bundleCtx } = ctx;
|
|
65
|
+
const { configPath } = await prepare({}, bundleCtx, 'dev');
|
|
66
|
+
const outDir = join(ctx.projectDir, '.astrale', 'dist-managed');
|
|
67
|
+
const bundlePath = await runWranglerBundle({
|
|
68
|
+
projectDir: ctx.projectDir,
|
|
69
|
+
configPath,
|
|
70
|
+
outDir,
|
|
71
|
+
onLog: log,
|
|
72
|
+
});
|
|
73
|
+
const bundle = await readFile(bundlePath);
|
|
74
|
+
// 2. Publish through the platform, authenticated by the author's astrale
|
|
75
|
+
// CLI session. The release payload rides STDIN — a bundle is megabytes
|
|
76
|
+
// of base64, far past argv limits.
|
|
77
|
+
const name = params.name ?? packageNameFor(ctx.domain.origin);
|
|
78
|
+
const adminUrl = params.adminUrl ?? DEFAULT_ADMIN_URL;
|
|
79
|
+
const version = `0.0.0-managed.${Date.now()}`;
|
|
80
|
+
log(`registering "${name}" (${ctx.domain.origin}) in the platform catalog…`);
|
|
81
|
+
await astraleCall(ctx.projectDir, params, adminUrl, {
|
|
82
|
+
path: `/${ADMIN_ORIGIN}/class.DomainPublished/register`,
|
|
83
|
+
data: { origin: ctx.domain.origin, name },
|
|
84
|
+
});
|
|
85
|
+
log(`publishing ${name}@${version} (${bundle.length} bytes)…`);
|
|
86
|
+
await astraleCall(ctx.projectDir, params, adminUrl, {
|
|
87
|
+
path: `/admin/domains/${name}::release`,
|
|
88
|
+
data: { version, bundleBase64: bundle.toString('base64'), makeCurrent: true },
|
|
89
|
+
viaStdin: true,
|
|
90
|
+
});
|
|
91
|
+
log(`installing on instance "${params.instance}"…`);
|
|
92
|
+
const installed = (await astraleCall(ctx.projectDir, params, adminUrl, {
|
|
93
|
+
path: `/admin/domains/${name}::install`,
|
|
94
|
+
data: { instanceId: params.instance, source: { kind: 'package' } },
|
|
95
|
+
}));
|
|
96
|
+
if (installed.error || installed.state !== 'installed') {
|
|
97
|
+
throw new Error(`managed install failed: state=${installed.state ?? '?'} error=${installed.error ?? '?'}`);
|
|
98
|
+
}
|
|
99
|
+
if (!installed.serviceSlug) {
|
|
100
|
+
throw new Error('managed install returned no serviceSlug — cannot derive the service URL');
|
|
101
|
+
}
|
|
102
|
+
const region = params.region ?? DEFAULT_REGION;
|
|
103
|
+
return { url: `https://${installed.serviceSlug}.svc.${region}.astrale.ai` };
|
|
104
|
+
},
|
|
105
|
+
secretsFile(params) {
|
|
106
|
+
return params.secrets;
|
|
107
|
+
},
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/** Catalog package name from the origin: first DNS label (e.g. `my-notes.example.dev` → `my-notes`). */
|
|
111
|
+
function packageNameFor(origin) {
|
|
112
|
+
const label = origin.split('.')[0] ?? origin;
|
|
113
|
+
return label.toLowerCase().replace(/[^a-z0-9-]+/g, '-');
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Invoke the user's `astrale` CLI for one platform call and parse its JSON
|
|
117
|
+
* output. The CLI owns identity (IdP session, audience scoping, delegation
|
|
118
|
+
* minting) — reimplementing that here would fork the trust path.
|
|
119
|
+
*/
|
|
120
|
+
async function astraleCall(projectDir, params, adminUrl, call) {
|
|
121
|
+
const args = ['call', call.path, '--url', adminUrl, '--json'];
|
|
122
|
+
if (params.identity)
|
|
123
|
+
args.push('--as', params.identity);
|
|
124
|
+
const payload = JSON.stringify(call.data);
|
|
125
|
+
if (!call.viaStdin)
|
|
126
|
+
args.push('--data', payload);
|
|
127
|
+
const { code, out } = await new Promise((resolve, reject) => {
|
|
128
|
+
const child = spawn(astraleBin(projectDir), args, {
|
|
129
|
+
cwd: projectDir,
|
|
130
|
+
stdio: [call.viaStdin ? 'pipe' : 'ignore', 'pipe', 'pipe'],
|
|
131
|
+
});
|
|
132
|
+
let out = '';
|
|
133
|
+
child.stdout?.on('data', (b) => (out += b.toString()));
|
|
134
|
+
child.stderr?.on('data', (b) => (out += b.toString()));
|
|
135
|
+
child.on('exit', (c) => resolve({ code: c ?? 1, out }));
|
|
136
|
+
child.on('error', reject);
|
|
137
|
+
if (call.viaStdin) {
|
|
138
|
+
child.stdin?.write(payload);
|
|
139
|
+
child.stdin?.end();
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
if (code !== 0) {
|
|
143
|
+
throw new Error(`astrale call ${call.path} failed (exit ${code}): ${out.trim().slice(0, 500)}\n` +
|
|
144
|
+
`Is the astrale CLI installed and signed in? (astrale auth login)`);
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
return JSON.parse(out);
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
throw new Error(`astrale call ${call.path}: could not parse CLI output: ${out.slice(0, 300)}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/** The user's astrale CLI: ~/.astrale/bin/astrale when present, else PATH. */
|
|
154
|
+
function astraleBin(_projectDir) {
|
|
155
|
+
const home = process.env.HOME;
|
|
156
|
+
if (home) {
|
|
157
|
+
const installed = join(home, '.astrale', 'bin', 'astrale');
|
|
158
|
+
if (existsSync(installed))
|
|
159
|
+
return installed;
|
|
160
|
+
}
|
|
161
|
+
return 'astrale';
|
|
162
|
+
}
|
|
163
|
+
//# sourceMappingURL=astrale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"astrale.js","sourceRoot":"","sources":["../src/astrale.ts"],"names":[],"mappings":"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"}
|
package/dist/cloudflare.d.ts
CHANGED
|
@@ -8,8 +8,15 @@
|
|
|
8
8
|
* `wrangler secret bulk`. Both `watch` and `deploy` return the URL the devkit
|
|
9
9
|
* prints and `astrale instance install <url>` consumes.
|
|
10
10
|
*/
|
|
11
|
-
import type { DomainAdapter } from '@astrale-os/devkit';
|
|
11
|
+
import type { DeployCtx, DomainAdapter, WatchCtx } from '@astrale-os/devkit';
|
|
12
12
|
import type { CloudflareParams } from './params';
|
|
13
13
|
export declare function cloudflare(envs: Record<string, CloudflareParams>): DomainAdapter<CloudflareParams>;
|
|
14
|
+
export declare function prepare(params: CloudflareParams, ctx: WatchCtx | DeployCtx, mode: 'dev' | 'deploy'): Promise<{
|
|
15
|
+
configPath: string;
|
|
16
|
+
fallbackConfigPath?: string;
|
|
17
|
+
port: number;
|
|
18
|
+
workerName: string;
|
|
19
|
+
}>;
|
|
14
20
|
export declare function workerName(params: CloudflareParams, origin: string): string;
|
|
21
|
+
export declare function logTo(): (line: string) => void;
|
|
15
22
|
//# sourceMappingURL=cloudflare.d.ts.map
|
package/dist/cloudflare.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../src/cloudflare.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,
|
|
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,oBAAoB,CAAA;AAM5E,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,CAsDjC;AAID,wBAAsB,OAAO,CAC3B,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,QAAQ,GAAG,SAAS,EACzB,IAAI,EAAE,KAAK,GAAG,QAAQ,GACrB,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,CA0EhG;AAoCD,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAsB3E;AAED,wBAAgB,KAAK,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAE9C"}
|
package/dist/cloudflare.js
CHANGED
|
@@ -68,7 +68,7 @@ export function cloudflare(envs) {
|
|
|
68
68
|
});
|
|
69
69
|
}
|
|
70
70
|
// ── codegen orchestration ──────────────────────────────────────────────────
|
|
71
|
-
async function prepare(params, ctx, mode) {
|
|
71
|
+
export async function prepare(params, ctx, mode) {
|
|
72
72
|
const astraleDir = join(ctx.projectDir, '.astrale');
|
|
73
73
|
await mkdir(astraleDir, { recursive: true });
|
|
74
74
|
await ensureIdentity(astraleDir, ctx.domain.origin);
|
|
@@ -180,7 +180,7 @@ export function workerName(params, origin) {
|
|
|
180
180
|
.slice(0, 54)
|
|
181
181
|
.replace(/^-+|-+$/g, '');
|
|
182
182
|
}
|
|
183
|
-
function logTo() {
|
|
183
|
+
export function logTo() {
|
|
184
184
|
return (line) => process.stderr.write(`\x1b[2m ${line}\x1b[0m\n`);
|
|
185
185
|
}
|
|
186
186
|
//# sourceMappingURL=cloudflare.js.map
|
package/dist/cloudflare.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../src/cloudflare.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../src/cloudflare.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* `dev` runs `wrangler dev` locally; an env with no `route` ships to
|
|
13
13
|
* `*.workers.dev`; an env with a `route` ships to that custom domain.
|
|
14
14
|
*/
|
|
15
|
+
export { astrale } from './astrale';
|
|
15
16
|
export { cloudflare } from './cloudflare';
|
|
16
|
-
export type { CloudflareParams } from './params';
|
|
17
|
+
export type { AstraleParams, CloudflareParams } from './params';
|
|
17
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -12,5 +12,6 @@
|
|
|
12
12
|
* `dev` runs `wrangler dev` locally; an env with no `route` ships to
|
|
13
13
|
* `*.workers.dev`; an env with a `route` ships to that custom domain.
|
|
14
14
|
*/
|
|
15
|
+
export { astrale } from './astrale';
|
|
15
16
|
export { cloudflare } from './cloudflare';
|
|
16
17
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA"}
|
package/dist/params.d.ts
CHANGED
|
@@ -47,4 +47,23 @@ export interface CloudflareParams {
|
|
|
47
47
|
*/
|
|
48
48
|
wrangler?: Record<string, unknown>;
|
|
49
49
|
}
|
|
50
|
+
/** Params for the Astrale-managed adapter (`astrale(envs)`). */
|
|
51
|
+
export interface AstraleParams {
|
|
52
|
+
/** Target instance slug the domain installs onto (e.g. `'bryan-e2e5'`). */
|
|
53
|
+
instance: string;
|
|
54
|
+
/** Catalog package name. Default: the origin's first DNS label. */
|
|
55
|
+
name?: string;
|
|
56
|
+
/** Admin kernel URL the publish calls target. Default the platform admin. */
|
|
57
|
+
adminUrl?: string;
|
|
58
|
+
/** Routing region of the `.svc` service URL. Default `'eu'`. */
|
|
59
|
+
region?: string;
|
|
60
|
+
/** CLI identity (`--as`) for the publish calls. Default: the CLI's active identity. */
|
|
61
|
+
identity?: string;
|
|
62
|
+
/** Gitignored secrets file — injected ONLY into local `watch` (managed services receive no secrets yet). */
|
|
63
|
+
secrets?: string;
|
|
64
|
+
/** Local dev port for `wrangler dev`. Default 8787. */
|
|
65
|
+
port?: number;
|
|
66
|
+
/** Extra plain vars for local `watch`. */
|
|
67
|
+
vars?: Record<string, string>;
|
|
68
|
+
}
|
|
50
69
|
//# sourceMappingURL=params.d.ts.map
|
package/dist/params.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../src/params.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC"}
|
|
1
|
+
{"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../src/params.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,8DAA8D;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7B;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,gEAAgE;AAChE,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAA;IAChB,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uFAAuF;IACvF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,4GAA4G;IAC5G,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC9B"}
|
package/dist/wrangler-cli.d.ts
CHANGED
|
@@ -60,4 +60,15 @@ export declare function bulkPutSecrets(args: {
|
|
|
60
60
|
secrets: Record<string, string>;
|
|
61
61
|
onLog?: (line: string) => void;
|
|
62
62
|
}): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Build the single-module worker bundle WITHOUT deploying — `wrangler deploy
|
|
65
|
+
* --dry-run --outdir` (no Cloudflare auth required). Returns the path of the
|
|
66
|
+
* bundled .js module (the managed adapter publishes its bytes).
|
|
67
|
+
*/
|
|
68
|
+
export declare function runWranglerBundle(args: {
|
|
69
|
+
projectDir: string;
|
|
70
|
+
configPath: string;
|
|
71
|
+
outDir: string;
|
|
72
|
+
onLog?: (line: string) => void;
|
|
73
|
+
}): Promise<string>;
|
|
63
74
|
//# sourceMappingURL=wrangler-cli.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrangler-cli.d.ts","sourceRoot":"","sources":["../src/wrangler-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAkBH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAED,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,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B,GAAG,OAAO,CAAC,SAAS,CAAC,CAkErB;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,CAAA;CAAE,CAAC,CAKvC;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,CAAA;CAAE,CAAC,CAwBvC;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"}
|
|
1
|
+
{"version":3,"file":"wrangler-cli.d.ts","sourceRoot":"","sources":["../src/wrangler-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAkBH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACtB;AAED,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,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC/B,GAAG,OAAO,CAAC,SAAS,CAAC,CAkErB;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,CAAA;CAAE,CAAC,CAKvC;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,CAAA;CAAE,CAAC,CAwBvC;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,CAalB"}
|
package/dist/wrangler-cli.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* falling back to `npx wrangler`.
|
|
8
8
|
*/
|
|
9
9
|
import { spawn } from 'node:child_process';
|
|
10
|
-
import { existsSync } from 'node:fs';
|
|
10
|
+
import { existsSync, readdirSync } from 'node:fs';
|
|
11
11
|
import { mkdtemp, rm, writeFile } from 'node:fs/promises';
|
|
12
12
|
import { tmpdir } from 'node:os';
|
|
13
13
|
import { join } from 'node:path';
|
|
@@ -182,4 +182,20 @@ async function stopChild(child) {
|
|
|
182
182
|
}, 4000).unref?.();
|
|
183
183
|
});
|
|
184
184
|
}
|
|
185
|
+
/**
|
|
186
|
+
* Build the single-module worker bundle WITHOUT deploying — `wrangler deploy
|
|
187
|
+
* --dry-run --outdir` (no Cloudflare auth required). Returns the path of the
|
|
188
|
+
* bundled .js module (the managed adapter publishes its bytes).
|
|
189
|
+
*/
|
|
190
|
+
export async function runWranglerBundle(args) {
|
|
191
|
+
const { cmd, prefix } = wranglerCommand(args.projectDir);
|
|
192
|
+
const { code, out } = await runCapture(cmd, [...prefix, 'deploy', '--dry-run', '--outdir', args.outDir, '--config', args.configPath], args.projectDir, args.onLog);
|
|
193
|
+
if (code !== 0)
|
|
194
|
+
throw new Error(`wrangler bundle failed (exit ${code}): ${out.slice(-400)}`);
|
|
195
|
+
const js = readdirSync(args.outDir).filter((f) => f.endsWith('.js'));
|
|
196
|
+
if (js.length === 0)
|
|
197
|
+
throw new Error(`wrangler bundle produced no .js in ${args.outDir}`);
|
|
198
|
+
const preferred = js.find((f) => f.startsWith('worker')) ?? js[0];
|
|
199
|
+
return join(args.outDir, preferred);
|
|
200
|
+
}
|
|
185
201
|
//# sourceMappingURL=wrangler-cli.js.map
|
package/dist/wrangler-cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrangler-cli.js","sourceRoot":"","sources":["../src/wrangler-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"wrangler-cli.js","sourceRoot":"","sources":["../src/wrangler-cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/astrale.ts
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `astrale(envs)` — the Astrale-managed deployment adapter.
|
|
3
|
+
*
|
|
4
|
+
* Ships the domain THROUGH the platform instead of to the author's own cloud
|
|
5
|
+
* account: `deploy` builds the same single-module workerd bundle the Cloudflare
|
|
6
|
+
* adapter ships (shared codegen + `wrangler deploy --dry-run`), then publishes
|
|
7
|
+
* it via the admin domain's catalog — `DomainPublished.register` →
|
|
8
|
+
* `::release { bundleBase64 }` (the worker stages the bytes in the platform
|
|
9
|
+
* registry) → `::install { instanceId, source: { kind: 'package' } }`, which
|
|
10
|
+
* deploys it as a host-local Service next to the target instance and installs
|
|
11
|
+
* the domain on it. No Cloudflare account, no wrangler auth — the only
|
|
12
|
+
* credential is the author's Astrale identity, supplied by the `astrale` CLI
|
|
13
|
+
* session this adapter shells out to (the same trust source as
|
|
14
|
+
* `astrale instance install`).
|
|
15
|
+
*
|
|
16
|
+
* `watch` is identical to the Cloudflare adapter's local dev (wrangler dev on
|
|
17
|
+
* localhost) — managed deploys change WHERE the worker runs, not how you
|
|
18
|
+
* iterate locally.
|
|
19
|
+
*
|
|
20
|
+
* Current limits (v1): client/ SPA assets are not shipped (managed packages
|
|
21
|
+
* serve no `/ui` yet) and no runtime secrets reach the service — the bundle
|
|
22
|
+
* must be self-contained (its signing identity is baked in by the codegen).
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
import type { DomainAdapter } from '@astrale-os/devkit'
|
|
26
|
+
|
|
27
|
+
import { defineAdapter } from '@astrale-os/devkit'
|
|
28
|
+
import { spawn } from 'node:child_process'
|
|
29
|
+
import { existsSync } from 'node:fs'
|
|
30
|
+
import { readFile } from 'node:fs/promises'
|
|
31
|
+
import { join } from 'node:path'
|
|
32
|
+
|
|
33
|
+
import type { AstraleParams } from './params'
|
|
34
|
+
|
|
35
|
+
import { logTo, prepare } from './cloudflare'
|
|
36
|
+
import { runWranglerBundle, runWranglerDev } from './wrangler-cli'
|
|
37
|
+
|
|
38
|
+
const DEFAULT_PORT = 8787
|
|
39
|
+
const DEFAULT_ADMIN_URL = 'https://admin.eu.astrale.ai/api'
|
|
40
|
+
const DEFAULT_REGION = 'eu'
|
|
41
|
+
const ADMIN_ORIGIN = 'admin.astrale.ai'
|
|
42
|
+
|
|
43
|
+
export function astrale(envs: Record<string, AstraleParams>): DomainAdapter<AstraleParams> {
|
|
44
|
+
return defineAdapter<AstraleParams>({
|
|
45
|
+
name: 'astrale',
|
|
46
|
+
envs,
|
|
47
|
+
|
|
48
|
+
// Local dev is unchanged: wrangler dev on localhost. Managed deploys change
|
|
49
|
+
// WHERE the worker ships, not the inner loop.
|
|
50
|
+
async watch(params, ctx) {
|
|
51
|
+
const { configPath } = await prepare(
|
|
52
|
+
{ ...(params.vars ? { vars: params.vars } : {}), port: params.port ?? DEFAULT_PORT },
|
|
53
|
+
ctx,
|
|
54
|
+
'dev',
|
|
55
|
+
)
|
|
56
|
+
const handle = await runWranglerDev({
|
|
57
|
+
projectDir: ctx.projectDir,
|
|
58
|
+
configPath,
|
|
59
|
+
port: params.port ?? DEFAULT_PORT,
|
|
60
|
+
remote: false,
|
|
61
|
+
onReload: ctx.onReload,
|
|
62
|
+
onLog: logTo(),
|
|
63
|
+
})
|
|
64
|
+
return { url: handle.url, stop: handle.stop }
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
async deploy(params, ctx) {
|
|
68
|
+
const log = logTo()
|
|
69
|
+
if (ctx.clientDir) {
|
|
70
|
+
log(
|
|
71
|
+
`client/ detected — managed deploys do not ship SPA assets yet; ` +
|
|
72
|
+
`/ui will not serve on the managed service (functions/methods are unaffected).`,
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// 1. Codegen + bundle: the exact worker module a Cloudflare deploy would
|
|
77
|
+
// ship, produced locally with `wrangler deploy --dry-run` (no auth).
|
|
78
|
+
// `clientDir` is stripped: managed packages don't ship SPA assets yet,
|
|
79
|
+
// and leaving it in would put a dangling `assets.directory` (the
|
|
80
|
+
// unbuilt dist-client) into the generated config.
|
|
81
|
+
const { clientDir: _omitted, ...bundleCtx } = ctx
|
|
82
|
+
const { configPath } = await prepare({}, bundleCtx, 'dev')
|
|
83
|
+
const outDir = join(ctx.projectDir, '.astrale', 'dist-managed')
|
|
84
|
+
const bundlePath = await runWranglerBundle({
|
|
85
|
+
projectDir: ctx.projectDir,
|
|
86
|
+
configPath,
|
|
87
|
+
outDir,
|
|
88
|
+
onLog: log,
|
|
89
|
+
})
|
|
90
|
+
const bundle = await readFile(bundlePath)
|
|
91
|
+
|
|
92
|
+
// 2. Publish through the platform, authenticated by the author's astrale
|
|
93
|
+
// CLI session. The release payload rides STDIN — a bundle is megabytes
|
|
94
|
+
// of base64, far past argv limits.
|
|
95
|
+
const name = params.name ?? packageNameFor(ctx.domain.origin)
|
|
96
|
+
const adminUrl = params.adminUrl ?? DEFAULT_ADMIN_URL
|
|
97
|
+
const version = `0.0.0-managed.${Date.now()}`
|
|
98
|
+
|
|
99
|
+
log(`registering "${name}" (${ctx.domain.origin}) in the platform catalog…`)
|
|
100
|
+
await astraleCall(ctx.projectDir, params, adminUrl, {
|
|
101
|
+
path: `/${ADMIN_ORIGIN}/class.DomainPublished/register`,
|
|
102
|
+
data: { origin: ctx.domain.origin, name },
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
log(`publishing ${name}@${version} (${bundle.length} bytes)…`)
|
|
106
|
+
await astraleCall(ctx.projectDir, params, adminUrl, {
|
|
107
|
+
path: `/admin/domains/${name}::release`,
|
|
108
|
+
data: { version, bundleBase64: bundle.toString('base64'), makeCurrent: true },
|
|
109
|
+
viaStdin: true,
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
log(`installing on instance "${params.instance}"…`)
|
|
113
|
+
const installed = (await astraleCall(ctx.projectDir, params, adminUrl, {
|
|
114
|
+
path: `/admin/domains/${name}::install`,
|
|
115
|
+
data: { instanceId: params.instance, source: { kind: 'package' } },
|
|
116
|
+
})) as { serviceSlug?: string; state?: string; error?: string | null }
|
|
117
|
+
|
|
118
|
+
if (installed.error || installed.state !== 'installed') {
|
|
119
|
+
throw new Error(
|
|
120
|
+
`managed install failed: state=${installed.state ?? '?'} error=${installed.error ?? '?'}`,
|
|
121
|
+
)
|
|
122
|
+
}
|
|
123
|
+
if (!installed.serviceSlug) {
|
|
124
|
+
throw new Error('managed install returned no serviceSlug — cannot derive the service URL')
|
|
125
|
+
}
|
|
126
|
+
const region = params.region ?? DEFAULT_REGION
|
|
127
|
+
return { url: `https://${installed.serviceSlug}.svc.${region}.astrale.ai` }
|
|
128
|
+
},
|
|
129
|
+
|
|
130
|
+
secretsFile(params) {
|
|
131
|
+
return params.secrets
|
|
132
|
+
},
|
|
133
|
+
})
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/** Catalog package name from the origin: first DNS label (e.g. `my-notes.example.dev` → `my-notes`). */
|
|
137
|
+
function packageNameFor(origin: string): string {
|
|
138
|
+
const label = origin.split('.')[0] ?? origin
|
|
139
|
+
return label.toLowerCase().replace(/[^a-z0-9-]+/g, '-')
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Invoke the user's `astrale` CLI for one platform call and parse its JSON
|
|
144
|
+
* output. The CLI owns identity (IdP session, audience scoping, delegation
|
|
145
|
+
* minting) — reimplementing that here would fork the trust path.
|
|
146
|
+
*/
|
|
147
|
+
async function astraleCall(
|
|
148
|
+
projectDir: string,
|
|
149
|
+
params: AstraleParams,
|
|
150
|
+
adminUrl: string,
|
|
151
|
+
call: { path: string; data: unknown; viaStdin?: boolean },
|
|
152
|
+
): Promise<unknown> {
|
|
153
|
+
const args = ['call', call.path, '--url', adminUrl, '--json']
|
|
154
|
+
if (params.identity) args.push('--as', params.identity)
|
|
155
|
+
const payload = JSON.stringify(call.data)
|
|
156
|
+
if (!call.viaStdin) args.push('--data', payload)
|
|
157
|
+
|
|
158
|
+
const { code, out } = await new Promise<{ code: number; out: string }>((resolve, reject) => {
|
|
159
|
+
const child = spawn(astraleBin(projectDir), args, {
|
|
160
|
+
cwd: projectDir,
|
|
161
|
+
stdio: [call.viaStdin ? 'pipe' : 'ignore', 'pipe', 'pipe'],
|
|
162
|
+
})
|
|
163
|
+
let out = ''
|
|
164
|
+
child.stdout?.on('data', (b: Buffer) => (out += b.toString()))
|
|
165
|
+
child.stderr?.on('data', (b: Buffer) => (out += b.toString()))
|
|
166
|
+
child.on('exit', (c) => resolve({ code: c ?? 1, out }))
|
|
167
|
+
child.on('error', reject)
|
|
168
|
+
if (call.viaStdin) {
|
|
169
|
+
child.stdin?.write(payload)
|
|
170
|
+
child.stdin?.end()
|
|
171
|
+
}
|
|
172
|
+
})
|
|
173
|
+
if (code !== 0) {
|
|
174
|
+
throw new Error(
|
|
175
|
+
`astrale call ${call.path} failed (exit ${code}): ${out.trim().slice(0, 500)}\n` +
|
|
176
|
+
`Is the astrale CLI installed and signed in? (astrale auth login)`,
|
|
177
|
+
)
|
|
178
|
+
}
|
|
179
|
+
try {
|
|
180
|
+
return JSON.parse(out)
|
|
181
|
+
} catch {
|
|
182
|
+
throw new Error(`astrale call ${call.path}: could not parse CLI output: ${out.slice(0, 300)}`)
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/** The user's astrale CLI: ~/.astrale/bin/astrale when present, else PATH. */
|
|
187
|
+
function astraleBin(_projectDir: string): string {
|
|
188
|
+
const home = process.env.HOME
|
|
189
|
+
if (home) {
|
|
190
|
+
const installed = join(home, '.astrale', 'bin', 'astrale')
|
|
191
|
+
if (existsSync(installed)) return installed
|
|
192
|
+
}
|
|
193
|
+
return 'astrale'
|
|
194
|
+
}
|
package/src/cloudflare.ts
CHANGED
|
@@ -85,7 +85,7 @@ export function cloudflare(
|
|
|
85
85
|
|
|
86
86
|
// ── codegen orchestration ──────────────────────────────────────────────────
|
|
87
87
|
|
|
88
|
-
async function prepare(
|
|
88
|
+
export async function prepare(
|
|
89
89
|
params: CloudflareParams,
|
|
90
90
|
ctx: WatchCtx | DeployCtx,
|
|
91
91
|
mode: 'dev' | 'deploy',
|
|
@@ -223,6 +223,6 @@ export function workerName(params: CloudflareParams, origin: string): string {
|
|
|
223
223
|
.replace(/^-+|-+$/g, '')
|
|
224
224
|
}
|
|
225
225
|
|
|
226
|
-
function logTo(): (line: string) => void {
|
|
226
|
+
export function logTo(): (line: string) => void {
|
|
227
227
|
return (line: string) => process.stderr.write(`\x1b[2m ${line}\x1b[0m\n`)
|
|
228
228
|
}
|
package/src/index.ts
CHANGED
|
@@ -13,5 +13,6 @@
|
|
|
13
13
|
* `*.workers.dev`; an env with a `route` ships to that custom domain.
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
+
export { astrale } from './astrale'
|
|
16
17
|
export { cloudflare } from './cloudflare'
|
|
17
|
-
export type { CloudflareParams } from './params'
|
|
18
|
+
export type { AstraleParams, CloudflareParams } from './params'
|
package/src/params.ts
CHANGED
|
@@ -47,3 +47,23 @@ export interface CloudflareParams {
|
|
|
47
47
|
*/
|
|
48
48
|
wrangler?: Record<string, unknown>
|
|
49
49
|
}
|
|
50
|
+
|
|
51
|
+
/** Params for the Astrale-managed adapter (`astrale(envs)`). */
|
|
52
|
+
export interface AstraleParams {
|
|
53
|
+
/** Target instance slug the domain installs onto (e.g. `'bryan-e2e5'`). */
|
|
54
|
+
instance: string
|
|
55
|
+
/** Catalog package name. Default: the origin's first DNS label. */
|
|
56
|
+
name?: string
|
|
57
|
+
/** Admin kernel URL the publish calls target. Default the platform admin. */
|
|
58
|
+
adminUrl?: string
|
|
59
|
+
/** Routing region of the `.svc` service URL. Default `'eu'`. */
|
|
60
|
+
region?: string
|
|
61
|
+
/** CLI identity (`--as`) for the publish calls. Default: the CLI's active identity. */
|
|
62
|
+
identity?: string
|
|
63
|
+
/** Gitignored secrets file — injected ONLY into local `watch` (managed services receive no secrets yet). */
|
|
64
|
+
secrets?: string
|
|
65
|
+
/** Local dev port for `wrangler dev`. Default 8787. */
|
|
66
|
+
port?: number
|
|
67
|
+
/** Extra plain vars for local `watch`. */
|
|
68
|
+
vars?: Record<string, string>
|
|
69
|
+
}
|
package/src/wrangler-cli.ts
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import type { ChildProcess } from 'node:child_process'
|
|
11
11
|
|
|
12
12
|
import { spawn } from 'node:child_process'
|
|
13
|
-
import { existsSync } from 'node:fs'
|
|
13
|
+
import { existsSync, readdirSync } from 'node:fs'
|
|
14
14
|
import { mkdtemp, rm, writeFile } from 'node:fs/promises'
|
|
15
15
|
import { tmpdir } from 'node:os'
|
|
16
16
|
import { join } from 'node:path'
|
|
@@ -238,3 +238,28 @@ async function stopChild(child: ChildProcess): Promise<void> {
|
|
|
238
238
|
}, 4000).unref?.()
|
|
239
239
|
})
|
|
240
240
|
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Build the single-module worker bundle WITHOUT deploying — `wrangler deploy
|
|
244
|
+
* --dry-run --outdir` (no Cloudflare auth required). Returns the path of the
|
|
245
|
+
* bundled .js module (the managed adapter publishes its bytes).
|
|
246
|
+
*/
|
|
247
|
+
export async function runWranglerBundle(args: {
|
|
248
|
+
projectDir: string
|
|
249
|
+
configPath: string
|
|
250
|
+
outDir: string
|
|
251
|
+
onLog?: (line: string) => void
|
|
252
|
+
}): Promise<string> {
|
|
253
|
+
const { cmd, prefix } = wranglerCommand(args.projectDir)
|
|
254
|
+
const { code, out } = await runCapture(
|
|
255
|
+
cmd,
|
|
256
|
+
[...prefix, 'deploy', '--dry-run', '--outdir', args.outDir, '--config', args.configPath],
|
|
257
|
+
args.projectDir,
|
|
258
|
+
args.onLog,
|
|
259
|
+
)
|
|
260
|
+
if (code !== 0) throw new Error(`wrangler bundle failed (exit ${code}): ${out.slice(-400)}`)
|
|
261
|
+
const js = readdirSync(args.outDir).filter((f) => f.endsWith('.js'))
|
|
262
|
+
if (js.length === 0) throw new Error(`wrangler bundle produced no .js in ${args.outDir}`)
|
|
263
|
+
const preferred = js.find((f) => f.startsWith('worker')) ?? js[0]!
|
|
264
|
+
return join(args.outDir, preferred)
|
|
265
|
+
}
|
|
@@ -11,6 +11,15 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { cloudflare } from '@astrale-os/adapter-cloudflare'
|
|
13
13
|
import { defineDomain } from '@astrale-os/devkit'
|
|
14
|
+
// No Cloudflare account? Swap the adapter for the Astrale-managed one — it
|
|
15
|
+
// publishes the same bundle THROUGH the platform and installs it on your
|
|
16
|
+
// instance as a managed service (auth = your `astrale auth login` session):
|
|
17
|
+
//
|
|
18
|
+
// import { astrale } from '@astrale-os/adapter-cloudflare'
|
|
19
|
+
// adapter: astrale({
|
|
20
|
+
// dev: { secrets: '.env.dev' }, // local wrangler dev, unchanged
|
|
21
|
+
// prod: { instance: '<your-instance-slug>' } // pnpm prod → managed deploy
|
|
22
|
+
// }),
|
|
14
23
|
|
|
15
24
|
import { schema } from './schema'
|
|
16
25
|
|
package/template/package.json
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
"name": "astrale-domain",
|
|
3
3
|
"version": "0.1.0",
|
|
4
4
|
"private": true,
|
|
5
|
+
"workspaces": [
|
|
6
|
+
"client"
|
|
7
|
+
],
|
|
5
8
|
"type": "module",
|
|
6
9
|
"scripts": {
|
|
7
10
|
"dev": "astrale-domain dev",
|
|
@@ -16,6 +19,7 @@
|
|
|
16
19
|
"@astrale-os/kernel-core": ">=0.3.0 <1.0.0",
|
|
17
20
|
"@astrale-os/kernel-dsl": ">=0.1.0 <1.0.0",
|
|
18
21
|
"@astrale-os/sdk": ">=0.1.0 <1.0.0",
|
|
22
|
+
"@hono/node-server": "^1.19.0",
|
|
19
23
|
"zod": "^4.3.6"
|
|
20
24
|
},
|
|
21
25
|
"devDependencies": {
|
|
@@ -26,5 +30,10 @@
|
|
|
26
30
|
},
|
|
27
31
|
"engines": {
|
|
28
32
|
"node": ">=22"
|
|
29
|
-
}
|
|
33
|
+
},
|
|
34
|
+
"trustedDependencies": [
|
|
35
|
+
"esbuild",
|
|
36
|
+
"sharp",
|
|
37
|
+
"workerd"
|
|
38
|
+
]
|
|
30
39
|
}
|