@hale-bopp/valentino-engine 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/bin/commands/init.d.ts +3 -0
  3. package/dist/bin/commands/init.d.ts.map +1 -0
  4. package/dist/bin/commands/init.js +428 -0
  5. package/dist/bin/commands/init.js.map +1 -0
  6. package/dist/bin/commands/validate.d.ts.map +1 -1
  7. package/dist/bin/commands/validate.js +152 -11
  8. package/dist/bin/commands/validate.js.map +1 -1
  9. package/dist/bin/valentino.js +5 -0
  10. package/dist/bin/valentino.js.map +1 -1
  11. package/dist/core/extension-registry.d.ts +64 -0
  12. package/dist/core/extension-registry.d.ts.map +1 -0
  13. package/dist/core/extension-registry.js +62 -0
  14. package/dist/core/extension-registry.js.map +1 -0
  15. package/dist/core/guardrails-cms.d.ts +40 -0
  16. package/dist/core/guardrails-cms.d.ts.map +1 -0
  17. package/dist/core/guardrails-cms.js +139 -0
  18. package/dist/core/guardrails-cms.js.map +1 -0
  19. package/dist/core/hero-contract.js +2 -2
  20. package/dist/core/hero-contract.js.map +1 -1
  21. package/dist/core/hero-contract.test.js +9 -2
  22. package/dist/core/hero-contract.test.js.map +1 -1
  23. package/dist/core/media.d.ts +24 -0
  24. package/dist/core/media.d.ts.map +1 -0
  25. package/dist/core/media.js +16 -0
  26. package/dist/core/media.js.map +1 -0
  27. package/dist/core/page-status.d.ts +18 -0
  28. package/dist/core/page-status.d.ts.map +1 -0
  29. package/dist/core/page-status.js +33 -0
  30. package/dist/core/page-status.js.map +1 -0
  31. package/dist/core/redirects.d.ts +19 -0
  32. package/dist/core/redirects.d.ts.map +1 -0
  33. package/dist/core/redirects.js +17 -0
  34. package/dist/core/redirects.js.map +1 -0
  35. package/dist/core/rhythm.d.ts.map +1 -1
  36. package/dist/core/rhythm.js +20 -1
  37. package/dist/core/rhythm.js.map +1 -1
  38. package/dist/core/rhythm.test.js +6 -6
  39. package/dist/core/rhythm.test.js.map +1 -1
  40. package/dist/core/section-integrity.d.ts.map +1 -1
  41. package/dist/core/section-integrity.js +10 -0
  42. package/dist/core/section-integrity.js.map +1 -1
  43. package/dist/core/section-integrity.test.js +12 -0
  44. package/dist/core/section-integrity.test.js.map +1 -1
  45. package/dist/core/seo.d.ts +26 -0
  46. package/dist/core/seo.d.ts.map +1 -0
  47. package/dist/core/seo.js +49 -0
  48. package/dist/core/seo.js.map +1 -0
  49. package/dist/core/types.d.ts +19 -1
  50. package/dist/core/types.d.ts.map +1 -1
  51. package/dist/index.d.ts +13 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +12 -0
  54. package/dist/index.js.map +1 -1
  55. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.0.0] — 2026-03-26
4
+
5
+ ### Breaking Changes
6
+ - **`resolveMediaUrl(manifest, key)`**: now requires `MediaManifest` as first argument (was single-arg before)
7
+
8
+ ### Added
9
+ - **CMS Module**: `getPageStatus`, `getPublishAt`, `isPageVisible` — page lifecycle management
10
+ - **Redirects Module**: `findRedirect`, `RedirectRule`, `RedirectsConfig` — declarative redirect resolution
11
+ - **Media Module**: `resolveMediaUrl`, `resolveMediaAsset`, `MediaAsset`, `MediaManifest` — media resolution
12
+ - **SEO Module**: `buildWebPageSchema`, `SeoSpec` — Schema.org WebPage generation
13
+ - **Extension Registry**: 6 extension points (custom renderers, guardrails, statuses, content/media resolvers, editor panels)
14
+ - **CMS Guardrails**: 6 pure rules migrated from portal (draft, publishAt, 404, redirects, SEO, maintenance)
15
+ - **CLI `valentino init`**: interactive scaffolding with 4 templates (minimal, product, advisor, conversion)
16
+ - **CLI `valentino validate`**: reads `valentino.guardrails.json`, applies severity per template
17
+ - **ManifestPageV1**: extended with `status`, `publishAt`, `seo` (optional fields)
18
+ - **PagesManifestV1**: added `maintenanceMode` (optional)
19
+ - **PageSpecV1**: added `seo` (optional)
20
+
21
+ ### Changed
22
+ - CLI now has 9 commands (was 7): added `init` and `validate`
23
+ - Test suite: 170 tests across 14 suites (was 109/9)
24
+ - Core modules: 14 (was 10)
25
+
26
+ ### Architecture
27
+ - Full CMS logic extracted from easyway-portal — engine is now standalone
28
+ - Portal reduced to glue code (I/O + DOM), imports everything from engine
29
+ - Consumer example: `examples/minimal-consumer/`
30
+
3
31
  ## [1.0.0] — 2026-03-23
4
32
 
5
33
  ### Added
@@ -0,0 +1,3 @@
1
+ export declare function generateProject(projectDir: string, projectName: string, lang: string, templateId: string, guardrailsEnabled: boolean): void;
2
+ export declare function runInit(args: string[]): Promise<void>;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/init.ts"],"names":[],"mappings":"AA2KA,wBAAgB,eAAe,CAC3B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,iBAAiB,EAAE,OAAO,GAC3B,IAAI,CAkLN;AAoCD,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmF3D"}
@@ -0,0 +1,428 @@
1
+ /**
2
+ * valentino init — Scaffolding interattivo per nuovi progetti.
3
+ * Crea un progetto completo con page spec, content, catalog, guardrails.
4
+ *
5
+ * Usage: valentino init <name> [--template <id>] [--lang <code>] [--git <url>]
6
+ */
7
+ import fs from 'node:fs';
8
+ import path from 'node:path';
9
+ import { execSync } from 'node:child_process';
10
+ import * as readline from 'node:readline';
11
+ const TEMPLATES = {
12
+ 'minimal': {
13
+ label: 'Minimal',
14
+ description: '2 pagine (home + about) — perfetto per iniziare',
15
+ blueprintId: null,
16
+ pages: [
17
+ {
18
+ id: 'home', route: '/', titleKey: 'home.hero.title',
19
+ spec: {
20
+ version: '1', id: 'home',
21
+ sections: [
22
+ { type: 'hero', presentation: { surface: 'dark', rhythmProfile: 'hero' }, titleKey: 'home.hero.title', taglineKey: 'home.hero.tagline' },
23
+ { type: 'cards', presentation: { surface: 'muted', rhythmProfile: 'feature' }, titleKey: 'home.cards.title', variant: 'feature', items: [
24
+ { titleKey: 'home.cards.item1.title', descKey: 'home.cards.item1.desc' },
25
+ { titleKey: 'home.cards.item2.title', descKey: 'home.cards.item2.desc' },
26
+ { titleKey: 'home.cards.item3.title', descKey: 'home.cards.item3.desc' },
27
+ ] },
28
+ { type: 'cta', presentation: { surface: 'accent', rhythmProfile: 'transition' }, titleKey: 'home.cta.title', primary: { labelKey: 'home.cta.primary', action: { type: 'link', href: '/about' } } },
29
+ ],
30
+ },
31
+ contentKeys: {
32
+ 'home.hero.title': 'Welcome to {{name}}',
33
+ 'home.hero.tagline': 'Your tagline here',
34
+ 'home.cards.title': 'What we offer',
35
+ 'home.cards.item1.title': 'Feature 1', 'home.cards.item1.desc': 'Description of feature 1',
36
+ 'home.cards.item2.title': 'Feature 2', 'home.cards.item2.desc': 'Description of feature 2',
37
+ 'home.cards.item3.title': 'Feature 3', 'home.cards.item3.desc': 'Description of feature 3',
38
+ 'home.cta.title': 'Get started', 'home.cta.primary': 'Learn more',
39
+ },
40
+ },
41
+ {
42
+ id: 'about', route: '/about', titleKey: 'about.hero.title',
43
+ spec: {
44
+ version: '1', id: 'about',
45
+ sections: [
46
+ { type: 'hero', presentation: { surface: 'dark', rhythmProfile: 'hero' }, titleKey: 'about.hero.title', taglineKey: 'about.hero.tagline' },
47
+ { type: 'cards', presentation: { surface: 'default', rhythmProfile: 'reading' }, titleKey: 'about.team.title', variant: 'feature', items: [
48
+ { titleKey: 'about.team.item1.title', descKey: 'about.team.item1.desc' },
49
+ { titleKey: 'about.team.item2.title', descKey: 'about.team.item2.desc' },
50
+ ] },
51
+ ],
52
+ },
53
+ contentKeys: {
54
+ 'about.hero.title': 'About us',
55
+ 'about.hero.tagline': 'Our story',
56
+ 'about.team.title': 'The team',
57
+ 'about.team.item1.title': 'Member 1', 'about.team.item1.desc': 'Role and bio',
58
+ 'about.team.item2.title': 'Member 2', 'about.team.item2.desc': 'Role and bio',
59
+ },
60
+ },
61
+ ],
62
+ guardrails: {
63
+ 'seo': { severity: 'warning' },
64
+ 'i18n': { severity: 'off' },
65
+ 'media': { severity: 'warning', maxSizeKb: 500 },
66
+ 'contrast': { severity: 'warning', level: 'AA' },
67
+ 'rhythm': { severity: 'warning' },
68
+ 'draft-orphan': { severity: 'warning' },
69
+ 'redirect': { severity: 'error' },
70
+ '404': { severity: 'error' },
71
+ },
72
+ },
73
+ 'product': {
74
+ label: 'Product',
75
+ description: '4 pagine (hero, offerta, confronto, CTA) — sito prodotto',
76
+ blueprintId: 'product-surface',
77
+ pages: [], // generated from blueprint
78
+ guardrails: {
79
+ 'seo': { severity: 'error', required: true },
80
+ 'i18n': { severity: 'warning', minLanguages: 2 },
81
+ 'media': { severity: 'warning', maxSizeKb: 500 },
82
+ 'contrast': { severity: 'error', level: 'AA' },
83
+ 'rhythm': { severity: 'warning' },
84
+ 'draft-orphan': { severity: 'warning', staleDays: 30 },
85
+ 'redirect': { severity: 'error' },
86
+ '404': { severity: 'error' },
87
+ },
88
+ },
89
+ 'advisor': {
90
+ label: 'Advisor',
91
+ description: '4 pagine con interfaccia consulenza AI',
92
+ blueprintId: 'advisor-review',
93
+ pages: [],
94
+ guardrails: {
95
+ 'seo': { severity: 'warning' },
96
+ 'i18n': { severity: 'off' },
97
+ 'media': { severity: 'warning' },
98
+ 'contrast': { severity: 'error', level: 'AA' },
99
+ 'rhythm': { severity: 'warning' },
100
+ 'form': { severity: 'error' },
101
+ 'cta-presence': { severity: 'error', minCta: 1 },
102
+ '404': { severity: 'error' },
103
+ },
104
+ },
105
+ 'conversion': {
106
+ label: 'Conversion',
107
+ description: 'Landing page con form di contatto/demo',
108
+ blueprintId: 'conversion-intake',
109
+ pages: [],
110
+ guardrails: {
111
+ 'seo': { severity: 'error', required: true },
112
+ 'i18n': { severity: 'off' },
113
+ 'contrast': { severity: 'error', level: 'AA' },
114
+ 'cta-presence': { severity: 'error', minCta: 1 },
115
+ 'form': { severity: 'error' },
116
+ 'above-the-fold': { severity: 'warning' },
117
+ '404': { severity: 'error' },
118
+ },
119
+ },
120
+ };
121
+ // ---------------------------------------------------------------------------
122
+ // Interactive prompt helper
123
+ // ---------------------------------------------------------------------------
124
+ function ask(rl, question, defaultVal) {
125
+ const suffix = defaultVal ? ` (${defaultVal})` : '';
126
+ return new Promise((resolve) => {
127
+ rl.question(` ${question}${suffix}: `, (answer) => {
128
+ resolve(answer.trim() || defaultVal || '');
129
+ });
130
+ });
131
+ }
132
+ function chooseTemplate(rl) {
133
+ return new Promise((resolve) => {
134
+ console.log('\n Available templates:');
135
+ const keys = Object.keys(TEMPLATES);
136
+ keys.forEach((k, i) => {
137
+ const t = TEMPLATES[k];
138
+ console.log(` ${i + 1}. ${t.label} — ${t.description}`);
139
+ });
140
+ rl.question(`\n Choose template (1-${keys.length}): `, (answer) => {
141
+ const idx = parseInt(answer.trim(), 10) - 1;
142
+ resolve(keys[idx] || keys[0]);
143
+ });
144
+ });
145
+ }
146
+ // ---------------------------------------------------------------------------
147
+ // Scaffold generator
148
+ // ---------------------------------------------------------------------------
149
+ export function generateProject(projectDir, projectName, lang, templateId, guardrailsEnabled) {
150
+ const template = TEMPLATES[templateId];
151
+ if (!template)
152
+ throw new Error(`Unknown template: ${templateId}`);
153
+ // Create directories
154
+ const dirs = ['public/pages', 'public/content', 'public/media', 'public/runtime'];
155
+ for (const d of dirs) {
156
+ fs.mkdirSync(path.join(projectDir, d), { recursive: true });
157
+ }
158
+ // Content: collect all content keys from pages
159
+ const contentEN = {};
160
+ const contentLocal = {};
161
+ for (const page of template.pages) {
162
+ for (const [key, val] of Object.entries(page.contentKeys)) {
163
+ const parts = key.split('.');
164
+ const section = parts[0];
165
+ if (!contentEN[section])
166
+ contentEN[section] = {};
167
+ contentEN[section][parts.slice(1).join('.')] = val.replace('{{name}}', projectName);
168
+ if (lang !== 'en') {
169
+ if (!contentLocal[section])
170
+ contentLocal[section] = {};
171
+ contentLocal[section][parts.slice(1).join('.')] = `[${lang.toUpperCase()}] ${val.replace('{{name}}', projectName)}`;
172
+ }
173
+ }
174
+ }
175
+ // Pages manifest
176
+ const manifest = {
177
+ version: '1',
178
+ defaultLanguage: lang,
179
+ maintenanceMode: false,
180
+ navigation: {
181
+ interactionMode: 'hover',
182
+ items: template.pages.map((p, i) => ({
183
+ id: p.id,
184
+ labelKey: `nav.${p.id}`,
185
+ href: p.route,
186
+ pageId: p.id,
187
+ order: (i + 1) * 10,
188
+ })),
189
+ },
190
+ pages: [
191
+ ...template.pages.map((p) => ({
192
+ id: p.id,
193
+ route: p.route,
194
+ titleKey: p.titleKey,
195
+ spec: `/pages/${p.id}.json`,
196
+ nav: { labelKey: `nav.${p.id}`, order: template.pages.indexOf(p) * 10 + 10 },
197
+ })),
198
+ { id: 'not-found', route: '/404', spec: '/pages/not-found.json', titleKey: 'notFound.title' },
199
+ ],
200
+ };
201
+ // Add nav keys to content
202
+ contentEN['nav'] = {};
203
+ for (const p of template.pages) {
204
+ contentEN['nav'][p.id] = p.id.charAt(0).toUpperCase() + p.id.slice(1);
205
+ }
206
+ contentEN['notFound'] = { title: 'Page not found', body: 'The page you are looking for does not exist.' };
207
+ // Write files
208
+ writeJSON(projectDir, 'public/pages/pages.manifest.json', manifest);
209
+ for (const page of template.pages) {
210
+ writeJSON(projectDir, `public/pages/${page.id}.json`, page.spec);
211
+ }
212
+ // 404 page
213
+ writeJSON(projectDir, 'public/pages/not-found.json', {
214
+ version: '1', id: 'not-found',
215
+ sections: [
216
+ { type: 'hero', presentation: { surface: 'dark', rhythmProfile: 'hero' }, titleKey: 'notFound.title', taglineKey: 'notFound.body' },
217
+ ],
218
+ });
219
+ // Content files
220
+ writeJSON(projectDir, 'public/content/content.json', contentEN);
221
+ if (lang !== 'en') {
222
+ writeJSON(projectDir, `public/content/${lang}.json`, contentLocal);
223
+ }
224
+ // Media manifest (empty)
225
+ writeJSON(projectDir, 'public/media/media.manifest.json', { version: '1', assets: [] });
226
+ // Redirects (empty)
227
+ writeJSON(projectDir, 'public/redirects.json', { version: '1', rules: [] });
228
+ // Catalog (from engine defaults)
229
+ writeJSON(projectDir, 'public/runtime/valentino.catalog.json', getDefaultCatalog());
230
+ // Guardrails profile
231
+ writeJSON(projectDir, 'valentino.guardrails.json', {
232
+ template: templateId,
233
+ guardrails: template.guardrails,
234
+ });
235
+ // Config
236
+ writeJSON(projectDir, 'valentino.config.json', {
237
+ name: projectName,
238
+ version: '1',
239
+ defaultLanguage: lang,
240
+ template: templateId,
241
+ engine: '@hale-bopp/valentino-engine',
242
+ });
243
+ // package.json
244
+ writeJSON(projectDir, 'package.json', {
245
+ name: projectName,
246
+ version: '0.1.0',
247
+ private: true,
248
+ type: 'module',
249
+ scripts: {
250
+ validate: 'valentino validate public/pages/*.json',
251
+ 'probe:all': 'valentino probe all public/pages/*.json',
252
+ audit: 'valentino audit',
253
+ },
254
+ dependencies: {
255
+ '@hale-bopp/valentino-engine': '^1.1.0',
256
+ },
257
+ });
258
+ // .gitignore
259
+ fs.writeFileSync(path.join(projectDir, '.gitignore'), [
260
+ 'node_modules/', 'dist/', '.DS_Store', '*.log', '.env', '.env.*',
261
+ ].join('\n') + '\n');
262
+ // README
263
+ const readme = `# ${projectName}
264
+
265
+ Built with [valentino-engine](https://github.com/hale-bopp-data/valentino-engine).
266
+
267
+ ## Quick start
268
+
269
+ \`\`\`bash
270
+ npm install
271
+ npx valentino validate public/pages/*.json # Validate page specs
272
+ npx valentino probe all public/pages/*.json # Run all probes
273
+ \`\`\`
274
+
275
+ ## How to add a page
276
+
277
+ 1. Create \`public/pages/my-page.json\` with sections (hero, cards, cta, form...)
278
+ 2. Register it in \`public/pages/pages.manifest.json\`
279
+ 3. Add content keys in \`public/content/content.json\`
280
+ 4. Run \`npx valentino validate\` to check
281
+
282
+ ## Template: ${templateId}
283
+
284
+ ${template.description}
285
+
286
+ ## Guardrails
287
+
288
+ This project uses the \`${templateId}\` guardrail profile. Edit \`valentino.guardrails.json\` to customize.
289
+
290
+ ## Structure
291
+
292
+ \`\`\`
293
+ public/
294
+ pages/ Page spec JSON files
295
+ content/ i18n content (content.json = EN, ${lang}.json = ${lang.toUpperCase()})
296
+ media/ Media assets + manifest
297
+ runtime/ Valentino catalog (templates, presets, blueprints)
298
+ valentino.config.json Project config
299
+ valentino.guardrails.json Guardrail profile
300
+ \`\`\`
301
+ `;
302
+ fs.writeFileSync(path.join(projectDir, 'README.md'), readme);
303
+ // Pre-commit hook (optional)
304
+ if (guardrailsEnabled) {
305
+ const hooksDir = path.join(projectDir, '.husky');
306
+ fs.mkdirSync(hooksDir, { recursive: true });
307
+ fs.writeFileSync(path.join(hooksDir, 'pre-commit'), '#!/usr/bin/env sh\nnpx valentino validate public/pages/*.json\n');
308
+ try {
309
+ fs.chmodSync(path.join(hooksDir, 'pre-commit'), 0o755);
310
+ }
311
+ catch { /* Windows */ }
312
+ }
313
+ }
314
+ function writeJSON(base, relPath, data) {
315
+ const full = path.join(base, relPath);
316
+ fs.mkdirSync(path.dirname(full), { recursive: true });
317
+ fs.writeFileSync(full, JSON.stringify(data, null, 2) + '\n');
318
+ }
319
+ function getDefaultCatalog() {
320
+ // Minimal catalog with core presets — consumer can extend
321
+ return {
322
+ version: '1',
323
+ templates: {
324
+ 'home-signature-template': { page: { profile: 'home-signature' } },
325
+ 'product-surface-template': { page: { profile: 'product-surface' } },
326
+ 'advisor-surface-template': { page: { profile: 'advisor-surface' } },
327
+ 'conversion-form-template': { page: { profile: 'conversion-form' } },
328
+ },
329
+ sectionPresets: {
330
+ 'hero-home-signature': { presentation: { surface: 'dark', tone: 'immersive', rhythmProfile: 'hero' } },
331
+ 'hero-shell-immersive': { presentation: { surface: 'shell-dark', surfaceScreen: 'immersive', tone: 'immersive', rhythmProfile: 'hero' } },
332
+ 'cards-muted-feature': { presentation: { surface: 'muted', rhythmProfile: 'feature' } },
333
+ 'cards-muted-proof': { presentation: { surface: 'muted', rhythmProfile: 'proof' } },
334
+ 'cta-accent-closeout': { presentation: { surface: 'accent', rhythmProfile: 'transition' } },
335
+ 'form-default-transition': { presentation: { surface: 'default', rhythmProfile: 'transition' } },
336
+ },
337
+ transitionProfiles: {
338
+ 'hero-intro-merge': { presentation: { seamProfile: 'hero-intro-merge', seamDensity: 'default', surfaceEntry: 'slab' } },
339
+ },
340
+ pageBlueprints: {},
341
+ };
342
+ }
343
+ // ---------------------------------------------------------------------------
344
+ // Main entry point
345
+ // ---------------------------------------------------------------------------
346
+ export async function runInit(args) {
347
+ // Parse flags
348
+ let projectName = '';
349
+ let templateId = '';
350
+ let lang = '';
351
+ let gitUrl = '';
352
+ for (let i = 0; i < args.length; i++) {
353
+ if (args[i] === '--template' && args[i + 1]) {
354
+ templateId = args[++i];
355
+ continue;
356
+ }
357
+ if (args[i] === '--lang' && args[i + 1]) {
358
+ lang = args[++i];
359
+ continue;
360
+ }
361
+ if (args[i] === '--git' && args[i + 1]) {
362
+ gitUrl = args[++i];
363
+ continue;
364
+ }
365
+ if (!args[i].startsWith('-') && !projectName) {
366
+ projectName = args[i];
367
+ }
368
+ }
369
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
370
+ console.log('\n 🎨 Valentino Init — Create a new project\n');
371
+ // 1. Name
372
+ if (!projectName) {
373
+ projectName = await ask(rl, 'Project name', 'my-valentino-site');
374
+ }
375
+ // 2. Template
376
+ if (!templateId || !TEMPLATES[templateId]) {
377
+ templateId = await chooseTemplate(rl);
378
+ }
379
+ // 3. Language
380
+ if (!lang) {
381
+ lang = await ask(rl, 'Default language', 'en');
382
+ }
383
+ // 4. Git remote
384
+ if (!gitUrl) {
385
+ gitUrl = await ask(rl, 'Git remote URL (optional, press Enter to skip)');
386
+ }
387
+ // 5. Guardrails
388
+ const guardrailsAnswer = await ask(rl, 'Enable pre-commit guardrails? (Y/n)', 'Y');
389
+ const guardrailsEnabled = guardrailsAnswer.toLowerCase() !== 'n';
390
+ rl.close();
391
+ // Generate
392
+ const projectDir = path.resolve(process.cwd(), projectName);
393
+ if (fs.existsSync(projectDir)) {
394
+ console.error(`\n Error: directory "${projectName}" already exists.`);
395
+ process.exit(1);
396
+ }
397
+ console.log(`\n Creating project "${projectName}" with template "${templateId}"...`);
398
+ generateProject(projectDir, projectName, lang, templateId, guardrailsEnabled);
399
+ // Git init
400
+ if (gitUrl || guardrailsEnabled) {
401
+ try {
402
+ execSync('git init', { cwd: projectDir, stdio: 'pipe' });
403
+ if (gitUrl) {
404
+ execSync(`git remote add origin ${gitUrl}`, { cwd: projectDir, stdio: 'pipe' });
405
+ }
406
+ execSync('git add -A', { cwd: projectDir, stdio: 'pipe' });
407
+ execSync('git commit -m "Initial commit — valentino init"', { cwd: projectDir, stdio: 'pipe' });
408
+ console.log(' ✓ Git initialized' + (gitUrl ? ` with remote ${gitUrl}` : ''));
409
+ }
410
+ catch {
411
+ console.log(' ⚠ Git init failed — you can do it manually');
412
+ }
413
+ }
414
+ // Summary
415
+ const template = TEMPLATES[templateId];
416
+ const pageCount = template.pages.length + 1; // +1 for 404
417
+ console.log(`
418
+ ✓ Project "${projectName}" created with template "${templateId}"
419
+ ✓ ${pageCount} pages, language: ${lang}, guardrails: ${guardrailsEnabled ? 'active' : 'off'}
420
+
421
+ Next steps:
422
+ cd ${projectName}
423
+ npm install
424
+ # Edit public/content/content.json — replace placeholder text
425
+ npx valentino validate public/pages/*.json
426
+ `);
427
+ }
428
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/bin/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAqB1C,MAAM,SAAS,GAAgC;IAC3C,SAAS,EAAE;QACP,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,iDAAiD;QAC9D,WAAW,EAAE,IAAI;QACjB,KAAK,EAAE;YACH;gBACI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB;gBACnD,IAAI,EAAE;oBACF,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM;oBACxB,QAAQ,EAAE;wBACN,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,UAAU,EAAE,mBAAmB,EAAE;wBACxI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;gCACpI,EAAE,QAAQ,EAAE,wBAAwB,EAAE,OAAO,EAAE,uBAAuB,EAAE;gCACxE,EAAE,QAAQ,EAAE,wBAAwB,EAAE,OAAO,EAAE,uBAAuB,EAAE;gCACxE,EAAE,QAAQ,EAAE,wBAAwB,EAAE,OAAO,EAAE,uBAAuB,EAAE;6BAC3E,EAAC;wBACF,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;qBACrM;iBACJ;gBACD,WAAW,EAAE;oBACT,iBAAiB,EAAE,qBAAqB;oBACxC,mBAAmB,EAAE,mBAAmB;oBACxC,kBAAkB,EAAE,eAAe;oBACnC,wBAAwB,EAAE,WAAW,EAAE,uBAAuB,EAAE,0BAA0B;oBAC1F,wBAAwB,EAAE,WAAW,EAAE,uBAAuB,EAAE,0BAA0B;oBAC1F,wBAAwB,EAAE,WAAW,EAAE,uBAAuB,EAAE,0BAA0B;oBAC1F,gBAAgB,EAAE,aAAa,EAAE,kBAAkB,EAAE,YAAY;iBACpE;aACJ;YACD;gBACI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,kBAAkB;gBAC1D,IAAI,EAAE;oBACF,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO;oBACzB,QAAQ,EAAE;wBACN,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,oBAAoB,EAAE;wBAC1I,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE;gCACtI,EAAE,QAAQ,EAAE,wBAAwB,EAAE,OAAO,EAAE,uBAAuB,EAAE;gCACxE,EAAE,QAAQ,EAAE,wBAAwB,EAAE,OAAO,EAAE,uBAAuB,EAAE;6BAC3E,EAAC;qBACL;iBACJ;gBACD,WAAW,EAAE;oBACT,kBAAkB,EAAE,UAAU;oBAC9B,oBAAoB,EAAE,WAAW;oBACjC,kBAAkB,EAAE,UAAU;oBAC9B,wBAAwB,EAAE,UAAU,EAAE,uBAAuB,EAAE,cAAc;oBAC7E,wBAAwB,EAAE,UAAU,EAAE,uBAAuB,EAAE,cAAc;iBAChF;aACJ;SACJ;QACD,UAAU,EAAE;YACR,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC9B,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC3B,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE;YAChD,UAAU,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE;YAChD,QAAQ,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YACjC,cAAc,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YACvC,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;YACjC,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;SAC/B;KACJ;IACD,SAAS,EAAE;QACP,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,0DAA0D;QACvE,WAAW,EAAE,iBAAiB;QAC9B,KAAK,EAAE,EAAE,EAAE,2BAA2B;QACtC,UAAU,EAAE;YACR,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC5C,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE;YAChD,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE;YAChD,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;YAC9C,QAAQ,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YACjC,cAAc,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE;YACtD,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;YACjC,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;SAC/B;KACJ;IACD,SAAS,EAAE;QACP,KAAK,EAAE,SAAS;QAChB,WAAW,EAAE,wCAAwC;QACrD,WAAW,EAAE,gBAAgB;QAC7B,KAAK,EAAE,EAAE;QACT,UAAU,EAAE;YACR,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAC9B,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC3B,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YAChC,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;YAC9C,QAAQ,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YACjC,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;YAC7B,cAAc,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE;YAChD,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;SAC/B;KACJ;IACD,YAAY,EAAE;QACV,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,wCAAwC;QACrD,WAAW,EAAE,mBAAmB;QAChC,KAAK,EAAE,EAAE;QACT,UAAU,EAAE;YACR,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC5C,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;YAC3B,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE;YAC9C,cAAc,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE;YAChD,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;YAC7B,gBAAgB,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;YACzC,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;SAC/B;KACJ;CACJ,CAAC;AAEF,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAC9E,SAAS,GAAG,CAAC,EAAsB,EAAE,QAAgB,EAAE,UAAmB;IACtE,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,EAAE,CAAC,QAAQ,CAAC,KAAK,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/C,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,UAAU,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,cAAc,CAAC,EAAsB;IAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC3B,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClB,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QACH,EAAE,CAAC,QAAQ,CAAC,0BAA0B,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/D,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAC9E,MAAM,UAAU,eAAe,CAC3B,UAAkB,EAClB,WAAmB,EACnB,IAAY,EACZ,UAAkB,EAClB,iBAA0B;IAE1B,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IACvC,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;IAElE,qBAAqB;IACrB,MAAM,IAAI,GAAG,CAAC,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAClF,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACnB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,+CAA+C;IAC/C,MAAM,SAAS,GAA2C,EAAE,CAAC;IAC7D,MAAM,YAAY,GAA2C,EAAE,CAAC;IAEhE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAChC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACxD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAAE,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjD,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAI,GAAc,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAChG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAChB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;oBAAE,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACvD,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,KAAM,GAAc,CAAC,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;YACpI,CAAC;QACL,CAAC;IACL,CAAC;IAED,iBAAiB;IACjB,MAAM,QAAQ,GAAG;QACb,OAAO,EAAE,GAAG;QACZ,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,KAAK;QACtB,UAAU,EAAE;YACR,eAAe,EAAE,OAAO;YACxB,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE;gBACvB,IAAI,EAAE,CAAC,CAAC,KAAK;gBACb,MAAM,EAAE,CAAC,CAAC,EAAE;gBACZ,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC;SACN;QACD,KAAK,EAAE;YACH,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1B,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,IAAI,EAAE,UAAU,CAAC,CAAC,EAAE,OAAO;gBAC3B,GAAG,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;aAC/E,CAAC,CAAC;YACH,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,gBAAgB,EAAE;SAChG;KACJ,CAAC;IAEF,0BAA0B;IAC1B,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IACtB,KAAK,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC7B,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,SAAS,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,8CAA8C,EAAE,CAAC;IAE1G,cAAc;IACd,SAAS,CAAC,UAAU,EAAE,kCAAkC,EAAE,QAAQ,CAAC,CAAC;IAEpE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAChC,SAAS,CAAC,UAAU,EAAE,gBAAgB,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAED,WAAW;IACX,SAAS,CAAC,UAAU,EAAE,6BAA6B,EAAE;QACjD,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,WAAW;QAC7B,QAAQ,EAAE;YACN,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,eAAe,EAAE;SACtI;KACJ,CAAC,CAAC;IAEH,gBAAgB;IAChB,SAAS,CAAC,UAAU,EAAE,6BAA6B,EAAE,SAAS,CAAC,CAAC;IAChE,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAChB,SAAS,CAAC,UAAU,EAAE,kBAAkB,IAAI,OAAO,EAAE,YAAY,CAAC,CAAC;IACvE,CAAC;IAED,yBAAyB;IACzB,SAAS,CAAC,UAAU,EAAE,kCAAkC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAExF,oBAAoB;IACpB,SAAS,CAAC,UAAU,EAAE,uBAAuB,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IAE5E,iCAAiC;IACjC,SAAS,CAAC,UAAU,EAAE,uCAAuC,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAEpF,qBAAqB;IACrB,SAAS,CAAC,UAAU,EAAE,2BAA2B,EAAE;QAC/C,QAAQ,EAAE,UAAU;QACpB,UAAU,EAAE,QAAQ,CAAC,UAAU;KAClC,CAAC,CAAC;IAEH,SAAS;IACT,SAAS,CAAC,UAAU,EAAE,uBAAuB,EAAE;QAC3C,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,GAAG;QACZ,eAAe,EAAE,IAAI;QACrB,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,6BAA6B;KACxC,CAAC,CAAC;IAEH,eAAe;IACf,SAAS,CAAC,UAAU,EAAE,cAAc,EAAE;QAClC,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACL,QAAQ,EAAE,wCAAwC;YAClD,WAAW,EAAE,yCAAyC;YACtD,KAAK,EAAE,iBAAiB;SAC3B;QACD,YAAY,EAAE;YACV,6BAA6B,EAAE,QAAQ;SAC1C;KACJ,CAAC,CAAC;IAEH,aAAa;IACb,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE;QAClD,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ;KACnE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;IAErB,SAAS;IACT,MAAM,MAAM,GAAG,KAAK,WAAW;;;;;;;;;;;;;;;;;;;eAmBpB,UAAU;;EAEvB,QAAQ,CAAC,WAAW;;;;0BAII,UAAU;;;;;;;qDAOiB,IAAI,WAAW,IAAI,CAAC,WAAW,EAAE;;;;;;CAMrF,CAAC;IACE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC;IAE7D,6BAA6B;IAC7B,IAAI,iBAAiB,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACjD,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EAC9C,iEAAiE,CACpE,CAAC;QACF,IAAI,CAAC;YAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;IAC3F,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,OAAe,EAAE,IAAa;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,iBAAiB;IACtB,0DAA0D;IAC1D,OAAO;QACH,OAAO,EAAE,GAAG;QACZ,SAAS,EAAE;YACP,yBAAyB,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE;YAClE,0BAA0B,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE;YACpE,0BAA0B,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE;YACpE,0BAA0B,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE;SACvE;QACD,cAAc,EAAE;YACZ,qBAAqB,EAAE,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE;YACtG,sBAAsB,EAAE,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE;YACzI,qBAAqB,EAAE,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE;YACvF,mBAAmB,EAAE,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE;YACnF,qBAAqB,EAAE,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,YAAY,EAAE,EAAE;YAC3F,yBAAyB,EAAE,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,EAAE;SACnG;QACD,kBAAkB,EAAE;YAChB,kBAAkB,EAAE,EAAE,YAAY,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE;SAC1H;QACD,cAAc,EAAE,EAAE;KACrB,CAAC;AACN,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAc;IACxC,cAAc;IACd,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAClF,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACxE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;IAC5E,CAAC;IAED,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEtF,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAE9D,UAAU;IACV,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,WAAW,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC;IACrE,CAAC;IAED,cAAc;IACd,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;QACxC,UAAU,GAAG,MAAM,cAAc,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,cAAc;IACd,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,gBAAgB;IAChB,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,gDAAgD,CAAC,CAAC;IAC7E,CAAC;IAED,gBAAgB;IAChB,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,qCAAqC,EAAE,GAAG,CAAC,CAAC;IACnF,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC;IAEjE,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,WAAW;IACX,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAC5D,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,yBAAyB,WAAW,mBAAmB,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,WAAW,oBAAoB,UAAU,MAAM,CAAC,CAAC;IAEtF,eAAe,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;IAE9E,WAAW;IACX,IAAI,MAAM,IAAI,iBAAiB,EAAE,CAAC;QAC9B,IAAI,CAAC;YACD,QAAQ,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACzD,IAAI,MAAM,EAAE,CAAC;gBACT,QAAQ,CAAC,yBAAyB,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YACpF,CAAC;YACD,QAAQ,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3D,QAAQ,CAAC,iDAAiD,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAChG,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAChE,CAAC;IACL,CAAC;IAED,UAAU;IACV,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,aAAa;IAC1D,OAAO,CAAC,GAAG,CAAC;eACD,WAAW,4BAA4B,UAAU;MAC1D,SAAS,qBAAqB,IAAI,iBAAiB,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;;;SAGpF,WAAW;;;;CAInB,CAAC,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/validate.ts"],"names":[],"mappings":"AAGA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAchD"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/bin/commands/validate.ts"],"names":[],"mappings":"AAwEA,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA4FhD"}