@actuate-media/cli 0.4.0 → 0.4.2
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/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test.log +21 -10
- package/CHANGELOG.md +34 -0
- package/dist/__tests__/deployment-diagnostics.test.js +40 -0
- package/dist/__tests__/deployment-diagnostics.test.js.map +1 -1
- package/dist/__tests__/init.test.js.map +1 -1
- package/dist/__tests__/schema-fragment.test.js +1 -1
- package/dist/__tests__/schema-fragment.test.js.map +1 -1
- package/dist/__tests__/seed.test.js.map +1 -1
- package/dist/commands/db-init.d.ts +2 -2
- package/dist/commands/db-init.d.ts.map +1 -1
- package/dist/commands/db-init.js +32 -32
- package/dist/commands/db-init.js.map +1 -1
- package/dist/commands/db-status.d.ts +1 -1
- package/dist/commands/db-status.d.ts.map +1 -1
- package/dist/commands/db-status.js +33 -33
- package/dist/commands/db-status.js.map +1 -1
- package/dist/commands/doctor.d.ts +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +55 -38
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/export.d.ts +1 -1
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +32 -32
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/generate.d.ts +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +8 -8
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/import.d.ts +1 -1
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +55 -58
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +1 -1
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +18 -24
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/seed.d.ts +1 -1
- package/dist/commands/seed.d.ts.map +1 -1
- package/dist/commands/seed.js +156 -157
- package/dist/commands/seed.js.map +1 -1
- package/dist/commands/update-check.d.ts +1 -1
- package/dist/commands/update-check.d.ts.map +1 -1
- package/dist/commands/update-check.js +34 -27
- package/dist/commands/update-check.js.map +1 -1
- package/dist/commands/upgrade.d.ts +1 -1
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +41 -34
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/deployment/diagnostics.d.ts +2 -0
- package/dist/deployment/diagnostics.d.ts.map +1 -1
- package/dist/deployment/diagnostics.js +50 -1
- package/dist/deployment/diagnostics.js.map +1 -1
- package/dist/index.js +15 -15
- package/dist/index.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +5 -5
- package/dist/utils/logger.js.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/deployment-diagnostics.test.ts +100 -50
- package/src/__tests__/init.test.ts +17 -17
- package/src/__tests__/schema-fragment.test.ts +29 -25
- package/src/__tests__/seed.test.ts +25 -25
- package/src/commands/db-init.ts +59 -59
- package/src/commands/db-status.ts +70 -68
- package/src/commands/doctor.ts +110 -86
- package/src/commands/export.ts +65 -75
- package/src/commands/generate.ts +14 -16
- package/src/commands/import.ts +125 -140
- package/src/commands/init.ts +14 -14
- package/src/commands/migrate.ts +29 -35
- package/src/commands/seed.ts +294 -300
- package/src/commands/update-check.ts +77 -72
- package/src/commands/upgrade.ts +92 -85
- package/src/deployment/diagnostics.ts +124 -61
- package/src/index.ts +30 -30
- package/src/utils/logger.ts +10 -10
package/dist/commands/import.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { readFile } from
|
|
2
|
-
import { existsSync } from
|
|
3
|
-
import ora from
|
|
4
|
-
import { logger } from
|
|
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
5
|
function detectFormat(filePath) {
|
|
6
|
-
const ext = filePath.split(
|
|
7
|
-
if (ext ===
|
|
8
|
-
return
|
|
9
|
-
if (ext ===
|
|
10
|
-
return
|
|
11
|
-
if (ext ===
|
|
12
|
-
return
|
|
13
|
-
return
|
|
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
14
|
}
|
|
15
15
|
function parseCsv(content) {
|
|
16
|
-
const lines = content.split(
|
|
16
|
+
const lines = content.split('\n').filter((line) => line.trim());
|
|
17
17
|
if (lines.length < 2)
|
|
18
18
|
return [];
|
|
19
19
|
const parseRow = (row) => {
|
|
20
20
|
const values = [];
|
|
21
|
-
let current =
|
|
21
|
+
let current = '';
|
|
22
22
|
let inQuotes = false;
|
|
23
23
|
for (let i = 0; i < row.length; i++) {
|
|
24
24
|
const char = row[i];
|
|
@@ -31,9 +31,9 @@ function parseCsv(content) {
|
|
|
31
31
|
inQuotes = !inQuotes;
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
else if (char ===
|
|
34
|
+
else if (char === ',' && !inQuotes) {
|
|
35
35
|
values.push(current.trim());
|
|
36
|
-
current =
|
|
36
|
+
current = '';
|
|
37
37
|
}
|
|
38
38
|
else {
|
|
39
39
|
current += char;
|
|
@@ -47,7 +47,7 @@ function parseCsv(content) {
|
|
|
47
47
|
const values = parseRow(line);
|
|
48
48
|
const obj = {};
|
|
49
49
|
headers.forEach((header, i) => {
|
|
50
|
-
obj[header] = values[i] ??
|
|
50
|
+
obj[header] = values[i] ?? '';
|
|
51
51
|
});
|
|
52
52
|
return obj;
|
|
53
53
|
});
|
|
@@ -61,39 +61,36 @@ function parseWordPressXml(content) {
|
|
|
61
61
|
const extract = (tag) => {
|
|
62
62
|
const tagRegex = new RegExp(`<${tag}><!\\[CDATA\\[([\\s\\S]*?)\\]\\]><\\/${tag}>|<${tag}>([\\s\\S]*?)<\\/${tag}>`);
|
|
63
63
|
const m = tagRegex.exec(itemXml);
|
|
64
|
-
return m?.[1] ?? m?.[2] ??
|
|
64
|
+
return m?.[1] ?? m?.[2] ?? '';
|
|
65
65
|
};
|
|
66
|
-
const title = extract(
|
|
67
|
-
const body = extract(
|
|
68
|
-
const slug = extract(
|
|
69
|
-
const status = extract(
|
|
70
|
-
const postDate = extract(
|
|
71
|
-
const postType = extract(
|
|
72
|
-
if (postType && postType !==
|
|
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
73
|
continue;
|
|
74
74
|
items.push({
|
|
75
75
|
title,
|
|
76
|
-
slug: slug || title.toLowerCase().replace(/[^a-z0-9]+/g,
|
|
76
|
+
slug: slug || title.toLowerCase().replace(/[^a-z0-9]+/g, '-'),
|
|
77
77
|
content: body,
|
|
78
78
|
wpStatus: status,
|
|
79
79
|
wpPostDate: postDate,
|
|
80
|
-
collection: postType ===
|
|
80
|
+
collection: postType === 'page' ? 'pages' : 'posts',
|
|
81
81
|
});
|
|
82
82
|
}
|
|
83
83
|
return items;
|
|
84
84
|
}
|
|
85
85
|
function printPreviewTable(records, collection) {
|
|
86
|
-
console.log(
|
|
87
|
-
console.log(
|
|
88
|
-
|
|
89
|
-
"Title / Slug".padEnd(40) +
|
|
90
|
-
"Status");
|
|
91
|
-
console.log(" " + "-".repeat(66));
|
|
86
|
+
console.log('\n Dry-run preview:\n');
|
|
87
|
+
console.log(' ' + 'Collection'.padEnd(16) + 'Title / Slug'.padEnd(40) + 'Status');
|
|
88
|
+
console.log(' ' + '-'.repeat(66));
|
|
92
89
|
const shown = records.slice(0, 20);
|
|
93
90
|
for (const rec of shown) {
|
|
94
|
-
const col = (rec.collection ?? collection ??
|
|
95
|
-
const label = (rec.title ?? rec.slug ??
|
|
96
|
-
const status = rec.status ?? rec.wpStatus ??
|
|
91
|
+
const col = (rec.collection ?? collection ?? 'imported').padEnd(16);
|
|
92
|
+
const label = (rec.title ?? rec.slug ?? '(untitled)').slice(0, 38).padEnd(40);
|
|
93
|
+
const status = rec.status ?? rec.wpStatus ?? 'DRAFT';
|
|
97
94
|
console.log(` ${col}${label}${status}`);
|
|
98
95
|
}
|
|
99
96
|
if (records.length > 20) {
|
|
@@ -110,19 +107,19 @@ async function runImport(options) {
|
|
|
110
107
|
const format = options.format ?? detectFormat(source);
|
|
111
108
|
const spinner = ora(`Parsing ${format} file: ${source}…`).start();
|
|
112
109
|
try {
|
|
113
|
-
const raw = await readFile(source,
|
|
110
|
+
const raw = await readFile(source, 'utf-8');
|
|
114
111
|
let records;
|
|
115
|
-
if (format ===
|
|
112
|
+
if (format === 'json') {
|
|
116
113
|
const parsed = JSON.parse(raw);
|
|
117
114
|
if (!Array.isArray(parsed)) {
|
|
118
|
-
spinner.fail(
|
|
115
|
+
spinner.fail('JSON file must contain an array of documents.');
|
|
119
116
|
process.exit(1);
|
|
120
117
|
}
|
|
121
118
|
records = parsed;
|
|
122
119
|
}
|
|
123
|
-
else if (format ===
|
|
120
|
+
else if (format === 'csv') {
|
|
124
121
|
if (!collection) {
|
|
125
|
-
spinner.fail(
|
|
122
|
+
spinner.fail('The --collection option is required for CSV imports.');
|
|
126
123
|
process.exit(1);
|
|
127
124
|
}
|
|
128
125
|
records = parseCsv(raw).map((row) => ({
|
|
@@ -130,7 +127,7 @@ async function runImport(options) {
|
|
|
130
127
|
...row,
|
|
131
128
|
}));
|
|
132
129
|
}
|
|
133
|
-
else if (format ===
|
|
130
|
+
else if (format === 'wordpress') {
|
|
134
131
|
records = parseWordPressXml(raw);
|
|
135
132
|
}
|
|
136
133
|
else {
|
|
@@ -139,24 +136,24 @@ async function runImport(options) {
|
|
|
139
136
|
}
|
|
140
137
|
spinner.succeed(`Parsed ${records.length} records from ${source}.`);
|
|
141
138
|
if (records.length === 0) {
|
|
142
|
-
logger.warn(
|
|
139
|
+
logger.warn('No records found in file.');
|
|
143
140
|
return;
|
|
144
141
|
}
|
|
145
142
|
if (dryRun) {
|
|
146
143
|
printPreviewTable(records, collection);
|
|
147
|
-
logger.info(
|
|
144
|
+
logger.info('Dry run — no data was written.');
|
|
148
145
|
return;
|
|
149
146
|
}
|
|
150
147
|
const writeSpinner = ora(`Importing ${records.length} records…`).start();
|
|
151
|
-
const { getDB } = await import(
|
|
148
|
+
const { getDB } = await import('@actuate-media/cms-core');
|
|
152
149
|
const db = getDB();
|
|
153
|
-
let adminUser = await db.user.findFirst({ where: { role:
|
|
150
|
+
let adminUser = await db.user.findFirst({ where: { role: 'ADMIN' } });
|
|
154
151
|
if (!adminUser) {
|
|
155
152
|
adminUser = await db.user.create({
|
|
156
153
|
data: {
|
|
157
|
-
email:
|
|
158
|
-
name:
|
|
159
|
-
role:
|
|
154
|
+
email: 'admin@actuatecms.dev',
|
|
155
|
+
name: 'Admin',
|
|
156
|
+
role: 'ADMIN',
|
|
160
157
|
isActive: true,
|
|
161
158
|
isApproved: true,
|
|
162
159
|
emailVerified: true,
|
|
@@ -166,7 +163,7 @@ async function runImport(options) {
|
|
|
166
163
|
const userId = adminUser.id;
|
|
167
164
|
let imported = 0;
|
|
168
165
|
for (const rec of records) {
|
|
169
|
-
const docCollection = rec.collection ?? collection ??
|
|
166
|
+
const docCollection = rec.collection ?? collection ?? 'imported';
|
|
170
167
|
const data = { ...rec };
|
|
171
168
|
delete data.collection;
|
|
172
169
|
delete data.wpStatus;
|
|
@@ -175,7 +172,7 @@ async function runImport(options) {
|
|
|
175
172
|
data: {
|
|
176
173
|
collection: docCollection,
|
|
177
174
|
data,
|
|
178
|
-
status:
|
|
175
|
+
status: 'DRAFT',
|
|
179
176
|
createdById: userId,
|
|
180
177
|
updatedById: userId,
|
|
181
178
|
},
|
|
@@ -185,7 +182,7 @@ async function runImport(options) {
|
|
|
185
182
|
writeSpinner.succeed(`Imported ${imported} documents as DRAFT.`);
|
|
186
183
|
}
|
|
187
184
|
catch (err) {
|
|
188
|
-
spinner.fail(
|
|
185
|
+
spinner.fail('Import failed.');
|
|
189
186
|
const message = err instanceof Error ? err.message : String(err);
|
|
190
187
|
logger.error(message);
|
|
191
188
|
process.exit(1);
|
|
@@ -193,12 +190,12 @@ async function runImport(options) {
|
|
|
193
190
|
}
|
|
194
191
|
export function registerImportCommand(program) {
|
|
195
192
|
program
|
|
196
|
-
.command(
|
|
197
|
-
.description(
|
|
198
|
-
.requiredOption(
|
|
199
|
-
.option(
|
|
200
|
-
.option(
|
|
201
|
-
.option(
|
|
193
|
+
.command('import')
|
|
194
|
+
.description('Import content from JSON, CSV, or WordPress XML files')
|
|
195
|
+
.requiredOption('-s, --source <path>', 'Path to the import file')
|
|
196
|
+
.option('-f, --format <type>', 'File format: json, csv, or wordpress (default: auto-detect)')
|
|
197
|
+
.option('-c, --collection <slug>', 'Target collection (required for csv/wordpress)')
|
|
198
|
+
.option('--dry-run', 'Preview import without writing to the database')
|
|
202
199
|
.action(runImport);
|
|
203
200
|
}
|
|
204
201
|
//# sourceMappingURL=import.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,wBAAgB,sBAAsB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAIrE;AAsBD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAK1D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAE1C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,MAAM,UAAU,sBAAsB,CAAC,WAAoB;IACzD,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAA;IAC7C,IAAI,WAAW;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACvC,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAA;AACzD,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,WAAoB;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,EAAE,sBAAsB,CAAC,WAAW,CAAC,EAAE;QACrE,KAAK,EAAE,SAAS;KACjB,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACpE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAC3B,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,IAAI,QAAQ,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,gDAAgD,QAAQ,GAAG,CAAC,CAAA;QACzE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACxB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,qBAAqB,CAAC;SAC9B,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,OAAO,CAAC,CAAA;AACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA0CnC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAa7D"}
|
package/dist/commands/migrate.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { execSync } from
|
|
2
|
-
import ora from
|
|
3
|
-
import { logger } from
|
|
4
|
-
const execOpts = { stdio:
|
|
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
5
|
function runPendingMigrations() {
|
|
6
|
-
const spinner = ora(
|
|
6
|
+
const spinner = ora('Running pending migrations…').start();
|
|
7
7
|
try {
|
|
8
8
|
spinner.stop();
|
|
9
|
-
execSync(
|
|
10
|
-
logger.success(
|
|
9
|
+
execSync('npx prisma migrate deploy', execOpts);
|
|
10
|
+
logger.success('All pending migrations applied.');
|
|
11
11
|
}
|
|
12
12
|
catch {
|
|
13
|
-
spinner.fail(
|
|
13
|
+
spinner.fail('Migration run failed.');
|
|
14
14
|
process.exitCode = 1;
|
|
15
15
|
}
|
|
16
16
|
}
|
|
@@ -22,36 +22,30 @@ function createMigration(name) {
|
|
|
22
22
|
logger.success(`Migration "${name}" created.`);
|
|
23
23
|
}
|
|
24
24
|
catch {
|
|
25
|
-
spinner.fail(
|
|
25
|
+
spinner.fail('Migration creation failed.');
|
|
26
26
|
process.exitCode = 1;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
function showMigrationStatus() {
|
|
30
|
-
const spinner = ora(
|
|
30
|
+
const spinner = ora('Checking migration status…').start();
|
|
31
31
|
try {
|
|
32
32
|
spinner.stop();
|
|
33
|
-
execSync(
|
|
33
|
+
execSync('npx prisma migrate status', execOpts);
|
|
34
34
|
}
|
|
35
35
|
catch {
|
|
36
|
-
spinner.fail(
|
|
36
|
+
spinner.fail('Could not retrieve migration status.');
|
|
37
37
|
process.exitCode = 1;
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
export function registerMigrateCommand(program) {
|
|
41
41
|
const migrate = program
|
|
42
|
-
.command(
|
|
43
|
-
.description(
|
|
42
|
+
.command('migrate')
|
|
43
|
+
.description('Database migration utilities powered by Prisma');
|
|
44
|
+
migrate.command('run').description('Apply all pending migrations').action(runPendingMigrations);
|
|
44
45
|
migrate
|
|
45
|
-
.command(
|
|
46
|
-
.description(
|
|
47
|
-
.action(runPendingMigrations);
|
|
48
|
-
migrate
|
|
49
|
-
.command("create <name>")
|
|
50
|
-
.description("Create a new migration with the given name")
|
|
46
|
+
.command('create <name>')
|
|
47
|
+
.description('Create a new migration with the given name')
|
|
51
48
|
.action(createMigration);
|
|
52
|
-
migrate
|
|
53
|
-
.command("status")
|
|
54
|
-
.description("Show current migration status")
|
|
55
|
-
.action(showMigrationStatus);
|
|
49
|
+
migrate.command('status').description('Show current migration status').action(showMigrationStatus);
|
|
56
50
|
}
|
|
57
51
|
//# sourceMappingURL=migrate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAwB,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAwB,MAAM,oBAAoB,CAAA;AACnE,OAAO,GAAG,MAAM,KAAK,CAAA;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,MAAM,QAAQ,GAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,CAAA;AAE1E,SAAS,oBAAoB;IAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,6BAA6B,CAAC,CAAC,KAAK,EAAE,CAAA;IAC1D,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,EAAE,CAAA;QACd,QAAQ,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAA;QAC/C,MAAM,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAA;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;QACrC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;IACtB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAuB,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,CAAA;IAC5D,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,EAAE,CAAA;QACd,QAAQ,CAAC,iCAAiC,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAA;QAC3D,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,YAAY,CAAC,CAAA;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;QAC1C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;IACtB,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,OAAO,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAA;IACzD,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,EAAE,CAAA;QACd,QAAQ,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAA;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAA;QACpD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;IACtB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,gDAAgD,CAAC,CAAA;IAEhE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,8BAA8B,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAE/F,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,eAAe,CAAC,CAAA;IAE1B,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAA;AACpG,CAAC"}
|
package/dist/commands/seed.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../src/commands/seed.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAuKnC,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,sBAAsB,EAAE,CAAA;IACnC,OAAO,EAAE,oBAAoB,EAAE,CAAA;CAChC;AAyBD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,qBAAqB,CAkC7E;AA8HD,wBAAsB,eAAe,CAAC,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC,CAqBtE;AAoBD,wBAAsB,kBAAkB,CACtC,EAAE,EAAE,GAAG,EACP,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,sBAAsB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAgCf;AA0GD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAe1D"}
|