@takazudo/zfb 0.1.0-next.2 → 0.1.0-next.21
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/CHANGELOG.md +28 -0
- package/bin/zfb.mjs +21 -0
- package/dist/config.d.ts +170 -10
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/content.d.ts +31 -1
- package/dist/content.d.ts.map +1 -1
- package/dist/content.js +98 -36
- package/dist/content.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/island.d.ts.map +1 -1
- package/dist/island.js +32 -26
- package/dist/island.js.map +1 -1
- package/package.json +8 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
> **Newer releases:** see https://takazudomodular.com/pj/zudo-front-builder/docs/changelog/ for v0.1.0-next.5 and later. Entries below are historical (kept for npm readers).
|
|
4
|
+
|
|
5
|
+
## 0.1.0-next.4
|
|
6
|
+
|
|
7
|
+
### Bug fixes
|
|
8
|
+
|
|
9
|
+
**Binary executable bit + launcher EACCES** (#441, #444 §1):
|
|
10
|
+
|
|
11
|
+
- #441: The bundled `bin/zfb.mjs` launcher was missing its executable bit in the published tarball, causing `zfb: command not found` after `npm install -g`.
|
|
12
|
+
- #444 §1: Companion fix ensuring the per-platform native binary receives its executable bit correctly on POSIX systems.
|
|
13
|
+
|
|
14
|
+
**`--version` stamping** (#445, #444 §2):
|
|
15
|
+
|
|
16
|
+
- #445: `zfb --version` printed `0.0.0` instead of the actual release version; the binary is now stamped with `ZFB_RELEASE_VERSION` at build time.
|
|
17
|
+
- #444 §2: Ensures the version reported by `--version` matches the npm package version for all platforms.
|
|
18
|
+
|
|
19
|
+
**`paths()` worker / `zfb/content` snapshot flow** (#442):
|
|
20
|
+
|
|
21
|
+
- #442: Fixed a race in the content-snapshot flow where `paths()` could be invoked before the worker finished writing the snapshot, causing intermittent empty-route tables.
|
|
22
|
+
|
|
23
|
+
**`@/` tsconfig path-alias regression** (#443):
|
|
24
|
+
|
|
25
|
+
- #443: The `@/` TypeScript path alias was dropped during the build pipeline refactor in 0.1.0-next.3, breaking imports that relied on the alias in user projects.
|
|
26
|
+
|
|
27
|
+
**`create-zfb` scaffold dist-tag** (#343):
|
|
28
|
+
|
|
29
|
+
- #343: `npm create zfb@latest` was resolving the wrong dist-tag on the first install; scaffolded projects now pin to the exact CLI version (`=<ver>` rather than `^<ver>`) to prevent silent downgrade once the stable release lands.
|
|
30
|
+
|
|
3
31
|
## 0.1.0-next.1
|
|
4
32
|
|
|
5
33
|
Initial public prerelease on npm.
|
package/bin/zfb.mjs
CHANGED
|
@@ -58,4 +58,25 @@ if (!existsSync(binPath)) {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
const result = spawnSync(binPath, process.argv.slice(2), { stdio: "inherit" });
|
|
61
|
+
|
|
62
|
+
// Surface spawn errors that spawnSync stores in result.error rather than
|
|
63
|
+
// propagating to stderr. Without this, a 0644 binary (EACCES) is silently
|
|
64
|
+
// swallowed and the process exits with code 1 and no message — making it
|
|
65
|
+
// impossible for the user to diagnose a corrupted/incomplete npm install.
|
|
66
|
+
// (Issue #447 / #441 — pnpm publish strips the executable bit.)
|
|
67
|
+
if (result.error) {
|
|
68
|
+
if (result.error.code === "EACCES") {
|
|
69
|
+
process.stderr.write(
|
|
70
|
+
`[zfb] binary is not executable; was the install corrupt?\n` +
|
|
71
|
+
` ${binPath}\n` +
|
|
72
|
+
` Try reinstalling: npm install --include=optional\n`,
|
|
73
|
+
);
|
|
74
|
+
} else {
|
|
75
|
+
process.stderr.write(
|
|
76
|
+
`[zfb] failed to spawn binary: ${result.error.message}\n` + ` ${binPath}\n`,
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
|
|
61
82
|
process.exit(result.status ?? 1);
|
package/dist/config.d.ts
CHANGED
|
@@ -347,16 +347,12 @@ export type TocConfig = {
|
|
|
347
347
|
/**
|
|
348
348
|
* Markdown / MDX parsing options.
|
|
349
349
|
*
|
|
350
|
-
* See [`ZfbConfig.markdown`] for the embed point.
|
|
351
|
-
* [`
|
|
352
|
-
* markdown knobs
|
|
353
|
-
*
|
|
354
|
-
* See
|
|
355
|
-
*
|
|
356
|
-
* See [`ZfbConfig.markdown`] for the embed point. Today the fields are
|
|
357
|
-
* [`gfm`](MarkdownConfig.gfm) and
|
|
358
|
-
* [`cjkFriendly`](MarkdownConfig.cjkFriendly); future markdown knobs
|
|
359
|
-
* (e.g. CommonMark variants, custom extensions) would also live here.
|
|
350
|
+
* See [`ZfbConfig.markdown`] for the embed point. Fields: [`gfm`],
|
|
351
|
+
* [`toc`], [`externalLinks`], [`cjkFriendly`], and [`features`].
|
|
352
|
+
* Future markdown knobs would also live here.
|
|
353
|
+
*
|
|
354
|
+
* See the "Markdown Features" docs category for the per-feature option
|
|
355
|
+
* reference once individual features are ported.
|
|
360
356
|
*
|
|
361
357
|
* Mirrors `MarkdownConfig` in crates/zfb/src/config.rs.
|
|
362
358
|
*/
|
|
@@ -436,7 +432,171 @@ export type MarkdownConfig = {
|
|
|
436
432
|
* Mirrors `MarkdownConfig::cjk_friendly` in crates/zfb/src/config.rs.
|
|
437
433
|
*/
|
|
438
434
|
cjkFriendly?: boolean;
|
|
435
|
+
/**
|
|
436
|
+
* Per-feature markdown pipeline toggles.
|
|
437
|
+
*
|
|
438
|
+
* Each field is a [`FeatureToggle`] (`true` / `false` / options object)
|
|
439
|
+
* or a feature-specific config type (for features that require extra
|
|
440
|
+
* parameters). Absent / `undefined` means all features are disabled,
|
|
441
|
+
* preserving the behaviour of the pre-features build byte-for-byte.
|
|
442
|
+
*
|
|
443
|
+
* Unknown keys are rejected at deserialization time by the Rust loader
|
|
444
|
+
* so a typo in `zfb.config.ts` surfaces as a clear error.
|
|
445
|
+
*
|
|
446
|
+
* Mirrors `MarkdownFeaturesConfig` in crates/zfb/src/config.rs.
|
|
447
|
+
*/
|
|
448
|
+
features?: MarkdownFeaturesConfig;
|
|
439
449
|
};
|
|
450
|
+
/**
|
|
451
|
+
* Per-feature toggle: `boolean` shorthand or an options object.
|
|
452
|
+
*
|
|
453
|
+
* `true` enables the feature with defaults; `false` (or absent) disables it.
|
|
454
|
+
* The object form carries per-feature options (fields vary by feature and
|
|
455
|
+
* are filled in by each feature's port sub-issue — stubs today).
|
|
456
|
+
*
|
|
457
|
+
* Mirrors `FeatureToggle` in crates/zfb/src/config.rs.
|
|
458
|
+
*/
|
|
459
|
+
export type FeatureToggle = boolean | FeatureOptions;
|
|
460
|
+
/**
|
|
461
|
+
* Empty options object for features that accept `{ ... }` but have no
|
|
462
|
+
* user-facing knobs yet. Fields are filled in by each feature's port
|
|
463
|
+
* sub-issue; this stub satisfies the schema shape requirement.
|
|
464
|
+
*
|
|
465
|
+
* Mirrors `FeatureOptions` in crates/zfb/src/config.rs.
|
|
466
|
+
*/
|
|
467
|
+
export type FeatureOptions = Record<string, never>;
|
|
468
|
+
/**
|
|
469
|
+
* Options for the `githubAutolinks` feature. Requires `repo`.
|
|
470
|
+
*
|
|
471
|
+
* TODO: fill in actual fields when the githubAutolinks feature is ported.
|
|
472
|
+
*
|
|
473
|
+
* Mirrors `GithubAutolinksConfig` in crates/zfb/src/config.rs.
|
|
474
|
+
*/
|
|
475
|
+
export type GithubAutolinksConfig = {
|
|
476
|
+
/** GitHub repository reference (`owner/repo`) used to build autolink URLs. */
|
|
477
|
+
repo?: string;
|
|
478
|
+
};
|
|
479
|
+
/**
|
|
480
|
+
* Options stub for the `codeEnrichment` feature.
|
|
481
|
+
*
|
|
482
|
+
* TODO: fill in actual fields when the codeEnrichment feature is ported.
|
|
483
|
+
*
|
|
484
|
+
* Mirrors `CodeEnrichmentConfig` in crates/zfb/src/config.rs.
|
|
485
|
+
*/
|
|
486
|
+
export type CodeEnrichmentConfig = Record<string, never>;
|
|
487
|
+
/**
|
|
488
|
+
* Options for the `tocExport` feature.
|
|
489
|
+
*
|
|
490
|
+
* Controls which headings are included in the exported `toc` JSON.
|
|
491
|
+
* `maxDepth` is the **absolute** heading depth (2–6):
|
|
492
|
+
* - `2` → h2 only
|
|
493
|
+
* - `3` (default) → h2 + h3
|
|
494
|
+
*
|
|
495
|
+
* This differs from `headingMarkerToc.maxDepth`, which counts levels
|
|
496
|
+
* starting from h2. The two features are independent.
|
|
497
|
+
*
|
|
498
|
+
* Mirrors `TocExportConfig` in crates/zfb-md-ast/src/features_config.rs.
|
|
499
|
+
*/
|
|
500
|
+
export type TocExportConfig = {
|
|
501
|
+
/** Maximum heading depth to include (absolute, 2–6). Default: 3. */
|
|
502
|
+
maxDepth?: number;
|
|
503
|
+
};
|
|
504
|
+
/**
|
|
505
|
+
* Options stub for the `imageDimensions` feature.
|
|
506
|
+
*
|
|
507
|
+
* TODO: fill in actual fields when the imageDimensions feature is ported.
|
|
508
|
+
*
|
|
509
|
+
* Mirrors `ImageDimensionsConfig` in crates/zfb/src/config.rs.
|
|
510
|
+
*/
|
|
511
|
+
export type ImageDimensionsConfig = Record<string, never>;
|
|
512
|
+
/**
|
|
513
|
+
* Options for the `linkValidation` feature.
|
|
514
|
+
*
|
|
515
|
+
* Validates internal `[text](file.md#anchor)` and `[text](#anchor)` links at
|
|
516
|
+
* build time. External URLs (`http://`, `https://`, `mailto:`) are skipped by
|
|
517
|
+
* default.
|
|
518
|
+
*
|
|
519
|
+
* Mirrors `LinkValidationConfig` in `crates/zfb-md-ast/src/features_config.rs`.
|
|
520
|
+
*/
|
|
521
|
+
export type LinkValidationConfig = {
|
|
522
|
+
/**
|
|
523
|
+
* When `true`, broken links are reported as errors (build can fail).
|
|
524
|
+
* Default: `false` (warn-only).
|
|
525
|
+
*/
|
|
526
|
+
failOnBroken?: boolean;
|
|
527
|
+
/**
|
|
528
|
+
* When `true` (default), external URLs are silently skipped.
|
|
529
|
+
* Set to `false` to validate external links as well.
|
|
530
|
+
*/
|
|
531
|
+
allowExternal?: boolean;
|
|
532
|
+
};
|
|
533
|
+
/**
|
|
534
|
+
* Options for the `transclude` feature.
|
|
535
|
+
*
|
|
536
|
+
* Enables `:::include{file="./path.md"}` directives that inline another
|
|
537
|
+
* file's parsed mdast at the include site.
|
|
538
|
+
*
|
|
539
|
+
* Mirrors `TranscludeConfig` in crates/zfb-md-ast/src/features_config.rs.
|
|
540
|
+
*/
|
|
541
|
+
export type TranscludeConfig = {
|
|
542
|
+
/**
|
|
543
|
+
* Maximum transclusion depth (chain length A→B→C→…).
|
|
544
|
+
*
|
|
545
|
+
* A depth of `1` allows only direct includes (the included file itself
|
|
546
|
+
* cannot include further files). Default: `5`. A cycle (A→B→A) is
|
|
547
|
+
* always detected regardless of `maxDepth` and treated as an error.
|
|
548
|
+
*/
|
|
549
|
+
maxDepth?: number;
|
|
550
|
+
};
|
|
551
|
+
/**
|
|
552
|
+
* Per-feature markdown pipeline configuration.
|
|
553
|
+
*
|
|
554
|
+
* All fields are optional; absent = feature disabled, behaviour unchanged
|
|
555
|
+
* from the pre-features build. Unknown keys are rejected at deserialization
|
|
556
|
+
* time by the Rust loader so a typo surfaces as a clear error.
|
|
557
|
+
*
|
|
558
|
+
* Mirrors `MarkdownFeaturesConfig` in crates/zfb/src/config.rs.
|
|
559
|
+
*/
|
|
560
|
+
export type MarkdownFeaturesConfig = {
|
|
561
|
+
/** GitHub-style alert blocks (`> [!NOTE]`, `> [!WARNING]`, etc.). */
|
|
562
|
+
githubAlerts?: FeatureToggle;
|
|
563
|
+
/** Reading-time estimate injected into the document frontmatter. */
|
|
564
|
+
readingTime?: FeatureToggle;
|
|
565
|
+
/** GitHub-style `owner/repo#123` and `SHA` autolinks. Requires `repo`. */
|
|
566
|
+
githubAutolinks?: GithubAutolinksConfig;
|
|
567
|
+
/** Code-block enrichment (copy button, language label, etc.). */
|
|
568
|
+
codeEnrichment?: CodeEnrichmentConfig;
|
|
569
|
+
/** Grouped code blocks rendered as tabs. */
|
|
570
|
+
codeTabs?: FeatureToggle;
|
|
571
|
+
/** Ruby annotation support (`{base}^{ruby}` syntax). */
|
|
572
|
+
ruby?: FeatureToggle;
|
|
573
|
+
/** Export the page TOC as structured data (e.g. for sidebar rendering). */
|
|
574
|
+
tocExport?: TocExportConfig;
|
|
575
|
+
/** Auto-detect and inject `width`/`height` on `<img>` elements. */
|
|
576
|
+
imageDimensions?: ImageDimensionsConfig;
|
|
577
|
+
/** Validate internal and external links at build time. */
|
|
578
|
+
linkValidation?: LinkValidationConfig;
|
|
579
|
+
/** Transclusion of other MDX files (`![[path]]` syntax). */
|
|
580
|
+
transclude?: TranscludeConfig;
|
|
581
|
+
/** Framework admonitions preset (maps `:::note` etc. to components). */
|
|
582
|
+
admonitionsPreset?: FeatureToggle;
|
|
583
|
+
/** Mermaid diagram rendering. */
|
|
584
|
+
mermaid?: FeatureToggle;
|
|
585
|
+
/**
|
|
586
|
+
* Inline heading-marker TOC. Accepts either a `boolean` shorthand
|
|
587
|
+
* (`true` = enable with defaults, `false` = disable) or a full
|
|
588
|
+
* {@link TocConfig} options object — same union shape as the Rust
|
|
589
|
+
* `HeadingMarkerTocFeature` enum.
|
|
590
|
+
*/
|
|
591
|
+
headingMarkerToc?: HeadingMarkerTocFeature;
|
|
592
|
+
};
|
|
593
|
+
/**
|
|
594
|
+
* `headingMarkerToc` feature value: either a `boolean` shorthand or a
|
|
595
|
+
* full {@link TocConfig} options object.
|
|
596
|
+
*
|
|
597
|
+
* Mirrors `HeadingMarkerTocFeature` in crates/zfb-md-ast/src/features_config.rs.
|
|
598
|
+
*/
|
|
599
|
+
export type HeadingMarkerTocFeature = boolean | TocConfig;
|
|
440
600
|
/**
|
|
441
601
|
* Options for the external-link rewriter (port of `rehype-external-links`).
|
|
442
602
|
*
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE3C,MAAM,MAAM,aAAa,GAAG;IAC1B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,oDAAoD;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;IAC9B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,6BAA6B;IAC7B,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2BG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;IAElD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B;;;;;;;;;;;;;;;;OAgBG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEtD;;;;;;;;;GASG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,kEAAkE;AAClE,uEAAuE;AACvE,uEAAuE;AACvE,sEAAsE;AACtE,+BAA+B;AAC/B,EAAE;AACF,yEAAyE;AACzE,uEAAuE;AACvE,uEAAuE;AACvE,kEAAkE;AAClE,EAAE;AACF,uEAAuE;AACvE,uEAAuE;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,kEAAkE;AAClE,uEAAuE;AACvE,uEAAuE;AACvE,sEAAsE;AACtE,+BAA+B;AAC/B,EAAE;AACF,yEAAyE;AACzE,uEAAuE;AACvE,uEAAuE;AACvE,kEAAkE;AAClE,EAAE;AACF,uEAAuE;AACvE,uEAAuE;AA8uBvE;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/content.d.ts
CHANGED
|
@@ -28,14 +28,30 @@ export interface Snapshot {
|
|
|
28
28
|
*
|
|
29
29
|
* Pass `undefined` to clear (used by tests that need to restore the v0
|
|
30
30
|
* filesystem path between runs). Idempotent: the latest call wins.
|
|
31
|
+
*
|
|
32
|
+
* Stored on `globalThis.__zfb.contentSnapshot` rather than a
|
|
33
|
+
* module-level `let` so a worker bundle that ends up with two
|
|
34
|
+
* `zfb/content` module instances still sees a single shared snapshot —
|
|
35
|
+
* see the [`SnapshotBridgeNamespace`] doc above for the full
|
|
36
|
+
* pnpm-symlink rationale.
|
|
31
37
|
*/
|
|
32
38
|
export declare function setContentSnapshot(snapshot: Snapshot | undefined): void;
|
|
33
39
|
/**
|
|
34
40
|
* Read the currently-installed [`Snapshot`], or `undefined` if none is
|
|
35
41
|
* registered. Exposed mostly for tests; production callers should not
|
|
36
42
|
* need to introspect the bridge state.
|
|
43
|
+
*
|
|
44
|
+
* Reads from `globalThis.__zfb.contentSnapshot`; see
|
|
45
|
+
* [`setContentSnapshot`] for why the slot lives on `globalThis`.
|
|
37
46
|
*/
|
|
38
47
|
export declare function getContentSnapshot(): Snapshot | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Flat map of element-name → override component, used by both
|
|
50
|
+
* [`ContentProps.components`] and the global slot
|
|
51
|
+
* (`globalThis.__zfb?.mdxComponents`). Keys are lowercase HTML tag names
|
|
52
|
+
* (`h2`, `p`, `a`, …) or PascalCase custom-component names.
|
|
53
|
+
*/
|
|
54
|
+
export type MdxComponents = Record<string, unknown>;
|
|
39
55
|
/**
|
|
40
56
|
* Props accepted by an entry's [`CollectionEntry.Content`] component.
|
|
41
57
|
*
|
|
@@ -47,7 +63,7 @@ export declare function getContentSnapshot(): Snapshot | undefined;
|
|
|
47
63
|
*/
|
|
48
64
|
export interface ContentProps {
|
|
49
65
|
/** Element-name → override component map. Optional. */
|
|
50
|
-
components?:
|
|
66
|
+
components?: MdxComponents;
|
|
51
67
|
}
|
|
52
68
|
/**
|
|
53
69
|
* Public JSX-element shape returned by [`CollectionEntry.Content`].
|
|
@@ -228,4 +244,18 @@ export declare const defaultComponents: {
|
|
|
228
244
|
readonly table: typeof ContentTable;
|
|
229
245
|
readonly code: typeof ContentCode;
|
|
230
246
|
};
|
|
247
|
+
/**
|
|
248
|
+
* Merge component maps with the documented precedence order:
|
|
249
|
+
* built-in `defaultComponents` → global slot (`globalThis.__zfb?.mdxComponents`)
|
|
250
|
+
* → per-call `props.components`.
|
|
251
|
+
*
|
|
252
|
+
* Spread in stable key order so the resulting map is deterministic; later
|
|
253
|
+
* entries in the spread win on collision (lowest → highest priority). Absent
|
|
254
|
+
* layers (`undefined`) are no-ops via spread-of-undefined.
|
|
255
|
+
*
|
|
256
|
+
* **Output-neutral by design:** `defaultComponents` entries are pure
|
|
257
|
+
* passthroughs (e.g. `ContentH2` → `<h2>{...props}</h2>`), so introducing
|
|
258
|
+
* this merge into `buildContentComponent` does not change the rendered output.
|
|
259
|
+
*/
|
|
260
|
+
export declare function mergeMdxComponents(globalSlot: MdxComponents | undefined, perCall: MdxComponents | undefined): MdxComponents;
|
|
231
261
|
//# sourceMappingURL=content.d.ts.map
|
package/dist/content.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"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"}
|
package/dist/content.js
CHANGED
|
@@ -20,6 +20,30 @@
|
|
|
20
20
|
//
|
|
21
21
|
// TODO(zfb-content): swap this stub for the runtime-provided implementation
|
|
22
22
|
// once the content engine ships end-to-end.
|
|
23
|
+
// `node:fs` and `node:path` are intentionally NOT imported statically at
|
|
24
|
+
// the top level.
|
|
25
|
+
//
|
|
26
|
+
// Why: this module is reachable via the package root (`@takazudo/zfb`) — the
|
|
27
|
+
// barrel re-exports `defaultComponents` / `ContentH2` / etc. from
|
|
28
|
+
// `./content.js`. The islands per-island bundler (`crates/zfb-islands`) walks
|
|
29
|
+
// `import * as Mod from "@takazudo/zfb"` and esbuild's static tree-shaker
|
|
30
|
+
// cannot prune a module behind a wildcard barrel access, so the WHOLE
|
|
31
|
+
// content.ts module ends up in the browser-side island bundle. Top-level
|
|
32
|
+
// `node:fs` / `node:path` imports would then fail the bundle with
|
|
33
|
+
// `Could not resolve "node:fs"`. Loading them indirectly through a
|
|
34
|
+
// runtime-constructed `createRequire` keeps the Node-runtime fs path
|
|
35
|
+
// working while letting the islands bundler emit browser-safe output.
|
|
36
|
+
// (Discovered while investigating zudolab/zudo-doc#1355 Wave 3 — see also
|
|
37
|
+
// upstream PR #134 / #130 Gap A.) Defense-in-depth: the islands esbuild
|
|
38
|
+
// invocation also passes `--platform=browser --external:node:*` so any
|
|
39
|
+
// stray `node:*` import that does end up in a browser bundle is
|
|
40
|
+
// externalized rather than failing the build.
|
|
41
|
+
//
|
|
42
|
+
// `getCollection` is synchronous per ADR-004, so the node modules are
|
|
43
|
+
// loaded synchronously on first fs-path use. Type-only imports below stay
|
|
44
|
+
// at the top because TypeScript erases them at compile time — they leave
|
|
45
|
+
// no runtime traces for esbuild to chase.
|
|
46
|
+
import { jsx } from "react/jsx-runtime";
|
|
23
47
|
import { parseFrontmatter } from "./frontmatter.js";
|
|
24
48
|
// Re-export the parser surface so existing `zfb/content` consumers that
|
|
25
49
|
// import `parseFrontmatter` / `ParsedFrontmatter` from the content
|
|
@@ -27,29 +51,34 @@ import { parseFrontmatter } from "./frontmatter.js";
|
|
|
27
51
|
// (BCI-3 fs-free subpath) — this re-export is the bridge for callers
|
|
28
52
|
// that have not migrated yet.
|
|
29
53
|
export { parseFrontmatter };
|
|
30
|
-
/**
|
|
31
|
-
* Module-level snapshot slot. `undefined` means "no snapshot installed";
|
|
32
|
-
* `getCollection` falls back to the Node `fs` path. The runtime package
|
|
33
|
-
* sets this once during init and (in dev mode) overwrites it on each
|
|
34
|
-
* rebuild.
|
|
35
|
-
*/
|
|
36
|
-
let installedSnapshot;
|
|
37
54
|
/**
|
|
38
55
|
* Register a [`Snapshot`] so [`getCollection`] resolves from memory.
|
|
39
56
|
*
|
|
40
57
|
* Pass `undefined` to clear (used by tests that need to restore the v0
|
|
41
58
|
* filesystem path between runs). Idempotent: the latest call wins.
|
|
59
|
+
*
|
|
60
|
+
* Stored on `globalThis.__zfb.contentSnapshot` rather than a
|
|
61
|
+
* module-level `let` so a worker bundle that ends up with two
|
|
62
|
+
* `zfb/content` module instances still sees a single shared snapshot —
|
|
63
|
+
* see the [`SnapshotBridgeNamespace`] doc above for the full
|
|
64
|
+
* pnpm-symlink rationale.
|
|
42
65
|
*/
|
|
43
66
|
export function setContentSnapshot(snapshot) {
|
|
44
|
-
|
|
67
|
+
const g = globalThis;
|
|
68
|
+
const ns = (g.__zfb ?? {});
|
|
69
|
+
ns.contentSnapshot = snapshot;
|
|
70
|
+
g.__zfb = ns;
|
|
45
71
|
}
|
|
46
72
|
/**
|
|
47
73
|
* Read the currently-installed [`Snapshot`], or `undefined` if none is
|
|
48
74
|
* registered. Exposed mostly for tests; production callers should not
|
|
49
75
|
* need to introspect the bridge state.
|
|
76
|
+
*
|
|
77
|
+
* Reads from `globalThis.__zfb.contentSnapshot`; see
|
|
78
|
+
* [`setContentSnapshot`] for why the slot lives on `globalThis`.
|
|
50
79
|
*/
|
|
51
80
|
export function getContentSnapshot() {
|
|
52
|
-
return
|
|
81
|
+
return globalThis.__zfb?.contentSnapshot;
|
|
53
82
|
}
|
|
54
83
|
// Cached node:fs / node:path module references. Populated lazily on first
|
|
55
84
|
// fs-path use (see [`loadNodeModules`]); reused on subsequent calls.
|
|
@@ -150,31 +179,50 @@ function buildModuleSpecifier(collection, slug) {
|
|
|
150
179
|
*/
|
|
151
180
|
function buildContentComponent(module_specifier, body) {
|
|
152
181
|
return function Content(props) {
|
|
153
|
-
const
|
|
182
|
+
const zfb = globalThis.__zfb;
|
|
183
|
+
const bridge = zfb?.content;
|
|
154
184
|
const renderer = bridge?.get(module_specifier);
|
|
155
185
|
if (typeof renderer === "function") {
|
|
186
|
+
// Merge components in documented precedence order before delegating:
|
|
187
|
+
// defaultComponents → globalThis.__zfb.mdxComponents → props.components
|
|
188
|
+
// This is output-neutral because defaultComponents entries are pure
|
|
189
|
+
// passthroughs; the seam is established here for A2 to populate.
|
|
190
|
+
const mergedProps = {
|
|
191
|
+
...props,
|
|
192
|
+
components: mergeMdxComponents(zfb?.mdxComponents, props.components),
|
|
193
|
+
};
|
|
156
194
|
// Trust the bridge to return a JSX-element-shaped value — we don't
|
|
157
195
|
// try to validate; both Preact and React JSX runtimes accept any
|
|
158
196
|
// structural `{ type, props, key }` object on either side of the
|
|
159
197
|
// boundary, and the renderer is the source of truth here.
|
|
160
|
-
return renderer(
|
|
198
|
+
return renderer(mergedProps);
|
|
161
199
|
}
|
|
162
200
|
return renderFallback(body);
|
|
163
201
|
};
|
|
164
202
|
}
|
|
165
203
|
/**
|
|
166
|
-
*
|
|
167
|
-
* shape so `preact-render-to-string` (and Preact's diff path) treat it
|
|
168
|
-
* as a real VNode. Without this, Preact reads `.constructor` as `Object`
|
|
169
|
-
* — the value inherited from the literal — and silently drops the node,
|
|
170
|
-
* which is what produced the empty MDX bodies tracked in zudo-doc#505.
|
|
204
|
+
* Mint a content element through the per-project JSX runtime.
|
|
171
205
|
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
206
|
+
* Calls `jsx` from `react/jsx-runtime` — alias-rewritten to
|
|
207
|
+
* `preact/jsx-runtime` in Preact mode by the engine (bundler.rs ~2886),
|
|
208
|
+
* native in React mode — so the returned value is a real element for
|
|
209
|
+
* whichever framework the project configured. This replaces the previous
|
|
210
|
+
* hand-rolled `{ type, props, key, constructor: undefined }` object literal
|
|
211
|
+
* (the Preact diff-path sentinel): that shape made `preact-render-to-string`
|
|
212
|
+
* treat it as a VNode, but React's renderer rejects it as a child with
|
|
213
|
+
* error #31 ("Objects are not valid as a React child") because a real React
|
|
214
|
+
* element carries `$$typeof: Symbol.for("react.element")`. `children` is
|
|
215
|
+
* passed inside `props` so a single child or an array both pass through
|
|
216
|
+
* verbatim. Same migration as `Island` in this package. Kept private so
|
|
217
|
+
* callers keep treating `ContentElement` / `ContentComponentElement` as
|
|
218
|
+
* opaque. (Empty-MDX-body history: zudo-doc#505.)
|
|
174
219
|
*/
|
|
175
|
-
function
|
|
176
|
-
|
|
177
|
-
|
|
220
|
+
function mintElement(type, props) {
|
|
221
|
+
// `jsx`'s `type` param is typed `ElementType` (string-literal intrinsic
|
|
222
|
+
// tags or component types), which rejects an arbitrary runtime `string`.
|
|
223
|
+
// The tag is dynamic here, so cast to the factory's own first-param type —
|
|
224
|
+
// robust whether the engine aliases `jsx` to react or preact at build time.
|
|
225
|
+
return jsx(type, props);
|
|
178
226
|
}
|
|
179
227
|
/**
|
|
180
228
|
* Build the structural JSX element returned when the bridge is absent.
|
|
@@ -185,13 +233,9 @@ function stampVNode(shape) {
|
|
|
185
233
|
* pin both the attribute and the marker line.
|
|
186
234
|
*/
|
|
187
235
|
function renderFallback(body) {
|
|
188
|
-
return
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
"data-zfb-content-fallback": "",
|
|
192
|
-
children: `${FALLBACK_MARKER}\n${body}`,
|
|
193
|
-
},
|
|
194
|
-
key: null,
|
|
236
|
+
return mintElement("pre", {
|
|
237
|
+
"data-zfb-content-fallback": "",
|
|
238
|
+
children: `${FALLBACK_MARKER}\n${body}`,
|
|
195
239
|
});
|
|
196
240
|
}
|
|
197
241
|
/** Leading marker line emitted by [`renderFallback`]. Public contract. */
|
|
@@ -217,6 +261,12 @@ export function getCollection(name) {
|
|
|
217
261
|
// Snapshot path: installed by `@takazudo/zfb-runtime`'s
|
|
218
262
|
// `createPageRouter` at Worker boot. Worker runtimes have no `fs`, so
|
|
219
263
|
// this branch is the production path under the embedded V8 host.
|
|
264
|
+
//
|
|
265
|
+
// The snapshot lookup reads `globalThis.__zfb.contentSnapshot`
|
|
266
|
+
// (see `setContentSnapshot` above) rather than a per-module slot so
|
|
267
|
+
// the cross-`zfb/content`-instance case under `--preserve-symlinks`
|
|
268
|
+
// resolves through the same shared state — see #449.
|
|
269
|
+
const installedSnapshot = globalThis.__zfb?.contentSnapshot;
|
|
220
270
|
if (installedSnapshot !== undefined) {
|
|
221
271
|
const list = installedSnapshot.collections[name] ?? [];
|
|
222
272
|
return list.map((entry) => entryFromSnapshot(entry));
|
|
@@ -360,14 +410,10 @@ export function _relPathToSlug(relPath) {
|
|
|
360
410
|
/** Internal helper: build a structural JSX element of the given tag. */
|
|
361
411
|
function buildOverrideElement(tag, props) {
|
|
362
412
|
const { children, ...rest } = props;
|
|
363
|
-
//
|
|
364
|
-
//
|
|
365
|
-
// docblock
|
|
366
|
-
return
|
|
367
|
-
type: tag,
|
|
368
|
-
props: { ...rest, children },
|
|
369
|
-
key: null,
|
|
370
|
-
});
|
|
413
|
+
// Minted through the per-project JSX runtime (`mintElement`) so the
|
|
414
|
+
// override is a real element under both React and Preact — see the
|
|
415
|
+
// helper's docblock (zudo-doc#505; React error #31 rationale).
|
|
416
|
+
return mintElement(tag, { ...rest, children });
|
|
371
417
|
}
|
|
372
418
|
/**
|
|
373
419
|
* `<h2>` passthrough override. Ported from zudo-doc's `HeadingH2`, stripped
|
|
@@ -446,4 +492,20 @@ export const defaultComponents = {
|
|
|
446
492
|
table: ContentTable,
|
|
447
493
|
code: ContentCode,
|
|
448
494
|
};
|
|
495
|
+
/**
|
|
496
|
+
* Merge component maps with the documented precedence order:
|
|
497
|
+
* built-in `defaultComponents` → global slot (`globalThis.__zfb?.mdxComponents`)
|
|
498
|
+
* → per-call `props.components`.
|
|
499
|
+
*
|
|
500
|
+
* Spread in stable key order so the resulting map is deterministic; later
|
|
501
|
+
* entries in the spread win on collision (lowest → highest priority). Absent
|
|
502
|
+
* layers (`undefined`) are no-ops via spread-of-undefined.
|
|
503
|
+
*
|
|
504
|
+
* **Output-neutral by design:** `defaultComponents` entries are pure
|
|
505
|
+
* passthroughs (e.g. `ContentH2` → `<h2>{...props}</h2>`), so introducing
|
|
506
|
+
* this merge into `buildContentComponent` does not change the rendered output.
|
|
507
|
+
*/
|
|
508
|
+
export function mergeMdxComponents(globalSlot, perCall) {
|
|
509
|
+
return { ...defaultComponents, ...globalSlot, ...perCall };
|
|
510
|
+
}
|
|
449
511
|
//# sourceMappingURL=content.js.map
|
package/dist/content.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,sEAAsE;AACtE,uEAAuE;AACvE,kFAAkF;AAClF,0EAA0E;AAC1E,0EAA0E;AAC1E,2CAA2C;AAC3C,EAAE;AACF,cAAc;AACd,2EAA2E;AAC3E,6DAA6D;AAC7D,0EAA0E;AAC1E,oEAAoE;AACpE,wEAAwE;AACxE,QAAQ;AACR,qCAAqC;AACrC,uEAAuE;AACvE,wEAAwE;AACxE,EAAE;AACF,4EAA4E;AAC5E,4CAA4C;
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,sEAAsE;AACtE,uEAAuE;AACvE,kFAAkF;AAClF,0EAA0E;AAC1E,0EAA0E;AAC1E,2CAA2C;AAC3C,EAAE;AACF,cAAc;AACd,2EAA2E;AAC3E,6DAA6D;AAC7D,0EAA0E;AAC1E,oEAAoE;AACpE,wEAAwE;AACxE,QAAQ;AACR,qCAAqC;AACrC,uEAAuE;AACvE,wEAAwE;AACxE,EAAE;AACF,4EAA4E;AAC5E,4CAA4C;AAE5C,yEAAyE;AACzE,iBAAiB;AACjB,EAAE;AACF,6EAA6E;AAC7E,kEAAkE;AAClE,8EAA8E;AAC9E,0EAA0E;AAC1E,sEAAsE;AACtE,yEAAyE;AACzE,kEAAkE;AAClE,mEAAmE;AACnE,qEAAqE;AACrE,sEAAsE;AACtE,0EAA0E;AAC1E,wEAAwE;AACxE,uEAAuE;AACvE,gEAAgE;AAChE,8CAA8C;AAC9C,EAAE;AACF,sEAAsE;AACtE,0EAA0E;AAC1E,yEAAyE;AACzE,0CAA0C;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAKxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIpD,wEAAwE;AACxE,mEAAmE;AACnE,2EAA2E;AAC3E,qEAAqE;AACrE,8BAA8B;AAC9B,OAAO,EAAE,gBAAgB,EAAE,CAAC;AA0F5B;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAA8B;IAC/D,MAAM,CAAC,GAAG,UAAkC,CAAC;IAC7C,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;IACtD,EAAE,CAAC,eAAe,GAAG,QAAQ,CAAC;IAC9B,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAQ,UAAmC,CAAC,KAAK,EAAE,eAAe,CAAC;AACrE,CAAC;AA6HD,0EAA0E;AAC1E,qEAAqE;AACrE,IAAI,YAAuC,CAAC;AAC5C,IAAI,cAA2C,CAAC;AAEhD;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,eAAe;IACtB,IAAI,YAAY,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QAC/D,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IACpD,CAAC;IACD,iEAAiE;IACjE,MAAM,eAAe,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC3C,MAAM,WAAW,GAAG,OAAO,GAAG,IAAI,CAAC;IACnC,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;IACvC,oEAAoE;IACpE,wEAAwE;IACxE,0DAA0D;IAC1D,MAAM,aAAa,GAAG,UAAqD,CAAC;IAC5E,IAAI,WAAW,GAA+B,aAAa,CAAC,OAAO,CAAC;IACpE,qEAAqE;IACrE,iEAAiE;IACjE,6DAA6D;IAC7D,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;QACtC,sEAAsE;QACtE,oEAAoE;QACpE,uCAAuC;QACvC,IAAI,CAAC;YACH,WAAW,GAAG,IAAI,QAAQ,CAAC,4DAA4D,CAAC,EAE3E,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,WAAW,GAAG,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;QACtC,mEAAmE;QACnE,oEAAoE;QACpE,oEAAoE;QACpE,gEAAgE;QAChE,MAAM,IAAI,GACR,UACD,CAAC,OAAO,CAAC;QACV,MAAM,UAAU,GAAG,IAAI,EAAE,gBAAgB,CAAC;QAC1C,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,UAAU,CAAC,eAAe,CAAiC,CAAC;YACxE,WAAW,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CACb,kFAAkF;YAChF,sFAAsF;YACtF,sFAAsF,CACzF,CAAC;IACJ,CAAC;IACD,YAAY,GAAG,WAAW,CAAC,WAAW,CAAkB,CAAC;IACzD,cAAc,GAAG,WAAW,CAAC,aAAa,CAAoB,CAAC;IAC/D,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IACtF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,UAAkB,EAAE,IAAY;IAC5D,OAAO,SAAS,UAAU,IAAI,IAAI,EAAE,CAAC;AACvC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,qBAAqB,CAC5B,gBAAwB,EACxB,IAAY;IAEZ,OAAO,SAAS,OAAO,CAAC,KAAmB;QACzC,MAAM,GAAG,GAAI,UAA2B,CAAC,KAAK,CAAC;QAC/C,MAAM,MAAM,GAAG,GAAG,EAAE,OAAO,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC/C,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;YACnC,qEAAqE;YACrE,0EAA0E;YAC1E,oEAAoE;YACpE,iEAAiE;YACjE,MAAM,WAAW,GAAiB;gBAChC,GAAG,KAAK;gBACR,UAAU,EAAE,kBAAkB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,CAAC,UAAU,CAAC;aACrE,CAAC;YACF,mEAAmE;YACnE,iEAAiE;YACjE,iEAAiE;YACjE,0DAA0D;YAC1D,OAAO,QAAQ,CAAC,WAAW,CAAmB,CAAC;QACjD,CAAC;QACD,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,WAAW,CAAC,IAAY,EAAE,KAA8B;IAC/D,wEAAwE;IACxE,yEAAyE;IACzE,2EAA2E;IAC3E,4EAA4E;IAC5E,OAAO,GAAG,CAAC,IAAiC,EAAE,KAAK,CAA8B,CAAC;AACpF,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,WAAW,CAAC,KAAK,EAAE;QACxB,2BAA2B,EAAE,EAAE;QAC/B,QAAQ,EAAE,GAAG,eAAe,KAAK,IAAI,EAAE;KACxC,CAAC,CAAC;AACL,CAAC;AAED,0EAA0E;AAC1E,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAEhD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,aAAa,CAA8B,IAAY;IACrE,wDAAwD;IACxD,sEAAsE;IACtE,iEAAiE;IACjE,EAAE;IACF,+DAA+D;IAC/D,oEAAoE;IACpE,oEAAoE;IACpE,qDAAqD;IACrD,MAAM,iBAAiB,GAAI,UAAmC,CAAC,KAAK,EAAE,eAAe,CAAC;IACtF,IAAI,iBAAiB,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAI,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,oEAAoE;IACpE,yCAAyC;IACzC,EAAE;IACF,qEAAqE;IACrE,uEAAuE;IACvE,kEAAkE;IAClE,yEAAyE;IACzE,UAAU;IACV,MAAM,GAAG,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,kEAAkE;QAClE,mEAAmE;QACnE,2CAA2C;QAC3C,IACE,GAAG,KAAK,IAAI;YACZ,OAAO,GAAG,KAAK,QAAQ;YACvB,MAAM,IAAI,GAAG;YACZ,GAAyB,CAAC,IAAI,KAAK,QAAQ,EAC5C,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC;IACvC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC9B,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC7C,sEAAsE;QACtE,iEAAiE;QACjE,oEAAoE;QACpE,uCAAuC;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1D,OAAO;YACL,IAAI;YACJ,IAAI,EAAE,IAAS;YACf,IAAI;YACJ,gBAAgB;YAChB,OAAO,EAAE,qBAAqB,CAAC,gBAAgB,EAAE,IAAI,CAAC;SACvD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,iBAAiB,CAAI,KAAoB;IAChD,MAAM,IAAI,GACR,KAAK,CAAC,WAAW,KAAK,IAAI,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS;QAC3D,CAAC,CAAE,EAAQ;QACX,CAAC,CAAE,KAAK,CAAC,WAA4B,CAAC;IAC1C,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI;QACJ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,OAAO,EAAE,qBAAqB,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC;KACnE,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC;IACvC,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,IAAI,EAAE,CAAC;IACd,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAClB,EAAiB,EACjB,IAAqB,EACrB,OAAe,EACf,GAAa;IAEb,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,yEAAyE;QACzE,0EAA0E;QAC1E,4DAA4D;QAC5D,IAAI,KAAK,CAAC,cAAc,EAAE;YAAE,SAAS;QACrC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,+DAA+D;IAC/D,sDAAsD;IACtD,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9E,OAAO,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AACtF,CAAC;AAuDD,wEAAwE;AACxE,SAAS,oBAAoB,CAAC,GAAW,EAAE,KAA4B;IACrE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACpC,oEAAoE;IACpE,mEAAmE;IACnE,+DAA+D;IAC/D,OAAO,WAAW,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAuC,CAAC;AACvF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,KAA4B;IACpD,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,SAAS,CAAC,KAA4B;IACpD,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,SAAS,CAAC,KAA4B;IACpD,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,OAAO,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,WAAW,CAAC,KAA4B;IACtD,OAAO,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,aAAa,CAAC,KAA4B;IACxD,OAAO,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,iBAAiB,CAAC,KAA4B;IAC5D,OAAO,oBAAoB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACnD,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,SAAS,CAAC,KAA4B;IACpD,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,SAAS,CAAC,KAA4B;IACpD,OAAO,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,YAAY,CAAC,KAA4B;IACvD,OAAO,oBAAoB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,WAAW,CAAC,KAA4B;IACtD,OAAO,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,CAAC,EAAE,gBAAgB;IACnB,CAAC,EAAE,WAAW;IACd,MAAM,EAAE,aAAa;IACrB,UAAU,EAAE,iBAAiB;IAC7B,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,YAAY;IACnB,IAAI,EAAE,WAAW;CACT,CAAC;AAEX;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAqC,EACrC,OAAkC;IAElC,OAAO,EAAE,GAAG,iBAAiB,EAAE,GAAG,UAAU,EAAE,GAAG,OAAO,EAAE,CAAC;AAC7D,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,5 +3,5 @@ export { scheduleHydrate, mountIslands, mountNewIslands, cancelPendingIslands, u
|
|
|
3
3
|
export type { IslandManifest, IslandManifestValue } from "./runtime.js";
|
|
4
4
|
export { DEFAULT_WHEN, isWhen, WHEN_VALUES, type When } from "./types.js";
|
|
5
5
|
export { definePlugin, type ZfbBuildHookContext, type ZfbDevMiddlewareContext, type ZfbDevMiddlewareHandler, type ZfbDevMiddlewareRequest, type ZfbDevMiddlewareResponse, type ZfbPlugin, type ZfbPluginLogger, } from "./plugins.js";
|
|
6
|
-
export { ContentBlockquote, ContentCode, ContentH2, ContentH3, ContentH4, ContentLink, ContentOl, ContentParagraph, ContentStrong, ContentTable, ContentUl, defaultComponents, type ContentComponentElement, type ContentComponentProps, } from "./content.js";
|
|
6
|
+
export { ContentBlockquote, ContentCode, ContentH2, ContentH3, ContentH4, ContentLink, ContentOl, ContentParagraph, ContentStrong, ContentTable, ContentUl, defaultComponents, mergeMdxComponents, type ContentComponentElement, type ContentComponentProps, type MdxComponents, } from "./content.js";
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,MAAM,EACN,oBAAoB,EACpB,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAW1E,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EACd,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,MAAM,EACN,oBAAoB,EACpB,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAW1E,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EACd,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -17,5 +17,5 @@ export { DEFAULT_WHEN, isWhen, WHEN_VALUES } from "./types.js";
|
|
|
17
17
|
// root entry re-exports them so simple plugins can pull everything from
|
|
18
18
|
// one path.
|
|
19
19
|
export { definePlugin, } from "./plugins.js";
|
|
20
|
-
export { ContentBlockquote, ContentCode, ContentH2, ContentH3, ContentH4, ContentLink, ContentOl, ContentParagraph, ContentStrong, ContentTable, ContentUl, defaultComponents, } from "./content.js";
|
|
20
|
+
export { ContentBlockquote, ContentCode, ContentH2, ContentH3, ContentH4, ContentLink, ContentOl, ContentParagraph, ContentStrong, ContentTable, ContentUl, defaultComponents, mergeMdxComponents, } from "./content.js";
|
|
21
21
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,iFAAiF;AACjF,uDAAuD;AACvD,gFAAgF;AAChF,uCAAuC;AAEvC,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,MAAM,EACN,oBAAoB,EACpB,WAAW,GAGZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAa,MAAM,YAAY,CAAC;AAE1E,yEAAyE;AACzE,iFAAiF;AACjF,oEAAoE;AACpE,+FAA+F;AAC/F,qCAAqC;AACrC,kEAAkE;AAClE,sEAAsE;AACtE,wEAAwE;AACxE,YAAY;AACZ,OAAO,EACL,YAAY,GAQb,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,SAAS,EACT,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,EAAE;AACF,iFAAiF;AACjF,uDAAuD;AACvD,gFAAgF;AAChF,uCAAuC;AAEvC,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,MAAM,EACN,oBAAoB,EACpB,WAAW,GAGZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAa,MAAM,YAAY,CAAC;AAE1E,yEAAyE;AACzE,iFAAiF;AACjF,oEAAoE;AACpE,+FAA+F;AAC/F,qCAAqC;AACrC,kEAAkE;AAClE,sEAAsE;AACtE,wEAAwE;AACxE,YAAY;AACZ,OAAO,EACL,YAAY,GAQb,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,kBAAkB,GAInB,MAAM,cAAc,CAAC"}
|
package/dist/island.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"island.d.ts","sourceRoot":"","sources":["../src/island.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"island.d.ts","sourceRoot":"","sources":["../src/island.ts"],"names":[],"mappings":"AA4CA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAe,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAMpD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAErD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;AAE/D,uEAAuE;AACvE,eAAO,MAAM,wBAAwB,cAAc,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,eAAe,CAAC;AAE5C,4BAA4B;AAC5B,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,CAyBxD;AAsCD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAS9D;AAgBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAS9E"}
|
package/dist/island.js
CHANGED
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
// When validation: in development we console.warn for unknown `when`
|
|
40
40
|
// values and fall back to the default. In production we silently fall
|
|
41
41
|
// back to keep the bundle path small.
|
|
42
|
+
import { jsx } from "react/jsx-runtime";
|
|
42
43
|
import { resolveWhen } from "./types.js";
|
|
43
44
|
// Re-export `resolveWhen` for back-compat: tests and downstream consumers
|
|
44
45
|
// historically imported it from `./island.js`. The implementation lives in
|
|
@@ -106,48 +107,53 @@ export function Island(props) {
|
|
|
106
107
|
const skipSsrProps = {
|
|
107
108
|
[SKIP_SSR_MARKER_ATTR]: componentName,
|
|
108
109
|
"data-when": when,
|
|
109
|
-
children: props.ssrFallback ?? null,
|
|
110
110
|
};
|
|
111
111
|
if (dataProps !== undefined)
|
|
112
112
|
skipSsrProps[PROPS_DATA_ATTR] = dataProps;
|
|
113
|
-
return
|
|
114
|
-
type: "div",
|
|
115
|
-
props: skipSsrProps,
|
|
116
|
-
key: null,
|
|
117
|
-
});
|
|
113
|
+
return makeWrapper(skipSsrProps, props.ssrFallback ?? null);
|
|
118
114
|
}
|
|
119
115
|
const hydrateProps = {
|
|
120
116
|
[HYDRATE_MARKER_ATTR]: componentName,
|
|
121
117
|
"data-when": when,
|
|
122
|
-
children: props.children,
|
|
123
118
|
};
|
|
124
119
|
if (dataProps !== undefined)
|
|
125
120
|
hydrateProps[PROPS_DATA_ATTR] = dataProps;
|
|
126
|
-
return
|
|
127
|
-
type: "div",
|
|
128
|
-
props: hydrateProps,
|
|
129
|
-
key: null,
|
|
130
|
-
});
|
|
121
|
+
return makeWrapper(hydrateProps, props.children);
|
|
131
122
|
}
|
|
132
123
|
/**
|
|
133
|
-
* Construct the
|
|
134
|
-
* `
|
|
124
|
+
* Construct the wrapper element through the **automatic JSX runtime
|
|
125
|
+
* factory**, called explicitly so this file stays plain `.ts` (no JSX
|
|
126
|
+
* syntax).
|
|
135
127
|
*
|
|
136
|
-
* Why
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
*
|
|
140
|
-
*
|
|
141
|
-
*
|
|
142
|
-
*
|
|
128
|
+
* Why the explicit `jsx(...)` call rather than a hand-rolled
|
|
129
|
+
* `{ type, props, key }` object literal: a plain literal is only valid for
|
|
130
|
+
* Preact (whose diff path / `preact-render-to-string` recognise a VNode by
|
|
131
|
+
* `vnode.constructor === undefined`). React's renderer rejects such an
|
|
132
|
+
* object as a child with "Objects are not valid as a React child"
|
|
133
|
+
* (minified error #31) because a real React element carries
|
|
134
|
+
* `$$typeof: Symbol.for("react.element")`, which a literal cannot fake
|
|
135
|
+
* portably. Calling `jsx` from `react/jsx-runtime` mints a real element:
|
|
136
|
+
* in React mode it resolves natively; in Preact mode the engine rewrites
|
|
137
|
+
* `react/jsx-runtime` → `preact/jsx-runtime` (bundler.rs ~2886), so the
|
|
138
|
+
* Preact runtime mints the element. Same result the JSX `<div>` delegation
|
|
139
|
+
* produced — but as plain `.ts`.
|
|
140
|
+
*
|
|
141
|
+
* Why `.ts` and NOT `.tsx`: esbuild rewrites a `.js` import specifier to
|
|
142
|
+
* `.ts` but NOT to `.tsx`. The barrel `index.ts` imports `./island.js`;
|
|
143
|
+
* when this file was `island.tsx`, source consumers (the dev `exports`
|
|
144
|
+
* point at `src/*.ts`, e.g. the node-free template / smoke path) failed
|
|
145
|
+
* with `Could not resolve "./island.js"`. The published `dist` worked
|
|
146
|
+
* (tsc emits a real `island.js`), which masked the regression in
|
|
147
|
+
* pnpm-pack/dist probes. Keeping this a `.ts` file makes the barrel resolve
|
|
148
|
+
* `./island.js` → `./island.ts` from source everywhere, while tsc still
|
|
149
|
+
* emits `dist/island.js` for the published package.
|
|
143
150
|
*
|
|
144
151
|
* The cast back to `IslandElement` keeps the public type tight; the
|
|
145
|
-
*
|
|
152
|
+
* concrete element shape produced by the runtime is invisible to type
|
|
153
|
+
* consumers.
|
|
146
154
|
*/
|
|
147
|
-
function
|
|
148
|
-
|
|
149
|
-
v.constructor = undefined;
|
|
150
|
-
return shape;
|
|
155
|
+
function makeWrapper(props, children) {
|
|
156
|
+
return jsx("div", { ...props, children });
|
|
151
157
|
}
|
|
152
158
|
/**
|
|
153
159
|
* Pull a component-name string out of a JSX child.
|
package/dist/island.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"island.js","sourceRoot":"","sources":["../src/island.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,wEAAwE;AACxE,2EAA2E;AAC3E,2EAA2E;AAC3E,uEAAuE;AACvE,iCAAiC;AACjC,EAAE;AACF,sEAAsE;AACtE,EAAE;AACF,gDAAgD;AAChD,EAAE;AACF,cAAc;AACd,EAAE;AACF,wDAAwD;AACxD,kBAAkB;AAClB,WAAW;AACX,EAAE;AACF,6EAA6E;AAC7E,2EAA2E;AAC3E,sEAAsE;AACtE,wEAAwE;AACxE,uEAAuE;AACvE,EAAE;AACF,0EAA0E;AAC1E,uEAAuE;AACvE,UAAU;AACV,EAAE;AACF,2EAA2E;AAC3E,MAAM;AACN,qDAAqD;AACrD,0BAA0B;AAC1B,WAAW;AACX,EAAE;AACF,0EAA0E;AAC1E,uEAAuE;AACvE,0BAA0B;AAC1B,EAAE;AACF,qEAAqE;AACrE,sEAAsE;AACtE,sCAAsC;
|
|
1
|
+
{"version":3,"file":"island.js","sourceRoot":"","sources":["../src/island.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@takazudo/zfb",
|
|
3
|
-
"version": "0.1.0-next.
|
|
3
|
+
"version": "0.1.0-next.21",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Rust-built static-site engine for Astro and Next.js users — millisecond rebuilds, single binary. SDK with islands, content collections, pagination, and config helpers.",
|
|
@@ -70,11 +70,11 @@
|
|
|
70
70
|
"LICENSE"
|
|
71
71
|
],
|
|
72
72
|
"optionalDependencies": {
|
|
73
|
-
"@takazudo/zfb-darwin-arm64": "0.1.0-next.
|
|
74
|
-
"@takazudo/zfb-darwin-x64": "0.1.0-next.
|
|
75
|
-
"@takazudo/zfb-linux-arm64-gnu": "0.1.0-next.
|
|
76
|
-
"@takazudo/zfb-linux-x64-gnu": "0.1.0-next.
|
|
77
|
-
"@takazudo/zfb-win32-x64-msvc": "0.1.0-next.
|
|
73
|
+
"@takazudo/zfb-darwin-arm64": "0.1.0-next.21",
|
|
74
|
+
"@takazudo/zfb-darwin-x64": "0.1.0-next.21",
|
|
75
|
+
"@takazudo/zfb-linux-arm64-gnu": "0.1.0-next.21",
|
|
76
|
+
"@takazudo/zfb-linux-x64-gnu": "0.1.0-next.21",
|
|
77
|
+
"@takazudo/zfb-win32-x64-msvc": "0.1.0-next.21"
|
|
78
78
|
},
|
|
79
79
|
"publishConfig": {
|
|
80
80
|
"access": "public"
|
|
@@ -85,7 +85,9 @@
|
|
|
85
85
|
},
|
|
86
86
|
"devDependencies": {
|
|
87
87
|
"@types/node": "^22.0.0",
|
|
88
|
+
"@types/react": "^19.0.0",
|
|
88
89
|
"happy-dom": "^15.7.4",
|
|
90
|
+
"react": "^19.2.3",
|
|
89
91
|
"typescript": "^5.9.0",
|
|
90
92
|
"vitest": "^2.1.9"
|
|
91
93
|
},
|