@fold-run/cli 0.1.3 → 0.2.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/dist/commands/completions.d.ts +1 -0
- package/dist/commands/completions.js +195 -0
- package/dist/commands/completions.js.map +1 -0
- package/dist/commands/config.d.ts +4 -0
- package/dist/commands/config.js +75 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/deploy.d.ts +1 -0
- package/dist/commands/deploy.js +35 -2
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts +1 -0
- package/dist/commands/dev.js +41 -21
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.js +138 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/domains.d.ts +11 -0
- package/dist/commands/domains.js +111 -0
- package/dist/commands/domains.js.map +1 -0
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.js +104 -6
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/invoke.d.ts +9 -0
- package/dist/commands/invoke.js +89 -0
- package/dist/commands/invoke.js.map +1 -0
- package/dist/commands/link.d.ts +4 -0
- package/dist/commands/link.js +77 -0
- package/dist/commands/link.js.map +1 -0
- package/dist/commands/logs.js +31 -1
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/whoami.d.ts +1 -0
- package/dist/commands/whoami.js +39 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/index.js +72 -29
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +1 -0
- package/dist/lib/api.js +30 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/bundler.js +124 -18
- package/dist/lib/bundler.js.map +1 -1
- package/dist/lib/colorize.d.ts +5 -0
- package/dist/lib/colorize.js +28 -0
- package/dist/lib/colorize.js.map +1 -0
- package/dist/lib/prompt.d.ts +22 -0
- package/dist/lib/prompt.js +146 -0
- package/dist/lib/prompt.js.map +1 -1
- package/package.json +10 -11
package/dist/index.js
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { Command } from 'commander';
|
|
4
|
+
import { completionsCommand } from './commands/completions.js';
|
|
5
|
+
import { configGetCommand, configListCommand, configPathCommand, configSetCommand } from './commands/config.js';
|
|
4
6
|
import { createToolCommand, toolsListCommand } from './commands/create-tool.js';
|
|
5
7
|
import { deleteCommand } from './commands/delete.js';
|
|
6
8
|
import { deployCommand } from './commands/deploy.js';
|
|
7
9
|
import { devCommand } from './commands/dev.js';
|
|
10
|
+
import { doctorCommand } from './commands/doctor.js';
|
|
11
|
+
import { domainsAddCommand, domainsListCommand, domainsRemoveCommand, domainsVerifyCommand, } from './commands/domains.js';
|
|
8
12
|
import { envDeleteCommand, envListCommand, envSetCommand } from './commands/env-vars.js';
|
|
9
13
|
import { functionsCommand } from './commands/functions.js';
|
|
10
14
|
import { initCommand } from './commands/init.js';
|
|
15
|
+
import { invokeCommand } from './commands/invoke.js';
|
|
16
|
+
import { linkCommand } from './commands/link.js';
|
|
11
17
|
import { loginCommand } from './commands/login.js';
|
|
12
18
|
import { logsCommand } from './commands/logs.js';
|
|
13
19
|
import { openCommand } from './commands/open.js';
|
|
@@ -19,7 +25,8 @@ import { tailCommand } from './commands/tail.js';
|
|
|
19
25
|
import { templatesDeployCommand, templatesGetCommand, templatesListCommand } from './commands/templates.js';
|
|
20
26
|
import { tenantClearCommand, tenantGetCommand, tenantListCommand, tenantSetCommand } from './commands/tenant.js';
|
|
21
27
|
import { webhooksCreateCommand, webhooksDeleteCommand, webhooksListCommand } from './commands/webhooks.js';
|
|
22
|
-
import {
|
|
28
|
+
import { whoamiCommand } from './commands/whoami.js';
|
|
29
|
+
import { deleteConfig } from './lib/config.js';
|
|
23
30
|
import { setJsonMode } from './lib/output.js';
|
|
24
31
|
const require = createRequire(import.meta.url);
|
|
25
32
|
const { version } = require('../package.json');
|
|
@@ -41,20 +48,30 @@ program
|
|
|
41
48
|
.addHelpText('beforeAll', `\n\x1b[1mfold.run\x1b[0m v${version}\n`)
|
|
42
49
|
.addHelpText('after', `
|
|
43
50
|
Examples:
|
|
44
|
-
$ fold init my-function Scaffold a new project
|
|
51
|
+
$ fold init my-function Scaffold a new project (interactive)
|
|
52
|
+
$ fold init my-fn --yes Scaffold with defaults (non-interactive)
|
|
53
|
+
$ fold link Link local dir to deployed function
|
|
45
54
|
$ fold deploy Deploy using fold.json
|
|
46
55
|
$ fold deploy function.ts Deploy a specific file
|
|
56
|
+
$ fold deploy --dry-run Preview deploy without sending
|
|
57
|
+
$ fold invoke my-fn -d '{}' Invoke a function directly
|
|
47
58
|
$ fold dev Start local dev server (auto-reloads)
|
|
59
|
+
$ fold dev --mode production Use .env.production vars
|
|
60
|
+
$ fold domains add example.com Add a custom domain
|
|
48
61
|
$ fold open my-function Open function URL in browser
|
|
49
62
|
$ fold tail -f fn-1 Stream activations in real-time
|
|
50
|
-
$ fold logs -F
|
|
63
|
+
$ fold logs -F -v Follow logs with colored JSON
|
|
51
64
|
$ fold functions --json List functions as JSON
|
|
52
|
-
$ fold secrets set API_KEY Set a secret (masked input)
|
|
65
|
+
$ fold secrets set API_KEY Set a secret (masked input)
|
|
66
|
+
$ fold config set apiUrl ... Change API URL
|
|
67
|
+
$ fold doctor Diagnose common issues
|
|
68
|
+
$ fold completions zsh Generate shell completions`);
|
|
53
69
|
// ── Getting started ──────────────────────────────────────────────
|
|
54
70
|
program
|
|
55
71
|
.command('init [name]')
|
|
56
|
-
.description('Scaffold a new fold project')
|
|
57
|
-
.
|
|
72
|
+
.description('Scaffold a new fold project (interactive)')
|
|
73
|
+
.option('-y, --yes', 'Skip prompts and use defaults')
|
|
74
|
+
.action((name, opts) => initCommand({ name, yes: opts.yes }));
|
|
58
75
|
program
|
|
59
76
|
.command('login')
|
|
60
77
|
.description('Authenticate with the fold.run API')
|
|
@@ -71,34 +88,13 @@ program
|
|
|
71
88
|
console.log('No credentials found.');
|
|
72
89
|
}
|
|
73
90
|
});
|
|
74
|
-
program
|
|
75
|
-
.command('whoami')
|
|
76
|
-
.description('Show current login info')
|
|
77
|
-
.action(() => {
|
|
78
|
-
const config = loadConfig();
|
|
79
|
-
if (!config) {
|
|
80
|
-
console.log('Not logged in. Run `fold login` first.');
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
console.log(`API: ${config.apiUrl}`);
|
|
84
|
-
if (config.tenantId)
|
|
85
|
-
console.log(`Tenant: ${config.tenantId}`);
|
|
86
|
-
try {
|
|
87
|
-
const payload = JSON.parse(Buffer.from(config.token.split('.')[1], 'base64url').toString());
|
|
88
|
-
if (payload.role)
|
|
89
|
-
console.log(`Role: ${payload.role}`);
|
|
90
|
-
if (payload.tenant_id)
|
|
91
|
-
console.log(`JWT tenant: ${payload.tenant_id}`);
|
|
92
|
-
}
|
|
93
|
-
catch {
|
|
94
|
-
console.log('Token: (not a JWT)');
|
|
95
|
-
}
|
|
96
|
-
});
|
|
91
|
+
program.command('whoami').description('Show current login info').action(whoamiCommand);
|
|
97
92
|
program
|
|
98
93
|
.command('status')
|
|
99
94
|
.description('Show current config and deployed functions')
|
|
100
95
|
.option('-t, --tenant <id>', 'Tenant ID')
|
|
101
96
|
.action(statusCommand);
|
|
97
|
+
program.command('doctor').description('Diagnose common issues (auth, API, esbuild, manifest)').action(doctorCommand);
|
|
102
98
|
// ── Tenant ──────────────────────────────────────────────────────
|
|
103
99
|
const tenant = program.command('tenant').description('Manage default tenant');
|
|
104
100
|
tenant.command('set <tenant-id>').description('Set the default tenant for all commands').action(tenantSetCommand);
|
|
@@ -106,19 +102,38 @@ tenant.command('get').description('Show the current default tenant').action(tena
|
|
|
106
102
|
tenant.command('list').description('List all accessible tenants').action(tenantListCommand);
|
|
107
103
|
tenant.command('clear').description('Clear the default tenant').action(tenantClearCommand);
|
|
108
104
|
// ── Deploy & manage ──────────────────────────────────────────────
|
|
105
|
+
program
|
|
106
|
+
.command('link')
|
|
107
|
+
.description('Link local directory to an existing deployed function')
|
|
108
|
+
.option('-t, --tenant <id>', 'Tenant ID')
|
|
109
|
+
.option('-y, --yes', 'Overwrite existing fold.json without confirming')
|
|
110
|
+
.action(linkCommand);
|
|
109
111
|
program
|
|
110
112
|
.command('deploy [file]')
|
|
111
113
|
.description('Deploy a function (reads fold.json if no file given)')
|
|
112
114
|
.option('-n, --name <name>', 'Function name (defaults to filename)')
|
|
113
115
|
.option('-t, --tenant <id>', 'Tenant ID')
|
|
114
116
|
.option('--no-bundle', 'Skip esbuild bundling for .ts files')
|
|
117
|
+
.option('--dry-run', 'Bundle and validate without deploying')
|
|
115
118
|
.action(deployCommand);
|
|
119
|
+
program
|
|
120
|
+
.command('invoke <function>')
|
|
121
|
+
.description('Invoke a deployed function directly')
|
|
122
|
+
.option('-d, --data <json>', 'Request body (JSON string)')
|
|
123
|
+
.option('-f, --file <path>', 'Read request body from file')
|
|
124
|
+
.option('-X, --method <method>', 'HTTP method (default: GET, or POST if body given)')
|
|
125
|
+
.option('-p, --path <path>', 'Request path (default: /)')
|
|
126
|
+
.option('-H, --header <key:value>', 'Custom header (can be repeated)', (v, a) => [...a, v], [])
|
|
127
|
+
.option('-s, --stream', 'Print streaming response body as-is')
|
|
128
|
+
.option('-t, --tenant <id>', 'Tenant ID')
|
|
129
|
+
.action(invokeCommand);
|
|
116
130
|
program
|
|
117
131
|
.command('dev [file]')
|
|
118
132
|
.description('Start a local dev server with auto-reload')
|
|
119
133
|
.option('-p, --port <port>', 'Port to listen on', '8000')
|
|
120
134
|
.option('--no-bundle', 'Skip esbuild bundling for .ts files')
|
|
121
135
|
.option('--no-watch', 'Disable file watching and auto-reload')
|
|
136
|
+
.option('--mode <mode>', 'Environment mode for .env file loading (default: development)')
|
|
122
137
|
.option('-e, --env <KEY=VALUE>', 'Set an env var (can be repeated; also auto-loads .env)', (v, a) => [...a, v], [])
|
|
123
138
|
.action(devCommand);
|
|
124
139
|
program
|
|
@@ -157,6 +172,11 @@ program
|
|
|
157
172
|
.option('-v, --verbose', 'Show request details and console logs')
|
|
158
173
|
.action(logsCommand);
|
|
159
174
|
// ── Configuration ────────────────────────────────────────────────
|
|
175
|
+
const configCmd = program.command('config').description('View and update CLI configuration');
|
|
176
|
+
configCmd.command('get <key>').description('Get a config value (apiUrl, tenantId)').action(configGetCommand);
|
|
177
|
+
configCmd.command('set <key> <value>').description('Set a config value').action(configSetCommand);
|
|
178
|
+
configCmd.command('list').description('List all config values').action(configListCommand);
|
|
179
|
+
configCmd.command('path').description('Print config file path').action(configPathCommand);
|
|
160
180
|
const secrets = program.command('secrets').description('Manage tenant secrets');
|
|
161
181
|
secrets
|
|
162
182
|
.command('set <name>')
|
|
@@ -192,6 +212,24 @@ env
|
|
|
192
212
|
.option('-y, --yes', 'Skip confirmation prompt')
|
|
193
213
|
.action(envDeleteCommand);
|
|
194
214
|
// ── Integrations ─────────────────────────────────────────────────
|
|
215
|
+
const domains = program.command('domains').description('Manage custom domains');
|
|
216
|
+
domains
|
|
217
|
+
.command('list')
|
|
218
|
+
.description('List custom domains')
|
|
219
|
+
.option('-t, --tenant <id>', 'Tenant ID')
|
|
220
|
+
.action(domainsListCommand);
|
|
221
|
+
domains
|
|
222
|
+
.command('add <hostname>')
|
|
223
|
+
.description('Add a custom domain')
|
|
224
|
+
.option('-t, --tenant <id>', 'Tenant ID')
|
|
225
|
+
.option('-f, --function-id <id>', 'Route to specific function')
|
|
226
|
+
.action(domainsAddCommand);
|
|
227
|
+
domains
|
|
228
|
+
.command('remove <domain-id>')
|
|
229
|
+
.description('Remove a custom domain')
|
|
230
|
+
.option('-y, --yes', 'Skip confirmation prompt')
|
|
231
|
+
.action(domainsRemoveCommand);
|
|
232
|
+
domains.command('verify <domain-id>').description('Verify DNS ownership of a domain').action(domainsVerifyCommand);
|
|
195
233
|
const webhooks = program.command('webhooks').description('Manage webhook ingress endpoints');
|
|
196
234
|
webhooks
|
|
197
235
|
.command('list')
|
|
@@ -258,6 +296,11 @@ templates
|
|
|
258
296
|
.option('-n, --name <name>', 'Function name (defaults to template name)')
|
|
259
297
|
.option('-t, --tenant <id>', 'Tenant ID')
|
|
260
298
|
.action(templatesDeployCommand);
|
|
299
|
+
// ── Utilities ───────────────────────────────────────────────────
|
|
300
|
+
program
|
|
301
|
+
.command('completions <shell>')
|
|
302
|
+
.description('Generate shell completions (bash, zsh, fish)')
|
|
303
|
+
.action(completionsCommand);
|
|
261
304
|
// Start version check early (non-blocking)
|
|
262
305
|
import { checkForUpdate, printUpdateNotice } from './lib/version-check.js';
|
|
263
306
|
const updateCheck = checkForUpdate();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAChH,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC5G,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACjH,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC3G,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAEtE,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,8CAA8C,CAAC;KAC3D,OAAO,CAAC,OAAO,CAAC;KAChB,MAAM,CAAC,QAAQ,EAAE,wBAAwB,CAAC;KAC1C,IAAI,CAAC,WAAW,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,EAAE;IACjD,MAAM,IAAI,GAAG,aAAa,CAAC,eAAe,EAAE,EAAE,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC;IACvE,IAAI,IAAI,CAAC,IAAI;QAAE,WAAW,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC;KACD,aAAa,CAAC;IACb,eAAe,EAAE,KAAK;IACtB,cAAc,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CAC7E,CAAC;KACD,WAAW,CAAC,WAAW,EAAE,6BAA6B,OAAO,IAAI,CAAC;KAClE,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;4DAmBwD,CACzD,CAAC;AAEJ,oEAAoE;AAEpE,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC;KACpD,MAAM,CAAC,CAAC,IAAwB,EAAE,IAAuB,EAAE,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAEvG,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,uBAAuB,EAAE,wCAAwC,CAAC;KACzE,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,GAAG,EAAE;IACX,IAAI,YAAY,EAAE,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACvC,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEvF,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,uDAAuD,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AAErH,mEAAmE;AAEnE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;AAE9E,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,yCAAyC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAElH,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE9F,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE5F,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAE3F,oEAAoE;AAEpE,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,WAAW,EAAE,iDAAiD,CAAC;KACtE,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,sDAAsD,CAAC;KACnE,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC;KACnE,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,aAAa,EAAE,qCAAqC,CAAC;KAC5D,MAAM,CAAC,WAAW,EAAE,uCAAuC,CAAC;KAC5D,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,qCAAqC,CAAC;KAClD,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;KACzD,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,CAAC;KAC1D,MAAM,CAAC,uBAAuB,EAAE,mDAAmD,CAAC;KACpF,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;KACxD,MAAM,CAAC,0BAA0B,EAAE,iCAAiC,EAAE,CAAC,CAAC,EAAE,CAAW,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAc,CAAC;KACpH,MAAM,CAAC,cAAc,EAAE,qCAAqC,CAAC;KAC7D,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC;KACxD,MAAM,CAAC,aAAa,EAAE,qCAAqC,CAAC;KAC5D,MAAM,CAAC,YAAY,EAAE,uCAAuC,CAAC;KAC7D,MAAM,CAAC,eAAe,EAAE,+DAA+D,CAAC;KACxF,MAAM,CACL,uBAAuB,EACvB,wDAAwD,EACxD,CAAC,CAAC,EAAE,CAAW,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAC7B,EAAc,CACf;KACA,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE5B,OAAO;KACJ,OAAO,CAAC,sBAAsB,CAAC;KAC/B,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,kCAAkC,CAAC;KAC3C,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,eAAe,CAAC,CAAC;AAE3B,OAAO;KACJ,OAAO,CAAC,iBAAiB,CAAC;KAC1B,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,wBAAwB,EAAE,uBAAuB,CAAC;KACzD,MAAM,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;KAClD,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,wBAAwB,EAAE,uBAAuB,CAAC;KACzD,MAAM,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;KAClD,MAAM,CAAC,cAAc,EAAE,2BAA2B,CAAC;KACnD,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;KACxC,MAAM,CAAC,eAAe,EAAE,uCAAuC,CAAC;KAChE,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,oEAAoE;AAEpE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC;AAE7F,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,uCAAuC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE7G,SAAS,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAElG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE1F,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE1F,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;AAEhF,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,0CAA0C,CAAC;KACvD,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE7B,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAE9B,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAEhC,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,uCAAuC,CAAC,CAAC;AAExF,GAAG;KACA,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,cAAc,CAAC,wBAAwB,EAAE,aAAa,CAAC;KACvD,MAAM,CAAC,qBAAqB,EAAE,sDAAsD,CAAC;KACrF,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,GAAG;KACA,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4BAA4B,CAAC;KACzC,cAAc,CAAC,wBAAwB,EAAE,aAAa,CAAC;KACvD,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,GAAG;KACA,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,cAAc,CAAC,wBAAwB,EAAE,aAAa,CAAC;KACvD,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE5B,oEAAoE;AAEpE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;AAEhF,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,qBAAqB,CAAC;KAClC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAE9B,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,qBAAqB,CAAC;KAClC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,wBAAwB,EAAE,4BAA4B,CAAC;KAC9D,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE7B,OAAO;KACJ,OAAO,CAAC,oBAAoB,CAAC;KAC7B,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAEhC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,WAAW,CAAC,kCAAkC,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAEnH,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,kCAAkC,CAAC,CAAC;AAE7F,QAAQ;KACL,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAE/B,QAAQ;KACL,OAAO,CAAC,6BAA6B,CAAC;KACtC,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,uBAAuB,EAAE,kDAAkD,CAAC;KACnF,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAEjC,QAAQ;KACL,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAEjC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;AAExF,SAAS;KACN,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAEhC,SAAS;KACN,OAAO,CAAC,6BAA6B,CAAC;KACtC,WAAW,CAAC,iDAAiD,CAAC;KAC9D,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAElC,SAAS;KACN,OAAO,CAAC,sBAAsB,CAAC;KAC/B,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,UAAU,EAAE,qBAAqB,CAAC;KACzC,MAAM,CAAC,WAAW,EAAE,sBAAsB,CAAC;KAC3C,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAElC,SAAS;KACN,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC;KAC/C,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAElC,oEAAoE;AAEpE,OAAO;KACJ,OAAO,CAAC,kCAAkC,CAAC;KAC3C,WAAW,CAAC,qEAAqE,CAAC;KAClF,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,iBAAiB,EAAE,+CAA+C,CAAC;KAC1E,MAAM,CAAC,WAAW,EAAE,0CAA0C,CAAC;KAC/D,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAE7B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;AAEhF,KAAK;KACF,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE5B,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,6CAA6C,CAAC,CAAC;AAE1G,SAAS;KACN,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,2BAA2B,EAAE,oBAAoB,CAAC;KACzD,MAAM,CAAC,oBAAoB,CAAC,CAAC;AAEhC,SAAS,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAEhH,SAAS;KACN,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,CAAC;KACxE,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC;KACxC,MAAM,CAAC,sBAAsB,CAAC,CAAC;AAElC,mEAAmE;AAEnE,OAAO;KACJ,OAAO,CAAC,qBAAqB,CAAC;KAC9B,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAE9B,2CAA2C;AAC3C,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3E,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;AAErC,OAAO;KACJ,UAAU,EAAE;KACZ,IAAI,CAAC,KAAK,IAAI,EAAE;IACf,8CAA8C;IAC9C,iBAAiB,CAAC,MAAM,WAAW,CAAC,CAAC;AACvC,CAAC,CAAC;KACD,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;IACpB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;QACjE,OAAO,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;IAC7F,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/lib/api.d.ts
CHANGED
package/dist/lib/api.js
CHANGED
|
@@ -1,4 +1,34 @@
|
|
|
1
|
+
/** Status codes that are safe to retry (transient server/gateway errors). */
|
|
2
|
+
const RETRYABLE_STATUS = new Set([502, 503, 504]);
|
|
1
3
|
export async function apiFetch(config, path, opts) {
|
|
4
|
+
const maxRetries = opts?.retries ?? 0;
|
|
5
|
+
let lastError;
|
|
6
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
7
|
+
if (attempt > 0) {
|
|
8
|
+
// Exponential backoff: 1s, 2s
|
|
9
|
+
await new Promise((r) => setTimeout(r, 1000 * attempt));
|
|
10
|
+
}
|
|
11
|
+
try {
|
|
12
|
+
return await _apiFetchOnce(config, path, opts);
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
lastError = err instanceof Error ? err : new Error(String(err));
|
|
16
|
+
// Only retry on transient errors (502/503/504 or network failures)
|
|
17
|
+
const isRetryable = RETRYABLE_STATUS.has(statusFromError(lastError)) ||
|
|
18
|
+
lastError.message.includes('fetch failed') ||
|
|
19
|
+
lastError.message.includes('ECONNREFUSED');
|
|
20
|
+
if (!isRetryable || attempt === maxRetries) {
|
|
21
|
+
throw lastError;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
throw lastError;
|
|
26
|
+
}
|
|
27
|
+
function statusFromError(err) {
|
|
28
|
+
const match = err.message.match(/^\[(\d{3})\]/);
|
|
29
|
+
return match ? Number.parseInt(match[1], 10) : 0;
|
|
30
|
+
}
|
|
31
|
+
async function _apiFetchOnce(config, path, opts) {
|
|
2
32
|
const url = `${config.apiUrl}${path}`;
|
|
3
33
|
const headers = {
|
|
4
34
|
Authorization: `Bearer ${config.token}`,
|
package/dist/lib/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAkB,EAClB,IAAY,EACZ,IAA4D;IAE5D,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC;IACtC,MAAM,OAAO,GAA2B;QACtC,aAAa,EAAE,UAAU,MAAM,CAAC,KAAK,EAAE;KACxC,CAAC;IACF,IAAI,IAAI,EAAE,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;IAC/C,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;QACrD,OAAO;QACP,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QACxD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,MAAM,CAAC;KACrD,CAAC,CAAC;IAEH,wDAAwD;IACxD,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAY,CAAC;IAE3C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,IAAgB,CAAC;QAC7B,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/bundler.js
CHANGED
|
@@ -2,40 +2,113 @@ import { build } from 'esbuild';
|
|
|
2
2
|
/**
|
|
3
3
|
* Dev shim for @fold-run/runtime — stubs all platform bindings for local development.
|
|
4
4
|
* Injected by the esbuild plugin when bundling for `fold dev`.
|
|
5
|
+
*
|
|
6
|
+
* Stubs provide functional in-memory implementations for KV and Storage,
|
|
7
|
+
* logged no-ops for AI/Queue/Vectorize, and middleware support in defineHandler.
|
|
5
8
|
*/
|
|
6
9
|
const FOLD_RUNTIME_DEV_SHIM = `
|
|
7
10
|
class DevKV {
|
|
8
11
|
constructor() { this._store = new Map(); }
|
|
9
|
-
async get(key) {
|
|
10
|
-
|
|
12
|
+
async get(key, opts) {
|
|
13
|
+
const val = this._store.get(key);
|
|
14
|
+
if (val === undefined) return null;
|
|
15
|
+
if (opts?.type === 'json') return JSON.parse(val);
|
|
16
|
+
if (opts?.type === 'arrayBuffer') return new TextEncoder().encode(val).buffer;
|
|
17
|
+
return val;
|
|
18
|
+
}
|
|
19
|
+
async put(key, value, opts) {
|
|
20
|
+
const str = typeof value === 'string' ? value : '[binary]';
|
|
21
|
+
this._store.set(key, str);
|
|
22
|
+
if (opts?.expirationTtl) {
|
|
23
|
+
setTimeout(() => this._store.delete(key), opts.expirationTtl * 1000);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
11
26
|
async delete(key) { this._store.delete(key); }
|
|
12
27
|
async list(opts) {
|
|
13
|
-
const
|
|
14
|
-
|
|
28
|
+
const all = [...this._store.keys()];
|
|
29
|
+
const filtered = opts?.prefix ? all.filter(k => k.startsWith(opts.prefix)) : all;
|
|
30
|
+
const limited = filtered.slice(0, opts?.limit ?? 1000);
|
|
31
|
+
return { keys: limited.map(name => ({ name })), list_complete: limited.length === filtered.length, cursor: undefined };
|
|
15
32
|
}
|
|
16
33
|
}
|
|
34
|
+
|
|
17
35
|
class DevStorage {
|
|
18
|
-
|
|
19
|
-
async
|
|
20
|
-
|
|
21
|
-
|
|
36
|
+
constructor() { this._store = new Map(); }
|
|
37
|
+
async put(key, value) {
|
|
38
|
+
let body;
|
|
39
|
+
if (typeof value === 'string') body = value;
|
|
40
|
+
else if (value instanceof ArrayBuffer) body = new TextDecoder().decode(value);
|
|
41
|
+
else body = '[stream/blob]';
|
|
42
|
+
const obj = { key, size: body.length, etag: Math.random().toString(36).slice(2), uploaded: new Date(), body };
|
|
43
|
+
this._store.set(key, obj);
|
|
44
|
+
return { key: obj.key, size: obj.size, etag: obj.etag, uploaded: obj.uploaded };
|
|
45
|
+
}
|
|
46
|
+
async get(key) {
|
|
47
|
+
const obj = this._store.get(key);
|
|
48
|
+
if (!obj) return null;
|
|
49
|
+
const body = obj.body;
|
|
50
|
+
return {
|
|
51
|
+
key: obj.key, size: obj.size, etag: obj.etag, uploaded: obj.uploaded,
|
|
52
|
+
body: new ReadableStream({ start(c) { c.enqueue(new TextEncoder().encode(body)); c.close(); } }),
|
|
53
|
+
bodyUsed: false,
|
|
54
|
+
text: async () => body,
|
|
55
|
+
json: async () => JSON.parse(body),
|
|
56
|
+
arrayBuffer: async () => new TextEncoder().encode(body).buffer,
|
|
57
|
+
blob: async () => new Blob([body]),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
async head(key) {
|
|
61
|
+
const obj = this._store.get(key);
|
|
62
|
+
if (!obj) return null;
|
|
63
|
+
return { key: obj.key, size: obj.size, etag: obj.etag, uploaded: obj.uploaded };
|
|
64
|
+
}
|
|
65
|
+
async delete(keys) {
|
|
66
|
+
const arr = Array.isArray(keys) ? keys : [keys];
|
|
67
|
+
for (const k of arr) this._store.delete(k);
|
|
68
|
+
}
|
|
69
|
+
async list(opts) {
|
|
70
|
+
const all = [...this._store.keys()];
|
|
71
|
+
const filtered = opts?.prefix ? all.filter(k => k.startsWith(opts.prefix)) : all;
|
|
72
|
+
const limited = filtered.slice(0, opts?.limit ?? 1000);
|
|
73
|
+
return {
|
|
74
|
+
objects: limited.map(k => { const o = this._store.get(k); return { key: o.key, size: o.size, etag: o.etag, uploaded: o.uploaded }; }),
|
|
75
|
+
truncated: limited.length < filtered.length,
|
|
76
|
+
cursor: undefined,
|
|
77
|
+
delimitedPrefixes: [],
|
|
78
|
+
};
|
|
79
|
+
}
|
|
22
80
|
}
|
|
81
|
+
|
|
23
82
|
class DevDB {
|
|
24
|
-
prepare() {
|
|
25
|
-
|
|
83
|
+
prepare(query) {
|
|
84
|
+
console.log('[fold dev] DB.prepare:', query.slice(0, 80));
|
|
85
|
+
const noop = { bind: () => noop, first: async () => null, all: async () => ({ results: [], success: true }), run: async () => ({ success: true, meta: {} }) };
|
|
26
86
|
return noop;
|
|
27
87
|
}
|
|
88
|
+
async batch(stmts) { console.log('[fold dev] DB.batch:', stmts.length, 'statements'); return []; }
|
|
89
|
+
async exec(query) { console.log('[fold dev] DB.exec:', query.slice(0, 80)); return { count: 0, duration: 0 }; }
|
|
28
90
|
}
|
|
91
|
+
|
|
29
92
|
class DevAI {
|
|
30
|
-
async run(model) {
|
|
31
|
-
console.warn('[fold dev] AI.run("' + model + '")
|
|
93
|
+
async run(model, inputs) {
|
|
94
|
+
console.warn('[fold dev] AI.run("' + model + '") — returns empty stub. Use fold deploy to test with real models.');
|
|
32
95
|
return {};
|
|
33
96
|
}
|
|
34
97
|
}
|
|
98
|
+
|
|
35
99
|
class DevQueue {
|
|
36
|
-
async send(body) { console.log('[fold dev] Queue.send:', body); }
|
|
100
|
+
async send(body) { console.log('[fold dev] Queue.send:', JSON.stringify(body).slice(0, 200)); }
|
|
37
101
|
async sendBatch(messages) { console.log('[fold dev] Queue.sendBatch:', messages.length, 'messages'); }
|
|
38
102
|
}
|
|
103
|
+
|
|
104
|
+
class DevVectorize {
|
|
105
|
+
async insert(vectors) { console.warn('[fold dev] Vectorize.insert:', vectors.length, 'vectors — stub'); return { count: vectors.length, ids: vectors.map(v => v.id) }; }
|
|
106
|
+
async upsert(vectors) { console.warn('[fold dev] Vectorize.upsert:', vectors.length, 'vectors — stub'); return { count: vectors.length, ids: vectors.map(v => v.id) }; }
|
|
107
|
+
async query() { return { matches: [], count: 0 }; }
|
|
108
|
+
async getByIds() { return []; }
|
|
109
|
+
async deleteByIds(ids) { return { count: ids.length, ids }; }
|
|
110
|
+
}
|
|
111
|
+
|
|
39
112
|
class FoldContext {
|
|
40
113
|
constructor(request, env) {
|
|
41
114
|
this.request = request;
|
|
@@ -44,33 +117,66 @@ class FoldContext {
|
|
|
44
117
|
this.db = new DevDB();
|
|
45
118
|
this.ai = new DevAI();
|
|
46
119
|
this.queue = new DevQueue();
|
|
120
|
+
this.vectorize = new DevVectorize();
|
|
47
121
|
this.tenantId = undefined;
|
|
122
|
+
this._waitUntil = null;
|
|
48
123
|
const managed = new Set(['AI', 'VECTORIZE', 'KV', 'DB', 'STORAGE', 'QUEUE', 'FOLD_TENANT_ID']);
|
|
49
124
|
this.env = Object.fromEntries(
|
|
50
125
|
Object.entries(env).filter(([k, v]) => !managed.has(k) && typeof v === 'string').map(([k, v]) => [k, v])
|
|
51
126
|
);
|
|
52
127
|
}
|
|
128
|
+
waitUntil(promise) { if (this._waitUntil) this._waitUntil(promise); }
|
|
53
129
|
json(data, status = 200) { return Response.json(data, { status }); }
|
|
54
130
|
text(body, status = 200) { return new Response(body, { status, headers: { 'content-type': 'text/plain' } }); }
|
|
131
|
+
async body() { return this.request.json(); }
|
|
132
|
+
query(name) { return new URL(this.request.url).searchParams.get(name); }
|
|
133
|
+
queries() { return Object.fromEntries(new URL(this.request.url).searchParams.entries()); }
|
|
134
|
+
header(name) { return this.request.headers.get(name); }
|
|
55
135
|
stream(generator) {
|
|
56
136
|
const { readable, writable } = new TransformStream();
|
|
57
137
|
const writer = writable.getWriter();
|
|
58
138
|
const enc = new TextEncoder();
|
|
59
139
|
(async () => {
|
|
60
140
|
try { for await (const chunk of generator()) await writer.write(enc.encode(chunk)); }
|
|
61
|
-
|
|
141
|
+
catch (err) { try { await writer.write(enc.encode('event: error\\ndata: ' + JSON.stringify({ error: err?.message ?? 'Stream error' }) + '\\n\\n')); } catch {} }
|
|
142
|
+
finally { try { await writer.close(); } catch {} }
|
|
62
143
|
})();
|
|
63
|
-
return new Response(readable, { headers: { 'content-type': 'text/event-stream', 'cache-control': 'no-cache' } });
|
|
144
|
+
return new Response(readable, { headers: { 'content-type': 'text/event-stream', 'cache-control': 'no-cache', 'connection': 'keep-alive' } });
|
|
64
145
|
}
|
|
65
146
|
}
|
|
147
|
+
|
|
148
|
+
function composeMiddleware(middleware, handler) {
|
|
149
|
+
return (ctx) => {
|
|
150
|
+
let index = 0;
|
|
151
|
+
const dispatch = () => {
|
|
152
|
+
if (index < middleware.length) { const mw = middleware[index++]; return Promise.resolve(mw(ctx, dispatch)); }
|
|
153
|
+
return Promise.resolve(handler(ctx));
|
|
154
|
+
};
|
|
155
|
+
return dispatch();
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
66
159
|
export function defineHandler(handlerOrOptions) {
|
|
67
|
-
const
|
|
160
|
+
const isOptions = typeof handlerOrOptions !== 'function';
|
|
161
|
+
const rawFetchFn = isOptions ? handlerOrOptions.fetch : handlerOrOptions;
|
|
162
|
+
const middleware = isOptions ? handlerOrOptions.middleware : undefined;
|
|
163
|
+
const scheduledFn = isOptions ? handlerOrOptions.scheduled : undefined;
|
|
164
|
+
const fetchFn = middleware?.length ? composeMiddleware(middleware, rawFetchFn) : rawFetchFn;
|
|
68
165
|
return {
|
|
69
|
-
async fetch(request, env) {
|
|
166
|
+
async fetch(request, env, ctx) {
|
|
70
167
|
const context = new FoldContext(request, env ?? {});
|
|
168
|
+
context._waitUntil = ctx?.waitUntil?.bind(ctx);
|
|
71
169
|
try { return await fetchFn(context); }
|
|
72
170
|
catch (err) { return Response.json({ error: err instanceof Error ? err.message : 'Internal error' }, { status: 500 }); }
|
|
73
171
|
},
|
|
172
|
+
...(scheduledFn && {
|
|
173
|
+
async scheduled(event, env, ctx) {
|
|
174
|
+
const req = new Request('https://scheduled.internal/__scheduled', { method: 'POST' });
|
|
175
|
+
const context = new FoldContext(req, env ?? {});
|
|
176
|
+
context._waitUntil = ctx?.waitUntil?.bind(ctx);
|
|
177
|
+
await scheduledFn(context, event);
|
|
178
|
+
}
|
|
179
|
+
}),
|
|
74
180
|
};
|
|
75
181
|
}
|
|
76
182
|
export { FoldContext };
|
|
@@ -103,7 +209,7 @@ export async function bundleFile(entryPoint, opts = {}) {
|
|
|
103
209
|
write: false,
|
|
104
210
|
format: 'esm',
|
|
105
211
|
target: 'esnext',
|
|
106
|
-
platform: 'browser',
|
|
212
|
+
platform: 'browser',
|
|
107
213
|
minify: !opts.dev,
|
|
108
214
|
treeShaking: true,
|
|
109
215
|
conditions: ['worker', 'browser'],
|
package/dist/lib/bundler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundler.js","sourceRoot":"","sources":["../../src/lib/bundler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAe,MAAM,SAAS,CAAC;AAE7C
|
|
1
|
+
{"version":3,"file":"bundler.js","sourceRoot":"","sources":["../../src/lib/bundler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAe,MAAM,SAAS,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8K7B,CAAC;AAEF,qEAAqE;AACrE,MAAM,oBAAoB,GAAW;IACnC,IAAI,EAAE,kBAAkB;IACxB,KAAK,CAAC,KAAK;QACT,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACzD,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,kBAAkB;SAC9B,CAAC,CAAC,CAAC;QACJ,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACnE,QAAQ,EAAE,qBAAqB;YAC/B,MAAM,EAAE,IAAI;SACb,CAAC,CAAC,CAAC;IACN,CAAC;CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAkB,EAAE,OAA0B,EAAE;IAC/E,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;QACzB,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,SAAS;QACnB,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG;QACjB,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;QACjC,2EAA2E;QAC3E,yEAAyE;QACzE,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,mBAAmB,CAAC;QAC7E,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE;KAChD,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Lightweight JSON syntax highlighting for terminal output.
|
|
2
|
+
// No dependencies — uses ANSI escape codes directly.
|
|
3
|
+
const RESET = '\x1b[0m';
|
|
4
|
+
const CYAN = '\x1b[36m'; // keys
|
|
5
|
+
const GREEN = '\x1b[32m'; // strings
|
|
6
|
+
const YELLOW = '\x1b[33m'; // numbers
|
|
7
|
+
const MAGENTA = '\x1b[35m'; // booleans, null
|
|
8
|
+
/**
|
|
9
|
+
* Colorize a JSON string for terminal display.
|
|
10
|
+
* Applies syntax highlighting to keys, strings, numbers, booleans, and null.
|
|
11
|
+
*/
|
|
12
|
+
export function colorizeJson(json) {
|
|
13
|
+
return json.replace(/("(?:\\.|[^"\\])*")\s*(:)?|(\b\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b)|(\bnull\b|\btrue\b|\bfalse\b)/g, (match, str, colon, num, lit) => {
|
|
14
|
+
if (str) {
|
|
15
|
+
// It's a string — is it a key (followed by :) or a value?
|
|
16
|
+
if (colon) {
|
|
17
|
+
return `${CYAN}${str}${RESET}:`;
|
|
18
|
+
}
|
|
19
|
+
return `${GREEN}${str}${RESET}`;
|
|
20
|
+
}
|
|
21
|
+
if (num)
|
|
22
|
+
return `${YELLOW}${num}${RESET}`;
|
|
23
|
+
if (lit)
|
|
24
|
+
return `${MAGENTA}${lit}${RESET}`;
|
|
25
|
+
return match;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=colorize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorize.js","sourceRoot":"","sources":["../../src/lib/colorize.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,qDAAqD;AAErD,MAAM,KAAK,GAAG,SAAS,CAAC;AACxB,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,OAAO;AAChC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,UAAU;AACpC,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,UAAU;AACrC,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,iBAAiB;AAE7C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,OAAO,CACjB,gGAAgG,EAChG,CAAC,KAAK,EAAE,GAAuB,EAAE,KAAyB,EAAE,GAAuB,EAAE,GAAuB,EAAE,EAAE;QAC9G,IAAI,GAAG,EAAE,CAAC;YACR,0DAA0D;YAC1D,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC;YAClC,CAAC;YACD,OAAO,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC;QAClC,CAAC;QACD,IAAI,GAAG;YAAE,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC;QAC1C,IAAI,GAAG;YAAE,OAAO,GAAG,OAAO,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/lib/prompt.d.ts
CHANGED
|
@@ -3,6 +3,28 @@
|
|
|
3
3
|
* Defaults to 'no' if user just presses enter.
|
|
4
4
|
*/
|
|
5
5
|
export declare function confirm(message: string): Promise<boolean>;
|
|
6
|
+
/**
|
|
7
|
+
* Prompt for a single line of text input.
|
|
8
|
+
* Returns the trimmed input, or defaultValue if the user presses Enter.
|
|
9
|
+
*/
|
|
10
|
+
export declare function ask(message: string, defaultValue?: string): Promise<string>;
|
|
11
|
+
/**
|
|
12
|
+
* Prompt the user to select from a list of options using arrow keys.
|
|
13
|
+
* Returns the selected option value. Falls back to numbered list on non-TTY.
|
|
14
|
+
*/
|
|
15
|
+
export declare function select<T extends string>(message: string, options: {
|
|
16
|
+
label: string;
|
|
17
|
+
value: T;
|
|
18
|
+
}[]): Promise<T>;
|
|
19
|
+
/**
|
|
20
|
+
* Prompt for toggling multiple options on/off. Returns selected values.
|
|
21
|
+
* Space to toggle, Enter to confirm.
|
|
22
|
+
*/
|
|
23
|
+
export declare function multiSelect<T extends string>(message: string, options: {
|
|
24
|
+
label: string;
|
|
25
|
+
value: T;
|
|
26
|
+
default?: boolean;
|
|
27
|
+
}[]): Promise<T[]>;
|
|
6
28
|
/**
|
|
7
29
|
* Read a line of input with masked output (shows * for each character).
|
|
8
30
|
* Handles backspace and Ctrl+C.
|