@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 CHANGED
@@ -1,9 +1,9 @@
1
1
  # @publisle/cli
2
2
 
3
- Optional Node-only validation and explicit source upgrades.
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.1.1` and published under the npm `beta` tag.
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":"AA6DA,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;AAkGD,wFAAwF;AACxF,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,EAAE,KAAK,GACR,OAAO,CAAC,MAAM,CAAC,CA4LjB"}
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("&", "&amp;")
243
+ .replaceAll("<", "&lt;")
244
+ .replaceAll(">", "&gt;")
245
+ .replaceAll('"', "&quot;");
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.1.1",
4
- "description": "Optional Node-only validation and explicit source upgrades.",
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.1",
33
+ "@publisle/contracts": "^0.1.2",
27
34
  "@publisle/blocks-core": "^0.1.1",
28
- "@publisle/core": "^0.1.1",
29
- "@publisle/schema": "^0.1.0",
30
- "@publisle/markdown": "^0.1.1"
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.1.1"
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("&", "&amp;")
315
+ .replaceAll("<", "&lt;")
316
+ .replaceAll(">", "&gt;")
317
+ .replaceAll('"', "&quot;");
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;