@stego-labs/shared 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.
@@ -1,2 +1,2 @@
1
- export type CliOperation = "init" | "list-projects" | "new-project" | "new" | "validate" | "build" | "check-stage" | "lint" | "export" | "spine.read" | "spine.new-category" | "spine.new" | "metadata.read" | "metadata.apply" | "comments.read" | "comments.add" | "comments.reply" | "comments.set-status" | "comments.delete" | "comments.clear-resolved" | "comments.sync-anchors";
1
+ export type CliOperation = "init" | "list-projects" | "new-project" | "new" | "validate" | "build" | "check-stage" | "lint" | "export" | "content.read" | "metadata.read" | "metadata.apply" | "comments.read" | "comments.add" | "comments.reply" | "comments.set-status" | "comments.delete" | "comments.clear-resolved" | "comments.sync-anchors";
2
2
  //# sourceMappingURL=operations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../src/contracts/cli/operations.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,eAAe,GACf,aAAa,GACb,KAAK,GACL,UAAU,GACV,OAAO,GACP,aAAa,GACb,MAAM,GACN,QAAQ,GACR,YAAY,GACZ,oBAAoB,GACpB,WAAW,GACX,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,qBAAqB,GACrB,iBAAiB,GACjB,yBAAyB,GACzB,uBAAuB,CAAC"}
1
+ {"version":3,"file":"operations.d.ts","sourceRoot":"","sources":["../../../src/contracts/cli/operations.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,eAAe,GACf,aAAa,GACb,KAAK,GACL,UAAU,GACV,OAAO,GACP,aAAa,GACb,MAAM,GACN,QAAQ,GACR,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,eAAe,GACf,cAAc,GACd,gBAAgB,GAChB,qBAAqB,GACrB,iBAAiB,GACjB,yBAAyB,GACzB,uBAAuB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { type FrontmatterRecord } from "../frontmatter/index.ts";
2
+ export type LeafFormat = "markdown" | "plaintext";
3
+ export type LeafHeadingTarget = {
4
+ text: string;
5
+ anchor: string;
6
+ line: number;
7
+ };
8
+ export type BranchMetadata = {
9
+ label?: string;
10
+ };
11
+ export type ParsedBranchDocument = {
12
+ metadata: BranchMetadata;
13
+ body: string;
14
+ };
15
+ export declare const BRANCH_FILENAME = "_branch.md";
16
+ export declare const LEAF_ID_PATTERN: RegExp;
17
+ export declare function isValidLeafId(value: string): boolean;
18
+ export declare function inferLeafFormat(filePath: string): LeafFormat;
19
+ export declare function isBranchFile(filePath: string): boolean;
20
+ export declare function isSupportedLeafContentFile(filePath: string): boolean;
21
+ export declare function buildBranchKey(contentRoot: string, dirPath: string): string;
22
+ export declare function buildBranchName(dirPath: string): string;
23
+ export declare function buildBranchParentKey(key: string): string | undefined;
24
+ export declare function buildBranchLabel(name: string, metadataLabel?: string): string;
25
+ export declare function parseBranchDocument(raw: string, filePath?: string): ParsedBranchDocument;
26
+ export declare function validateBranchFrontmatter(frontmatter: FrontmatterRecord, filePath?: string): BranchMetadata;
27
+ export declare function slugifyLeafHeading(value: string): string;
28
+ export declare function buildLeafRootAnchor(leafId: string): string;
29
+ export declare function buildLeafHeadingAnchor(leafId: string, slug: string): string;
30
+ export declare function collectLeafHeadingTargets(body: string, leafId: string): LeafHeadingTarget[];
31
+ export declare function injectLeafHeadingAnchors(body: string, leafId: string): string;
32
+ export declare function findLeafHeadingTarget(headings: LeafHeadingTarget[], headingText: string): {
33
+ target?: LeafHeadingTarget;
34
+ ambiguous?: boolean;
35
+ };
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/content/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAExF,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;AAElD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,cAAc,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,eAAe,QAAwC,CAAC;AAErE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAM5D;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CASpE;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAM3E;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CASpE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAM7E;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,SAAkB,GAAG,oBAAoB,CAcjG;AAED,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,iBAAiB,EAC9B,QAAQ,SAAkB,GACzB,cAAc,CAgBhB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE,CA+B3F;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAyB7E;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,WAAW,EAAE,MAAM,GAClB;IAAE,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,CAUrD"}
@@ -0,0 +1,166 @@
1
+ import path from "node:path";
2
+ import { parseMarkdownDocument } from "../frontmatter/index.js";
3
+ export const BRANCH_FILENAME = "_branch.md";
4
+ export const LEAF_ID_PATTERN = /^[A-Z][A-Z0-9]*-[A-Z0-9][A-Z0-9-]*$/;
5
+ export function isValidLeafId(value) {
6
+ return LEAF_ID_PATTERN.test(value.trim());
7
+ }
8
+ export function inferLeafFormat(filePath) {
9
+ const normalized = filePath.toLowerCase();
10
+ if (normalized.endsWith(".md") || normalized.endsWith(".markdown")) {
11
+ return "markdown";
12
+ }
13
+ return "plaintext";
14
+ }
15
+ export function isBranchFile(filePath) {
16
+ return path.basename(filePath).toLowerCase() === BRANCH_FILENAME;
17
+ }
18
+ export function isSupportedLeafContentFile(filePath) {
19
+ const normalized = filePath.toLowerCase();
20
+ if (isBranchFile(normalized)) {
21
+ return false;
22
+ }
23
+ return normalized.endsWith(".md")
24
+ || normalized.endsWith(".markdown")
25
+ || normalized.endsWith(".txt")
26
+ || normalized.endsWith(".text");
27
+ }
28
+ export function buildBranchKey(contentRoot, dirPath) {
29
+ const relative = path.relative(path.resolve(contentRoot), path.resolve(dirPath));
30
+ if (!relative || relative === ".") {
31
+ return "";
32
+ }
33
+ return relative.split(path.sep).join("/");
34
+ }
35
+ export function buildBranchName(dirPath) {
36
+ return path.basename(path.resolve(dirPath));
37
+ }
38
+ export function buildBranchParentKey(key) {
39
+ if (!key) {
40
+ return undefined;
41
+ }
42
+ const slashIndex = key.lastIndexOf("/");
43
+ if (slashIndex === -1) {
44
+ return "";
45
+ }
46
+ return key.slice(0, slashIndex);
47
+ }
48
+ export function buildBranchLabel(name, metadataLabel) {
49
+ const explicit = metadataLabel?.trim();
50
+ if (explicit) {
51
+ return explicit;
52
+ }
53
+ return toTitleCase(name);
54
+ }
55
+ export function parseBranchDocument(raw, filePath = BRANCH_FILENAME) {
56
+ let parsed;
57
+ try {
58
+ parsed = parseMarkdownDocument(raw);
59
+ }
60
+ catch (error) {
61
+ const message = error instanceof Error ? error.message : String(error);
62
+ throw new Error(`Branch file '${filePath}' has invalid frontmatter: ${message}`);
63
+ }
64
+ const metadata = validateBranchFrontmatter(parsed.frontmatter, filePath);
65
+ return {
66
+ metadata,
67
+ body: parsed.body.trim()
68
+ };
69
+ }
70
+ export function validateBranchFrontmatter(frontmatter, filePath = BRANCH_FILENAME) {
71
+ const allowedKeys = new Set(["label"]);
72
+ for (const key of Object.keys(frontmatter)) {
73
+ if (!allowedKeys.has(key)) {
74
+ throw new Error(`Branch file '${filePath}' has unsupported frontmatter key '${key}'. Only 'label' is allowed.`);
75
+ }
76
+ }
77
+ const rawLabel = frontmatter.label;
78
+ if (rawLabel == null) {
79
+ return {};
80
+ }
81
+ if (typeof rawLabel !== "string" || rawLabel.trim().length === 0) {
82
+ throw new Error(`Branch file '${filePath}' must define 'label' as a non-empty string.`);
83
+ }
84
+ return { label: rawLabel.trim() };
85
+ }
86
+ export function slugifyLeafHeading(value) {
87
+ return value
88
+ .toLowerCase()
89
+ .replace(/[^a-z0-9\s-]/g, "")
90
+ .trim()
91
+ .replace(/\s+/g, "-");
92
+ }
93
+ export function buildLeafRootAnchor(leafId) {
94
+ return leafId;
95
+ }
96
+ export function buildLeafHeadingAnchor(leafId, slug) {
97
+ return `${leafId}--${slug}`;
98
+ }
99
+ export function collectLeafHeadingTargets(body, leafId) {
100
+ const lines = body.split(/\r?\n/);
101
+ const counts = new Map();
102
+ const headings = [];
103
+ for (let index = 0; index < lines.length; index += 1) {
104
+ const match = lines[index].match(/^#{1,6}\s+(.+?)\s*(?:\{#([^}]+)\})?\s*$/);
105
+ if (!match) {
106
+ continue;
107
+ }
108
+ const text = match[1].trim();
109
+ const explicitAnchor = match[2]?.trim();
110
+ const slugBase = explicitAnchor || slugifyLeafHeading(text);
111
+ if (!slugBase) {
112
+ continue;
113
+ }
114
+ const seen = counts.get(slugBase) || 0;
115
+ const occurrence = seen + 1;
116
+ counts.set(slugBase, occurrence);
117
+ const slug = occurrence === 1 ? slugBase : `${slugBase}-${occurrence}`;
118
+ headings.push({
119
+ text,
120
+ anchor: buildLeafHeadingAnchor(leafId, slug),
121
+ line: index + 1
122
+ });
123
+ }
124
+ return headings;
125
+ }
126
+ export function injectLeafHeadingAnchors(body, leafId) {
127
+ const lines = body.split(/\r?\n/);
128
+ const counts = new Map();
129
+ return lines.map((line) => {
130
+ const match = line.match(/^(#{1,6}\s+)(.+?)\s*(?:\{#([^}]+)\})?\s*$/);
131
+ if (!match) {
132
+ return line;
133
+ }
134
+ const prefix = match[1];
135
+ const text = match[2].trim();
136
+ const explicitAnchor = match[3]?.trim();
137
+ const slugBase = explicitAnchor || slugifyLeafHeading(text);
138
+ if (!slugBase) {
139
+ return `${prefix}${text}`;
140
+ }
141
+ const seen = counts.get(slugBase) || 0;
142
+ const occurrence = seen + 1;
143
+ counts.set(slugBase, occurrence);
144
+ const slug = occurrence === 1 ? slugBase : `${slugBase}-${occurrence}`;
145
+ return `${prefix}${text} {#${buildLeafHeadingAnchor(leafId, slug)}}`;
146
+ }).join("\n");
147
+ }
148
+ export function findLeafHeadingTarget(headings, headingText) {
149
+ const normalized = headingText.trim().replace(/\s+/g, " ").toLowerCase();
150
+ const matches = headings.filter((entry) => entry.text.trim().replace(/\s+/g, " ").toLowerCase() === normalized);
151
+ if (matches.length === 0) {
152
+ return {};
153
+ }
154
+ if (matches.length > 1) {
155
+ return { ambiguous: true };
156
+ }
157
+ return { target: matches[0] };
158
+ }
159
+ function toTitleCase(value) {
160
+ const normalized = value.replace(/[-_]+/g, " ").trim();
161
+ if (!normalized) {
162
+ return value;
163
+ }
164
+ return normalized.replace(/\b\w/g, (letter) => letter.toUpperCase());
165
+ }
166
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/content/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export type DocxLayoutAlign = "left" | "center" | "right";
2
+ export type DocxBlockLayoutSpec = {
3
+ bookmarkName: string;
4
+ pageBreak?: boolean;
5
+ spaceBefore?: string;
6
+ spaceAfter?: string;
7
+ insetLeft?: string;
8
+ insetRight?: string;
9
+ firstLineIndent?: string;
10
+ align?: DocxLayoutAlign;
11
+ keepTogether?: boolean;
12
+ };
13
+ export declare const DOCX_LAYOUT_BOOKMARK_PREFIX = "stego-layout-";
14
+ export declare function createDocxLayoutBookmarkName(index: number): string;
15
+ export declare function isDocxLayoutBookmarkName(value: string | null | undefined): value is string;
16
+ //# sourceMappingURL=docx-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docx-layout.d.ts","sourceRoot":"","sources":["../../../src/domain/layout/docx-layout.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1D,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAE3D,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,IAAI,MAAM,CAE1F"}
@@ -0,0 +1,8 @@
1
+ export const DOCX_LAYOUT_BOOKMARK_PREFIX = "stego-layout-";
2
+ export function createDocxLayoutBookmarkName(index) {
3
+ return `${DOCX_LAYOUT_BOOKMARK_PREFIX}${index}`;
4
+ }
5
+ export function isDocxLayoutBookmarkName(value) {
6
+ return typeof value === "string" && value.startsWith(DOCX_LAYOUT_BOOKMARK_PREFIX);
7
+ }
8
+ //# sourceMappingURL=docx-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docx-layout.js","sourceRoot":"","sources":["../../../src/domain/layout/docx-layout.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,2BAA2B,GAAG,eAAe,CAAC;AAE3D,MAAM,UAAU,4BAA4B,CAAC,KAAa;IACxD,OAAO,GAAG,2BAA2B,GAAG,KAAK,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAgC;IACvE,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;AACpF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./docx-layout.ts";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./docx-layout.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/layout/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,49 @@
1
+ export declare const EXPORT_TARGETS: readonly ["md", "docx", "pdf", "epub"];
2
+ export declare const PRESENTATION_TARGETS: readonly ["docx", "pdf", "epub"];
3
+ export type ExportTarget = (typeof EXPORT_TARGETS)[number];
4
+ export type PresentationTarget = (typeof PRESENTATION_TARGETS)[number];
5
+ export declare const TARGET_CAPABILITIES: {
6
+ readonly docx: {
7
+ readonly pageLayout: true;
8
+ readonly pageTemplate: true;
9
+ readonly pageNumber: true;
10
+ readonly keepTogether: true;
11
+ readonly pageBreak: true;
12
+ readonly spacing: true;
13
+ readonly inset: true;
14
+ readonly indent: true;
15
+ readonly align: true;
16
+ readonly imageAlign: true;
17
+ readonly imageLayout: true;
18
+ };
19
+ readonly pdf: {
20
+ readonly pageLayout: true;
21
+ readonly pageTemplate: true;
22
+ readonly pageNumber: true;
23
+ readonly keepTogether: true;
24
+ readonly pageBreak: true;
25
+ readonly spacing: true;
26
+ readonly inset: true;
27
+ readonly indent: true;
28
+ readonly align: true;
29
+ readonly imageAlign: true;
30
+ readonly imageLayout: true;
31
+ };
32
+ readonly epub: {
33
+ readonly pageLayout: false;
34
+ readonly pageTemplate: false;
35
+ readonly pageNumber: false;
36
+ readonly keepTogether: false;
37
+ readonly pageBreak: false;
38
+ readonly spacing: false;
39
+ readonly inset: false;
40
+ readonly indent: false;
41
+ readonly align: false;
42
+ readonly imageAlign: false;
43
+ readonly imageLayout: false;
44
+ };
45
+ };
46
+ export type TemplateCapability = keyof (typeof TARGET_CAPABILITIES)["docx"];
47
+ export declare function isExportTarget(value: string): value is ExportTarget;
48
+ export declare function isPresentationTarget(value: string): value is PresentationTarget;
49
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domain/templates/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,wCAAyC,CAAC;AACrE,eAAO,MAAM,oBAAoB,kCAAmC,CAAC;AAErE,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3D,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCtB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAEnE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,kBAAkB,CAE/E"}
@@ -0,0 +1,50 @@
1
+ export const EXPORT_TARGETS = ["md", "docx", "pdf", "epub"];
2
+ export const PRESENTATION_TARGETS = ["docx", "pdf", "epub"];
3
+ export const TARGET_CAPABILITIES = {
4
+ docx: {
5
+ pageLayout: true,
6
+ pageTemplate: true,
7
+ pageNumber: true,
8
+ keepTogether: true,
9
+ pageBreak: true,
10
+ spacing: true,
11
+ inset: true,
12
+ indent: true,
13
+ align: true,
14
+ imageAlign: true,
15
+ imageLayout: true
16
+ },
17
+ pdf: {
18
+ pageLayout: true,
19
+ pageTemplate: true,
20
+ pageNumber: true,
21
+ keepTogether: true,
22
+ pageBreak: true,
23
+ spacing: true,
24
+ inset: true,
25
+ indent: true,
26
+ align: true,
27
+ imageAlign: true,
28
+ imageLayout: true
29
+ },
30
+ epub: {
31
+ pageLayout: false,
32
+ pageTemplate: false,
33
+ pageNumber: false,
34
+ keepTogether: false,
35
+ pageBreak: false,
36
+ spacing: false,
37
+ inset: false,
38
+ indent: false,
39
+ align: false,
40
+ imageAlign: false,
41
+ imageLayout: false
42
+ }
43
+ };
44
+ export function isExportTarget(value) {
45
+ return EXPORT_TARGETS.includes(value);
46
+ }
47
+ export function isPresentationTarget(value) {
48
+ return PRESENTATION_TARGETS.includes(value);
49
+ }
50
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/domain/templates/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AACrE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAU,CAAC;AAKrE,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE;QACJ,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,IAAI;KAClB;IACD,GAAG,EAAE;QACH,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,IAAI;KAClB;IACD,IAAI,EAAE;QACJ,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,KAAK;QACjB,YAAY,EAAE,KAAK;QACnB,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,KAAK;QACZ,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,KAAK;KACnB;CACO,CAAC;AAIX,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,cAAc,CAAC,QAAQ,CAAC,KAAqB,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,oBAAoB,CAAC,QAAQ,CAAC,KAA2B,CAAC,CAAC;AACpE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -4,5 +4,8 @@ export * as CommentsDomain from "./domain/comments/index.ts";
4
4
  export * as StagesDomain from "./domain/stages/index.ts";
5
5
  export * as ProjectDomain from "./domain/project/index.ts";
6
6
  export * as ImagesDomain from "./domain/images/index.ts";
7
+ export * as LayoutDomain from "./domain/layout/index.ts";
8
+ export * as ContentDomain from "./domain/content/index.ts";
9
+ export * as TemplatesDomain from "./domain/templates/index.ts";
7
10
  export * as SharedUtils from "./utils/index.ts";
8
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,iBAAiB,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,cAAc,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,iBAAiB,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,cAAc,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -4,5 +4,8 @@ export * as CommentsDomain from "./domain/comments/index.js";
4
4
  export * as StagesDomain from "./domain/stages/index.js";
5
5
  export * as ProjectDomain from "./domain/project/index.js";
6
6
  export * as ImagesDomain from "./domain/images/index.js";
7
+ export * as LayoutDomain from "./domain/layout/index.js";
8
+ export * as ContentDomain from "./domain/content/index.js";
9
+ export * as TemplatesDomain from "./domain/templates/index.js";
7
10
  export * as SharedUtils from "./utils/index.js";
8
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,iBAAiB,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,cAAc,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,iBAAiB,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,cAAc,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,YAAY,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stego-labs/shared",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "type": "module",
5
5
  "description": "Shared contracts and domain primitives for Stego packages.",
6
6
  "license": "Apache-2.0",
@@ -11,6 +11,10 @@
11
11
  "directory": "packages/shared"
12
12
  },
13
13
  "homepage": "https://github.com/matt-gold/stego/tree/main/packages/shared#readme",
14
+ "publishConfig": {
15
+ "access": "public",
16
+ "registry": "https://registry.npmjs.org/"
17
+ },
14
18
  "files": [
15
19
  "dist/**",
16
20
  "README.md"
@@ -28,6 +32,10 @@
28
32
  "types": "./dist/domain/comments/index.d.ts",
29
33
  "default": "./dist/domain/comments/index.js"
30
34
  },
35
+ "./domain/content": {
36
+ "types": "./dist/domain/content/index.d.ts",
37
+ "default": "./dist/domain/content/index.js"
38
+ },
31
39
  "./domain/frontmatter": {
32
40
  "types": "./dist/domain/frontmatter/index.d.ts",
33
41
  "default": "./dist/domain/frontmatter/index.js"
@@ -36,10 +44,18 @@
36
44
  "types": "./dist/domain/images/index.d.ts",
37
45
  "default": "./dist/domain/images/index.js"
38
46
  },
47
+ "./domain/layout": {
48
+ "types": "./dist/domain/layout/index.d.ts",
49
+ "default": "./dist/domain/layout/index.js"
50
+ },
39
51
  "./domain/project": {
40
52
  "types": "./dist/domain/project/index.d.ts",
41
53
  "default": "./dist/domain/project/index.js"
42
54
  },
55
+ "./domain/templates": {
56
+ "types": "./dist/domain/templates/index.d.ts",
57
+ "default": "./dist/domain/templates/index.js"
58
+ },
43
59
  "./domain/stages": {
44
60
  "types": "./dist/domain/stages/index.d.ts",
45
61
  "default": "./dist/domain/stages/index.js"
@@ -54,6 +70,9 @@
54
70
  "contracts/cli": [
55
71
  "dist/contracts/cli/index.d.ts"
56
72
  ],
73
+ "domain/content": [
74
+ "dist/domain/content/index.d.ts"
75
+ ],
57
76
  "domain/comments": [
58
77
  "dist/domain/comments/index.d.ts"
59
78
  ],
@@ -63,9 +82,15 @@
63
82
  "domain/images": [
64
83
  "dist/domain/images/index.d.ts"
65
84
  ],
85
+ "domain/layout": [
86
+ "dist/domain/layout/index.d.ts"
87
+ ],
66
88
  "domain/project": [
67
89
  "dist/domain/project/index.d.ts"
68
90
  ],
91
+ "domain/templates": [
92
+ "dist/domain/templates/index.d.ts"
93
+ ],
69
94
  "domain/stages": [
70
95
  "dist/domain/stages/index.d.ts"
71
96
  ],