@oktis-works/cms 0.2.0 → 0.3.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.
- package/dist/assets.d.ts +23 -6
- package/dist/assets.d.ts.map +1 -1
- package/dist/assets.js +262 -87
- package/dist/assets.js.map +1 -1
- package/dist/bluegreen.d.ts.map +1 -1
- package/dist/bluegreen.js +75 -52
- package/dist/bluegreen.js.map +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +269 -131
- package/dist/commands.js.map +1 -1
- package/dist/config-wizard.js +34 -36
- package/dist/config-wizard.js.map +1 -1
- package/dist/deploy-target.d.ts +20 -0
- package/dist/deploy-target.d.ts.map +1 -0
- package/dist/deploy-target.js +90 -0
- package/dist/deploy-target.js.map +1 -0
- package/dist/deploy.d.ts +20 -0
- package/dist/deploy.d.ts.map +1 -0
- package/dist/deploy.js +154 -0
- package/dist/deploy.js.map +1 -0
- package/dist/docker.d.ts +16 -0
- package/dist/docker.d.ts.map +1 -1
- package/dist/docker.js +25 -0
- package/dist/docker.js.map +1 -1
- package/dist/docs-updater.d.ts +10 -0
- package/dist/docs-updater.d.ts.map +1 -0
- package/dist/docs-updater.js +45 -0
- package/dist/docs-updater.js.map +1 -0
- package/dist/doctor.js +12 -12
- package/dist/doctor.js.map +1 -1
- package/dist/env-file.js +1 -1
- package/dist/env-file.js.map +1 -1
- package/dist/env-schema.d.ts.map +1 -1
- package/dist/env-schema.js +64 -64
- package/dist/env-schema.js.map +1 -1
- package/dist/extension-scaffold.js +5 -5
- package/dist/extension-scaffold.js.map +1 -1
- package/dist/guards.js +8 -8
- package/dist/guards.js.map +1 -1
- package/dist/history.d.ts +48 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +104 -0
- package/dist/history.js.map +1 -0
- package/dist/installer.js +9 -9
- package/dist/installer.js.map +1 -1
- package/dist/npm-registry.js +1 -1
- package/dist/npm-registry.js.map +1 -1
- package/dist/pm2.d.ts +18 -0
- package/dist/pm2.d.ts.map +1 -0
- package/dist/pm2.js +179 -0
- package/dist/pm2.js.map +1 -0
- package/dist/project-config.js +1 -1
- package/dist/project-config.js.map +1 -1
- package/dist/prompt.d.ts +27 -4
- package/dist/prompt.d.ts.map +1 -1
- package/dist/prompt.js +254 -29
- package/dist/prompt.js.map +1 -1
- package/dist/redeploy.d.ts +6 -1
- package/dist/redeploy.d.ts.map +1 -1
- package/dist/redeploy.js +137 -74
- package/dist/redeploy.js.map +1 -1
- package/dist/rollback.d.ts +15 -0
- package/dist/rollback.d.ts.map +1 -0
- package/dist/rollback.js +170 -0
- package/dist/rollback.js.map +1 -0
- package/dist/scaffold-docs.d.ts +5 -0
- package/dist/scaffold-docs.d.ts.map +1 -1
- package/dist/scaffold-docs.js +61 -19
- package/dist/scaffold-docs.js.map +1 -1
- package/dist/scaffold.d.ts +3 -1
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +25 -16
- package/dist/scaffold.js.map +1 -1
- package/dist/simple.d.ts +31 -0
- package/dist/simple.d.ts.map +1 -0
- package/dist/simple.js +200 -0
- package/dist/simple.js.map +1 -0
- package/dist/start.js +1 -1
- package/dist/theme-build.js +3 -3
- package/dist/theme-build.js.map +1 -1
- package/dist/update.d.ts +23 -15
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +211 -66
- package/dist/update.js.map +1 -1
- package/package.json +7 -7
package/dist/guards.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../src/guards.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,EAAE;AACF,0EAA0E;AAC1E,2EAA2E;AAC3E,6EAA6E;AAC7E,wEAAwE;AACxE,oCAAoC;AACpC,EAAE;AACF,UAAU;AACV,gFAAgF;AAChF,oEAAoE;AACpE,8DAA8D;AAC9D,8CAA8C;AAE9C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAcnD,+EAA+E;AAC/E,MAAM,aAAa,GAAG,oBAAoB,CAAC;AAE3C,SAAS,UAAU,CAAC,MAA8B;IAChD,MAAM,IAAI,GAAG,gBAAgB,CAAC;IAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAwB,EAAE;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC;IAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAErC,IAAI,GAAG,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAE7E,kCAAkC;IAClC,IAAI,MAAM,CAAC,aAAa,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,MAAM,CAAC,oBAAoB,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,SAAS;IAExD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC9E,IAAI,MAAM,IAAI,oDAAoD,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAChF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sEAAsE;IACtE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,IAAI,GAAG,IAAI,wCAAwC,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IAC7E,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,MAA8B;IACrD,MAAM,IAAI,GAAG,mBAAmB,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAQD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAe,EACf,OAAoD,EAAE;IAEtD,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACjD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAEvE,OAAO;QACL,EAAE,EAAE,KAAK;QACT,OAAO,EACL,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../src/guards.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export type HistoryMode = 'download' | 'deploy' | 'pm2';
|
|
2
|
+
export interface HistoryEntry {
|
|
3
|
+
id: number;
|
|
4
|
+
/** Modo da operação. */
|
|
5
|
+
mode: HistoryMode;
|
|
6
|
+
/** Timestamp ISO da operação. */
|
|
7
|
+
at: string;
|
|
8
|
+
/** Versão da CLI que executou. */
|
|
9
|
+
cliVersion: string;
|
|
10
|
+
/** Pacotes atualizados (apenas modo download/deploy). */
|
|
11
|
+
packages?: Array<{
|
|
12
|
+
name: string;
|
|
13
|
+
from: string;
|
|
14
|
+
to: string;
|
|
15
|
+
}>;
|
|
16
|
+
/** Lane ativa após deploy (apenas modo deploy). */
|
|
17
|
+
lane?: 'blue' | 'green';
|
|
18
|
+
/** Lane anterior (para rollback de lane). */
|
|
19
|
+
previousLane?: 'blue' | 'green' | null;
|
|
20
|
+
/** Mensagem descritiva. */
|
|
21
|
+
message: string;
|
|
22
|
+
/** Snapshot do package.json (apenas modo download). */
|
|
23
|
+
packageJsonSnapshot?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface HistoryState {
|
|
26
|
+
entries: HistoryEntry[];
|
|
27
|
+
/** Próximo ID incremental. */
|
|
28
|
+
nextId: number;
|
|
29
|
+
}
|
|
30
|
+
/** Caminho absoluto do arquivo de histórico. */
|
|
31
|
+
export declare function historyPath(cwd: string): string;
|
|
32
|
+
/** Lê o estado do histórico. */
|
|
33
|
+
export declare function readHistory(cwd: string): HistoryState;
|
|
34
|
+
/** Grava o estado do histórico (atômico via writeFileSync). */
|
|
35
|
+
export declare function writeHistory(cwd: string, state: HistoryState): void;
|
|
36
|
+
/** Adiciona uma entrada ao histórico e retorna a entrada criada. */
|
|
37
|
+
export declare function addHistoryEntry(cwd: string, entry: Omit<HistoryEntry, 'id'>, cliVersion: string): HistoryEntry;
|
|
38
|
+
/** Lista entradas (mais recentes primeiro). */
|
|
39
|
+
export declare function listHistory(cwd: string): HistoryEntry[];
|
|
40
|
+
/** Busca entrada por ID. */
|
|
41
|
+
export declare function getHistoryEntry(cwd: string, id: number): HistoryEntry | null;
|
|
42
|
+
/** Remove entrada por ID (útil para limpar). */
|
|
43
|
+
export declare function removeHistoryEntry(cwd: string, id: number): boolean;
|
|
44
|
+
/** Limpa todo o histórico. */
|
|
45
|
+
export declare function clearHistory(cwd: string): void;
|
|
46
|
+
/** Formata uma entrada para exibição no terminal. */
|
|
47
|
+
export declare function formatHistoryEntry(entry: HistoryEntry): string;
|
|
48
|
+
//# sourceMappingURL=history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,wBAAwB;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7D,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,6CAA6C;IAC7C,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACvC,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAKD,gDAAgD;AAChD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,gCAAgC;AAChC,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAYrD;AAED,+DAA+D;AAC/D,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAInE;AAED,oEAAoE;AACpE,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAC/B,UAAU,EAAE,MAAM,GACjB,YAAY,CAYd;AAED,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,EAAE,CAGvD;AAED,4BAA4B;AAC5B,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAG5E;AAED,gDAAgD;AAChD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAOnE;AAED,8BAA8B;AAC9B,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,qDAAqD;AACrD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAuB9D"}
|
package/dist/history.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// @oktis-works/cms - Sistema de histórico e rollback unificado
|
|
2
|
+
//
|
|
3
|
+
// O estado persiste em `.deploy/update-history.json` (para updates de pacotes)
|
|
4
|
+
// e em `.deploy/state.json` (para deploys blue/green).
|
|
5
|
+
// Ambos expõem a mesma API: lista, detalhe, rollback para índice.
|
|
6
|
+
//
|
|
7
|
+
// Entradas de histórico cobrem:
|
|
8
|
+
// - update:download (pacotes @oktis-works/*)
|
|
9
|
+
// - update:deploy (blue/green + pacotes)
|
|
10
|
+
// - deploy:pm2 (ecosystem pm2)
|
|
11
|
+
// - deploy:docker (alias para update:deploy)
|
|
12
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
13
|
+
import { join, dirname } from 'node:path';
|
|
14
|
+
const HISTORY_DIR = '.deploy';
|
|
15
|
+
const HISTORY_FILE = 'update-history.json';
|
|
16
|
+
/** Caminho absoluto do arquivo de histórico. */
|
|
17
|
+
export function historyPath(cwd) {
|
|
18
|
+
return join(cwd, HISTORY_DIR, HISTORY_FILE);
|
|
19
|
+
}
|
|
20
|
+
/** Lê o estado do histórico. */
|
|
21
|
+
export function readHistory(cwd) {
|
|
22
|
+
const path = historyPath(cwd);
|
|
23
|
+
if (!existsSync(path))
|
|
24
|
+
return { entries: [], nextId: 1 };
|
|
25
|
+
try {
|
|
26
|
+
const raw = readFileSync(path, 'utf-8');
|
|
27
|
+
const parsed = JSON.parse(raw);
|
|
28
|
+
if (!Array.isArray(parsed.entries))
|
|
29
|
+
return { entries: [], nextId: 1 };
|
|
30
|
+
if (typeof parsed.nextId !== 'number')
|
|
31
|
+
parsed.nextId = parsed.entries.length + 1;
|
|
32
|
+
return parsed;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return { entries: [], nextId: 1 };
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** Grava o estado do histórico (atômico via writeFileSync). */
|
|
39
|
+
export function writeHistory(cwd, state) {
|
|
40
|
+
const path = historyPath(cwd);
|
|
41
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
42
|
+
writeFileSync(path, `${JSON.stringify(state, null, 2)}\n`, 'utf-8');
|
|
43
|
+
}
|
|
44
|
+
/** Adiciona uma entrada ao histórico e retorna a entrada criada. */
|
|
45
|
+
export function addHistoryEntry(cwd, entry, cliVersion) {
|
|
46
|
+
const state = readHistory(cwd);
|
|
47
|
+
const newEntry = {
|
|
48
|
+
...entry,
|
|
49
|
+
id: state.nextId++,
|
|
50
|
+
cliVersion,
|
|
51
|
+
};
|
|
52
|
+
state.entries.push(newEntry);
|
|
53
|
+
// Mantém apenas os últimos 50 (diagnóstico, não log infinito)
|
|
54
|
+
if (state.entries.length > 50)
|
|
55
|
+
state.entries = state.entries.slice(-50);
|
|
56
|
+
writeHistory(cwd, state);
|
|
57
|
+
return newEntry;
|
|
58
|
+
}
|
|
59
|
+
/** Lista entradas (mais recentes primeiro). */
|
|
60
|
+
export function listHistory(cwd) {
|
|
61
|
+
const state = readHistory(cwd);
|
|
62
|
+
return [...state.entries].reverse();
|
|
63
|
+
}
|
|
64
|
+
/** Busca entrada por ID. */
|
|
65
|
+
export function getHistoryEntry(cwd, id) {
|
|
66
|
+
const state = readHistory(cwd);
|
|
67
|
+
return state.entries.find((e) => e.id === id) ?? null;
|
|
68
|
+
}
|
|
69
|
+
/** Remove entrada por ID (útil para limpar). */
|
|
70
|
+
export function removeHistoryEntry(cwd, id) {
|
|
71
|
+
const state = readHistory(cwd);
|
|
72
|
+
const idx = state.entries.findIndex((e) => e.id === id);
|
|
73
|
+
if (idx === -1)
|
|
74
|
+
return false;
|
|
75
|
+
state.entries.splice(idx, 1);
|
|
76
|
+
writeHistory(cwd, state);
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
/** Limpa todo o histórico. */
|
|
80
|
+
export function clearHistory(cwd) {
|
|
81
|
+
writeHistory(cwd, { entries: [], nextId: 1 });
|
|
82
|
+
}
|
|
83
|
+
/** Formata uma entrada para exibição no terminal. */
|
|
84
|
+
export function formatHistoryEntry(entry) {
|
|
85
|
+
const modeLabel = {
|
|
86
|
+
download: 'download',
|
|
87
|
+
deploy: 'deploy (blue/green)',
|
|
88
|
+
pm2: 'deploy (pm2)',
|
|
89
|
+
}[entry.mode];
|
|
90
|
+
const lines = [
|
|
91
|
+
` ${entry.id}. [${modeLabel}] ${entry.at}`,
|
|
92
|
+
` CLI: ${entry.cliVersion} · ${entry.message}`,
|
|
93
|
+
];
|
|
94
|
+
if (entry.packages && entry.packages.length > 0) {
|
|
95
|
+
for (const p of entry.packages) {
|
|
96
|
+
lines.push(` @oktis-works/${p.name}: ${p.from} → ${p.to}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (entry.lane) {
|
|
100
|
+
lines.push(` lane: ${entry.lane}${entry.previousLane ? ` (was ${entry.previousLane})` : ''}`);
|
|
101
|
+
}
|
|
102
|
+
return lines.join('\n');
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../src/history.ts"],"names":[],"mappings":"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"}
|
package/dist/installer.js
CHANGED
|
@@ -22,7 +22,7 @@ export async function installExtension(kind, sourcePath, options = {}) {
|
|
|
22
22
|
const sourceManifest = join(source, manifestFile);
|
|
23
23
|
const manifest = readManifest(sourceManifest);
|
|
24
24
|
if (!manifest) {
|
|
25
|
-
throw new Error(`
|
|
25
|
+
throw new Error(`Manifest not found or invalid: ${sourceManifest} (expected ${manifestFile})`);
|
|
26
26
|
}
|
|
27
27
|
let name = basename(source);
|
|
28
28
|
if (typeof manifest['name'] === 'string' && manifest['name'].length > 0) {
|
|
@@ -32,21 +32,21 @@ export async function installExtension(kind, sourcePath, options = {}) {
|
|
|
32
32
|
name.startsWith('/') ||
|
|
33
33
|
name.includes('\\') ||
|
|
34
34
|
/[\0\r\n]/.test(name)) {
|
|
35
|
-
throw new Error(`
|
|
35
|
+
throw new Error(`Invalid extension name: "${name}"`);
|
|
36
36
|
}
|
|
37
37
|
// BUSI-022 / RULE-semver-compatibility: manifest completo e compatível é pré-requisito
|
|
38
38
|
assertCompatible(kind, { ...manifest, name, type: kind }, options.cmsVersion ?? CMS_VERSION);
|
|
39
39
|
const baseDir = resolve(cwd, kind === 'plugin' ? config.pluginsDir : config.themesDir);
|
|
40
40
|
const targetDir = resolve(baseDir, name);
|
|
41
41
|
if (!targetDir.startsWith(baseDir + '/') || targetDir === baseDir) {
|
|
42
|
-
throw new Error(`
|
|
42
|
+
throw new Error(`Install path escapes the ${kind}s directory: ${name}`);
|
|
43
43
|
}
|
|
44
44
|
if (existsSync(targetDir)) {
|
|
45
|
-
throw new Error(`${kind === 'plugin' ? 'Plugin' : 'Theme'} "${name}"
|
|
45
|
+
throw new Error(`${kind === 'plugin' ? 'Plugin' : 'Theme'} "${name}" already exists at ${targetDir}`);
|
|
46
46
|
}
|
|
47
47
|
cpSync(source, targetDir, { recursive: true });
|
|
48
48
|
markInstalled(kind, name, cwd);
|
|
49
|
-
console.log(`${kind === 'plugin' ? 'Plugin' : 'Theme'} "${name}"
|
|
49
|
+
console.log(`${kind === 'plugin' ? 'Plugin' : 'Theme'} "${name}" installed at ${targetDir}`);
|
|
50
50
|
return { name, targetDir };
|
|
51
51
|
}
|
|
52
52
|
export function listExtensions(kind, options = {}) {
|
|
@@ -54,21 +54,21 @@ export function listExtensions(kind, options = {}) {
|
|
|
54
54
|
const config = loadProjectConfig(cwd);
|
|
55
55
|
const dir = join(cwd, kind === 'plugin' ? config.pluginsDir : config.themesDir);
|
|
56
56
|
if (!existsSync(dir)) {
|
|
57
|
-
console.log(`
|
|
57
|
+
console.log(`No ${kind}s directory: ${dir}`);
|
|
58
58
|
return;
|
|
59
59
|
}
|
|
60
60
|
const entries = readdirSync(dir, { withFileTypes: true }).filter((entry) => entry.isDirectory());
|
|
61
61
|
if (entries.length === 0) {
|
|
62
|
-
console.log(`
|
|
62
|
+
console.log(`No ${kind} installed.`);
|
|
63
63
|
return;
|
|
64
64
|
}
|
|
65
65
|
const state = loadExtensionsState(cwd);
|
|
66
66
|
const bucket = kind === 'plugin' ? state.plugins : state.themes;
|
|
67
|
-
console.log(`${kind === 'plugin' ? '
|
|
67
|
+
console.log(`${kind === 'plugin' ? 'Installed plugins' : 'Installed themes'}:`);
|
|
68
68
|
for (const entry of entries) {
|
|
69
69
|
const stateEntry = bucket[entry.name];
|
|
70
70
|
const enabled = stateEntry?.enabled ?? true;
|
|
71
|
-
console.log(` - ${entry.name} [${enabled ? '
|
|
71
|
+
console.log(` - ${entry.name} [${enabled ? 'enabled' : 'disabled'}]`);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
//# sourceMappingURL=installer.js.map
|
package/dist/installer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AAAA,iDAAiD;AAEjD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAS3E,SAAS,YAAY,CAAC,YAAoB;IACxC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAA4B,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAwB,EACxB,UAAkB,EAClB,UAA4B,EAAE;IAE9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,MAAM,YAAY,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,YAAY,CAAC;IAExE,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;IAE9C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"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"}
|
package/dist/npm-registry.js
CHANGED
|
@@ -6,7 +6,7 @@ async function fetchJson(url, timeoutMs = 10_000) {
|
|
|
6
6
|
signal: AbortSignal.timeout(timeoutMs),
|
|
7
7
|
});
|
|
8
8
|
if (!response.ok) {
|
|
9
|
-
throw new Error(`npm registry
|
|
9
|
+
throw new Error(`npm registry responded with ${response.status} for ${url}`);
|
|
10
10
|
}
|
|
11
11
|
return (await response.json());
|
|
12
12
|
}
|
package/dist/npm-registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"npm-registry.js","sourceRoot":"","sources":["../src/npm-registry.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAEnE,MAAM,QAAQ,GAAG,4BAA4B,CAAC;AAS9C,KAAK,UAAU,SAAS,CAAI,GAAW,EAAE,SAAS,GAAG,MAAM;IACzD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;QACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;KACvC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"npm-registry.js","sourceRoot":"","sources":["../src/npm-registry.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAEnE,MAAM,QAAQ,GAAG,4BAA4B,CAAC;AAS9C,KAAK,UAAU,SAAS,CAAI,GAAW,EAAE,SAAS,GAAG,MAAM;IACzD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;QACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;KACvC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,QAAQ,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAwB,EACxB,KAAK,GAAG,EAAE;IAEV,MAAM,OAAO,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC;IACnE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,aAAa,OAAO,EAAE,CAAC,CAAC,CAAC,YAAY,OAAO,EAAE,CAAC;IAC5E,MAAM,GAAG,GAAG,GAAG,QAAQ,qBAAqB,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;IAE/E,MAAM,OAAO,GAAG,MAAM,SAAS,CAE5B,GAAG,CAAC,CAAC;IAER,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;QAClC,KAAK,EAAE,GAAG,CAAC,KAAK;KACjB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,WAAmB;IACxD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,SAAS,CAC7B,GAAG,QAAQ,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CACrE,CAAC;QACF,OAAO,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
package/dist/pm2.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type Runner } from './docker.js';
|
|
2
|
+
import type { Prompt } from './prompt.js';
|
|
3
|
+
import type { OutdatedEntry } from './update.js';
|
|
4
|
+
export interface Pm2DeployOptions {
|
|
5
|
+
cwd?: string;
|
|
6
|
+
prompt: Prompt;
|
|
7
|
+
runner?: Runner;
|
|
8
|
+
/** Packages reported as outdated by the caller (drives install + history). */
|
|
9
|
+
outdated?: OutdatedEntry[];
|
|
10
|
+
/** Update packages on the host as part of this deploy (`--install`). */
|
|
11
|
+
install?: boolean;
|
|
12
|
+
/** Run `db:migrate` before starting (default: true). */
|
|
13
|
+
migrate?: boolean;
|
|
14
|
+
/** `--yes`: no prompts at all. */
|
|
15
|
+
yes?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function deployPm2(opts: Pm2DeployOptions): Promise<number>;
|
|
18
|
+
//# sourceMappingURL=pm2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pm2.d.ts","sourceRoot":"","sources":["../src/pm2.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAmDjD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AA2BD,wBAAsB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiGvE"}
|
package/dist/pm2.js
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
// @oktis-works/cms - PM2 deploy target (shared by deploy / update / redeploy)
|
|
2
|
+
//
|
|
3
|
+
// PM2 runs the four apps as host processes — no Docker image, no lanes. The
|
|
4
|
+
// order is the same contract as every other target:
|
|
5
|
+
//
|
|
6
|
+
// 1. pm2 binary present (installs it on demand)
|
|
7
|
+
// 2. ecosystem.config.js exists (generated once, never overwritten)
|
|
8
|
+
// 3. packages updated on the host when asked (`--install`)
|
|
9
|
+
// 4. db:migrate on the host — before anything is (re)started
|
|
10
|
+
// 5. `pm2 startOrReload` — starts a first deploy and reloads the rest
|
|
11
|
+
// 6. history entry + project docs refresh
|
|
12
|
+
//
|
|
13
|
+
// `startOrReload` instead of `reload all`: `reload` fails when the processes
|
|
14
|
+
// are not registered yet, which is exactly the first-deploy case.
|
|
15
|
+
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
16
|
+
import { join } from 'node:path';
|
|
17
|
+
import { migrateInvocation } from './bluegreen.js';
|
|
18
|
+
import { defaultRunner } from './docker.js';
|
|
19
|
+
const PM2_ECOSYSTEM_TEMPLATE = `// ecosystem.config.js — generated by okcms deploy (PM2)
|
|
20
|
+
// Edit as needed and run: pm2 reload all
|
|
21
|
+
|
|
22
|
+
module.exports = {
|
|
23
|
+
apps: [
|
|
24
|
+
{
|
|
25
|
+
name: 'okcms-api',
|
|
26
|
+
script: 'bunx',
|
|
27
|
+
args: '@oktis-works/api',
|
|
28
|
+
env: { NODE_ENV: 'production', PORT: 3000 },
|
|
29
|
+
instances: 1,
|
|
30
|
+
autorestart: true,
|
|
31
|
+
watch: false,
|
|
32
|
+
max_memory_restart: '500M',
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'okcms-admin',
|
|
36
|
+
script: 'bunx',
|
|
37
|
+
args: '@oktis-works/admin',
|
|
38
|
+
env: { NODE_ENV: 'production', PORT: 3011 },
|
|
39
|
+
instances: 1,
|
|
40
|
+
autorestart: true,
|
|
41
|
+
watch: false,
|
|
42
|
+
max_memory_restart: '500M',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'okcms-web',
|
|
46
|
+
script: 'bunx',
|
|
47
|
+
args: '@oktis-works/web',
|
|
48
|
+
env: { NODE_ENV: 'production', WEB_PORT: 3001 },
|
|
49
|
+
instances: 1,
|
|
50
|
+
autorestart: true,
|
|
51
|
+
watch: false,
|
|
52
|
+
max_memory_restart: '500M',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'okcms-worker',
|
|
56
|
+
script: 'bunx',
|
|
57
|
+
args: '@oktis-works/worker',
|
|
58
|
+
env: { NODE_ENV: 'production', WORKER_MODE: 'pm2' },
|
|
59
|
+
instances: 1,
|
|
60
|
+
autorestart: true,
|
|
61
|
+
watch: false,
|
|
62
|
+
max_memory_restart: '500M',
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
};
|
|
66
|
+
`;
|
|
67
|
+
/** Is PM2 installed globally? */
|
|
68
|
+
async function checkPm2Installed(runner) {
|
|
69
|
+
return runner('pm2', ['--version'], { timeoutMs: 10_000 }).ok;
|
|
70
|
+
}
|
|
71
|
+
/** Install PM2 globally via bun, falling back to npm. */
|
|
72
|
+
async function installPm2(runner) {
|
|
73
|
+
if (runner('bun', ['add', '-g', 'pm2'], { inherit: true, timeoutMs: 120_000 }).ok)
|
|
74
|
+
return true;
|
|
75
|
+
return runner('npm', ['install', '-g', 'pm2'], { inherit: true, timeoutMs: 120_000 }).ok;
|
|
76
|
+
}
|
|
77
|
+
/** Writes ecosystem.config.js when missing (never overwrites an edited file). */
|
|
78
|
+
function ensureEcosystemConfig(cwd) {
|
|
79
|
+
const path = join(cwd, 'ecosystem.config.js');
|
|
80
|
+
if (existsSync(path))
|
|
81
|
+
return false;
|
|
82
|
+
writeFileSync(path, PM2_ECOSYSTEM_TEMPLATE, 'utf-8');
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
/** Snapshot of package.json so a rollback can restore previous versions. */
|
|
86
|
+
function snapshotPackageJson(cwd) {
|
|
87
|
+
const path = join(cwd, 'package.json');
|
|
88
|
+
return existsSync(path) ? readFileSync(path, 'utf-8') : undefined;
|
|
89
|
+
}
|
|
90
|
+
export async function deployPm2(opts) {
|
|
91
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
92
|
+
const prompt = opts.prompt;
|
|
93
|
+
const runner = opts.runner ?? defaultRunner;
|
|
94
|
+
const outdated = opts.outdated ?? [];
|
|
95
|
+
// ---- 1. pm2 binary ------------------------------------------------------
|
|
96
|
+
if (!(await checkPm2Installed(runner))) {
|
|
97
|
+
prompt.warn('PM2 not found.');
|
|
98
|
+
if (opts.yes !== true) {
|
|
99
|
+
const installIt = await prompt.confirm('Install PM2 globally now? (bun add -g pm2)', {
|
|
100
|
+
defaultValue: true,
|
|
101
|
+
});
|
|
102
|
+
if (!installIt) {
|
|
103
|
+
prompt.error('PM2 is required for this target. Install it manually: bun add -g pm2');
|
|
104
|
+
return 1;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (!(await installPm2(runner))) {
|
|
108
|
+
prompt.error('Failed to install PM2.');
|
|
109
|
+
return 1;
|
|
110
|
+
}
|
|
111
|
+
prompt.success('PM2 installed globally.');
|
|
112
|
+
}
|
|
113
|
+
// ---- 2. ecosystem.config.js --------------------------------------------
|
|
114
|
+
if (ensureEcosystemConfig(cwd))
|
|
115
|
+
prompt.info('ecosystem.config.js created (defaults).');
|
|
116
|
+
const snapshot = snapshotPackageJson(cwd);
|
|
117
|
+
// ---- 3. packages --------------------------------------------------------
|
|
118
|
+
if (opts.install) {
|
|
119
|
+
if (outdated.length === 0) {
|
|
120
|
+
prompt.success('Packages are up to date.');
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
prompt.write('\nUpdating packages...\n');
|
|
124
|
+
const specs = outdated.map((entry) => `${entry.pkg}@latest`);
|
|
125
|
+
let ok = runner('bun', ['add', ...specs], { cwd, inherit: true, timeoutMs: 600_000 }).ok;
|
|
126
|
+
if (!ok) {
|
|
127
|
+
ok = runner('npm', ['install', ...specs], { cwd, inherit: true, timeoutMs: 600_000 }).ok;
|
|
128
|
+
}
|
|
129
|
+
if (!ok) {
|
|
130
|
+
prompt.error('Failed to update packages.');
|
|
131
|
+
return 1;
|
|
132
|
+
}
|
|
133
|
+
prompt.success(`${outdated.length} package(s) updated.`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
else if (outdated.length > 0) {
|
|
137
|
+
prompt.info(`Run with --install to update ${outdated.length} package(s) first.`);
|
|
138
|
+
}
|
|
139
|
+
// ---- 4. migrations ------------------------------------------------------
|
|
140
|
+
if (opts.migrate !== false) {
|
|
141
|
+
const { command, args } = migrateInvocation();
|
|
142
|
+
prompt.write('\nRunning migrations on the host...\n');
|
|
143
|
+
const result = runner(command, args, { cwd, inherit: true, timeoutMs: 600_000 });
|
|
144
|
+
if (!result.ok) {
|
|
145
|
+
prompt.error('Migrations failed — deploy aborted.');
|
|
146
|
+
return 1;
|
|
147
|
+
}
|
|
148
|
+
prompt.success('Migrations applied.');
|
|
149
|
+
}
|
|
150
|
+
// ---- 5. start or reload -------------------------------------------------
|
|
151
|
+
prompt.write('\nStarting PM2 processes...\n');
|
|
152
|
+
const reload = runner('pm2', ['startOrReload', 'ecosystem.config.js', '--update-env'], {
|
|
153
|
+
cwd,
|
|
154
|
+
inherit: true,
|
|
155
|
+
timeoutMs: 60_000,
|
|
156
|
+
});
|
|
157
|
+
if (!reload.ok) {
|
|
158
|
+
prompt.error('pm2 startOrReload failed.');
|
|
159
|
+
return 1;
|
|
160
|
+
}
|
|
161
|
+
prompt.success('PM2 deploy done. Processes: okcms-api, okcms-admin, okcms-web, okcms-worker.');
|
|
162
|
+
// ---- 6. history + docs --------------------------------------------------
|
|
163
|
+
const pkg = await import('../package.json', { with: { type: 'json' } });
|
|
164
|
+
const { addHistoryEntry } = await import('./history.js');
|
|
165
|
+
addHistoryEntry(cwd, {
|
|
166
|
+
mode: 'pm2',
|
|
167
|
+
at: new Date().toISOString(),
|
|
168
|
+
cliVersion: pkg.default.version,
|
|
169
|
+
packages: outdated.map((entry) => ({ name: entry.name, from: entry.current, to: entry.latest })),
|
|
170
|
+
message: `PM2 deploy — ${outdated.length} package(s) updated`,
|
|
171
|
+
packageJsonSnapshot: snapshot,
|
|
172
|
+
}, pkg.default.version);
|
|
173
|
+
const { updateProjectDocs } = await import('./docs-updater.js');
|
|
174
|
+
const updated = updateProjectDocs(cwd);
|
|
175
|
+
if (updated.length > 0)
|
|
176
|
+
prompt.success(`Docs updated: ${updated.join(', ')}`);
|
|
177
|
+
return 0;
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=pm2.js.map
|
package/dist/pm2.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pm2.js","sourceRoot":"","sources":["../src/pm2.ts"],"names":[],"mappings":"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"}
|
package/dist/project-config.js
CHANGED
|
@@ -35,7 +35,7 @@ export function loadProjectConfig(cwd = process.cwd()) {
|
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
37
|
catch (error) {
|
|
38
|
-
throw new Error(`
|
|
38
|
+
throw new Error(`Invalid config at ${configPath}: ${error instanceof Error ? error.message : error}`);
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
//# sourceMappingURL=project-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-config.js","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAoBjC,MAAM,CAAC,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;AAE3D,MAAM,UAAU,oBAAoB,CAAC,IAAI,GAAG,eAAe;IACzD,OAAO;QACL,IAAI;QACJ,OAAO,EAAE;YACP,MAAM,EAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAwC,IAAI,OAAO;YACxF,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,eAAe;SAChE;QACD,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE;QAC9C,KAAK,EAAE;YACL,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;YACxC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;YAChD,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;SAC7C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;IAEtD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAA2B,CAAC;QACpF,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE5C,OAAO;YACL,GAAG,IAAI;YACP,GAAG,GAAG;YACN,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE;YACpD,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE;SAC/C,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"project-config.js","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAoBjC,MAAM,CAAC,MAAM,uBAAuB,GAAG,mBAAmB,CAAC;AAE3D,MAAM,UAAU,oBAAoB,CAAC,IAAI,GAAG,eAAe;IACzD,OAAO;QACL,IAAI;QACJ,OAAO,EAAE;YACP,MAAM,EAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAwC,IAAI,OAAO;YACxF,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,eAAe;SAChE;QACD,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE;QAC9C,KAAK,EAAE;YACL,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;YACxC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;YAChD,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;SAC7C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;IAEtD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAA2B,CAAC;QACpF,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE5C,OAAO;YACL,GAAG,IAAI;YACP,GAAG,GAAG;YACN,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE;YACpD,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE;SAC/C,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACxG,CAAC;AACH,CAAC"}
|
package/dist/prompt.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export declare const style: {
|
|
|
16
16
|
cyan: (text: string) => string;
|
|
17
17
|
gray: (text: string) => string;
|
|
18
18
|
};
|
|
19
|
-
/**
|
|
19
|
+
/** Canonical glyphs — the same ones every command prints. */
|
|
20
20
|
export declare const symbol: {
|
|
21
21
|
readonly ask: "?";
|
|
22
22
|
readonly ok: "✓";
|
|
@@ -24,7 +24,18 @@ export declare const symbol: {
|
|
|
24
24
|
readonly arrow: "→";
|
|
25
25
|
readonly bullet: "•";
|
|
26
26
|
readonly warn: "⚠";
|
|
27
|
+
readonly cursor: "❯";
|
|
27
28
|
};
|
|
29
|
+
/** Named keys the menus understand. Printable characters are their own token. */
|
|
30
|
+
export type KeyToken = string;
|
|
31
|
+
/**
|
|
32
|
+
* Turns one terminal chunk into key tokens.
|
|
33
|
+
*
|
|
34
|
+
* Arrow keys arrive as a single chunk (`ESC [ A`), so the CSI introducer is
|
|
35
|
+
* matched first and the rest of the sequence swallowed; a lone ESC becomes
|
|
36
|
+
* `escape`. Everything else is the character itself.
|
|
37
|
+
*/
|
|
38
|
+
export declare function decodeKeys(chunk: string): KeyToken[];
|
|
28
39
|
export interface SelectChoice<T> {
|
|
29
40
|
value: T;
|
|
30
41
|
label: string;
|
|
@@ -58,14 +69,26 @@ export declare class Prompt {
|
|
|
58
69
|
warn(text: string): void;
|
|
59
70
|
error(text: string): void;
|
|
60
71
|
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
72
|
+
* Arrow-key menu (↑/↓ + Enter). Falls back to a numbered menu when the
|
|
73
|
+
* terminal cannot do raw mode, and to `defaultValue` when there is no TTY at
|
|
74
|
+
* all — so a CI never triggers a deploy by accident.
|
|
63
75
|
*/
|
|
64
76
|
select<T>(title: string, choices: Array<SelectChoice<T>>, opts?: SelectOptions<T>): Promise<T>;
|
|
65
|
-
/**
|
|
77
|
+
/**
|
|
78
|
+
* Yes/No confirmation. Arrow keys + Enter on a TTY, `y`/`n` shortcuts too;
|
|
79
|
+
* without a TTY it returns `defaultValue`.
|
|
80
|
+
*/
|
|
66
81
|
confirm(title: string, opts?: {
|
|
67
82
|
defaultValue?: boolean;
|
|
68
83
|
}): Promise<boolean>;
|
|
84
|
+
/**
|
|
85
|
+
* Shared raw-mode navigator behind `select` and `confirm`.
|
|
86
|
+
*
|
|
87
|
+
* Every repaint clears the previous block (`ESC[<n>A` + `ESC[0J`), so the
|
|
88
|
+
* menu never leaves scrollback debris. `inline` lays the options on one line
|
|
89
|
+
* (confirm), `aliases` maps single keys straight to an option.
|
|
90
|
+
*/
|
|
91
|
+
private navigate;
|
|
69
92
|
/** Texto livre com validação, repetindo até aceitar. */
|
|
70
93
|
ask(title: string, opts?: InputOptions): Promise<string>;
|
|
71
94
|
/** Segredo: sem eco no TTY (mostra `*`), default via Enter. */
|
package/dist/prompt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"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"}
|