@stati/core 1.20.3 → 1.22.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 (76) hide show
  1. package/dist/config/loader.d.ts +4 -0
  2. package/dist/config/loader.d.ts.map +1 -1
  3. package/dist/config/loader.js +49 -4
  4. package/dist/core/build.d.ts +6 -0
  5. package/dist/core/build.d.ts.map +1 -1
  6. package/dist/core/build.js +176 -66
  7. package/dist/core/dev.d.ts.map +1 -1
  8. package/dist/core/dev.js +100 -28
  9. package/dist/core/isg/builder.d.ts +4 -1
  10. package/dist/core/isg/builder.d.ts.map +1 -1
  11. package/dist/core/isg/builder.js +89 -2
  12. package/dist/core/isg/deps.d.ts +5 -0
  13. package/dist/core/isg/deps.d.ts.map +1 -1
  14. package/dist/core/isg/deps.js +38 -3
  15. package/dist/core/isg/dev-server-lock.d.ts +85 -0
  16. package/dist/core/isg/dev-server-lock.d.ts.map +1 -0
  17. package/dist/core/isg/dev-server-lock.js +248 -0
  18. package/dist/core/isg/hash.d.ts +4 -0
  19. package/dist/core/isg/hash.d.ts.map +1 -1
  20. package/dist/core/isg/hash.js +24 -1
  21. package/dist/core/isg/index.d.ts +3 -2
  22. package/dist/core/isg/index.d.ts.map +1 -1
  23. package/dist/core/isg/index.js +3 -2
  24. package/dist/core/markdown.d.ts +6 -0
  25. package/dist/core/markdown.d.ts.map +1 -1
  26. package/dist/core/markdown.js +23 -0
  27. package/dist/core/preview.js +1 -1
  28. package/dist/core/templates.js +5 -5
  29. package/dist/core/utils/bundle-matching.utils.d.ts +2 -0
  30. package/dist/core/utils/bundle-matching.utils.d.ts.map +1 -1
  31. package/dist/core/utils/index.d.ts +1 -1
  32. package/dist/core/utils/index.d.ts.map +1 -1
  33. package/dist/core/utils/index.js +1 -1
  34. package/dist/core/utils/logger.utils.d.ts.map +1 -1
  35. package/dist/core/utils/logger.utils.js +1 -0
  36. package/dist/core/utils/partial-validation.utils.js +2 -2
  37. package/dist/core/utils/paths.utils.d.ts +18 -0
  38. package/dist/core/utils/paths.utils.d.ts.map +1 -1
  39. package/dist/core/utils/paths.utils.js +23 -0
  40. package/dist/core/utils/tailwind-inventory.utils.d.ts +1 -16
  41. package/dist/core/utils/tailwind-inventory.utils.d.ts.map +1 -1
  42. package/dist/core/utils/tailwind-inventory.utils.js +35 -3
  43. package/dist/core/utils/typescript.utils.d.ts +13 -0
  44. package/dist/core/utils/typescript.utils.d.ts.map +1 -1
  45. package/dist/core/utils/typescript.utils.js +82 -3
  46. package/dist/env.d.ts +45 -0
  47. package/dist/env.d.ts.map +1 -1
  48. package/dist/env.js +51 -0
  49. package/dist/index.d.ts +2 -2
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +2 -2
  52. package/dist/metrics/index.d.ts +1 -1
  53. package/dist/metrics/index.d.ts.map +1 -1
  54. package/dist/metrics/index.js +2 -0
  55. package/dist/metrics/recorder.d.ts.map +1 -1
  56. package/dist/metrics/types.d.ts +31 -0
  57. package/dist/metrics/types.d.ts.map +1 -1
  58. package/dist/metrics/utils/html-report.utils.d.ts +24 -0
  59. package/dist/metrics/utils/html-report.utils.d.ts.map +1 -0
  60. package/dist/metrics/utils/html-report.utils.js +1547 -0
  61. package/dist/metrics/utils/index.d.ts +1 -0
  62. package/dist/metrics/utils/index.d.ts.map +1 -1
  63. package/dist/metrics/utils/index.js +2 -0
  64. package/dist/metrics/utils/writer.utils.d.ts +6 -2
  65. package/dist/metrics/utils/writer.utils.d.ts.map +1 -1
  66. package/dist/metrics/utils/writer.utils.js +20 -4
  67. package/dist/search/generator.d.ts +1 -9
  68. package/dist/search/generator.d.ts.map +1 -1
  69. package/dist/search/generator.js +26 -2
  70. package/dist/seo/generator.d.ts.map +1 -1
  71. package/dist/seo/generator.js +1 -0
  72. package/dist/seo/utils/escape-and-validation.utils.d.ts.map +1 -1
  73. package/dist/seo/utils/escape-and-validation.utils.js +1 -16
  74. package/dist/types/logging.d.ts +31 -12
  75. package/dist/types/logging.d.ts.map +1 -1
  76. package/package.json +1 -1
@@ -6,4 +6,5 @@
6
6
  export { isCI, getGitCommit, getGitBranch, getCpuCount, getPlatform, getArch, getMemoryUsage, getNodeVersion, } from './system.utils.js';
7
7
  export { DEFAULT_METRICS_DIR, generateMetricsFilename, writeMetrics } from './writer.utils.js';
8
8
  export type { WriteMetricsOptions, WriteMetricsResult } from './writer.utils.js';
9
+ export { generateMetricsHtml, writeMetricsHtml } from './html-report.utils.js';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/metrics/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,OAAO,EACP,cAAc,EACd,cAAc,GACf,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE/F,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/metrics/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,OAAO,EACP,cAAc,EACd,cAAc,GACf,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE/F,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGjF,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -7,3 +7,5 @@
7
7
  export { isCI, getGitCommit, getGitBranch, getCpuCount, getPlatform, getArch, getMemoryUsage, getNodeVersion, } from './system.utils.js';
8
8
  // Writer utilities
9
9
  export { DEFAULT_METRICS_DIR, generateMetricsFilename, writeMetrics } from './writer.utils.js';
10
+ // HTML report utilities
11
+ export { generateMetricsHtml, writeMetricsHtml } from './html-report.utils.js';
@@ -25,6 +25,8 @@ export interface WriteMetricsOptions {
25
25
  outputPath?: string | undefined;
26
26
  /** Format: json (default) or ndjson */
27
27
  format?: 'json' | 'ndjson' | undefined;
28
+ /** Whether to also generate an HTML report (default: false, requires --metrics-html flag) */
29
+ generateHtml?: boolean | undefined;
28
30
  }
29
31
  /**
30
32
  * Result of metrics write operation.
@@ -32,15 +34,16 @@ export interface WriteMetricsOptions {
32
34
  export interface WriteMetricsResult {
33
35
  success: boolean;
34
36
  path?: string;
37
+ htmlPath?: string;
35
38
  error?: string;
36
39
  }
37
40
  /**
38
- * Write build metrics to a JSON file.
41
+ * Write build metrics to a JSON file and optionally an HTML report.
39
42
  * Degrades gracefully on failure - logs warning but doesn't throw.
40
43
  *
41
44
  * @param metrics - The metrics to write
42
45
  * @param options - Write options
43
- * @returns Result indicating success/failure and path
46
+ * @returns Result indicating success/failure and paths
44
47
  *
45
48
  * @example
46
49
  * ```typescript
@@ -50,6 +53,7 @@ export interface WriteMetricsResult {
50
53
  *
51
54
  * if (result.success) {
52
55
  * console.log(`Metrics written to ${result.path}`);
56
+ * console.log(`HTML report: ${result.htmlPath}`);
53
57
  * }
54
58
  * ```
55
59
  */
@@ -1 +1 @@
1
- {"version":3,"file":"writer.utils.d.ts","sourceRoot":"","sources":["../../../src/metrics/utils/writer.utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAIlF;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CA2C7B"}
1
+ {"version":3,"file":"writer.utils.d.ts","sourceRoot":"","sources":["../../../src/metrics/utils/writer.utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD;;GAEG;AACH,eAAO,MAAM,mBAAmB,YAAY,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAIlF;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvC,6FAA6F;IAC7F,YAAY,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CA0D7B"}
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { writeFile, mkdir } from 'node:fs/promises';
6
6
  import { join, dirname } from 'node:path';
7
+ import { generateMetricsHtml } from './html-report.utils.js';
7
8
  /**
8
9
  * Default metrics output directory (relative to cache dir).
9
10
  */
@@ -21,12 +22,12 @@ export function generateMetricsFilename(command, timestamp) {
21
22
  return `${command}-${safeTimestamp}.json`;
22
23
  }
23
24
  /**
24
- * Write build metrics to a JSON file.
25
+ * Write build metrics to a JSON file and optionally an HTML report.
25
26
  * Degrades gracefully on failure - logs warning but doesn't throw.
26
27
  *
27
28
  * @param metrics - The metrics to write
28
29
  * @param options - Write options
29
- * @returns Result indicating success/failure and path
30
+ * @returns Result indicating success/failure and paths
30
31
  *
31
32
  * @example
32
33
  * ```typescript
@@ -36,6 +37,7 @@ export function generateMetricsFilename(command, timestamp) {
36
37
  *
37
38
  * if (result.success) {
38
39
  * console.log(`Metrics written to ${result.path}`);
40
+ * console.log(`HTML report: ${result.htmlPath}`);
39
41
  * }
40
42
  * ```
41
43
  */
@@ -64,12 +66,26 @@ export async function writeMetrics(metrics, options) {
64
66
  // JSON: pretty printed for readability
65
67
  content = JSON.stringify(metrics, null, 2) + '\n';
66
68
  }
67
- // Write file
69
+ // Write JSON file
68
70
  await writeFile(outputPath, content, 'utf-8');
69
- return {
71
+ const result = {
70
72
  success: true,
71
73
  path: outputPath,
72
74
  };
75
+ // Generate HTML report if explicitly enabled
76
+ const shouldGenerateHtml = options.generateHtml === true;
77
+ if (shouldGenerateHtml) {
78
+ try {
79
+ const htmlPath = outputPath.replace(/\.json$/, '.html');
80
+ const htmlContent = generateMetricsHtml(metrics);
81
+ await writeFile(htmlPath, htmlContent, 'utf-8');
82
+ result.htmlPath = htmlPath;
83
+ }
84
+ catch {
85
+ // HTML generation failure is non-critical, don't fail the whole operation
86
+ }
87
+ }
88
+ return result;
73
89
  }
74
90
  catch (error) {
75
91
  // Graceful degradation - don't throw, just report failure
@@ -70,15 +70,7 @@ export interface SearchablePage {
70
70
  * @returns SearchIndex object
71
71
  */
72
72
  export declare function generateSearchIndex(searchablePages: SearchablePage[], config: SearchConfig): SearchIndex;
73
- /**
74
- * Writes the search index to a JSON file.
75
- *
76
- * @param searchIndex - The search index to write
77
- * @param outDir - Output directory path
78
- * @param filename - Pre-computed filename (from computeSearchIndexFilename)
79
- * @returns Metadata about the written search index
80
- */
81
- export declare function writeSearchIndex(searchIndex: SearchIndex, outDir: string, filename: string): Promise<SearchIndexMetadata>;
73
+ export declare function writeSearchIndex(searchIndex: SearchIndex, outDir: string, filename: string, skipIfUnchanged?: boolean): Promise<SearchIndexMetadata>;
82
74
  /**
83
75
  * Computes the search index filename based on configuration.
84
76
  * When hashFilename is true, generates a deterministic hash based on the build ID.
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/search/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,WAAW,EACX,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAuBtE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA0CtD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,QAAQ,EAAE,EACf,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACnC,MAAM,EAAE,YAAY,GACnB,cAAc,EAAE,CAiGlB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAsBhF;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,IAAI,EAAE,SAAS,CAAC;IAChB,oEAAoE;IACpE,GAAG,EAAE,QAAQ,EAAE,CAAC;IAChB,kDAAkD;IAClD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,cAAc,EAAE,EACjC,MAAM,EAAE,YAAY,GACnB,WAAW,CA6Bb;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,CAAC,CAgB9B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAczF"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/search/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,WAAW,EACX,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAE5B;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAuBtE;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA0CtD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,QAAQ,EAAE,EACf,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACnC,MAAM,EAAE,YAAY,GACnB,cAAc,EAAE,CAiGlB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAsBhF;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,mCAAmC;IACnC,IAAI,EAAE,SAAS,CAAC;IAChB,oEAAoE;IACpE,GAAG,EAAE,QAAQ,EAAE,CAAC;IAChB,kDAAkD;IAClD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,eAAe,EAAE,cAAc,EAAE,EACjC,MAAM,EAAE,YAAY,GACnB,WAAW,CA6Bb;AAiBD,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,eAAe,UAAQ,GACtB,OAAO,CAAC,mBAAmB,CAAC,CAqC9B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAczF"}
@@ -225,15 +225,39 @@ export function generateSearchIndex(searchablePages, config) {
225
225
  }
226
226
  /**
227
227
  * Writes the search index to a JSON file.
228
+ * Skips write if content hasn't changed (dev mode optimization).
228
229
  *
229
230
  * @param searchIndex - The search index to write
230
231
  * @param outDir - Output directory path
231
232
  * @param filename - Pre-computed filename (from computeSearchIndexFilename)
233
+ * @param skipIfUnchanged - If true, skip write when document count matches previous
232
234
  * @returns Metadata about the written search index
233
235
  */
234
- export async function writeSearchIndex(searchIndex, outDir, filename) {
235
- // Serialize index
236
+ // Cache for search index state (dev mode optimization)
237
+ let lastSearchIndexDocCount = null;
238
+ let lastSearchIndexContentHash = null;
239
+ export async function writeSearchIndex(searchIndex, outDir, filename, skipIfUnchanged = false) {
240
+ // Serialize full index for hash computation and potential write
236
241
  const content = JSON.stringify(searchIndex, null, 0);
242
+ // Skip write if content hash hasn't changed (dev mode optimization)
243
+ // Uses fast MD5 hash to detect actual content changes, not just count
244
+ if (skipIfUnchanged && lastSearchIndexDocCount === searchIndex.documentCount) {
245
+ const contentHash = generateContentHash(content);
246
+ if (contentHash === lastSearchIndexContentHash) {
247
+ return {
248
+ enabled: true,
249
+ indexPath: `/${filename}`,
250
+ documentCount: searchIndex.documentCount,
251
+ };
252
+ }
253
+ // Count matched but content changed - update hash and proceed to write
254
+ lastSearchIndexContentHash = contentHash;
255
+ }
256
+ // Update cached state
257
+ lastSearchIndexDocCount = searchIndex.documentCount;
258
+ if (skipIfUnchanged && !lastSearchIndexContentHash) {
259
+ lastSearchIndexContentHash = generateContentHash(content);
260
+ }
237
261
  // Ensure output directory exists
238
262
  await ensureDir(outDir);
239
263
  // Write the file
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/seo/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAS7C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAsH3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,EAAE,CAyE/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,EAAE,CAuDjE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE;IACP,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,EACD,IAAI,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,GAChC,MAAM,CA6CR"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/seo/generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAS7C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAsH3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,EAAE,CAyE/D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,EAAE,CAuDjE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE;IACP,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,EACD,IAAI,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,GAChC,MAAM,CA8CR"}
@@ -303,6 +303,7 @@ export function generateSEO(context, tags) {
303
303
  success: () => { },
304
304
  warning: () => { },
305
305
  error: () => { },
306
+ status: () => { },
306
307
  building: () => { },
307
308
  processing: () => { },
308
309
  stats: () => { },
@@ -1 +1 @@
1
- {"version":3,"file":"escape-and-validation.utils.d.ts","sourceRoot":"","sources":["../../../src/seo/utils/escape-and-validation.utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AASrD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA4B/C;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAU,EACjB,QAAQ,GAAE,MAAW,GACpB,OAAO,CA0CT;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAiD9D;AAiBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAwE3F;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,CAuCnE"}
1
+ {"version":3,"file":"escape-and-validation.utils.d.ts","sourceRoot":"","sources":["../../../src/seo/utils/escape-and-validation.utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAUrD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA4B/C;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAU,EACjB,QAAQ,GAAE,MAAW,GACpB,OAAO,CA0CT;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAiD9D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAwE3F;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,CAuCnE"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * SEO utility functions for HTML escaping, validation, and tag detection
3
3
  */
4
- import { URL } from 'node:url';
5
4
  import { SEOTagType as SEOTagTypeEnum } from '../../types/seo.js';
5
+ import { isValidUrl } from './url.utils.js';
6
6
  /**
7
7
  * HTML escape cache for performance optimization.
8
8
  * Stores up to 1000 frequently used strings to avoid repeated escaping.
@@ -171,21 +171,6 @@ export function generateRobotsContent(seo) {
171
171
  }
172
172
  return directives.length > 0 ? directives.join(', ') : '';
173
173
  }
174
- /**
175
- * Validate URL format (http or https only).
176
- *
177
- * @param url - The URL to validate
178
- * @returns True if the URL is valid
179
- */
180
- function isValidUrl(url) {
181
- try {
182
- const parsed = new URL(url);
183
- return parsed.protocol === 'http:' || parsed.protocol === 'https:';
184
- }
185
- catch {
186
- return false;
187
- }
188
- }
189
174
  /**
190
175
  * Validate SEO metadata before processing.
191
176
  * Checks for common issues like invalid URLs, improper lengths, and malformed data.
@@ -7,7 +7,7 @@
7
7
  * file operations, statistics display, and advanced tree-based rendering visualization.
8
8
  *
9
9
  * Core Methods (Required):
10
- * - Basic logging: info, success, warning, error
10
+ * - Basic logging: info, success, warning, error, status
11
11
  * - Build progress: building, processing, stats
12
12
  *
13
13
  * Enhanced Methods (Optional):
@@ -19,13 +19,14 @@
19
19
  * @example Basic Logger Implementation
20
20
  * ```typescript
21
21
  * const basicLogger: Logger = {
22
- * info: (msg) => console.log('\x1b[38;2;37;99;235mℹ️ ' + msg + '\x1b[0m'),
23
- * success: (msg) => console.log('\x1b[38;2;22;163;74m✅ ' + msg + '\x1b[0m'),
24
- * warning: (msg) => console.warn('\x1b[38;2;217;119;6m⚠️ ' + msg + '\x1b[0m'),
25
- * error: (msg) => console.error('\x1b[38;2;220;38;38m❌ ' + msg + '\x1b[0m'),
26
- * building: (msg) => console.log('\x1b[38;2;79;70;229m' + msg + '\x1b[0m'),
27
- * processing: (msg) => console.log('\x1b[38;2;107;114;128m ' + msg + '\x1b[0m'),
28
- * stats: (msg) => console.log('\x1b[38;2;8;145;178m📊 ' + msg + '\x1b[0m')
22
+ * info: (msg) => console.log('\x1b[38;2;56;189;248m• ' + msg + '\x1b[0m'),
23
+ * success: (msg) => console.log('\x1b[38;2;34;197;94m✓ ' + msg + '\x1b[0m'),
24
+ * warning: (msg) => console.warn('\x1b[38;2;245;158;11m! ' + msg + '\x1b[0m'),
25
+ * error: (msg) => console.error('\x1b[38;2;239;68;68m× ' + msg + '\x1b[0m'),
26
+ * status: (msg) => console.log('\x1b[38;2;56;189;248m▸ ' + msg + '\x1b[0m'),
27
+ * building: (msg) => console.log('\x1b[38;2;56;189;248m' + msg + '\x1b[0m'),
28
+ * processing: (msg) => console.log('\x1b[38;2;148;163;184m ' + msg + '\x1b[0m'),
29
+ * stats: (msg) => console.log('\x1b[38;2;186;230;253m• ' + msg + '\x1b[0m')
29
30
  * };
30
31
  * ```
31
32
  *
@@ -36,9 +37,9 @@
36
37
  * header: (msg) => console.log(boxedMessage(msg)),
37
38
  * step: (step, total, msg) => console.log(`[${step}/${total}] ${msg}`),
38
39
  * progress: (current, total, msg) => console.log(progressBar(current, total) + ' ' + msg),
39
- * file: (op, path) => console.log(` 📄 ${op} ${path}`),
40
- * url: (label, url) => console.log(` 🔗 ${label}: ${url}`),
41
- * timing: (op, duration) => console.log(` ⏱️ ${op} completed in ${duration}ms`),
40
+ * file: (op, path) => console.log(` + ${op} ${path}`),
41
+ * url: (label, url) => console.log(` ${label}: ${url}`),
42
+ * timing: (op, duration) => console.log(` ${op} completed in ${duration}ms`),
42
43
  * divider: (title) => console.log('─'.repeat(50) + ' ' + title),
43
44
  * statsTable: (stats) => displayStatsTable(stats),
44
45
  * startRenderingTree: (label) => initTree(label),
@@ -58,6 +59,8 @@ export interface Logger {
58
59
  warning: (message: string) => void;
59
60
  /** Log error messages */
60
61
  error: (message: string) => void;
62
+ /** Log status/meta messages with status indicator */
63
+ status: (message: string) => void;
61
64
  /** Log build progress messages */
62
65
  building: (message: string) => void;
63
66
  /** Log file processing messages */
@@ -71,7 +74,7 @@ export interface Logger {
71
74
  /** Display progress with a bar (optional) */
72
75
  progress?: (current: number, total: number, message: string) => void;
73
76
  /** Log file operations (optional) */
74
- file?: (operation: string, path: string) => void;
77
+ file?: (operation: string, path: string, sizeInBytes?: number) => void;
75
78
  /** Log URLs with proper styling (optional) */
76
79
  url?: (label: string, url: string) => void;
77
80
  /** Log timing information (optional) */
@@ -109,5 +112,21 @@ export interface Logger {
109
112
  showRenderingTree?: () => void;
110
113
  /** Clear the rendering tree (optional) */
111
114
  clearRenderingTree?: () => void;
115
+ /** Initialize progress tracking for page rendering (optional) */
116
+ startProgress?: (totalPages: number) => void;
117
+ /**
118
+ * Update progress during page rendering (optional)
119
+ * @param status - 'cached' | 'rendered' | 'error'
120
+ * @param url - The URL of the page being processed
121
+ * @param timing - Render time in milliseconds (for rendered pages)
122
+ */
123
+ updateProgress?: (status: 'cached' | 'rendered' | 'error', url: string, timing?: number) => void;
124
+ /** End progress tracking and prepare for summary (optional) */
125
+ endProgress?: () => void;
126
+ /**
127
+ * Display a summary of the rendering process (optional)
128
+ * Shows cached/rendered counts, slowest pages, and cache hit rate
129
+ */
130
+ showRenderingSummary?: () => void;
112
131
  }
113
132
  //# sourceMappingURL=logging.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/types/logging.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../../src/types/logging.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stati/core",
3
- "version": "1.20.3",
3
+ "version": "1.22.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",