@actuate-media/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/.turbo/turbo-build.log +4 -0
  2. package/dist/commands/export.d.ts +3 -0
  3. package/dist/commands/export.d.ts.map +1 -0
  4. package/dist/commands/export.js +99 -0
  5. package/dist/commands/export.js.map +1 -0
  6. package/dist/commands/generate.d.ts +3 -0
  7. package/dist/commands/generate.d.ts.map +1 -0
  8. package/dist/commands/generate.js +24 -0
  9. package/dist/commands/generate.js.map +1 -0
  10. package/dist/commands/import.d.ts +3 -0
  11. package/dist/commands/import.d.ts.map +1 -0
  12. package/dist/commands/import.js +204 -0
  13. package/dist/commands/import.js.map +1 -0
  14. package/dist/commands/migrate.d.ts +3 -0
  15. package/dist/commands/migrate.d.ts.map +1 -0
  16. package/dist/commands/migrate.js +57 -0
  17. package/dist/commands/migrate.js.map +1 -0
  18. package/dist/commands/seed.d.ts +3 -0
  19. package/dist/commands/seed.d.ts.map +1 -0
  20. package/dist/commands/seed.js +343 -0
  21. package/dist/commands/seed.js.map +1 -0
  22. package/dist/commands/update-check.d.ts +3 -0
  23. package/dist/commands/update-check.d.ts.map +1 -0
  24. package/dist/commands/update-check.js +125 -0
  25. package/dist/commands/update-check.js.map +1 -0
  26. package/dist/commands/upgrade.d.ts +3 -0
  27. package/dist/commands/upgrade.d.ts.map +1 -0
  28. package/dist/commands/upgrade.js +150 -0
  29. package/dist/commands/upgrade.js.map +1 -0
  30. package/dist/index.d.ts +3 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +23 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/utils/logger.d.ts +8 -0
  35. package/dist/utils/logger.d.ts.map +1 -0
  36. package/dist/utils/logger.js +16 -0
  37. package/dist/utils/logger.js.map +1 -0
  38. package/package.json +33 -0
  39. package/src/commands/export.ts +131 -0
  40. package/src/commands/generate.ts +28 -0
  41. package/src/commands/import.ts +243 -0
  42. package/src/commands/migrate.ts +62 -0
  43. package/src/commands/seed.ts +388 -0
  44. package/src/commands/update-check.ts +147 -0
  45. package/src/commands/upgrade.ts +173 -0
  46. package/src/index.ts +26 -0
  47. package/src/utils/logger.ts +26 -0
  48. package/tsconfig.json +9 -0
@@ -0,0 +1,4 @@
1
+
2
+ > @actuate/cli@0.1.0 build C:\Git Local\actuatecms\packages\cli
3
+ > tsc
4
+
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerExportCommand(program: Command): void;
3
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA4GpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsB5D"}
@@ -0,0 +1,99 @@
1
+ import { writeFile } from "node:fs/promises";
2
+ import ora from "ora";
3
+ import { logger } from "../utils/logger.js";
4
+ function buildOutputPath(options) {
5
+ if (options.output)
6
+ return options.output;
7
+ const timestamp = new Date().toISOString().replace(/[:.]/g, "-").slice(0, 19);
8
+ const ext = options.format === "csv" ? "csv" : "json";
9
+ return `actuate-export-${timestamp}.${ext}`;
10
+ }
11
+ function jsonToCsv(docs) {
12
+ if (docs.length === 0)
13
+ return "";
14
+ const keySet = new Set();
15
+ for (const doc of docs) {
16
+ keySet.add("id");
17
+ keySet.add("collection");
18
+ keySet.add("status");
19
+ keySet.add("createdAt");
20
+ keySet.add("updatedAt");
21
+ if (doc.data && typeof doc.data === "object") {
22
+ for (const key of Object.keys(doc.data)) {
23
+ keySet.add(`data.${key}`);
24
+ }
25
+ }
26
+ }
27
+ const headers = Array.from(keySet);
28
+ const escapeCsvValue = (val) => {
29
+ if (val === null || val === undefined)
30
+ return "";
31
+ const str = typeof val === "object" ? JSON.stringify(val) : String(val);
32
+ if (str.includes(",") || str.includes('"') || str.includes("\n")) {
33
+ return `"${str.replace(/"/g, '""')}"`;
34
+ }
35
+ return str;
36
+ };
37
+ const rows = docs.map((doc) => {
38
+ return headers
39
+ .map((header) => {
40
+ if (header.startsWith("data.")) {
41
+ const field = header.slice(5);
42
+ return escapeCsvValue(doc.data?.[field]);
43
+ }
44
+ return escapeCsvValue(doc[header]);
45
+ })
46
+ .join(",");
47
+ });
48
+ return [headers.join(","), ...rows].join("\n");
49
+ }
50
+ async function runExport(options) {
51
+ const target = options.collection ?? "all collections";
52
+ const spinner = ora(`Exporting ${target}…`).start();
53
+ try {
54
+ const { getDB } = await import("@actuate/cms-core");
55
+ const db = getDB();
56
+ const where = { deletedAt: null };
57
+ if (options.collection) {
58
+ where.collection = options.collection;
59
+ }
60
+ if (!options.includeDrafts) {
61
+ where.status = "PUBLISHED";
62
+ }
63
+ const docs = await db.document.findMany({
64
+ where,
65
+ orderBy: { createdAt: "desc" },
66
+ });
67
+ if (docs.length === 0) {
68
+ spinner.warn("No documents found matching the criteria.");
69
+ return;
70
+ }
71
+ const outputPath = buildOutputPath(options);
72
+ let content;
73
+ if (options.format === "csv") {
74
+ content = jsonToCsv(docs);
75
+ }
76
+ else {
77
+ content = JSON.stringify(docs, null, 2);
78
+ }
79
+ await writeFile(outputPath, content, "utf-8");
80
+ spinner.succeed(`Exported ${docs.length} documents to ${outputPath}`);
81
+ }
82
+ catch (err) {
83
+ spinner.fail("Export failed.");
84
+ const message = err instanceof Error ? err.message : String(err);
85
+ logger.error(message);
86
+ process.exit(1);
87
+ }
88
+ }
89
+ export function registerExportCommand(program) {
90
+ program
91
+ .command("export")
92
+ .description("Export content to JSON or CSV files")
93
+ .option("-c, --collection <slug>", "Export only the specified collection (default: all)")
94
+ .option("-f, --format <type>", "Output format: json or csv", "json")
95
+ .option("-o, --output <path>", "Output file path (default: actuate-export-{timestamp}.{format})")
96
+ .option("--include-drafts", "Include draft documents (default: published only)")
97
+ .action(runExport);
98
+ }
99
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerGenerateCommand(program: Command): void;
3
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAO9D"}
@@ -0,0 +1,24 @@
1
+ import ora from "ora";
2
+ import { logger } from "../utils/logger.js";
3
+ async function runGenerate() {
4
+ const spinner = ora("Generating TypeScript types from schema…").start();
5
+ try {
6
+ // Dynamically import the codegen module from cms-core
7
+ const { runCodegen } = await import("@actuate/cms-core/codegen");
8
+ await runCodegen();
9
+ spinner.succeed("Type generation complete.");
10
+ }
11
+ catch (err) {
12
+ spinner.fail("Type generation failed.");
13
+ const message = err instanceof Error ? err.message : String(err);
14
+ logger.error(message);
15
+ process.exitCode = 1;
16
+ }
17
+ }
18
+ export function registerGenerateCommand(program) {
19
+ program
20
+ .command("generate")
21
+ .description("Run the TypeScript type generator from the cms-core codegen module")
22
+ .action(runGenerate);
23
+ }
24
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,KAAK,UAAU,WAAW;IACxB,MAAM,OAAO,GAAG,GAAG,CAAC,0CAA0C,CAAC,CAAC,KAAK,EAAE,CAAC;IAExE,IAAI,CAAC;QACH,sDAAsD;QACtD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,2BAA2B,CAAC,CAAC;QACjE,MAAM,UAAU,EAAE,CAAC;QACnB,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CACV,oEAAoE,CACrE;SACA,MAAM,CAAC,WAAW,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerImportCommand(program: Command): void;
3
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6NpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqB5D"}
@@ -0,0 +1,204 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { existsSync } from "node:fs";
3
+ import ora from "ora";
4
+ import { logger } from "../utils/logger.js";
5
+ function detectFormat(filePath) {
6
+ const ext = filePath.split(".").pop()?.toLowerCase();
7
+ if (ext === "json")
8
+ return "json";
9
+ if (ext === "csv")
10
+ return "csv";
11
+ if (ext === "xml" || ext === "wxr")
12
+ return "wordpress";
13
+ return "json";
14
+ }
15
+ function parseCsv(content) {
16
+ const lines = content.split("\n").filter((line) => line.trim());
17
+ if (lines.length < 2)
18
+ return [];
19
+ const parseRow = (row) => {
20
+ const values = [];
21
+ let current = "";
22
+ let inQuotes = false;
23
+ for (let i = 0; i < row.length; i++) {
24
+ const char = row[i];
25
+ if (char === '"') {
26
+ if (inQuotes && row[i + 1] === '"') {
27
+ current += '"';
28
+ i++;
29
+ }
30
+ else {
31
+ inQuotes = !inQuotes;
32
+ }
33
+ }
34
+ else if (char === "," && !inQuotes) {
35
+ values.push(current.trim());
36
+ current = "";
37
+ }
38
+ else {
39
+ current += char;
40
+ }
41
+ }
42
+ values.push(current.trim());
43
+ return values;
44
+ };
45
+ const headers = parseRow(lines[0]);
46
+ return lines.slice(1).map((line) => {
47
+ const values = parseRow(line);
48
+ const obj = {};
49
+ headers.forEach((header, i) => {
50
+ obj[header] = values[i] ?? "";
51
+ });
52
+ return obj;
53
+ });
54
+ }
55
+ function parseWordPressXml(content) {
56
+ const items = [];
57
+ const itemRegex = /<item>([\s\S]*?)<\/item>/g;
58
+ let match;
59
+ while ((match = itemRegex.exec(content)) !== null) {
60
+ const itemXml = match[1];
61
+ const extract = (tag) => {
62
+ const tagRegex = new RegExp(`<${tag}><!\\[CDATA\\[([\\s\\S]*?)\\]\\]><\\/${tag}>|<${tag}>([\\s\\S]*?)<\\/${tag}>`);
63
+ const m = tagRegex.exec(itemXml);
64
+ return m?.[1] ?? m?.[2] ?? "";
65
+ };
66
+ const title = extract("title");
67
+ const body = extract("content:encoded");
68
+ const slug = extract("wp:post_name");
69
+ const status = extract("wp:status");
70
+ const postDate = extract("wp:post_date");
71
+ const postType = extract("wp:post_type");
72
+ if (postType && postType !== "post" && postType !== "page")
73
+ continue;
74
+ items.push({
75
+ title,
76
+ slug: slug || title.toLowerCase().replace(/[^a-z0-9]+/g, "-"),
77
+ content: body,
78
+ wpStatus: status,
79
+ wpPostDate: postDate,
80
+ collection: postType === "page" ? "pages" : "posts",
81
+ });
82
+ }
83
+ return items;
84
+ }
85
+ function printPreviewTable(records, collection) {
86
+ console.log("\n Dry-run preview:\n");
87
+ console.log(" " +
88
+ "Collection".padEnd(16) +
89
+ "Title / Slug".padEnd(40) +
90
+ "Status");
91
+ console.log(" " + "-".repeat(66));
92
+ const shown = records.slice(0, 20);
93
+ for (const rec of shown) {
94
+ const col = (rec.collection ?? collection ?? "imported").padEnd(16);
95
+ const label = (rec.title ?? rec.slug ?? "(untitled)").slice(0, 38).padEnd(40);
96
+ const status = rec.status ?? rec.wpStatus ?? "DRAFT";
97
+ console.log(` ${col}${label}${status}`);
98
+ }
99
+ if (records.length > 20) {
100
+ console.log(` ... and ${records.length - 20} more`);
101
+ }
102
+ console.log();
103
+ }
104
+ async function runImport(options) {
105
+ const { source, collection, dryRun } = options;
106
+ if (!existsSync(source)) {
107
+ logger.error(`File not found: ${source}`);
108
+ process.exit(1);
109
+ }
110
+ const format = options.format ?? detectFormat(source);
111
+ const spinner = ora(`Parsing ${format} file: ${source}…`).start();
112
+ try {
113
+ const raw = await readFile(source, "utf-8");
114
+ let records;
115
+ if (format === "json") {
116
+ const parsed = JSON.parse(raw);
117
+ if (!Array.isArray(parsed)) {
118
+ spinner.fail("JSON file must contain an array of documents.");
119
+ process.exit(1);
120
+ }
121
+ records = parsed;
122
+ }
123
+ else if (format === "csv") {
124
+ if (!collection) {
125
+ spinner.fail("The --collection option is required for CSV imports.");
126
+ process.exit(1);
127
+ }
128
+ records = parseCsv(raw).map((row) => ({
129
+ collection,
130
+ ...row,
131
+ }));
132
+ }
133
+ else if (format === "wordpress") {
134
+ records = parseWordPressXml(raw);
135
+ }
136
+ else {
137
+ spinner.fail(`Unsupported format: ${format}`);
138
+ process.exit(1);
139
+ }
140
+ spinner.succeed(`Parsed ${records.length} records from ${source}.`);
141
+ if (records.length === 0) {
142
+ logger.warn("No records found in file.");
143
+ return;
144
+ }
145
+ if (dryRun) {
146
+ printPreviewTable(records, collection);
147
+ logger.info("Dry run — no data was written.");
148
+ return;
149
+ }
150
+ const writeSpinner = ora(`Importing ${records.length} records…`).start();
151
+ const { getDB } = await import("@actuate/cms-core");
152
+ const db = getDB();
153
+ let adminUser = await db.user.findFirst({ where: { role: "ADMIN" } });
154
+ if (!adminUser) {
155
+ adminUser = await db.user.create({
156
+ data: {
157
+ email: "admin@actuatecms.dev",
158
+ name: "Admin",
159
+ role: "ADMIN",
160
+ isActive: true,
161
+ isApproved: true,
162
+ emailVerified: true,
163
+ },
164
+ });
165
+ }
166
+ const userId = adminUser.id;
167
+ let imported = 0;
168
+ for (const rec of records) {
169
+ const docCollection = rec.collection ?? collection ?? "imported";
170
+ const data = { ...rec };
171
+ delete data.collection;
172
+ delete data.wpStatus;
173
+ delete data.wpPostDate;
174
+ await db.document.create({
175
+ data: {
176
+ collection: docCollection,
177
+ data,
178
+ status: "DRAFT",
179
+ createdById: userId,
180
+ updatedById: userId,
181
+ },
182
+ });
183
+ imported++;
184
+ }
185
+ writeSpinner.succeed(`Imported ${imported} documents as DRAFT.`);
186
+ }
187
+ catch (err) {
188
+ spinner.fail("Import failed.");
189
+ const message = err instanceof Error ? err.message : String(err);
190
+ logger.error(message);
191
+ process.exit(1);
192
+ }
193
+ }
194
+ export function registerImportCommand(program) {
195
+ program
196
+ .command("import")
197
+ .description("Import content from JSON, CSV, or WordPress XML files")
198
+ .requiredOption("-s, --source <path>", "Path to the import file")
199
+ .option("-f, --format <type>", "File format: json, csv, or wordpress (default: auto-detect)")
200
+ .option("-c, --collection <slug>", "Target collection (required for csv/wordpress)")
201
+ .option("--dry-run", "Preview import without writing to the database")
202
+ .action(runImport);
203
+ }
204
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerMigrateCommand(program: Command): void;
3
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0CpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmB7D"}
@@ -0,0 +1,57 @@
1
+ import { execSync } from "node:child_process";
2
+ import ora from "ora";
3
+ import { logger } from "../utils/logger.js";
4
+ const execOpts = { stdio: "inherit", cwd: process.cwd() };
5
+ function runPendingMigrations() {
6
+ const spinner = ora("Running pending migrations…").start();
7
+ try {
8
+ spinner.stop();
9
+ execSync("npx prisma migrate deploy", execOpts);
10
+ logger.success("All pending migrations applied.");
11
+ }
12
+ catch {
13
+ spinner.fail("Migration run failed.");
14
+ process.exitCode = 1;
15
+ }
16
+ }
17
+ function createMigration(name) {
18
+ const spinner = ora(`Creating migration "${name}"…`).start();
19
+ try {
20
+ spinner.stop();
21
+ execSync(`npx prisma migrate dev --name ${name}`, execOpts);
22
+ logger.success(`Migration "${name}" created.`);
23
+ }
24
+ catch {
25
+ spinner.fail("Migration creation failed.");
26
+ process.exitCode = 1;
27
+ }
28
+ }
29
+ function showMigrationStatus() {
30
+ const spinner = ora("Checking migration status…").start();
31
+ try {
32
+ spinner.stop();
33
+ execSync("npx prisma migrate status", execOpts);
34
+ }
35
+ catch {
36
+ spinner.fail("Could not retrieve migration status.");
37
+ process.exitCode = 1;
38
+ }
39
+ }
40
+ export function registerMigrateCommand(program) {
41
+ const migrate = program
42
+ .command("migrate")
43
+ .description("Database migration utilities powered by Prisma");
44
+ migrate
45
+ .command("run")
46
+ .description("Apply all pending migrations")
47
+ .action(runPendingMigrations);
48
+ migrate
49
+ .command("create <name>")
50
+ .description("Create a new migration with the given name")
51
+ .action(createMigration);
52
+ migrate
53
+ .command("status")
54
+ .description("Show current migration status")
55
+ .action(showMigrationStatus);
56
+ }
57
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAwB,MAAM,oBAAoB,CAAC;AACpE,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;AAE3E,SAAS,oBAAoB;IAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,6BAA6B,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3D,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,QAAQ,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IAC7D,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,QAAQ,CAAC,iCAAiC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,YAAY,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC3C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,OAAO,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1D,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,QAAQ,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACrD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,gDAAgD,CAAC,CAAC;IAEjE,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAEhC,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,eAAe,CAAC,CAAC;IAE3B,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerSeedCommand(program: Command): void;
3
+ //# sourceMappingURL=seed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2XpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAQ1D"}