@jasonshimmy/vite-plugin-cer-app 0.28.3 → 0.29.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 (148) hide show
  1. package/README.md +2 -0
  2. package/dist/cli/adapters/cloudflare.d.ts +2 -2
  3. package/dist/cli/adapters/cloudflare.d.ts.map +1 -1
  4. package/dist/cli/adapters/cloudflare.js +83 -159
  5. package/dist/cli/adapters/cloudflare.js.map +1 -1
  6. package/dist/cli/adapters/deployment-mode.d.ts +10 -0
  7. package/dist/cli/adapters/deployment-mode.d.ts.map +1 -0
  8. package/dist/cli/adapters/deployment-mode.js +59 -0
  9. package/dist/cli/adapters/deployment-mode.js.map +1 -0
  10. package/dist/cli/adapters/netlify.d.ts +5 -4
  11. package/dist/cli/adapters/netlify.d.ts.map +1 -1
  12. package/dist/cli/adapters/netlify.js +26 -150
  13. package/dist/cli/adapters/netlify.js.map +1 -1
  14. package/dist/cli/adapters/vercel.d.ts +2 -3
  15. package/dist/cli/adapters/vercel.d.ts.map +1 -1
  16. package/dist/cli/adapters/vercel.js +36 -111
  17. package/dist/cli/adapters/vercel.js.map +1 -1
  18. package/dist/cli/adapters/web-bridge.d.ts +3 -0
  19. package/dist/cli/adapters/web-bridge.d.ts.map +1 -0
  20. package/dist/cli/adapters/web-bridge.js +110 -0
  21. package/dist/cli/adapters/web-bridge.js.map +1 -0
  22. package/dist/cli/checks/lighthouse.d.ts +6 -0
  23. package/dist/cli/checks/lighthouse.d.ts.map +1 -1
  24. package/dist/cli/checks/lighthouse.js +49 -44
  25. package/dist/cli/checks/lighthouse.js.map +1 -1
  26. package/dist/cli/checks/performance.d.ts +3 -0
  27. package/dist/cli/checks/performance.d.ts.map +1 -1
  28. package/dist/cli/checks/performance.js +56 -15
  29. package/dist/cli/checks/performance.js.map +1 -1
  30. package/dist/cli/checks/quality.d.ts +35 -0
  31. package/dist/cli/checks/quality.d.ts.map +1 -0
  32. package/dist/cli/checks/quality.js +72 -0
  33. package/dist/cli/checks/quality.js.map +1 -0
  34. package/dist/cli/checks/seo.d.ts +9 -0
  35. package/dist/cli/checks/seo.d.ts.map +1 -0
  36. package/dist/cli/checks/seo.js +40 -0
  37. package/dist/cli/checks/seo.js.map +1 -0
  38. package/dist/cli/commands/build.d.ts.map +1 -1
  39. package/dist/cli/commands/build.js +2 -51
  40. package/dist/cli/commands/build.js.map +1 -1
  41. package/dist/cli/commands/check.d.ts.map +1 -1
  42. package/dist/cli/commands/check.js +12 -0
  43. package/dist/cli/commands/check.js.map +1 -1
  44. package/dist/cli/commands/dev.d.ts +4 -0
  45. package/dist/cli/commands/dev.d.ts.map +1 -1
  46. package/dist/cli/commands/dev.js +1 -72
  47. package/dist/cli/commands/dev.js.map +1 -1
  48. package/dist/cli/commands/generate.d.ts +1 -4
  49. package/dist/cli/commands/generate.d.ts.map +1 -1
  50. package/dist/cli/commands/generate.js +4 -73
  51. package/dist/cli/commands/generate.js.map +1 -1
  52. package/dist/cli/commands/preview-paths.d.ts +3 -0
  53. package/dist/cli/commands/preview-paths.d.ts.map +1 -0
  54. package/dist/cli/commands/preview-paths.js +8 -0
  55. package/dist/cli/commands/preview-paths.js.map +1 -0
  56. package/dist/cli/commands/preview.d.ts +11 -0
  57. package/dist/cli/commands/preview.d.ts.map +1 -1
  58. package/dist/cli/commands/preview.js +124 -458
  59. package/dist/cli/commands/preview.js.map +1 -1
  60. package/dist/cli/config.d.ts +3 -0
  61. package/dist/cli/config.d.ts.map +1 -0
  62. package/dist/cli/config.js +68 -0
  63. package/dist/cli/config.js.map +1 -0
  64. package/dist/cli/create/templates/spa/package.json.tpl +1 -1
  65. package/dist/cli/create/templates/ssg/package.json.tpl +1 -1
  66. package/dist/cli/create/templates/ssr/package.json.tpl +1 -1
  67. package/dist/plugin/build-ssg.d.ts.map +1 -1
  68. package/dist/plugin/build-ssg.js +79 -9
  69. package/dist/plugin/build-ssg.js.map +1 -1
  70. package/dist/plugin/build-ssr.d.ts.map +1 -1
  71. package/dist/plugin/build-ssr.js +3 -1
  72. package/dist/plugin/build-ssr.js.map +1 -1
  73. package/dist/plugin/dev-server.d.ts +8 -0
  74. package/dist/plugin/dev-server.d.ts.map +1 -1
  75. package/dist/plugin/dev-server.js.map +1 -1
  76. package/dist/plugin/dts-generator.d.ts.map +1 -1
  77. package/dist/plugin/dts-generator.js +3 -0
  78. package/dist/plugin/dts-generator.js.map +1 -1
  79. package/dist/plugin/html-post-process.d.ts +1 -1
  80. package/dist/plugin/html-post-process.d.ts.map +1 -1
  81. package/dist/plugin/html-post-process.js +7 -5
  82. package/dist/plugin/html-post-process.js.map +1 -1
  83. package/dist/plugin/index.d.ts +1 -4
  84. package/dist/plugin/index.d.ts.map +1 -1
  85. package/dist/plugin/index.js +26 -8
  86. package/dist/plugin/index.js.map +1 -1
  87. package/dist/plugin/server-content.d.ts +3 -0
  88. package/dist/plugin/server-content.d.ts.map +1 -0
  89. package/dist/plugin/server-content.js +25 -0
  90. package/dist/plugin/server-content.js.map +1 -0
  91. package/dist/plugin/transforms/auto-import.d.ts.map +1 -1
  92. package/dist/plugin/transforms/auto-import.js +6 -5
  93. package/dist/plugin/transforms/auto-import.js.map +1 -1
  94. package/dist/plugin/virtual/content-components.d.ts +3 -1
  95. package/dist/plugin/virtual/content-components.d.ts.map +1 -1
  96. package/dist/plugin/virtual/content-components.js +104 -21
  97. package/dist/plugin/virtual/content-components.js.map +1 -1
  98. package/dist/runtime/app-template.d.ts.map +1 -1
  99. package/dist/runtime/app-template.js +18 -8
  100. package/dist/runtime/app-template.js.map +1 -1
  101. package/dist/runtime/composables/index.d.ts +2 -0
  102. package/dist/runtime/composables/index.d.ts.map +1 -1
  103. package/dist/runtime/composables/index.js +1 -0
  104. package/dist/runtime/composables/index.js.map +1 -1
  105. package/dist/runtime/composables/render-content.d.ts +10 -0
  106. package/dist/runtime/composables/render-content.d.ts.map +1 -0
  107. package/dist/runtime/composables/render-content.js +21 -0
  108. package/dist/runtime/composables/render-content.js.map +1 -0
  109. package/dist/runtime/composables/use-auth.d.ts.map +1 -1
  110. package/dist/runtime/composables/use-auth.js +14 -6
  111. package/dist/runtime/composables/use-auth.js.map +1 -1
  112. package/dist/runtime/composables/use-content-page.d.ts +2 -0
  113. package/dist/runtime/composables/use-content-page.d.ts.map +1 -1
  114. package/dist/runtime/composables/use-content-page.js +1 -1
  115. package/dist/runtime/composables/use-content-page.js.map +1 -1
  116. package/dist/runtime/content/client.d.ts +2 -3
  117. package/dist/runtime/content/client.d.ts.map +1 -1
  118. package/dist/runtime/content/client.js +4 -5
  119. package/dist/runtime/content/client.js.map +1 -1
  120. package/dist/runtime/entry-server-template.d.ts.map +1 -1
  121. package/dist/runtime/entry-server-template.js +45 -15
  122. package/dist/runtime/entry-server-template.js.map +1 -1
  123. package/dist/runtime/isr-handler.d.ts +4 -15
  124. package/dist/runtime/isr-handler.d.ts.map +1 -1
  125. package/dist/runtime/isr-handler.js +64 -45
  126. package/dist/runtime/isr-handler.js.map +1 -1
  127. package/dist/runtime/request-dispatcher.d.ts +31 -0
  128. package/dist/runtime/request-dispatcher.d.ts.map +1 -0
  129. package/dist/runtime/request-dispatcher.js +152 -0
  130. package/dist/runtime/request-dispatcher.js.map +1 -0
  131. package/dist/runtime/route-matching.d.ts +20 -0
  132. package/dist/runtime/route-matching.d.ts.map +1 -0
  133. package/dist/runtime/route-matching.js +45 -0
  134. package/dist/runtime/route-matching.js.map +1 -0
  135. package/dist/types/api.d.ts +3 -0
  136. package/dist/types/api.d.ts.map +1 -1
  137. package/dist/types/config.d.ts +27 -0
  138. package/dist/types/config.d.ts.map +1 -1
  139. package/dist/types/config.js.map +1 -1
  140. package/dist/types/content.d.ts +2 -0
  141. package/dist/types/content.d.ts.map +1 -1
  142. package/dist/types/page.d.ts +11 -7
  143. package/dist/types/page.d.ts.map +1 -1
  144. package/package.json +23 -9
  145. package/dist/cli/commands/preview-isr.d.ts +0 -66
  146. package/dist/cli/commands/preview-isr.d.ts.map +0 -1
  147. package/dist/cli/commands/preview-isr.js +0 -132
  148. package/dist/cli/commands/preview-isr.js.map +0 -1
@@ -1,8 +1,8 @@
1
+ import { loadCerConfig } from '../config.js';
1
2
  import { Command } from 'commander';
2
3
  import { build } from 'vite';
3
4
  import { resolve, join } from 'pathe';
4
- import { pathToFileURL } from 'node:url';
5
- import { existsSync, renameSync, mkdirSync, writeFileSync } from 'node:fs';
5
+ import { existsSync, renameSync } from 'node:fs';
6
6
  import { cerApp, resolveConfig } from '../../plugin/index.js';
7
7
  import { buildSSR, resolveClientEntry } from '../../plugin/build-ssr.js';
8
8
  import { buildSSG } from '../../plugin/build-ssg.js';
@@ -10,55 +10,6 @@ import { writeGeneratedDir } from '../../plugin/generated-dir.js';
10
10
  import { runVercelAdapter } from '../adapters/vercel.js';
11
11
  import { runNetlifyAdapter } from '../adapters/netlify.js';
12
12
  import { runCloudflareAdapter } from '../adapters/cloudflare.js';
13
- async function loadCerConfig(root) {
14
- const configPath = resolve(root, 'cer.config.ts');
15
- const configPathJs = resolve(root, 'cer.config.js');
16
- const filePath = existsSync(configPath)
17
- ? configPath
18
- : existsSync(configPathJs)
19
- ? configPathJs
20
- : null;
21
- if (!filePath)
22
- return {};
23
- try {
24
- // Bootstrap .cer/tsconfig.json so rolldown can resolve it during cer.config.ts transform
25
- const cerDir = resolve(root, '.cer');
26
- const cerTsconfig = resolve(cerDir, 'tsconfig.json');
27
- if (!existsSync(cerTsconfig)) {
28
- mkdirSync(cerDir, { recursive: true });
29
- writeFileSync(cerTsconfig, '{"compilerOptions":{}}\n', 'utf-8');
30
- }
31
- const { build: viteBuild } = await import('vite');
32
- await viteBuild({
33
- build: {
34
- lib: {
35
- entry: filePath,
36
- formats: ['es'],
37
- fileName: 'cer.config',
38
- },
39
- outDir: resolve(root, 'node_modules/.cer-app-cache'),
40
- write: true,
41
- rollupOptions: { external: (id) => !id.startsWith('.') && !id.startsWith('/') },
42
- },
43
- logLevel: 'silent',
44
- });
45
- const outFile = resolve(root, 'node_modules/.cer-app-cache/cer.config.mjs');
46
- if (existsSync(outFile)) {
47
- const mod = await import(pathToFileURL(outFile).href + `?t=${Date.now()}`);
48
- return mod.default ?? {};
49
- }
50
- }
51
- catch {
52
- // ignore
53
- }
54
- try {
55
- const mod = await import(pathToFileURL(filePath).href + `?t=${Date.now()}`);
56
- return mod.default ?? {};
57
- }
58
- catch {
59
- return {};
60
- }
61
- }
62
13
  async function runAdapter(adapter, root) {
63
14
  if (!adapter)
64
15
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAkBnC,wBAAgB,YAAY,IAAI,OAAO,CA0FtC"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAmBnC,wBAAgB,YAAY,IAAI,OAAO,CAuGtC"}
@@ -1,5 +1,6 @@
1
1
  import { Command } from 'commander';
2
2
  import { resolve } from 'node:path';
3
+ import { checkSeo } from '../checks/seo.js';
3
4
  import { checkBuiltLinks } from '../checks/links.js';
4
5
  import { checkPerformanceBudgets } from '../checks/performance.js';
5
6
  import { LIGHTHOUSE_CATEGORIES, runLighthouseAudit } from '../checks/lighthouse.js';
@@ -28,6 +29,17 @@ export function checkCommand() {
28
29
  console.log(`Built-link validation passed: ${report.links} links across ${report.pages} pages.`);
29
30
  }
30
31
  }));
32
+ command.addCommand(new Command('seo')
33
+ .description('Validate SSG canonical, sitemap and indexing policy')
34
+ .option('--root <root>', 'Project root directory', process.cwd())
35
+ .option('--output <directory>', 'Build output directory', 'dist')
36
+ .requiredOption('--site-url <url>', 'Canonical site origin')
37
+ .action(async (options) => {
38
+ const report = await checkSeo({ outputDir: resolve(options.root, options.output), siteUrl: options.siteUrl });
39
+ printFailures('SEO validation', report.failures);
40
+ if (!report.failures.length)
41
+ console.log(`SEO validation passed: ${report.pages} pages.`);
42
+ }));
31
43
  command.addCommand(new Command('performance')
32
44
  .description('Validate HTML and JavaScript production budgets')
33
45
  .option('--root <root>', 'Project root directory', process.cwd())
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/cli/commands/check.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
1
  import { Command } from 'commander';
2
+ /**
3
+ * Loads cer.config.ts from the current working directory.
4
+ * Returns an empty object if no config file is found.
5
+ */
2
6
  export declare function devCommand(): Command;
3
7
  //# sourceMappingURL=dev.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAkFnC,wBAAgB,UAAU,IAAI,OAAO,CA0CpC"}
1
+ {"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMnC;;;GAGG;AACH,wBAAgB,UAAU,IAAI,OAAO,CA0CpC"}
@@ -1,83 +1,12 @@
1
1
  import { Command } from 'commander';
2
2
  import { createServer } from 'vite';
3
3
  import { resolve } from 'pathe';
4
- import { pathToFileURL } from 'node:url';
5
- import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
4
+ import { loadCerConfig } from '../config.js';
6
5
  import { cerApp } from '../../plugin/index.js';
7
6
  /**
8
7
  * Loads cer.config.ts from the current working directory.
9
8
  * Returns an empty object if no config file is found.
10
9
  */
11
- async function loadCerConfig(root) {
12
- const configPath = resolve(root, 'cer.config.ts');
13
- const configPathJs = resolve(root, 'cer.config.js');
14
- const filePath = existsSync(configPath)
15
- ? configPath
16
- : existsSync(configPathJs)
17
- ? configPathJs
18
- : null;
19
- if (!filePath) {
20
- console.warn('[cer-app] No cer.config.ts found; using defaults.');
21
- return {};
22
- }
23
- try {
24
- const originalNodeEnv = process.env.NODE_ENV;
25
- const originalMode = process.env.MODE;
26
- // Bootstrap .cer/tsconfig.json so rolldown can resolve it during cer.config.ts transform
27
- const cerDir = resolve(root, '.cer');
28
- const cerTsconfig = resolve(cerDir, 'tsconfig.json');
29
- if (!existsSync(cerTsconfig)) {
30
- mkdirSync(cerDir, { recursive: true });
31
- writeFileSync(cerTsconfig, '{"compilerOptions":{}}\n', 'utf-8');
32
- }
33
- // Use Vite's build to transpile TS config at runtime
34
- try {
35
- const { build } = await import('vite');
36
- await build({
37
- build: {
38
- lib: {
39
- entry: filePath,
40
- formats: ['es'],
41
- fileName: 'cer.config',
42
- },
43
- outDir: resolve(root, 'node_modules/.cer-app-cache'),
44
- write: true,
45
- rollupOptions: {
46
- // Externalize all bare package imports (handles file: symlinks too)
47
- external: (id) => !id.startsWith('.') && !id.startsWith('/'),
48
- },
49
- },
50
- logLevel: 'silent',
51
- });
52
- }
53
- finally {
54
- if (typeof originalNodeEnv === 'undefined')
55
- delete process.env.NODE_ENV;
56
- else
57
- process.env.NODE_ENV = originalNodeEnv;
58
- if (typeof originalMode === 'undefined')
59
- delete process.env.MODE;
60
- else
61
- process.env.MODE = originalMode;
62
- }
63
- const outFile = resolve(root, 'node_modules/.cer-app-cache/cer.config.mjs');
64
- if (existsSync(outFile)) {
65
- const mod = await import(pathToFileURL(outFile).href + `?t=${Date.now()}`);
66
- return mod.default ?? {};
67
- }
68
- }
69
- catch (err) {
70
- console.warn('[cer-app] Could not load cer.config.ts via build, trying dynamic import:', err);
71
- }
72
- // Fallback: try direct import (works for .js configs)
73
- try {
74
- const mod = await import(pathToFileURL(filePath).href + `?t=${Date.now()}`);
75
- return mod.default ?? {};
76
- }
77
- catch {
78
- return {};
79
- }
80
- }
81
10
  export function devCommand() {
82
11
  return new Command('dev')
83
12
  .description('Start the development server')
@@ -1 +1 @@
1
- {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/cli/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAE9C;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;SACtB,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,CAAC;SACxD,MAAM,CAAC,eAAe,EAAE,iBAAiB,EAAE,WAAW,CAAC;SACvD,MAAM,CAAC,eAAe,EAAE,wBAAwB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAChE,MAAM,CAAC,eAAe,EAAE,sDAAsD,CAAC;SAC/E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAClC,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAA;QAC5C,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAA;QACpC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,aAAa,CAAA;QAChC,0EAA0E;QAC1E,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC,IAA6B,CAAA;QACzD,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI,CAAC,CAAA;QAElF,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAA;QAE/C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;YAChC,IAAI;YACJ,MAAM,EAAE;gBACN,IAAI;gBACJ,IAAI,EAAE,OAAO,CAAC,IAAI;aACnB;YACD,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC;SAC5B,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC,MAAM,EAAE,CAAA;QACrB,MAAM,CAAC,SAAS,EAAE,CAAA;QAElB,2BAA2B;QAC3B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAC/B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACN,CAAC"}
@@ -1,7 +1,4 @@
1
1
  import { Command } from 'commander';
2
- /**
3
- * `cer-app generate` — runs the full SSG build pipeline.
4
- * Alias for `cer-app build --mode ssg`.
5
- */
2
+ /** Generation uses the same adapters and validation as an SSG build. */
6
3
  export declare function generateCommand(): Command;
7
4
  //# sourceMappingURL=generate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA8DnC;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAwBzC"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGnC,wEAAwE;AACxE,wBAAgB,eAAe,IAAI,OAAO,CAOzC"}
@@ -1,81 +1,12 @@
1
1
  import { Command } from 'commander';
2
- import { resolve } from 'pathe';
3
- import { pathToFileURL } from 'node:url';
4
- import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
5
- import { resolveConfig } from '../../plugin/index.js';
6
- import { buildSSG } from '../../plugin/build-ssg.js';
7
- import { cerApp } from '../../plugin/index.js';
8
- async function loadCerConfig(root) {
9
- const configPath = resolve(root, 'cer.config.ts');
10
- const configPathJs = resolve(root, 'cer.config.js');
11
- const filePath = existsSync(configPath)
12
- ? configPath
13
- : existsSync(configPathJs)
14
- ? configPathJs
15
- : null;
16
- if (!filePath)
17
- return {};
18
- try {
19
- // Bootstrap .cer/tsconfig.json so rolldown can resolve it during cer.config.ts transform
20
- const cerDir = resolve(root, '.cer');
21
- const cerTsconfig = resolve(cerDir, 'tsconfig.json');
22
- if (!existsSync(cerTsconfig)) {
23
- mkdirSync(cerDir, { recursive: true });
24
- writeFileSync(cerTsconfig, '{"compilerOptions":{}}\n', 'utf-8');
25
- }
26
- const { build } = await import('vite');
27
- await build({
28
- build: {
29
- lib: {
30
- entry: filePath,
31
- formats: ['es'],
32
- fileName: 'cer.config',
33
- },
34
- outDir: resolve(root, 'node_modules/.cer-app-cache'),
35
- write: true,
36
- rollupOptions: { external: (id) => !id.startsWith('.') && !id.startsWith('/') },
37
- },
38
- logLevel: 'silent',
39
- });
40
- const outFile = resolve(root, 'node_modules/.cer-app-cache/cer.config.mjs');
41
- if (existsSync(outFile)) {
42
- const mod = await import(pathToFileURL(outFile).href + `?t=${Date.now()}`);
43
- return mod.default ?? {};
44
- }
45
- }
46
- catch {
47
- // ignore
48
- }
49
- try {
50
- const mod = await import(pathToFileURL(filePath).href + `?t=${Date.now()}`);
51
- return mod.default ?? {};
52
- }
53
- catch {
54
- return {};
55
- }
56
- }
57
- /**
58
- * `cer-app generate` — runs the full SSG build pipeline.
59
- * Alias for `cer-app build --mode ssg`.
60
- */
2
+ import { buildCommand } from './build.js';
3
+ /** Generation uses the same adapters and validation as an SSG build. */
61
4
  export function generateCommand() {
62
5
  return new Command('generate')
63
- .description('Generate a static site (SSG build)')
6
+ .description('Generate a static site (alias for build --mode ssg)')
64
7
  .option('--root <root>', 'Project root directory', process.cwd())
65
8
  .action(async (options) => {
66
- const root = resolve(options.root);
67
- const userConfig = await loadCerConfig(root);
68
- // Force SSG mode
69
- userConfig.mode = 'ssg';
70
- const config = resolveConfig(userConfig, root);
71
- console.log('[cer-app] Running SSG generation...');
72
- const viteUserConfig = {
73
- root,
74
- plugins: cerApp(userConfig),
75
- };
76
- await buildSSG(config, viteUserConfig);
77
- // Force exit: the SSG path-enumeration Vite server may keep alive Node timers.
78
- process.exit(0);
9
+ await buildCommand().parseAsync(['--root', options.root, '--mode', 'ssg'], { from: 'user' });
79
10
  });
80
11
  }
81
12
  //# sourceMappingURL=generate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,wEAAwE;AACxE,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;SAC3B,WAAW,CAAC,qDAAqD,CAAC;SAClE,MAAM,CAAC,eAAe,EAAE,wBAAwB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAChE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;IAC9F,CAAC,CAAC,CAAA;AACN,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { findRenderMode } from '../../runtime/route-matching.js';
2
+ export declare function isPathBounded(rootDir: string, urlPath: string): boolean;
3
+ //# sourceMappingURL=preview-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-paths.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/preview-paths.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAIvE"}
@@ -0,0 +1,8 @@
1
+ import { resolve, join } from 'pathe';
2
+ export { findRenderMode } from '../../runtime/route-matching.js';
3
+ export function isPathBounded(rootDir, urlPath) {
4
+ const safeRoot = resolve(rootDir);
5
+ const resolved = resolve(join(rootDir, urlPath));
6
+ return resolved === safeRoot || resolved.startsWith(safeRoot + '/');
7
+ }
8
+ //# sourceMappingURL=preview-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-paths.js","sourceRoot":"","sources":["../../../src/cli/commands/preview-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,OAAe;IAC5D,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;IAChD,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAA;AACrE,CAAC"}
@@ -1,3 +1,14 @@
1
1
  import { Command } from 'commander';
2
+ import { type PreviewServer, type PreviewOptions } from 'vite';
3
+ export declare function closePreview(server: PreviewServer): Promise<void>;
4
+ export interface CerPreviewOptions {
5
+ root?: string;
6
+ port?: number;
7
+ host?: string;
8
+ ssr?: boolean;
9
+ preview?: PreviewOptions;
10
+ }
11
+ /** Vite owns transport, compression, media types and range requests. CER owns routing. */
12
+ export declare function startPreview(options?: CerPreviewOptions): Promise<PreviewServer>;
2
13
  export declare function previewCommand(): Command;
3
14
  //# sourceMappingURL=preview.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA+NnC,wBAAgB,cAAc,IAAI,OAAO,CA8SxC"}
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAW,KAAK,aAAa,EAAE,KAAK,cAAc,EAAe,MAAM,MAAM,CAAA;AAUpF,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,OAAO,CAAC,EAAE,cAAc,CAAA;CACzB;AAED,0FAA0F;AAC1F,wBAAsB,YAAY,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC,CAmF1F;AAED,wBAAgB,cAAc,IAAI,OAAO,CAkBxC"}