@stego-labs/engine 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -63
- package/dist/stego-engine/src/collections/index.d.ts +2 -2
- package/dist/stego-engine/src/collections/index.d.ts.map +1 -1
- package/dist/stego-engine/src/collections/index.js +1 -1
- package/dist/stego-engine/src/collections/index.js.map +1 -1
- package/dist/stego-engine/src/collections/internal/grouping.d.ts.map +1 -1
- package/dist/stego-engine/src/collections/internal/grouping.js +1 -17
- package/dist/stego-engine/src/collections/internal/grouping.js.map +1 -1
- package/dist/stego-engine/src/collections/internal/sorting.d.ts +2 -1
- package/dist/stego-engine/src/collections/internal/sorting.d.ts.map +1 -1
- package/dist/stego-engine/src/collections/public/types.d.ts +1 -10
- package/dist/stego-engine/src/collections/public/types.d.ts.map +1 -1
- package/dist/stego-engine/src/compile/internal/load-content.d.ts +7 -0
- package/dist/stego-engine/src/compile/internal/load-content.d.ts.map +1 -0
- package/dist/stego-engine/src/compile/internal/load-content.js +151 -0
- package/dist/stego-engine/src/compile/internal/load-content.js.map +1 -0
- package/dist/stego-engine/src/compile/public/buildTemplateContext.d.ts.map +1 -1
- package/dist/stego-engine/src/compile/public/buildTemplateContext.js +5 -12
- package/dist/stego-engine/src/compile/public/buildTemplateContext.js.map +1 -1
- package/dist/stego-engine/src/compile/public/compileProject.js +2 -2
- package/dist/stego-engine/src/compile/public/compileProject.js.map +1 -1
- package/dist/stego-engine/src/compile/public/types.d.ts +4 -4
- package/dist/stego-engine/src/compile/public/types.d.ts.map +1 -1
- package/dist/stego-engine/src/index.d.ts +5 -3
- package/dist/stego-engine/src/index.d.ts.map +1 -1
- package/dist/stego-engine/src/index.js +2 -1
- package/dist/stego-engine/src/index.js.map +1 -1
- package/dist/stego-engine/src/ir/index.d.ts +3 -0
- package/dist/stego-engine/src/ir/index.d.ts.map +1 -1
- package/dist/stego-engine/src/ir/index.js +3 -0
- package/dist/stego-engine/src/ir/index.js.map +1 -1
- package/dist/stego-engine/src/ir/nodes/heading.d.ts +2 -2
- package/dist/stego-engine/src/ir/nodes/heading.d.ts.map +1 -1
- package/dist/stego-engine/src/ir/nodes/heading.js.map +1 -1
- package/dist/stego-engine/src/ir/nodes/keep-together.d.ts +3 -0
- package/dist/stego-engine/src/ir/nodes/keep-together.d.ts.map +1 -0
- package/dist/stego-engine/src/ir/nodes/keep-together.js +7 -0
- package/dist/stego-engine/src/ir/nodes/keep-together.js.map +1 -0
- package/dist/stego-engine/src/ir/nodes/link.d.ts +6 -0
- package/dist/stego-engine/src/ir/nodes/link.d.ts.map +1 -0
- package/dist/stego-engine/src/ir/nodes/link.js +10 -0
- package/dist/stego-engine/src/ir/nodes/link.js.map +1 -0
- package/dist/stego-engine/src/ir/nodes/markdown.d.ts +7 -1
- package/dist/stego-engine/src/ir/nodes/markdown.d.ts.map +1 -1
- package/dist/stego-engine/src/ir/nodes/markdown.js +3 -2
- package/dist/stego-engine/src/ir/nodes/markdown.js.map +1 -1
- package/dist/stego-engine/src/ir/nodes/paragraph.d.ts +2 -2
- package/dist/stego-engine/src/ir/nodes/paragraph.d.ts.map +1 -1
- package/dist/stego-engine/src/ir/nodes/paragraph.js.map +1 -1
- package/dist/stego-engine/src/ir/nodes/plain-text.d.ts +9 -0
- package/dist/stego-engine/src/ir/nodes/plain-text.d.ts.map +1 -0
- package/dist/stego-engine/src/ir/nodes/plain-text.js +8 -0
- package/dist/stego-engine/src/ir/nodes/plain-text.js.map +1 -0
- package/dist/stego-engine/src/ir/types.d.ts +28 -4
- package/dist/stego-engine/src/ir/types.d.ts.map +1 -1
- package/dist/stego-engine/src/render/internal/backends/pandoc/lower-to-render-plan.d.ts +2 -1
- package/dist/stego-engine/src/render/internal/backends/pandoc/lower-to-render-plan.d.ts.map +1 -1
- package/dist/stego-engine/src/render/internal/backends/pandoc/lower-to-render-plan.js +9 -3
- package/dist/stego-engine/src/render/internal/backends/pandoc/lower-to-render-plan.js.map +1 -1
- package/dist/stego-engine/src/render/internal/backends/pandoc/markdown-writer.d.ts +6 -1
- package/dist/stego-engine/src/render/internal/backends/pandoc/markdown-writer.d.ts.map +1 -1
- package/dist/stego-engine/src/render/internal/backends/pandoc/markdown-writer.js +198 -19
- package/dist/stego-engine/src/render/internal/backends/pandoc/markdown-writer.js.map +1 -1
- package/dist/stego-engine/src/render/public/renderDocument.js +1 -1
- package/dist/stego-engine/src/render/public/renderDocument.js.map +1 -1
- package/dist/stego-engine/src/render/public/types.d.ts +8 -0
- package/dist/stego-engine/src/render/public/types.d.ts.map +1 -1
- package/dist/stego-engine/src/template/index.d.ts +4 -2
- package/dist/stego-engine/src/template/index.d.ts.map +1 -1
- package/dist/stego-engine/src/template/index.js +1 -1
- package/dist/stego-engine/src/template/index.js.map +1 -1
- package/dist/stego-engine/src/template/internal/evaluate-template.d.ts +8 -1
- package/dist/stego-engine/src/template/internal/evaluate-template.d.ts.map +1 -1
- package/dist/stego-engine/src/template/internal/evaluate-template.js +158 -2
- package/dist/stego-engine/src/template/internal/evaluate-template.js.map +1 -1
- package/dist/stego-engine/src/template/internal/jsx-runtime.d.ts +2 -2
- package/dist/stego-engine/src/template/internal/jsx-runtime.d.ts.map +1 -1
- package/dist/stego-engine/src/template/internal/jsx-runtime.js.map +1 -1
- package/dist/stego-engine/src/template/internal/normalizeChildren.d.ts +2 -1
- package/dist/stego-engine/src/template/internal/normalizeChildren.d.ts.map +1 -1
- package/dist/stego-engine/src/template/internal/normalizeChildren.js +9 -0
- package/dist/stego-engine/src/template/internal/normalizeChildren.js.map +1 -1
- package/dist/stego-engine/src/template/public/authoring.d.ts +3 -1
- package/dist/stego-engine/src/template/public/authoring.d.ts.map +1 -1
- package/dist/stego-engine/src/template/public/components.d.ts +136 -17
- package/dist/stego-engine/src/template/public/components.d.ts.map +1 -1
- package/dist/stego-engine/src/template/public/components.js +46 -6
- package/dist/stego-engine/src/template/public/components.js.map +1 -1
- package/dist/stego-engine/src/template/public/context.d.ts +1 -1
- package/dist/stego-engine/src/template/public/context.d.ts.map +1 -1
- package/dist/stego-engine/src/template/public/defineTemplate.d.ts +6 -3
- package/dist/stego-engine/src/template/public/defineTemplate.d.ts.map +1 -1
- package/dist/stego-engine/src/template/public/defineTemplate.js +27 -2
- package/dist/stego-engine/src/template/public/defineTemplate.js.map +1 -1
- package/dist/stego-engine/src/template/public/types.d.ts +38 -29
- package/dist/stego-engine/src/template/public/types.d.ts.map +1 -1
- package/dist/stego-engine/src/test/index.d.ts +2 -0
- package/dist/stego-engine/src/test/index.d.ts.map +1 -0
- package/dist/stego-engine/src/test/index.js +2 -0
- package/dist/stego-engine/src/test/index.js.map +1 -0
- package/dist/stego-engine/src/test/template-generic-types.test.d.ts +2 -0
- package/dist/stego-engine/src/test/template-generic-types.test.d.ts.map +1 -0
- package/dist/stego-engine/src/test/template-generic-types.test.js +77 -0
- package/dist/stego-engine/src/test/template-generic-types.test.js.map +1 -0
- package/package.json +6 -2
- package/dist/stego-engine/src/collections/public/createCollection.d.ts +0 -3
- package/dist/stego-engine/src/collections/public/createCollection.d.ts.map +0 -1
- package/dist/stego-engine/src/collections/public/createCollection.js +0 -31
- package/dist/stego-engine/src/collections/public/createCollection.js.map +0 -1
- package/dist/stego-engine/src/compile/internal/load-manuscripts.d.ts +0 -3
- package/dist/stego-engine/src/compile/internal/load-manuscripts.d.ts.map +0 -1
- package/dist/stego-engine/src/compile/internal/load-manuscripts.js +0 -70
- package/dist/stego-engine/src/compile/internal/load-manuscripts.js.map +0 -1
- package/dist/stego-engine/src/compile/internal/load-spine.d.ts +0 -7
- package/dist/stego-engine/src/compile/internal/load-spine.d.ts.map +0 -1
- package/dist/stego-engine/src/compile/internal/load-spine.js +0 -92
- package/dist/stego-engine/src/compile/internal/load-spine.js.map +0 -1
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@stego-labs/engine/jsx-runtime";
|
|
2
|
+
import { defineTemplate, Stego } from "../template/index.js";
|
|
3
|
+
const legacyTemplate = defineTemplate((ctx) => {
|
|
4
|
+
const firstLeaf = ctx.content[0];
|
|
5
|
+
const chapter = firstLeaf?.metadata.chapter;
|
|
6
|
+
const branchLabel = ctx.branches[0]?.metadata.label;
|
|
7
|
+
const projectTitle = ctx.project.metadata.title;
|
|
8
|
+
return (_jsxs(Stego.Document, { page: { size: "6x9", margin: "0.75in" }, children: [_jsx(Stego.PageTemplate, { footer: { right: _jsx(Stego.PageNumber, {}) } }), _jsxs(Stego.KeepTogether, { children: [_jsx(Stego.Heading, { level: 1, children: projectTitle }), _jsx(Stego.Paragraph, { align: "center", children: chapter ?? branchLabel ?? "Untitled" })] }), firstLeaf ? _jsx(Stego.Markdown, { leaf: firstLeaf }) : null] }));
|
|
9
|
+
});
|
|
10
|
+
const printTemplate = defineTemplate({ targets: ["docx", "pdf"] }, (ctx, PrintStego) => {
|
|
11
|
+
const firstLeaf = ctx.content[0];
|
|
12
|
+
return (_jsxs(PrintStego.Document, { page: { size: "6x9", margin: "0.75in" }, children: [_jsx(PrintStego.PageTemplate, { footer: { right: _jsx(PrintStego.PageNumber, {}) } }), _jsxs(PrintStego.KeepTogether, { children: [_jsx(PrintStego.Heading, { level: 1, spaceAfter: 18, children: ctx.project.metadata.title }), _jsx(PrintStego.Paragraph, { align: "center", firstLineIndent: "2em", children: ctx.project.metadata.author ?? "Anonymous" })] }), firstLeaf ? _jsx(PrintStego.Markdown, { leaf: firstLeaf }) : null] }));
|
|
13
|
+
});
|
|
14
|
+
const allPresentationTargetsTemplate = defineTemplate({ targets: ["docx", "pdf", "epub"] }, (_ctx, MultiTargetStego) => {
|
|
15
|
+
// @ts-expect-error epub removes page-template support from the strict intersection
|
|
16
|
+
MultiTargetStego.PageTemplate;
|
|
17
|
+
// @ts-expect-error epub removes keep-together support from the strict intersection
|
|
18
|
+
MultiTargetStego.KeepTogether;
|
|
19
|
+
// @ts-expect-error epub removes align support from the strict intersection
|
|
20
|
+
MultiTargetStego.Paragraph({ align: "center", children: "Body" });
|
|
21
|
+
return (_jsx(MultiTargetStego.Document, { children: _jsx(MultiTargetStego.Paragraph, { children: "Portable body" }) }));
|
|
22
|
+
});
|
|
23
|
+
const epubTemplate = defineTemplate({ targets: ["epub"] }, (_ctx, EpubStego) => {
|
|
24
|
+
// @ts-expect-error epub-only templates do not expose page numbers
|
|
25
|
+
EpubStego.PageNumber;
|
|
26
|
+
// @ts-expect-error epub-only templates do not expose page breaks
|
|
27
|
+
EpubStego.PageBreak;
|
|
28
|
+
// @ts-expect-error epub-only templates do not allow image alignment controls
|
|
29
|
+
EpubStego.Image({ src: "cover.png", align: "center" });
|
|
30
|
+
return (_jsx(EpubStego.Document, { children: _jsx(EpubStego.Paragraph, { children: "EPUB-safe body" }) }));
|
|
31
|
+
});
|
|
32
|
+
const typedLeaf = {
|
|
33
|
+
kind: "leaf",
|
|
34
|
+
id: "CH-ONE",
|
|
35
|
+
format: "markdown",
|
|
36
|
+
path: "/tmp/project/content/100-one.md",
|
|
37
|
+
relativePath: "content/100-one.md",
|
|
38
|
+
titleFromFilename: "One",
|
|
39
|
+
metadata: {
|
|
40
|
+
id: "CH-ONE",
|
|
41
|
+
chapter: "1",
|
|
42
|
+
chapter_title: "One",
|
|
43
|
+
kind: "chapter"
|
|
44
|
+
},
|
|
45
|
+
body: "# One",
|
|
46
|
+
order: 100,
|
|
47
|
+
headings: []
|
|
48
|
+
};
|
|
49
|
+
const typedBranch = {
|
|
50
|
+
kind: "branch",
|
|
51
|
+
key: "",
|
|
52
|
+
name: "content",
|
|
53
|
+
label: "Content",
|
|
54
|
+
depth: 0,
|
|
55
|
+
relativeDir: "content",
|
|
56
|
+
metadata: {
|
|
57
|
+
label: "Content"
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
const typedContext = {
|
|
61
|
+
project: {
|
|
62
|
+
id: "demo",
|
|
63
|
+
root: "/tmp/project",
|
|
64
|
+
metadata: {
|
|
65
|
+
title: "Demo"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
content: [typedLeaf],
|
|
69
|
+
branches: [typedBranch]
|
|
70
|
+
};
|
|
71
|
+
legacyTemplate.render(typedContext);
|
|
72
|
+
printTemplate.render(typedContext);
|
|
73
|
+
allPresentationTargetsTemplate.render(typedContext);
|
|
74
|
+
epubTemplate.render(typedContext);
|
|
75
|
+
// @ts-expect-error leaf metadata should be strongly typed
|
|
76
|
+
typedContext.content[0]?.metadata.not_a_real_key;
|
|
77
|
+
//# sourceMappingURL=template-generic-types.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-generic-types.test.js","sourceRoot":"","sources":["../../../../src/test/template-generic-types.test.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stego-labs/engine",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Template-driven document engine for Stego.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -10,6 +10,10 @@
|
|
|
10
10
|
"directory": "packages/stego-engine"
|
|
11
11
|
},
|
|
12
12
|
"homepage": "https://github.com/matt-gold/stego/tree/main/packages/stego-engine#readme",
|
|
13
|
+
"publishConfig": {
|
|
14
|
+
"access": "public",
|
|
15
|
+
"registry": "https://registry.npmjs.org/"
|
|
16
|
+
},
|
|
13
17
|
"types": "./dist/stego-engine/src/index.d.ts",
|
|
14
18
|
"files": [
|
|
15
19
|
"dist/**",
|
|
@@ -42,7 +46,7 @@
|
|
|
42
46
|
"check:module-apis": "node scripts/check-module-apis.mjs"
|
|
43
47
|
},
|
|
44
48
|
"dependencies": {
|
|
45
|
-
"@stego-labs/shared": "^1.0.
|
|
49
|
+
"@stego-labs/shared": "^1.0.3",
|
|
46
50
|
"esbuild": "^0.25.11",
|
|
47
51
|
"js-yaml": "^4.1.1"
|
|
48
52
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createCollection.d.ts","sourceRoot":"","sources":["../../../../../src/collections/public/createCollection.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAkD,MAAM,YAAY,CAAC;AAkC7F,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAE7D"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { filterItems } from "../internal/filtering.js";
|
|
2
|
-
import { groupItems, splitItems } from "../internal/grouping.js";
|
|
3
|
-
import { sortItems } from "../internal/sorting.js";
|
|
4
|
-
class EngineCollection {
|
|
5
|
-
#items;
|
|
6
|
-
constructor(items) {
|
|
7
|
-
this.#items = [...items];
|
|
8
|
-
}
|
|
9
|
-
all() {
|
|
10
|
-
return [...this.#items];
|
|
11
|
-
}
|
|
12
|
-
where(predicate) {
|
|
13
|
-
return new EngineCollection(filterItems(this.#items, predicate));
|
|
14
|
-
}
|
|
15
|
-
sortBy(selector) {
|
|
16
|
-
return new EngineCollection(sortItems(this.#items, selector));
|
|
17
|
-
}
|
|
18
|
-
groupBy(selector) {
|
|
19
|
-
return groupItems(this.#items, selector);
|
|
20
|
-
}
|
|
21
|
-
splitBy(selector) {
|
|
22
|
-
return splitItems(this.#items, selector);
|
|
23
|
-
}
|
|
24
|
-
map(mapper) {
|
|
25
|
-
return this.#items.map(mapper);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
export function createCollection(items) {
|
|
29
|
-
return new EngineCollection(items);
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=createCollection.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createCollection.js","sourceRoot":"","sources":["../../../../../src/collections/public/createCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,MAAM,gBAAgB;IACX,MAAM,CAAM;IAErB,YAAY,KAAU;QACpB,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC3B,CAAC;IAEM,GAAG;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAEM,KAAK,CAAC,SAA+B;QAC1C,OAAO,IAAI,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACnE,CAAC;IAEM,MAAM,CAAC,QAAyB;QACrC,OAAO,IAAI,gBAAgB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChE,CAAC;IAEM,OAAO,CAAC,QAA0B;QACvC,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAEM,OAAO,CAAC,QAA0B;QACvC,OAAO,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAEM,GAAG,CAAI,MAAsB;QAClC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,CAAC;CACF;AAED,MAAM,UAAU,gBAAgB,CAAI,KAAU;IAC5C,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"load-manuscripts.d.ts","sourceRoot":"","sources":["../../../../../src/compile/internal/load-manuscripts.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACnC,gBAAgB,EAAE,CAYpB"}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { parseMarkdownDocument } from "@stego-labs/shared/domain/frontmatter";
|
|
4
|
-
import { parseCommentAppendix } from "@stego-labs/shared/domain/comments";
|
|
5
|
-
import { rewriteMarkdownImagesForChapter } from "@stego-labs/shared/domain/images";
|
|
6
|
-
export function loadManuscripts(projectRoot, manuscriptDir, projectMeta) {
|
|
7
|
-
if (!fs.existsSync(manuscriptDir)) {
|
|
8
|
-
return [];
|
|
9
|
-
}
|
|
10
|
-
const files = fs.readdirSync(manuscriptDir, { withFileTypes: true })
|
|
11
|
-
.filter((entry) => entry.isFile() && entry.name.endsWith(".md"))
|
|
12
|
-
.map((entry) => path.join(manuscriptDir, entry.name))
|
|
13
|
-
.sort();
|
|
14
|
-
return files.map((filePath) => loadManuscript(projectRoot, filePath, projectMeta))
|
|
15
|
-
.sort((a, b) => compareOrders(a.order, b.order) || a.relativePath.localeCompare(b.relativePath));
|
|
16
|
-
}
|
|
17
|
-
function loadManuscript(projectRoot, filePath, projectMeta) {
|
|
18
|
-
const raw = fs.readFileSync(filePath, "utf8");
|
|
19
|
-
const parsed = parseMarkdownDocument(raw);
|
|
20
|
-
const withoutComments = parseCommentAppendix(parsed.body).contentWithoutComments;
|
|
21
|
-
const relativePath = path.relative(projectRoot, filePath);
|
|
22
|
-
const basename = path.basename(filePath, ".md");
|
|
23
|
-
return {
|
|
24
|
-
kind: "manuscript",
|
|
25
|
-
path: filePath,
|
|
26
|
-
relativePath,
|
|
27
|
-
slug: toSlug(basename),
|
|
28
|
-
titleFromFilename: toTitleFromFilename(basename),
|
|
29
|
-
metadata: parsed.frontmatter,
|
|
30
|
-
body: rewriteMarkdownImagesForChapter({
|
|
31
|
-
body: withoutComments.trim(),
|
|
32
|
-
chapterPath: filePath,
|
|
33
|
-
projectRoot,
|
|
34
|
-
projectMeta,
|
|
35
|
-
frontmatter: parsed.frontmatter
|
|
36
|
-
}),
|
|
37
|
-
order: parseOrder(basename)
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
function parseOrder(basename) {
|
|
41
|
-
const match = basename.match(/^(\d+)[-_]/);
|
|
42
|
-
return match ? Number(match[1]) : null;
|
|
43
|
-
}
|
|
44
|
-
function compareOrders(a, b) {
|
|
45
|
-
if (a == null && b == null) {
|
|
46
|
-
return 0;
|
|
47
|
-
}
|
|
48
|
-
if (a == null) {
|
|
49
|
-
return 1;
|
|
50
|
-
}
|
|
51
|
-
if (b == null) {
|
|
52
|
-
return -1;
|
|
53
|
-
}
|
|
54
|
-
return a - b;
|
|
55
|
-
}
|
|
56
|
-
function toSlug(value) {
|
|
57
|
-
return value
|
|
58
|
-
.replace(/^\d+[-_]?/, "")
|
|
59
|
-
.toLowerCase()
|
|
60
|
-
.replace(/[^a-z0-9]+/g, "-")
|
|
61
|
-
.replace(/^-+|-+$/g, "");
|
|
62
|
-
}
|
|
63
|
-
function toTitleFromFilename(value) {
|
|
64
|
-
const normalized = value.replace(/^\d+[-_]?/, "").replace(/[-_]+/g, " ").trim();
|
|
65
|
-
if (!normalized) {
|
|
66
|
-
return value;
|
|
67
|
-
}
|
|
68
|
-
return normalized.replace(/\b\w/g, (letter) => letter.toUpperCase());
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=load-manuscripts.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"load-manuscripts.js","sourceRoot":"","sources":["../../../../../src/compile/internal/load-manuscripts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import type { SpineCategoryRecord, SpineEntryRecord } from "../../template/index.ts";
|
|
2
|
-
export type LoadedSpine = {
|
|
3
|
-
entries: SpineEntryRecord[];
|
|
4
|
-
categories: SpineCategoryRecord[];
|
|
5
|
-
};
|
|
6
|
-
export declare function loadSpine(projectRoot: string, spineDir: string): LoadedSpine;
|
|
7
|
-
//# sourceMappingURL=load-spine.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"load-spine.d.ts","sourceRoot":"","sources":["../../../../../src/compile/internal/load-spine.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAErF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,UAAU,EAAE,mBAAmB,EAAE,CAAC;CACnC,CAAC;AAEF,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAuC5E"}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { parseMarkdownDocument } from "@stego-labs/shared/domain/frontmatter";
|
|
4
|
-
export function loadSpine(projectRoot, spineDir) {
|
|
5
|
-
if (!fs.existsSync(spineDir)) {
|
|
6
|
-
return { entries: [], categories: [] };
|
|
7
|
-
}
|
|
8
|
-
const categories = [];
|
|
9
|
-
const entries = [];
|
|
10
|
-
for (const dirent of fs.readdirSync(spineDir, { withFileTypes: true })) {
|
|
11
|
-
if (!dirent.isDirectory()) {
|
|
12
|
-
continue;
|
|
13
|
-
}
|
|
14
|
-
const categoryKey = dirent.name;
|
|
15
|
-
const categoryDir = path.join(spineDir, categoryKey);
|
|
16
|
-
const categoryFile = path.join(categoryDir, "_category.md");
|
|
17
|
-
const categoryParsed = fs.existsSync(categoryFile)
|
|
18
|
-
? parseSpineMarkdownFile(categoryFile)
|
|
19
|
-
: { frontmatter: {}, body: "" };
|
|
20
|
-
categories.push({
|
|
21
|
-
kind: "spine-category",
|
|
22
|
-
key: categoryKey,
|
|
23
|
-
label: toDisplayLabel(categoryParsed.frontmatter.label || categoryKey),
|
|
24
|
-
path: categoryFile,
|
|
25
|
-
metadata: categoryParsed.frontmatter
|
|
26
|
-
});
|
|
27
|
-
for (const filePath of collectMarkdownFiles(categoryDir)) {
|
|
28
|
-
if (path.basename(filePath) === "_category.md") {
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
entries.push(loadSpineEntry(projectRoot, categoryKey, filePath));
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
entries.sort((a, b) => a.relativePath.localeCompare(b.relativePath));
|
|
35
|
-
categories.sort((a, b) => a.key.localeCompare(b.key));
|
|
36
|
-
return { entries, categories };
|
|
37
|
-
}
|
|
38
|
-
function loadSpineEntry(projectRoot, category, filePath) {
|
|
39
|
-
const parsed = parseSpineMarkdownFile(filePath);
|
|
40
|
-
const basename = path.basename(filePath, ".md");
|
|
41
|
-
const body = parsed.body.trim();
|
|
42
|
-
return {
|
|
43
|
-
kind: "spine-entry",
|
|
44
|
-
path: filePath,
|
|
45
|
-
relativePath: path.relative(projectRoot, filePath),
|
|
46
|
-
category,
|
|
47
|
-
key: basename,
|
|
48
|
-
label: resolveEntryLabel(parsed.frontmatter.label, body, basename),
|
|
49
|
-
metadata: parsed.frontmatter,
|
|
50
|
-
body
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
function collectMarkdownFiles(dir) {
|
|
54
|
-
const results = [];
|
|
55
|
-
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
56
|
-
const fullPath = path.join(dir, entry.name);
|
|
57
|
-
if (entry.isDirectory()) {
|
|
58
|
-
results.push(...collectMarkdownFiles(fullPath));
|
|
59
|
-
continue;
|
|
60
|
-
}
|
|
61
|
-
if (entry.isFile() && entry.name.endsWith(".md")) {
|
|
62
|
-
results.push(fullPath);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return results;
|
|
66
|
-
}
|
|
67
|
-
function resolveEntryLabel(frontmatterLabel, body, fallback) {
|
|
68
|
-
if (typeof frontmatterLabel === "string" && frontmatterLabel.trim()) {
|
|
69
|
-
return frontmatterLabel.trim();
|
|
70
|
-
}
|
|
71
|
-
const headingMatch = body.match(/^#\s+(.+)$/m);
|
|
72
|
-
if (headingMatch && headingMatch[1].trim()) {
|
|
73
|
-
return headingMatch[1].trim();
|
|
74
|
-
}
|
|
75
|
-
return toDisplayLabel(fallback);
|
|
76
|
-
}
|
|
77
|
-
function parseSpineMarkdownFile(filePath) {
|
|
78
|
-
const raw = fs.readFileSync(filePath, "utf8");
|
|
79
|
-
try {
|
|
80
|
-
return parseMarkdownDocument(raw);
|
|
81
|
-
}
|
|
82
|
-
catch {
|
|
83
|
-
return {
|
|
84
|
-
frontmatter: {},
|
|
85
|
-
body: raw
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
function toDisplayLabel(value) {
|
|
90
|
-
return value.replace(/[-_]+/g, " ").replace(/\b\w/g, (letter) => letter.toUpperCase()).trim();
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=load-spine.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"load-spine.js","sourceRoot":"","sources":["../../../../../src/compile/internal/load-spine.ts"],"names":[],"mappings":"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"}
|