@x12i/made-easy 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.
- package/LICENSE +21 -0
- package/README.md +57 -2
- package/dist/analysis.d.ts +19 -0
- package/dist/analysis.d.ts.map +1 -0
- package/dist/analysis.js +90 -0
- package/dist/analysis.js.map +1 -0
- package/dist/build.d.ts +36 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +260 -0
- package/dist/build.js.map +1 -0
- package/dist/contracts/api.d.ts +447 -0
- package/dist/contracts/api.d.ts.map +1 -0
- package/dist/contracts/api.js +152 -0
- package/dist/contracts/api.js.map +1 -0
- package/dist/contracts/blocks.d.ts +221 -0
- package/dist/contracts/blocks.d.ts.map +1 -0
- package/dist/contracts/blocks.js +392 -0
- package/dist/contracts/blocks.js.map +1 -0
- package/dist/contracts/diagnostics.d.ts +111 -0
- package/dist/contracts/diagnostics.d.ts.map +1 -0
- package/dist/contracts/diagnostics.js +122 -0
- package/dist/contracts/diagnostics.js.map +1 -0
- package/dist/contracts/index.d.ts +11 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +11 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/json-schema.d.ts +5 -0
- package/dist/contracts/json-schema.d.ts.map +1 -0
- package/dist/contracts/json-schema.js +41 -0
- package/dist/contracts/json-schema.js.map +1 -0
- package/dist/contracts/recipe.d.ts +535 -0
- package/dist/contracts/recipe.d.ts.map +1 -0
- package/dist/contracts/recipe.js +380 -0
- package/dist/contracts/recipe.js.map +1 -0
- package/dist/contracts/schemas.d.ts +413 -0
- package/dist/contracts/schemas.d.ts.map +1 -0
- package/dist/contracts/schemas.js +205 -0
- package/dist/contracts/schemas.js.map +1 -0
- package/dist/draft.d.ts +157 -0
- package/dist/draft.d.ts.map +1 -0
- package/dist/draft.js +254 -0
- package/dist/draft.js.map +1 -0
- package/dist/emit-assets.d.ts +2 -0
- package/dist/emit-assets.d.ts.map +1 -0
- package/dist/emit-assets.js +27 -0
- package/dist/emit-assets.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown-doc.d.ts +59 -0
- package/dist/markdown-doc.d.ts.map +1 -0
- package/dist/markdown-doc.js +187 -0
- package/dist/markdown-doc.js.map +1 -0
- package/dist/model.d.ts +54 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +244 -0
- package/dist/model.js.map +1 -0
- package/dist/normalize.d.ts +63 -0
- package/dist/normalize.d.ts.map +1 -0
- package/dist/normalize.js +54 -0
- package/dist/normalize.js.map +1 -0
- package/dist/npm.d.ts +24 -0
- package/dist/npm.d.ts.map +1 -0
- package/dist/npm.js +51 -0
- package/dist/npm.js.map +1 -0
- package/dist/render/blocks.d.ts +17 -0
- package/dist/render/blocks.d.ts.map +1 -0
- package/dist/render/blocks.js +384 -0
- package/dist/render/blocks.js.map +1 -0
- package/dist/render/brief.d.ts +77 -0
- package/dist/render/brief.d.ts.map +1 -0
- package/dist/render/brief.js +62 -0
- package/dist/render/brief.js.map +1 -0
- package/dist/render/context.d.ts +43 -0
- package/dist/render/context.d.ts.map +1 -0
- package/dist/render/context.js +88 -0
- package/dist/render/context.js.map +1 -0
- package/dist/render/html.d.ts +19 -0
- package/dist/render/html.d.ts.map +1 -0
- package/dist/render/html.js +178 -0
- package/dist/render/html.js.map +1 -0
- package/dist/render/markdown-out.d.ts +11 -0
- package/dist/render/markdown-out.d.ts.map +1 -0
- package/dist/render/markdown-out.js +121 -0
- package/dist/render/markdown-out.js.map +1 -0
- package/dist/render/pdf.d.ts +23 -0
- package/dist/render/pdf.d.ts.map +1 -0
- package/dist/render/pdf.js +138 -0
- package/dist/render/pdf.js.map +1 -0
- package/dist/render/prose.d.ts +15 -0
- package/dist/render/prose.d.ts.map +1 -0
- package/dist/render/prose.js +110 -0
- package/dist/render/prose.js.map +1 -0
- package/dist/scaffold.d.ts +13 -0
- package/dist/scaffold.d.ts.map +1 -0
- package/dist/scaffold.js +393 -0
- package/dist/scaffold.js.map +1 -0
- package/dist/sdk.d.ts +56 -0
- package/dist/sdk.d.ts.map +1 -0
- package/dist/sdk.js +238 -0
- package/dist/sdk.js.map +1 -0
- package/dist/source.d.ts +57 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +289 -0
- package/dist/source.js.map +1 -0
- package/dist/theme/book.d.ts +10 -0
- package/dist/theme/book.d.ts.map +1 -0
- package/dist/theme/book.js +198 -0
- package/dist/theme/book.js.map +1 -0
- package/dist/util.d.ts +14 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +69 -0
- package/dist/util.js.map +1 -0
- package/dist/validate.d.ts +36 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +986 -0
- package/dist/validate.js.map +1 -0
- package/dist/verify.d.ts +35 -0
- package/dist/verify.d.ts.map +1 -0
- package/dist/verify.js +112 -0
- package/dist/verify.js.map +1 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -0
- package/dist/yamlfile.d.ts +22 -0
- package/dist/yamlfile.d.ts.map +1 -0
- package/dist/yamlfile.js +129 -0
- package/dist/yamlfile.js.map +1 -0
- package/package.json +64 -4
- package/recipes/index.json +282 -0
- package/recipes/shared-1.0.0.json +456 -0
- package/schemas/artifact.v1.json +36 -0
- package/schemas/assets.v1.json +61 -0
- package/schemas/block.v1.json +27 -0
- package/schemas/blocks/brief.v1.json +20 -0
- package/schemas/blocks/callout.v1.json +25 -0
- package/schemas/blocks/code.v1.json +21 -0
- package/schemas/blocks/decision.v1.json +80 -0
- package/schemas/blocks/evidence-comparison.v1.json +33 -0
- package/schemas/blocks/example.v1.json +52 -0
- package/schemas/blocks/figure.v1.json +22 -0
- package/schemas/blocks/human-action.v1.json +42 -0
- package/schemas/blocks/job-map.v1.json +170 -0
- package/schemas/blocks/pause.v1.json +25 -0
- package/schemas/blocks/reference-profile.v1.json +41 -0
- package/schemas/blocks/review-checklist.v1.json +19 -0
- package/schemas/blocks/table.v1.json +59 -0
- package/schemas/brief.v1.json +157 -0
- package/schemas/build-request.v1.json +173 -0
- package/schemas/build-result.v1.json +171 -0
- package/schemas/checks.v1.json +149 -0
- package/schemas/create-request.v1.json +47 -0
- package/schemas/diagnostic.v1.json +50 -0
- package/schemas/draft-request.v1.json +196 -0
- package/schemas/guide.v1.json +172 -0
- package/schemas/job.v1.json +107 -0
- package/schemas/preview-request.v1.json +153 -0
- package/schemas/preview-result.v1.json +84 -0
- package/schemas/problem.v1.json +78 -0
- package/schemas/recipe-definition.v1.json +673 -0
- package/schemas/source-ref.v1.json +111 -0
- package/schemas/sources.v1.json +158 -0
- package/schemas/validate-request.v1.json +135 -0
- package/schemas/validate-result.v1.json +110 -0
- package/schemas/verification.v1.json +77 -0
- package/themes/book/1.0.0/theme.css +190 -0
- package/themes/book/1.0.0/theme.json +5 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { type GuideModel } from '../model.js';
|
|
2
|
+
export interface BriefDocument {
|
|
3
|
+
schemaVersion: string;
|
|
4
|
+
guideId: string;
|
|
5
|
+
jobId: string;
|
|
6
|
+
title: string;
|
|
7
|
+
revision: string;
|
|
8
|
+
referenceRevision: string;
|
|
9
|
+
outcome: string;
|
|
10
|
+
inputs: {
|
|
11
|
+
id: string;
|
|
12
|
+
label: string;
|
|
13
|
+
required: boolean;
|
|
14
|
+
placeholder: string;
|
|
15
|
+
example: string;
|
|
16
|
+
description?: string;
|
|
17
|
+
}[];
|
|
18
|
+
authority: {
|
|
19
|
+
reads: string[];
|
|
20
|
+
changes: string[];
|
|
21
|
+
};
|
|
22
|
+
limits: string[];
|
|
23
|
+
pauseRules: {
|
|
24
|
+
id: string;
|
|
25
|
+
trigger: string;
|
|
26
|
+
owner: string;
|
|
27
|
+
mayContinue: string;
|
|
28
|
+
resumeWhen: string;
|
|
29
|
+
}[];
|
|
30
|
+
acceptanceChecks: {
|
|
31
|
+
id: string;
|
|
32
|
+
observable: string;
|
|
33
|
+
evidenceSource: string;
|
|
34
|
+
passCondition: string;
|
|
35
|
+
onMissing: string;
|
|
36
|
+
onContradictory: string;
|
|
37
|
+
}[];
|
|
38
|
+
reportBack: {
|
|
39
|
+
id: string;
|
|
40
|
+
label: string;
|
|
41
|
+
description?: string;
|
|
42
|
+
}[];
|
|
43
|
+
operatorReference: {
|
|
44
|
+
revision: string;
|
|
45
|
+
entries: {
|
|
46
|
+
id: string;
|
|
47
|
+
title: string;
|
|
48
|
+
path: string;
|
|
49
|
+
digest: string;
|
|
50
|
+
}[];
|
|
51
|
+
};
|
|
52
|
+
/** The blank template: inputs carry their placeholder text. */
|
|
53
|
+
template: {
|
|
54
|
+
inputs: {
|
|
55
|
+
id: string;
|
|
56
|
+
label: string;
|
|
57
|
+
value: string;
|
|
58
|
+
}[];
|
|
59
|
+
};
|
|
60
|
+
/** The worked brief: inputs carry their worked example values. */
|
|
61
|
+
worked: {
|
|
62
|
+
inputs: {
|
|
63
|
+
id: string;
|
|
64
|
+
label: string;
|
|
65
|
+
value: string;
|
|
66
|
+
}[];
|
|
67
|
+
};
|
|
68
|
+
/** Review checklist items, one per acceptance check. */
|
|
69
|
+
checklist: {
|
|
70
|
+
id: string;
|
|
71
|
+
text: string;
|
|
72
|
+
passCondition: string;
|
|
73
|
+
}[];
|
|
74
|
+
}
|
|
75
|
+
/** One source of truth for the brief, shared by the ebook, brief.md and brief.json. */
|
|
76
|
+
export declare function buildBriefDocument(model: GuideModel): BriefDocument;
|
|
77
|
+
//# sourceMappingURL=brief.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brief.d.ts","sourceRoot":"","sources":["../../src/render/brief.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvH,SAAS,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAClD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtG,gBAAgB,EAAE;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,EAAE,CAAC;IACJ,UAAU,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClE,iBAAiB,EAAE;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KACxE,CAAC;IACF,+DAA+D;IAC/D,QAAQ,EAAE;QAAE,MAAM,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC;IACrE,kEAAkE;IAClE,MAAM,EAAE;QAAE,MAAM,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC;IACnE,wDAAwD;IACxD,SAAS,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAClE;AAED,uFAAuF;AACvF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,CAyDnE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { SCHEMA_VERSION } from '../contracts/index.js';
|
|
2
|
+
import { entriesOf, guideTitle } from '../model.js';
|
|
3
|
+
/** One source of truth for the brief, shared by the ebook, brief.md and brief.json. */
|
|
4
|
+
export function buildBriefDocument(model) {
|
|
5
|
+
const guide = model.guide;
|
|
6
|
+
const brief = model.brief ?? { schemaVersion: SCHEMA_VERSION };
|
|
7
|
+
const checks = new Map((model.checks?.checks ?? []).map((c) => [c.id, c]));
|
|
8
|
+
const operator = new Map(entriesOf(model, 'operator').map((e) => [e.id, e]));
|
|
9
|
+
const inputs = (brief.inputs ?? []).map((i) => ({
|
|
10
|
+
id: i.id,
|
|
11
|
+
label: i.label ?? i.id,
|
|
12
|
+
required: i.required !== false,
|
|
13
|
+
placeholder: i.placeholder ?? `{{${i.id}}}`,
|
|
14
|
+
example: i.example ?? '',
|
|
15
|
+
description: i.description,
|
|
16
|
+
}));
|
|
17
|
+
return {
|
|
18
|
+
schemaVersion: SCHEMA_VERSION,
|
|
19
|
+
guideId: guide.guideId,
|
|
20
|
+
jobId: guide.jobId,
|
|
21
|
+
title: guideTitle(guide),
|
|
22
|
+
revision: model.revision,
|
|
23
|
+
referenceRevision: model.referenceRevision,
|
|
24
|
+
outcome: brief.outcome ?? '',
|
|
25
|
+
inputs,
|
|
26
|
+
authority: { reads: brief.authority?.reads ?? [], changes: brief.authority?.changes ?? [] },
|
|
27
|
+
limits: brief.limits ?? [],
|
|
28
|
+
pauseRules: (brief.pauseRules ?? []).map((p) => ({
|
|
29
|
+
id: p.id,
|
|
30
|
+
trigger: p.trigger ?? '',
|
|
31
|
+
owner: p.owner ?? '',
|
|
32
|
+
mayContinue: p.mayContinue ?? '',
|
|
33
|
+
resumeWhen: p.resumeWhen ?? '',
|
|
34
|
+
})),
|
|
35
|
+
acceptanceChecks: (brief.acceptanceChecks ?? []).map((id) => {
|
|
36
|
+
const c = checks.get(id);
|
|
37
|
+
return {
|
|
38
|
+
id,
|
|
39
|
+
observable: c?.observable ?? '',
|
|
40
|
+
evidenceSource: c?.evidenceSource ?? '',
|
|
41
|
+
passCondition: c?.passCondition ?? '',
|
|
42
|
+
onMissing: c?.onMissing ?? '',
|
|
43
|
+
onContradictory: c?.onContradictory ?? '',
|
|
44
|
+
};
|
|
45
|
+
}),
|
|
46
|
+
reportBack: (brief.reportBack ?? []).map((r) => ({ id: r.id, label: r.label ?? r.id, description: r.description })),
|
|
47
|
+
operatorReference: {
|
|
48
|
+
revision: model.referenceRevision,
|
|
49
|
+
entries: (brief.operatorReference?.entries ?? [])
|
|
50
|
+
.map((p) => operator.get(p.id))
|
|
51
|
+
.filter((e) => Boolean(e))
|
|
52
|
+
.map((e) => ({ id: e.id, title: e.title, path: e.path, digest: e.digest })),
|
|
53
|
+
},
|
|
54
|
+
template: { inputs: inputs.map((i) => ({ id: i.id, label: i.label, value: i.placeholder })) },
|
|
55
|
+
worked: { inputs: inputs.map((i) => ({ id: i.id, label: i.label, value: i.example })) },
|
|
56
|
+
checklist: (brief.acceptanceChecks ?? []).map((id) => {
|
|
57
|
+
const c = checks.get(id);
|
|
58
|
+
return { id, text: c?.observable ?? id, passCondition: c?.passCondition ?? '' };
|
|
59
|
+
}),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=brief.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brief.js","sourceRoot":"","sources":["../../src/render/brief.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Asset, Check, Claim, PauseRule, RefKind, Source, Track, WorkedResult } from '../contracts/index.js';
|
|
2
|
+
import type { GuideModel, ModelEntry } from '../model.js';
|
|
3
|
+
export type Page = 'human' | 'operator';
|
|
4
|
+
export interface RenderContext {
|
|
5
|
+
model: GuideModel;
|
|
6
|
+
/** Page being rendered; links to the other page are relative to it. */
|
|
7
|
+
page: Page;
|
|
8
|
+
/** Standalone documents (PDF) cannot link to sibling files. */
|
|
9
|
+
standalone: boolean;
|
|
10
|
+
audience: 'private' | 'public';
|
|
11
|
+
draft: boolean;
|
|
12
|
+
checks: Map<string, Check>;
|
|
13
|
+
results: Map<string, WorkedResult>;
|
|
14
|
+
sources: Map<string, Source>;
|
|
15
|
+
claims: Map<string, Claim>;
|
|
16
|
+
assets: Map<string, Asset>;
|
|
17
|
+
assetByPath: Map<string, Asset>;
|
|
18
|
+
pauses: Map<string, PauseRule>;
|
|
19
|
+
entries: Map<string, ModelEntry>;
|
|
20
|
+
blockEntry: Map<string, ModelEntry>;
|
|
21
|
+
/** Resolve an asset ID to a file reference (relative path or data URI). */
|
|
22
|
+
assetSrc: (asset: Asset) => string | undefined;
|
|
23
|
+
}
|
|
24
|
+
export declare function makeContext(model: GuideModel, opts: {
|
|
25
|
+
page: Page;
|
|
26
|
+
standalone?: boolean;
|
|
27
|
+
audience?: 'private' | 'public';
|
|
28
|
+
draft?: boolean;
|
|
29
|
+
assetSrc?: (asset: Asset) => string | undefined;
|
|
30
|
+
}): RenderContext;
|
|
31
|
+
export declare function pageOfTrack(track: Track): Page;
|
|
32
|
+
/** href to a rendered location; undefined when it cannot be linked (standalone PDF cross-page). */
|
|
33
|
+
export declare function hrefTo(ctx: RenderContext, targetPage: Page, fragment: string): string | undefined;
|
|
34
|
+
export interface ResolvedRef {
|
|
35
|
+
href?: string;
|
|
36
|
+
label: string;
|
|
37
|
+
title?: string;
|
|
38
|
+
}
|
|
39
|
+
/** Resolve `kind:id#anchor` into a link target and human label. */
|
|
40
|
+
export declare function resolveRef(ctx: RenderContext, kind: RefKind, id: string, anchor?: string): ResolvedRef | undefined;
|
|
41
|
+
export declare function titleOf(model: GuideModel): string;
|
|
42
|
+
export declare function shortRef(digest: string): string;
|
|
43
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/render/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAClH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK1D,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,UAAU,CAAC;AAExC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,UAAU,CAAC;IAClB,uEAAuE;IACvE,IAAI,EAAE,IAAI,CAAC;IACX,+DAA+D;IAC/D,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACnC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACjC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACpC,2EAA2E;IAC3E,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,GAAG,SAAS,CAAC;CAChD;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE;IACJ,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,GAAG,SAAS,CAAC;CACjD,GACA,aAAa,CAsBf;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAE9C;AAED,mGAAmG;AACnG,wBAAgB,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIjG;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CA0ClH;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEjD;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE/C"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { allBlocks } from '../model.js';
|
|
2
|
+
import { guideTitle } from '../model.js';
|
|
3
|
+
import { shortRevision } from '../util.js';
|
|
4
|
+
export function makeContext(model, opts) {
|
|
5
|
+
const assets = new Map((model.assets?.assets ?? []).map((a) => [a.id, a]));
|
|
6
|
+
const page = opts.page;
|
|
7
|
+
return {
|
|
8
|
+
model,
|
|
9
|
+
page,
|
|
10
|
+
standalone: opts.standalone ?? false,
|
|
11
|
+
audience: opts.audience ?? 'private',
|
|
12
|
+
draft: opts.draft ?? false,
|
|
13
|
+
checks: new Map((model.checks?.checks ?? []).map((c) => [c.id, c])),
|
|
14
|
+
results: new Map((model.checks?.results ?? []).map((r) => [r.id, r])),
|
|
15
|
+
sources: new Map((model.sources?.sources ?? []).map((s) => [s.id, s])),
|
|
16
|
+
claims: new Map((model.sources?.claims ?? []).map((c) => [c.id, c])),
|
|
17
|
+
assets,
|
|
18
|
+
assetByPath: new Map((model.assets?.assets ?? []).map((a) => [a.path, a])),
|
|
19
|
+
pauses: new Map((model.brief?.pauseRules ?? []).map((p) => [p.id, p])),
|
|
20
|
+
entries: new Map(model.entries.map((e) => [e.id, e])),
|
|
21
|
+
blockEntry: new Map(allBlocks(model).map(({ entry, block }) => [block.id, entry])),
|
|
22
|
+
assetSrc: opts.assetSrc ??
|
|
23
|
+
((a) => (page === 'operator' ? `../${a.path}` : a.path)),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function pageOfTrack(track) {
|
|
27
|
+
return track;
|
|
28
|
+
}
|
|
29
|
+
/** href to a rendered location; undefined when it cannot be linked (standalone PDF cross-page). */
|
|
30
|
+
export function hrefTo(ctx, targetPage, fragment) {
|
|
31
|
+
if (targetPage === ctx.page)
|
|
32
|
+
return `#${fragment}`;
|
|
33
|
+
if (ctx.standalone)
|
|
34
|
+
return undefined;
|
|
35
|
+
return ctx.page === 'human' ? `operator/index.html#${fragment}` : `../index.html#${fragment}`;
|
|
36
|
+
}
|
|
37
|
+
/** Resolve `kind:id#anchor` into a link target and human label. */
|
|
38
|
+
export function resolveRef(ctx, kind, id, anchor) {
|
|
39
|
+
switch (kind) {
|
|
40
|
+
case 'check': {
|
|
41
|
+
const c = ctx.checks.get(id);
|
|
42
|
+
return c ? { href: hrefTo(ctx, 'human', `check-${id}`), label: `Check: ${id}`, title: c.observable } : undefined;
|
|
43
|
+
}
|
|
44
|
+
case 'claim': {
|
|
45
|
+
const c = ctx.claims.get(id);
|
|
46
|
+
return c ? { href: hrefTo(ctx, 'human', `claim-${id}`), label: `Claim: ${id}`, title: c.text } : undefined;
|
|
47
|
+
}
|
|
48
|
+
case 'source': {
|
|
49
|
+
const s = ctx.sources.get(id);
|
|
50
|
+
return s ? { href: hrefTo(ctx, 'human', `source-${id}`), label: s.title, title: `${s.title} (${s.version})` } : undefined;
|
|
51
|
+
}
|
|
52
|
+
case 'result': {
|
|
53
|
+
const r = ctx.results.get(id);
|
|
54
|
+
return r ? { href: hrefTo(ctx, 'human', `result-${id}`), label: r.label ?? `Result: ${id}` } : undefined;
|
|
55
|
+
}
|
|
56
|
+
case 'pause': {
|
|
57
|
+
const p = ctx.pauses.get(id);
|
|
58
|
+
return p ? { href: hrefTo(ctx, 'human', `pause-${id}`), label: `Pause: ${id}`, title: p.trigger } : undefined;
|
|
59
|
+
}
|
|
60
|
+
case 'entry': {
|
|
61
|
+
const e = ctx.entries.get(id);
|
|
62
|
+
if (!e)
|
|
63
|
+
return undefined;
|
|
64
|
+
const frag = anchor ? `${e.id}--${anchor}` : `e-${e.id}`;
|
|
65
|
+
return { href: hrefTo(ctx, e.track, frag), label: anchor ? (e.headings.find((h) => h.anchor === anchor)?.text ?? e.title) : e.title };
|
|
66
|
+
}
|
|
67
|
+
case 'asset': {
|
|
68
|
+
const a = ctx.assets.get(id);
|
|
69
|
+
const src = a ? ctx.assetSrc(a) : undefined;
|
|
70
|
+
return a ? { href: src, label: a.alt ?? a.id } : undefined;
|
|
71
|
+
}
|
|
72
|
+
case 'block': {
|
|
73
|
+
const e = ctx.blockEntry.get(id);
|
|
74
|
+
return e ? { href: hrefTo(ctx, e.track, `b-${id}`), label: `Block: ${id}` } : undefined;
|
|
75
|
+
}
|
|
76
|
+
case 'input': {
|
|
77
|
+
const i = (ctx.model.brief?.inputs ?? []).find((x) => x.id === id);
|
|
78
|
+
return i ? { href: hrefTo(ctx, 'human', `input-${id}`), label: i.label ?? id } : undefined;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
export function titleOf(model) {
|
|
83
|
+
return model.guide ? guideTitle(model.guide) : 'Made Easy';
|
|
84
|
+
}
|
|
85
|
+
export function shortRef(digest) {
|
|
86
|
+
return shortRevision(digest, 12);
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/render/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Asset } from '../contracts/index.js';
|
|
2
|
+
import { type GuideModel } from '../model.js';
|
|
3
|
+
import { resolveRef, type Page } from './context.js';
|
|
4
|
+
export declare const GENERATOR = "@x12i/made-easy";
|
|
5
|
+
export interface PageOptions {
|
|
6
|
+
model: GuideModel;
|
|
7
|
+
page: Page;
|
|
8
|
+
version: string;
|
|
9
|
+
/** Standalone documents (PDF) inline assets and omit sibling links. */
|
|
10
|
+
standalone?: boolean;
|
|
11
|
+
audience?: 'private' | 'public';
|
|
12
|
+
draft?: boolean;
|
|
13
|
+
assetSrc?: (asset: Asset) => string | undefined;
|
|
14
|
+
/** Short text such as "N errors, M warnings" shown in the draft banner. */
|
|
15
|
+
draftNote?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function renderPage(opts: PageOptions): string;
|
|
18
|
+
export { resolveRef };
|
|
19
|
+
//# sourceMappingURL=html.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAS,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAyB,KAAK,UAAU,EAAmB,MAAM,aAAa,CAAC;AAItF,OAAO,EAAe,UAAU,EAAE,KAAK,IAAI,EAAsB,MAAM,cAAc,CAAC;AAGtF,eAAO,MAAM,SAAS,oBAAoB,CAAC;AAE3C,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,GAAG,SAAS,CAAC;IAChD,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA8GD,wBAAgB,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAqEpD;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { computeUsage } from '../analysis.js';
|
|
2
|
+
import { entriesOf, guideTitle } from '../model.js';
|
|
3
|
+
import { BOOK_THEME_CSS } from '../theme/book.js';
|
|
4
|
+
import { escapeHtml as esc } from '../util.js';
|
|
5
|
+
import { renderBlockHtml } from './blocks.js';
|
|
6
|
+
import { makeContext, resolveRef } from './context.js';
|
|
7
|
+
import { renderInline, renderProse } from './prose.js';
|
|
8
|
+
export const GENERATOR = '@x12i/made-easy';
|
|
9
|
+
const CSP = "default-src 'none'; img-src 'self' data: file:; style-src 'unsafe-inline'; font-src 'self' data:; base-uri 'none'; form-action 'none'";
|
|
10
|
+
function short(digest) {
|
|
11
|
+
return digest.replace(/^sha256:/, '').slice(0, 12);
|
|
12
|
+
}
|
|
13
|
+
function renderEntry(entry, ctx, kind) {
|
|
14
|
+
const body = entry.nodes
|
|
15
|
+
.map((node) => {
|
|
16
|
+
if (node.kind === 'block')
|
|
17
|
+
return renderBlockHtml(node, entry, ctx);
|
|
18
|
+
const ids = entry.headings
|
|
19
|
+
.filter((h) => h.line >= node.line && h.line <= node.endLine)
|
|
20
|
+
.map((h) => `${entry.id}--${h.anchor}`);
|
|
21
|
+
return renderProse(node.source, ctx, { headingIds: ids, levelShift: 1 });
|
|
22
|
+
})
|
|
23
|
+
.join('\n');
|
|
24
|
+
return `<article class="chapter ${kind}" id="e-${esc(entry.id)}" aria-label="${esc(entry.title)}" data-role="${esc(entry.role)}">
|
|
25
|
+
<header><p class="chapter-no"></p>${entry.hasChapterHeading ? '' : `<h2>${esc(entry.title)}</h2>`}</header>
|
|
26
|
+
${body}
|
|
27
|
+
<p class="back-to-top"><a href="#top">Back to contents</a></p>
|
|
28
|
+
</article>`;
|
|
29
|
+
}
|
|
30
|
+
function renderChecksAppendix(ctx) {
|
|
31
|
+
const m = ctx.model;
|
|
32
|
+
const evidenceFor = (id) => (m.sources?.checkEvidence ?? []).find((c) => c.check === id)?.evidence ?? [];
|
|
33
|
+
const items = (m.checks?.checks ?? [])
|
|
34
|
+
.map((c) => {
|
|
35
|
+
const ev = evidenceFor(c.id)
|
|
36
|
+
.map((e) => {
|
|
37
|
+
const s = ctx.sources.get(e.source);
|
|
38
|
+
return `<li><a href="#source-${esc(e.source)}">${esc(s?.title ?? e.source)}</a>${s ? ` <span class="sub">${esc(s.version)}</span>` : ''}${e.locator ? ` \u2014 ${esc(e.locator)}` : ''}</li>`;
|
|
39
|
+
})
|
|
40
|
+
.join('');
|
|
41
|
+
const accepted = (m.brief?.acceptanceChecks ?? []).includes(c.id);
|
|
42
|
+
return `<section class="check" id="check-${esc(c.id)}"><h3>${esc(c.id)}${accepted ? ' <span class="tag">acceptance check</span>' : ''}</h3>
|
|
43
|
+
<dl class="facts"><div class="fact"><dt>Observable</dt><dd>${renderInline(c.observable, ctx)}</dd></div><div class="fact"><dt>Evidence source</dt><dd>${renderInline(c.evidenceSource, ctx)}</dd></div><div class="fact"><dt>Pass condition</dt><dd>${renderInline(c.passCondition, ctx)}</dd></div><div class="fact"><dt>If evidence is missing</dt><dd>${renderInline(c.onMissing, ctx)}</dd></div><div class="fact"><dt>If evidence contradicts</dt><dd>${renderInline(c.onContradictory, ctx)}</dd></div></dl>
|
|
44
|
+
${ev ? `<p class="sub">Evidence</p><ul>${ev}</ul>` : ''}</section>`;
|
|
45
|
+
})
|
|
46
|
+
.join('\n');
|
|
47
|
+
return `<article class="chapter appendix" id="e-appendix-checks" aria-label="Acceptance checks"><header><p class="chapter-no"></p><h2>Acceptance checks</h2></header>
|
|
48
|
+
<p>Every worked result in this guide is recorded against these checks.</p>${items}<p class="back-to-top"><a href="#top">Back to contents</a></p></article>`;
|
|
49
|
+
}
|
|
50
|
+
function renderEvidenceAppendix(ctx) {
|
|
51
|
+
const m = ctx.model;
|
|
52
|
+
const usage = computeUsage(m);
|
|
53
|
+
const claims = (m.sources?.claims ?? [])
|
|
54
|
+
.map((c) => {
|
|
55
|
+
const ev = (c.evidence ?? [])
|
|
56
|
+
.map((e) => {
|
|
57
|
+
const s = ctx.sources.get(e.source);
|
|
58
|
+
return `<li><a href="#source-${esc(e.source)}">${esc(s?.title ?? e.source)}</a>${s ? ` <span class="sub">${esc(s.version)}</span>` : ''}${e.locator ? ` \u2014 ${esc(e.locator)}` : ''}</li>`;
|
|
59
|
+
})
|
|
60
|
+
.join('');
|
|
61
|
+
const status = c.status ?? 'supported';
|
|
62
|
+
return `<section class="claim" id="claim-${esc(c.id)}"><p><strong>${esc(c.id)}</strong> <span class="tag status-${status}">${status}</span></p><p>${renderInline(c.text, ctx)}</p>${ev ? `<ul>${ev}</ul>` : ''}</section>`;
|
|
63
|
+
})
|
|
64
|
+
.join('\n');
|
|
65
|
+
const sources = (m.sources?.sources ?? [])
|
|
66
|
+
.filter((s) => usage.sources.has(s.id) && (ctx.audience === 'private' || (s.visibility ?? 'private') === 'public'))
|
|
67
|
+
.map((s) => `<section class="source" id="source-${esc(s.id)}"><p><strong>${esc(s.title)}</strong> ${s.synthetic ? '<span class="tag">synthetic evidence</span>' : ''}</p>
|
|
68
|
+
<p class="sub">Version ${esc(s.version)} \u00B7 ${esc(s.kind ?? 'source')} \u00B7 ${esc(s.visibility ?? 'private')}</p><p>${esc(s.locator)}</p>${s.note ? `<p>${renderInline(s.note, ctx)}</p>` : ''}</section>`)
|
|
69
|
+
.join('\n');
|
|
70
|
+
return `<article class="chapter appendix" id="e-appendix-evidence" aria-label="Evidence and sources"><header><p class="chapter-no"></p><h2>Evidence and sources</h2></header>
|
|
71
|
+
${claims ? `<h3>Claims</h3>${claims}` : ''}${sources ? `<h3>Sources</h3>${sources}` : ''}<p class="back-to-top"><a href="#top">Back to contents</a></p></article>`;
|
|
72
|
+
}
|
|
73
|
+
function renderReferenceAppendix(ctx) {
|
|
74
|
+
const m = ctx.model;
|
|
75
|
+
const pinned = new Map((m.brief?.operatorReference?.entries ?? []).map((p) => [p.id, p]));
|
|
76
|
+
const rows = entriesOf(m, 'operator')
|
|
77
|
+
.map((e) => {
|
|
78
|
+
const pin = pinned.get(e.id);
|
|
79
|
+
const state = !pin ? 'not pinned' : !pin.digest ? 'pin has no digest' : pin.digest === e.digest ? 'pinned, current' : 'pinned, STALE';
|
|
80
|
+
return `<tr><th scope="row"><a href="#e-${esc(e.id)}">${esc(e.title)}</a></th><td><code>${esc(e.path)}</code></td><td><code>${esc(short(e.digest))}</code></td><td>${state}</td></tr>`;
|
|
81
|
+
})
|
|
82
|
+
.join('');
|
|
83
|
+
const briefBlock = { kind: 'block', id: 'reference-brief', type: 'brief', props: { view: 'both' }, line: 0, endLine: 0, lineOf: () => undefined };
|
|
84
|
+
return `<article class="chapter appendix" id="e-appendix-revision" aria-label="Reference revision"><header><p class="chapter-no"></p><h2>Reference revision</h2></header>
|
|
85
|
+
<p>Operator-reference revision <code>${esc(short(m.referenceRevision))}</code>. The human guide links to this exact revision.</p>
|
|
86
|
+
<div class="table-wrap" role="region" tabindex="0" aria-label="Pinned entries"><table><thead><tr><th scope="col">Entry</th><th scope="col">File</th><th scope="col">Digest</th><th scope="col">Pin</th></tr></thead><tbody>${rows}</tbody></table></div>
|
|
87
|
+
<p class="back-to-top"><a href="#top">Back to contents</a></p></article>
|
|
88
|
+
<article class="chapter appendix" id="e-appendix-brief" aria-label="The brief"><header><p class="chapter-no"></p><h2>The brief</h2></header>${renderBlockHtml(briefBlock, { track: 'operator' }, ctx)}<p class="back-to-top"><a href="#top">Back to contents</a></p></article>`;
|
|
89
|
+
}
|
|
90
|
+
function renderToc(ctx, entries, generated) {
|
|
91
|
+
const items = entries
|
|
92
|
+
.map((e) => {
|
|
93
|
+
const subs = e.headings.filter((h) => h.level === 2);
|
|
94
|
+
return `<li><a href="#e-${esc(e.id)}">${esc(e.title)}</a>${subs.length ? `<ol class="toc-sub">${subs.map((h) => `<li><a href="#${esc(e.id)}--${esc(h.anchor)}">${esc(h.text.replace(/[`*_]/g, ''))}</a></li>`).join('')}</ol>` : ''}</li>`;
|
|
95
|
+
})
|
|
96
|
+
.join('');
|
|
97
|
+
const gen = generated.map((g) => `<li><a href="#e-${esc(g.id)}">${esc(g.title)}</a></li>`).join('');
|
|
98
|
+
const other = ctx.standalone
|
|
99
|
+
? ''
|
|
100
|
+
: ctx.page === 'human'
|
|
101
|
+
? `<li class="toc-other"><a href="operator/index.html">Operator reference</a></li>`
|
|
102
|
+
: `<li class="toc-other"><a href="../index.html">Human guide</a></li>`;
|
|
103
|
+
const files = ctx.standalone
|
|
104
|
+
? ''
|
|
105
|
+
: `<li class="toc-other"><a href="${ctx.page === 'human' ? '' : '../'}brief.md">brief.md</a> \u00B7 <a href="${ctx.page === 'human' ? '' : '../'}brief.json">brief.json</a></li>`;
|
|
106
|
+
return `<nav class="toc" aria-label="Contents"><p class="toc-title">Contents</p><ol>${items}${gen}${other}${files}</ol></nav>`;
|
|
107
|
+
}
|
|
108
|
+
export function renderPage(opts) {
|
|
109
|
+
const { model, page } = opts;
|
|
110
|
+
const guide = model.guide;
|
|
111
|
+
const ctx = makeContext(model, {
|
|
112
|
+
page,
|
|
113
|
+
standalone: opts.standalone,
|
|
114
|
+
audience: opts.audience,
|
|
115
|
+
draft: opts.draft,
|
|
116
|
+
assetSrc: opts.assetSrc,
|
|
117
|
+
});
|
|
118
|
+
const track = page;
|
|
119
|
+
const entries = entriesOf(model, track);
|
|
120
|
+
const authored = entries.map((e) => renderEntry(e, ctx, e.role === 'appendix' ? 'appendix' : 'chapter'));
|
|
121
|
+
const generated = page === 'human'
|
|
122
|
+
? [
|
|
123
|
+
{ id: 'appendix-checks', title: 'Acceptance checks', html: renderChecksAppendix(ctx) },
|
|
124
|
+
{ id: 'appendix-evidence', title: 'Evidence and sources', html: renderEvidenceAppendix(ctx) },
|
|
125
|
+
]
|
|
126
|
+
: [{ id: 'appendix-revision', title: 'Reference revision and brief', html: renderReferenceAppendix(ctx) }];
|
|
127
|
+
const title = guideTitle(guide);
|
|
128
|
+
const docTitle = page === 'human' ? title : `${title} \u2014 Operator reference`;
|
|
129
|
+
const draftBanner = opts.draft
|
|
130
|
+
? `<div class="draft-banner" role="note">DRAFT \u2014 not for publication.${opts.draftNote ? ` ${esc(opts.draftNote)}` : ''}</div><div class="draft-watermark" aria-hidden="true">DRAFT</div>`
|
|
131
|
+
: '';
|
|
132
|
+
const synthetic = (model.sources?.sources ?? []).some((s) => s.synthetic);
|
|
133
|
+
const profileTitle = model.recipe ? `${model.recipe.title} \u00B7 ${model.recipe.id}` : guide.recipe.id;
|
|
134
|
+
return `<!doctype html>
|
|
135
|
+
<html lang="${esc(guide.locale)}" data-theme="${esc(guide.theme.id)}@${esc(guide.theme.version)}">
|
|
136
|
+
<head>
|
|
137
|
+
<meta charset="utf-8">
|
|
138
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
139
|
+
<meta http-equiv="Content-Security-Policy" content="${CSP}">
|
|
140
|
+
<meta name="generator" content="${GENERATOR} ${esc(opts.version)}">
|
|
141
|
+
<meta name="made-easy:revision" content="${esc(model.revision)}">
|
|
142
|
+
<meta name="made-easy:reference-revision" content="${esc(model.referenceRevision)}">
|
|
143
|
+
<title>${esc(docTitle)}</title>
|
|
144
|
+
<style>${BOOK_THEME_CSS}</style>
|
|
145
|
+
</head>
|
|
146
|
+
<body class="me-doc track-${page}${opts.draft ? ' is-draft' : ''}" id="top">
|
|
147
|
+
<a class="skip-link" href="#main">Skip to content</a>
|
|
148
|
+
${draftBanner}
|
|
149
|
+
<header class="cover"><div class="cover-inner">
|
|
150
|
+
<p class="kicker">Made Easy \u00B7 ${page === 'human' ? 'Human guide' : 'Operator reference'}</p>
|
|
151
|
+
<h1>${esc(page === 'human' ? title : `${title}`)}</h1>
|
|
152
|
+
${guide.subject.subtitle ? `<p class="subtitle">${esc(guide.subject.subtitle)}</p>` : ''}
|
|
153
|
+
<dl class="cover-meta">
|
|
154
|
+
<dt>Subject</dt><dd>${esc(guide.subject.type)} \u00B7 ${esc(guide.subject.name)}</dd>
|
|
155
|
+
<dt>Scope</dt><dd>${esc(guide.subject.scope)}</dd>
|
|
156
|
+
<dt>Job</dt><dd><code>${esc(guide.jobId)}</code></dd>
|
|
157
|
+
<dt>Recipe</dt><dd>${esc(profileTitle)} (v${esc(guide.recipe.version)})</dd>
|
|
158
|
+
<dt>Revision</dt><dd><code>${esc(short(model.revision))}</code></dd>
|
|
159
|
+
<dt>Operator reference</dt><dd><code>${esc(short(model.referenceRevision))}</code></dd>
|
|
160
|
+
<dt>Guide</dt><dd><code>${esc(guide.guideId)}</code></dd>
|
|
161
|
+
</dl></div></header>
|
|
162
|
+
<div class="layout">
|
|
163
|
+
${renderToc(ctx, entries, generated)}
|
|
164
|
+
<main id="main" tabindex="-1">
|
|
165
|
+
${authored.join('\n')}
|
|
166
|
+
${generated.map((g) => g.html).join('\n')}
|
|
167
|
+
</main>
|
|
168
|
+
</div>
|
|
169
|
+
<footer class="colophon" role="contentinfo">
|
|
170
|
+
<p><strong>${esc(title)}</strong> \u00B7 revision <code>${esc(short(model.revision))}</code> \u00B7 operator reference <code>${esc(short(model.referenceRevision))}</code> \u00B7 guide <code>${esc(guide.guideId)}</code></p>
|
|
171
|
+
<p>Recipe ${esc(guide.recipe.id)}@${esc(guide.recipe.version)} \u00B7 theme ${esc(guide.theme.id)}@${esc(guide.theme.version)} \u00B7 built with ${GENERATOR} ${esc(opts.version)}.${synthetic ? ' This guide cites synthetic evidence, labelled where it appears.' : ''}${opts.draft ? ' Draft output is private and not for publication.' : ''}</p>
|
|
172
|
+
</footer>
|
|
173
|
+
</body>
|
|
174
|
+
</html>
|
|
175
|
+
`;
|
|
176
|
+
}
|
|
177
|
+
export { resolveRef };
|
|
178
|
+
//# sourceMappingURL=html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/render/html.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type GuideModel, type ModelEntry } from '../model.js';
|
|
2
|
+
import { type BriefDocument } from './brief.js';
|
|
3
|
+
import { type RenderContext } from './context.js';
|
|
4
|
+
export declare function renderEntryMarkdown(entry: ModelEntry, ctx: RenderContext, shift: number): string;
|
|
5
|
+
/** A whole track as plain Markdown with pinned revision metadata (operator/reference.md for the operator track). */
|
|
6
|
+
export declare function renderTrackMarkdown(model: GuideModel, track: 'human' | 'operator'): string;
|
|
7
|
+
export declare function renderReferenceMarkdown(model: GuideModel): string;
|
|
8
|
+
/** brief.md: printable worked brief, blank template and review checklist. */
|
|
9
|
+
export declare function renderBriefMarkdown(doc: BriefDocument): string;
|
|
10
|
+
export declare function renderBriefJson(model: GuideModel): string;
|
|
11
|
+
//# sourceMappingURL=markdown-out.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-out.d.ts","sourceRoot":"","sources":["../../src/render/markdown-out.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAEtF,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AA6B/D,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAOhG;AAED,oHAAoH;AACpH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAmB1F;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEjE;AAUD,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAiD9D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAEzD"}
|