@book.dev/sdk 1.69.2 → 1.71.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.
@@ -26,14 +26,46 @@ export interface SpaceSnapshot {
26
26
  }
27
27
  /** Lossless structured sidecar, parsed back by {@link parseBookFolder}. */
28
28
  export declare const SPACE_BUNDLE_FILE = "openbook.space.json";
29
+ /**
30
+ * The whole-space **source-island** payload embedded in a standalone *site* HTML
31
+ * export: the full {@link SpaceSnapshot} (pages + databases + nesting via each
32
+ * page's `parentId`/`databaseId`) plus the root id shown first. Same structure as
33
+ * {@link SPACE_BUNDLE_FILE}, so a site export re-imports with structure intact.
34
+ */
35
+ export interface SpaceIsland {
36
+ version: 1;
37
+ rootId: string;
38
+ space: SpaceSnapshot;
39
+ }
40
+ /** Wrap a whole-space bundle as its source-island `<script>` (versioned, escaped). */
41
+ export declare function spaceIslandScript(rootId: string, space: SpaceSnapshot, opts?: {
42
+ attrs?: string;
43
+ indent?: string;
44
+ }): string;
45
+ /** Read a site export's space island back, or `null` when absent/corrupt. */
46
+ export declare function readSpaceIsland(html: string): SpaceIsland | null;
47
+ /** Options for {@link spaceToBookFiles}. */
48
+ export interface SpaceToBookFilesOptions {
49
+ /** Include the lossless {@link SPACE_BUNDLE_FILE} sidecar. Default true. */
50
+ includeBundle?: boolean;
51
+ /**
52
+ * The viewer runtime bundle's JS source (the compiled `OpenBookViewer` IIFE).
53
+ * When provided, ONE copy is emitted at {@link BOOK_RUNTIME_FILE}
54
+ * (`_openbook/viewer.js`) and every page file references it relatively, so a
55
+ * `.book.html` opened straight from `file://` hydrates into the interactive
56
+ * locked viewer with zero network — and the folder stays portable
57
+ * (moved/zipped whole). Omit it (bundle unavailable) and the writer emits NO
58
+ * reference: the files are the plain static articles, exactly as before.
59
+ */
60
+ runtime?: string;
61
+ }
29
62
  /**
30
63
  * Serialise a space to its on-disk files. By default includes the lossless
31
64
  * {@link SPACE_BUNDLE_FILE}; pass `includeBundle: false` for the human-readable
32
- * HTML files only.
65
+ * HTML files only. Pass `runtime` (the viewer bundle source) to make the folder
66
+ * self-hydrating — see {@link SpaceToBookFilesOptions.runtime}.
33
67
  */
34
- export declare function spaceToBookFiles(snapshot: SpaceSnapshot, opts?: {
35
- includeBundle?: boolean;
36
- }): BookFolderFile[];
68
+ export declare function spaceToBookFiles(snapshot: SpaceSnapshot, opts?: SpaceToBookFilesOptions): BookFolderFile[];
37
69
  /**
38
70
  * Reconstruct a space from a folder's files. Prefers the lossless
39
71
  * {@link SPACE_BUNDLE_FILE} when present; otherwise falls back to parsing the
@@ -1,6 +1,25 @@
1
- import { pageToBookHtml, bookHtmlToPage, slugify } from './bookfile';
1
+ import { pageToBookHtml, bookHtmlToPage, slugify, BOOK_RUNTIME_FILE } from './bookfile';
2
+ import { islandScript, readIsland } from './island';
2
3
  /** Lossless structured sidecar, parsed back by {@link parseBookFolder}. */
3
4
  export const SPACE_BUNDLE_FILE = 'openbook.space.json';
5
+ /** Wrap a whole-space bundle as its source-island `<script>` (versioned, escaped). */
6
+ export function spaceIslandScript(rootId, space, opts = {}) {
7
+ return islandScript({ version: 1, rootId, space }, opts);
8
+ }
9
+ /** Read a site export's space island back, or `null` when absent/corrupt. */
10
+ export function readSpaceIsland(html) {
11
+ const parsed = readIsland(html);
12
+ if (!parsed || !parsed.space || !Array.isArray(parsed.space.pages))
13
+ return null;
14
+ return {
15
+ version: 1,
16
+ rootId: parsed.rootId ?? '',
17
+ space: {
18
+ pages: parsed.space.pages,
19
+ databases: Array.isArray(parsed.space.databases) ? parsed.space.databases : [],
20
+ },
21
+ };
22
+ }
4
23
  const MAX_DEPTH = 64;
5
24
  const pageIcon = (page) => {
6
25
  const icon = page.properties?.sys_icon;
@@ -27,12 +46,14 @@ function rootOf(page, byId, dbHost) {
27
46
  /**
28
47
  * Serialise a space to its on-disk files. By default includes the lossless
29
48
  * {@link SPACE_BUNDLE_FILE}; pass `includeBundle: false` for the human-readable
30
- * HTML files only.
49
+ * HTML files only. Pass `runtime` (the viewer bundle source) to make the folder
50
+ * self-hydrating — see {@link SpaceToBookFilesOptions.runtime}.
31
51
  */
32
52
  export function spaceToBookFiles(snapshot, opts = {}) {
33
53
  const { pages, databases } = snapshot;
34
54
  const byId = new Map(pages.map((p) => [p.id, p]));
35
55
  const dbHost = new Map(databases.map((d) => [d.id, d.pageId]));
56
+ const runtimeRef = typeof opts.runtime === 'string' && opts.runtime.length > 0;
36
57
  const files = [];
37
58
  for (const page of pages) {
38
59
  const root = rootOf(page, byId, dbHost);
@@ -42,9 +63,11 @@ export function spaceToBookFiles(snapshot, opts = {}) {
42
63
  icon: pageIcon(page),
43
64
  updatedAt: page.updatedAt,
44
65
  data: page.data,
45
- });
66
+ }, { runtimeRef });
46
67
  files.push({ path: `${folderName(root)}/${fileName(page)}`, contents: html });
47
68
  }
69
+ if (runtimeRef)
70
+ files.push({ path: BOOK_RUNTIME_FILE, contents: opts.runtime });
48
71
  if (opts.includeBundle !== false) {
49
72
  files.push({ path: SPACE_BUNDLE_FILE, contents: JSON.stringify(snapshot, null, 2) });
50
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bookFolder.js","sourceRoot":"","sources":["../src/bookFolder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,cAAc,EAAE,cAAc,EAAE,OAAO,EAAC,MAAM,YAAY,CAAC;AA6BnE,2EAA2E;AAC3E,MAAM,CAAC,MAAM,iBAAiB,GAAG,qBAAqB,CAAC;AAEvD,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,MAAM,QAAQ,GAAG,CAAC,IAAgB,EAAiB,EAAE;IACnD,MAAM,IAAI,GAAI,IAAI,CAAC,UAAkD,EAAE,QAAQ,CAAC;IAChF,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,IAAgB,EAAU,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC/G,MAAM,QAAQ,GAAG,CAAC,IAAgB,EAAU,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,UAAU,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;AAElH,qFAAqF;AACrF,SAAS,MAAM,CACb,IAAgB,EAChB,IAA6B,EAC7B,MAA2B;IAE3B,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAClD,IAAI,QAAQ,GAAkB,IAAI,CAAC;QACnC,IAAI,IAAI,CAAC,QAAQ;YAAE,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;aACvC,IAAI,IAAI,CAAC,UAAU;YAAE,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;QACzE,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpD,IAAI,CAAC,MAAM;YAAE,MAAM;QACnB,IAAI,GAAG,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAuB,EAAE,OAAkC,EAAE;IAC5F,MAAM,EAAC,KAAK,EAAE,SAAS,EAAC,GAAG,QAAQ,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAE/D,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,cAAc,CAAC;YAC1B,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;YACpB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAC,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAuB;IACrD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC,CAAC;IAC3G,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAA2B,CAAC;YACrE,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,EAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAC,CAAC;YACnG,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mDAAmD;QACrD,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QAC3C,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC;AAED,iFAAiF;AACjF,SAAS,YAAY,CAAC,MAAqG;IACzH,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,gBAAgB,EAAE,IAAI;QACtB,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAC,CAAC,CAAC,CAAC,EAAE;QACtD,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"bookFolder.js","sourceRoot":"","sources":["../src/bookFolder.ts"],"names":[],"mappings":"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"}
@@ -23,10 +23,113 @@ export interface BookPageRecord {
23
23
  updatedAt: string;
24
24
  data: PageSnapshot;
25
25
  }
26
+ /**
27
+ * The canonical **page source-island** payload: a versioned {@link BookPageRecord}.
28
+ * This is exactly what a `.book.html` file AND a single-page / slide-deck HTML
29
+ * export embed, so `bookHtmlToPage` (or the generic `readIsland`) reads any of
30
+ * them back the same way. Downstream import consumes this shape.
31
+ */
32
+ export interface PageIsland extends BookPageRecord {
33
+ version: 1;
34
+ }
35
+ /** Wrap a page record as its source-island `<script>` (versioned, escaped). */
36
+ export declare function pageIslandScript(record: BookPageRecord, opts?: {
37
+ attrs?: string;
38
+ indent?: string;
39
+ }): string;
40
+ /**
41
+ * Sanitize a **legacy EditorJS** inline-HTML string for the readable `.book.html`
42
+ * body (block-editor pages carry structured rich-text runs and never reach here;
43
+ * they are already fully escaped by {@link runHtml}). This closes a stored-XSS
44
+ * sink: a hostile EditorJS-shaped snapshot (a crafted import or a pre-migration
45
+ * page) otherwise renders raw `<script>` / `<img onerror>` / event handlers /
46
+ * `javascript:` hrefs straight into the static file, which execute when the
47
+ * mirrored/exported file is opened from `file://`.
48
+ *
49
+ * DEFAULT-INERT: escape the ENTIRE string first (so everything is neutralized),
50
+ * then restore ONLY the exact, attribute-less inline formatting tags above via a
51
+ * regex that requires the tag name be followed immediately by `>` — so
52
+ * `<b onclick=…>` (escaped, has an attribute) is never restored, only a bare
53
+ * `<b>`. Anchors are DELIBERATELY not restored: safely reconstructing an `href`
54
+ * would require attribute + scheme parsing (the classic sanitizer footgun) with
55
+ * no DOM available in this isomorphic module — a legacy link degrades to inert
56
+ * escaped text in this best-effort readable preview, while the JSON island keeps
57
+ * it losslessly and the page migrates to fully-rendered runs the first time it
58
+ * is opened. See the module's mirror byte-compat note.
59
+ */
60
+ export declare function sanitizeLegacyInline(html: string): string;
61
+ /**
62
+ * Scheme-allowlist for an anchor `href` rendered into STATIC HTML (the readable
63
+ * `.book.html` body AND the standalone exports — both opened from a `file://`
64
+ * origin, where a `javascript:` link is click-to-execute XSS). `esc()` escapes
65
+ * the value as an attribute but does NOT touch the URI scheme, so schemes must
66
+ * be gated separately; callers degrade a rejected href to inert text.
67
+ *
68
+ * Permits: `http(s):`, `mailto:`, and relative / anchor / query links (`#`, `/`,
69
+ * `.`, `?`, or any path with no scheme). Denies everything else — `javascript:`,
70
+ * `data:`, `vbscript:`, `file:`, `tel:`, … — and **protocol-relative `//host`**
71
+ * (a benign relative link never starts `//`, and a protocol-relative URL is
72
+ * meaningless in a standalone file, so denying it closes a classic bypass).
73
+ *
74
+ * The scheme is tested on a NORMALIZED copy — ASCII control chars + whitespace
75
+ * removed and backslashes folded to `/`, then lower-cased — because browsers
76
+ * ignore embedded tabs/newlines and treat `\` as `/` when parsing a URL, so
77
+ * `jAvA\tscript:` or `/\/\host` would otherwise slip past a naive prefix check.
78
+ */
79
+ export declare function isSafeHref(raw: string): boolean;
80
+ /** The folder-level runtime directory name (never a valid book-folder slug). */
81
+ export declare const BOOK_RUNTIME_DIR = "_openbook";
82
+ /** Relative path (from the folder root) of the shared viewer runtime bundle. */
83
+ export declare const BOOK_RUNTIME_FILE = "_openbook/viewer.js";
84
+ /**
85
+ * The **byte-constant** runtime reference block a `.book.html` embeds in its
86
+ * `<head>` when the folder carries the shared viewer bundle (`_openbook/viewer.js`
87
+ * — ONE copy per folder, owner decision 2026-07-04: never vendored per-file).
88
+ *
89
+ * Stability contract: this block contains NO per-page and NO per-version variance
90
+ * (no content hash, no build id), so
91
+ * - a page save re-renders to the same reference bytes (no mirror churn), and
92
+ * - a viewer-bundle upgrade rewrites ONLY `_openbook/viewer.js`, never the N
93
+ * page files. Only gaining/losing the runtime altogether changes page bytes
94
+ * (a deliberate one-time, upgrade-class rewrite).
95
+ *
96
+ * The boot script:
97
+ * - loads after parse (the src script is `defer`; boot waits for DOMContentLoaded),
98
+ * so both tags sit safely in `<head>` where hostile body text (an unterminated
99
+ * `<!--`) can never swallow them;
100
+ * - extracts the island by REGEX over the serialized document — the sdk
101
+ * `readIslandRaw` pattern, never `querySelector`/DOMParser (see viewer/index.tsx:
102
+ * a DOM query misses an island a stray open comment swallowed, while the
103
+ * serialized comment text still matches the regex);
104
+ * - mounts the interactive viewer over the static `<article>` and hides it; ANY
105
+ * failure (bundle deleted, no global, corrupt island, mount throw) leaves the
106
+ * readable static article exactly as-is — the runtime is progressive
107
+ * enhancement over the no-JS fallback.
108
+ *
109
+ * Inside the inline script every `/` that could form `</script>` (the regex
110
+ * literal) is escaped as `<\/` so the block can never close itself early, and the
111
+ * island marker appears only in its regex-escaped form (`application\/openbook\+json`),
112
+ * which the sdk island reader does NOT match — the boot can never be mistaken for
113
+ * the island itself.
114
+ */
115
+ export declare function bookRuntimeScripts(): string;
26
116
  /** Lower-case, dash-separated, filesystem-safe slug (for the on-disk filename). */
27
117
  export declare function slugify(input: string, fallback?: string): string;
118
+ /** Options for {@link pageToBookHtml}. */
119
+ export interface BookHtmlOptions {
120
+ /**
121
+ * Reference the folder's shared viewer runtime (`_openbook/viewer.js`) so the
122
+ * file, opened directly in a browser, hydrates into the interactive locked
123
+ * viewer. Pass true ONLY when the writer also ships the bundle into the folder
124
+ * (sdk `spaceToBookFiles({runtime})` / server `BookMirror` with `runtimeBundle`)
125
+ * — a reference without the bundle degrades gracefully (static article), but
126
+ * writers keep the invariant anyway. Emitters MUST agree on this flag for the
127
+ * SDK/server byte-compatibility contract to hold.
128
+ */
129
+ runtimeRef?: boolean;
130
+ }
28
131
  /** Render a page to its on-disk book-file HTML (readable body + canonical island). */
29
- export declare function pageToBookHtml(record: BookPageRecord): string;
132
+ export declare function pageToBookHtml(record: BookPageRecord, opts?: BookHtmlOptions): string;
30
133
  /** Cheap metadata read from the `<html>` tag — id + conflict base + name. */
31
134
  export declare function readBookHtmlMeta(html: string): {
32
135
  id: string;
package/dist/bookfile.js CHANGED
@@ -1,6 +1,147 @@
1
1
  import { latestBlockMtime } from './mtime';
2
- const MARKER = 'application/openbook+json';
2
+ import { islandScript, readIsland } from './island';
3
+ /** Wrap a page record as its source-island `<script>` (versioned, escaped). */
4
+ export function pageIslandScript(record, opts = {}) {
5
+ const { id, name, icon, updatedAt, data } = record;
6
+ return islandScript({ version: 1, id, name, icon, updatedAt, data }, opts);
7
+ }
3
8
  const esc = (s) => s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
9
+ /**
10
+ * The attribute-less inline formatting tags a legacy EditorJS text string may
11
+ * carry, and the editor's own migration ({@link htmlToRuns} in the ui package)
12
+ * honors: bold / italic / underline / strike / code. Every one is a bare tag
13
+ * with NO attributes, so it can never carry a payload — that is the whole safety
14
+ * argument for the escape-then-restore approach below.
15
+ */
16
+ const LEGACY_INLINE_TAGS = ['b', 'strong', 'i', 'em', 'u', 's', 'del', 'code'];
17
+ /**
18
+ * Sanitize a **legacy EditorJS** inline-HTML string for the readable `.book.html`
19
+ * body (block-editor pages carry structured rich-text runs and never reach here;
20
+ * they are already fully escaped by {@link runHtml}). This closes a stored-XSS
21
+ * sink: a hostile EditorJS-shaped snapshot (a crafted import or a pre-migration
22
+ * page) otherwise renders raw `<script>` / `<img onerror>` / event handlers /
23
+ * `javascript:` hrefs straight into the static file, which execute when the
24
+ * mirrored/exported file is opened from `file://`.
25
+ *
26
+ * DEFAULT-INERT: escape the ENTIRE string first (so everything is neutralized),
27
+ * then restore ONLY the exact, attribute-less inline formatting tags above via a
28
+ * regex that requires the tag name be followed immediately by `>` — so
29
+ * `<b onclick=…>` (escaped, has an attribute) is never restored, only a bare
30
+ * `<b>`. Anchors are DELIBERATELY not restored: safely reconstructing an `href`
31
+ * would require attribute + scheme parsing (the classic sanitizer footgun) with
32
+ * no DOM available in this isomorphic module — a legacy link degrades to inert
33
+ * escaped text in this best-effort readable preview, while the JSON island keeps
34
+ * it losslessly and the page migrates to fully-rendered runs the first time it
35
+ * is opened. See the module's mirror byte-compat note.
36
+ */
37
+ export function sanitizeLegacyInline(html) {
38
+ let out = esc(html);
39
+ for (const tag of LEGACY_INLINE_TAGS) {
40
+ // Bare open/close tags only (no attributes) — `&lt;b&gt;` / `&lt;/b&gt;`.
41
+ out = out
42
+ .replace(new RegExp(`&lt;${tag}&gt;`, 'gi'), `<${tag}>`)
43
+ .replace(new RegExp(`&lt;/${tag}&gt;`, 'gi'), `</${tag}>`);
44
+ }
45
+ // `<br>` (void): the plain, self-closing, and spaced variants → a bare `<br>`.
46
+ out = out.replace(/&lt;br\s*\/?&gt;/gi, '<br>');
47
+ return out;
48
+ }
49
+ /**
50
+ * Scheme-allowlist for an anchor `href` rendered into STATIC HTML (the readable
51
+ * `.book.html` body AND the standalone exports — both opened from a `file://`
52
+ * origin, where a `javascript:` link is click-to-execute XSS). `esc()` escapes
53
+ * the value as an attribute but does NOT touch the URI scheme, so schemes must
54
+ * be gated separately; callers degrade a rejected href to inert text.
55
+ *
56
+ * Permits: `http(s):`, `mailto:`, and relative / anchor / query links (`#`, `/`,
57
+ * `.`, `?`, or any path with no scheme). Denies everything else — `javascript:`,
58
+ * `data:`, `vbscript:`, `file:`, `tel:`, … — and **protocol-relative `//host`**
59
+ * (a benign relative link never starts `//`, and a protocol-relative URL is
60
+ * meaningless in a standalone file, so denying it closes a classic bypass).
61
+ *
62
+ * The scheme is tested on a NORMALIZED copy — ASCII control chars + whitespace
63
+ * removed and backslashes folded to `/`, then lower-cased — because browsers
64
+ * ignore embedded tabs/newlines and treat `\` as `/` when parsing a URL, so
65
+ * `jAvA\tscript:` or `/\/\host` would otherwise slip past a naive prefix check.
66
+ */
67
+ export function isSafeHref(raw) {
68
+ // Stripping C0 control chars + space is the whole point (browsers ignore
69
+ // embedded tabs/newlines when parsing a scheme) — the control-char class is
70
+ // intentional, not the accidental bug no-control-regex guards against.
71
+ // eslint-disable-next-line no-control-regex
72
+ const probe = raw.replace(/[\u0000-\u0020]+/g, '').replace(/\\/g, '/').toLowerCase();
73
+ if (probe.startsWith('//'))
74
+ return false; // protocol-relative → deny
75
+ const scheme = /^([a-z][a-z0-9+.-]*):/.exec(probe);
76
+ if (!scheme)
77
+ return true; // no scheme → relative / anchor / query, safe
78
+ return scheme[1] === 'http' || scheme[1] === 'https' || scheme[1] === 'mailto';
79
+ }
80
+ /** The folder-level runtime directory name (never a valid book-folder slug). */
81
+ export const BOOK_RUNTIME_DIR = '_openbook';
82
+ /** Relative path (from the folder root) of the shared viewer runtime bundle. */
83
+ export const BOOK_RUNTIME_FILE = `${BOOK_RUNTIME_DIR}/viewer.js`;
84
+ /**
85
+ * The **byte-constant** runtime reference block a `.book.html` embeds in its
86
+ * `<head>` when the folder carries the shared viewer bundle (`_openbook/viewer.js`
87
+ * — ONE copy per folder, owner decision 2026-07-04: never vendored per-file).
88
+ *
89
+ * Stability contract: this block contains NO per-page and NO per-version variance
90
+ * (no content hash, no build id), so
91
+ * - a page save re-renders to the same reference bytes (no mirror churn), and
92
+ * - a viewer-bundle upgrade rewrites ONLY `_openbook/viewer.js`, never the N
93
+ * page files. Only gaining/losing the runtime altogether changes page bytes
94
+ * (a deliberate one-time, upgrade-class rewrite).
95
+ *
96
+ * The boot script:
97
+ * - loads after parse (the src script is `defer`; boot waits for DOMContentLoaded),
98
+ * so both tags sit safely in `<head>` where hostile body text (an unterminated
99
+ * `<!--`) can never swallow them;
100
+ * - extracts the island by REGEX over the serialized document — the sdk
101
+ * `readIslandRaw` pattern, never `querySelector`/DOMParser (see viewer/index.tsx:
102
+ * a DOM query misses an island a stray open comment swallowed, while the
103
+ * serialized comment text still matches the regex);
104
+ * - mounts the interactive viewer over the static `<article>` and hides it; ANY
105
+ * failure (bundle deleted, no global, corrupt island, mount throw) leaves the
106
+ * readable static article exactly as-is — the runtime is progressive
107
+ * enhancement over the no-JS fallback.
108
+ *
109
+ * Inside the inline script every `/` that could form `</script>` (the regex
110
+ * literal) is escaped as `<\/` so the block can never close itself early, and the
111
+ * island marker appears only in its regex-escaped form (`application\/openbook\+json`),
112
+ * which the sdk island reader does NOT match — the boot can never be mistaken for
113
+ * the island itself.
114
+ */
115
+ export function bookRuntimeScripts() {
116
+ return `<script src="../${BOOK_RUNTIME_FILE}" defer data-openbook-runtime></script>
117
+ <script data-openbook-runtime-boot>
118
+ (function () {
119
+ function boot() {
120
+ try {
121
+ if (typeof OpenBookViewer === 'undefined') return;
122
+ var m = document.documentElement.outerHTML.match(/<script[^>]*type="application\\/openbook\\+json"[^>]*>([\\s\\S]*?)<\\/script>/i);
123
+ if (!m) return;
124
+ var island = JSON.parse(m[1].trim());
125
+ var article = document.querySelector('article');
126
+ var host = document.createElement('div');
127
+ (article && article.parentNode ? article.parentNode : document.body).insertBefore(host, article);
128
+ // Inline display:none (not the hidden attribute): the bundle injects the
129
+ // app stylesheet, whose author-level display rules would defeat the UA's
130
+ // [hidden] mapping. The inline style always wins; mount failure restores it.
131
+ if (article) article.style.display = 'none';
132
+ try {
133
+ OpenBookViewer.mount(host, island);
134
+ } catch (err) {
135
+ host.remove();
136
+ if (article) article.style.display = '';
137
+ }
138
+ } catch (err) { /* leave the static article untouched */ }
139
+ }
140
+ if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', boot);
141
+ else boot();
142
+ })();
143
+ </script>`;
144
+ }
4
145
  /** Lower-case, dash-separated, filesystem-safe slug (for the on-disk filename). */
5
146
  export function slugify(input, fallback = 'untitled') {
6
147
  const slug = (input || '')
@@ -36,7 +177,11 @@ function runHtml(run) {
36
177
  out = `<s>${out}</s>`;
37
178
  if (typeof a.m === 'string')
38
179
  out = `<a class="ob-mention" data-page-id="${esc(a.m)}">${out}</a>`;
39
- else if (typeof a.a === 'string')
180
+ // Scheme-gate the href: esc() escapes the attribute but not the URI scheme, so
181
+ // a `javascript:`/`data:` link would render live and clickable in the static
182
+ // file. A rejected href degrades to inert text (no anchor) — same posture as
183
+ // the legacy-inline sanitizer.
184
+ else if (typeof a.a === 'string' && isSafeHref(a.a))
40
185
  out = `<a href="${esc(a.a)}">${out}</a>`;
41
186
  return out;
42
187
  }
@@ -44,8 +189,10 @@ const runsHtml = (runs) => (runs ?? []).map(runHtml).join('');
44
189
  /** Best-effort readable inner HTML for one block (the island stays authoritative). */
45
190
  function blockInnerHtml(type, block) {
46
191
  const d = block.data ?? {};
47
- // Block-editor pages carry rich-text runs; EditorJS pages carry HTML strings.
48
- const textHtml = block.text ? runsHtml(block.text) : typeof d.text === 'string' ? d.text : '';
192
+ // Block-editor pages carry rich-text runs (escaped by runHtml); legacy EditorJS
193
+ // pages carry raw inline-HTML strings — sanitize those before they reach the
194
+ // static body (default-inert allowlist; see sanitizeLegacyInline).
195
+ const textHtml = block.text ? runsHtml(block.text) : typeof d.text === 'string' ? sanitizeLegacyInline(d.text) : '';
49
196
  switch (type) {
50
197
  case 'heading':
51
198
  case 'header': {
@@ -60,7 +207,7 @@ function blockInnerHtml(type, block) {
60
207
  const items = Array.isArray(d.items) ? d.items : [];
61
208
  const ordered = d.style === 'ordered';
62
209
  const lis = items
63
- .map((it) => `<li>${typeof it === 'string' ? it : esc(String(it?.content ?? ''))}</li>`)
210
+ .map((it) => `<li>${typeof it === 'string' ? sanitizeLegacyInline(it) : esc(String(it?.content ?? ''))}</li>`)
64
211
  .join('');
65
212
  return { tag: ordered ? 'ol' : 'ul', inner: lis };
66
213
  }
@@ -81,7 +228,7 @@ function blockInnerHtml(type, block) {
81
228
  }
82
229
  }
83
230
  /** Render a page to its on-disk book-file HTML (readable body + canonical island). */
84
- export function pageToBookHtml(record) {
231
+ export function pageToBookHtml(record, opts = {}) {
85
232
  const { id, name, icon, updatedAt, data } = record;
86
233
  const title = (name ?? '').trim() || 'Untitled';
87
234
  const mtime = new Map(data.mtimes ?? []);
@@ -93,24 +240,19 @@ export function pageToBookHtml(record) {
93
240
  return tag === 'hr' ? ` <hr ${attrs}>` : ` <${tag} ${attrs}>${inner}</${tag}>`;
94
241
  })
95
242
  .join('\n');
96
- // The island JSON is escaped so a literal `</script>` in content can't close
97
- // the tag early; `<\/` is still valid JSON and parses back to `</`.
98
- const island = JSON.stringify({ version: 1, id, name, icon, updatedAt, data }).replace(/<\//g, '<\\/');
99
243
  return `<!doctype html>
100
244
  <html lang="en" data-openbook="book-page" data-page-id="${esc(id)}" data-page-name="${esc(title)}" data-page-updated="${esc(updatedAt)}" data-page-mtime="${esc(pageMtime)}">
101
245
  <head>
102
246
  <meta charset="utf-8">
103
247
  <meta name="viewport" content="width=device-width, initial-scale=1">
104
248
  <title>${esc(title)}</title>
105
- </head>
249
+ ${opts.runtimeRef ? `${bookRuntimeScripts()}\n` : ''}</head>
106
250
  <body class="ob-page">
107
251
  <article>
108
252
  <h1 class="ob-page-title">${icon ? `${esc(icon)} ` : ''}${esc(title)}</h1>
109
253
  ${body}
110
254
  </article>
111
- <script type="${MARKER}" data-openbook-snapshot>
112
- ${island}
113
- </script>
255
+ ${pageIslandScript({ id, name, icon, updatedAt, data }, { attrs: 'data-openbook-snapshot', indent: ' ' })}
114
256
  </body>
115
257
  </html>
116
258
  `;
@@ -137,23 +279,15 @@ const unesc = (s) => s.replace(/&quot;/g, '"').replace(/&gt;/g, '>').replace(/&l
137
279
  * backups, moved files all preserve the island).
138
280
  */
139
281
  export function bookHtmlToPage(html) {
140
- const m = html.match(new RegExp(`<script[^>]*type="${MARKER.replace(/[/+]/g, '\\$&')}"[^>]*>([\\s\\S]*?)</script>`, 'i'));
141
- if (!m)
282
+ const parsed = readIsland(html);
283
+ if (!parsed || !parsed.id || !parsed.data)
142
284
  return null;
143
- try {
144
- const parsed = JSON.parse(m[1].trim());
145
- if (!parsed.id || !parsed.data)
146
- return null;
147
- return {
148
- id: parsed.id,
149
- name: parsed.name ?? null,
150
- icon: parsed.icon ?? null,
151
- updatedAt: parsed.updatedAt ?? '',
152
- data: parsed.data,
153
- };
154
- }
155
- catch {
156
- return null;
157
- }
285
+ return {
286
+ id: parsed.id,
287
+ name: parsed.name ?? null,
288
+ icon: parsed.icon ?? null,
289
+ updatedAt: parsed.updatedAt ?? '',
290
+ data: parsed.data,
291
+ };
158
292
  }
159
293
  //# sourceMappingURL=bookfile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bookfile.js","sourceRoot":"","sources":["../src/bookfile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bookfile.js","sourceRoot":"","sources":["../src/bookfile.ts"],"names":[],"mappings":"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"}
package/dist/import.d.ts CHANGED
@@ -166,6 +166,24 @@ export declare function imagePlaceholderBlock(asset: ImportedAsset): ImportedBlo
166
166
  * granularity via {@link imagePlaceholderBlock} on the row's body.
167
167
  */
168
168
  export declare function imagePlaceholderCell(asset: ImportedAsset): string;
169
+ /**
170
+ * The marker prop on an `htmlArtifact` block whose document bytes have not been
171
+ * uploaded yet. The run-as-artifact import lands the page FIRST (`putAsset`
172
+ * needs the landed page id for the asset's read-gate ref), then uploads the
173
+ * file's bytes and rewrites the pending block to a real `assetId` — the same
174
+ * land-then-rehydrate order as {@link IMAGE_PLACEHOLDER_PROP} images. A block
175
+ * still carrying the marker (upload failed) renders as the editor's visible
176
+ * "add an artifact" placeholder — degraded, never dropped.
177
+ */
178
+ export declare const HTML_ARTIFACT_PENDING_PROP = "importedArtifactPending";
179
+ /**
180
+ * An `htmlArtifact` IR block awaiting its document upload — the run-as-artifact
181
+ * counterpart of {@link imagePlaceholderBlock}, minimal by design: the bytes
182
+ * live outside the IR (they go straight to the asset store), so the block only
183
+ * carries the display title and the pending marker. Pure: the id derives from
184
+ * the title, so the same import always yields the same block id.
185
+ */
186
+ export declare function htmlArtifactPendingBlock(title?: string): ImportedBlock;
169
187
  /**
170
188
  * Wrap a block list in a page snapshot the block editor reads — the same shape
171
189
  * `templates.ts` ships (`editor:'blocks'`, blocks in `blockdoc.blocks`, NO CRDT
package/dist/import.js CHANGED
@@ -85,6 +85,32 @@ export function imagePlaceholderBlock(asset) {
85
85
  export function imagePlaceholderCell(asset) {
86
86
  return asset.ref;
87
87
  }
88
+ // ── HTML-artifact pending shim (run-as-artifact import) ──────────────────────
89
+ /**
90
+ * The marker prop on an `htmlArtifact` block whose document bytes have not been
91
+ * uploaded yet. The run-as-artifact import lands the page FIRST (`putAsset`
92
+ * needs the landed page id for the asset's read-gate ref), then uploads the
93
+ * file's bytes and rewrites the pending block to a real `assetId` — the same
94
+ * land-then-rehydrate order as {@link IMAGE_PLACEHOLDER_PROP} images. A block
95
+ * still carrying the marker (upload failed) renders as the editor's visible
96
+ * "add an artifact" placeholder — degraded, never dropped.
97
+ */
98
+ export const HTML_ARTIFACT_PENDING_PROP = 'importedArtifactPending';
99
+ /**
100
+ * An `htmlArtifact` IR block awaiting its document upload — the run-as-artifact
101
+ * counterpart of {@link imagePlaceholderBlock}, minimal by design: the bytes
102
+ * live outside the IR (they go straight to the asset store), so the block only
103
+ * carries the display title and the pending marker. Pure: the id derives from
104
+ * the title, so the same import always yields the same block id.
105
+ */
106
+ export function htmlArtifactPendingBlock(title) {
107
+ const clean = title?.trim() ?? '';
108
+ return {
109
+ id: `imp_art_${contentHash(clean)}`,
110
+ type: 'htmlArtifact',
111
+ props: { ...(clean ? { title: clean } : {}), [HTML_ARTIFACT_PENDING_PROP]: true },
112
+ };
113
+ }
88
114
  // ── Snapshot construction ────────────────────────────────────────────────────
89
115
  /**
90
116
  * Wrap a block list in a page snapshot the block editor reads — the same shape
@@ -1 +1 @@
1
- {"version":3,"file":"import.js","sourceRoot":"","sources":["../src/import.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../src/import.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -16,13 +16,14 @@ export { authorize, isEmailAuthoritative, type Role, type EffectiveVisibility, t
16
16
  export { snapshotText, paragraphBlocks, textSnapshot, appendTextToSnapshot, appendBlocksToSnapshot, type AppendBlock } from './content';
17
17
  export { snapshotBlocks, contentHash, computeBlockMtimes, stampSnapshotMtimes, latestBlockMtime, type BlockDigest, } from './mtime';
18
18
  export { computeBlockAuthors, stampSnapshotAuthors, stampSnapshotAuthorsPerBlock, latestSnapshotAuthor, type BlockAuthorResolver, } from './authors';
19
- export { pageToBookHtml, bookHtmlToPage, readBookHtmlMeta, slugify, type BookPageRecord, } from './bookfile';
20
- export { spaceToBookFiles, parseBookFolder, SPACE_BUNDLE_FILE, type BookFolderFile, type SpaceSnapshot, } from './bookFolder';
19
+ export { OPENBOOK_ISLAND_MARKER, encodeIsland, islandScript, readIsland, readIslandRaw, } from './island';
20
+ export { pageToBookHtml, bookHtmlToPage, readBookHtmlMeta, pageIslandScript, sanitizeLegacyInline, isSafeHref, slugify, bookRuntimeScripts, BOOK_RUNTIME_DIR, BOOK_RUNTIME_FILE, type BookHtmlOptions, type BookPageRecord, type PageIsland, } from './bookfile';
21
+ export { spaceToBookFiles, parseBookFolder, spaceIslandScript, readSpaceIsland, SPACE_BUNDLE_FILE, type BookFolderFile, type SpaceSnapshot, type SpaceToBookFilesOptions, type SpaceIsland, } from './bookFolder';
21
22
  export { canonicalDigest, generateRegistryKeys, signPlugin, verifyPlugin, validateManifest, OPENBOOK_REGISTRY, type PluginManifest, type PluginAgentTool, type PluginPackage, type PluginSignature, type StoredPlugin, } from './plugins';
22
23
  export { buildSampleDocument, seedSampleDocument, SAMPLE_DOCUMENT_NAME } from './sampleDocument';
23
24
  export type { CommentRun, AuthoredIdentity, SuggestionAuthorKind, SuggestionKind, SuggestionStatus, SuggestionTarget, StoredSuggestion, SuggestionInput, SuggestionUpdate, StoredComment, CommentInput, } from './suggestions';
24
25
  export { PAGE_TEMPLATES, instantiateTemplate, type PageTemplate } from './templates';
25
- export { imagePlaceholderBlock, imagePlaceholderCell, importedBlocksToSnapshot, chooseStrategy, writeViaCreateApis, buildImportBundle, writeViaBundle, importDoc, IMAGE_PLACEHOLDER_KIND, IMAGE_PLACEHOLDER_PROP, type ImportInlineAttrs, type ImportTextRun, type ImportedBlock, type ImportedAsset, type ImportedRow, type ImportedDatabase, type ImportedPage, type ImportedDoc, type ImportStrategy, type ImportWriteClient, type ImportOptions, type BundleOptions, type ImportWriteResult, blocksHaveImagePlaceholder, } from './import';
26
+ export { imagePlaceholderBlock, imagePlaceholderCell, importedBlocksToSnapshot, chooseStrategy, writeViaCreateApis, buildImportBundle, writeViaBundle, importDoc, IMAGE_PLACEHOLDER_KIND, IMAGE_PLACEHOLDER_PROP, HTML_ARTIFACT_PENDING_PROP, htmlArtifactPendingBlock, type ImportInlineAttrs, type ImportTextRun, type ImportedBlock, type ImportedAsset, type ImportedRow, type ImportedDatabase, type ImportedPage, type ImportedDoc, type ImportStrategy, type ImportWriteClient, type ImportOptions, type BundleOptions, type ImportWriteResult, blocksHaveImagePlaceholder, } from './import';
26
27
  export { markdownToBlocks, markdownToImportedDoc, type MarkdownImportOptions } from './markdownImport';
27
28
  export { notionExportToImportedDoc, parseCsv } from './notionImport';
28
29
  export { rehydrateImageUrls, rehydrateStoredImages, importedImageBlock, imagePlaceholderMeta, mimeFromRef, notionAssetResolver, urlAssetResolver, isHttpUrl, isDataUrlRef, IMAGE_BLOCK_TYPE, DEFAULT_MAX_ASSET_BYTES, type RehydrateUrlOptions, type RehydrateStoredClient, type RehydrateStoredOptions, type RehydrateStoredResult, type ImportAssetResolver, type AssetBytes, } from './importAssets';
package/dist/index.js CHANGED
@@ -13,12 +13,13 @@ export { authorize, isEmailAuthoritative, } from './authorize';
13
13
  export { snapshotText, paragraphBlocks, textSnapshot, appendTextToSnapshot, appendBlocksToSnapshot } from './content';
14
14
  export { snapshotBlocks, contentHash, computeBlockMtimes, stampSnapshotMtimes, latestBlockMtime, } from './mtime';
15
15
  export { computeBlockAuthors, stampSnapshotAuthors, stampSnapshotAuthorsPerBlock, latestSnapshotAuthor, } from './authors';
16
- export { pageToBookHtml, bookHtmlToPage, readBookHtmlMeta, slugify, } from './bookfile';
17
- export { spaceToBookFiles, parseBookFolder, SPACE_BUNDLE_FILE, } from './bookFolder';
16
+ export { OPENBOOK_ISLAND_MARKER, encodeIsland, islandScript, readIsland, readIslandRaw, } from './island';
17
+ export { pageToBookHtml, bookHtmlToPage, readBookHtmlMeta, pageIslandScript, sanitizeLegacyInline, isSafeHref, slugify, bookRuntimeScripts, BOOK_RUNTIME_DIR, BOOK_RUNTIME_FILE, } from './bookfile';
18
+ export { spaceToBookFiles, parseBookFolder, spaceIslandScript, readSpaceIsland, SPACE_BUNDLE_FILE, } from './bookFolder';
18
19
  export { canonicalDigest, generateRegistryKeys, signPlugin, verifyPlugin, validateManifest, OPENBOOK_REGISTRY, } from './plugins';
19
20
  export { buildSampleDocument, seedSampleDocument, SAMPLE_DOCUMENT_NAME } from './sampleDocument';
20
21
  export { PAGE_TEMPLATES, instantiateTemplate } from './templates';
21
- export { imagePlaceholderBlock, imagePlaceholderCell, importedBlocksToSnapshot, chooseStrategy, writeViaCreateApis, buildImportBundle, writeViaBundle, importDoc, IMAGE_PLACEHOLDER_KIND, IMAGE_PLACEHOLDER_PROP, blocksHaveImagePlaceholder, } from './import';
22
+ export { imagePlaceholderBlock, imagePlaceholderCell, importedBlocksToSnapshot, chooseStrategy, writeViaCreateApis, buildImportBundle, writeViaBundle, importDoc, IMAGE_PLACEHOLDER_KIND, IMAGE_PLACEHOLDER_PROP, HTML_ARTIFACT_PENDING_PROP, htmlArtifactPendingBlock, blocksHaveImagePlaceholder, } from './import';
22
23
  export { markdownToBlocks, markdownToImportedDoc } from './markdownImport';
23
24
  export { notionExportToImportedDoc, parseCsv } from './notionImport';
24
25
  export { rehydrateImageUrls, rehydrateStoredImages, importedImageBlock, imagePlaceholderMeta, mimeFromRef, notionAssetResolver, urlAssetResolver, isHttpUrl, isDataUrlRef, IMAGE_BLOCK_TYPE, DEFAULT_MAX_ASSET_BYTES, } from './importAssets';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * The shared **source-island** mechanism (OB export format): a machine-readable
3
+ * JSON blob embedded in an otherwise human-visible HTML document, carrying the
4
+ * lossless OpenBook source so the file round-trips back into pglite. The visible
5
+ * body is a *rendering*; the island is *authoritative*.
6
+ *
7
+ * One mechanism, three surfaces:
8
+ * - the sync-folder `.book.html` format (one page island each) — {@link ./bookfile};
9
+ * - single-page / slide-deck standalone HTML exports (a page island) — ui `toHtml`;
10
+ * - whole-site standalone HTML exports (one space-bundle island) — ui `toHtmlSite`.
11
+ *
12
+ * ## Asset contract (for the future island-first import task)
13
+ * The island's block-doc references image `assetId`s (content-addressed, *not*
14
+ * inlined), while the surrounding visible HTML carries the resolved `data:` URIs
15
+ * (see the ui `exportAssets` pass). Re-import reads the island → gets faithful
16
+ * `assetId`s; recovering the actual bytes (from the sibling data-URIs, or by
17
+ * re-fetching) is the import task's job. This module keeps the island FAITHFUL:
18
+ * `assetId`s are never rewritten to data-URIs, so the source stays lossless and
19
+ * the id → capability read-gate is preserved.
20
+ */
21
+ /** The `<script type>` marking an OpenBook JSON source island. */
22
+ export declare const OPENBOOK_ISLAND_MARKER = "application/openbook+json";
23
+ /**
24
+ * Serialise a value to an island JSON body, escaping `</` so a literal
25
+ * `</script>` — or any `</…>` — anywhere in the content can't close the tag
26
+ * early. `<\/` is still valid JSON and parses back to `</`, so the round-trip is
27
+ * lossless. This is the *only* escaping the island needs (it is inert data, not
28
+ * executed), and it is what makes the island immune to hostile page content.
29
+ */
30
+ export declare function encodeIsland(value: unknown): string;
31
+ /**
32
+ * Wrap an island body in the canonical inert `<script>` tag. `attrs` adds extra
33
+ * tag attributes (e.g. `data-openbook-snapshot`); `indent` prefixes the tag lines
34
+ * so callers can keep their surrounding HTML pretty-printed. The browser never
35
+ * executes a non-JS `type`, so the island is pure carried data.
36
+ */
37
+ export declare function islandScript(value: unknown, opts?: {
38
+ attrs?: string;
39
+ indent?: string;
40
+ }): string;
41
+ /** Extract the first island's raw (still `<\/`-escaped) JSON text, or `null`. */
42
+ export declare function readIslandRaw(html: string): string | null;
43
+ /**
44
+ * Parse the first island in an HTML string back to its value, or `null` when
45
+ * absent or corrupt. `JSON.parse` unescapes the `<\/` sequences for free (`\/`
46
+ * is a valid JSON escape for `/`), so no separate unescape step is needed.
47
+ */
48
+ export declare function readIsland<T = unknown>(html: string): T | null;
package/dist/island.js ADDED
@@ -0,0 +1,65 @@
1
+ /**
2
+ * The shared **source-island** mechanism (OB export format): a machine-readable
3
+ * JSON blob embedded in an otherwise human-visible HTML document, carrying the
4
+ * lossless OpenBook source so the file round-trips back into pglite. The visible
5
+ * body is a *rendering*; the island is *authoritative*.
6
+ *
7
+ * One mechanism, three surfaces:
8
+ * - the sync-folder `.book.html` format (one page island each) — {@link ./bookfile};
9
+ * - single-page / slide-deck standalone HTML exports (a page island) — ui `toHtml`;
10
+ * - whole-site standalone HTML exports (one space-bundle island) — ui `toHtmlSite`.
11
+ *
12
+ * ## Asset contract (for the future island-first import task)
13
+ * The island's block-doc references image `assetId`s (content-addressed, *not*
14
+ * inlined), while the surrounding visible HTML carries the resolved `data:` URIs
15
+ * (see the ui `exportAssets` pass). Re-import reads the island → gets faithful
16
+ * `assetId`s; recovering the actual bytes (from the sibling data-URIs, or by
17
+ * re-fetching) is the import task's job. This module keeps the island FAITHFUL:
18
+ * `assetId`s are never rewritten to data-URIs, so the source stays lossless and
19
+ * the id → capability read-gate is preserved.
20
+ */
21
+ /** The `<script type>` marking an OpenBook JSON source island. */
22
+ export const OPENBOOK_ISLAND_MARKER = 'application/openbook+json';
23
+ /**
24
+ * Serialise a value to an island JSON body, escaping `</` so a literal
25
+ * `</script>` — or any `</…>` — anywhere in the content can't close the tag
26
+ * early. `<\/` is still valid JSON and parses back to `</`, so the round-trip is
27
+ * lossless. This is the *only* escaping the island needs (it is inert data, not
28
+ * executed), and it is what makes the island immune to hostile page content.
29
+ */
30
+ export function encodeIsland(value) {
31
+ return JSON.stringify(value).replace(/<\//g, '<\\/');
32
+ }
33
+ /**
34
+ * Wrap an island body in the canonical inert `<script>` tag. `attrs` adds extra
35
+ * tag attributes (e.g. `data-openbook-snapshot`); `indent` prefixes the tag lines
36
+ * so callers can keep their surrounding HTML pretty-printed. The browser never
37
+ * executes a non-JS `type`, so the island is pure carried data.
38
+ */
39
+ export function islandScript(value, opts = {}) {
40
+ const { attrs = '', indent = '' } = opts;
41
+ return `${indent}<script type="${OPENBOOK_ISLAND_MARKER}"${attrs ? ` ${attrs}` : ''}>\n${encodeIsland(value)}\n${indent}</script>`;
42
+ }
43
+ const ISLAND_RE = new RegExp(`<script[^>]*type="${OPENBOOK_ISLAND_MARKER.replace(/[/+]/g, '\\$&')}"[^>]*>([\\s\\S]*?)</script>`, 'i');
44
+ /** Extract the first island's raw (still `<\/`-escaped) JSON text, or `null`. */
45
+ export function readIslandRaw(html) {
46
+ const m = html.match(ISLAND_RE);
47
+ return m ? m[1].trim() : null;
48
+ }
49
+ /**
50
+ * Parse the first island in an HTML string back to its value, or `null` when
51
+ * absent or corrupt. `JSON.parse` unescapes the `<\/` sequences for free (`\/`
52
+ * is a valid JSON escape for `/`), so no separate unescape step is needed.
53
+ */
54
+ export function readIsland(html) {
55
+ const raw = readIslandRaw(html);
56
+ if (raw === null)
57
+ return null;
58
+ try {
59
+ return JSON.parse(raw);
60
+ }
61
+ catch {
62
+ return null;
63
+ }
64
+ }
65
+ //# sourceMappingURL=island.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"island.js","sourceRoot":"","sources":["../src/island.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,kEAAkE;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc,EAAE,OAA0C,EAAE;IACvF,MAAM,EAAC,KAAK,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,EAAC,GAAG,IAAI,CAAC;IACvC,OAAO,GAAG,MAAM,iBAAiB,sBAAsB,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC,KAAK,MAAM,WAAW,CAAC;AACrI,CAAC;AAED,MAAM,SAAS,GAAG,IAAI,MAAM,CAC1B,qBAAqB,sBAAsB,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,8BAA8B,EAClG,GAAG,CACJ,CAAC;AAEF,iFAAiF;AACjF,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAc,IAAY;IAClD,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@book.dev/sdk",
3
- "version": "1.69.2",
3
+ "version": "1.71.0",
4
4
  "description": "Shared OpenBook types and HTTP client used by the server, desktop, and web.",
5
5
  "repository": {
6
6
  "type": "git",