@atria/cli 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
package/dist/bin.js ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ import { runCli } from "./index.js";
3
+ runCli(process.argv).catch((error) => {
4
+ const message = error instanceof Error ? error.message : String(error);
5
+ console.error(`[atria] ${message}`);
6
+ process.exit(1);
7
+ });
8
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +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"}
@@ -0,0 +1 @@
1
+ export declare const runDevCommand: (args: string[]) => Promise<void>;
@@ -0,0 +1,65 @@
1
+ import path from "node:path";
2
+ import { promises as fs } from "node:fs";
3
+ import { startDevServer } from "@atria/server";
4
+ import { ATRIA_RUNTIME_DIR, DEFAULT_DEV_PORT } from "@atria/shared";
5
+ import { parseArgs } from "../utils/args.js";
6
+ import { terminal } from "../utils/terminal.js";
7
+ import { checkForCliUpdate, getCliUpdateInstallCommand } from "../utils/update-check.js";
8
+ const printDevHelp = () => {
9
+ console.log("Usage: atria dev [project-directory] [--port 3333]");
10
+ };
11
+ const parsePort = (value) => {
12
+ if (value === undefined || value === true) {
13
+ return DEFAULT_DEV_PORT;
14
+ }
15
+ const parsed = Number.parseInt(String(value), 10);
16
+ if (Number.isNaN(parsed) || parsed <= 0) {
17
+ throw new Error(`Invalid --port value: ${value}`);
18
+ }
19
+ return parsed;
20
+ };
21
+ const notifyCliUpdate = async (projectRoot) => {
22
+ const updateInfo = await checkForCliUpdate();
23
+ if (!updateInfo) {
24
+ return;
25
+ }
26
+ const installCommand = await getCliUpdateInstallCommand(projectRoot);
27
+ console.log(`[atria] ${terminal.yellow("Update available")}: @atria/cli ${updateInfo.currentVersion} -> ${updateInfo.latestVersion}`);
28
+ console.log(`[atria] ${terminal.dim("Run")} ${terminal.cyan(installCommand)}`);
29
+ };
30
+ export const runDevCommand = async (args) => {
31
+ const parsedArgs = parseArgs(args);
32
+ if (parsedArgs.flags.help) {
33
+ printDevHelp();
34
+ return;
35
+ }
36
+ const targetArgument = parsedArgs.positionals[0] ?? ".";
37
+ const projectRoot = path.resolve(process.cwd(), targetArgument);
38
+ const port = parsePort(parsedArgs.flags.port);
39
+ const runtimeDir = path.join(projectRoot, ATRIA_RUNTIME_DIR);
40
+ try {
41
+ await fs.access(runtimeDir);
42
+ }
43
+ catch {
44
+ throw new Error(`Runtime not found at ${runtimeDir}. Run "atria init ${targetArgument}" first.`);
45
+ }
46
+ const server = await startDevServer({
47
+ projectRoot,
48
+ port
49
+ });
50
+ console.log(`[atria] Dev server running at ${terminal.blue(server.url)}`);
51
+ console.log(`[atria] ${terminal.dim("Open in browser:")} ${terminal.blue(server.url)}`);
52
+ console.log(`[atria] Serving ${runtimeDir}`);
53
+ void notifyCliUpdate(projectRoot);
54
+ const shutdown = async () => {
55
+ await server.close();
56
+ process.exit(0);
57
+ };
58
+ process.on("SIGINT", () => {
59
+ void shutdown();
60
+ });
61
+ process.on("SIGTERM", () => {
62
+ void shutdown();
63
+ });
64
+ };
65
+ //# sourceMappingURL=dev.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/commands/dev.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const runInitCommand: (args: string[]) => Promise<void>;
@@ -0,0 +1,119 @@
1
+ import path from "node:path";
2
+ import { promises as fs } from "node:fs";
3
+ import { ATRIA_CONFIG_FILE, ATRIA_RUNTIME_DIR, STUDIO_CONTENT_DIR, STUDIO_THEME_DIR } from "@atria/shared";
4
+ import { parseArgs } from "../utils/args.js";
5
+ import { ensureDirectory, writeFile } from "../utils/fs.js";
6
+ const buildProjectPackageJson = (projectName) => `${JSON.stringify({
7
+ name: projectName,
8
+ private: true,
9
+ version: "0.1.0",
10
+ scripts: {
11
+ dev: "atria dev"
12
+ },
13
+ devDependencies: {
14
+ "@atria/cli": "latest"
15
+ }
16
+ }, null, 2)}\n`;
17
+ const buildConfigFile = (projectName) => `${JSON.stringify({
18
+ name: projectName,
19
+ runtimeDir: ATRIA_RUNTIME_DIR
20
+ }, null, 2)}\n`;
21
+ const runtimeIndexHtml = `<!doctype html>
22
+ <html lang="en">
23
+ <head>
24
+ <meta charset="UTF-8" />
25
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
26
+ <title>atria Back Office</title>
27
+ </head>
28
+ <body>
29
+ <main id="bo-root">
30
+ <h1>atria</h1>
31
+ <p>Booting Back Office runtime...</p>
32
+ </main>
33
+ <script type="module" src="./app.js"></script>
34
+ </body>
35
+ </html>
36
+ `;
37
+ const runtimeAppJs = `const root = document.getElementById("bo-root");
38
+
39
+ if (root) {
40
+ const now = new Date().toLocaleString();
41
+ root.innerHTML = [
42
+ "<h1>atria Back Office</h1>",
43
+ "<p>Phase 1 runtime is active.</p>",
44
+ "<p>Loaded at: " + now + "</p>"
45
+ ].join("");
46
+ }
47
+ `;
48
+ const fileLabel = (targetRoot, filePath) => {
49
+ const relativePath = path.relative(targetRoot, filePath);
50
+ return relativePath.length > 0 ? relativePath : filePath;
51
+ };
52
+ const printInitHelp = () => {
53
+ console.log("Usage: atria init [project-directory] [--force]");
54
+ };
55
+ export const runInitCommand = async (args) => {
56
+ const parsedArgs = parseArgs(args);
57
+ if (parsedArgs.flags.help) {
58
+ printInitHelp();
59
+ return;
60
+ }
61
+ const targetArgument = parsedArgs.positionals[0] ?? ".";
62
+ const targetRoot = path.resolve(process.cwd(), targetArgument);
63
+ const force = parsedArgs.flags.force === true;
64
+ const projectName = path.basename(targetRoot);
65
+ await ensureDirectory(targetRoot);
66
+ const directories = [
67
+ path.join(targetRoot, STUDIO_CONTENT_DIR),
68
+ path.join(targetRoot, STUDIO_THEME_DIR),
69
+ path.join(targetRoot, ATRIA_RUNTIME_DIR)
70
+ ];
71
+ await Promise.all(directories.map((directory) => ensureDirectory(directory)));
72
+ const filesToWrite = [
73
+ {
74
+ path: path.join(targetRoot, "package.json"),
75
+ content: buildProjectPackageJson(projectName)
76
+ },
77
+ {
78
+ path: path.join(targetRoot, ATRIA_CONFIG_FILE),
79
+ content: buildConfigFile(projectName)
80
+ },
81
+ {
82
+ path: path.join(targetRoot, STUDIO_CONTENT_DIR, ".gitkeep"),
83
+ content: ""
84
+ },
85
+ {
86
+ path: path.join(targetRoot, STUDIO_THEME_DIR, ".gitkeep"),
87
+ content: ""
88
+ },
89
+ {
90
+ path: path.join(targetRoot, ATRIA_RUNTIME_DIR, "index.html"),
91
+ content: runtimeIndexHtml
92
+ },
93
+ {
94
+ path: path.join(targetRoot, ATRIA_RUNTIME_DIR, "app.js"),
95
+ content: runtimeAppJs
96
+ }
97
+ ];
98
+ let created = 0;
99
+ let updated = 0;
100
+ let skipped = 0;
101
+ for (const file of filesToWrite) {
102
+ const status = await writeFile(file.path, file.content, force);
103
+ if (status === "created") {
104
+ created += 1;
105
+ }
106
+ else if (status === "updated") {
107
+ updated += 1;
108
+ }
109
+ else {
110
+ skipped += 1;
111
+ }
112
+ }
113
+ const markerPath = path.join(targetRoot, ".atria", ".managed");
114
+ await fs.writeFile(markerPath, "This directory is managed by atria CLI. Do not edit manually.\n", "utf-8");
115
+ console.log(`[atria] Project ready at ${targetRoot}`);
116
+ console.log(`[atria] Files: ${created} created, ${updated} updated, ${skipped} skipped`);
117
+ console.log(`[atria] Runtime: ${fileLabel(targetRoot, path.join(targetRoot, ATRIA_RUNTIME_DIR))}`);
118
+ };
119
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
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 runCli: (argv: string[]) => Promise<void>;
package/dist/index.js ADDED
@@ -0,0 +1,27 @@
1
+ import { runDevCommand } from "./commands/dev.js";
2
+ import { runInitCommand } from "./commands/init.js";
3
+ const printHelp = () => {
4
+ console.log("atria CLI");
5
+ console.log("");
6
+ console.log("Commands:");
7
+ console.log(" atria init [project-directory] [--force]");
8
+ console.log(" atria dev [project-directory] [--port 3333]");
9
+ };
10
+ export const runCli = async (argv) => {
11
+ const command = argv[2];
12
+ const args = argv.slice(3);
13
+ if (!command || command === "-h" || command === "--help") {
14
+ printHelp();
15
+ return;
16
+ }
17
+ if (command === "init") {
18
+ await runInitCommand(args);
19
+ return;
20
+ }
21
+ if (command === "dev") {
22
+ await runDevCommand(args);
23
+ return;
24
+ }
25
+ throw new Error(`Unknown command "${command}". Run "atria --help" for usage.`);
26
+ };
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,5 @@
1
+ export interface ParsedArgs {
2
+ positionals: string[];
3
+ flags: Record<string, string | boolean>;
4
+ }
5
+ export declare const parseArgs: (argv: string[]) => ParsedArgs;
@@ -0,0 +1,42 @@
1
+ export const parseArgs = (argv) => {
2
+ const positionals = [];
3
+ const flags = {};
4
+ for (let index = 0; index < argv.length; index += 1) {
5
+ const token = argv[index];
6
+ if (!token.startsWith("-")) {
7
+ positionals.push(token);
8
+ continue;
9
+ }
10
+ if (token.startsWith("--")) {
11
+ const [rawKey, rawValue] = token.slice(2).split("=", 2);
12
+ const nextToken = argv[index + 1];
13
+ if (rawValue !== undefined) {
14
+ flags[rawKey] = rawValue;
15
+ continue;
16
+ }
17
+ if (nextToken && !nextToken.startsWith("-")) {
18
+ flags[rawKey] = nextToken;
19
+ index += 1;
20
+ continue;
21
+ }
22
+ flags[rawKey] = true;
23
+ continue;
24
+ }
25
+ if (token === "-h") {
26
+ flags.help = true;
27
+ continue;
28
+ }
29
+ if (token === "-p") {
30
+ const nextToken = argv[index + 1];
31
+ if (nextToken && !nextToken.startsWith("-")) {
32
+ flags.port = nextToken;
33
+ index += 1;
34
+ continue;
35
+ }
36
+ flags.port = true;
37
+ continue;
38
+ }
39
+ }
40
+ return { positionals, flags };
41
+ };
42
+ //# sourceMappingURL=args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/utils/args.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAc,EAAc,EAAE;IACtD,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,KAAK,GAAqC,EAAE,CAAC;IAEnD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAE1B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACxD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAElC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;gBACzB,SAAS;YACX,CAAC;YAED,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5C,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;gBAC1B,KAAK,IAAI,CAAC,CAAC;gBACX,SAAS;YACX,CAAC;YAED,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;YAClB,SAAS;QACX,CAAC;QAED,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YAClC,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5C,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;gBACvB,KAAK,IAAI,CAAC,CAAC;gBACX,SAAS;YACX,CAAC;YACD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;YAClB,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAChC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type WriteStatus = "created" | "updated" | "skipped";
2
+ export declare const ensureDirectory: (directoryPath: string) => Promise<void>;
3
+ export declare const writeFile: (filePath: string, content: string, force?: boolean) => Promise<WriteStatus>;
@@ -0,0 +1,22 @@
1
+ import { promises as fs } from "node:fs";
2
+ import path from "node:path";
3
+ export const ensureDirectory = async (directoryPath) => {
4
+ await fs.mkdir(directoryPath, { recursive: true });
5
+ };
6
+ export const writeFile = async (filePath, content, force = false) => {
7
+ let existed = false;
8
+ try {
9
+ await fs.access(filePath);
10
+ existed = true;
11
+ }
12
+ catch {
13
+ existed = false;
14
+ }
15
+ if (existed && !force) {
16
+ return "skipped";
17
+ }
18
+ await ensureDirectory(path.dirname(filePath));
19
+ await fs.writeFile(filePath, content, "utf-8");
20
+ return existed ? "updated" : "created";
21
+ };
22
+ //# sourceMappingURL=fs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,aAAqB,EAAiB,EAAE;IAC5E,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACrD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAC5B,QAAgB,EAChB,OAAe,EACf,KAAK,GAAG,KAAK,EACS,EAAE;IACxB,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,KAAK,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE/C,OAAO,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;AACzC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const terminal: {
2
+ blue: (text: string) => string;
3
+ cyan: (text: string) => string;
4
+ dim: (text: string) => string;
5
+ yellow: (text: string) => string;
6
+ };
@@ -0,0 +1,9 @@
1
+ const supportsColor = Boolean(process.stdout.isTTY) && !process.env.NO_COLOR;
2
+ const paint = (openCode, text) => supportsColor ? `\u001b[${openCode}m${text}\u001b[0m` : text;
3
+ export const terminal = {
4
+ blue: (text) => paint(34, text),
5
+ cyan: (text) => paint(36, text),
6
+ dim: (text) => paint(2, text),
7
+ yellow: (text) => paint(33, text)
8
+ };
9
+ //# sourceMappingURL=terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/utils/terminal.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAE7E,MAAM,KAAK,GAAG,CAAC,QAAgB,EAAE,IAAY,EAAU,EAAE,CACvD,aAAa,CAAC,CAAC,CAAC,UAAU,QAAQ,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAE/D,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,CAAC,IAAY,EAAU,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC;IAC/C,IAAI,EAAE,CAAC,IAAY,EAAU,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC;IAC/C,GAAG,EAAE,CAAC,IAAY,EAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;IAC7C,MAAM,EAAE,CAAC,IAAY,EAAU,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC;CAClD,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface CliUpdateInfo {
2
+ currentVersion: string;
3
+ latestVersion: string;
4
+ }
5
+ export declare const getCliUpdateInstallCommand: (projectRoot: string) => Promise<string>;
6
+ export declare const checkForCliUpdate: () => Promise<CliUpdateInfo | null>;
7
+ export {};
@@ -0,0 +1,117 @@
1
+ import { promises as fs } from "node:fs";
2
+ import https from "node:https";
3
+ import path from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ const NPM_CLI_LATEST_URL = "https://registry.npmjs.org/@atria%2fcli/latest";
6
+ const FETCH_TIMEOUT_MS = 1200;
7
+ const parseSemverCore = (value) => {
8
+ const normalized = value.trim().replace(/^v/, "");
9
+ const match = normalized.match(/^(\d+)\.(\d+)\.(\d+)/);
10
+ if (!match) {
11
+ return null;
12
+ }
13
+ return [
14
+ Number.parseInt(match[1], 10),
15
+ Number.parseInt(match[2], 10),
16
+ Number.parseInt(match[3], 10)
17
+ ];
18
+ };
19
+ const compareSemver = (left, right) => {
20
+ const leftParts = parseSemverCore(left);
21
+ const rightParts = parseSemverCore(right);
22
+ if (!leftParts || !rightParts) {
23
+ return 0;
24
+ }
25
+ for (let index = 0; index < 3; index += 1) {
26
+ if (leftParts[index] > rightParts[index]) {
27
+ return 1;
28
+ }
29
+ if (leftParts[index] < rightParts[index]) {
30
+ return -1;
31
+ }
32
+ }
33
+ return 0;
34
+ };
35
+ const readJsonFile = async (filePath) => {
36
+ try {
37
+ const rawContent = await fs.readFile(filePath, "utf-8");
38
+ const parsed = JSON.parse(rawContent);
39
+ if (parsed && typeof parsed === "object") {
40
+ return parsed;
41
+ }
42
+ return null;
43
+ }
44
+ catch {
45
+ return null;
46
+ }
47
+ };
48
+ const fetchLatestCliPayload = async () => new Promise((resolve) => {
49
+ const request = https.get(NPM_CLI_LATEST_URL, (response) => {
50
+ if (!response.statusCode || response.statusCode >= 400) {
51
+ response.resume();
52
+ resolve(null);
53
+ return;
54
+ }
55
+ let body = "";
56
+ response.setEncoding("utf8");
57
+ response.on("data", (chunk) => {
58
+ body += chunk;
59
+ });
60
+ response.on("end", () => {
61
+ try {
62
+ const parsed = JSON.parse(body);
63
+ resolve(parsed);
64
+ }
65
+ catch {
66
+ resolve(null);
67
+ }
68
+ });
69
+ });
70
+ request.setTimeout(FETCH_TIMEOUT_MS, () => {
71
+ request.destroy();
72
+ resolve(null);
73
+ });
74
+ request.on("error", () => {
75
+ resolve(null);
76
+ });
77
+ });
78
+ const readCurrentCliVersion = async () => {
79
+ const currentFilePath = fileURLToPath(import.meta.url);
80
+ const packageJsonPath = path.resolve(path.dirname(currentFilePath), "../../package.json");
81
+ const packageJson = await readJsonFile(packageJsonPath);
82
+ if (typeof packageJson?.version !== "string") {
83
+ return null;
84
+ }
85
+ return packageJson.version;
86
+ };
87
+ const hasDependency = (value, dependencyName) => {
88
+ if (!value || typeof value !== "object") {
89
+ return false;
90
+ }
91
+ return dependencyName in value;
92
+ };
93
+ export const getCliUpdateInstallCommand = async (projectRoot) => {
94
+ const projectPackage = await readJsonFile(path.join(projectRoot, "package.json"));
95
+ if (hasDependency(projectPackage?.dependencies, "atria") ||
96
+ hasDependency(projectPackage?.devDependencies, "atria")) {
97
+ return "npm install atria@latest";
98
+ }
99
+ return "npm install -D @atria/cli@latest";
100
+ };
101
+ export const checkForCliUpdate = async () => {
102
+ const [currentVersion, latestPayload] = await Promise.all([
103
+ readCurrentCliVersion(),
104
+ fetchLatestCliPayload()
105
+ ]);
106
+ if (!currentVersion || typeof latestPayload?.version !== "string") {
107
+ return null;
108
+ }
109
+ if (compareSemver(latestPayload.version, currentVersion) <= 0) {
110
+ return null;
111
+ }
112
+ return {
113
+ currentVersion,
114
+ latestVersion: latestPayload.version
115
+ };
116
+ };
117
+ //# sourceMappingURL=update-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/utils/update-check.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@atria/cli",
3
+ "version": "0.0.3",
4
+ "description": "CLI for atria project bootstrap and development",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "bin": {
8
+ "atria": "dist/bin.js"
9
+ },
10
+ "main": "dist/index.js",
11
+ "types": "dist/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "default": "./dist/index.js"
16
+ }
17
+ },
18
+ "files": [
19
+ "dist"
20
+ ],
21
+ "dependencies": {
22
+ "@atria/server": "0.0.3",
23
+ "@atria/shared": "0.0.3"
24
+ },
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
28
+ "scripts": {
29
+ "build": "tsc -p tsconfig.json",
30
+ "clean": "rm -rf dist"
31
+ }
32
+ }