@atria/cli 0.0.12 → 0.0.15

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 CHANGED
@@ -14,14 +14,17 @@ npm install -D @atria/cli
14
14
  npx atria --help
15
15
  npx atria init my-project
16
16
  npx atria dev my-project --port 3333
17
+ npx atria setup my-project
17
18
  ```
18
19
 
19
20
  ## Commands
20
21
 
21
- - `atria init [project-directory] [--force]`
22
- Creates an atria project structure with `studio/`, `public/` (empty until publish), and `.atria/runtime/`.
23
- - `atria dev [project-directory] [--port 3333]`
24
- Serves `public/` on `localhost`, `.atria/runtime` on `admin.localhost`, and exposes `/api/health` (`503 /` on public host until first publish).
22
+ - `atria init [project-directory] [--force]`
23
+ Creates an atria project structure with `production/studio/`, `production/public/` (empty until publish), `.atria/runtime/`, and defers database setup to install-time setup.
24
+ - `atria dev [project-directory] [--port 3333]`
25
+ Serves `production/public/` on `localhost`, `.atria/runtime` on `studio.localhost`, and exposes `/api/health` (`503 /` on public host until first publish).
26
+ - `atria setup [project-directory] [--database sqlite|postgres] [--database-url <postgres-url>] [--database-only] [--auth-method google|github|email] [--force]`
27
+ Configures database + owner sign-in preference, and can launch OAuth setup in-browser. Use `--database-only` during install hooks or `--database-url` for PostgreSQL.
25
28
 
26
29
  ## Programmatic API
27
30
 
@@ -34,4 +37,4 @@ await runCli(process.argv);
34
37
  ## Notes
35
38
 
36
39
  - During `dev`, the CLI checks npm for newer `@atria/cli` versions and prints an update hint.
37
- - Current command scope is intentionally small while the CMS foundation is being stabilized.
40
+ - Setup completion is derived from database users (`pending` becomes `false` once the first owner is created).
package/dist/bin.js CHANGED
@@ -1,8 +1,27 @@
1
1
  #!/usr/bin/env node
2
- import { runCli } from "./index.js";
3
- runCli(process.argv).catch((error) => {
2
+ const originalEmitWarning = process.emitWarning.bind(process);
3
+ process.emitWarning = ((warning, ...args) => {
4
+ const warningMessage = typeof warning === "string" ? warning : warning.message;
5
+ const warningType = typeof args[0] === "string"
6
+ ? args[0]
7
+ : warning instanceof Error && typeof warning.name === "string"
8
+ ? warning.name
9
+ : "";
10
+ const isSqliteExperimentalWarning = warningType === "ExperimentalWarning" &&
11
+ warningMessage.includes("SQLite is an experimental feature");
12
+ if (isSqliteExperimentalWarning) {
13
+ return;
14
+ }
15
+ originalEmitWarning(warning, ...args);
16
+ });
17
+ const main = async () => {
18
+ const { runCli } = await import("./index.js");
19
+ await runCli(process.argv);
20
+ };
21
+ main().catch((error) => {
4
22
  const message = error instanceof Error ? error.message : String(error);
5
23
  console.error(`[atria] ${message}`);
6
24
  process.exit(1);
7
25
  });
26
+ export {};
8
27
  //# sourceMappingURL=bin.js.map
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACnC,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AAEA,MAAM,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAE9D,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,OAAuB,EAAE,GAAG,IAAe,EAAE,EAAE;IACrE,MAAM,cAAc,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAC/E,MAAM,WAAW,GACf,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;QACzB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACT,CAAC,CAAC,OAAO,YAAY,KAAK,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;YAC5D,CAAC,CAAC,OAAO,CAAC,IAAI;YACd,CAAC,CAAC,EAAE,CAAC;IAEX,MAAM,2BAA2B,GAC/B,WAAW,KAAK,qBAAqB;QACrC,cAAc,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC;IAE/D,IAAI,2BAA2B,EAAE,CAAC;QAChC,OAAO;IACT,CAAC;IAEA,mBAA2D,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;AACjF,CAAC,CAA+B,CAAC;AAEjC,MAAM,IAAI,GAAG,KAAK,IAAmB,EAAE;IACrC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -3,6 +3,7 @@ import { promises as fs } from "node:fs";
3
3
  import { startDevServer } from "@atria/server";
4
4
  import { ATRIA_RUNTIME_DIR, DEFAULT_DEV_PORT } from "@atria/shared";
5
5
  import { parseArgs } from "../utils/args.js";
6
+ import { writeRuntimeBootstrapFiles } from "../runtime/bootstrap.js";
6
7
  import { terminal } from "../utils/terminal.js";
7
8
  import { checkForCliUpdate, getCliUpdateInstallCommand } from "../utils/update-check.js";
8
9
  const printDevHelp = () => {
@@ -45,6 +46,7 @@ export const runDevCommand = async (args) => {
45
46
  catch {
46
47
  throw new Error(`Runtime not found at ${runtimeDir}. Run "atria init ${targetArgument}" first.`);
47
48
  }
49
+ await writeRuntimeBootstrapFiles(projectRoot, true);
48
50
  const server = await startDevServer({
49
51
  projectRoot,
50
52
  port
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import path from "node:path";
2
- import { ATRIA_CONFIG_FILE, ATRIA_RUNTIME_DIR, PUBLIC_OUTPUT_DIR, STUDIO_CONTENT_DIR, STUDIO_THEME_DIR } from "@atria/shared";
2
+ import { ATRIA_CONFIG_FILE, ATRIA_RUNTIME_DIR, PUBLIC_OUTPUT_DIR, STUDIO_CONTENT_DIR, STUDIO_THEME_DIR, createEnvExampleFile, runtimeAppJs, runtimeIndexHtml } from "@atria/shared";
3
3
  import { parseArgs } from "../utils/args.js";
4
4
  import { ensureDirectory, writeFile } from "../utils/fs.js";
5
5
  const buildProjectPackageJson = (projectName) => `${JSON.stringify({
@@ -7,6 +7,7 @@ const buildProjectPackageJson = (projectName) => `${JSON.stringify({
7
7
  private: true,
8
8
  version: "0.1.0",
9
9
  scripts: {
10
+ postinstall: "atria setup --database-only",
10
11
  dev: "atria dev"
11
12
  },
12
13
  devDependencies: {
@@ -17,33 +18,6 @@ const buildConfigFile = (projectName) => `${JSON.stringify({
17
18
  name: projectName,
18
19
  runtimeDir: ATRIA_RUNTIME_DIR
19
20
  }, null, 2)}\n`;
20
- const runtimeIndexHtml = `<!doctype html>
21
- <html lang="en">
22
- <head>
23
- <meta charset="UTF-8" />
24
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
25
- <title>Atria — BackOffice</title>
26
- </head>
27
- <body>
28
- <main id="bo-root">
29
- <h1>atria</h1>
30
- <p>Booting Back Office runtime...</p>
31
- </main>
32
- <script type="module" src="./app.js"></script>
33
- </body>
34
- </html>
35
- `;
36
- const runtimeAppJs = `const root = document.getElementById("bo-root");
37
-
38
- if (root) {
39
- const now = new Date().toLocaleString();
40
- root.innerHTML = [
41
- "<h1>atria Back Office</h1>",
42
- "<p>Phase 1 runtime is active.</p>",
43
- "<p>Loaded at: " + now + "</p>"
44
- ].join("");
45
- }
46
- `;
47
21
  const fileLabel = (targetRoot, filePath) => {
48
22
  const relativePath = path.relative(targetRoot, filePath);
49
23
  return relativePath.length > 0 ? relativePath : filePath;
@@ -78,6 +52,10 @@ export const runInitCommand = async (args) => {
78
52
  path: path.join(targetRoot, ATRIA_CONFIG_FILE),
79
53
  content: buildConfigFile(projectName)
80
54
  },
55
+ {
56
+ path: path.join(targetRoot, ".env.example"),
57
+ content: createEnvExampleFile()
58
+ },
81
59
  {
82
60
  path: path.join(targetRoot, STUDIO_CONTENT_DIR, ".gitkeep"),
83
61
  content: ""
@@ -113,5 +91,6 @@ export const runInitCommand = async (args) => {
113
91
  console.log(`[atria] Project ready at ${targetRoot}`);
114
92
  console.log(`[atria] Files: ${created} created, ${updated} updated, ${skipped} skipped`);
115
93
  console.log(`[atria] Runtime: ${fileLabel(targetRoot, path.join(targetRoot, ATRIA_RUNTIME_DIR))}`);
94
+ console.log("[atria] Database setup is deferred to npm install (atria setup).\n[atria] Run npm install to choose SQLite or PostgreSQL.");
116
95
  };
117
96
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const runSetupCommand: (args: string[]) => Promise<void>;
@@ -0,0 +1,608 @@
1
+ import path from "node:path";
2
+ import readline from "node:readline";
3
+ import { spawn } from "node:child_process";
4
+ import { request as httpRequest } from "node:http";
5
+ import { promises as fs } from "node:fs";
6
+ import { openAtriaDatabase } from "@atria/db";
7
+ import { startDevServer } from "@atria/server";
8
+ import { DEFAULT_DEV_PORT, parseAuthMethod } from "@atria/shared";
9
+ import { parseArgs } from "../utils/args.js";
10
+ import { terminal } from "../utils/terminal.js";
11
+ const AUTH_METHOD_CHOICES = [
12
+ { value: "google", label: "Google" },
13
+ { value: "github", label: "GitHub" },
14
+ { value: "email", label: "E-mail / password" }
15
+ ];
16
+ const DATABASE_MODE_CHOICES = [
17
+ { value: "sqlite", label: "SQLite (default)" },
18
+ { value: "postgres", label: "PostgreSQL" }
19
+ ];
20
+ const supportsColor = process.stdout.isTTY === true && !process.env.NO_COLOR;
21
+ const bold = (text) => (supportsColor ? `\u001b[1m${text}\u001b[22m` : text);
22
+ const sleep = async (ms) => new Promise((resolve) => {
23
+ setTimeout(resolve, ms);
24
+ });
25
+ const printSetupHelp = () => {
26
+ console.log("Usage: atria setup [project-directory] [--database sqlite|postgres] [--database-url <postgres-url>] [--database-only] [--auth-method google|github|email] [--force]");
27
+ };
28
+ const authMethodLabel = (authMethod) => authMethod === "google" ? "Google" : authMethod === "github" ? "GitHub" : "E-mail / password";
29
+ const parseDatabaseMode = (value) => {
30
+ if (value === "sqlite" || value === "postgres") {
31
+ return value;
32
+ }
33
+ return null;
34
+ };
35
+ const isPostgresConnectionString = (connectionString) => {
36
+ const normalized = connectionString.toLowerCase();
37
+ return normalized.startsWith("postgres://") || normalized.startsWith("postgresql://");
38
+ };
39
+ const cleanEnvValue = (value) => {
40
+ if (typeof value !== "string") {
41
+ return null;
42
+ }
43
+ const trimmed = value.trim();
44
+ return trimmed.length > 0 ? trimmed : null;
45
+ };
46
+ const toErrorMessage = (error) => {
47
+ if (error instanceof AggregateError) {
48
+ const nested = error.errors
49
+ .map((entry) => (entry instanceof Error && entry.message ? entry.message : String(entry)))
50
+ .map((entry) => entry.trim())
51
+ .filter((entry) => entry.length > 0);
52
+ if (nested.length > 0) {
53
+ return nested.join(" | ");
54
+ }
55
+ }
56
+ if (error instanceof Error && error.message.trim().length > 0) {
57
+ return error.message.trim();
58
+ }
59
+ if (typeof error === "object" && error !== null && "code" in error) {
60
+ const code = error.code;
61
+ if (typeof code === "string" && code.trim().length > 0) {
62
+ return code.trim();
63
+ }
64
+ }
65
+ return String(error).trim();
66
+ };
67
+ const openBrowser = async (url) => {
68
+ const openCommand = process.platform === "darwin"
69
+ ? { command: "open", args: [url] }
70
+ : process.platform === "win32"
71
+ ? { command: "cmd", args: ["/c", "start", "", url] }
72
+ : { command: "xdg-open", args: [url] };
73
+ try {
74
+ const child = spawn(openCommand.command, openCommand.args, {
75
+ stdio: "ignore",
76
+ detached: true
77
+ });
78
+ child.unref();
79
+ return true;
80
+ }
81
+ catch {
82
+ return false;
83
+ }
84
+ };
85
+ const parseDotEnvLine = (line) => {
86
+ const trimmed = line.trim();
87
+ if (trimmed.length === 0 || trimmed.startsWith("#")) {
88
+ return null;
89
+ }
90
+ const separatorIndex = trimmed.indexOf("=");
91
+ if (separatorIndex <= 0) {
92
+ return null;
93
+ }
94
+ const key = trimmed.slice(0, separatorIndex).trim();
95
+ const rawValue = trimmed.slice(separatorIndex + 1).trim();
96
+ if (!key) {
97
+ return null;
98
+ }
99
+ const quoted = (rawValue.startsWith('"') && rawValue.endsWith('"')) ||
100
+ (rawValue.startsWith("'") && rawValue.endsWith("'"));
101
+ const value = quoted ? rawValue.slice(1, -1) : rawValue;
102
+ return { key, value };
103
+ };
104
+ const loadProjectEnv = async (projectRoot) => {
105
+ const envPath = path.join(projectRoot, ".env");
106
+ try {
107
+ const envFile = await fs.readFile(envPath, "utf-8");
108
+ const lines = envFile.split(/\r?\n/g);
109
+ for (const line of lines) {
110
+ const parsed = parseDotEnvLine(line);
111
+ if (!parsed) {
112
+ continue;
113
+ }
114
+ if (process.env[parsed.key] === undefined) {
115
+ process.env[parsed.key] = parsed.value;
116
+ }
117
+ }
118
+ }
119
+ catch (error) {
120
+ if (error.code !== "ENOENT") {
121
+ throw error;
122
+ }
123
+ }
124
+ };
125
+ const hasPath = async (targetPath) => {
126
+ try {
127
+ await fs.access(targetPath);
128
+ return true;
129
+ }
130
+ catch {
131
+ return false;
132
+ }
133
+ };
134
+ const updateProjectEnv = async (projectRoot, updates) => {
135
+ const envPath = path.join(projectRoot, ".env");
136
+ const managedKeys = Object.keys(updates);
137
+ const content = await fs.readFile(envPath, "utf-8").catch((error) => {
138
+ if (error.code === "ENOENT") {
139
+ return "";
140
+ }
141
+ throw error;
142
+ });
143
+ const lines = content.length > 0 ? content.split(/\r?\n/g) : [];
144
+ const seen = new Set();
145
+ const outputLines = [];
146
+ for (const line of lines) {
147
+ const parsed = parseDotEnvLine(line);
148
+ if (!parsed || !managedKeys.includes(parsed.key)) {
149
+ outputLines.push(line);
150
+ continue;
151
+ }
152
+ if (seen.has(parsed.key)) {
153
+ continue;
154
+ }
155
+ seen.add(parsed.key);
156
+ const nextValue = updates[parsed.key];
157
+ if (nextValue !== null) {
158
+ outputLines.push(`${parsed.key}=${nextValue}`);
159
+ }
160
+ }
161
+ for (const key of managedKeys) {
162
+ if (seen.has(key)) {
163
+ continue;
164
+ }
165
+ const value = updates[key];
166
+ if (value !== null) {
167
+ outputLines.push(`${key}=${value}`);
168
+ }
169
+ }
170
+ const normalized = outputLines.join("\n").replace(/\n{3,}/g, "\n\n");
171
+ const finalContent = normalized.length > 0 ? `${normalized}\n` : "";
172
+ await fs.writeFile(envPath, finalContent, "utf-8");
173
+ };
174
+ const resolveConfiguredDatabaseUrl = () => cleanEnvValue(process.env.ATRIA_DATABASE_URL) ?? cleanEnvValue(process.env.DATABASE_URL);
175
+ const resolveConfiguredDatabaseMode = () => {
176
+ const explicitConnection = resolveConfiguredDatabaseUrl();
177
+ if (!explicitConnection) {
178
+ return null;
179
+ }
180
+ return isPostgresConnectionString(explicitConnection) ? "postgres" : "sqlite";
181
+ };
182
+ const ensureDatabaseReady = async (projectRoot, envOverrides = {}) => {
183
+ const database = openAtriaDatabase(projectRoot, {
184
+ env: {
185
+ ...process.env,
186
+ ...envOverrides
187
+ }
188
+ });
189
+ try {
190
+ await database.hasUsers();
191
+ }
192
+ finally {
193
+ await database.close();
194
+ }
195
+ };
196
+ const promptForChoice = async (promptText, choices) => new Promise((resolve, reject) => {
197
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
198
+ reject(new Error("Interactive setup prompt requires a TTY terminal."));
199
+ return;
200
+ }
201
+ let selectedIndex = 0;
202
+ let hasNavigated = false;
203
+ let hasSavedCursor = false;
204
+ let cursorHidden = false;
205
+ const render = () => {
206
+ const promptHint = hasNavigated ? "" : ` ${terminal.dim("(Use arrow keys)")}`;
207
+ const promptHeader = `${terminal.green("?")} ${bold(promptText)}${promptHint}`;
208
+ const lines = [
209
+ promptHeader,
210
+ ...choices.map((choice, index) => index === selectedIndex
211
+ ? `${terminal.cyan("❯")} ${terminal.cyan(choice.label)}`
212
+ : ` ${choice.label}`)
213
+ ];
214
+ if (!hasSavedCursor) {
215
+ process.stdout.write("\x1b[s");
216
+ hasSavedCursor = true;
217
+ }
218
+ else {
219
+ process.stdout.write("\x1b[u");
220
+ }
221
+ if (!cursorHidden) {
222
+ process.stdout.write("\x1b[?25l");
223
+ cursorHidden = true;
224
+ }
225
+ readline.clearScreenDown(process.stdout);
226
+ for (let index = 0; index < lines.length; index += 1) {
227
+ process.stdout.write(lines[index]);
228
+ if (index < lines.length - 1) {
229
+ process.stdout.write("\n");
230
+ }
231
+ }
232
+ };
233
+ const cleanup = () => {
234
+ process.stdin.off("keypress", onKeypress);
235
+ process.stdin.setRawMode(false);
236
+ process.stdin.pause();
237
+ if (hasSavedCursor) {
238
+ process.stdout.write("\x1b[u");
239
+ readline.clearScreenDown(process.stdout);
240
+ }
241
+ if (cursorHidden) {
242
+ process.stdout.write("\x1b[?25h");
243
+ }
244
+ process.stdout.write("\n");
245
+ };
246
+ const onKeypress = (_input, key) => {
247
+ if (key.name === "up") {
248
+ hasNavigated = true;
249
+ selectedIndex = selectedIndex === 0 ? choices.length - 1 : selectedIndex - 1;
250
+ render();
251
+ return;
252
+ }
253
+ if (key.name === "down") {
254
+ hasNavigated = true;
255
+ selectedIndex = (selectedIndex + 1) % choices.length;
256
+ render();
257
+ return;
258
+ }
259
+ if (key.name === "return" || key.name === "enter") {
260
+ cleanup();
261
+ resolve(choices[selectedIndex].value);
262
+ return;
263
+ }
264
+ if (key.ctrl && key.name === "c") {
265
+ cleanup();
266
+ reject(new Error("Setup cancelled."));
267
+ }
268
+ };
269
+ readline.emitKeypressEvents(process.stdin);
270
+ process.stdin.setRawMode(true);
271
+ process.stdin.resume();
272
+ process.stdin.on("keypress", onKeypress);
273
+ render();
274
+ });
275
+ const promptForInput = async (promptText) => new Promise((resolve, reject) => {
276
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
277
+ reject(new Error("Interactive setup prompt requires a TTY terminal."));
278
+ return;
279
+ }
280
+ const input = readline.createInterface({
281
+ input: process.stdin,
282
+ output: process.stdout
283
+ });
284
+ input.question(`${promptText}: `, (answer) => {
285
+ input.close();
286
+ resolve(answer.trim());
287
+ });
288
+ input.on("SIGINT", () => {
289
+ input.close();
290
+ reject(new Error("Setup cancelled."));
291
+ });
292
+ });
293
+ const configureDatabase = async (projectRoot, options) => {
294
+ await loadProjectEnv(projectRoot);
295
+ let selectedMode = options.databaseModeFlag;
296
+ const configuredMode = resolveConfiguredDatabaseMode();
297
+ const configuredUrl = resolveConfiguredDatabaseUrl();
298
+ const hasEnvFile = await hasPath(path.join(projectRoot, ".env"));
299
+ const shouldPrompt = options.force || (configuredMode === null && !hasEnvFile);
300
+ if (selectedMode === null) {
301
+ if (shouldPrompt && process.stdin.isTTY && process.stdout.isTTY) {
302
+ selectedMode = await promptForChoice("Select database engine", DATABASE_MODE_CHOICES);
303
+ console.log(`${terminal.green("?")} ${bold("Select database engine")} ${terminal.cyan(selectedMode === "sqlite" ? "SQLite (default)" : "PostgreSQL")}`);
304
+ }
305
+ else {
306
+ selectedMode = configuredMode ?? "sqlite";
307
+ }
308
+ }
309
+ if (selectedMode === "sqlite") {
310
+ await updateProjectEnv(projectRoot, {
311
+ ATRIA_DATABASE_URL: null,
312
+ DATABASE_URL: null
313
+ });
314
+ delete process.env.ATRIA_DATABASE_URL;
315
+ delete process.env.DATABASE_URL;
316
+ await ensureDatabaseReady(projectRoot, {
317
+ ATRIA_DATABASE_URL: undefined,
318
+ DATABASE_URL: undefined
319
+ });
320
+ return "sqlite";
321
+ }
322
+ let postgresUrl = options.databaseUrlFlag ?? (configuredMode === "postgres" ? configuredUrl : null);
323
+ if (!postgresUrl) {
324
+ if (process.stdin.isTTY && process.stdout.isTTY) {
325
+ postgresUrl = await promptForInput("PostgreSQL connection URL");
326
+ }
327
+ else {
328
+ throw new Error("PostgreSQL mode requires --database-url or ATRIA_DATABASE_URL.");
329
+ }
330
+ }
331
+ if (!isPostgresConnectionString(postgresUrl)) {
332
+ throw new Error('Invalid PostgreSQL URL. Use "postgres://" or "postgresql://".');
333
+ }
334
+ await updateProjectEnv(projectRoot, {
335
+ ATRIA_DATABASE_URL: postgresUrl,
336
+ DATABASE_URL: null
337
+ });
338
+ process.env.ATRIA_DATABASE_URL = postgresUrl;
339
+ delete process.env.DATABASE_URL;
340
+ try {
341
+ await ensureDatabaseReady(projectRoot, {
342
+ ATRIA_DATABASE_URL: postgresUrl,
343
+ DATABASE_URL: undefined
344
+ });
345
+ }
346
+ catch (error) {
347
+ const message = toErrorMessage(error);
348
+ throw new Error(`Failed to connect to PostgreSQL. ${message}`);
349
+ }
350
+ return "postgres";
351
+ };
352
+ const requestStudio = async (requestPath) => new Promise((resolve, reject) => {
353
+ const request = httpRequest({
354
+ protocol: "http:",
355
+ hostname: "localhost",
356
+ port: DEFAULT_DEV_PORT,
357
+ method: "GET",
358
+ path: requestPath,
359
+ headers: {
360
+ host: `studio.localhost:${DEFAULT_DEV_PORT}`,
361
+ accept: "application/json"
362
+ }
363
+ }, (response) => {
364
+ let body = "";
365
+ response.setEncoding("utf8");
366
+ response.on("data", (chunk) => {
367
+ body += chunk;
368
+ });
369
+ response.on("end", () => {
370
+ resolve({
371
+ statusCode: response.statusCode ?? 500,
372
+ headers: response.headers,
373
+ body
374
+ });
375
+ });
376
+ });
377
+ request.on("error", reject);
378
+ request.end();
379
+ });
380
+ const isProviderConfigured = async (provider) => {
381
+ try {
382
+ const response = await requestStudio("/api/auth/providers");
383
+ if (response.statusCode < 200 || response.statusCode >= 300) {
384
+ return false;
385
+ }
386
+ const payload = JSON.parse(response.body);
387
+ return Array.isArray(payload.providers) && payload.providers.includes(provider);
388
+ }
389
+ catch {
390
+ return false;
391
+ }
392
+ };
393
+ const resolveProviderAuthorizationUrl = async (provider) => {
394
+ const response = await requestStudio(`/api/auth/start/${provider}`);
395
+ const locationHeader = response.headers.location;
396
+ const location = Array.isArray(locationHeader) ? locationHeader[0] : locationHeader;
397
+ if (response.statusCode >= 300 && response.statusCode < 400 && typeof location === "string") {
398
+ return location;
399
+ }
400
+ if (response.statusCode >= 400) {
401
+ throw new Error(`Failed to start OAuth for ${authMethodLabel(provider)} (status ${response.statusCode}).`);
402
+ }
403
+ return `http://studio.localhost:${DEFAULT_DEV_PORT}/api/auth/start/${provider}`;
404
+ };
405
+ const requestSetupStatus = async () => {
406
+ try {
407
+ const response = await requestStudio("/api/setup/status");
408
+ if (response.statusCode < 200 || response.statusCode >= 300) {
409
+ return {
410
+ statusCode: response.statusCode,
411
+ payload: null
412
+ };
413
+ }
414
+ return {
415
+ statusCode: response.statusCode,
416
+ payload: JSON.parse(response.body)
417
+ };
418
+ }
419
+ catch {
420
+ return {
421
+ statusCode: 500,
422
+ payload: null
423
+ };
424
+ }
425
+ };
426
+ const startLocalStudioServer = async (projectRoot) => {
427
+ try {
428
+ const server = await startDevServer({
429
+ projectRoot,
430
+ port: DEFAULT_DEV_PORT
431
+ });
432
+ return { server };
433
+ }
434
+ catch (error) {
435
+ const message = error instanceof Error ? error.message : String(error);
436
+ if (message.includes("EADDRINUSE")) {
437
+ return { server: null };
438
+ }
439
+ throw error;
440
+ }
441
+ };
442
+ const waitForSetupCompletion = async (abortSignal) => {
443
+ while (!abortSignal.cancelled) {
444
+ const setupStatus = await requestSetupStatus();
445
+ if (setupStatus.statusCode >= 200 && setupStatus.statusCode < 300) {
446
+ if (setupStatus.payload?.pending === false) {
447
+ return true;
448
+ }
449
+ }
450
+ await sleep(1200);
451
+ }
452
+ return false;
453
+ };
454
+ const startWaitingSpinner = (message) => {
455
+ if (!process.stdout.isTTY) {
456
+ console.log(`${terminal.cyan("⋮")} ${message}`);
457
+ return {
458
+ stop: () => { }
459
+ };
460
+ }
461
+ const frames = ["⠇", "⠏", "⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧"];
462
+ let frameIndex = 0;
463
+ let printedLength = 0;
464
+ const render = () => {
465
+ const line = `${terminal.cyan(`${frames[frameIndex]}`)} ${message}`;
466
+ frameIndex = (frameIndex + 1) % frames.length;
467
+ const paddedLine = printedLength > line.length ? `${line}${" ".repeat(printedLength - line.length)}` : line;
468
+ printedLength = Math.max(printedLength, line.length);
469
+ process.stdout.write(`\r${paddedLine}`);
470
+ };
471
+ render();
472
+ const timer = setInterval(render, 90);
473
+ return {
474
+ stop: () => {
475
+ clearInterval(timer);
476
+ process.stdout.write(`\r${" ".repeat(printedLength)}\r`);
477
+ }
478
+ };
479
+ };
480
+ const isOAuthMethod = (authMethod) => authMethod === "google" || authMethod === "github";
481
+ const runOAuthSetupFlow = async (projectRoot, authMethod) => {
482
+ await loadProjectEnv(projectRoot);
483
+ const { server } = await startLocalStudioServer(projectRoot);
484
+ try {
485
+ const providerConfigured = await isProviderConfigured(authMethod);
486
+ if (!providerConfigured) {
487
+ console.log(`${terminal.cyan("⋮")} OAuth provider ${terminal.cyan(authMethodLabel(authMethod))} is not available right now.`);
488
+ return;
489
+ }
490
+ const authorizationUrl = await resolveProviderAuthorizationUrl(authMethod);
491
+ console.log(`Opening browser at ${authorizationUrl}`);
492
+ const opened = await openBrowser(authorizationUrl);
493
+ if (!opened) {
494
+ console.log(`${terminal.cyan("⋮")} Open this URL manually: ${authorizationUrl}`);
495
+ }
496
+ const spinnerMessage = "Waiting for browser login to complete... Press Ctrl + C to cancel";
497
+ let waitingSpinner = startWaitingSpinner(spinnerMessage);
498
+ const abortSignal = { cancelled: false };
499
+ const handleSigInt = () => {
500
+ abortSignal.cancelled = true;
501
+ };
502
+ process.once("SIGINT", handleSigInt);
503
+ try {
504
+ await waitForSetupCompletion(abortSignal);
505
+ }
506
+ finally {
507
+ process.off("SIGINT", handleSigInt);
508
+ if (waitingSpinner) {
509
+ waitingSpinner.stop();
510
+ waitingSpinner = null;
511
+ }
512
+ }
513
+ }
514
+ finally {
515
+ if (server) {
516
+ await server.close();
517
+ }
518
+ }
519
+ };
520
+ const promptForAuthMethod = async () => promptForChoice("Please log in or create a new account", AUTH_METHOD_CHOICES);
521
+ const readOwnerSetupState = async (projectRoot) => {
522
+ const database = openAtriaDatabase(projectRoot);
523
+ try {
524
+ return await database.getOwnerSetupState();
525
+ }
526
+ finally {
527
+ await database.close();
528
+ }
529
+ };
530
+ const writePreferredAuthMethod = async (projectRoot, authMethod) => {
531
+ const database = openAtriaDatabase(projectRoot);
532
+ try {
533
+ await database.setPreferredAuthMethod(authMethod);
534
+ }
535
+ finally {
536
+ await database.close();
537
+ }
538
+ };
539
+ export const runSetupCommand = async (args) => {
540
+ const parsedArgs = parseArgs(args);
541
+ if (parsedArgs.flags.help) {
542
+ printSetupHelp();
543
+ return;
544
+ }
545
+ if (parsedArgs.flags.complete === true) {
546
+ throw new Error('Option "--complete" was removed. Setup completion is now derived from database users.');
547
+ }
548
+ const targetArgument = parsedArgs.positionals[0] ?? ".";
549
+ const projectRoot = path.resolve(process.cwd(), targetArgument);
550
+ const force = parsedArgs.flags.force === true;
551
+ const databaseOnly = parsedArgs.flags["database-only"] === true;
552
+ const databaseUrlFromFlag = typeof parsedArgs.flags["database-url"] === "string"
553
+ ? cleanEnvValue(String(parsedArgs.flags["database-url"]))
554
+ : null;
555
+ let databaseModeFromFlag = typeof parsedArgs.flags.database === "string"
556
+ ? parseDatabaseMode(String(parsedArgs.flags.database).toLowerCase())
557
+ : null;
558
+ if (databaseUrlFromFlag && databaseModeFromFlag === null) {
559
+ databaseModeFromFlag = "postgres";
560
+ }
561
+ const authMethodFromFlag = typeof parsedArgs.flags["auth-method"] === "string"
562
+ ? parseAuthMethod(String(parsedArgs.flags["auth-method"]).toLowerCase())
563
+ : null;
564
+ if (parsedArgs.flags.database && databaseModeFromFlag === null) {
565
+ throw new Error('Invalid --database value. Use "sqlite" or "postgres".');
566
+ }
567
+ if (databaseModeFromFlag === "sqlite" && databaseUrlFromFlag) {
568
+ throw new Error('Option --database-url requires --database postgres.');
569
+ }
570
+ if (parsedArgs.flags["database-url"] && !databaseUrlFromFlag) {
571
+ throw new Error('Option --database-url requires a non-empty PostgreSQL URL.');
572
+ }
573
+ if (parsedArgs.flags["auth-method"] && authMethodFromFlag === null) {
574
+ throw new Error('Invalid --auth-method value. Use "google", "github", or "email".');
575
+ }
576
+ await configureDatabase(projectRoot, {
577
+ force,
578
+ databaseModeFlag: databaseModeFromFlag,
579
+ databaseUrlFlag: databaseUrlFromFlag
580
+ });
581
+ if (databaseOnly) {
582
+ return;
583
+ }
584
+ const existingSetupState = await readOwnerSetupState(projectRoot);
585
+ if (!existingSetupState.pending && !force && authMethodFromFlag === null) {
586
+ return;
587
+ }
588
+ if (existingSetupState.preferredAuthMethod && !force && authMethodFromFlag === null) {
589
+ return;
590
+ }
591
+ let selectedAuthMethod = authMethodFromFlag;
592
+ let selectedViaPrompt = false;
593
+ if (selectedAuthMethod === null && process.stdin.isTTY && process.stdout.isTTY) {
594
+ selectedAuthMethod = await promptForAuthMethod();
595
+ selectedViaPrompt = true;
596
+ }
597
+ await writePreferredAuthMethod(projectRoot, selectedAuthMethod);
598
+ if (selectedAuthMethod !== null && selectedViaPrompt) {
599
+ const selectedLabel = authMethodLabel(selectedAuthMethod);
600
+ console.log(`${terminal.green("?")} ${bold("Please log in or create a new account")} ${terminal.cyan(selectedLabel)}`);
601
+ if (isOAuthMethod(selectedAuthMethod)) {
602
+ await runOAuthSetupFlow(projectRoot, selectedAuthMethod);
603
+ return;
604
+ }
605
+ console.log(`${terminal.cyan("⋮")} Email/password setup is coming soon.`);
606
+ }
607
+ };
608
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAwB,MAAM,eAAe,CAAC;AACrE,OAAO,EACL,gBAAgB,EAChB,eAAe,EAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAiChD,MAAM,mBAAmB,GAAoC;IAC3D,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACpC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACpC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,mBAAmB,EAAE;CAC/C,CAAC;AAEF,MAAM,qBAAqB,GAAsC;IAC/D,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,kBAAkB,EAAE;IAC9C,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE;CAC3C,CAAC;AAEF,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAE7E,MAAM,IAAI,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7F,MAAM,KAAK,GAAG,KAAK,EAAE,EAAU,EAAiB,EAAE,CAChD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IACtB,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,MAAM,cAAc,GAAG,GAAS,EAAE;IAChC,OAAO,CAAC,GAAG,CACT,qKAAqK,CACtK,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,UAAsB,EAAU,EAAE,CACzD,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC;AAEhG,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAuB,EAAE;IAC/D,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,CAAC,gBAAwB,EAAW,EAAE;IACvE,MAAM,UAAU,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC;IAClD,OAAO,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACxF,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAiB,EAAE;IACjE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAc,EAAU,EAAE;IAChD,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;aACxB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;aACzF,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEvC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;QACnE,MAAM,IAAI,GAAI,KAA4B,CAAC,IAAI,CAAC;QAChD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,KAAK,EAAE,GAAW,EAAoB,EAAE;IAC1D,MAAM,WAAW,GACf,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAC3B,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;QAClC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC5B,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE;YACpD,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,EAAE;YACzD,KAAK,EAAE,QAAQ;YACf,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,IAAY,EAAyC,EAAE;IAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GACV,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACpD,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACxD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,KAAK,EAAE,WAAmB,EAAiB,EAAE;IAClE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,SAAS;YACX,CAAC;YACD,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,KAAK,EAAE,UAAkB,EAAoB,EAAE;IAC7D,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,KAAK,EAC5B,WAAmB,EACnB,OAAsC,EACvB,EAAE;IACjB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAA4B,EAAE,EAAE;QACzF,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACjD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,WAAW,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,4BAA4B,GAAG,GAAkB,EAAE,CACvD,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAE3F,MAAM,6BAA6B,GAAG,GAAwB,EAAE;IAC9D,MAAM,kBAAkB,GAAG,4BAA4B,EAAE,CAAC;IAC1D,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,0BAA0B,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,EAC/B,WAAmB,EACnB,eAAmD,EAAE,EACtC,EAAE;IACjB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,WAAW,EAAE;QAC9C,GAAG,EAAE;YACH,GAAG,OAAO,CAAC,GAAG;YACd,GAAG,YAAY;SAChB;KACF,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,KAAK,EAC3B,UAAkB,EAClB,OAA+B,EACnB,EAAE,CACd,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;QACvE,OAAO;IACT,CAAC;IAED,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC9E,MAAM,YAAY,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,UAAU,EAAE,CAAC;QAC/E,MAAM,KAAK,GAAG;YACZ,YAAY;YACZ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAC/B,KAAK,KAAK,aAAa;gBACrB,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACxD,CAAC,CAAC,KAAK,MAAM,CAAC,KAAK,EAAE,CACxB;SACF,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC/B,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAClC,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YACnC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1C,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC/B,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,GAAiB,EAAQ,EAAE;QAC7D,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACtB,YAAY,GAAG,IAAI,CAAC;YACpB,aAAa,GAAG,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC;YAC7E,MAAM,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,YAAY,GAAG,IAAI,CAAC;YACpB,aAAa,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;YACrD,MAAM,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAClD,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,CAAC;IAEF,QAAQ,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,EAAE,CAAC;AACX,CAAC,CAAC,CAAC;AAEL,MAAM,cAAc,GAAG,KAAK,EAAE,UAAkB,EAAmB,EAAE,CACnE,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;QACvE,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC;QACrC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,KAAK,CAAC,QAAQ,CAAC,GAAG,UAAU,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;QAC3C,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,MAAM,iBAAiB,GAAG,KAAK,EAC7B,WAAmB,EACnB,OAIC,EACsB,EAAE;IACzB,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;IAElC,IAAI,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAC5C,MAAM,cAAc,GAAG,6BAA6B,EAAE,CAAC;IACvD,MAAM,aAAa,GAAG,4BAA4B,EAAE,CAAC;IACrD,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;IAE/E,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,IAAI,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAChE,YAAY,GAAG,MAAM,eAAe,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;YACtF,OAAO,CAAC,GAAG,CACT,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,wBAAwB,CAAC,IAAI,QAAQ,CAAC,IAAI,CACvE,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAC9D,EAAE,CACJ,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,cAAc,IAAI,QAAQ,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,gBAAgB,CAAC,WAAW,EAAE;YAClC,kBAAkB,EAAE,IAAI;YACxB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;QACtC,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAEhC,MAAM,mBAAmB,CAAC,WAAW,EAAE;YACrC,kBAAkB,EAAE,SAAS;YAC7B,YAAY,EAAE,SAAS;SACxB,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,WAAW,GAAG,OAAO,CAAC,eAAe,IAAI,CAAC,cAAc,KAAK,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAChD,WAAW,GAAG,MAAM,cAAc,CAAC,2BAA2B,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAED,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,gBAAgB,CAAC,WAAW,EAAE;QAClC,kBAAkB,EAAE,WAAW;QAC/B,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,WAAW,CAAC;IAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,WAAW,EAAE;YACrC,kBAAkB,EAAE,WAAW;YAC/B,YAAY,EAAE,SAAS;SACxB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,KAAK,EAAE,WAAmB,EAAgC,EAAE,CAChF,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAG,WAAW,CACzB;QACE,QAAQ,EAAE,OAAO;QACjB,QAAQ,EAAE,WAAW;QACrB,IAAI,EAAE,gBAAgB;QACtB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE;YACP,IAAI,EAAE,oBAAoB,gBAAgB,EAAE;YAC5C,MAAM,EAAE,kBAAkB;SAC3B;KACF,EACD,CAAC,QAAQ,EAAE,EAAE;QACX,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5B,IAAI,IAAI,KAAK,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACtB,OAAO,CAAC;gBACN,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,GAAG;gBACtC,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,IAAI;aACL,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC;AAEL,MAAM,oBAAoB,GAAG,KAAK,EAAE,QAAoB,EAAoB,EAAE;IAC5E,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,qBAAqB,CAAC,CAAC;QAC5D,IAAI,QAAQ,CAAC,UAAU,GAAG,GAAG,IAAI,QAAQ,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAA4B,CAAC;QACrE,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAClF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,+BAA+B,GAAG,KAAK,EAAE,QAAoB,EAAmB,EAAE;IACtF,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IACpE,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;IACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;IACpF,IAAI,QAAQ,CAAC,UAAU,IAAI,GAAG,IAAI,QAAQ,CAAC,UAAU,GAAG,GAAG,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC5F,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,QAAQ,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,6BAA6B,eAAe,CAAC,QAAQ,CAAC,YAAY,QAAQ,CAAC,UAAU,IAAI,CAC1F,CAAC;IACJ,CAAC;IAED,OAAO,2BAA2B,gBAAgB,mBAAmB,QAAQ,EAAE,CAAC;AAClF,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,KAAK,IAAiC,EAAE;IACjE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,mBAAmB,CAAC,CAAC;QAC1D,IAAI,QAAQ,CAAC,UAAU,GAAG,GAAG,IAAI,QAAQ,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;YAC5D,OAAO;gBACL,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,OAAO;YACL,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAuB;SACzD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,KAAK,EAClC,WAAmB,EAC0B,EAAE;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YAClC,WAAW;YACX,IAAI,EAAE,gBAAgB;SACvB,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1B,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,KAAK,EAAE,WAAmC,EAAoB,EAAE;IAC7F,OAAO,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAC/C,IAAI,WAAW,CAAC,UAAU,IAAI,GAAG,IAAI,WAAW,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;YAClE,IAAI,WAAW,CAAC,OAAO,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAkB,EAAE;IAC9D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;QAChD,OAAO;YACL,IAAI,EAAE,GAAS,EAAE,GAAE,CAAC;SACrB,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAClE,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,MAAM,MAAM,GAAG,GAAS,EAAE;QACxB,MAAM,IAAI,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;QACpE,UAAU,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;QAC9C,MAAM,UAAU,GACd,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3F,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,MAAM,EAAE,CAAC;IACT,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEtC,OAAO;QACL,IAAI,EAAE,GAAS,EAAE;YACf,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,UAAsB,EAAqC,EAAE,CAClF,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,QAAQ,CAAC;AAErD,MAAM,iBAAiB,GAAG,KAAK,EAC7B,WAAmB,EACnB,UAA+B,EAChB,EAAE;IACjB,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAE7D,IAAI,CAAC;QACH,MAAM,kBAAkB,GAAG,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAClE,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CACT,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,mBAAmB,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,8BAA8B,CACjH,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,+BAA+B,CAAC,UAAU,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,sBAAsB,gBAAgB,EAAE,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,gBAAgB,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,cAAc,GAAG,mEAAmE,CAAC;QAC3F,IAAI,cAAc,GAA0B,mBAAmB,CAAC,cAAc,CAAC,CAAC;QAEhF,MAAM,WAAW,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACzC,MAAM,YAAY,GAAG,GAAS,EAAE;YAC9B,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;QAC/B,CAAC,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,sBAAsB,CAAC,WAAW,CAAC,CAAC;QAC5C,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACpC,IAAI,cAAc,EAAE,CAAC;gBACnB,cAAc,CAAC,IAAI,EAAE,CAAC;gBACtB,cAAc,GAAG,IAAI,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,IAAyB,EAAE,CAC1D,eAAe,CAAC,uCAAuC,EAAE,mBAAmB,CAAC,CAAC;AAEhF,MAAM,mBAAmB,GAAG,KAAK,EAAE,WAAmB,EAA4B,EAAE;IAClF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,kBAAkB,EAAE,CAAC;IAC7C,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,KAAK,EACpC,WAAmB,EACnB,UAA6B,EACd,EAAE;IACjB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,IAAc,EAAiB,EAAE;IACrE,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1B,cAAc,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC;IAC3G,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC;IAC9C,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IAEhE,MAAM,mBAAmB,GACvB,OAAO,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,QAAQ;QAClD,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,IAAI,CAAC;IAEX,IAAI,oBAAoB,GACtB,OAAO,UAAU,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAC3C,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QACpE,CAAC,CAAC,IAAI,CAAC;IAEX,IAAI,mBAAmB,IAAI,oBAAoB,KAAK,IAAI,EAAE,CAAC;QACzD,oBAAoB,GAAG,UAAU,CAAC;IACpC,CAAC;IAED,MAAM,kBAAkB,GACtB,OAAO,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,QAAQ;QACjD,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACxE,CAAC,CAAC,IAAI,CAAC;IAEX,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,IAAI,oBAAoB,KAAK,IAAI,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,oBAAoB,KAAK,QAAQ,IAAI,mBAAmB,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtF,CAAC;IAED,MAAM,iBAAiB,CAAC,WAAW,EAAE;QACnC,KAAK;QACL,gBAAgB,EAAE,oBAAoB;QACtC,eAAe,EAAE,mBAAmB;KACrC,CAAC,CAAC;IAEH,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAM,mBAAmB,CAAC,WAAW,CAAC,CAAC;IAElE,IAAI,CAAC,kBAAkB,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;QACzE,OAAO;IACT,CAAC;IAED,IAAI,kBAAkB,CAAC,mBAAmB,IAAI,CAAC,KAAK,IAAI,kBAAkB,KAAK,IAAI,EAAE,CAAC;QACpF,OAAO;IACT,CAAC;IAED,IAAI,kBAAkB,GAAG,kBAAkB,CAAC;IAC5C,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,kBAAkB,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC/E,kBAAkB,GAAG,MAAM,mBAAmB,EAAE,CAAC;QACjD,iBAAiB,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,MAAM,wBAAwB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAEhE,IAAI,kBAAkB,KAAK,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACrD,MAAM,aAAa,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CACT,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,uCAAuC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAC1G,CAAC;QAEF,IAAI,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACtC,MAAM,iBAAiB,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -1,11 +1,13 @@
1
1
  import { runDevCommand } from "./commands/dev.js";
2
2
  import { runInitCommand } from "./commands/init.js";
3
+ import { runSetupCommand } from "./commands/setup.js";
3
4
  const printHelp = () => {
4
5
  console.log("atria CLI");
5
6
  console.log("");
6
7
  console.log("Commands:");
7
8
  console.log(" atria init [project-directory] [--force]");
8
9
  console.log(" atria dev [project-directory] [--port 3333]");
10
+ console.log(" atria setup [project-directory] [--database sqlite|postgres] [--database-url <postgres-url>] [--database-only] [--auth-method google|github|email] [--force]");
9
11
  };
10
12
  export const runCli = async (argv) => {
11
13
  const command = argv[2];
@@ -22,6 +24,10 @@ export const runCli = async (argv) => {
22
24
  await runDevCommand(args);
23
25
  return;
24
26
  }
27
+ if (command === "setup") {
28
+ await runSetupCommand(args);
29
+ return;
30
+ }
25
31
  throw new Error(`Unknown command "${command}". Run "atria --help" for usage.`);
26
32
  };
27
33
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,SAAS,GAAG,GAAS,EAAE;IAC3B,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;AAC/D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,IAAc,EAAiB,EAAE;IAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzD,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,kCAAkC,CAAC,CAAC;AACjF,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,SAAS,GAAG,GAAS,EAAE;IAC3B,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,gKAAgK,CAAC,CAAC;AAChL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAG,KAAK,EAAE,IAAc,EAAiB,EAAE;IAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE3B,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzD,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO;IACT,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,oBAAoB,OAAO,kCAAkC,CAAC,CAAC;AACjF,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type WriteStatus } from "../utils/fs.js";
2
+ interface RuntimeBootstrapWriteResult {
3
+ indexStatus: WriteStatus;
4
+ appStatus: WriteStatus;
5
+ }
6
+ export declare const writeRuntimeBootstrapFiles: (projectRoot: string, force?: boolean) => Promise<RuntimeBootstrapWriteResult>;
7
+ export {};
@@ -0,0 +1,16 @@
1
+ import path from "node:path";
2
+ import { ATRIA_RUNTIME_DIR, runtimeAppJs, runtimeIndexHtml } from "@atria/shared";
3
+ import { writeFile } from "../utils/fs.js";
4
+ export const writeRuntimeBootstrapFiles = async (projectRoot, force = false) => {
5
+ const runtimeIndexPath = path.join(projectRoot, ATRIA_RUNTIME_DIR, "index.html");
6
+ const runtimeAppPath = path.join(projectRoot, ATRIA_RUNTIME_DIR, "app.js");
7
+ const [indexStatus, appStatus] = await Promise.all([
8
+ writeFile(runtimeIndexPath, runtimeIndexHtml, force),
9
+ writeFile(runtimeAppPath, runtimeAppJs, force)
10
+ ]);
11
+ return {
12
+ indexStatus,
13
+ appStatus
14
+ };
15
+ };
16
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/runtime/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EAAoB,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAO7D,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,EAC7C,WAAmB,EACnB,KAAK,GAAG,KAAK,EACyB,EAAE;IACxC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,EAAE,YAAY,CAAC,CAAC;IACjF,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAE3E,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACjD,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,CAAC;QACpD,SAAS,CAAC,cAAc,EAAE,YAAY,EAAE,KAAK,CAAC;KAC/C,CAAC,CAAC;IAEH,OAAO;QACL,WAAW;QACX,SAAS;KACV,CAAC;AACJ,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atria/cli",
3
- "version": "0.0.12",
3
+ "version": "0.0.15",
4
4
  "description": "CLI for atria project bootstrap and development",
5
5
  "keywords": [
6
6
  "atria",
@@ -27,8 +27,9 @@
27
27
  "dist"
28
28
  ],
29
29
  "dependencies": {
30
- "@atria/server": "0.0.10",
31
- "@atria/shared": "0.0.8"
30
+ "@atria/db": "0.0.7",
31
+ "@atria/server": "0.0.13",
32
+ "@atria/shared": "0.0.11"
32
33
  },
33
34
  "publishConfig": {
34
35
  "access": "public"