@kodycodes/cli 1.17.0 → 1.19.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 +51 -5
- package/dist/auth.d.ts +30 -4
- package/dist/auth.js +94 -13
- package/dist/auth.js.map +1 -1
- package/dist/capability-proxy.d.ts +7 -0
- package/dist/capability-proxy.js +8 -2
- package/dist/capability-proxy.js.map +1 -1
- package/dist/cli.d.ts +9 -1
- package/dist/cli.js +426 -100
- package/dist/cli.js.map +1 -1
- package/dist/dev-command.d.ts +93 -0
- package/dist/dev-command.js +369 -0
- package/dist/dev-command.js.map +1 -0
- package/dist/discover-org.d.ts +10 -0
- package/dist/discover-org.js +62 -0
- package/dist/discover-org.js.map +1 -0
- package/dist/help.d.ts +13 -1
- package/dist/help.js +112 -15
- package/dist/help.js.map +1 -1
- package/dist/local-execute-auth.d.ts +1 -0
- package/dist/local-execute-auth.js +7 -1
- package/dist/local-execute-auth.js.map +1 -1
- package/dist/local-execute.d.ts +2 -0
- package/dist/local-execute.js +6 -1
- package/dist/local-execute.js.map +1 -1
- package/dist/local-package-graph.js +2 -0
- package/dist/local-package-graph.js.map +1 -1
- package/dist/local-package-run.d.ts +28 -0
- package/dist/local-package-run.js +299 -0
- package/dist/local-package-run.js.map +1 -0
- package/dist/mcp.d.ts +4 -0
- package/dist/mcp.js +3 -0
- package/dist/mcp.js.map +1 -1
- package/dist/mock/mock-server.d.ts +42 -0
- package/dist/mock/mock-server.js +373 -0
- package/dist/mock/mock-server.js.map +1 -0
- package/dist/mock/mock-storage.d.ts +46 -0
- package/dist/mock/mock-storage.js +96 -0
- package/dist/mock/mock-storage.js.map +1 -0
- package/dist/mock/mock-supported.d.ts +18 -0
- package/dist/mock/mock-supported.js +43 -0
- package/dist/mock/mock-supported.js.map +1 -0
- package/dist/oauth-provider.d.ts +1 -2
- package/dist/oauth-provider.js +2 -8
- package/dist/oauth-provider.js.map +1 -1
- package/dist/open-api-client.d.ts +5 -0
- package/dist/open-api-client.js +4 -0
- package/dist/open-api-client.js.map +1 -1
- package/dist/org-resolve.d.ts +9 -0
- package/dist/org-resolve.js +16 -0
- package/dist/org-resolve.js.map +1 -0
- package/dist/org-slug.d.ts +4 -0
- package/dist/org-slug.js +11 -0
- package/dist/org-slug.js.map +1 -0
- package/dist/org.d.ts +22 -0
- package/dist/org.js +100 -0
- package/dist/org.js.map +1 -0
- package/dist/package-app-dev.d.ts +43 -0
- package/dist/package-app-dev.js +356 -0
- package/dist/package-app-dev.js.map +1 -0
- package/dist/package-local-runtime-source.d.ts +35 -0
- package/dist/package-local-runtime-source.js +317 -0
- package/dist/package-local-runtime-source.js.map +1 -0
- package/dist/package-manifest.d.ts +43 -0
- package/dist/package-manifest.js +264 -0
- package/dist/package-manifest.js.map +1 -0
- package/dist/remote-execute.d.ts +2 -0
- package/dist/remote-execute.js +6 -1
- package/dist/remote-execute.js.map +1 -1
- package/dist/store.d.ts +93 -3
- package/dist/store.js +454 -23
- package/dist/store.js.map +1 -1
- package/dist/structured-error.d.ts +28 -0
- package/dist/structured-error.js +57 -0
- package/dist/structured-error.js.map +1 -0
- package/dist/target.d.ts +25 -0
- package/dist/target.js +45 -0
- package/dist/target.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Long-running `kody dev` app server: bundles `kody.app.entry` the same way
|
|
3
|
+
* local-bundle/publish does for esbuild, serves via workerd, strips the mount
|
|
4
|
+
* at the Node proxy, and rebuilds on file changes.
|
|
5
|
+
*/
|
|
6
|
+
import { spawn } from 'node:child_process';
|
|
7
|
+
import { randomBytes } from 'node:crypto';
|
|
8
|
+
import { watch } from 'node:fs';
|
|
9
|
+
import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
|
|
10
|
+
import { createServer, request as httpRequest, } from 'node:http';
|
|
11
|
+
import { tmpdir } from 'node:os';
|
|
12
|
+
import { join } from 'node:path';
|
|
13
|
+
import { assertTokenSafeApiUrl, callCapabilityProxy, } from './capability-proxy.js';
|
|
14
|
+
import { apiTokenEnvVar } from './defaults.js';
|
|
15
|
+
import { bundleLocalUserModule } from './local-bundle.js';
|
|
16
|
+
import { createWorkerdConfig } from './local-runtime-source.js';
|
|
17
|
+
import { buildLocalPackageContext } from './local-package-run.js';
|
|
18
|
+
import { createPackageAppEntrySource, createPackageLocalRuntimeModuleSource, runSecretEnvVar, runSecretHeader, } from './package-local-runtime-source.js';
|
|
19
|
+
import { resolvePackagePath } from './package-manifest.js';
|
|
20
|
+
import { redact } from './redact.js';
|
|
21
|
+
import { ensureWorkerdBinary } from './workerd-binary.js';
|
|
22
|
+
const workerdStartTimeoutMs = 30_000;
|
|
23
|
+
export async function startPackageAppDev(options) {
|
|
24
|
+
if (!options.manifest.app?.entry) {
|
|
25
|
+
throw new Error('This package has no kody.app.entry. Add `"kody": { "app": { "entry": "./app/router.ts" } }` or use `kody dev job|webhook|emit|check`.');
|
|
26
|
+
}
|
|
27
|
+
assertTokenSafeApiUrl(options.apiUrl);
|
|
28
|
+
const host = options.host ?? '127.0.0.1';
|
|
29
|
+
const appBasePath = normalizeBasePath(options.appBasePath ?? '');
|
|
30
|
+
const runSecret = randomBytes(32).toString('hex');
|
|
31
|
+
const workDir = await mkdtemp(join(tmpdir(), 'kody-dev-'));
|
|
32
|
+
const workerdPath = options.workerdPath ??
|
|
33
|
+
(await ensureWorkerdBinary({
|
|
34
|
+
onDownload: (url) => options.onStatus?.(`Downloading workerd from ${url}…`),
|
|
35
|
+
}));
|
|
36
|
+
const client = {
|
|
37
|
+
apiUrl: options.apiUrl,
|
|
38
|
+
token: options.token,
|
|
39
|
+
fetchFn: options.fetchFn,
|
|
40
|
+
};
|
|
41
|
+
let bridge;
|
|
42
|
+
let child;
|
|
43
|
+
let workerdPort;
|
|
44
|
+
let reloadTimer;
|
|
45
|
+
let closed = false;
|
|
46
|
+
const proxy = createServer((req, res) => {
|
|
47
|
+
void proxyRequest(req, res);
|
|
48
|
+
});
|
|
49
|
+
await new Promise((resolve, reject) => {
|
|
50
|
+
proxy.once('error', reject);
|
|
51
|
+
proxy.listen(options.port ?? 0, host, () => resolve());
|
|
52
|
+
});
|
|
53
|
+
const address = proxy.address();
|
|
54
|
+
const hostedUrl = `http://${host}:${address.port}`;
|
|
55
|
+
const packageContext = buildLocalPackageContext({
|
|
56
|
+
kodyId: options.manifest.kodyId,
|
|
57
|
+
packageId: `local:${options.manifest.kodyId}`,
|
|
58
|
+
hostedUrl,
|
|
59
|
+
appBasePath,
|
|
60
|
+
});
|
|
61
|
+
bridge = await startBridge({
|
|
62
|
+
runSecret,
|
|
63
|
+
forward: (call, signal) => callCapabilityProxy({
|
|
64
|
+
...client,
|
|
65
|
+
...call,
|
|
66
|
+
signal,
|
|
67
|
+
}),
|
|
68
|
+
});
|
|
69
|
+
const entryPath = resolvePackagePath(options.manifest, options.manifest.app.entry);
|
|
70
|
+
async function rebuildAndServe() {
|
|
71
|
+
options.onStatus?.(`Bundling ${entryPath}…`);
|
|
72
|
+
const code = await bundleLocalUserModule(entryPath);
|
|
73
|
+
await writeWorkerFiles({
|
|
74
|
+
workDir,
|
|
75
|
+
code,
|
|
76
|
+
packageContext,
|
|
77
|
+
mockStorage: options.target === 'mock',
|
|
78
|
+
bridgePort: bridge.port,
|
|
79
|
+
allowPrivateNetwork: options.allowPrivateNetwork,
|
|
80
|
+
});
|
|
81
|
+
await restartWorkerd();
|
|
82
|
+
}
|
|
83
|
+
async function restartWorkerd() {
|
|
84
|
+
if (child) {
|
|
85
|
+
child.kill('SIGKILL');
|
|
86
|
+
child = undefined;
|
|
87
|
+
workerdPort = undefined;
|
|
88
|
+
}
|
|
89
|
+
const env = { ...process.env, [runSecretEnvVar]: runSecret };
|
|
90
|
+
delete env[apiTokenEnvVar];
|
|
91
|
+
const configPath = join(workDir, 'config.capnp');
|
|
92
|
+
child = spawn(workerdPath, ['serve', configPath, '--control-fd=3'], {
|
|
93
|
+
cwd: workDir,
|
|
94
|
+
env,
|
|
95
|
+
stdio: ['ignore', 'pipe', 'pipe', 'pipe'],
|
|
96
|
+
});
|
|
97
|
+
const workerd = watchWorkerd(child);
|
|
98
|
+
const started = await workerd.listening;
|
|
99
|
+
if ('exitDetail' in started) {
|
|
100
|
+
throw new Error(`workerd failed to start${started.exitDetail}`);
|
|
101
|
+
}
|
|
102
|
+
workerdPort = started.port;
|
|
103
|
+
options.onStatus?.(`App ready at ${hostedUrl}${appBasePath || '/'}`);
|
|
104
|
+
}
|
|
105
|
+
async function proxyRequest(req, res) {
|
|
106
|
+
try {
|
|
107
|
+
if (!workerdPort) {
|
|
108
|
+
res.writeHead(503, { 'content-type': 'text/plain' });
|
|
109
|
+
res.end('Dev server is still starting.');
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const incomingUrl = new URL(req.url ?? '/', hostedUrl);
|
|
113
|
+
const restPath = stripMount(incomingUrl.pathname, appBasePath);
|
|
114
|
+
const forwardUrl = new URL(restPath + incomingUrl.search, `http://127.0.0.1:${workerdPort}`);
|
|
115
|
+
const chunks = [];
|
|
116
|
+
for await (const chunk of req) {
|
|
117
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
118
|
+
}
|
|
119
|
+
const body = Buffer.concat(chunks);
|
|
120
|
+
const headers = {
|
|
121
|
+
...req.headers,
|
|
122
|
+
host: `127.0.0.1:${workerdPort}`,
|
|
123
|
+
[runSecretHeader]: runSecret,
|
|
124
|
+
};
|
|
125
|
+
delete headers['content-length'];
|
|
126
|
+
await new Promise((resolve, reject) => {
|
|
127
|
+
const upstream = httpRequest(forwardUrl, { method: req.method, headers }, (upstreamRes) => {
|
|
128
|
+
res.writeHead(upstreamRes.statusCode ?? 502, upstreamRes.headers);
|
|
129
|
+
upstreamRes.pipe(res);
|
|
130
|
+
upstreamRes.on('end', () => resolve());
|
|
131
|
+
upstreamRes.on('error', reject);
|
|
132
|
+
});
|
|
133
|
+
upstream.on('error', reject);
|
|
134
|
+
if (body.length > 0)
|
|
135
|
+
upstream.write(body);
|
|
136
|
+
upstream.end();
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
141
|
+
options.onError?.(message);
|
|
142
|
+
if (!res.headersSent) {
|
|
143
|
+
res.writeHead(502, { 'content-type': 'text/plain' });
|
|
144
|
+
res.end(`Dev proxy error: ${message}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
await rebuildAndServe();
|
|
149
|
+
const watcher = options.watch === false
|
|
150
|
+
? null
|
|
151
|
+
: watch(options.manifest.root, { recursive: true }, (_event, filename) => {
|
|
152
|
+
if (closed)
|
|
153
|
+
return;
|
|
154
|
+
if (filename && shouldIgnoreWatchPath(filename))
|
|
155
|
+
return;
|
|
156
|
+
clearTimeout(reloadTimer);
|
|
157
|
+
reloadTimer = setTimeout(() => {
|
|
158
|
+
void rebuildAndServe().catch((error) => {
|
|
159
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
160
|
+
options.onError?.(message);
|
|
161
|
+
});
|
|
162
|
+
}, 120);
|
|
163
|
+
});
|
|
164
|
+
const fetchPath = async (path, init = {}) => {
|
|
165
|
+
const url = new URL(joinUrlPath(appBasePath, path), hostedUrl);
|
|
166
|
+
const response = await fetch(url, {
|
|
167
|
+
method: init.method ?? 'GET',
|
|
168
|
+
headers: init.headers,
|
|
169
|
+
body: init.body,
|
|
170
|
+
});
|
|
171
|
+
const body = await response.text();
|
|
172
|
+
const headers = {};
|
|
173
|
+
response.headers.forEach((value, key) => {
|
|
174
|
+
headers[key] = value;
|
|
175
|
+
});
|
|
176
|
+
return { status: response.status, headers, body };
|
|
177
|
+
};
|
|
178
|
+
return {
|
|
179
|
+
url: hostedUrl,
|
|
180
|
+
port: address.port,
|
|
181
|
+
hostedUrl,
|
|
182
|
+
appBasePath,
|
|
183
|
+
packageContext,
|
|
184
|
+
fetchPath,
|
|
185
|
+
close: async () => {
|
|
186
|
+
closed = true;
|
|
187
|
+
clearTimeout(reloadTimer);
|
|
188
|
+
watcher?.close();
|
|
189
|
+
const stopping = child;
|
|
190
|
+
if (stopping) {
|
|
191
|
+
const exited = new Promise((resolve) => {
|
|
192
|
+
stopping.once('exit', () => resolve());
|
|
193
|
+
stopping.once('error', () => resolve());
|
|
194
|
+
});
|
|
195
|
+
stopping.kill('SIGKILL');
|
|
196
|
+
await Promise.race([exited, new Promise((r) => setTimeout(r, 1000))]);
|
|
197
|
+
child = undefined;
|
|
198
|
+
}
|
|
199
|
+
await bridge?.close();
|
|
200
|
+
await new Promise((resolve) => {
|
|
201
|
+
proxy.close(() => resolve());
|
|
202
|
+
});
|
|
203
|
+
await rm(workDir, { recursive: true, force: true });
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
async function writeWorkerFiles(input) {
|
|
208
|
+
await mkdir(input.workDir, { recursive: true });
|
|
209
|
+
const files = { entry: 'entry.js', user: 'main.js', runtime: 'runtime.js' };
|
|
210
|
+
await writeFile(join(input.workDir, files.entry), createPackageAppEntrySource());
|
|
211
|
+
await writeFile(join(input.workDir, files.user), input.code);
|
|
212
|
+
await writeFile(join(input.workDir, files.runtime), createPackageLocalRuntimeModuleSource({
|
|
213
|
+
packageContext: input.packageContext,
|
|
214
|
+
mockStorage: input.mockStorage,
|
|
215
|
+
}));
|
|
216
|
+
await writeFile(join(input.workDir, 'config.capnp'), createWorkerdConfig({
|
|
217
|
+
bridgePort: input.bridgePort,
|
|
218
|
+
files,
|
|
219
|
+
allowPrivateNetwork: input.allowPrivateNetwork,
|
|
220
|
+
}));
|
|
221
|
+
}
|
|
222
|
+
function normalizeBasePath(value) {
|
|
223
|
+
const trimmed = value.trim();
|
|
224
|
+
if (!trimmed || trimmed === '/')
|
|
225
|
+
return '';
|
|
226
|
+
const withSlash = trimmed.startsWith('/') ? trimmed : `/${trimmed}`;
|
|
227
|
+
return withSlash.replace(/\/+$/, '');
|
|
228
|
+
}
|
|
229
|
+
function stripMount(pathname, appBasePath) {
|
|
230
|
+
if (!appBasePath)
|
|
231
|
+
return pathname || '/';
|
|
232
|
+
if (pathname === appBasePath)
|
|
233
|
+
return '/';
|
|
234
|
+
if (pathname.startsWith(`${appBasePath}/`)) {
|
|
235
|
+
return pathname.slice(appBasePath.length) || '/';
|
|
236
|
+
}
|
|
237
|
+
return pathname || '/';
|
|
238
|
+
}
|
|
239
|
+
function joinUrlPath(base, path) {
|
|
240
|
+
const rest = path.startsWith('/') ? path : `/${path}`;
|
|
241
|
+
if (!base)
|
|
242
|
+
return rest;
|
|
243
|
+
return `${base}${rest === '/' ? '' : rest}` || base;
|
|
244
|
+
}
|
|
245
|
+
function shouldIgnoreWatchPath(filename) {
|
|
246
|
+
return (filename.includes('node_modules') ||
|
|
247
|
+
filename.includes('.git') ||
|
|
248
|
+
filename.endsWith('.map') ||
|
|
249
|
+
filename.startsWith('.'));
|
|
250
|
+
}
|
|
251
|
+
function watchWorkerd(child) {
|
|
252
|
+
let stderrText = '';
|
|
253
|
+
child.stderr?.on('data', (chunk) => {
|
|
254
|
+
stderrText += chunk.toString('utf8');
|
|
255
|
+
});
|
|
256
|
+
child.stdout?.resume();
|
|
257
|
+
const stderr = () => {
|
|
258
|
+
const trimmed = redact(stderrText.trim());
|
|
259
|
+
return trimmed ? `\n${trimmed}` : '';
|
|
260
|
+
};
|
|
261
|
+
const exited = new Promise((resolve) => {
|
|
262
|
+
child.once('exit', (code, signal) => {
|
|
263
|
+
resolve(` (workerd exit ${signal ?? code})${stderr()}`);
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
const listening = new Promise((resolve, reject) => {
|
|
267
|
+
const control = child.stdio[3];
|
|
268
|
+
let buffered = '';
|
|
269
|
+
const timer = setTimeout(() => {
|
|
270
|
+
reject(new Error(`workerd did not start within ${workerdStartTimeoutMs / 1000}s.${stderr()}`));
|
|
271
|
+
}, workerdStartTimeoutMs);
|
|
272
|
+
control?.on('data', (chunk) => {
|
|
273
|
+
buffered += chunk.toString('utf8');
|
|
274
|
+
for (const line of buffered.split('\n')) {
|
|
275
|
+
const port = parseListenPort(line);
|
|
276
|
+
if (port !== null) {
|
|
277
|
+
clearTimeout(timer);
|
|
278
|
+
resolve({ port });
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
child.once('error', (error) => {
|
|
283
|
+
clearTimeout(timer);
|
|
284
|
+
reject(new Error(`Could not start workerd: ${error.message}`));
|
|
285
|
+
});
|
|
286
|
+
void exited.then((exitDetail) => {
|
|
287
|
+
clearTimeout(timer);
|
|
288
|
+
resolve({ exitDetail });
|
|
289
|
+
});
|
|
290
|
+
});
|
|
291
|
+
return { listening, exited, stderr };
|
|
292
|
+
}
|
|
293
|
+
function parseListenPort(line) {
|
|
294
|
+
if (!line.trim())
|
|
295
|
+
return null;
|
|
296
|
+
try {
|
|
297
|
+
const event = JSON.parse(line);
|
|
298
|
+
return event.event === 'listen' && event.socket === 'http' && typeof event.port === 'number'
|
|
299
|
+
? event.port
|
|
300
|
+
: null;
|
|
301
|
+
}
|
|
302
|
+
catch {
|
|
303
|
+
return null;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
async function startBridge(input) {
|
|
307
|
+
const inFlight = new AbortController();
|
|
308
|
+
const server = createServer(async (request, response) => {
|
|
309
|
+
const reply = (status, body) => {
|
|
310
|
+
response.writeHead(status, { 'content-type': 'application/json' });
|
|
311
|
+
response.end(JSON.stringify(body));
|
|
312
|
+
};
|
|
313
|
+
if (request.method !== 'POST' ||
|
|
314
|
+
request.url !== '/call' ||
|
|
315
|
+
request.headers[runSecretHeader] !== input.runSecret) {
|
|
316
|
+
reply(403, { error: 'Forbidden' });
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
try {
|
|
320
|
+
const parsed = JSON.parse(await readBody(request));
|
|
321
|
+
if (!Array.isArray(parsed.path) ||
|
|
322
|
+
parsed.path.length === 0 ||
|
|
323
|
+
!parsed.path.every((segment) => typeof segment === 'string')) {
|
|
324
|
+
throw new Error('Invalid kody:runtime call path.');
|
|
325
|
+
}
|
|
326
|
+
const result = await input.forward({
|
|
327
|
+
path: parsed.path,
|
|
328
|
+
args: Array.isArray(parsed.args) ? parsed.args : [],
|
|
329
|
+
}, inFlight.signal);
|
|
330
|
+
reply(200, { result });
|
|
331
|
+
}
|
|
332
|
+
catch (error) {
|
|
333
|
+
reply(200, { error: redact(error instanceof Error ? error.message : String(error)) });
|
|
334
|
+
}
|
|
335
|
+
});
|
|
336
|
+
await new Promise((resolve, reject) => {
|
|
337
|
+
server.once('error', reject);
|
|
338
|
+
server.listen(0, '127.0.0.1', () => resolve());
|
|
339
|
+
});
|
|
340
|
+
return {
|
|
341
|
+
port: server.address().port,
|
|
342
|
+
close: () => new Promise((resolve) => {
|
|
343
|
+
inFlight.abort();
|
|
344
|
+
server.closeAllConnections();
|
|
345
|
+
server.close(() => resolve());
|
|
346
|
+
}),
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
async function readBody(stream) {
|
|
350
|
+
const chunks = [];
|
|
351
|
+
for await (const chunk of stream) {
|
|
352
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
353
|
+
}
|
|
354
|
+
return Buffer.concat(chunks).toString('utf8');
|
|
355
|
+
}
|
|
356
|
+
//# sourceMappingURL=package-app-dev.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-app-dev.js","sourceRoot":"","sources":["../src/package-app-dev.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `kody:runtime` for unpublished package runs (`kody dev`, local export/job/
|
|
3
|
+
* webhook/subscription). Same CapabilityProxy bridge as local-execute, plus a
|
|
4
|
+
* real `packageContext` and mock-backed `packageStorage()` hops.
|
|
5
|
+
*/
|
|
6
|
+
import { localExecuteCompatibilityDate, localExecuteCompatibilityFlags, localWorkerModuleNames, runSecretEnvVar, runSecretHeader } from './local-runtime-source.js';
|
|
7
|
+
export type PackageLocalContext = {
|
|
8
|
+
packageId: string;
|
|
9
|
+
kodyId: string;
|
|
10
|
+
sourceId?: string;
|
|
11
|
+
publishedCommit?: string | null;
|
|
12
|
+
appBasePath: string;
|
|
13
|
+
hostedUrl: string;
|
|
14
|
+
assetBasePath: string;
|
|
15
|
+
clientModuleUrl: string | null;
|
|
16
|
+
};
|
|
17
|
+
export { localExecuteCompatibilityDate, localExecuteCompatibilityFlags, localWorkerModuleNames, runSecretEnvVar, runSecretHeader, };
|
|
18
|
+
/**
|
|
19
|
+
* Runtime module for package-local workerd. `packageStorage()` hops through the
|
|
20
|
+
* bridge to mock `__mockPackageStorage*` (or refuses clearly on prod until the
|
|
21
|
+
* package is published).
|
|
22
|
+
*/
|
|
23
|
+
export declare function createPackageLocalRuntimeModuleSource(input: {
|
|
24
|
+
packageContext: PackageLocalContext;
|
|
25
|
+
/** When true, packageStorage uses mock capability hops. */
|
|
26
|
+
mockStorage: boolean;
|
|
27
|
+
}): string;
|
|
28
|
+
/** Execute-style entry: default export function(params). */
|
|
29
|
+
export declare function createPackageModuleEntrySource(): string;
|
|
30
|
+
/**
|
|
31
|
+
* App fetch entry: wraps user `kody.app.entry` so the host always sees a Worker
|
|
32
|
+
* `{ fetch }` export. Mount is already stripped by the Node proxy before this
|
|
33
|
+
* request reaches workerd (pathname is the rest path).
|
|
34
|
+
*/
|
|
35
|
+
export declare function createPackageAppEntrySource(): string;
|