@oktis-works/cms 0.2.1 → 0.3.1
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 +238 -142
- 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 +7 -7
- package/dist/deploy.d.ts.map +1 -1
- package/dist/deploy.js +123 -273
- package/dist/deploy.js.map +1 -1
- 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/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.js +1 -1
- 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.js +21 -21
- package/dist/rollback.js.map +1 -1
- package/dist/scaffold-docs.d.ts.map +1 -1
- package/dist/scaffold-docs.js +44 -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 +22 -15
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +163 -81
- package/dist/update.js.map +1 -1
- package/package.json +7 -7
package/dist/scaffold-docs.js
CHANGED
|
@@ -40,7 +40,7 @@ export function parseDocsLang(value) {
|
|
|
40
40
|
}
|
|
41
41
|
/** Rótulo legível da língua (mensagens da CLI). */
|
|
42
42
|
export function docsLangLabel(lang) {
|
|
43
|
-
return lang === 'pt' ? '
|
|
43
|
+
return lang === 'pt' ? 'Portuguese' : 'English';
|
|
44
44
|
}
|
|
45
45
|
/**
|
|
46
46
|
* Detecta a língua do projeto lendo o README.md existente.
|
|
@@ -148,12 +148,18 @@ portas do Postgres (5432) e do Redis (6379). Os apps em si rodam via
|
|
|
148
148
|
\`okcms start\` — o compose é só a infraestrutura.
|
|
149
149
|
|
|
150
150
|
Para subir a aplicação **inteira em Docker** (api, admin, web e worker em
|
|
151
|
-
containers, atrás de um nginx), use o deploy
|
|
151
|
+
containers, atrás de um nginx), use o \`okcms deploy\`:
|
|
152
152
|
|
|
153
153
|
\`\`\`bash
|
|
154
|
-
npx okcms
|
|
154
|
+
npx okcms deploy # abre o menu do destino (setas ↑/↓ + Enter)
|
|
155
|
+
npx okcms deploy --target simple # ou fixa o destino sem menu
|
|
155
156
|
\`\`\`
|
|
156
157
|
|
|
158
|
+
São três destinos: **blue/green** (duas lanes, sem downtime), **simple** (um
|
|
159
|
+
stack só em \`docker-compose.app.yml\`, reinício rápido) e **pm2** (processos no
|
|
160
|
+
host, sem Docker). A escolha fica guardada em \`.deploy/state.json\` e vale para
|
|
161
|
+
\`deploy\`, \`update\` e \`redeploy\`.
|
|
162
|
+
|
|
157
163
|
Esse é o caminho de produção — ver o guia completo em
|
|
158
164
|
[docs/docker-deploy.md](https://github.com/oktis-works/cms/blob/main/docs/docker-deploy.md).
|
|
159
165
|
|
|
@@ -195,18 +201,20 @@ pm2 unmonitor okcms-api && pm2 delete okcms-api # remover
|
|
|
195
201
|
- Como cada app é um executável independente, o \`okcms start\` não é
|
|
196
202
|
necessário em produção — o pm2 supervisoria cada um diretamente.
|
|
197
203
|
|
|
198
|
-
### Caminho 2: Docker blue/green (recomendado)
|
|
204
|
+
### Caminho 2: Docker — blue/green ou simple (recomendado)
|
|
199
205
|
|
|
200
206
|
O projeto já nasce com tudo que o deploy precisa (o \`okcms init\` escreve
|
|
201
|
-
\`docker/\`, os
|
|
207
|
+
\`docker/\`, os três composes e o \`deploy/\` do proxy). Um deploy é um único
|
|
202
208
|
comando a partir do host:
|
|
203
209
|
|
|
204
210
|
\`\`\`bash
|
|
205
|
-
npx okcms
|
|
211
|
+
npx okcms deploy # primeiro deploy (menu do destino)
|
|
212
|
+
npx okcms update --mode deploy # depois disso: wizard com o destino salvo
|
|
213
|
+
npx okcms deploy --target simple # stack único, sem lanes
|
|
206
214
|
\`\`\`
|
|
207
215
|
|
|
208
|
-
|
|
209
|
-
um nginx público. Cada deploy:
|
|
216
|
+
No destino **blue/green** a aplicação roda em **duas lanes** (\`okcms-blue\` e
|
|
217
|
+
\`okcms-green\`) atrás de um nginx público. Cada deploy:
|
|
210
218
|
|
|
211
219
|
1. builda a imagem nova numa lane que **não recebe tráfego**;
|
|
212
220
|
2. roda \`okcms db:migrate\` **no host** (falhou = nada mudou);
|
|
@@ -216,6 +224,10 @@ um nginx público. Cada deploy:
|
|
|
216
224
|
5. **drena** o worker antigo (SIGTERM + \`stop_grace_period\`), sobe o novo;
|
|
217
225
|
6. derruba a lane antiga — **sem \`-v\`**: o volume de mídia é compartilhado.
|
|
218
226
|
|
|
227
|
+
No destino **simple** o caminho é mais curto: build → migrations → \`up -d\` →
|
|
228
|
+
healthcheck → \`nginx -s reload\` — sem segunda lane e com reinício rápido; o
|
|
229
|
+
zero downtime fica por conta do blue/green.
|
|
230
|
+
|
|
219
231
|
**Rollback** = rodar o mesmo comando de novo, ou apontar o upstream de volta
|
|
220
232
|
para a outra lane. Detalhes, portas e segurança em
|
|
221
233
|
[docs/docker-deploy.md](https://github.com/oktis-works/cms/blob/main/docs/docker-deploy.md).
|
|
@@ -417,12 +429,18 @@ the Postgres (5432) and Redis (6379) ports. The apps themselves run via
|
|
|
417
429
|
\`okcms start\` — the compose is only the infrastructure.
|
|
418
430
|
|
|
419
431
|
To run the **whole application in Docker** (api, admin, web and worker in
|
|
420
|
-
containers behind an nginx), use
|
|
432
|
+
containers behind an nginx), use \`okcms deploy\`:
|
|
421
433
|
|
|
422
434
|
\`\`\`bash
|
|
423
|
-
npx okcms
|
|
435
|
+
npx okcms deploy # opens the target menu (↑/↓ + Enter)
|
|
436
|
+
npx okcms deploy --target simple # or fixes the target without the menu
|
|
424
437
|
\`\`\`
|
|
425
438
|
|
|
439
|
+
There are three targets: **blue/green** (two lanes, no downtime), **simple**
|
|
440
|
+
(one stack in \`docker-compose.app.yml\`, fast restart) and **pm2** (host
|
|
441
|
+
processes, no Docker). The choice is stored in \`.deploy/state.json\` and shared
|
|
442
|
+
by \`deploy\`, \`update\` and \`redeploy\`.
|
|
443
|
+
|
|
426
444
|
That is the production path — see the complete guide at
|
|
427
445
|
[docs/docker-deploy.md](https://github.com/oktis-works/cms/blob/main/docs/docker-deploy.md).
|
|
428
446
|
|
|
@@ -464,18 +482,20 @@ pm2 unmonitor okcms-api && pm2 delete okcms-api # remove
|
|
|
464
482
|
- Since each app is an independent executable, \`okcms start\` is not
|
|
465
483
|
needed in production — pm2 supervises each one directly.
|
|
466
484
|
|
|
467
|
-
### Path 2: Docker blue/green (recommended)
|
|
485
|
+
### Path 2: Docker — blue/green or simple (recommended)
|
|
468
486
|
|
|
469
487
|
The project ships with everything a deploy needs ( \`okcms init\` writes
|
|
470
|
-
\`docker/\`,
|
|
471
|
-
command from the host:
|
|
488
|
+
\`docker/\`, all three compose files and the proxy's \`deploy/\`). A deploy is a
|
|
489
|
+
single command from the host:
|
|
472
490
|
|
|
473
491
|
\`\`\`bash
|
|
474
|
-
npx okcms
|
|
492
|
+
npx okcms deploy # first deploy (target menu)
|
|
493
|
+
npx okcms update --mode deploy # after that: wizard with the saved target
|
|
494
|
+
npx okcms deploy --target simple # single stack, no lanes
|
|
475
495
|
\`\`\`
|
|
476
496
|
|
|
477
|
-
|
|
478
|
-
public nginx. Each deploy:
|
|
497
|
+
With the **blue/green** target the application runs in **two lanes**
|
|
498
|
+
(\`okcms-blue\` and \`okcms-green\`) behind a public nginx. Each deploy:
|
|
479
499
|
|
|
480
500
|
1. builds the new image in a lane that **receives no traffic**;
|
|
481
501
|
2. runs \`okcms db:migrate\` **on the host** (if it fails, nothing changed);
|
|
@@ -485,6 +505,10 @@ public nginx. Each deploy:
|
|
|
485
505
|
5. **drains** the old worker (SIGTERM + \`stop_grace_period\`) and starts the new one;
|
|
486
506
|
6. tears down the old lane — **without \`-v\`**: the media volume is shared.
|
|
487
507
|
|
|
508
|
+
With the **simple** target the path is shorter: build → migrations → \`up -d\` →
|
|
509
|
+
healthcheck → \`nginx -s reload\` — no second lane and a fast restart; zero
|
|
510
|
+
downtime is what blue/green is for.
|
|
511
|
+
|
|
488
512
|
**Rollback** = run the same command again, or point the upstream back to the
|
|
489
513
|
other lane. Details, ports and security in
|
|
490
514
|
[docs/docker-deploy.md](https://github.com/oktis-works/cms/blob/main/docs/docker-deploy.md).
|
|
@@ -533,10 +557,11 @@ the 6 steps above to do by hand. Prefer the CLI command.
|
|
|
533
557
|
| \`okcms theme:create -n <name> --style css\\|scss\\|tailwind\` | Theme scaffold — guide in [THEME.md](./THEME.md) |
|
|
534
558
|
| \`okcms theme:install\` · \`theme:list\` · \`theme:search\` · \`theme:manage\` | Theme management (\`--set-active\` sets the active one) |
|
|
535
559
|
| \`okcms theme:build -n <name>\` | Compiles SCSS/Tailwind → isolated \`dist/theme.css\` |
|
|
536
|
-
| \`okcms
|
|
560
|
+
| \`okcms deploy\` | First deploy — target menu: blue/green, simple or pm2 (\`--target\`, \`--yes\`) |
|
|
561
|
+
| \`okcms update\` | Wizard: **download packages only** or **deploy** (\`--mode download\\|deploy\`) |
|
|
537
562
|
| \`okcms update -i\` | Only downloads/applies the \`@oktis-works/*\` packages (classic non-TTY behaviour) |
|
|
538
|
-
| \`okcms update --mode deploy\` | Full
|
|
539
|
-
| \`okcms redeploy\` | After installing a plugin/theme: plugin SQL → \`migrations/\`, theme \`dist/theme.css\` and
|
|
563
|
+
| \`okcms update --mode deploy\` | Full deploy: build → migrations → healthcheck → swap (target: \`--target blue-green\\|simple\\|pm2\`) |
|
|
564
|
+
| \`okcms redeploy\` | After installing a plugin/theme: plugin SQL → \`migrations/\`, theme \`dist/theme.css\` and deploy (\`--dry-run\` only shows the plan, \`--target\` picks the target) |
|
|
540
565
|
| \`okcms seed\` | Seeds initial data (roles + settings) — idempotent |
|
|
541
566
|
| \`okcms user:create\` | Creates a user and assigns a role inside the tenant |
|
|
542
567
|
| \`okcms system:status\` | System status (environment + database health) |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold-docs.js","sourceRoot":"","sources":["../src/scaffold-docs.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,wEAAwE;AACxE,gFAAgF;AAChF,EAAE;AACF,sEAAsE;AACtE,6EAA6E;AAC7E,yDAAyD;AACzD,EAAE;AACF,0EAA0E;AAC1E,8EAA8E;AAC9E,gFAAgF;AAChF,8EAA8E;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,0DAA0D;AAC1D,MAAM,CAAC,MAAM,UAAU,GAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAEnD;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAa,IAAI,CAAC;AAEhD;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAgC;IAC5D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,UAAU,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACjF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9F,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,aAAa,CAAC,IAAc;IAC1C,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"scaffold-docs.js","sourceRoot":"","sources":["../src/scaffold-docs.ts"],"names":[],"mappings":"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"}
|
package/dist/scaffold.d.ts
CHANGED
|
@@ -17,7 +17,9 @@ export declare function toPackageName(name: string): string;
|
|
|
17
17
|
* A partir de 1.x vira `^MAJOR.0.0` (compatibilidade semântica madura).
|
|
18
18
|
*/
|
|
19
19
|
export declare function appRangeFor(cliVersion: string): string;
|
|
20
|
-
export declare function scaffoldProject(targetDir: string, name: string, lang?: DocsLang
|
|
20
|
+
export declare function scaffoldProject(targetDir: string, name: string, lang?: DocsLang,
|
|
21
|
+
/** Runs after the files are written and BEFORE the "Next steps" summary. */
|
|
22
|
+
beforeSummary?: () => Promise<void>): Promise<string>;
|
|
21
23
|
export interface InstallResult {
|
|
22
24
|
ok: boolean;
|
|
23
25
|
tool: string;
|
package/dist/scaffold.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAQ/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAWtD;AAoBD,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,QAA4B,
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAQ/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAWtD;AAoBD,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,QAA4B;AAClC,4EAA4E;AAC5E,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAClC,OAAO,CAAC,MAAM,CAAC,CAiMjB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,SAAS,CAAA;CAAO,GACzC,aAAa,CAmBf"}
|
package/dist/scaffold.js
CHANGED
|
@@ -59,9 +59,11 @@ async function mergeGitignore(root, entries) {
|
|
|
59
59
|
const header = current.length === 0 ? '# OkCMS\n' : '# okcms init\n';
|
|
60
60
|
await writeFile(`${path}`, `${body}${header}${missing.join('\n')}\n`, 'utf-8');
|
|
61
61
|
}
|
|
62
|
-
export async function scaffoldProject(targetDir, name, lang = DEFAULT_DOCS_LANG
|
|
62
|
+
export async function scaffoldProject(targetDir, name, lang = DEFAULT_DOCS_LANG,
|
|
63
|
+
/** Runs after the files are written and BEFORE the "Next steps" summary. */
|
|
64
|
+
beforeSummary) {
|
|
63
65
|
const root = resolve(process.cwd(), targetDir);
|
|
64
|
-
console.log(`
|
|
66
|
+
console.log(`Creating project "${name}" at ${root}...`);
|
|
65
67
|
await mkdir(join(root, 'themes'), { recursive: true });
|
|
66
68
|
await mkdir(join(root, 'plugins'), { recursive: true });
|
|
67
69
|
await mkdir(join(root, 'migrations'), { recursive: true });
|
|
@@ -106,17 +108,17 @@ export async function scaffoldProject(targetDir, name, lang = DEFAULT_DOCS_LANG)
|
|
|
106
108
|
await writeFile(manifestPath, `${JSON.stringify(manifest, null, 2)}\n`, 'utf-8');
|
|
107
109
|
}
|
|
108
110
|
const envExample = `# OkCMS
|
|
109
|
-
#
|
|
110
|
-
# (a)
|
|
111
|
+
# Database connection — pick ONE format:
|
|
112
|
+
# (a) separate variables (default, used below):
|
|
111
113
|
DB_HOST=${process.env['DB_HOST'] ?? 'localhost'}
|
|
112
114
|
DB_PORT=${process.env['DB_PORT'] ?? '5432'}
|
|
113
115
|
DB_NAME=${process.env['DB_NAME'] ?? 'okcms'}
|
|
114
116
|
DB_USER=${process.env['DB_USER'] ?? 'postgres'}
|
|
115
117
|
DB_PASSWORD=
|
|
116
|
-
# (b) URL
|
|
117
|
-
# DATABASE_URL=postgresql://postgres:
|
|
118
|
+
# (b) single URL — takes precedence over the DB_* above:
|
|
119
|
+
# DATABASE_URL=postgresql://postgres:password@localhost:5432/okcms
|
|
118
120
|
|
|
119
|
-
# Redis (cache +
|
|
121
|
+
# Redis (cache + worker queues)
|
|
120
122
|
REDIS_HOST=localhost
|
|
121
123
|
REDIS_PORT=6379
|
|
122
124
|
REDIS_PASSWORD=
|
|
@@ -204,26 +206,33 @@ volumes:
|
|
|
204
206
|
}
|
|
205
207
|
}
|
|
206
208
|
if (docsWritten > 0) {
|
|
207
|
-
console.log(`
|
|
209
|
+
console.log(`Docs (${docsLangLabel(lang)}): ${docsWritten} file(s)`);
|
|
208
210
|
}
|
|
209
211
|
const relTarget = targetDir === '.' ? null : targetDir;
|
|
210
212
|
const cfgName = DEFAULT_CONFIG_FILENAME;
|
|
211
|
-
|
|
213
|
+
// Dependency install comes before the summary: printing "Next steps" and
|
|
214
|
+
// then blocking for a minute on `bun install` makes the user type into a
|
|
215
|
+
// shell that is not ready yet.
|
|
216
|
+
if (beforeSummary)
|
|
217
|
+
await beforeSummary();
|
|
218
|
+
console.log('');
|
|
219
|
+
console.log(` ✓ Project "${name}" created at ${root}`);
|
|
212
220
|
if (deployCreated.length > 0) {
|
|
213
|
-
console.log(`
|
|
221
|
+
console.log(` ✓ Docker deploy files: ${deployCreated.join(', ')}`);
|
|
214
222
|
}
|
|
215
|
-
console.log('
|
|
223
|
+
console.log('');
|
|
224
|
+
console.log('Next steps:');
|
|
216
225
|
let step = 1;
|
|
217
226
|
if (relTarget !== null) {
|
|
218
227
|
console.log(` ${step++}. cd ${relTarget}`);
|
|
219
228
|
}
|
|
220
229
|
console.log(` ${step++}. docker compose up -d`);
|
|
221
|
-
console.log(` ${step++}.
|
|
222
|
-
console.log(` ${step++}. npx okcms db:migrate (
|
|
223
|
-
console.log(` ${step++}. npx okcms start (
|
|
230
|
+
console.log(` ${step++}. edit .env (set DB_PASSWORD and JWT_SECRET)`);
|
|
231
|
+
console.log(` ${step++}. npx okcms db:migrate (or: bun run migrate)`);
|
|
232
|
+
console.log(` ${step++}. npx okcms start (api, admin, web, worker — or: bun run start)`);
|
|
224
233
|
console.log('');
|
|
225
|
-
console.log(`
|
|
226
|
-
console.log(
|
|
234
|
+
console.log(` config: ${cfgName} · help: npx okcms --help`);
|
|
235
|
+
console.log(' docs: README.md (local/Docker) · PLUGIN.md, THEME.md (extensions)');
|
|
227
236
|
return root;
|
|
228
237
|
}
|
|
229
238
|
/**
|
package/dist/scaffold.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
|
package/dist/simple.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type Runner } from './docker.js';
|
|
2
|
+
import { type DeployTimeouts } from './bluegreen.js';
|
|
3
|
+
import type { Prompt } from './prompt.js';
|
|
4
|
+
export interface SimpleDeployOptions {
|
|
5
|
+
cwd?: string;
|
|
6
|
+
runner?: Runner;
|
|
7
|
+
prompt?: Prompt;
|
|
8
|
+
log?: (message: string) => void;
|
|
9
|
+
warn?: (message: string) => void;
|
|
10
|
+
/** `docker compose build --no-cache` (redeploy/update only). */
|
|
11
|
+
noCache?: boolean;
|
|
12
|
+
/** `pkg@latest` specs to install on the host before the build. */
|
|
13
|
+
packages?: string[];
|
|
14
|
+
/** Fresh clone: run `bun install` instead of `bun add`. */
|
|
15
|
+
installAll?: boolean;
|
|
16
|
+
/** Authoritative check through the proxy after the swap (test seam). */
|
|
17
|
+
healthProbe?: (url: string) => Promise<boolean>;
|
|
18
|
+
timeouts?: DeployTimeouts;
|
|
19
|
+
}
|
|
20
|
+
export interface SimpleDeployResult {
|
|
21
|
+
ok: boolean;
|
|
22
|
+
message?: string;
|
|
23
|
+
/** Deploy files created during this run (existing ones are never touched). */
|
|
24
|
+
created: string[];
|
|
25
|
+
}
|
|
26
|
+
/** Rewrites `00-upstreams.conf` for the lane-less stack. */
|
|
27
|
+
export declare function writeSimpleUpstreams(cwd: string, record: Record<string, string>): string;
|
|
28
|
+
/** true when the upstreams file already targets the simple stack. */
|
|
29
|
+
export declare function upstreamsAreSimple(cwd: string): boolean;
|
|
30
|
+
export declare function deploySimple(opts?: SimpleDeployOptions): Promise<SimpleDeployResult>;
|
|
31
|
+
//# sourceMappingURL=simple.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple.d.ts","sourceRoot":"","sources":["../src/simple.ts"],"names":[],"mappings":"AAoBA,OAAO,EAWL,KAAK,MAAM,EAEZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wEAAwE;IACxE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAeD,4DAA4D;AAC5D,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAMxF;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIvD;AAaD,wBAAsB,YAAY,CAAC,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA0J9F"}
|
package/dist/simple.js
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
// @oktis-works/cms - Simple container deploy (`--target simple`)
|
|
2
|
+
//
|
|
3
|
+
// One Docker project (`okcms-app`), no lanes, no swap dance:
|
|
4
|
+
//
|
|
5
|
+
// 1. preflight → docker + compose v2 before touching anything
|
|
6
|
+
// 2. network + infra → postgres, redis and the proxy come up
|
|
7
|
+
// 3. packages on host → db:migrate below needs the new code
|
|
8
|
+
// 4. build → okcms/app image (layer cache unless --no-cache)
|
|
9
|
+
// 5. db:migrate → on the host, between build and traffic
|
|
10
|
+
// 6. up → recreate only the containers whose config changed
|
|
11
|
+
// 7. healthcheck → gate BEFORE moving traffic: failed = nothing changes
|
|
12
|
+
// 8. proxy upstreams → point nginx at the lane-less containers + reload
|
|
13
|
+
// 9. retire old lane → if blue/green was running, drain it after the swap
|
|
14
|
+
//
|
|
15
|
+
// Brief restart instead of zero downtime — that is the trade for speed.
|
|
16
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
17
|
+
import { dirname, join } from 'node:path';
|
|
18
|
+
import { DEPLOY_PATHS, renderSimpleUpstreams, portsFromEnv } from './assets.js';
|
|
19
|
+
import { appCompose, detectActiveLane, ensureNetwork, infraCompose, isHealthy, laneCompose, reloadProxy, waitStopped, waitForContainer, defaultRunner, } from './docker.js';
|
|
20
|
+
import { ensureDeployFiles, loadDeployEnv, migrateInvocation, preflight, DEFAULT_TIMEOUTS, } from './bluegreen.js';
|
|
21
|
+
async function defaultHealthProbe(url) {
|
|
22
|
+
const controller = new AbortController();
|
|
23
|
+
const timer = setTimeout(() => controller.abort(), 5_000);
|
|
24
|
+
try {
|
|
25
|
+
const response = await fetch(url, { signal: controller.signal });
|
|
26
|
+
return response.ok;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
clearTimeout(timer);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/** Rewrites `00-upstreams.conf` for the lane-less stack. */
|
|
36
|
+
export function writeSimpleUpstreams(cwd, record) {
|
|
37
|
+
const content = renderSimpleUpstreams(portsFromEnv(record));
|
|
38
|
+
const path = join(cwd, DEPLOY_PATHS.nginxUpstreams);
|
|
39
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
40
|
+
writeFileSync(path, content, 'utf-8');
|
|
41
|
+
return content;
|
|
42
|
+
}
|
|
43
|
+
/** true when the upstreams file already targets the simple stack. */
|
|
44
|
+
export function upstreamsAreSimple(cwd) {
|
|
45
|
+
const path = join(cwd, DEPLOY_PATHS.nginxUpstreams);
|
|
46
|
+
if (!existsSync(path))
|
|
47
|
+
return false;
|
|
48
|
+
return /http:\/\/okcms-(?:api|web|admin):/.test(readFileSync(path, 'utf-8'));
|
|
49
|
+
}
|
|
50
|
+
/** `bun add <specs>` with an npm fallback when bun is missing on the host. */
|
|
51
|
+
function installPackages(cwd, packages, runner) {
|
|
52
|
+
const bun = runner('bun', ['add', ...packages], { cwd, inherit: true, timeoutMs: 600_000 });
|
|
53
|
+
if (bun.ok || !/ENOENT|not found|spawn/i.test(bun.stderr))
|
|
54
|
+
return bun;
|
|
55
|
+
return runner('npm', ['install', ...packages], { cwd, inherit: true, timeoutMs: 600_000 });
|
|
56
|
+
}
|
|
57
|
+
export async function deploySimple(opts = {}) {
|
|
58
|
+
const cwd = opts.cwd ?? process.cwd();
|
|
59
|
+
const runner = opts.runner ?? defaultRunner;
|
|
60
|
+
const log = opts.log ?? ((message) => void console.log(message));
|
|
61
|
+
const warn = opts.warn ?? ((message) => void console.warn(message));
|
|
62
|
+
const probe = opts.healthProbe ?? defaultHealthProbe;
|
|
63
|
+
const timeout = { ...DEFAULT_TIMEOUTS, ...opts.timeouts };
|
|
64
|
+
const packages = opts.packages ?? [];
|
|
65
|
+
const record = loadDeployEnv(cwd);
|
|
66
|
+
const created = ensureDeployFiles(cwd, record, runner);
|
|
67
|
+
const previousLane = detectActiveLane(cwd, runner);
|
|
68
|
+
const plan = [
|
|
69
|
+
'Preflight: docker + compose v2',
|
|
70
|
+
'Network okcms-net and infra (postgres, redis, proxy)',
|
|
71
|
+
'Packages on the host',
|
|
72
|
+
'Build image',
|
|
73
|
+
'Migrations on the host',
|
|
74
|
+
'Start the stack (api, web, admin, worker)',
|
|
75
|
+
'Healthcheck (gate: failed = nothing changes)',
|
|
76
|
+
'Point the proxy at the stack (nginx -s reload)',
|
|
77
|
+
...(previousLane ? [`Retire lane ${previousLane}`] : []),
|
|
78
|
+
'Record deploy state',
|
|
79
|
+
];
|
|
80
|
+
const next = (index) => log(`\n[${index}/${plan.length}] ${plan[index - 1]}`);
|
|
81
|
+
const fail = (message) => {
|
|
82
|
+
warn(message);
|
|
83
|
+
return { ok: false, message, created };
|
|
84
|
+
};
|
|
85
|
+
// ---- 1. preflight -------------------------------------------------------
|
|
86
|
+
next(1);
|
|
87
|
+
const ready = preflight(runner);
|
|
88
|
+
if (!ready.ok)
|
|
89
|
+
return fail(ready.message ?? 'Preflight failed.');
|
|
90
|
+
// ---- 2. network + infra -------------------------------------------------
|
|
91
|
+
next(2);
|
|
92
|
+
const network = ensureNetwork(cwd, runner);
|
|
93
|
+
if (!network.ok)
|
|
94
|
+
return fail(`Could not create network okcms-net: ${network.stderr.trim()}`);
|
|
95
|
+
const infra = infraCompose(cwd, ['up', '-d'], runner, true);
|
|
96
|
+
if (!infra.ok)
|
|
97
|
+
return fail(`Infra did not start:\n${infra.stderr.trim()}`);
|
|
98
|
+
for (const dataContainer of ['okcms-postgres', 'okcms-redis']) {
|
|
99
|
+
const healthy = await waitForContainer(runner, dataContainer, isHealthy, {
|
|
100
|
+
timeoutMs: timeout.dataMs,
|
|
101
|
+
intervalMs: timeout.intervalMs,
|
|
102
|
+
});
|
|
103
|
+
if (!healthy) {
|
|
104
|
+
return fail(`${dataContainer} never became healthy — see \`docker logs ${dataContainer}\`.`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
log(' ✓ infra ready (postgres, redis, proxy)');
|
|
108
|
+
// ---- 3. packages on the host -------------------------------------------
|
|
109
|
+
next(3);
|
|
110
|
+
if (opts.installAll) {
|
|
111
|
+
const installed = runner('bun', ['install'], { cwd, inherit: true, timeoutMs: 600_000 });
|
|
112
|
+
if (!installed.ok)
|
|
113
|
+
return fail(`bun install failed:\n${installed.stderr.trim()}`);
|
|
114
|
+
log(' ✓ dependencies installed on the host');
|
|
115
|
+
}
|
|
116
|
+
else if (packages.length > 0) {
|
|
117
|
+
const installed = installPackages(cwd, packages, runner);
|
|
118
|
+
if (!installed.ok) {
|
|
119
|
+
return fail(`Could not install packages (${installed.command}):\n${installed.stderr.trim()}`);
|
|
120
|
+
}
|
|
121
|
+
log(` ✓ ${packages.length} package(s) updated on the host`);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
log(' ✓ nothing to install (packages up to date)');
|
|
125
|
+
}
|
|
126
|
+
// ---- 4. build -----------------------------------------------------------
|
|
127
|
+
next(4);
|
|
128
|
+
const build = appCompose(cwd, ['build', ...(opts.noCache ? ['--no-cache'] : [])], runner, true);
|
|
129
|
+
if (!build.ok)
|
|
130
|
+
return fail(`Image build failed:\n${build.stderr.trim()}`);
|
|
131
|
+
log(` ✓ image okcms/app built${opts.noCache ? ' (no cache)' : ''}`);
|
|
132
|
+
// ---- 5. migrations ------------------------------------------------------
|
|
133
|
+
next(5);
|
|
134
|
+
const migrate = migrateInvocation();
|
|
135
|
+
const migrated = runner(migrate.command, migrate.args, { cwd, inherit: true, timeoutMs: 600_000 });
|
|
136
|
+
if (!migrated.ok)
|
|
137
|
+
return fail(`Migrations failed — nothing was switched:\n${migrated.stderr.trim()}`);
|
|
138
|
+
// ---- 6. start the stack -------------------------------------------------
|
|
139
|
+
next(6);
|
|
140
|
+
const up = appCompose(cwd, ['up', '-d'], runner, true);
|
|
141
|
+
if (!up.ok)
|
|
142
|
+
return fail(`Stack did not start:\n${up.stderr.trim()}`);
|
|
143
|
+
// ---- 7. healthcheck — BEFORE moving any traffic -------------------------
|
|
144
|
+
next(7);
|
|
145
|
+
for (const container of ['okcms-api', 'okcms-web', 'okcms-admin']) {
|
|
146
|
+
const healthy = await waitForContainer(runner, container, isHealthy, {
|
|
147
|
+
timeoutMs: timeout.edgeMs,
|
|
148
|
+
intervalMs: timeout.intervalMs,
|
|
149
|
+
});
|
|
150
|
+
if (!healthy) {
|
|
151
|
+
return fail(`${container} never became healthy — nothing was switched; the previous setup keeps serving. ` +
|
|
152
|
+
`Check \`docker logs ${container}\`.`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
log(' ✓ 3 container(s) healthy');
|
|
156
|
+
// ---- 8. proxy upstreams -------------------------------------------------
|
|
157
|
+
next(8);
|
|
158
|
+
writeSimpleUpstreams(cwd, record);
|
|
159
|
+
const reloaded = reloadProxy(cwd, runner);
|
|
160
|
+
if (!reloaded.ok) {
|
|
161
|
+
warn(' nginx -s reload failed — restarting the proxy to pick up the new upstreams.');
|
|
162
|
+
const restarted = runner('docker', ['restart', 'okcms-proxy'], { cwd, timeoutMs: 60_000 });
|
|
163
|
+
if (!restarted.ok) {
|
|
164
|
+
return fail(`Proxy did not reload (${reloaded.stderr.trim() || reloaded.command}) — upstreams left pointing at the previous setup.`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
log(' ✓ proxy now routes to the simple stack');
|
|
168
|
+
// ---- 9. retire an old lane ---------------------------------------------
|
|
169
|
+
if (previousLane) {
|
|
170
|
+
next(9);
|
|
171
|
+
// SIGTERM + stop_grace_period (30s): the queue finishes the job in hand.
|
|
172
|
+
const workerService = `worker-${previousLane}`;
|
|
173
|
+
laneCompose(cwd, previousLane, ['stop', workerService], runner, true);
|
|
174
|
+
await waitStopped(runner, `okcms-${workerService}`, {
|
|
175
|
+
timeoutMs: timeout.stopMs,
|
|
176
|
+
intervalMs: Math.min(1_000, timeout.intervalMs),
|
|
177
|
+
});
|
|
178
|
+
const down = laneCompose(cwd, previousLane, ['down'], runner, true);
|
|
179
|
+
if (!down.ok) {
|
|
180
|
+
warn(` Lane ${previousLane} did not go down cleanly: ${down.stderr.trim()}`);
|
|
181
|
+
warn(` Run it manually: docker compose -p okcms-${previousLane} down`);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
log(` ✓ lane ${previousLane} drained and removed`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
// ---- 10. state ----------------------------------------------------------
|
|
188
|
+
next(plan.length);
|
|
189
|
+
const healthy = await probe('http://127.0.0.1/health');
|
|
190
|
+
if (!healthy) {
|
|
191
|
+
warn(' Note: http://127.0.0.1/health did not answer through the proxy.\n' +
|
|
192
|
+
' Containers are healthy (internal check) — check SERVER_NAME / Host header.');
|
|
193
|
+
}
|
|
194
|
+
log('\n Deploy done: simple stack is live.');
|
|
195
|
+
if (created.length > 0)
|
|
196
|
+
log(` Deploy files created: ${created.join(', ')}`);
|
|
197
|
+
log(' Site: http://<host>/ · Admin: http://<host>:8080/');
|
|
198
|
+
return { ok: true, created };
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=simple.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple.js","sourceRoot":"","sources":["../src/simple.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,6DAA6D;AAC7D,EAAE;AACF,uEAAuE;AACvE,gEAAgE;AAChE,8DAA8D;AAC9D,0EAA0E;AAC1E,iEAAiE;AACjE,4EAA4E;AAC5E,+EAA+E;AAC/E,2EAA2E;AAC3E,6EAA6E;AAC7E,EAAE;AACF,wEAAwE;AAExE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,SAAS,EACT,WAAW,EACX,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,aAAa,GAGd,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,gBAAgB,GAEjB,MAAM,gBAAgB,CAAC;AA2BxB,KAAK,UAAU,kBAAkB,CAAC,GAAW;IAC3C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,MAA8B;IAC9E,MAAM,OAAO,GAAG,qBAAqB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;IACpD,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,mCAAmC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,8EAA8E;AAC9E,SAAS,eAAe,CACtB,GAAW,EACX,QAAkB,EAClB,MAAc;IAEd,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5F,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC;IACtE,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA4B,EAAE;IAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,OAAe,EAAQ,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,OAAe,EAAQ,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAClF,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,IAAI,kBAAkB,CAAC;IACrD,MAAM,OAAO,GAA6B,EAAE,GAAG,gBAAgB,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;IAErC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAEnD,MAAM,IAAI,GAAa;QACrB,gCAAgC;QAChC,sDAAsD;QACtD,sBAAsB;QACtB,aAAa;QACb,wBAAwB;QACxB,2CAA2C;QAC3C,8CAA8C;QAC9C,gDAAgD;QAChD,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,eAAe,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,qBAAqB;KACtB,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,KAAa,EAAQ,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5F,MAAM,IAAI,GAAG,CAAC,OAAe,EAAsB,EAAE;QACnD,IAAI,CAAC,OAAO,CAAC,CAAC;QACd,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACzC,CAAC,CAAC;IAEF,4EAA4E;IAC5E,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,mBAAmB,CAAC,CAAC;IAEjE,4EAA4E;IAC5E,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,uCAAuC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAE7F,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,yBAAyB,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAE3E,KAAK,MAAM,aAAa,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,EAAE,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE;YACvE,SAAS,EAAE,OAAO,CAAC,MAAM;YACzB,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,GAAG,aAAa,6CAA6C,aAAa,KAAK,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IACD,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAEhD,2EAA2E;IAC3E,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,wBAAwB,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClF,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAChD,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,+BAA+B,SAAS,CAAC,OAAO,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChG,CAAC;QACD,GAAG,CAAC,OAAO,QAAQ,CAAC,MAAM,iCAAiC,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,8CAA8C,CAAC,CAAC;IACtD,CAAC;IAED,4EAA4E;IAC5E,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAChG,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,wBAAwB,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1E,GAAG,CAAC,4BAA4B,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAErE,4EAA4E;IAC5E,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IACnG,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,8CAA8C,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEtG,4EAA4E;IAC5E,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,yBAAyB,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAErE,4EAA4E;IAC5E,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,KAAK,MAAM,SAAS,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC,EAAE,CAAC;QAClE,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE;YACnE,SAAS,EAAE,OAAO,CAAC,MAAM;YACzB,UAAU,EAAE,OAAO,CAAC,UAAU;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CACT,GAAG,SAAS,kFAAkF;gBAC5F,uBAAuB,SAAS,KAAK,CACxC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAElC,4EAA4E;IAC5E,IAAI,CAAC,CAAC,CAAC,CAAC;IACR,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,CAAC,+EAA+E,CAAC,CAAC;QACtF,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3F,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;YAClB,OAAO,IAAI,CACT,yBAAyB,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,QAAQ,CAAC,OAAO,oDAAoD,CACxH,CAAC;QACJ,CAAC;IACH,CAAC;IACD,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAEhD,2EAA2E;IAC3E,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC,CAAC,CAAC,CAAC;QACR,yEAAyE;QACzE,MAAM,aAAa,GAAG,UAAU,YAAY,EAAE,CAAC;QAC/C,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACtE,MAAM,WAAW,CAAC,MAAM,EAAE,SAAS,aAAa,EAAE,EAAE;YAClD,SAAS,EAAE,OAAO,CAAC,MAAM;YACzB,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC;SAChD,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,IAAI,CAAC,UAAU,YAAY,6BAA6B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,8CAA8C,YAAY,OAAO,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,YAAY,YAAY,sBAAsB,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACvD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,IAAI,CACF,qEAAqE;YACnE,8EAA8E,CACjF,CAAC;IACJ,CAAC;IAED,GAAG,CAAC,wCAAwC,CAAC,CAAC;IAC9C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,2BAA2B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7E,GAAG,CAAC,uDAAuD,CAAC,CAAC;IAE7D,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
|
package/dist/start.js
CHANGED
|
@@ -11,7 +11,7 @@ function spawnApp(label, command, args, env) {
|
|
|
11
11
|
});
|
|
12
12
|
recordPid(label, child.pid ?? -1);
|
|
13
13
|
child.on('error', (error) => {
|
|
14
|
-
console.error(`[start] ${label}
|
|
14
|
+
console.error(`[start] ${label} failed:`, error.message);
|
|
15
15
|
});
|
|
16
16
|
children.push(child);
|
|
17
17
|
}
|
package/dist/theme-build.js
CHANGED
|
@@ -59,16 +59,16 @@ export function resolveThemeStyle(themesDir, theme) {
|
|
|
59
59
|
export async function buildThemeStylesOnDisk(themesDir, themeName) {
|
|
60
60
|
const manifestPath = themeManifestPath(themesDir, themeName);
|
|
61
61
|
if (!manifestPath) {
|
|
62
|
-
throw new Error(`
|
|
62
|
+
throw new Error(`Theme manifest not found in ${join(themesDir, themeName)} (theme.json)`);
|
|
63
63
|
}
|
|
64
64
|
const manifest = readThemeManifest(manifestPath);
|
|
65
65
|
if (!manifest) {
|
|
66
|
-
throw new Error(`
|
|
66
|
+
throw new Error(`Invalid theme manifest (JSON): ${manifestPath}`);
|
|
67
67
|
}
|
|
68
68
|
const { css, report } = await buildThemeStyles({ themesRoot: themesDir, themeName, manifest });
|
|
69
69
|
// `output` vem do manifesto: nunca escrever fora do diretório do tema.
|
|
70
70
|
if (report.output.includes('..') || isAbsolute(report.output)) {
|
|
71
|
-
throw new Error(`stylesConfig.output
|
|
71
|
+
throw new Error(`Invalid stylesConfig.output in ${manifestPath}: ${report.output}`);
|
|
72
72
|
}
|
|
73
73
|
const target = join(themesDir, themeName, report.output);
|
|
74
74
|
mkdirSync(dirname(target), { recursive: true });
|
package/dist/theme-build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-build.js","sourceRoot":"","sources":["../src/theme-build.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,+EAA+E;AAC/E,4EAA4E;AAC5E,4EAA4E;AAC5E,sDAAsD;AAEtD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAElF,+DAA+D;AAC/D,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB,EAAE,KAAa;IAChE,KAAK,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAQD;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB,EAAE,KAAa;IAChE,MAAM,YAAY,GAAG,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACzD,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,QAAQ,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACjD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,OAAO;QACL,YAAY;QACZ,QAAQ;QACR,MAAM,EAAE,kBAAkB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;KAClF,CAAC;AACJ,CAAC;AAYD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,SAAiB,EACjB,SAAiB;IAEjB,MAAM,YAAY,GAAG,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC7D,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,
|
|
1
|
+
{"version":3,"file":"theme-build.js","sourceRoot":"","sources":["../src/theme-build.ts"],"names":[],"mappings":"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"}
|