@publisle/cli 0.1.1 → 0.2.1
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 +18 -2
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +141 -5
- package/dist/run.js.map +1 -1
- package/package.json +15 -7
- package/src/run.ts +156 -3
package/README.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# @publisle/cli
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Node CLI for validation, static reader builds, and explicit source upgrades.
|
|
4
4
|
|
|
5
5
|
Requires Node.js 24 or later. Framework adapters also require their declared peer dependencies.
|
|
6
|
-
This package is part of Publisle, independently versioned at `0.
|
|
6
|
+
This package is part of Publisle, independently versioned at `0.2.1` and published under the npm `latest` tag.
|
|
7
7
|
Frozen contract version integers are independent of npm package versions.
|
|
8
8
|
|
|
9
9
|
- [Core standard](https://github.com/VoidReg/publisle/blob/main/docs/standards/README.md)
|
|
@@ -11,3 +11,19 @@ Frozen contract version integers are independent of npm package versions.
|
|
|
11
11
|
- [Distribution and release checklist](https://github.com/VoidReg/publisle/blob/main/docs/guides/releases.md)
|
|
12
12
|
|
|
13
13
|
Core packages do not install Research templates, citeproc, PDF compilers, or TeX.
|
|
14
|
+
|
|
15
|
+
## Build a static reader
|
|
16
|
+
|
|
17
|
+
```sh
|
|
18
|
+
npm install -g @publisle/cli
|
|
19
|
+
publisle build article.md --out dist/
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The input may be Markdown or canonical JSON. Add `--config host.mjs` (or
|
|
23
|
+
`host.ts`) for a trusted Core registry and Markdown codecs. The output directory
|
|
24
|
+
must be new. It contains `index.html`, `document.css`, `katex.css`, fonts, and a
|
|
25
|
+
`publication.json` reader manifest. Islands retain authored fallbacks: the CLI
|
|
26
|
+
has no host runtime. Attach interactive runtimes through a framework host.
|
|
27
|
+
|
|
28
|
+
Exit codes: **0** success, **1** document errors, **2** usage, config, or I/O errors.
|
|
29
|
+
Research export requires a separate `@publisle/cli-research` installation.
|
package/dist/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAwEA,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAsGD,wFAAwF;AACxF,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,EAAE,KAAK,GACR,OAAO,CAAC,MAAM,CAAC,CAsUjB"}
|
package/dist/run.js
CHANGED
|
@@ -6,14 +6,16 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
6
6
|
}
|
|
7
7
|
return path;
|
|
8
8
|
};
|
|
9
|
-
import { chmod, lstat, mkdtemp, readFile, rename, rmdir, unlink, writeFile, } from "node:fs/promises";
|
|
9
|
+
import { chmod, copyFile, cp, lstat, mkdir, mkdtemp, readFile, rename, rmdir, unlink, writeFile, } from "node:fs/promises";
|
|
10
|
+
import { createRequire } from "node:module";
|
|
10
11
|
import { dirname, extname, join, resolve } from "node:path";
|
|
11
12
|
import { pathToFileURL } from "node:url";
|
|
12
|
-
import { isPlainObject, parseDocument, parseJson, } from "@publisle/schema";
|
|
13
|
-
import { toReadingMarkdown } from "@publisle/markdown";
|
|
13
|
+
import { isPlainObject, locateDiagnostic, parseDocument, parseJson, } from "@publisle/schema";
|
|
14
|
+
import { fromMarkdown, toReadingMarkdown } from "@publisle/markdown";
|
|
15
|
+
import { compilePublication, publicationReaderManifest, } from "@publisle/adapter-core";
|
|
14
16
|
import { processSource, lockSource } from "./index.js";
|
|
15
17
|
import { exportSemanticDocument, inspectDocument, validateContractBundle, } from "@publisle/contracts";
|
|
16
|
-
import { createRegistry } from "@publisle/core";
|
|
18
|
+
import { createRegistry, prepare } from "@publisle/core";
|
|
17
19
|
import { coreBlockDefinitions } from "@publisle/blocks-core";
|
|
18
20
|
const researchCommands = ["export", "bibliography", "doctor", "setup"];
|
|
19
21
|
function isResearchCommand(value) {
|
|
@@ -33,6 +35,10 @@ async function loadResearchPlugin() {
|
|
|
33
35
|
}
|
|
34
36
|
}
|
|
35
37
|
const help = `Usage: publisle validate|upgrade|lock <file.json|file.md> [--config <host.mjs|host.ts>] [--format json|markdown]
|
|
38
|
+
Static build: publisle build <file.json|file.md> --out <new-directory> [--config <host.mjs|host.ts>]
|
|
39
|
+
Compiles a portable document into a static reader page. Interactive blocks
|
|
40
|
+
ship their authored fallbacks (the CLI has no host runtime). publication.json carries the island manifests
|
|
41
|
+
for hosts that attach runtimes later. --out refuses an existing directory.
|
|
36
42
|
JSON-only inspection: publisle inspect|semantic <source.json> [--bundle <contracts.json>] [--mode linked|standalone]
|
|
37
43
|
Reading projection: publisle reading <source.json> (not a round trip).
|
|
38
44
|
Research profile (requires the optional @publisle/cli-research plugin):
|
|
@@ -123,6 +129,136 @@ export async function runCli(args, io) {
|
|
|
123
129
|
diagnosticText,
|
|
124
130
|
});
|
|
125
131
|
}
|
|
132
|
+
if (command === "build") {
|
|
133
|
+
let file;
|
|
134
|
+
let outDirectory;
|
|
135
|
+
let configFile;
|
|
136
|
+
const seen = new Set();
|
|
137
|
+
for (let index = 1; index < args.length; index += 1) {
|
|
138
|
+
const arg = args[index];
|
|
139
|
+
if (arg === undefined)
|
|
140
|
+
continue;
|
|
141
|
+
if (!arg.startsWith("-")) {
|
|
142
|
+
if (file)
|
|
143
|
+
throw new Error("Only one input file is supported.");
|
|
144
|
+
file = arg;
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
if (seen.has(arg))
|
|
148
|
+
throw new Error(`Duplicate option ${arg}.`);
|
|
149
|
+
seen.add(arg);
|
|
150
|
+
if (arg !== "--out" && arg !== "--config")
|
|
151
|
+
throw new Error("build accepts only --out and --config.");
|
|
152
|
+
const value = args[++index];
|
|
153
|
+
if (!value || value.startsWith("-"))
|
|
154
|
+
throw new Error(`Missing value for ${arg}.`);
|
|
155
|
+
if (arg === "--out")
|
|
156
|
+
outDirectory = value;
|
|
157
|
+
else
|
|
158
|
+
configFile = value;
|
|
159
|
+
}
|
|
160
|
+
if (!file)
|
|
161
|
+
throw new Error("An input file is required.");
|
|
162
|
+
if (!outDirectory)
|
|
163
|
+
throw new Error("build requires --out <new-directory>.");
|
|
164
|
+
file = resolve(file);
|
|
165
|
+
const extension = extname(file).toLowerCase();
|
|
166
|
+
const format = extension === ".json"
|
|
167
|
+
? "json"
|
|
168
|
+
: extension === ".md" || extension === ".markdown"
|
|
169
|
+
? "markdown"
|
|
170
|
+
: undefined;
|
|
171
|
+
if (!format)
|
|
172
|
+
throw new Error("build reads .json or .md sources; got " + extension);
|
|
173
|
+
const config = await loadConfig(configFile);
|
|
174
|
+
const preparation = {
|
|
175
|
+
registry: createRegistry(coreBlockDefinitions),
|
|
176
|
+
unknownBlocks: "preserve",
|
|
177
|
+
...config.prepare,
|
|
178
|
+
};
|
|
179
|
+
const source = await readFile(file, "utf8");
|
|
180
|
+
let sourceMap;
|
|
181
|
+
let input;
|
|
182
|
+
const diagnostics = [];
|
|
183
|
+
if (format === "markdown") {
|
|
184
|
+
const imported = fromMarkdown(source, {
|
|
185
|
+
...config.markdown,
|
|
186
|
+
sourceName: file,
|
|
187
|
+
resolveSchemaVersion: (type) => preparation.registry.get(type)?.schemaVersion,
|
|
188
|
+
});
|
|
189
|
+
diagnostics.push(...imported.diagnostics);
|
|
190
|
+
sourceMap = imported.sourceMap;
|
|
191
|
+
if (!imported.document) {
|
|
192
|
+
for (const item of diagnostics)
|
|
193
|
+
io.stderr(diagnosticText(item, file));
|
|
194
|
+
return 1;
|
|
195
|
+
}
|
|
196
|
+
input = imported.document;
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
try {
|
|
200
|
+
input = parseDocument(parseJson(source));
|
|
201
|
+
}
|
|
202
|
+
catch (cause) {
|
|
203
|
+
io.stderr(`${file}: ${cause instanceof Error ? cause.message : "Invalid document"}\n`);
|
|
204
|
+
return 1;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
const prepared = prepare(input, {
|
|
208
|
+
...preparation,
|
|
209
|
+
...(sourceMap ? { sourceMap } : {}),
|
|
210
|
+
});
|
|
211
|
+
diagnostics.push(...prepared.diagnostics.map((item) => locateDiagnostic(item, sourceMap ?? {
|
|
212
|
+
document: { source: file, line: 1, column: 1 },
|
|
213
|
+
blocks: {},
|
|
214
|
+
})));
|
|
215
|
+
for (const item of diagnostics)
|
|
216
|
+
io.stderr(diagnosticText(item, file));
|
|
217
|
+
if (!prepared.document)
|
|
218
|
+
return 1;
|
|
219
|
+
if (diagnostics.some(({ level }) => level === "error"))
|
|
220
|
+
return 1;
|
|
221
|
+
const artifact = compilePublication(prepared.document);
|
|
222
|
+
const out = resolve(outDirectory);
|
|
223
|
+
// mkdir without recursive fails when the directory already exists:
|
|
224
|
+
// a build output is always a fresh directory.
|
|
225
|
+
await mkdir(out);
|
|
226
|
+
const styles = createRequire(import.meta.url);
|
|
227
|
+
const documentCss = styles.resolve("@publisle/adapter-core/document.css");
|
|
228
|
+
// The exported stylesheet is an @import stub; inline the real KaTeX
|
|
229
|
+
// stylesheet resolved from adapter-core's own dependency.
|
|
230
|
+
const katexCss = createRequire(documentCss).resolve("katex/dist/katex.min.css");
|
|
231
|
+
await Promise.all([
|
|
232
|
+
copyFile(documentCss, join(out, "document.css")),
|
|
233
|
+
copyFile(katexCss, join(out, "katex.css")),
|
|
234
|
+
cp(join(dirname(katexCss), "fonts"), join(out, "fonts"), {
|
|
235
|
+
recursive: true,
|
|
236
|
+
}),
|
|
237
|
+
]);
|
|
238
|
+
const title = prepared.document.metadata?.title;
|
|
239
|
+
const blocks = prepared.document.blocks.length;
|
|
240
|
+
const islands = artifact.islands.length;
|
|
241
|
+
const escapeHtml = (value) => value
|
|
242
|
+
.replaceAll("&", "&")
|
|
243
|
+
.replaceAll("<", "<")
|
|
244
|
+
.replaceAll(">", ">")
|
|
245
|
+
.replaceAll('"', """);
|
|
246
|
+
const page = `<!doctype html>
|
|
247
|
+
<html lang="${escapeHtml(prepared.document.metadata?.language ?? "en")}">
|
|
248
|
+
<meta charset="utf-8">
|
|
249
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
250
|
+
<title>${escapeHtml(title ?? "Publication")}</title>
|
|
251
|
+
<link rel="stylesheet" href="./document.css">
|
|
252
|
+
<link rel="stylesheet" href="./katex.css">
|
|
253
|
+
<article class="publisle-document">
|
|
254
|
+
${artifact.html}
|
|
255
|
+
</article>
|
|
256
|
+
`;
|
|
257
|
+
await writeFile(join(out, "index.html"), page, { flag: "wx" });
|
|
258
|
+
await writeFile(join(out, "publication.json"), `${JSON.stringify(publicationReaderManifest(artifact), null, 2)}\n`, { flag: "wx" });
|
|
259
|
+
io.stdout(`${out}: built index.html from ${String(blocks)} block${blocks === 1 ? "" : "s"}${islands ? ` (${String(islands)} interactive block${islands === 1 ? "" : "s"} shipped as static fallbacks)` : ""}\n`);
|
|
260
|
+
return 0;
|
|
261
|
+
}
|
|
126
262
|
if (command === "reading") {
|
|
127
263
|
if (args.length !== 2 || !args[1] || args[1].startsWith("-"))
|
|
128
264
|
throw new Error("reading requires only canonical source.json");
|
|
@@ -168,7 +304,7 @@ export async function runCli(args, io) {
|
|
|
168
304
|
return 0;
|
|
169
305
|
}
|
|
170
306
|
if (command !== "validate" && command !== "upgrade" && command !== "lock")
|
|
171
|
-
throw new Error("Expected validate, upgrade, lock, inspect, semantic, or reading. Research commands (export, bibliography, doctor, setup) require @publisle/cli-research.");
|
|
307
|
+
throw new Error("Expected validate, build, upgrade, lock, inspect, semantic, or reading. Research commands (export, bibliography, doctor, setup) require @publisle/cli-research.");
|
|
172
308
|
let file;
|
|
173
309
|
let configFile;
|
|
174
310
|
let outputFile;
|
package/dist/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@publisle/cli",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.2.1",
|
|
4
|
+
"description": "Node CLI for validation, static reader builds, and explicit source upgrades.",
|
|
5
5
|
"license": "MIT",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"publisle",
|
|
8
|
+
"cli",
|
|
9
|
+
"validation",
|
|
10
|
+
"portable-documents",
|
|
11
|
+
"publishing"
|
|
12
|
+
],
|
|
6
13
|
"type": "module",
|
|
7
14
|
"engines": {
|
|
8
15
|
"node": ">=24"
|
|
@@ -23,14 +30,15 @@
|
|
|
23
30
|
"publisle": "./dist/bin.js"
|
|
24
31
|
},
|
|
25
32
|
"dependencies": {
|
|
26
|
-
"@publisle/contracts": "^0.1.
|
|
33
|
+
"@publisle/contracts": "^0.1.2",
|
|
27
34
|
"@publisle/blocks-core": "^0.1.1",
|
|
28
|
-
"@publisle/core": "^0.
|
|
29
|
-
"@publisle/
|
|
30
|
-
"@publisle/
|
|
35
|
+
"@publisle/adapter-core": "^0.2.0",
|
|
36
|
+
"@publisle/markdown": "^0.1.2",
|
|
37
|
+
"@publisle/core": "^0.1.2",
|
|
38
|
+
"@publisle/schema": "^0.1.1"
|
|
31
39
|
},
|
|
32
40
|
"devDependencies": {
|
|
33
|
-
"@publisle/cli-research": "0.
|
|
41
|
+
"@publisle/cli-research": "0.2.0"
|
|
34
42
|
},
|
|
35
43
|
"publishConfig": {
|
|
36
44
|
"access": "public"
|
package/src/run.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
chmod,
|
|
3
|
+
copyFile,
|
|
4
|
+
cp,
|
|
3
5
|
lstat,
|
|
6
|
+
mkdir,
|
|
4
7
|
mkdtemp,
|
|
5
8
|
readFile,
|
|
6
9
|
rename,
|
|
@@ -8,22 +11,30 @@ import {
|
|
|
8
11
|
unlink,
|
|
9
12
|
writeFile,
|
|
10
13
|
} from "node:fs/promises";
|
|
14
|
+
import { createRequire } from "node:module";
|
|
11
15
|
import { dirname, extname, join, resolve } from "node:path";
|
|
12
16
|
import { pathToFileURL } from "node:url";
|
|
13
17
|
import {
|
|
14
18
|
isPlainObject,
|
|
19
|
+
locateDiagnostic,
|
|
15
20
|
parseDocument,
|
|
16
21
|
parseJson,
|
|
17
22
|
type Diagnostic,
|
|
23
|
+
type Document,
|
|
24
|
+
type DocumentSourceMap,
|
|
18
25
|
} from "@publisle/schema";
|
|
19
|
-
import { toReadingMarkdown } from "@publisle/markdown";
|
|
26
|
+
import { fromMarkdown, toReadingMarkdown } from "@publisle/markdown";
|
|
27
|
+
import {
|
|
28
|
+
compilePublication,
|
|
29
|
+
publicationReaderManifest,
|
|
30
|
+
} from "@publisle/adapter-core";
|
|
20
31
|
import { processSource, lockSource, type CliConfig } from "./index.ts";
|
|
21
32
|
import {
|
|
22
33
|
exportSemanticDocument,
|
|
23
34
|
inspectDocument,
|
|
24
35
|
validateContractBundle,
|
|
25
36
|
} from "@publisle/contracts";
|
|
26
|
-
import { createRegistry } from "@publisle/core";
|
|
37
|
+
import { createRegistry, prepare, type PrepareOptions } from "@publisle/core";
|
|
27
38
|
import { coreBlockDefinitions } from "@publisle/blocks-core";
|
|
28
39
|
|
|
29
40
|
/**
|
|
@@ -65,6 +76,10 @@ export interface CliIo {
|
|
|
65
76
|
}
|
|
66
77
|
|
|
67
78
|
const help = `Usage: publisle validate|upgrade|lock <file.json|file.md> [--config <host.mjs|host.ts>] [--format json|markdown]
|
|
79
|
+
Static build: publisle build <file.json|file.md> --out <new-directory> [--config <host.mjs|host.ts>]
|
|
80
|
+
Compiles a portable document into a static reader page. Interactive blocks
|
|
81
|
+
ship their authored fallbacks (the CLI has no host runtime). publication.json carries the island manifests
|
|
82
|
+
for hosts that attach runtimes later. --out refuses an existing directory.
|
|
68
83
|
JSON-only inspection: publisle inspect|semantic <source.json> [--bundle <contracts.json>] [--mode linked|standalone]
|
|
69
84
|
Reading projection: publisle reading <source.json> (not a round trip).
|
|
70
85
|
Research profile (requires the optional @publisle/cli-research plugin):
|
|
@@ -184,6 +199,144 @@ export async function runCli(
|
|
|
184
199
|
diagnosticText,
|
|
185
200
|
});
|
|
186
201
|
}
|
|
202
|
+
if (command === "build") {
|
|
203
|
+
let file: string | undefined;
|
|
204
|
+
let outDirectory: string | undefined;
|
|
205
|
+
let configFile: string | undefined;
|
|
206
|
+
const seen = new Set<string>();
|
|
207
|
+
for (let index = 1; index < args.length; index += 1) {
|
|
208
|
+
const arg = args[index];
|
|
209
|
+
if (arg === undefined) continue;
|
|
210
|
+
if (!arg.startsWith("-")) {
|
|
211
|
+
if (file) throw new Error("Only one input file is supported.");
|
|
212
|
+
file = arg;
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
if (seen.has(arg)) throw new Error(`Duplicate option ${arg}.`);
|
|
216
|
+
seen.add(arg);
|
|
217
|
+
if (arg !== "--out" && arg !== "--config")
|
|
218
|
+
throw new Error("build accepts only --out and --config.");
|
|
219
|
+
const value = args[++index];
|
|
220
|
+
if (!value || value.startsWith("-"))
|
|
221
|
+
throw new Error(`Missing value for ${arg}.`);
|
|
222
|
+
if (arg === "--out") outDirectory = value;
|
|
223
|
+
else configFile = value;
|
|
224
|
+
}
|
|
225
|
+
if (!file) throw new Error("An input file is required.");
|
|
226
|
+
if (!outDirectory)
|
|
227
|
+
throw new Error("build requires --out <new-directory>.");
|
|
228
|
+
file = resolve(file);
|
|
229
|
+
const extension = extname(file).toLowerCase();
|
|
230
|
+
const format =
|
|
231
|
+
extension === ".json"
|
|
232
|
+
? "json"
|
|
233
|
+
: extension === ".md" || extension === ".markdown"
|
|
234
|
+
? "markdown"
|
|
235
|
+
: undefined;
|
|
236
|
+
if (!format)
|
|
237
|
+
throw new Error("build reads .json or .md sources; got " + extension);
|
|
238
|
+
const config = await loadConfig(configFile);
|
|
239
|
+
const preparation: PrepareOptions = {
|
|
240
|
+
registry: createRegistry(coreBlockDefinitions),
|
|
241
|
+
unknownBlocks: "preserve",
|
|
242
|
+
...config.prepare,
|
|
243
|
+
};
|
|
244
|
+
const source = await readFile(file, "utf8");
|
|
245
|
+
let sourceMap: DocumentSourceMap | undefined;
|
|
246
|
+
let input: Document;
|
|
247
|
+
const diagnostics: Diagnostic[] = [];
|
|
248
|
+
if (format === "markdown") {
|
|
249
|
+
const imported = fromMarkdown(source, {
|
|
250
|
+
...config.markdown,
|
|
251
|
+
sourceName: file,
|
|
252
|
+
resolveSchemaVersion: (type: `${string}:${string}`) =>
|
|
253
|
+
preparation.registry.get(type)?.schemaVersion,
|
|
254
|
+
});
|
|
255
|
+
diagnostics.push(...imported.diagnostics);
|
|
256
|
+
sourceMap = imported.sourceMap;
|
|
257
|
+
if (!imported.document) {
|
|
258
|
+
for (const item of diagnostics) io.stderr(diagnosticText(item, file));
|
|
259
|
+
return 1;
|
|
260
|
+
}
|
|
261
|
+
input = imported.document;
|
|
262
|
+
} else {
|
|
263
|
+
try {
|
|
264
|
+
input = parseDocument(parseJson(source));
|
|
265
|
+
} catch (cause) {
|
|
266
|
+
io.stderr(
|
|
267
|
+
`${file}: ${cause instanceof Error ? cause.message : "Invalid document"}\n`,
|
|
268
|
+
);
|
|
269
|
+
return 1;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
const prepared = prepare(input, {
|
|
273
|
+
...preparation,
|
|
274
|
+
...(sourceMap ? { sourceMap } : {}),
|
|
275
|
+
});
|
|
276
|
+
diagnostics.push(
|
|
277
|
+
...prepared.diagnostics.map((item) =>
|
|
278
|
+
locateDiagnostic(
|
|
279
|
+
item,
|
|
280
|
+
sourceMap ?? {
|
|
281
|
+
document: { source: file, line: 1, column: 1 },
|
|
282
|
+
blocks: {},
|
|
283
|
+
},
|
|
284
|
+
),
|
|
285
|
+
),
|
|
286
|
+
);
|
|
287
|
+
for (const item of diagnostics) io.stderr(diagnosticText(item, file));
|
|
288
|
+
if (!prepared.document) return 1;
|
|
289
|
+
if (diagnostics.some(({ level }) => level === "error")) return 1;
|
|
290
|
+
const artifact = compilePublication(prepared.document);
|
|
291
|
+
const out = resolve(outDirectory);
|
|
292
|
+
// mkdir without recursive fails when the directory already exists:
|
|
293
|
+
// a build output is always a fresh directory.
|
|
294
|
+
await mkdir(out);
|
|
295
|
+
const styles = createRequire(import.meta.url);
|
|
296
|
+
const documentCss = styles.resolve("@publisle/adapter-core/document.css");
|
|
297
|
+
// The exported stylesheet is an @import stub; inline the real KaTeX
|
|
298
|
+
// stylesheet resolved from adapter-core's own dependency.
|
|
299
|
+
const katexCss = createRequire(documentCss).resolve(
|
|
300
|
+
"katex/dist/katex.min.css",
|
|
301
|
+
);
|
|
302
|
+
await Promise.all([
|
|
303
|
+
copyFile(documentCss, join(out, "document.css")),
|
|
304
|
+
copyFile(katexCss, join(out, "katex.css")),
|
|
305
|
+
cp(join(dirname(katexCss), "fonts"), join(out, "fonts"), {
|
|
306
|
+
recursive: true,
|
|
307
|
+
}),
|
|
308
|
+
]);
|
|
309
|
+
const title = prepared.document.metadata?.title;
|
|
310
|
+
const blocks = prepared.document.blocks.length;
|
|
311
|
+
const islands = artifact.islands.length;
|
|
312
|
+
const escapeHtml = (value: string) =>
|
|
313
|
+
value
|
|
314
|
+
.replaceAll("&", "&")
|
|
315
|
+
.replaceAll("<", "<")
|
|
316
|
+
.replaceAll(">", ">")
|
|
317
|
+
.replaceAll('"', """);
|
|
318
|
+
const page = `<!doctype html>
|
|
319
|
+
<html lang="${escapeHtml(prepared.document.metadata?.language ?? "en")}">
|
|
320
|
+
<meta charset="utf-8">
|
|
321
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
322
|
+
<title>${escapeHtml(title ?? "Publication")}</title>
|
|
323
|
+
<link rel="stylesheet" href="./document.css">
|
|
324
|
+
<link rel="stylesheet" href="./katex.css">
|
|
325
|
+
<article class="publisle-document">
|
|
326
|
+
${artifact.html}
|
|
327
|
+
</article>
|
|
328
|
+
`;
|
|
329
|
+
await writeFile(join(out, "index.html"), page, { flag: "wx" });
|
|
330
|
+
await writeFile(
|
|
331
|
+
join(out, "publication.json"),
|
|
332
|
+
`${JSON.stringify(publicationReaderManifest(artifact), null, 2)}\n`,
|
|
333
|
+
{ flag: "wx" },
|
|
334
|
+
);
|
|
335
|
+
io.stdout(
|
|
336
|
+
`${out}: built index.html from ${String(blocks)} block${blocks === 1 ? "" : "s"}${islands ? ` (${String(islands)} interactive block${islands === 1 ? "" : "s"} shipped as static fallbacks)` : ""}\n`,
|
|
337
|
+
);
|
|
338
|
+
return 0;
|
|
339
|
+
}
|
|
187
340
|
if (command === "reading") {
|
|
188
341
|
if (args.length !== 2 || !args[1] || args[1].startsWith("-"))
|
|
189
342
|
throw new Error("reading requires only canonical source.json");
|
|
@@ -235,7 +388,7 @@ export async function runCli(
|
|
|
235
388
|
}
|
|
236
389
|
if (command !== "validate" && command !== "upgrade" && command !== "lock")
|
|
237
390
|
throw new Error(
|
|
238
|
-
"Expected validate, upgrade, lock, inspect, semantic, or reading. Research commands (export, bibliography, doctor, setup) require @publisle/cli-research.",
|
|
391
|
+
"Expected validate, build, upgrade, lock, inspect, semantic, or reading. Research commands (export, bibliography, doctor, setup) require @publisle/cli-research.",
|
|
239
392
|
);
|
|
240
393
|
let file: string | undefined;
|
|
241
394
|
let configFile: string | undefined;
|