@dyrected/cli 2.3.4 → 2.5.5

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.
@@ -0,0 +1,54 @@
1
+ export function buildDbConfig(db) {
2
+ switch (db) {
3
+ case "postgres":
4
+ return `postgresAdapter({ url: process.env.DATABASE_URL! })`;
5
+ case "mysql":
6
+ return `mysqlAdapter({ url: process.env.DATABASE_URL! })`;
7
+ case "sqlite":
8
+ return `sqliteAdapter({ filename: './data.db' })`;
9
+ case "mongodb":
10
+ return `mongodbAdapter({ url: process.env.DATABASE_URL! })`;
11
+ default:
12
+ return `postgresAdapter({ url: process.env.DATABASE_URL! })`;
13
+ }
14
+ }
15
+ export function buildStorageConfig(storage) {
16
+ switch (storage) {
17
+ case "local":
18
+ return `localAdapter({ directory: './public/uploads', serveFrom: '/uploads' })`;
19
+ case "s3":
20
+ return `s3Adapter({ bucket: process.env.S3_BUCKET!, region: process.env.S3_REGION!, accessKeyId: process.env.S3_ACCESS_KEY_ID!, secretAccessKey: process.env.S3_SECRET_ACCESS_KEY! })`;
21
+ case "b2":
22
+ return `b2Adapter({ bucketId: process.env.B2_BUCKET_ID!, keyId: process.env.B2_KEY_ID!, applicationKey: process.env.B2_APPLICATION_KEY! })`;
23
+ case "cloudinary":
24
+ return `cloudinaryAdapter({ cloudName: process.env.CLOUDINARY_CLOUD_NAME!, apiKey: process.env.CLOUDINARY_API_KEY!, apiSecret: process.env.CLOUDINARY_API_SECRET! })`;
25
+ default:
26
+ return `localAdapter({ directory: './public/uploads', serveFrom: '/uploads' })`;
27
+ }
28
+ }
29
+ export function buildEnvTemplate(db, storage, framework) {
30
+ const lines = [
31
+ `# Dyrected CMS — Environment Variables`,
32
+ `DATABASE_URL=${db === "mongodb"
33
+ ? "mongodb://localhost:27017/dyrected"
34
+ : db === "mysql"
35
+ ? "mysql://user:pass@localhost:3306/dyrected"
36
+ : "postgres://user:pass@localhost:5432/dyrected"}`,
37
+ `JWT_SECRET=change-me-32-characters-minimum`,
38
+ `ENCRYPTION_KEY=change-me-aes-256-key`,
39
+ ``,
40
+ ];
41
+ if (storage === "s3") {
42
+ lines.push(`S3_BUCKET=my-bucket`, `S3_REGION=us-east-1`, `S3_ACCESS_KEY_ID=`, `S3_SECRET_ACCESS_KEY=`);
43
+ }
44
+ else if (storage === "b2") {
45
+ lines.push(`B2_BUCKET_ID=`, `B2_KEY_ID=`, `B2_APPLICATION_KEY=`);
46
+ }
47
+ else if (storage === "cloudinary") {
48
+ lines.push(`CLOUDINARY_CLOUD_NAME=`, `CLOUDINARY_API_KEY=`, `CLOUDINARY_API_SECRET=`);
49
+ }
50
+ const prefix = framework === "next" ? "NEXT_PUBLIC_" : "NUXT_PUBLIC_";
51
+ lines.push(``, `${prefix}DYRECTED_URL=http://localhost:3000`, `${prefix}DYRECTED_API_KEY=local-dev`);
52
+ return lines.join("\n") + "\n";
53
+ }
54
+ //# sourceMappingURL=config-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-templates.js","sourceRoot":"","sources":["../../src/utils/config-templates.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAC,EAAU;IACtC,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,UAAU;YACb,OAAO,qDAAqD,CAAC;QAC/D,KAAK,OAAO;YACV,OAAO,kDAAkD,CAAC;QAC5D,KAAK,QAAQ;YACX,OAAO,0CAA0C,CAAC;QACpD,KAAK,SAAS;YACZ,OAAO,oDAAoD,CAAC;QAC9D;YACE,OAAO,qDAAqD,CAAC;IACjE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO;YACV,OAAO,wEAAwE,CAAC;QAClF,KAAK,IAAI;YACP,OAAO,+KAA+K,CAAC;QACzL,KAAK,IAAI;YACP,OAAO,oIAAoI,CAAC;QAC9I,KAAK,YAAY;YACf,OAAO,8JAA8J,CAAC;QACxK;YACE,OAAO,wEAAwE,CAAC;IACpF,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAU,EAAE,OAAe,EAAE,SAAiB;IAC7E,MAAM,KAAK,GAAG;QACZ,wCAAwC;QACxC,gBACE,EAAE,KAAK,SAAS;YACd,CAAC,CAAC,oCAAoC;YACtC,CAAC,CAAC,EAAE,KAAK,OAAO;gBACd,CAAC,CAAC,2CAA2C;gBAC7C,CAAC,CAAC,8CACR,EAAE;QACF,4CAA4C;QAC5C,sCAAsC;QACtC,EAAE;KACH,CAAC;IAEF,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,uBAAuB,CAAC,CAAC;IACzG,CAAC;SAAM,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,EAAE,qBAAqB,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE,qBAAqB,EAAE,wBAAwB,CAAC,CAAC;IACxF,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC;IACtE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,MAAM,oCAAoC,EAAE,GAAG,MAAM,4BAA4B,CAAC,CAAC;IACrG,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function detectPackageManager(cwd: string): string;
2
+ export declare function detectFramework(cwd: string): Promise<"next" | "nuxt" | null>;
3
+ //# sourceMappingURL=detect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/utils/detect.ts"],"names":[],"mappings":"AAGA,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKxD;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAUlF"}
@@ -0,0 +1,27 @@
1
+ import fs from "fs-extra";
2
+ import path from "path";
3
+ export function detectPackageManager(cwd) {
4
+ if (fs.existsSync(path.join(cwd, "bun.lockb")) || fs.existsSync(path.join(cwd, "bun.lock")))
5
+ return "bun";
6
+ if (fs.existsSync(path.join(cwd, "pnpm-lock.yaml")))
7
+ return "pnpm";
8
+ if (fs.existsSync(path.join(cwd, "yarn.lock")))
9
+ return "yarn";
10
+ return "npm";
11
+ }
12
+ export async function detectFramework(cwd) {
13
+ const pkgPath = path.join(cwd, "package.json");
14
+ if (!(await fs.pathExists(pkgPath)))
15
+ return null;
16
+ try {
17
+ const pkg = await fs.readJson(pkgPath);
18
+ const all = { ...pkg.dependencies, ...pkg.devDependencies };
19
+ if (all["next"])
20
+ return "next";
21
+ if (all["nuxt"])
22
+ return "nuxt";
23
+ }
24
+ catch { }
25
+ return null;
26
+ }
27
+ //# sourceMappingURL=detect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/utils/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1G,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IACnE,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAW;IAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,EAAE,GAAG,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;QAC5D,IAAI,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC/B,IAAI,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function runGenerateTypes(options: {
2
+ url?: string;
3
+ config: string;
4
+ output: string;
5
+ }): Promise<void>;
6
+ //# sourceMappingURL=type-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-generator.d.ts","sourceRoot":"","sources":["../../src/utils/type-generator.ts"],"names":[],"mappings":"AAMA,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,iBA+B/F"}
@@ -0,0 +1,151 @@
1
+ import prettier from "prettier";
2
+ import chalk from "chalk";
3
+ import fs from "fs-extra";
4
+ import path from "path";
5
+ import { createJiti } from "jiti";
6
+ export async function runGenerateTypes(options) {
7
+ let schema;
8
+ if (options.url) {
9
+ console.log(chalk.blue(`Fetching schemas from ${options.url}/api/schemas...`));
10
+ const response = await fetch(`${options.url}/api/schemas`);
11
+ if (!response.ok)
12
+ throw new Error(`Failed to fetch schemas: ${response.statusText}`);
13
+ schema = await response.json();
14
+ }
15
+ else {
16
+ const configPath = path.resolve(process.cwd(), options.config);
17
+ if (await fs.pathExists(configPath)) {
18
+ console.log(chalk.blue(`Generating types from local config: ${configPath}...`));
19
+ const jiti = createJiti(configPath);
20
+ const configModule = (await jiti.import(configPath));
21
+ schema = configModule.default || configModule;
22
+ }
23
+ else {
24
+ const url = "http://localhost:3000";
25
+ console.log(chalk.blue(`No local config found. Fetching schemas from ${url}/api/schemas...`));
26
+ const response = await fetch(`${url}/api/schemas`);
27
+ if (!response.ok)
28
+ throw new Error(`Failed to fetch schemas: ${response.statusText}`);
29
+ schema = await response.json();
30
+ }
31
+ }
32
+ if (!schema || !schema.collections)
33
+ throw new Error("Invalid schema: collections missing.");
34
+ const code = generateTypes(schema);
35
+ const formattedCode = await prettier.format(code, { parser: "typescript" });
36
+ await fs.outputFile(path.resolve(process.cwd(), options.output), formattedCode);
37
+ console.log(chalk.green(`✔ Types generated at ${options.output}`));
38
+ }
39
+ function generateTypes(schema) {
40
+ let code = `/**
41
+ * This file was automatically generated by Dyrected CLI.
42
+ * DO NOT MODIFY IT BY HAND.
43
+ */
44
+
45
+ export interface Media {
46
+ id: string;
47
+ filename: string;
48
+ filesize: number;
49
+ mimeType: string;
50
+ url: string;
51
+ width?: number;
52
+ height?: number;
53
+ createdAt: string;
54
+ updatedAt: string;
55
+ }
56
+ \n`;
57
+ for (const col of schema.collections) {
58
+ if (!col || !col.slug)
59
+ continue;
60
+ const interfaceName = toPascalCase(col.slug);
61
+ if (interfaceName === "Media") {
62
+ const extraFields = col.fields.filter((f) => !["filename", "filesize", "mimeType", "url", "width", "height", "createdAt", "updatedAt"].includes(f.name));
63
+ if (extraFields.length > 0) {
64
+ const insertionPoint = code.indexOf("}", code.indexOf("export interface Media {"));
65
+ const fieldsCode = extraFields
66
+ .map((f) => ` ${f.name}${f.required ? "" : "?"}: ${mapFieldType(f)};`)
67
+ .join("\n");
68
+ code = code.slice(0, insertionPoint) + fieldsCode + "\n" + code.slice(insertionPoint);
69
+ }
70
+ continue;
71
+ }
72
+ if (code.includes(`export interface ${interfaceName} {`))
73
+ continue;
74
+ code += `export interface ${interfaceName} {\n`;
75
+ code += ` id: string;\n`;
76
+ for (const field of col.fields) {
77
+ if (["createdAt", "updatedAt", "id"].includes(field.name))
78
+ continue;
79
+ code += ` ${field.name}${field.required ? "" : "?"}: ${mapFieldType(field)};\n`;
80
+ }
81
+ code += ` createdAt: string;\n`;
82
+ code += ` updatedAt: string;\n`;
83
+ code += `}\n\n`;
84
+ }
85
+ for (const glb of schema.globals) {
86
+ if (!glb || !glb.slug)
87
+ continue;
88
+ const interfaceName = `${toPascalCase(glb.slug)}Global`;
89
+ code += `export interface ${interfaceName} {\n`;
90
+ for (const field of glb.fields) {
91
+ code += ` ${field.name}${field.required ? "" : "?"}: ${mapFieldType(field)};\n`;
92
+ }
93
+ code += `}\n\n`;
94
+ }
95
+ code += `export interface DyrectedSchema {\n`;
96
+ code += ` collections: {\n`;
97
+ for (const col of schema.collections) {
98
+ code += ` ${col.slug}: ${toPascalCase(col.slug)};\n`;
99
+ }
100
+ code += ` };\n`;
101
+ code += ` globals: {\n`;
102
+ for (const glb of schema.globals) {
103
+ code += ` ${glb.slug}: ${toPascalCase(glb.slug)}Global;\n`;
104
+ }
105
+ code += ` };\n`;
106
+ code += `}\n`;
107
+ return code;
108
+ }
109
+ function mapFieldType(field) {
110
+ switch (field.type) {
111
+ case "text":
112
+ case "textarea":
113
+ case "richText":
114
+ case "date":
115
+ case "email":
116
+ case "url":
117
+ return "string";
118
+ case "number":
119
+ return "number";
120
+ case "boolean":
121
+ return "boolean";
122
+ case "select":
123
+ return field.options
124
+ ? field.options.map((o) => `'${typeof o === "string" ? o : o.value}'`).join(" | ")
125
+ : "string";
126
+ case "relationship": {
127
+ const relationTo = field.relationTo || field.collection;
128
+ return relationTo === "media" ? "Media | string" : `${toPascalCase(relationTo)} | string`;
129
+ }
130
+ case "array":
131
+ return field.fields
132
+ ? `Array<{\n${field.fields.map((f) => ` ${f.name}${f.required ? "" : "?"}: ${mapFieldType(f)};`).join("\n")}\n }>`
133
+ : "any[]";
134
+ case "blocks":
135
+ return field.blocks
136
+ ? `Array<${field.blocks.map((b) => `{\n blockType: '${b.slug}';\n${b.fields.map((f) => ` ${f.name}${f.required ? "" : "?"}: ${mapFieldType(f)};`).join("\n")}\n }`).join(" | ")}>`
137
+ : "any[]";
138
+ case "object":
139
+ return field.fields
140
+ ? `{\n${field.fields.map((f) => ` ${f.name}${f.required ? "" : "?"}: ${mapFieldType(f)};`).join("\n")}\n }`
141
+ : "any";
142
+ default:
143
+ return "any";
144
+ }
145
+ }
146
+ function toPascalCase(str) {
147
+ if (!str)
148
+ return "Unknown";
149
+ return str.replace(/(^\w|-\w)/g, (m) => m.replace(/-/, "").toUpperCase());
150
+ }
151
+ //# sourceMappingURL=type-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-generator.js","sourceRoot":"","sources":["../../src/utils/type-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function writeNextFiles(cwd: string, adminPath: string): Promise<void>;
2
+ export declare function writeNuxtFiles(cwd: string, adminPath: string): Promise<void>;
3
+ export declare function patchNuxtConfig(cwd: string, adminPath?: string): Promise<void>;
4
+ //# sourceMappingURL=writers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writers.d.ts","sourceRoot":"","sources":["../../src/utils/writers.ts"],"names":[],"mappings":"AAIA,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,iBAoElE;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,iBAyBlE;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,iBAiCpE"}
@@ -0,0 +1,110 @@
1
+ import chalk from "chalk";
2
+ import fs from "fs-extra";
3
+ import path from "path";
4
+ export async function writeNextFiles(cwd, adminPath) {
5
+ const hasSrc = await fs.pathExists(path.join(cwd, "src"));
6
+ const appDir = hasSrc ? path.join(cwd, "src/app") : path.join(cwd, "app");
7
+ const pagesDir = hasSrc ? path.join(cwd, "src/pages") : path.join(cwd, "pages");
8
+ const hasAppRouter = await fs.pathExists(appDir);
9
+ const hasPagesRouter = await fs.pathExists(pagesDir);
10
+ if (hasPagesRouter && !hasAppRouter) {
11
+ const rel = hasSrc ? "src/pages" : "pages";
12
+ const apiRoutePath = path.join(pagesDir, "api/dyrected/[...route].ts");
13
+ if (!(await fs.pathExists(apiRoutePath))) {
14
+ await fs.outputFile(apiRoutePath, `export { default } from '@dyrected/next'\n`);
15
+ console.log(chalk.green(`✔ ${rel}/api/dyrected/[...route].ts written`));
16
+ }
17
+ const adminPagePath = path.join(pagesDir, `${adminPath}.tsx`);
18
+ if (!(await fs.pathExists(adminPagePath))) {
19
+ await fs.outputFile(adminPagePath, `import { DyrectedAdmin } from '@dyrected/next/admin'
20
+
21
+ export default function AdminPage() {
22
+ return <DyrectedAdmin apiPath="/api/dyrected" />
23
+ }
24
+ `);
25
+ console.log(chalk.green(`✔ ${rel}/${adminPath}.tsx written`));
26
+ }
27
+ }
28
+ else {
29
+ const rel = hasSrc ? "src/app" : "app";
30
+ const apiRoutePath = path.join(appDir, "dyrected/[...route]/route.ts");
31
+ if (!(await fs.pathExists(apiRoutePath))) {
32
+ await fs.outputFile(apiRoutePath, `export { GET, POST, PUT, PATCH, DELETE } from '@dyrected/next'\n`);
33
+ console.log(chalk.green(`✔ ${rel}/dyrected/[...route]/route.ts written`));
34
+ }
35
+ const adminPagePath = path.join(appDir, `${adminPath}/page.tsx`);
36
+ if (!(await fs.pathExists(adminPagePath))) {
37
+ await fs.outputFile(adminPagePath, `import { DyrectedAdmin } from '@dyrected/next/admin'
38
+
39
+ export default function AdminPage() {
40
+ return <DyrectedAdmin apiPath="/dyrected" />
41
+ }
42
+ `);
43
+ console.log(chalk.green(`✔ ${rel}/${adminPath}/page.tsx written`));
44
+ }
45
+ }
46
+ // instrumentation.ts — logs Dyrected URLs to the console on server start
47
+ const instrumentationDir = hasSrc ? path.join(cwd, "src") : cwd;
48
+ const instrumentationPath = path.join(instrumentationDir, "instrumentation.ts");
49
+ if (!(await fs.pathExists(instrumentationPath))) {
50
+ const apiPath = hasPagesRouter && !hasAppRouter ? "/api/dyrected" : "/dyrected";
51
+ await fs.outputFile(instrumentationPath, `export async function register() {
52
+ if (process.env.NEXT_RUNTIME === 'nodejs') {
53
+ const base = (process.env.NEXT_PUBLIC_APP_URL || 'http://localhost:3000').replace(/\\/$/, '')
54
+ console.log(\`\\n ➜ Dyrected admin: \${base}/${adminPath}\`)
55
+ console.log(\` ➜ Dyrected API: \${base}${apiPath}\\n\`)
56
+ }
57
+ }
58
+ `);
59
+ const relInstrumentation = hasSrc ? "src/instrumentation.ts" : "instrumentation.ts";
60
+ console.log(chalk.green(`✔ ${relInstrumentation} written`));
61
+ }
62
+ }
63
+ export async function writeNuxtFiles(cwd, adminPath) {
64
+ const hasAppDir = await fs.pathExists(path.join(cwd, "app"));
65
+ const pagesBase = hasAppDir ? "app/pages" : "pages";
66
+ const adminPagePath = path.join(cwd, pagesBase, adminPath, "index.vue");
67
+ if (!(await fs.pathExists(adminPagePath))) {
68
+ await fs.outputFile(adminPagePath, `<template>
69
+ <ClientOnly>
70
+ <DyrectedAdmin basename="/${adminPath}" />
71
+ </ClientOnly>
72
+ </template>
73
+
74
+ <script setup lang="ts">
75
+ definePageMeta({
76
+ layout: false,
77
+ });
78
+ </script>
79
+ `);
80
+ console.log(chalk.green(`✔ ${pagesBase}/${adminPath}/index.vue written`));
81
+ }
82
+ await patchNuxtConfig(cwd, adminPath);
83
+ }
84
+ export async function patchNuxtConfig(cwd, adminPath) {
85
+ const tsConfig = path.join(cwd, "nuxt.config.ts");
86
+ const jsConfig = path.join(cwd, "nuxt.config.js");
87
+ const configPath = (await fs.pathExists(tsConfig)) ? tsConfig : (await fs.pathExists(jsConfig)) ? jsConfig : null;
88
+ if (!configPath) {
89
+ console.log(chalk.yellow("\n⚠ No nuxt.config.ts found. Add the module manually:"));
90
+ console.log(chalk.dim(` modules: [['@dyrected/nuxt', { adminPath: '${adminPath || "cms"}' }]]`));
91
+ return;
92
+ }
93
+ let content = await fs.readFile(configPath, "utf-8");
94
+ if (content.includes("@dyrected/nuxt")) {
95
+ console.log(chalk.dim("ℹ @dyrected/nuxt already in nuxt.config"));
96
+ return;
97
+ }
98
+ const moduleEntry = adminPath
99
+ ? `['@dyrected/nuxt', { adminPath: '${adminPath}' }]`
100
+ : `'@dyrected/nuxt'`;
101
+ if (/modules\s*:\s*\[/.test(content)) {
102
+ content = content.replace(/modules\s*:\s*\[/, `modules: [${moduleEntry}, `);
103
+ }
104
+ else {
105
+ content = content.replace(/defineNuxtConfig\s*\(\s*\{/, `defineNuxtConfig({\n modules: [${moduleEntry}],`);
106
+ }
107
+ await fs.writeFile(configPath, content, "utf-8");
108
+ console.log(chalk.green(`✔ @dyrected/nuxt added to ${path.relative(cwd, configPath)}`));
109
+ }
110
+ //# sourceMappingURL=writers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"writers.js","sourceRoot":"","sources":["../../src/utils/writers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dyrected/cli",
3
- "version": "2.3.4",
3
+ "version": "2.5.5",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -16,8 +16,8 @@
16
16
  "jiti": "^2.7.0",
17
17
  "prettier": "^3.2.5",
18
18
  "prompts": "^2.4.2",
19
- "@dyrected/sdk": "^2.4.5",
20
- "@dyrected/core": "^2.5.1"
19
+ "@dyrected/core": "^2.5.5",
20
+ "@dyrected/sdk": "^2.5.5"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@types/fs-extra": "^11.0.4",