@celsoft/platform 0.3.0 → 0.5.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/adapters/cloudflare.d.ts +14 -0
- package/dist/adapters/cloudflare.js +74 -0
- package/dist/adapters/cloudflare.js.map +1 -1
- package/dist/adapters/drizzle.d.ts +15 -0
- package/dist/adapters/drizzle.js +111 -0
- package/dist/adapters/drizzle.js.map +1 -0
- package/dist/adapters/github.d.ts +1 -0
- package/dist/adapters/github.js +4 -0
- package/dist/adapters/github.js.map +1 -1
- package/dist/adapters/neon.d.ts +2 -0
- package/dist/adapters/neon.js +8 -0
- package/dist/adapters/neon.js.map +1 -1
- package/dist/adapters/process.d.ts +1 -7
- package/dist/adapters/process.js +0 -22
- package/dist/adapters/process.js.map +1 -1
- package/dist/adapters/resend.d.ts +1 -0
- package/dist/adapters/resend.js +3 -0
- package/dist/adapters/resend.js.map +1 -1
- package/dist/cli.js +71 -9
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +12 -4
- package/dist/config.js +27 -9
- package/dist/config.js.map +1 -1
- package/dist/fakes.d.ts +32 -3
- package/dist/fakes.js +75 -4
- package/dist/fakes.js.map +1 -1
- package/dist/init.js +5 -5
- package/dist/init.js.map +1 -1
- package/dist/lifecycle.d.ts +8 -0
- package/dist/lifecycle.js +151 -15
- package/dist/lifecycle.js.map +1 -1
- package/dist/ownership.d.ts +16 -0
- package/dist/ownership.js +40 -0
- package/dist/ownership.js.map +1 -0
- package/dist/ports.d.ts +22 -2
- package/dist/runtime/auth.d.ts +1181 -6
- package/dist/runtime/auth.js +44 -14
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/files.d.ts +54 -0
- package/dist/runtime/files.js +53 -0
- package/dist/runtime/files.js.map +1 -0
- package/dist/runtime/guard.d.ts +12 -0
- package/dist/runtime/guard.js +42 -0
- package/dist/runtime/guard.js.map +1 -0
- package/dist/runtime/index.d.ts +22 -9
- package/dist/runtime/index.js +72 -19
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/owner.d.ts +12 -0
- package/dist/runtime/owner.js +54 -0
- package/dist/runtime/owner.js.map +1 -0
- package/dist/runtime/screens.d.ts +4 -0
- package/dist/runtime/screens.js +158 -0
- package/dist/runtime/screens.js.map +1 -0
- package/dist/schema.d.ts +2775 -0
- package/dist/schema.js +129 -0
- package/dist/schema.js.map +1 -0
- package/dist/target.d.ts +2 -0
- package/dist/target.js +9 -2
- package/dist/target.js.map +1 -1
- package/dist/workflow.js +15 -5
- package/dist/workflow.js.map +1 -1
- package/dist/wrangler-config.d.ts +7 -1
- package/dist/wrangler-config.js +13 -3
- package/dist/wrangler-config.js.map +1 -1
- package/package.json +10 -4
- package/schema.json +22 -13
package/dist/cli.js
CHANGED
|
@@ -1,32 +1,39 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { execFileSync } from "node:child_process";
|
|
3
|
-
import { readFile } from "node:fs/promises";
|
|
3
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
4
4
|
import { join, resolve } from "node:path";
|
|
5
|
+
import { createInterface } from "node:readline/promises";
|
|
5
6
|
import { parseArgs } from "node:util";
|
|
6
7
|
import { CloudflareApi } from "./adapters/cloudflare.js";
|
|
7
8
|
import { commentPreviewLink, GhCli } from "./adapters/github.js";
|
|
8
9
|
import { NeonApi } from "./adapters/neon.js";
|
|
9
10
|
import { ResendApi } from "./adapters/resend.js";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
11
|
+
import { DrizzleMigrator } from "./adapters/drizzle.js";
|
|
12
|
+
import { WranglerCli } from "./adapters/process.js";
|
|
13
|
+
import { CONFIG_FILE, ConfigError, configVariables, parseConfig, readConfigText, upgradeConfigText } from "./config.js";
|
|
12
14
|
import { checkWorkflow, init, tokenNames } from "./init.js";
|
|
13
|
-
import { cleanup, deploy, dev, PreflightError } from "./lifecycle.js";
|
|
15
|
+
import { cleanup, deploy, destroy, dev, PreflightError, sweep } from "./lifecycle.js";
|
|
16
|
+
import { UnprovenError } from "./ownership.js";
|
|
14
17
|
import { Run } from "./run.js";
|
|
15
18
|
import { loadSecrets, loadVars } from "./secrets.js";
|
|
16
|
-
const usage = `usage: platform <command> [--dry-run] [--dir <app dir>]
|
|
19
|
+
const usage = `usage: npx @celsoft/platform <command> [--dry-run] [--dir <app dir>]
|
|
17
20
|
|
|
18
21
|
commands:
|
|
19
22
|
init set up GitHub secrets, Environments and the deploy workflow
|
|
20
23
|
dev run the app locally against its own Neon branch
|
|
24
|
+
db generate write migrations for changes to the platform's tables and src/schema.ts
|
|
25
|
+
upgrade rewrite an older platform.jsonc to the current shape
|
|
21
26
|
deploy deploy prod
|
|
22
27
|
preview <pr> create or update the preview for a pull request
|
|
23
28
|
cleanup <pr> delete the preview for a pull request
|
|
29
|
+
sweep delete previews whose pull request is closed
|
|
30
|
+
destroy [--data] delete everything the platform made for the app; --data also deletes its data
|
|
24
31
|
ci run the command for the current GitHub Actions event`;
|
|
25
32
|
async function main(argv) {
|
|
26
33
|
const { values, positionals } = parseArgs({
|
|
27
34
|
args: argv,
|
|
28
35
|
allowPositionals: true,
|
|
29
|
-
options: { "dry-run": { type: "boolean", default: false }, dir: { type: "string", default: "." }, help: { type: "boolean", short: "h" } },
|
|
36
|
+
options: { "dry-run": { type: "boolean", default: false }, data: { type: "boolean", default: false }, dir: { type: "string", default: "." }, help: { type: "boolean", short: "h" } },
|
|
30
37
|
});
|
|
31
38
|
if (values.help || positionals.length === 0) {
|
|
32
39
|
console.log(usage);
|
|
@@ -40,6 +47,14 @@ async function main(argv) {
|
|
|
40
47
|
console.log("nothing to do for this event");
|
|
41
48
|
return;
|
|
42
49
|
}
|
|
50
|
+
if (command.name === "upgrade") {
|
|
51
|
+
const { text, changes } = upgradeConfigText(await readConfigText(appDir));
|
|
52
|
+
if (changes.length === 0)
|
|
53
|
+
return console.log(`✓ ${CONFIG_FILE} already has the current shape`);
|
|
54
|
+
await writeFile(join(appDir, CONFIG_FILE), text);
|
|
55
|
+
console.log(`updated ${CONFIG_FILE}: ${changes.join(", ")}; review and commit it`);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
43
58
|
if (command.name === "init") {
|
|
44
59
|
const { config, variables } = await loadApp(appDir);
|
|
45
60
|
await init({
|
|
@@ -58,6 +73,10 @@ async function main(argv) {
|
|
|
58
73
|
return;
|
|
59
74
|
}
|
|
60
75
|
const app = await loadApp(appDir);
|
|
76
|
+
if (command.name === "db generate") {
|
|
77
|
+
await new DrizzleMigrator(appDir, app.config).generate();
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
61
80
|
if (inCi)
|
|
62
81
|
await checkWorkflow(repoRoot(appDir), appDir, app.config, Object.keys(app.variables));
|
|
63
82
|
const ctx = await context(appDir, app.config, dryRun);
|
|
@@ -69,6 +88,14 @@ async function main(argv) {
|
|
|
69
88
|
await dev(ctx);
|
|
70
89
|
return;
|
|
71
90
|
}
|
|
91
|
+
if (command.name === "sweep") {
|
|
92
|
+
await sweep(ctx, await new GhCli(repoRoot(appDir)).openPullRequests());
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
if (command.name === "destroy") {
|
|
96
|
+
await confirmDestroy(ctx, app.config.name, values.data);
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
72
99
|
const { hostname } = await deploy(ctx, command.name === "deploy" ? { kind: "prod" } : { kind: "preview", pr: command.pr });
|
|
73
100
|
if (dryRun)
|
|
74
101
|
return;
|
|
@@ -80,7 +107,11 @@ async function main(argv) {
|
|
|
80
107
|
}
|
|
81
108
|
}
|
|
82
109
|
function parseCommand([name, pr]) {
|
|
83
|
-
if (name === "
|
|
110
|
+
if (name === "db" && pr === "generate")
|
|
111
|
+
return { name: "db generate" };
|
|
112
|
+
if (name === "upgrade" || name === "sweep")
|
|
113
|
+
return { name };
|
|
114
|
+
if (name === "init" || name === "dev" || name === "deploy" || name === "destroy")
|
|
84
115
|
return { name };
|
|
85
116
|
if (name === "preview" || name === "cleanup")
|
|
86
117
|
return { name, pr: prNumber(pr) };
|
|
@@ -94,8 +125,12 @@ async function commandForGitHubEvent() {
|
|
|
94
125
|
const event = JSON.parse(await readFile(path, "utf8"));
|
|
95
126
|
if (name === "push")
|
|
96
127
|
return { name: "deploy" };
|
|
128
|
+
if (name === "pull_request_target" && event.action === "closed")
|
|
129
|
+
return { name: "cleanup", pr: event.number };
|
|
97
130
|
if (name === "pull_request")
|
|
98
131
|
return event.action === "closed" ? { name: "cleanup", pr: event.number } : { name: "preview", pr: event.number, sha: event.pull_request?.head?.sha };
|
|
132
|
+
if (name === "schedule")
|
|
133
|
+
return { name: "sweep" };
|
|
99
134
|
return undefined;
|
|
100
135
|
}
|
|
101
136
|
async function loadApp(appDir) {
|
|
@@ -120,10 +155,37 @@ async function context(appDir, config, dryRun) {
|
|
|
120
155
|
neon: new NeonApi(neonKey),
|
|
121
156
|
mail: new ResendApi(resendKey),
|
|
122
157
|
wrangler: new WranglerCli(appDir, { CLOUDFLARE_API_TOKEN: cloudflareToken }),
|
|
123
|
-
migrator: new
|
|
158
|
+
migrator: new DrizzleMigrator(appDir, config),
|
|
124
159
|
},
|
|
125
160
|
};
|
|
126
161
|
}
|
|
162
|
+
// Destroy lists what it will delete, then needs the app's name typed and a final yes, so a
|
|
163
|
+
// slip of the keyboard can never start it.
|
|
164
|
+
async function confirmDestroy(ctx, appName, data) {
|
|
165
|
+
if (!process.stdin.isTTY || process.env.CI)
|
|
166
|
+
throw new UsageError("destroy asks for confirmation, so it runs only in a terminal");
|
|
167
|
+
console.log(`destroy ${appName}${data ? ", including its data" : ""}:\n`);
|
|
168
|
+
await destroy({ ...ctx, run: new Run(true, (line) => console.log(line)) }, { data });
|
|
169
|
+
if (ctx.run.dryRun)
|
|
170
|
+
return;
|
|
171
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
172
|
+
try {
|
|
173
|
+
console.log(`\n${data ? "This deletes the app's database tables, backups and files. They cannot be recovered." : "The app goes offline until its next deploy."}`);
|
|
174
|
+
if ((await rl.question(`Type the app's name (${appName}) to continue: `)).trim() !== appName) {
|
|
175
|
+
console.log("Name did not match; nothing was deleted.");
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
if (!/^y(es)?$/i.test((await rl.question("Last chance. Delete all of the above? [y/N] ")).trim())) {
|
|
179
|
+
console.log("Nothing was deleted.");
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
finally {
|
|
184
|
+
rl.close();
|
|
185
|
+
}
|
|
186
|
+
await destroy(ctx, { data });
|
|
187
|
+
console.log(`\n${appName} destroyed; the next deploy sets it up from scratch.`);
|
|
188
|
+
}
|
|
127
189
|
function repoRoot(dir) {
|
|
128
190
|
try {
|
|
129
191
|
return execFileSync("git", ["rev-parse", "--show-toplevel"], { cwd: dir, encoding: "utf8" }).trim();
|
|
@@ -159,7 +221,7 @@ function maskInCi(values) {
|
|
|
159
221
|
class UsageError extends Error {
|
|
160
222
|
}
|
|
161
223
|
main(process.argv.slice(2)).catch((error) => {
|
|
162
|
-
const known = error instanceof ConfigError || error instanceof PreflightError || error instanceof UsageError;
|
|
224
|
+
const known = error instanceof ConfigError || error instanceof PreflightError || error instanceof UnprovenError || error instanceof UsageError;
|
|
163
225
|
console.error(`✗ ${known ? error.message : error instanceof Error ? (error.stack ?? error.message) : String(error)}`);
|
|
164
226
|
process.exit(1);
|
|
165
227
|
});
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAe,MAAM,aAAa,CAAC;AACrI,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAgB,MAAM,gBAAgB,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,KAAK,GAAG;;;;;;;;;;;;wEAY0D,CAAC;AAIzE,KAAK,UAAU,IAAI,CAAC,IAAc;IAChC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;QACxC,IAAI,EAAE,IAAI;QACV,gBAAgB,EAAE,IAAI;QACtB,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;KACrL,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,qBAAqB,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACjF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,WAAW,gCAAgC,CAAC,CAAC;QAC/F,MAAM,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,WAAW,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACnF,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,IAAI,CAAC;YACT,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC;YAC1B,MAAM;YACN,MAAM;YACN,SAAS;YACT,GAAG,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACjD,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACpB,UAAU,EAAE,IAAI,aAAa,CAAC,MAAM,CAAC,oBAAqB,CAAC;gBAC3D,IAAI,EAAE,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;gBAC5C,IAAI,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC;gBAChD,MAAM,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACpC,CAAC;SACH,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACnC,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QACzD,OAAO;IACT,CAAC;IACD,IAAI,IAAI;QAAE,MAAM,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAChG,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QACf,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,CAAC,GAAG,EAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACvE,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3H,IAAI,MAAM;QAAE,OAAO;IACnB,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,EAAE,CAAC,CAAC;IAE7C,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,kBAAkB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,WAAW,QAAQ,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QAChD,MAAM,MAAM,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE,CAAW;IACxC,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,KAAK,UAAU;QAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IACvE,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC5D,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAClG,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAChF,MAAM,IAAI,UAAU,CAAC,mBAAmB,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,qBAAqB;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC3C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,UAAU,CAAC,+CAA+C,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAqF,CAAC;IAC3I,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC/C,IAAI,IAAI,KAAK,qBAAqB,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,MAAO,EAAE,CAAC;IAC/G,IAAI,IAAI,KAAK,cAAc;QAAE,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,MAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,KAAK,CAAC,MAAO,EAAE,GAAG,EAAE,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACpL,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAClD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,MAAc;IACnC,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,CAAC;IAC5G,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IACnC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;AACxF,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,MAAc,EAAE,MAAc,EAAE,MAAe;IACpE,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACtF,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,OAAO;QACL,MAAM;QACN,OAAO;QACP,GAAG,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjD,KAAK,EAAE;YACL,UAAU,EAAE,IAAI,aAAa,CAAC,eAAe,CAAC;YAC9C,IAAI,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC;YAC1B,IAAI,EAAE,IAAI,SAAS,CAAC,SAAS,CAAC;YAC9B,QAAQ,EAAE,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,oBAAoB,EAAE,eAAe,EAAE,CAAC;YAC5E,QAAQ,EAAE,IAAI,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC;SAC9C;KACF,CAAC;AACJ,CAAC;AAED,2FAA2F;AAC3F,2CAA2C;AAC3C,KAAK,UAAU,cAAc,CAAC,GAAY,EAAE,OAAe,EAAE,IAAa;IACxE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,UAAU,CAAC,8DAA8D,CAAC,CAAC;IACjI,OAAO,CAAC,GAAG,CAAC,WAAW,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1E,MAAM,OAAO,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACrF,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO;IAE3B,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,sFAAsF,CAAC,CAAC,CAAC,6CAA6C,EAAE,CAAC,CAAC;QAClK,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,OAAO,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;YAC7F,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAClG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;IACD,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,sDAAsD,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtG,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,cAAc,CAAC,GAAG,GAAG,iCAAiC,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,OAA+B,EAAE,IAAY;IACjE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,cAAc,CAAC,GAAG,IAAI,4EAA4E,CAAC,CAAC;IAC1H,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAyB;IACzC,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QAAE,MAAM,IAAI,UAAU,CAAC,uCAAuC,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;IACxH,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,gGAAgG;AAChG,gGAAgG;AAChG,SAAS,QAAQ,CAAC,MAAgB;IAChC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM;QAAE,OAAO;IAClD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACjF,KAAK,MAAM,MAAM,IAAI,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC;IACjF,CAAC;AACH,CAAC;AAED,MAAM,UAAW,SAAQ,KAAK;CAAG;AAEjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACnD,MAAM,KAAK,GAAG,KAAK,YAAY,WAAW,IAAI,KAAK,YAAY,cAAc,IAAI,KAAK,YAAY,aAAa,IAAI,KAAK,YAAY,UAAU,CAAC;IAC/I,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACjI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export declare const CONFIG_FILE = "platform.jsonc";
|
|
3
|
-
export declare const CONFIG_VERSION = 1;
|
|
4
3
|
export declare const configSchema: z.ZodObject<{
|
|
5
4
|
$schema: z.ZodOptional<z.ZodString>;
|
|
6
|
-
version: z.ZodLiteral<1>;
|
|
7
5
|
name: z.ZodString;
|
|
8
6
|
hostname: z.ZodString;
|
|
9
7
|
worker: z.ZodString;
|
|
@@ -11,10 +9,16 @@ export declare const configSchema: z.ZodObject<{
|
|
|
11
9
|
frontend: z.ZodOptional<z.ZodString>;
|
|
12
10
|
database: z.ZodOptional<z.ZodObject<{
|
|
13
11
|
neonProject: z.ZodString;
|
|
14
|
-
migrate: z.ZodString;
|
|
15
12
|
}, z.core.$strict>>;
|
|
16
13
|
email: z.ZodDefault<z.ZodBoolean>;
|
|
17
|
-
auth: z.ZodDefault<z.ZodBoolean
|
|
14
|
+
auth: z.ZodPipe<z.ZodDefault<z.ZodUnion<readonly [z.ZodBoolean, z.ZodObject<{
|
|
15
|
+
organizations: z.ZodDefault<z.ZodBoolean>;
|
|
16
|
+
}, z.core.$strict>]>>, z.ZodTransform<false | {
|
|
17
|
+
organizations: boolean;
|
|
18
|
+
}, boolean | {
|
|
19
|
+
organizations: boolean;
|
|
20
|
+
}>>;
|
|
21
|
+
files: z.ZodDefault<z.ZodBoolean>;
|
|
18
22
|
secrets: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
19
23
|
}, z.core.$strict>;
|
|
20
24
|
export type Config = z.output<typeof configSchema>;
|
|
@@ -22,6 +26,10 @@ export declare class ConfigError extends Error {
|
|
|
22
26
|
}
|
|
23
27
|
export declare function configVariables(text: string): string[];
|
|
24
28
|
export declare function parseConfig(text: string, source?: string, vars?: Record<string, string>): Config;
|
|
29
|
+
export declare function upgradeConfigText(text: string): {
|
|
30
|
+
text: string;
|
|
31
|
+
changes: string[];
|
|
32
|
+
};
|
|
25
33
|
export declare function readConfigText(dir: string): Promise<string>;
|
|
26
34
|
export declare function loadConfig(dir: string, vars?: Record<string, string>): Promise<Config>;
|
|
27
35
|
export declare function configJsonSchema(): object;
|
package/dist/config.js
CHANGED
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
import { readFile } from "node:fs/promises";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
import { parse, printParseErrorCode } from "jsonc-parser";
|
|
3
|
+
import { applyEdits, modify, parse, printParseErrorCode } from "jsonc-parser";
|
|
4
4
|
import { z } from "zod";
|
|
5
5
|
export const CONFIG_FILE = "platform.jsonc";
|
|
6
|
-
export const CONFIG_VERSION = 1;
|
|
7
6
|
const hostname = z
|
|
8
7
|
.string()
|
|
9
8
|
.regex(/^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$/, "must be a lowercase hostname such as app.example.com");
|
|
10
9
|
export const configSchema = z
|
|
11
10
|
.object({
|
|
12
11
|
$schema: z.string().optional(),
|
|
13
|
-
version: z.literal(CONFIG_VERSION),
|
|
14
12
|
// Leaves room for "-pr-<number>" within Cloudflare's 63-character Worker name limit.
|
|
15
13
|
name: z.string().regex(/^[a-z][a-z0-9-]{0,49}$/, "must start with a letter and use only a-z, 0-9 and -, at most 50 characters"),
|
|
16
14
|
hostname,
|
|
@@ -20,12 +18,17 @@ export const configSchema = z
|
|
|
20
18
|
database: z
|
|
21
19
|
.object({
|
|
22
20
|
neonProject: z.string().regex(/^[a-z]+-[a-z]+-\d+$/, "must be a Neon project id such as quiet-meadow-12345678, not a branch id"),
|
|
23
|
-
migrate: z.string().min(1).describe("Command that runs migrations against $DATABASE_URL"),
|
|
24
21
|
})
|
|
22
|
+
.describe("A Neon Postgres 18 database; the app's tables live in src/schema.ts")
|
|
25
23
|
.strict()
|
|
26
24
|
.optional(),
|
|
27
25
|
email: z.boolean().default(false).describe("Send email through Resend from noreply@ the app's own hostname; the app only sends"),
|
|
28
|
-
auth: z
|
|
26
|
+
auth: z
|
|
27
|
+
.union([z.boolean(), z.object({ organizations: z.boolean().default(false).describe("Organizations with members, roles, invitations and teams") }).strict()])
|
|
28
|
+
.default(false)
|
|
29
|
+
.transform((auth) => (auth === true ? { organizations: false } : auth))
|
|
30
|
+
.describe("Sign-up and login with email and password; needs database and email"),
|
|
31
|
+
files: z.boolean().default(false).describe("Object storage in an R2 bucket, organized in folders"),
|
|
29
32
|
secrets: z.array(z.string().regex(/^[A-Z][A-Z0-9_]*$/, "must be an UPPER_SNAKE_CASE name")).default([]),
|
|
30
33
|
})
|
|
31
34
|
.strict()
|
|
@@ -45,11 +48,12 @@ export function parseConfig(text, source = CONFIG_FILE, vars = {}) {
|
|
|
45
48
|
}
|
|
46
49
|
const missing = configVariables(text).filter((name) => !vars[name]);
|
|
47
50
|
if (missing.length > 0) {
|
|
48
|
-
throw new ConfigError(`${source} uses ${missing.join(", ")}; set them in .env, then run \`platform init\` to copy them to GitHub`);
|
|
51
|
+
throw new ConfigError(`${source} uses ${missing.join(", ")}; set them in .env, then run \`npx @celsoft/platform init\` to copy them to GitHub`);
|
|
49
52
|
}
|
|
50
53
|
const raw = substitute(parsed, vars);
|
|
51
|
-
|
|
52
|
-
|
|
54
|
+
const old = olderShape(raw);
|
|
55
|
+
if (old.length > 0) {
|
|
56
|
+
throw new ConfigError(`${source} has an older shape (${old.map((path) => path.join(".")).join(", ")}); run \`npx @celsoft/platform upgrade\` and commit the result`);
|
|
53
57
|
}
|
|
54
58
|
const result = configSchema.safeParse(raw);
|
|
55
59
|
if (!result.success) {
|
|
@@ -58,13 +62,27 @@ export function parseConfig(text, source = CONFIG_FILE, vars = {}) {
|
|
|
58
62
|
}
|
|
59
63
|
return result.data;
|
|
60
64
|
}
|
|
65
|
+
// Fields earlier releases used, recognized by their presence so nobody has to write a version.
|
|
66
|
+
const RETIRED = [["version"], ["database", "migrate"]];
|
|
67
|
+
function olderShape(raw) {
|
|
68
|
+
return RETIRED.filter((path) => path.reduce((node, key) => (isObject(node) ? node[key] : undefined), raw) !== undefined);
|
|
69
|
+
}
|
|
70
|
+
// Rewrites an older file to the current shape, keeping its comments and layout.
|
|
71
|
+
export function upgradeConfigText(text) {
|
|
72
|
+
const changes = [];
|
|
73
|
+
for (const path of olderShape(parse(text, [], { allowTrailingComma: true }))) {
|
|
74
|
+
text = applyEdits(text, modify(text, path, undefined, { formattingOptions: { insertSpaces: true, tabSize: 2 } }));
|
|
75
|
+
changes.push(`removed ${path.join(".")}`);
|
|
76
|
+
}
|
|
77
|
+
return { text, changes };
|
|
78
|
+
}
|
|
61
79
|
export async function readConfigText(dir) {
|
|
62
80
|
const path = join(dir, CONFIG_FILE);
|
|
63
81
|
try {
|
|
64
82
|
return await readFile(path, "utf8");
|
|
65
83
|
}
|
|
66
84
|
catch {
|
|
67
|
-
throw new ConfigError(`${path} not found; run \`platform init\``);
|
|
85
|
+
throw new ConfigError(`${path} not found; run \`npx @celsoft/platform init\``);
|
|
68
86
|
}
|
|
69
87
|
}
|
|
70
88
|
export async function loadConfig(dir, vars = {}) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAmB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/fakes.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type { Branch, Cloudflare, DnsRecord, Hyperdrive, Mail, MailDomain, Migrator, Neon, Wrangler, Zone, ZoneRecord } from "./ports.js";
|
|
2
2
|
export declare class FakeNeon implements Neon {
|
|
3
3
|
branches: Branch[];
|
|
4
|
+
pgVersion: number;
|
|
4
5
|
private next;
|
|
6
|
+
postgresVersion(): Promise<number>;
|
|
7
|
+
endpointHosts(): Promise<string[]>;
|
|
5
8
|
defaultBranch(): Promise<Branch>;
|
|
6
9
|
findBranch(_project: string, name: string): Promise<Branch | undefined>;
|
|
7
10
|
listBranches(_project: string, namePrefix: string): Promise<Branch[]>;
|
|
@@ -22,6 +25,7 @@ export declare class FakeCloudflare implements Cloudflare {
|
|
|
22
25
|
accountId(): Promise<string>;
|
|
23
26
|
findZone(hostname: string): Promise<Zone | undefined>;
|
|
24
27
|
findHyperdrive(name: string): Promise<Hyperdrive | undefined>;
|
|
28
|
+
listHyperdrives(namePrefix: string): Promise<Hyperdrive[]>;
|
|
25
29
|
createHyperdrive(name: string, uri: string): Promise<{
|
|
26
30
|
id: string;
|
|
27
31
|
name: string;
|
|
@@ -31,9 +35,29 @@ export declare class FakeCloudflare implements Cloudflare {
|
|
|
31
35
|
updateHyperdrive(id: string, uri: string): Promise<Hyperdrive>;
|
|
32
36
|
deleteHyperdrive(id: string): Promise<void>;
|
|
33
37
|
findWorker(name: string): Promise<boolean>;
|
|
38
|
+
workerTags: Map<string, string[]>;
|
|
39
|
+
workerHyperdrives: Map<string, string[]>;
|
|
40
|
+
workerOwner(name: string): Promise<{
|
|
41
|
+
app: string | null;
|
|
42
|
+
hyperdriveIds: string[];
|
|
43
|
+
} | undefined>;
|
|
44
|
+
tagWorker(name: string, app: string, pr: number | undefined): Promise<void>;
|
|
45
|
+
listWorkers(namePrefix: string): Promise<string[]>;
|
|
34
46
|
deleteWorker(name: string): Promise<void>;
|
|
35
47
|
workerSecretNames(worker: string): Promise<string[]>;
|
|
36
48
|
dnsRecords(_zoneId: string, name: string): Promise<ZoneRecord[]>;
|
|
49
|
+
buckets: Map<string, {
|
|
50
|
+
expiryDays?: number;
|
|
51
|
+
keys: string[];
|
|
52
|
+
owner?: string;
|
|
53
|
+
}>;
|
|
54
|
+
bucketOwner(name: string): Promise<string | null | undefined>;
|
|
55
|
+
findBucket(name: string): Promise<boolean>;
|
|
56
|
+
createBucket(name: string, app: string): Promise<void>;
|
|
57
|
+
deleteBucket(name: string): Promise<void>;
|
|
58
|
+
bucketExpiryDays(name: string): Promise<number | undefined>;
|
|
59
|
+
setBucketExpiry(name: string, days: number): Promise<void>;
|
|
60
|
+
deleteObjects(bucket: string, prefix: string): Promise<number>;
|
|
37
61
|
managedDnsRecords(): Promise<ZoneRecord[]>;
|
|
38
62
|
deleteDnsRecord(_zoneId: string, id: string): Promise<void>;
|
|
39
63
|
createDnsRecord(_zoneId: string, record: DnsRecord): Promise<void>;
|
|
@@ -64,6 +88,7 @@ export declare class FakeMail implements Mail {
|
|
|
64
88
|
})[];
|
|
65
89
|
}>;
|
|
66
90
|
verifyDomain(id: string): Promise<void>;
|
|
91
|
+
deleteDomain(id: string): Promise<void>;
|
|
67
92
|
findApiKey(name: string): Promise<string | undefined>;
|
|
68
93
|
createSendKey(name: string, domainId: string): Promise<string>;
|
|
69
94
|
deleteApiKey(id: string): Promise<void>;
|
|
@@ -85,10 +110,14 @@ export declare class FakeWrangler implements Wrangler {
|
|
|
85
110
|
}
|
|
86
111
|
export declare class FakeMigrator implements Migrator {
|
|
87
112
|
runs: string[];
|
|
88
|
-
|
|
113
|
+
generated: number;
|
|
114
|
+
current: boolean;
|
|
89
115
|
failWith: Error | undefined;
|
|
90
|
-
|
|
91
|
-
|
|
116
|
+
generate(): Promise<void>;
|
|
117
|
+
upToDate(): Promise<boolean>;
|
|
118
|
+
migrate(databaseUrl: string): Promise<void>;
|
|
119
|
+
dropped: string[];
|
|
120
|
+
dropAll(databaseUrl: string): Promise<void>;
|
|
92
121
|
}
|
|
93
122
|
export declare function fakePorts(): {
|
|
94
123
|
neon: FakeNeon;
|
package/dist/fakes.js
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
import { appTag, PLATFORM_TAG, prTag } from "./ownership.js";
|
|
1
2
|
import { originOf } from "./target.js";
|
|
2
3
|
export class FakeNeon {
|
|
3
4
|
branches = [{ id: "br-prod", name: "production" }];
|
|
5
|
+
pgVersion = 18;
|
|
4
6
|
next = 1;
|
|
7
|
+
async postgresVersion() {
|
|
8
|
+
return this.pgVersion;
|
|
9
|
+
}
|
|
10
|
+
async endpointHosts() {
|
|
11
|
+
return this.branches.map((b) => `${b.id}.neon.test`);
|
|
12
|
+
}
|
|
5
13
|
async defaultBranch() {
|
|
6
14
|
return this.branches[0];
|
|
7
15
|
}
|
|
@@ -39,6 +47,9 @@ export class FakeCloudflare {
|
|
|
39
47
|
async findHyperdrive(name) {
|
|
40
48
|
return this.hyperdrives.find((h) => h.name === name);
|
|
41
49
|
}
|
|
50
|
+
async listHyperdrives(namePrefix) {
|
|
51
|
+
return this.hyperdrives.filter((h) => h.name.startsWith(namePrefix));
|
|
52
|
+
}
|
|
42
53
|
async createHyperdrive(name, uri) {
|
|
43
54
|
const hyperdrive = { id: `hd-${this.next++}`, name, origin: originOf(uri), cached: false };
|
|
44
55
|
this.hyperdrives.push(hyperdrive);
|
|
@@ -56,9 +67,26 @@ export class FakeCloudflare {
|
|
|
56
67
|
async findWorker(name) {
|
|
57
68
|
return this.workers.has(name);
|
|
58
69
|
}
|
|
70
|
+
workerTags = new Map();
|
|
71
|
+
workerHyperdrives = new Map();
|
|
72
|
+
async workerOwner(name) {
|
|
73
|
+
if (!this.workers.has(name))
|
|
74
|
+
return undefined;
|
|
75
|
+
const tags = this.workerTags.get(name) ?? [];
|
|
76
|
+
const app = tags.includes(PLATFORM_TAG) ? (tags.find((t) => t.startsWith("app:"))?.slice(4) ?? null) : null;
|
|
77
|
+
return { app, hyperdriveIds: this.workerHyperdrives.get(name) ?? [] };
|
|
78
|
+
}
|
|
79
|
+
async tagWorker(name, app, pr) {
|
|
80
|
+
this.workerTags.set(name, [PLATFORM_TAG, appTag(app), ...(pr ? [prTag(pr)] : [])]);
|
|
81
|
+
}
|
|
82
|
+
async listWorkers(namePrefix) {
|
|
83
|
+
return [...this.workers].filter((w) => w.startsWith(namePrefix));
|
|
84
|
+
}
|
|
59
85
|
async deleteWorker(name) {
|
|
60
86
|
this.workers.delete(name);
|
|
61
87
|
this.workerSecrets.delete(name);
|
|
88
|
+
this.workerTags.delete(name);
|
|
89
|
+
this.workerHyperdrives.delete(name);
|
|
62
90
|
}
|
|
63
91
|
async workerSecretNames(worker) {
|
|
64
92
|
return [...(this.workerSecrets.get(worker) ?? [])];
|
|
@@ -66,6 +94,34 @@ export class FakeCloudflare {
|
|
|
66
94
|
async dnsRecords(_zoneId, name) {
|
|
67
95
|
return this.records.filter((r) => r.name === name);
|
|
68
96
|
}
|
|
97
|
+
buckets = new Map();
|
|
98
|
+
async bucketOwner(name) {
|
|
99
|
+
const bucket = this.buckets.get(name);
|
|
100
|
+
return bucket && (bucket.owner ?? null);
|
|
101
|
+
}
|
|
102
|
+
async findBucket(name) {
|
|
103
|
+
return this.buckets.has(name);
|
|
104
|
+
}
|
|
105
|
+
async createBucket(name, app) {
|
|
106
|
+
this.buckets.set(name, { keys: [], owner: app });
|
|
107
|
+
}
|
|
108
|
+
async deleteBucket(name) {
|
|
109
|
+
if (this.buckets.get(name)?.keys.length)
|
|
110
|
+
throw new Error(`bucket ${name} is not empty`);
|
|
111
|
+
this.buckets.delete(name);
|
|
112
|
+
}
|
|
113
|
+
async bucketExpiryDays(name) {
|
|
114
|
+
return this.buckets.get(name)?.expiryDays;
|
|
115
|
+
}
|
|
116
|
+
async setBucketExpiry(name, days) {
|
|
117
|
+
this.buckets.get(name).expiryDays = days;
|
|
118
|
+
}
|
|
119
|
+
async deleteObjects(bucket, prefix) {
|
|
120
|
+
const b = this.buckets.get(bucket);
|
|
121
|
+
const before = b.keys.length;
|
|
122
|
+
b.keys = b.keys.filter((k) => !k.startsWith(prefix));
|
|
123
|
+
return before - b.keys.length;
|
|
124
|
+
}
|
|
69
125
|
async managedDnsRecords() {
|
|
70
126
|
return this.records.filter((r) => r.managed);
|
|
71
127
|
}
|
|
@@ -99,6 +155,9 @@ export class FakeMail {
|
|
|
99
155
|
async verifyDomain(id) {
|
|
100
156
|
this.domains.find((d) => d.id === id).verified = true;
|
|
101
157
|
}
|
|
158
|
+
async deleteDomain(id) {
|
|
159
|
+
this.domains = this.domains.filter((d) => d.id !== id);
|
|
160
|
+
}
|
|
102
161
|
async findApiKey(name) {
|
|
103
162
|
return this.keys.find((k) => k.name === name)?.id;
|
|
104
163
|
}
|
|
@@ -126,6 +185,9 @@ export class FakeWrangler {
|
|
|
126
185
|
const name = c.name;
|
|
127
186
|
this.deploys.push({ config: c, secrets });
|
|
128
187
|
this.cloudflare.workers.add(name);
|
|
188
|
+
// Like the real upload, a deploy carries no tags; the platform applies them afterwards.
|
|
189
|
+
this.cloudflare.workerTags.delete(name);
|
|
190
|
+
this.cloudflare.workerHyperdrives.set(name, (c.hyperdrive ?? []).map((h) => h.id));
|
|
129
191
|
const stored = this.cloudflare.workerSecrets.get(name) ?? new Set();
|
|
130
192
|
for (const key of Object.keys(secrets))
|
|
131
193
|
stored.add(key);
|
|
@@ -134,15 +196,24 @@ export class FakeWrangler {
|
|
|
134
196
|
}
|
|
135
197
|
export class FakeMigrator {
|
|
136
198
|
runs = [];
|
|
137
|
-
|
|
199
|
+
generated = 0;
|
|
200
|
+
current = true;
|
|
138
201
|
failWith;
|
|
139
|
-
async
|
|
202
|
+
async generate() {
|
|
203
|
+
this.generated++;
|
|
204
|
+
this.current = true;
|
|
205
|
+
}
|
|
206
|
+
async upToDate() {
|
|
207
|
+
return this.current;
|
|
208
|
+
}
|
|
209
|
+
async migrate(databaseUrl) {
|
|
140
210
|
if (this.failWith)
|
|
141
211
|
throw this.failWith;
|
|
142
212
|
this.runs.push(databaseUrl);
|
|
143
213
|
}
|
|
144
|
-
|
|
145
|
-
|
|
214
|
+
dropped = [];
|
|
215
|
+
async dropAll(databaseUrl) {
|
|
216
|
+
this.dropped.push(databaseUrl);
|
|
146
217
|
}
|
|
147
218
|
}
|
|
148
219
|
export function fakePorts() {
|
package/dist/fakes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fakes.js","sourceRoot":"","sources":["../src/fakes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,MAAM,OAAO,QAAQ;IACnB,QAAQ,GAAa,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"fakes.js","sourceRoot":"","sources":["../src/fakes.ts"],"names":[],"mappings":"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"}
|
package/dist/init.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { appendFile, mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
2
|
import { dirname, join, relative } from "node:path";
|
|
3
|
-
import { PreflightError } from "./lifecycle.js";
|
|
3
|
+
import { PreflightError, requirePostgres } from "./lifecycle.js";
|
|
4
4
|
import { parseDotenv, SECRETS_FILE, VARS_FILE } from "./secrets.js";
|
|
5
5
|
import { renderWorkflow, WORKFLOW_PATH } from "./workflow.js";
|
|
6
6
|
export const TOKEN_HELP = {
|
|
@@ -23,8 +23,8 @@ export async function init({ repoRoot, appDir, config, variables, run, connect }
|
|
|
23
23
|
throw new PreflightError(`the Cloudflare token cannot see a zone for ${config.hostname}; check its Zone Resources`);
|
|
24
24
|
run.note(`✓ Cloudflare account and zone ${zone.name}`);
|
|
25
25
|
if (config.database) {
|
|
26
|
-
await neon
|
|
27
|
-
run.note(`✓ Neon project ${config.database.neonProject}`);
|
|
26
|
+
await requirePostgres(neon, config.database.neonProject);
|
|
27
|
+
run.note(`✓ Neon project ${config.database.neonProject}, on Postgres 18 or later`);
|
|
28
28
|
}
|
|
29
29
|
if (config.email) {
|
|
30
30
|
// Listing domains needs the same full access that adding the app's sending domain does.
|
|
@@ -57,7 +57,7 @@ export async function init({ repoRoot, appDir, config, variables, run, connect }
|
|
|
57
57
|
export async function checkWorkflow(repoRoot, appDir, config, variables) {
|
|
58
58
|
const expected = await expectedWorkflow(repoRoot, appDir, config, variables);
|
|
59
59
|
if ((await readOptional(join(repoRoot, WORKFLOW_PATH))) !== expected) {
|
|
60
|
-
throw new PreflightError(`${WORKFLOW_PATH} differs from what this platform version writes; run \`platform init\` and commit the result`);
|
|
60
|
+
throw new PreflightError(`${WORKFLOW_PATH} differs from what this platform version writes; run \`npx @celsoft/platform init\` and commit the result`);
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
async function ensureIgnored(repoRoot, file, run) {
|
|
@@ -78,7 +78,7 @@ async function prepareSecretsFile(repoRoot, names, run) {
|
|
|
78
78
|
const values = parseDotenv(text);
|
|
79
79
|
const empty = names.filter((name) => !values[name]);
|
|
80
80
|
if (empty.length > 0) {
|
|
81
|
-
throw new PreflightError(`fill ${empty.join(" and ")} in ${path}, then rerun \`platform init\``);
|
|
81
|
+
throw new PreflightError(`fill ${empty.join(" and ")} in ${path}, then rerun \`npx @celsoft/platform init\``);
|
|
82
82
|
}
|
|
83
83
|
return values;
|
|
84
84
|
}
|