@staticforge/build 0.0.0-stage → 0.1.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 (60) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +6 -2
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/build.d.ts +75 -0
  5. package/dist/build.d.ts.map +1 -0
  6. package/dist/build.js +692 -0
  7. package/dist/build.js.map +1 -0
  8. package/dist/cache.d.ts +64 -0
  9. package/dist/cache.d.ts.map +1 -0
  10. package/dist/cache.js +97 -0
  11. package/dist/cache.js.map +1 -0
  12. package/dist/code-assets.d.ts +36 -0
  13. package/dist/code-assets.d.ts.map +1 -0
  14. package/dist/code-assets.js +61 -0
  15. package/dist/code-assets.js.map +1 -0
  16. package/dist/data.d.ts +8 -0
  17. package/dist/data.d.ts.map +1 -0
  18. package/dist/data.js +43 -0
  19. package/dist/data.js.map +1 -0
  20. package/dist/feeds.d.ts +33 -0
  21. package/dist/feeds.d.ts.map +1 -0
  22. package/dist/feeds.js +120 -0
  23. package/dist/feeds.js.map +1 -0
  24. package/dist/html.d.ts +14 -0
  25. package/dist/html.d.ts.map +1 -0
  26. package/dist/html.js +31 -0
  27. package/dist/html.js.map +1 -0
  28. package/dist/images.d.ts +22 -0
  29. package/dist/images.d.ts.map +1 -0
  30. package/dist/images.js +95 -0
  31. package/dist/images.js.map +1 -0
  32. package/dist/index.d.ts +8 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +8 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/nav.d.ts +15 -0
  37. package/dist/nav.d.ts.map +1 -0
  38. package/dist/nav.js +19 -0
  39. package/dist/nav.js.map +1 -0
  40. package/dist/project.d.ts +31 -0
  41. package/dist/project.d.ts.map +1 -0
  42. package/dist/project.js +74 -0
  43. package/dist/project.js.map +1 -0
  44. package/dist/routes.d.ts +42 -0
  45. package/dist/routes.d.ts.map +1 -0
  46. package/dist/routes.js +106 -0
  47. package/dist/routes.js.map +1 -0
  48. package/dist/scaffold.d.ts +46 -0
  49. package/dist/scaffold.d.ts.map +1 -0
  50. package/dist/scaffold.js +163 -0
  51. package/dist/scaffold.js.map +1 -0
  52. package/dist/site.d.ts +47 -0
  53. package/dist/site.d.ts.map +1 -0
  54. package/dist/site.js +107 -0
  55. package/dist/site.js.map +1 -0
  56. package/dist/tasks.d.ts +86 -0
  57. package/dist/tasks.d.ts.map +1 -0
  58. package/dist/tasks.js +103 -0
  59. package/dist/tasks.js.map +1 -0
  60. package/package.json +48 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { PreparedSource } from '@staticforge/content';
2
+ import type { ParseResult } from './tasks.js';
3
+ /** SHA-256 of the parts, separated so ("ab", "c") and ("a", "bc") differ. */
4
+ export declare function hashOf(...parts: string[]): string;
5
+ /** JSON for hashing: Maps and Sets as sorted entries. */
6
+ export declare function stableJson(value: unknown): string;
7
+ /**
8
+ * Results by key, kept for one build: entries a build does not use are
9
+ * dropped when it finishes, so the cache never outgrows the site.
10
+ */
11
+ export declare class Memo<V> {
12
+ private current;
13
+ private next;
14
+ get(key: string): V | undefined;
15
+ set(key: string, value: V): void;
16
+ /** Start a build: forget what an unfinished one collected. */
17
+ begin(): void;
18
+ /** Finish a build: keep only what it used. */
19
+ commit(): void;
20
+ get size(): number;
21
+ }
22
+ /**
23
+ * Results for `items`, from `memo` where it has them; the rest are computed in
24
+ * one call (in item order) and kept when `keep` allows.
25
+ */
26
+ export declare function memoized<I, R>(items: I[], memo: Memo<R> | undefined, keyOf: (item: I) => string, compute: (missing: I[]) => Promise<R[]>, keep: (result: R) => boolean): Promise<{
27
+ results: R[];
28
+ computed: number;
29
+ }>;
30
+ /** A copied file of a build, recognized by its source's size and modification time. */
31
+ export interface CopyRecord {
32
+ source: string;
33
+ size: number;
34
+ mtimeMs: number;
35
+ sha256: string;
36
+ }
37
+ /**
38
+ * State kept between builds of the same project (`sforge dev`), so a rebuild
39
+ * only parses and renders what changed. Every key covers all inputs of its
40
+ * result, so the cache cannot serve stale output; it only saves work.
41
+ */
42
+ export declare class BuildCache {
43
+ /** Template variable `build.time`: fixed, so unchanged pages stay identical. */
44
+ readonly time: Date;
45
+ readonly prepared: Memo<PreparedSource>;
46
+ /** Parse results without trees, by source and the page/output sets they resolve against. */
47
+ readonly parsed: Memo<ParseResult>;
48
+ /** Finished page HTML by everything that went into rendering it. */
49
+ readonly rendered: Memo<string>;
50
+ /** The last build, whose unchanged files the next one hard-links. */
51
+ previous: {
52
+ outDir: string;
53
+ copies: Map<string, CopyRecord>;
54
+ } | undefined;
55
+ /** What the last build did: pages parsed and rendered, files linked. */
56
+ stats: {
57
+ parsed: number;
58
+ rendered: number;
59
+ linked: number;
60
+ };
61
+ begin(): void;
62
+ commit(previous: BuildCache['previous']): void;
63
+ }
64
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,6EAA6E;AAC7E,wBAAgB,MAAM,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAIjD;AAED,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMjD;AAED;;;GAGG;AACH,qBAAa,IAAI,CAAC,CAAC;IACjB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,IAAI,CAAwB;IAEpC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAM/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAIhC,8DAA8D;IAC9D,KAAK,IAAI,IAAI;IAIb,8CAA8C;IAC9C,MAAM,IAAI,IAAI;IAKd,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAAE,CAAC,EACjC,KAAK,EAAE,CAAC,EAAE,EACV,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,EACzB,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAC1B,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC,EACvC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,GAC3B,OAAO,CAAC;IAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAY7C;AAED,uFAAuF;AACvF,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,qBAAa,UAAU;IACrB,gFAAgF;IAChF,QAAQ,CAAC,IAAI,OAAc;IAC3B,QAAQ,CAAC,QAAQ,uBAA8B;IAC/C,4FAA4F;IAC5F,QAAQ,CAAC,MAAM,oBAA2B;IAC1C,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,eAAsB;IACvC,qEAAqE;IACrE,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;KAAE,GAAG,SAAS,CAAC;IAC1E,wEAAwE;IACxE,KAAK;;;;MAAyC;IAE9C,KAAK,IAAI,IAAI;IAOb,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,GAAG,IAAI;CAM/C"}
package/dist/cache.js ADDED
@@ -0,0 +1,97 @@
1
+ import { createHash } from 'node:crypto';
2
+ /** SHA-256 of the parts, separated so ("ab", "c") and ("a", "bc") differ. */
3
+ export function hashOf(...parts) {
4
+ const hash = createHash('sha256');
5
+ for (const part of parts)
6
+ hash.update(part).update('\0');
7
+ return hash.digest('hex');
8
+ }
9
+ /** JSON for hashing: Maps and Sets as sorted entries. */
10
+ export function stableJson(value) {
11
+ return JSON.stringify(value, (_key, v) => {
12
+ if (v instanceof Map)
13
+ return [...v].sort(([a], [b]) => String(a).localeCompare(String(b)));
14
+ if (v instanceof Set)
15
+ return [...v].sort();
16
+ return v;
17
+ });
18
+ }
19
+ /**
20
+ * Results by key, kept for one build: entries a build does not use are
21
+ * dropped when it finishes, so the cache never outgrows the site.
22
+ */
23
+ export class Memo {
24
+ current = new Map();
25
+ next = new Map();
26
+ get(key) {
27
+ const value = this.current.get(key) ?? this.next.get(key);
28
+ if (value !== undefined)
29
+ this.next.set(key, value);
30
+ return value;
31
+ }
32
+ set(key, value) {
33
+ this.next.set(key, value);
34
+ }
35
+ /** Start a build: forget what an unfinished one collected. */
36
+ begin() {
37
+ this.next = new Map();
38
+ }
39
+ /** Finish a build: keep only what it used. */
40
+ commit() {
41
+ this.current = this.next;
42
+ this.next = new Map();
43
+ }
44
+ get size() {
45
+ return this.current.size;
46
+ }
47
+ }
48
+ /**
49
+ * Results for `items`, from `memo` where it has them; the rest are computed in
50
+ * one call (in item order) and kept when `keep` allows.
51
+ */
52
+ export async function memoized(items, memo, keyOf, compute, keep) {
53
+ if (memo === undefined)
54
+ return { results: await compute(items), computed: items.length };
55
+ const keys = items.map(keyOf);
56
+ const results = keys.map((key) => memo.get(key));
57
+ const missing = results.flatMap((result, i) => (result === undefined ? [i] : []));
58
+ const computed = await compute(missing.map((i) => items[i]));
59
+ for (const [j, i] of missing.entries()) {
60
+ const result = computed[j];
61
+ results[i] = result;
62
+ if (keep(result))
63
+ memo.set(keys[i], result);
64
+ }
65
+ return { results: results, computed: missing.length };
66
+ }
67
+ /**
68
+ * State kept between builds of the same project (`sforge dev`), so a rebuild
69
+ * only parses and renders what changed. Every key covers all inputs of its
70
+ * result, so the cache cannot serve stale output; it only saves work.
71
+ */
72
+ export class BuildCache {
73
+ /** Template variable `build.time`: fixed, so unchanged pages stay identical. */
74
+ time = new Date();
75
+ prepared = new Memo();
76
+ /** Parse results without trees, by source and the page/output sets they resolve against. */
77
+ parsed = new Memo();
78
+ /** Finished page HTML by everything that went into rendering it. */
79
+ rendered = new Memo();
80
+ /** The last build, whose unchanged files the next one hard-links. */
81
+ previous;
82
+ /** What the last build did: pages parsed and rendered, files linked. */
83
+ stats = { parsed: 0, rendered: 0, linked: 0 };
84
+ begin() {
85
+ this.prepared.begin();
86
+ this.parsed.begin();
87
+ this.rendered.begin();
88
+ this.stats = { parsed: 0, rendered: 0, linked: 0 };
89
+ }
90
+ commit(previous) {
91
+ this.prepared.commit();
92
+ this.parsed.commit();
93
+ this.rendered.commit();
94
+ this.previous = previous;
95
+ }
96
+ }
97
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { Diagnostic } from '@staticforge/core';
2
+ export interface CodeInput {
3
+ /** Absolute source file. */
4
+ source: string;
5
+ /** Output path, POSIX-relative to the build directory. */
6
+ output: string;
7
+ /** Project-relative label for diagnostics. */
8
+ label: string;
9
+ }
10
+ export interface CodeOutput {
11
+ output: string;
12
+ contents: Buffer;
13
+ /** Fingerprinted files never change, so they can be cached forever. */
14
+ immutable: boolean;
15
+ }
16
+ export declare const CODE: RegExp;
17
+ /**
18
+ * Bundle stylesheets (lightningcss) and scripts (esbuild). Each file is
19
+ * written, processed, under its own name (`.ts` as `.js`) and, with
20
+ * `fingerprint`, also under a content-hashed name that references are
21
+ * rewritten to. The hashed file stays in the same directory, so relative
22
+ * `url()`s keep working.
23
+ *
24
+ * @returns The files to write and the URL each source URL now maps to.
25
+ */
26
+ export declare function processCode(inputs: CodeInput[], options: {
27
+ minify: boolean;
28
+ fingerprint: boolean;
29
+ }): Promise<{
30
+ outputs: CodeOutput[];
31
+ urls: Map<string, string>;
32
+ diagnostics: Diagnostic[];
33
+ }>;
34
+ /** Whether a copied file is processed as code rather than copied verbatim. */
35
+ export declare const isCode: (output: string) => boolean;
36
+ //# sourceMappingURL=code-assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-assets.d.ts","sourceRoot":"","sources":["../src/code-assets.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,WAAW,SAAS;IACxB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,IAAI,QAA4B,CAAC;AAG9C;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,SAAS,EAAE,EACnB,OAAO,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,GACjD,OAAO,CAAC;IAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,WAAW,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC,CA8C1F;AAED,8EAA8E;AAC9E,eAAO,MAAM,MAAM,GAAI,QAAQ,MAAM,KAAG,OAA4C,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { posix } from 'node:path';
2
+ import { bundleScript, bundleStyle, fingerprint } from '@staticforge/assets';
3
+ export const CODE = /\.(css|js|mjs|ts|mts)$/i;
4
+ const TYPESCRIPT = /\.m?ts$/i;
5
+ /**
6
+ * Bundle stylesheets (lightningcss) and scripts (esbuild). Each file is
7
+ * written, processed, under its own name (`.ts` as `.js`) and, with
8
+ * `fingerprint`, also under a content-hashed name that references are
9
+ * rewritten to. The hashed file stays in the same directory, so relative
10
+ * `url()`s keep working.
11
+ *
12
+ * @returns The files to write and the URL each source URL now maps to.
13
+ */
14
+ export async function processCode(inputs, options) {
15
+ const outputs = [];
16
+ const urls = new Map();
17
+ const diagnostics = [];
18
+ await Promise.all(inputs.map(async (input) => {
19
+ const isStyle = input.output.toLowerCase().endsWith('.css');
20
+ let result;
21
+ try {
22
+ result = isStyle
23
+ ? await bundleStyle(input.source, { minify: options.minify })
24
+ : await bundleScript(input.source, { minify: options.minify });
25
+ }
26
+ catch (error) {
27
+ diagnostics.push({
28
+ ruleId: 'asset-failed',
29
+ severity: 'error',
30
+ message: `Could not process ${input.label}: ${error instanceof Error ? error.message : String(error)}`,
31
+ file: input.label,
32
+ });
33
+ return;
34
+ }
35
+ for (const warning of result.warnings) {
36
+ diagnostics.push({
37
+ ruleId: 'asset-warning',
38
+ severity: 'warning',
39
+ message: warning,
40
+ file: input.label,
41
+ });
42
+ }
43
+ const plain = TYPESCRIPT.test(input.output)
44
+ ? input.output.replace(TYPESCRIPT, '.js')
45
+ : input.output;
46
+ outputs.push({ output: plain, contents: result.contents, immutable: false });
47
+ let final = plain;
48
+ if (options.fingerprint) {
49
+ final = fingerprint(plain, result.contents);
50
+ outputs.push({ output: final, contents: result.contents, immutable: true });
51
+ }
52
+ urls.set(`/${input.output}`, `/${final}`);
53
+ if (plain !== input.output)
54
+ urls.set(`/${plain}`, `/${final}`);
55
+ }));
56
+ outputs.sort((a, b) => a.output.localeCompare(b.output));
57
+ return { outputs, urls, diagnostics };
58
+ }
59
+ /** Whether a copied file is processed as code rather than copied verbatim. */
60
+ export const isCode = (output) => CODE.test(posix.basename(output));
61
+ //# sourceMappingURL=code-assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-assets.js","sourceRoot":"","sources":["../src/code-assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAmB7E,MAAM,CAAC,MAAM,IAAI,GAAG,yBAAyB,CAAC;AAC9C,MAAM,UAAU,GAAG,UAAU,CAAC;AAE9B;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAmB,EACnB,OAAkD;IAElD,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,MAAM,WAAW,GAAiB,EAAE,CAAC;IAErC,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACzB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC;QACX,IAAI,CAAC;YACH,MAAM,GAAG,OAAO;gBACd,CAAC,CAAC,MAAM,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC7D,CAAC,CAAC,MAAM,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC;gBACf,MAAM,EAAE,cAAc;gBACtB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,qBAAqB,KAAK,CAAC,KAAK,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACtG,IAAI,EAAE,KAAK,CAAC,KAAK;aAClB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,WAAW,CAAC,IAAI,CAAC;gBACf,MAAM,EAAE,eAAe;gBACvB,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,KAAK,CAAC,KAAK;aAClB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACzC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;YACzC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7E,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC;QAC1C,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC,CAAC,CACH,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACzD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;AACxC,CAAC;AAED,8EAA8E;AAC9E,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,MAAc,EAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC"}
package/dist/data.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ import type { Diagnostic } from '@staticforge/core';
2
+ /**
3
+ * Load data/*.json|yaml|yml into an object keyed by file name, so
4
+ * `data/links.yaml` becomes `data.links` in templates. Nested directories
5
+ * become nested objects (`data/team/people.json` → `data.team.people`).
6
+ */
7
+ export declare function loadData(rootDir: string, diagnostics: Diagnostic[]): Record<string, unknown>;
8
+ //# sourceMappingURL=data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAmC5F"}
package/dist/data.js ADDED
@@ -0,0 +1,43 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { join, posix } from 'node:path';
3
+ import { parse as parseYaml } from 'yaml';
4
+ import { ProjectDirs, listFiles } from './project.js';
5
+ /**
6
+ * Load data/*.json|yaml|yml into an object keyed by file name, so
7
+ * `data/links.yaml` becomes `data.links` in templates. Nested directories
8
+ * become nested objects (`data/team/people.json` → `data.team.people`).
9
+ */
10
+ export function loadData(rootDir, diagnostics) {
11
+ const dir = join(rootDir, ProjectDirs.data);
12
+ const data = {};
13
+ for (const file of listFiles(dir)) {
14
+ const ext = posix.extname(file);
15
+ if (!['.json', '.yaml', '.yml'].includes(ext))
16
+ continue;
17
+ const projectPath = `${ProjectDirs.data}/${file}`;
18
+ let value;
19
+ try {
20
+ const text = readFileSync(join(dir, file), 'utf8');
21
+ value = ext === '.json' ? JSON.parse(text) : parseYaml(text);
22
+ }
23
+ catch (error) {
24
+ diagnostics.push({
25
+ ruleId: 'data-invalid',
26
+ severity: 'error',
27
+ message: `Cannot parse data file: ${error instanceof Error ? error.message : String(error)}`,
28
+ file: projectPath,
29
+ });
30
+ continue;
31
+ }
32
+ const keys = file.slice(0, -ext.length).split('/');
33
+ const name = keys.pop() ?? '';
34
+ let target = data;
35
+ for (const key of keys) {
36
+ const next = target[key];
37
+ target = (typeof next === 'object' && next !== null ? next : (target[key] = {}));
38
+ }
39
+ target[name] = value;
40
+ }
41
+ return data;
42
+ }
43
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEtD;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,WAAyB;IACjE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,GAA4B,EAAE,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAS;QACxD,MAAM,WAAW,GAAG,GAAG,WAAW,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;QAClD,IAAI,KAAc,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YACnD,KAAK,GAAG,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,WAAW,CAAC,IAAI,CAAC;gBACf,MAAM,EAAE,cAAc;gBACtB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBAC5F,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAC9B,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAG9E,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { PageSummary } from '@staticforge/render';
2
+ /** Make root-relative URLs in page HTML absolute, as feed readers need. */
3
+ export declare function absolutizeHtml(html: string, baseUrl: string): string;
4
+ export interface FeedOptions {
5
+ title: string;
6
+ description: string | undefined;
7
+ language: string;
8
+ author: string | undefined;
9
+ /** Absolute URL of the collection's list page. */
10
+ link: string;
11
+ /** Absolute URL of the feed itself. */
12
+ self: string;
13
+ items: {
14
+ page: PageSummary;
15
+ html: string | undefined;
16
+ }[];
17
+ /** Used when no item has a date. */
18
+ fallbackDate: Date;
19
+ generator: string;
20
+ }
21
+ /** Entries in a feed: the most recent ones. */
22
+ export declare const FEED_ITEMS = 20;
23
+ /** RSS 2.0, with the full content in content:encoded. */
24
+ export declare function rssFeed(options: FeedOptions): string;
25
+ /** Atom 1.0. Entries without a date use the feed's date, as Atom requires one. */
26
+ export declare function atomFeed(options: FeedOptions): string;
27
+ /** sitemap.xml (sitemaps.org protocol). */
28
+ export declare function sitemapXml(entries: {
29
+ url: string;
30
+ lastmod: Date | undefined;
31
+ }[]): string;
32
+ export declare function robotsTxt(sitemapUrl: string): string;
33
+ //# sourceMappingURL=feeds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feeds.d.ts","sourceRoot":"","sources":["../src/feeds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAWvD,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAepE;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,kDAAkD;IAClD,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,EAAE,CAAC;IACzD,oCAAoC;IACpC,YAAY,EAAE,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,+CAA+C;AAC/C,eAAO,MAAM,UAAU,KAAK,CAAC;AAU7B,yDAAyD;AACzD,wBAAgB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAiCpD;AAED,kFAAkF;AAClF,wBAAgB,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAwCrD;AAED,2CAA2C;AAC3C,wBAAgB,UAAU,CAAC,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,IAAI,GAAG,SAAS,CAAA;CAAE,EAAE,GAAG,MAAM,CAYxF;AAED,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpD"}
package/dist/feeds.js ADDED
@@ -0,0 +1,120 @@
1
+ const xml = (text) => text
2
+ .replace(/&/g, '&amp;')
3
+ .replace(/</g, '&lt;')
4
+ .replace(/>/g, '&gt;')
5
+ .replace(/"/g, '&quot;')
6
+ // eslint-disable-next-line no-control-regex
7
+ .replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F]/g, '');
8
+ /** Make root-relative URLs in page HTML absolute, as feed readers need. */
9
+ export function absolutizeHtml(html, baseUrl) {
10
+ const absolute = (url) => url.startsWith('/') && !url.startsWith('//') ? new URL(url, baseUrl).href : url;
11
+ return html
12
+ .replace(/(\s(?:href|src|poster)=")([^"]*)"/g, (_m, attr, url) => `${attr}${absolute(url)}"`)
13
+ .replace(/(\ssrcset=")([^"]*)"/g, (_m, attr, set) => {
14
+ const candidates = set.split(',').map((c) => {
15
+ const [url = '', ...descriptor] = c.trim().split(/\s+/);
16
+ return [absolute(url), ...descriptor].join(' ');
17
+ });
18
+ return `${attr}${candidates.join(', ')}"`;
19
+ });
20
+ }
21
+ /** Entries in a feed: the most recent ones. */
22
+ export const FEED_ITEMS = 20;
23
+ const newest = (options) => options.items.reduce((latest, { page }) => {
24
+ const date = page.updated ?? page.date;
25
+ return date !== undefined && (latest === undefined || date > latest) ? date : latest;
26
+ }, undefined) ?? options.fallbackDate;
27
+ const cdata = (text) => `<![CDATA[${text.replace(/]]>/g, ']]]]><![CDATA[>')}]]>`;
28
+ /** RSS 2.0, with the full content in content:encoded. */
29
+ export function rssFeed(options) {
30
+ const items = options.items.map(({ page, html }) => {
31
+ const lines = [
32
+ ' <item>',
33
+ ` <title>${xml(page.title)}</title>`,
34
+ ` <link>${xml(page.absoluteUrl)}</link>`,
35
+ ` <guid isPermaLink="true">${xml(page.absoluteUrl)}</guid>`,
36
+ page.date !== undefined ? ` <pubDate>${page.date.toUTCString()}</pubDate>` : undefined,
37
+ page.description !== undefined
38
+ ? ` <description>${xml(page.description)}</description>`
39
+ : undefined,
40
+ ...page.tags.map((tag) => ` <category>${xml(tag.name)}</category>`),
41
+ html !== undefined ? ` <content:encoded>${cdata(html)}</content:encoded>` : undefined,
42
+ ' </item>',
43
+ ];
44
+ return lines.filter((l) => l !== undefined).join('\n');
45
+ });
46
+ return [
47
+ '<?xml version="1.0" encoding="utf-8"?>',
48
+ '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">',
49
+ ' <channel>',
50
+ ` <title>${xml(options.title)}</title>`,
51
+ ` <link>${xml(options.link)}</link>`,
52
+ ` <description>${xml(options.description ?? options.title)}</description>`,
53
+ ` <language>${xml(options.language)}</language>`,
54
+ ` <lastBuildDate>${newest(options).toUTCString()}</lastBuildDate>`,
55
+ ` <generator>${xml(options.generator)}</generator>`,
56
+ ` <atom:link href="${xml(options.self)}" rel="self" type="application/rss+xml"/>`,
57
+ ...items,
58
+ ' </channel>',
59
+ '</rss>',
60
+ '',
61
+ ].join('\n');
62
+ }
63
+ /** Atom 1.0. Entries without a date use the feed's date, as Atom requires one. */
64
+ export function atomFeed(options) {
65
+ const updated = newest(options);
66
+ const entries = options.items.map(({ page, html }) => {
67
+ const lines = [
68
+ ' <entry>',
69
+ ` <title>${xml(page.title)}</title>`,
70
+ ` <link href="${xml(page.absoluteUrl)}"/>`,
71
+ ` <id>${xml(page.absoluteUrl)}</id>`,
72
+ ` <updated>${(page.updated ?? page.date ?? updated).toISOString()}</updated>`,
73
+ page.date !== undefined ? ` <published>${page.date.toISOString()}</published>` : undefined,
74
+ page.description !== undefined
75
+ ? ` <summary>${xml(page.description)}</summary>`
76
+ : undefined,
77
+ ...page.tags.map((tag) => ` <category term="${xml(tag.name)}"/>`),
78
+ html !== undefined ? ` <content type="html">${xml(html)}</content>` : undefined,
79
+ ' </entry>',
80
+ ];
81
+ return lines.filter((l) => l !== undefined).join('\n');
82
+ });
83
+ return [
84
+ '<?xml version="1.0" encoding="utf-8"?>',
85
+ `<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="${xml(options.language)}">`,
86
+ ` <title>${xml(options.title)}</title>`,
87
+ options.description !== undefined
88
+ ? ` <subtitle>${xml(options.description)}</subtitle>`
89
+ : undefined,
90
+ ` <link href="${xml(options.link)}"/>`,
91
+ ` <link href="${xml(options.self)}" rel="self" type="application/atom+xml"/>`,
92
+ ` <id>${xml(options.link)}</id>`,
93
+ ` <updated>${updated.toISOString()}</updated>`,
94
+ options.author !== undefined
95
+ ? ` <author><name>${xml(options.author)}</name></author>`
96
+ : undefined,
97
+ ` <generator>${xml(options.generator)}</generator>`,
98
+ ...entries,
99
+ '</feed>',
100
+ '',
101
+ ]
102
+ .filter((l) => l !== undefined)
103
+ .join('\n');
104
+ }
105
+ /** sitemap.xml (sitemaps.org protocol). */
106
+ export function sitemapXml(entries) {
107
+ return [
108
+ '<?xml version="1.0" encoding="utf-8"?>',
109
+ '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">',
110
+ ...entries.map(({ url, lastmod }) => lastmod !== undefined
111
+ ? ` <url><loc>${xml(url)}</loc><lastmod>${lastmod.toISOString().slice(0, 10)}</lastmod></url>`
112
+ : ` <url><loc>${xml(url)}</loc></url>`),
113
+ '</urlset>',
114
+ '',
115
+ ].join('\n');
116
+ }
117
+ export function robotsTxt(sitemapUrl) {
118
+ return `User-agent: *\nAllow: /\n\nSitemap: ${sitemapUrl}\n`;
119
+ }
120
+ //# sourceMappingURL=feeds.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feeds.js","sourceRoot":"","sources":["../src/feeds.ts"],"names":[],"mappings":"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"}
package/dist/html.d.ts ADDED
@@ -0,0 +1,14 @@
1
+ import type { Root } from 'hast';
2
+ export interface FinishOptions {
3
+ /** Final URL of an asset (its fingerprinted name), or the URL unchanged. */
4
+ assetUrl: (url: string) => string;
5
+ /** Collapse insignificant whitespace (never inside <pre>, <textarea> or inline content). */
6
+ minify: boolean;
7
+ }
8
+ /** Rewrite asset references and minify a page's tree in place. */
9
+ export declare function finishTree(tree: Root, options: FinishOptions): void;
10
+ /** The same, for an HTML fragment such as a page body in a feed. */
11
+ export declare function finishFragment(html: string, options: FinishOptions): string;
12
+ /** Rewrite asset references in, and minify, a rendered page. */
13
+ export declare function finishHtml(html: string, options: FinishOptions): string;
14
+ //# sourceMappingURL=html.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../src/html.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,MAAM,CAAC;AAM1C,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAClC,4FAA4F;IAC5F,MAAM,EAAE,OAAO,CAAC;CACjB;AAID,kEAAkE;AAClE,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAUnE;AAED,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAI3E;AAED,gEAAgE;AAChE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM,CAIvE"}