@brett_lamy/docstream 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -5
- package/dist/assets.d.ts +3 -0
- package/dist/assets.d.ts.map +1 -0
- package/dist/assets.js +20 -0
- package/dist/assets.js.map +1 -0
- package/dist/demo/DemoViewer.d.ts +64 -0
- package/dist/demo/DemoViewer.d.ts.map +1 -0
- package/dist/demo/DemoViewer.js +426 -0
- package/dist/demo/DemoViewer.js.map +1 -0
- package/dist/demo/context.d.ts +14 -0
- package/dist/demo/context.d.ts.map +1 -0
- package/dist/demo/context.js +25 -0
- package/dist/demo/context.js.map +1 -0
- package/dist/demo/glob.d.ts +60 -0
- package/dist/demo/glob.d.ts.map +1 -0
- package/dist/demo/glob.js +158 -0
- package/dist/demo/glob.js.map +1 -0
- package/dist/demo/index.d.ts +10 -0
- package/dist/demo/index.d.ts.map +1 -0
- package/dist/demo/index.js +6 -0
- package/dist/demo/index.js.map +1 -0
- package/dist/demo/markdown.d.ts +60 -0
- package/dist/demo/markdown.d.ts.map +1 -0
- package/dist/demo/markdown.js +181 -0
- package/dist/demo/markdown.js.map +1 -0
- package/dist/demo/surface.d.ts +11 -0
- package/dist/demo/surface.d.ts.map +1 -0
- package/dist/demo/surface.js +69 -0
- package/dist/demo/surface.js.map +1 -0
- package/dist/demo/types.d.ts +91 -0
- package/dist/demo/types.d.ts.map +1 -0
- package/dist/demo/types.js +2 -0
- package/dist/demo/types.js.map +1 -0
- package/dist/docs/CollapsibleCode.d.ts +14 -0
- package/dist/docs/CollapsibleCode.d.ts.map +1 -0
- package/dist/docs/CollapsibleCode.js +19 -0
- package/dist/docs/CollapsibleCode.js.map +1 -0
- package/dist/docs/DocsRenderer.d.ts +49 -0
- package/dist/docs/DocsRenderer.d.ts.map +1 -0
- package/dist/docs/DocsRenderer.js +277 -0
- package/dist/docs/DocsRenderer.js.map +1 -0
- package/dist/docs/HighlightedCode.d.ts +6 -0
- package/dist/docs/HighlightedCode.d.ts.map +1 -0
- package/dist/docs/HighlightedCode.js +40 -0
- package/dist/docs/HighlightedCode.js.map +1 -0
- package/dist/docs/Mermaid.d.ts +7 -0
- package/dist/docs/Mermaid.d.ts.map +1 -0
- package/dist/docs/Mermaid.js +39 -0
- package/dist/docs/Mermaid.js.map +1 -0
- package/dist/docs/PageActions.d.ts +33 -0
- package/dist/docs/PageActions.d.ts.map +1 -0
- package/dist/docs/PageActions.js +115 -0
- package/dist/docs/PageActions.js.map +1 -0
- package/dist/docs/controls.d.ts +29 -0
- package/dist/docs/controls.d.ts.map +1 -0
- package/dist/docs/controls.js +46 -0
- package/dist/docs/controls.js.map +1 -0
- package/dist/docs/copy.d.ts +24 -0
- package/dist/docs/copy.d.ts.map +1 -0
- package/dist/docs/copy.js +62 -0
- package/dist/docs/copy.js.map +1 -0
- package/dist/docs/math.d.ts +3 -0
- package/dist/docs/math.d.ts.map +1 -0
- package/dist/docs/math.js +12 -0
- package/dist/docs/math.js.map +1 -0
- package/dist/docs/reference.d.ts +27 -0
- package/dist/docs/reference.d.ts.map +1 -0
- package/dist/docs/reference.js +73 -0
- package/dist/docs/reference.js.map +1 -0
- package/dist/docs/tabs-sync.d.ts +5 -0
- package/dist/docs/tabs-sync.d.ts.map +1 -0
- package/dist/docs/tabs-sync.js +58 -0
- package/dist/docs/tabs-sync.js.map +1 -0
- package/dist/gitbook/ast.d.ts +506 -0
- package/dist/gitbook/ast.d.ts.map +1 -0
- package/dist/gitbook/ast.js +8 -0
- package/dist/gitbook/ast.js.map +1 -0
- package/dist/gitbook/attrs.d.ts +14 -0
- package/dist/gitbook/attrs.d.ts.map +1 -0
- package/dist/gitbook/attrs.js +36 -0
- package/dist/gitbook/attrs.js.map +1 -0
- package/dist/gitbook/flatten.d.ts +14 -0
- package/dist/gitbook/flatten.d.ts.map +1 -0
- package/dist/gitbook/flatten.js +45 -0
- package/dist/gitbook/flatten.js.map +1 -0
- package/dist/gitbook/index.d.ts +10 -0
- package/dist/gitbook/index.d.ts.map +1 -0
- package/dist/gitbook/index.js +8 -0
- package/dist/gitbook/index.js.map +1 -0
- package/dist/gitbook/inline.d.ts +28 -0
- package/dist/gitbook/inline.d.ts.map +1 -0
- package/dist/gitbook/inline.js +956 -0
- package/dist/gitbook/inline.js.map +1 -0
- package/dist/gitbook/outline.d.ts +16 -0
- package/dist/gitbook/outline.d.ts.map +1 -0
- package/dist/gitbook/outline.js +44 -0
- package/dist/gitbook/outline.js.map +1 -0
- package/dist/gitbook/package-managers.d.ts +12 -0
- package/dist/gitbook/package-managers.d.ts.map +1 -0
- package/dist/gitbook/package-managers.js +93 -0
- package/dist/gitbook/package-managers.js.map +1 -0
- package/dist/gitbook/parse.d.ts +44 -0
- package/dist/gitbook/parse.d.ts.map +1 -0
- package/dist/gitbook/parse.js +1113 -0
- package/dist/gitbook/parse.js.map +1 -0
- package/dist/gitbook/serialize.d.ts +23 -0
- package/dist/gitbook/serialize.d.ts.map +1 -0
- package/dist/gitbook/serialize.js +498 -0
- package/dist/gitbook/serialize.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/openapi/OpenApiOperation.d.ts +6 -0
- package/dist/openapi/OpenApiOperation.d.ts.map +1 -0
- package/dist/openapi/OpenApiOperation.js +112 -0
- package/dist/openapi/OpenApiOperation.js.map +1 -0
- package/dist/playground/InlineDemoPreview.d.ts +24 -0
- package/dist/playground/InlineDemoPreview.d.ts.map +1 -0
- package/dist/playground/InlineDemoPreview.js +48 -0
- package/dist/playground/InlineDemoPreview.js.map +1 -0
- package/dist/playground/PlaygroundStreamdown.d.ts +16 -0
- package/dist/playground/PlaygroundStreamdown.d.ts.map +1 -0
- package/dist/playground/PlaygroundStreamdown.js +22 -0
- package/dist/playground/PlaygroundStreamdown.js.map +1 -0
- package/dist/playground/ReactCodePreview.d.ts +64 -0
- package/dist/playground/ReactCodePreview.d.ts.map +1 -0
- package/dist/playground/ReactCodePreview.js +108 -0
- package/dist/playground/ReactCodePreview.js.map +1 -0
- package/dist/playground/filesystem.d.ts +27 -0
- package/dist/playground/filesystem.d.ts.map +1 -0
- package/dist/playground/filesystem.js +65 -0
- package/dist/playground/filesystem.js.map +1 -0
- package/dist/playground/index.d.ts +9 -0
- package/dist/playground/index.d.ts.map +1 -0
- package/dist/playground/index.js +7 -0
- package/dist/playground/index.js.map +1 -0
- package/dist/playground/project.d.ts +57 -0
- package/dist/playground/project.d.ts.map +1 -0
- package/dist/playground/project.js +137 -0
- package/dist/playground/project.js.map +1 -0
- package/dist/replay/NativeReplay.d.ts +9 -0
- package/dist/replay/NativeReplay.d.ts.map +1 -0
- package/dist/replay/NativeReplay.js +173 -0
- package/dist/replay/NativeReplay.js.map +1 -0
- package/dist/replay/ReplayPreview.d.ts +33 -0
- package/dist/replay/ReplayPreview.d.ts.map +1 -0
- package/dist/replay/ReplayPreview.js +91 -0
- package/dist/replay/ReplayPreview.js.map +1 -0
- package/dist/replay/index.d.ts +5 -0
- package/dist/replay/index.d.ts.map +1 -0
- package/dist/replay/index.js +4 -0
- package/dist/replay/index.js.map +1 -0
- package/dist/replay/sanitize.d.ts +4 -0
- package/dist/replay/sanitize.d.ts.map +1 -0
- package/dist/replay/sanitize.js +86 -0
- package/dist/replay/sanitize.js.map +1 -0
- package/dist/replay/url.d.ts +8 -0
- package/dist/replay/url.d.ts.map +1 -0
- package/dist/replay/url.js +41 -0
- package/dist/replay/url.js.map +1 -0
- package/dist/source/SourcePreview.d.ts +13 -0
- package/dist/source/SourcePreview.d.ts.map +1 -0
- package/dist/source/SourcePreview.js +47 -0
- package/dist/source/SourcePreview.js.map +1 -0
- package/dist/source/client.d.ts +7 -0
- package/dist/source/client.d.ts.map +1 -0
- package/dist/source/client.js +52 -0
- package/dist/source/client.js.map +1 -0
- package/dist/source/index.d.ts +6 -0
- package/dist/source/index.d.ts.map +1 -0
- package/dist/source/index.js +3 -0
- package/dist/source/index.js.map +1 -0
- package/dist/source/types.d.ts +33 -0
- package/dist/source/types.d.ts.map +1 -0
- package/dist/source/types.js +2 -0
- package/dist/source/types.js.map +1 -0
- package/dist/streamdown.d.ts +19 -0
- package/dist/streamdown.d.ts.map +1 -0
- package/dist/streamdown.js +15 -0
- package/dist/streamdown.js.map +1 -0
- package/dist/styles.css +2441 -0
- package/dist/video/VideoEmbed.d.ts +17 -0
- package/dist/video/VideoEmbed.d.ts.map +1 -0
- package/dist/video/VideoEmbed.js +12 -0
- package/dist/video/VideoEmbed.js.map +1 -0
- package/dist/video/index.d.ts +3 -0
- package/dist/video/index.d.ts.map +1 -0
- package/dist/video/index.js +2 -0
- package/dist/video/index.js.map +1 -0
- package/dist/vite/index.d.ts +21 -0
- package/dist/vite/index.d.ts.map +1 -0
- package/dist/vite/index.js +137 -0
- package/dist/vite/index.js.map +1 -0
- package/dist/viz/VizEmbed.d.ts +18 -0
- package/dist/viz/VizEmbed.d.ts.map +1 -0
- package/dist/viz/VizEmbed.js +12 -0
- package/dist/viz/VizEmbed.js.map +1 -0
- package/dist/viz/index.d.ts +4 -0
- package/dist/viz/index.d.ts.map +1 -0
- package/dist/viz/index.js +3 -0
- package/dist/viz/index.js.map +1 -0
- package/package.json +62 -32
- package/src/docs/Mermaid.tsx +5 -3
- package/src/replay/ReplayPreview.tsx +0 -1
- package/src/styles.css +91 -0
- package/src/replay/styles.css +0 -87
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReactCodePreview.js","sourceRoot":"","sources":["../../src/playground/ReactCodePreview.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAsC,MAAM,OAAO,CAAA;AACxF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,GAIxB,MAAM,cAAc,CAAA;AA+CrB,MAAM,mBAAmB,GAAG,EAAE,6BAA6B,EAAE,GAAG,EAAE,CAAA;AAElE,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AAClE,CAAC;AAED,SAAS,WAAW,CAAC,MAAuB;IAC1C,OAAO,EAAE,MAAM,EAAE,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAA;AACxE,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,CAAA;IACtD,OAAO,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;AAC3D,CAAC;AAED,SAAS,UAAU,CAAC,KAAsB,EAAE,aAAqB;IAC/D,MAAM,cAAc,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAA;IAC7D,MAAM,IAAI,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC,IAAI,CAC/C,CAAC,SAAS,EAAE,EAAE,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,cAAc,CAC1E,CAAA;IACD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IACtB,OAAO,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AACjG,CAAC;AAmBD,2FAA2F;AAC3F,MAAM,UAAU,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAA2B;IAC1H,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IAC3E,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACnD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IAEvD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,QAAQ,CAAC,MAAM,CAAC,CAAA;YAChB,MAAM,CAAC,IAAI,CAAC,CAAA;YACZ,QAAQ,CAAC,IAAI,CAAC,CAAA;YACd,OAAM;QACR,CAAC;QAED,IAAI,SAAS,GAAG,KAAK,CAAA;QACrB,IAAI,SAAS,GAA+B,IAAI,CAAA;QAChD,IAAI,QAAQ,GAAkB,IAAI,CAAA;QAClC,QAAQ,CAAC,UAAU,CAAC,CAAA;QACpB,MAAM,CAAC,IAAI,CAAC,CAAA;QACZ,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEd,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;YACvB,IAAI,CAAC;gBACH,SAAS,GAAG,MAAM,yBAAyB,CAAC,KAAK,EAAE;oBACjD,GAAG,gBAAgB;oBACnB,GAAG,EAAE,EAAE,GAAG,mBAAmB,EAAE,GAAG,gBAAgB,EAAE,GAAG,EAAE;oBACzD,aAAa,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE;wBACvC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,GAAG,CAAA;wBAChE,gBAAgB,EAAE,aAAa,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;oBAC1D,CAAC;iBACF,CAAC,CAAA;gBAEF,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,EAAE;oBAClE,GAAG,EAAE,mBAAmB;iBACzB,CAAC,CAAA;gBACF,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;oBAC1B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,kCAAkC,CAAC,CAAA;gBACvF,CAAC;gBAED,MAAM,SAAS,GAAG,QAAQ,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAA;gBACvF,IAAI,SAAS,EAAE,CAAC;oBACd,SAAS,CAAC,OAAO,EAAE,CAAA;oBACnB,OAAM;gBACR,CAAC;gBACD,MAAM,CAAC,SAAS,CAAC,CAAA;gBACjB,QAAQ,CAAC,OAAO,CAAC,CAAA;gBACjB,OAAO,EAAE,CAAC,SAAS,CAAC,CAAA;YACtB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;gBACzC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,QAAQ,CAAC,OAAO,CAAC,CAAA;oBACjB,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;oBAC3B,OAAO,EAAE,CAAC,SAAS,CAAC,CAAA;gBACtB,CAAC;gBACD,SAAS,EAAE,OAAO,EAAE,CAAA;YACtB,CAAC;QACH,CAAC,CAAA;QAED,KAAK,KAAK,EAAE,CAAA;QACZ,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAA;YAChB,SAAS,EAAE,OAAO,EAAE,CAAA;QACtB,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAA;IAE1D,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAA;AAC9B,CAAC;AAED,mFAAmF;AACnF,MAAM,QAAQ,GAAoB,EAAE,CAAA;AAEpC,MAAM,UAAU,SAAS,CAAC,EACxB,KAAK,GAAG,QAAQ,EAChB,OAAO,EACP,IAAI,EAAE,QAAQ,EACd,QAAQ,EACR,MAAM,EACN,OAAO,EACP,KAAK,GAAG,eAAe,EACvB,IAAI,GAAG,IAAI,EACX,MAAM,GAAG,GAAG,EACZ,QAAQ,EACR,kBAAkB,GAAG,CAAC,EACtB,iBAAiB,GAAG,EAAE,EACtB,KAAK,GAAG,oBAAoB,EAC5B,SAAS,GAAG,IAAI,EAChB,OAAO,GAAG,0DAA0D,EACpE,gBAAgB,EAChB,SAAS,EACT,OAAO,EACP,OAAO,GACQ;IACf,MAAM,MAAM,GAAG,OAAO,KAAK,SAAS,CAAA;IACpC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAA;IAC1F,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC;QAC7D,KAAK,EAAE,YAAY;QACnB,IAAI;QACJ,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;QACrB,gBAAgB;QAChB,OAAO;QACP,OAAO;KACR,CAAC,CAAA;IACF,MAAM,KAAK,GAAiB,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAA;IAC1D,MAAM,iBAAiB,GAAG,QAAQ,IAAI,KAAK,CAAA;IAC3C,MAAM,IAAI,GAAG,OAAO,CAClB,GAAG,EAAE,CAAC,QAAQ,IAAI,UAAU,CAAC,KAAK,EAAE,iBAAiB,CAAC,EACtD,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,CAAC,CACrC,CAAA;IAED,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,mBAAmB,SAAS,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAA;IACnF,MAAM,OAAO,GAAG,KAAK,KAAK,UAAU,CAAA;IAEpC,OAAO,CACL,mBAAS,SAAS,EAAE,YAAY,+BAA4B,EAAE,aAC5D,kBAAQ,SAAS,EAAC,wBAAwB,aACxC,yBAAO,KAAK,GAAQ,EACnB,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACzB,eAAM,SAAS,EAAE,iDAAiD,KAAK,EAAE,YACtE,MAAM,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAC/E,CACR,EACA,OAAO,EACP,CAAC,MAAM,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAC9C,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,qBAAqB,EAC/B,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,YAE1C,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,GAClC,CACV,CAAC,CAAC,CAAC,IAAI,IACD,EACR,MAAM,CAAC,CAAC,CAAC,CACR,cAAK,SAAS,EAAC,yBAAyB,EAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,YAAG,OAAO,GAAO,CACrF,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACV,cAAK,SAAS,EAAC,uBAAuB,YAAE,KAAK,GAAO,CACrD,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CACR,iBACE,KAAK,EAAE,KAAK,EACZ,SAAS,EAAC,uBAAuB,EACjC,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAC1B,CACH,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,6BAA6B,EAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,YACpE,OAAO,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,8CAA8C,GAC/E,CACP,EACA,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CACf,KAAC,eAAe,IACd,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,IAAI,cAAc,CAAC,iBAAiB,CAAC,EACvD,cAAc,EAAE,kBAAkB,EAClC,aAAa,EAAE,iBAAiB,GAChC,CACH,CAAC,CAAC,CAAC,IAAI,IACA,CACX,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,OAAO,KAAC,SAAS,OAAK,KAAK,GAAI,CAAA;AACjC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ContainerInstance, ContainerOptions, VirtualFS } from "@agent-wasm/core";
|
|
2
|
+
import { type AlmostNodeFileContent, type AlmostNodeFiles, type AlmostNodeFilesystemOptions } from "./project.js";
|
|
3
|
+
export * from "./project.js";
|
|
4
|
+
export interface AlmostNodeWorkspaceOptions extends Omit<ContainerOptions, "cwd"> {
|
|
5
|
+
/** Project root used as the container cwd and Vite root. */
|
|
6
|
+
root?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface AlmostNodeWorkspace {
|
|
9
|
+
container: ContainerInstance;
|
|
10
|
+
root: string;
|
|
11
|
+
writeFile(path: string, content: AlmostNodeFileContent): void;
|
|
12
|
+
writeFiles(files: AlmostNodeFiles): void;
|
|
13
|
+
listFiles(): string[];
|
|
14
|
+
dispose(): void;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create a complete almost-node filesystem from a map or list of files.
|
|
18
|
+
* The runtime is loaded lazily so ordinary markdown rendering does not pull
|
|
19
|
+
* the WASM/browser runtime into the bundle until a live demo is used.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createAlmostNodeFilesystem(files: AlmostNodeFiles, options?: AlmostNodeFilesystemOptions): Promise<VirtualFS>;
|
|
22
|
+
/**
|
|
23
|
+
* Create a container and populate its entire virtual filesystem in one call.
|
|
24
|
+
* Use the returned container for `run`, `runFile`, npm installs, or Vite.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createAlmostNodeWorkspace(files: AlmostNodeFiles, options?: AlmostNodeWorkspaceOptions): Promise<AlmostNodeWorkspace>;
|
|
27
|
+
//# sourceMappingURL=filesystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/playground/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtF,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,2BAA2B,EACjC,MAAM,WAAW,CAAA;AAElB,cAAc,WAAW,CAAA;AAEzB,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC;IAC/E,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,iBAAiB,CAAA;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAA;IAC7D,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAA;IACxC,SAAS,IAAI,MAAM,EAAE,CAAA;IACrB,OAAO,IAAI,IAAI,CAAA;CAChB;AA6BD;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,SAAS,CAAC,CAMpB;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,mBAAmB,CAAC,CA2B9B"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { normalizeAlmostNodeFiles, normalizeAlmostNodePath, } from "./project.js";
|
|
2
|
+
export * from "./project.js";
|
|
3
|
+
async function loadAlmostNode() {
|
|
4
|
+
try {
|
|
5
|
+
return await import("@agent-wasm/core");
|
|
6
|
+
}
|
|
7
|
+
catch (error) {
|
|
8
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
9
|
+
throw new Error(`Docstream live previews require @agent-wasm/core (almost-node). Install it in the host app. ${message}`, { cause: error });
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function parentDirectory(path) {
|
|
13
|
+
const index = path.lastIndexOf("/");
|
|
14
|
+
return index <= 0 ? "/" : path.slice(0, index);
|
|
15
|
+
}
|
|
16
|
+
function writeFilesToVfs(vfs, files, root) {
|
|
17
|
+
for (const { path, content } of normalizeAlmostNodeFiles(files)) {
|
|
18
|
+
const absolutePath = normalizeAlmostNodePath(path, root);
|
|
19
|
+
vfs.mkdirSync(parentDirectory(absolutePath), { recursive: true });
|
|
20
|
+
vfs.writeFileSync(absolutePath, content);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Create a complete almost-node filesystem from a map or list of files.
|
|
25
|
+
* The runtime is loaded lazily so ordinary markdown rendering does not pull
|
|
26
|
+
* the WASM/browser runtime into the bundle until a live demo is used.
|
|
27
|
+
*/
|
|
28
|
+
export async function createAlmostNodeFilesystem(files, options = {}) {
|
|
29
|
+
const { VirtualFS } = await loadAlmostNode();
|
|
30
|
+
const root = normalizeAlmostNodePath(options.root ?? "/");
|
|
31
|
+
const vfs = new VirtualFS();
|
|
32
|
+
writeFilesToVfs(vfs, files, root);
|
|
33
|
+
return vfs;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Create a container and populate its entire virtual filesystem in one call.
|
|
37
|
+
* Use the returned container for `run`, `runFile`, npm installs, or Vite.
|
|
38
|
+
*/
|
|
39
|
+
export async function createAlmostNodeWorkspace(files, options = {}) {
|
|
40
|
+
const { root: requestedRoot, ...containerOptions } = options;
|
|
41
|
+
const root = normalizeAlmostNodePath(requestedRoot ?? "/");
|
|
42
|
+
const { createContainer } = await loadAlmostNode();
|
|
43
|
+
const container = createContainer({ ...containerOptions, cwd: root });
|
|
44
|
+
const writeFiles = (nextFiles) => writeFilesToVfs(container.vfs, nextFiles, root);
|
|
45
|
+
writeFiles(files);
|
|
46
|
+
return {
|
|
47
|
+
container,
|
|
48
|
+
root,
|
|
49
|
+
writeFile(path, content) {
|
|
50
|
+
writeFiles([{ path, content }]);
|
|
51
|
+
},
|
|
52
|
+
writeFiles,
|
|
53
|
+
listFiles() {
|
|
54
|
+
return container.vfs
|
|
55
|
+
.toSnapshot()
|
|
56
|
+
.files.filter((entry) => entry.type === "file")
|
|
57
|
+
.map((entry) => entry.path)
|
|
58
|
+
.sort();
|
|
59
|
+
},
|
|
60
|
+
dispose() {
|
|
61
|
+
container.dispose();
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=filesystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/playground/filesystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { PlaygroundStreamdown, PlaygroundStreamdown as GitbookStreamdown, almostNodeLiveRenderer } from "./PlaygroundStreamdown.js";
|
|
2
|
+
export type { PlaygroundStreamdownProps, PlaygroundStreamdownProps as GitbookStreamdownProps } from "./PlaygroundStreamdown.js";
|
|
3
|
+
export { ReactCodePreview, ReactDemo, useAlmostNodeServer } from "./ReactCodePreview.js";
|
|
4
|
+
export type { AlmostNodeServerOptions, AlmostNodeServerState, PreviewState, ReactCodePreviewProps, ReactDemoProps } from "./ReactCodePreview.js";
|
|
5
|
+
export { InlineDemoPreview, almostNodeDemoRuntime, createAlmostNodeDemoRuntime } from "./InlineDemoPreview.js";
|
|
6
|
+
export type { AlmostNodeDemoRuntimeOptions, InlineDemoPreviewProps } from "./InlineDemoPreview.js";
|
|
7
|
+
export { createAlmostNodeFilesystem, createAlmostNodeWorkspace, createInlineDemoProject, createReactDemoFiles, normalizeAlmostNodeFiles, normalizeAlmostNodePath, toAlmostNodeFileMap, } from "./filesystem.js";
|
|
8
|
+
export type { AlmostNodeFile, AlmostNodeFileContent, AlmostNodeFiles, AlmostNodeFilesystemOptions, AlmostNodeWorkspace, AlmostNodeWorkspaceOptions, InlineDemoProject, InlineDemoProjectOptions, ReactDemoFilesOptions, } from "./filesystem.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/playground/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,IAAI,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAChI,YAAY,EAAE,yBAAyB,EAAE,yBAAyB,IAAI,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAC5H,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACrF,YAAY,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAC7I,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AAC3G,YAAY,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC/F,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,cAAc,CAAA;AACrB,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,2BAA2B,EAC3B,mBAAmB,EACnB,0BAA0B,EAC1B,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/* `@brett_lamy/docstream/playground` — the only entry that touches almost-node
|
|
2
|
+
(`@agent-wasm/core`, an optional peer dependency). Install it to use anything here. */
|
|
3
|
+
export { PlaygroundStreamdown, PlaygroundStreamdown as GitbookStreamdown, almostNodeLiveRenderer } from "./PlaygroundStreamdown.js";
|
|
4
|
+
export { ReactCodePreview, ReactDemo, useAlmostNodeServer } from "./ReactCodePreview.js";
|
|
5
|
+
export { InlineDemoPreview, almostNodeDemoRuntime, createAlmostNodeDemoRuntime } from "./InlineDemoPreview.js";
|
|
6
|
+
export { createAlmostNodeFilesystem, createAlmostNodeWorkspace, createInlineDemoProject, createReactDemoFiles, normalizeAlmostNodeFiles, normalizeAlmostNodePath, toAlmostNodeFileMap, } from "./filesystem.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/playground/index.ts"],"names":[],"mappings":"AAAA;yFACyF;AACzF,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,IAAI,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAA;AAEhI,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAErF,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAA;AAE3G,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export type AlmostNodeFileContent = string | Uint8Array;
|
|
2
|
+
export interface AlmostNodeFile {
|
|
3
|
+
path: string;
|
|
4
|
+
content: AlmostNodeFileContent;
|
|
5
|
+
}
|
|
6
|
+
export type AlmostNodeFiles = Readonly<Record<string, AlmostNodeFileContent>> | readonly AlmostNodeFile[];
|
|
7
|
+
export interface AlmostNodeFilesystemOptions {
|
|
8
|
+
/** Prefix for relative file paths. Defaults to the virtual root. */
|
|
9
|
+
root?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function normalizeAlmostNodePath(path: string, root?: string): string;
|
|
12
|
+
export declare function normalizeAlmostNodeFiles(files: AlmostNodeFiles): AlmostNodeFile[];
|
|
13
|
+
export declare function toAlmostNodeFileMap(files: AlmostNodeFiles): Record<string, AlmostNodeFileContent>;
|
|
14
|
+
export interface ReactDemoFilesOptions {
|
|
15
|
+
entry?: string;
|
|
16
|
+
/** Extra npm dependencies for the generated package.json (ignored when the files bring one). */
|
|
17
|
+
dependencies?: Record<string, string>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Add the tiny Vite/React shell needed by a file map that only contains source
|
|
21
|
+
* files. Existing package.json and index.html files are always respected.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createReactDemoFiles(files: AlmostNodeFiles, options?: ReactDemoFilesOptions): Record<string, AlmostNodeFileContent>;
|
|
24
|
+
export interface InlineDemoProjectOptions {
|
|
25
|
+
/** Entry file among `files` (relative path). Defaults to the first file. */
|
|
26
|
+
entry?: string;
|
|
27
|
+
/** Extra npm dependencies (merged over a `package.json` among the files, if any). */
|
|
28
|
+
dependencies?: Record<string, string>;
|
|
29
|
+
}
|
|
30
|
+
export interface InlineDemoProject {
|
|
31
|
+
/** Complete almost-node project: the demo under `/src/demo/`, a wrapper entry, package.json, index.html. */
|
|
32
|
+
files: Record<string, AlmostNodeFileContent>;
|
|
33
|
+
/** The Vite entry to hand to `createReactDemoFiles` / `ReactDemo`. */
|
|
34
|
+
entry: string;
|
|
35
|
+
/** Whether the entry is wrapped (so `?variant=` reaches the component as its `variant` prop). */
|
|
36
|
+
wrapped: boolean;
|
|
37
|
+
}
|
|
38
|
+
/** Folder the inline demo's files are written to inside the almost-node project. */
|
|
39
|
+
export declare const INLINE_DEMO_DIR = "/src/demo";
|
|
40
|
+
/**
|
|
41
|
+
* Turn a `{% demo %}` block's inline files into a runnable almost-node project.
|
|
42
|
+
*
|
|
43
|
+
* The files go under `/src/demo/` (relative imports between them keep working). A tiny
|
|
44
|
+
* wrapper entry imports the entry file, takes its default export (or the first exported
|
|
45
|
+
* function), and renders it with `variant` read from the page's `?variant=` query — so
|
|
46
|
+
* switching variants just reloads the iframe, no new Vite server. An entry that mounts
|
|
47
|
+
* itself (`createRoot(…)`) is used directly instead, and receives no `variant`.
|
|
48
|
+
*
|
|
49
|
+
* A `package.json` among the files contributes its `dependencies`; `options.dependencies`
|
|
50
|
+
* are merged over them. Bare imports resolve through almost-node (installed packages, else
|
|
51
|
+
* esm.sh at the major version declared here), with `react`/`react-dom` provided.
|
|
52
|
+
*/
|
|
53
|
+
export declare function createInlineDemoProject(files: readonly {
|
|
54
|
+
path: string;
|
|
55
|
+
content: string;
|
|
56
|
+
}[], options?: InlineDemoProjectOptions): InlineDemoProject;
|
|
57
|
+
//# sourceMappingURL=project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/playground/project.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,UAAU,CAAA;AAEvD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,qBAAqB,CAAA;CAC/B;AAED,MAAM,MAAM,eAAe,GACvB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC,GAC/C,SAAS,cAAc,EAAE,CAAA;AAE7B,MAAM,WAAW,2BAA2B;IAC1C,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAM,GAAG,MAAM,CAUxE;AAmBD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,eAAe,GAAG,cAAc,EAAE,CAGjF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAEjG;AAQD,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gGAAgG;IAChG,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,eAAe,EACtB,OAAO,GAAE,qBAA0B,GAClC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAoCvC;AAED,MAAM,WAAW,wBAAwB;IACvC,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,qFAAqF;IACrF,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,iBAAiB;IAChC,4GAA4G;IAC5G,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;IAC5C,sEAAsE;IACtE,KAAK,EAAE,MAAM,CAAA;IACb,iGAAiG;IACjG,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,oFAAoF;AACpF,eAAO,MAAM,eAAe,cAAc,CAAA;AAO1C;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,EACnD,OAAO,GAAE,wBAA6B,GACrC,iBAAiB,CAsCnB"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/* Pure, runtime-free helpers for describing an almost-node project as a file map.
|
|
2
|
+
Nothing here imports `@agent-wasm/core`, so these are safe to use from the package
|
|
3
|
+
root; the runtime itself lives in ./filesystem (the `/playground` entry). */
|
|
4
|
+
export function normalizeAlmostNodePath(path, root = "/") {
|
|
5
|
+
const normalizedRoot = normalizeRoot(root);
|
|
6
|
+
const source = path.replaceAll("\\", "/");
|
|
7
|
+
const absolute = source.startsWith("/") ? source : `${normalizedRoot}/${source}`;
|
|
8
|
+
const result = normalizeAbsolutePath(absolute);
|
|
9
|
+
if (normalizedRoot !== "/" && result !== normalizedRoot && !result.startsWith(`${normalizedRoot}/`)) {
|
|
10
|
+
throw new Error(`File path escapes the almost-node root: ${path}`);
|
|
11
|
+
}
|
|
12
|
+
return result;
|
|
13
|
+
}
|
|
14
|
+
function normalizeAbsolutePath(path) {
|
|
15
|
+
const parts = [];
|
|
16
|
+
for (const part of path.split("/")) {
|
|
17
|
+
if (!part || part === ".")
|
|
18
|
+
continue;
|
|
19
|
+
if (part === "..") {
|
|
20
|
+
if (parts.length > 0)
|
|
21
|
+
parts.pop();
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
if (part.includes("\0"))
|
|
25
|
+
throw new Error("almost-node file paths cannot contain null bytes");
|
|
26
|
+
parts.push(part);
|
|
27
|
+
}
|
|
28
|
+
const result = `/${parts.join("/")}`;
|
|
29
|
+
return result === "" ? "/" : result;
|
|
30
|
+
}
|
|
31
|
+
export function normalizeAlmostNodeFiles(files) {
|
|
32
|
+
if (Array.isArray(files))
|
|
33
|
+
return files.map((file) => ({ ...file }));
|
|
34
|
+
return Object.entries(files).map(([path, content]) => ({ path, content }));
|
|
35
|
+
}
|
|
36
|
+
export function toAlmostNodeFileMap(files) {
|
|
37
|
+
return Object.fromEntries(normalizeAlmostNodeFiles(files).map(({ path, content }) => [path, content]));
|
|
38
|
+
}
|
|
39
|
+
function normalizeRoot(root) {
|
|
40
|
+
const normalized = normalizeAbsolutePath(root.replaceAll("\\", "/"));
|
|
41
|
+
return normalized === "/" ? normalized : normalized.replace(/\/$/, "");
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Add the tiny Vite/React shell needed by a file map that only contains source
|
|
45
|
+
* files. Existing package.json and index.html files are always respected.
|
|
46
|
+
*/
|
|
47
|
+
export function createReactDemoFiles(files, options = {}) {
|
|
48
|
+
const map = toAlmostNodeFileMap(files);
|
|
49
|
+
const entry = normalizeAlmostNodePath(options.entry ?? "/src/main.jsx");
|
|
50
|
+
const has = (candidate) => Object.keys(map).some((path) => normalizeAlmostNodePath(path) === candidate);
|
|
51
|
+
if (!has("/package.json")) {
|
|
52
|
+
map["/package.json"] = JSON.stringify({
|
|
53
|
+
name: "docstream-react-demo",
|
|
54
|
+
private: true,
|
|
55
|
+
type: "module",
|
|
56
|
+
dependencies: { react: "^19.0.0", "react-dom": "^19.0.0", ...options.dependencies },
|
|
57
|
+
}, null, 2);
|
|
58
|
+
}
|
|
59
|
+
if (!has("/index.html")) {
|
|
60
|
+
const entryUrl = `.${entry}`;
|
|
61
|
+
map["/index.html"] = `<!doctype html>
|
|
62
|
+
<html lang="en">
|
|
63
|
+
<head>
|
|
64
|
+
<meta charset="UTF-8" />
|
|
65
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
66
|
+
<title>Docstream React demo</title>
|
|
67
|
+
</head>
|
|
68
|
+
<body>
|
|
69
|
+
<div id="root"></div>
|
|
70
|
+
<script type="module" src="${entryUrl}"></script>
|
|
71
|
+
</body>
|
|
72
|
+
</html>
|
|
73
|
+
`;
|
|
74
|
+
}
|
|
75
|
+
return map;
|
|
76
|
+
}
|
|
77
|
+
/** Folder the inline demo's files are written to inside the almost-node project. */
|
|
78
|
+
export const INLINE_DEMO_DIR = "/src/demo";
|
|
79
|
+
const WRAPPER_ENTRY = "/src/__docstream_demo_entry.js";
|
|
80
|
+
function selfMounting(source) {
|
|
81
|
+
return /\bcreateRoot\s*\(|\bReactDOM\.render\s*\(|\bhydrateRoot\s*\(/.test(source);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Turn a `{% demo %}` block's inline files into a runnable almost-node project.
|
|
85
|
+
*
|
|
86
|
+
* The files go under `/src/demo/` (relative imports between them keep working). A tiny
|
|
87
|
+
* wrapper entry imports the entry file, takes its default export (or the first exported
|
|
88
|
+
* function), and renders it with `variant` read from the page's `?variant=` query — so
|
|
89
|
+
* switching variants just reloads the iframe, no new Vite server. An entry that mounts
|
|
90
|
+
* itself (`createRoot(…)`) is used directly instead, and receives no `variant`.
|
|
91
|
+
*
|
|
92
|
+
* A `package.json` among the files contributes its `dependencies`; `options.dependencies`
|
|
93
|
+
* are merged over them. Bare imports resolve through almost-node (installed packages, else
|
|
94
|
+
* esm.sh at the major version declared here), with `react`/`react-dom` provided.
|
|
95
|
+
*/
|
|
96
|
+
export function createInlineDemoProject(files, options = {}) {
|
|
97
|
+
const map = {};
|
|
98
|
+
let packageDeps = {};
|
|
99
|
+
for (const file of files) {
|
|
100
|
+
const relative = file.path.replace(/^\.?\/+/, "");
|
|
101
|
+
if (relative === "package.json") {
|
|
102
|
+
try {
|
|
103
|
+
const pkg = JSON.parse(file.content);
|
|
104
|
+
packageDeps = { ...pkg.devDependencies, ...pkg.dependencies };
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// Not JSON: keep it as a plain file.
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
map[normalizeAlmostNodePath(relative, INLINE_DEMO_DIR)] = file.content;
|
|
111
|
+
}
|
|
112
|
+
const entryFile = files.find((f) => f.path === options.entry) ?? files[0];
|
|
113
|
+
if (!entryFile)
|
|
114
|
+
throw new Error("An inline demo needs at least one file");
|
|
115
|
+
const entryPath = normalizeAlmostNodePath(entryFile.path.replace(/^\.?\/+/, ""), INLINE_DEMO_DIR);
|
|
116
|
+
const dependencies = { ...packageDeps, ...options.dependencies };
|
|
117
|
+
const wrapped = !selfMounting(entryFile.content);
|
|
118
|
+
if (wrapped) {
|
|
119
|
+
const specifier = `.${entryPath.slice("/src".length)}`;
|
|
120
|
+
map[WRAPPER_ENTRY] = `import { createElement } from "react"
|
|
121
|
+
import { createRoot } from "react-dom/client"
|
|
122
|
+
import * as demo from ${JSON.stringify(specifier)}
|
|
123
|
+
|
|
124
|
+
const Component = demo.default ?? Object.values(demo).find((value) => typeof value === "function")
|
|
125
|
+
const variant = new URLSearchParams(location.search).get("variant")
|
|
126
|
+
const props = variant === null ? {} : { variant }
|
|
127
|
+
createRoot(document.getElementById("root")).render(
|
|
128
|
+
Component
|
|
129
|
+
? createElement(Component, props)
|
|
130
|
+
: createElement("pre", null, ${JSON.stringify(`${entryFile.path} has no default export to render.`)}),
|
|
131
|
+
)
|
|
132
|
+
`;
|
|
133
|
+
}
|
|
134
|
+
const entry = wrapped ? WRAPPER_ENTRY : entryPath;
|
|
135
|
+
return { files: createReactDemoFiles(map, { entry, dependencies }), entry, wrapped };
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/playground/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { eventWithTime } from 'rrweb';
|
|
2
|
+
|
|
3
|
+
export default function NativeReplay({ events, autoplay, loop, speeds, }: {
|
|
4
|
+
events: eventWithTime[];
|
|
5
|
+
autoplay?: boolean;
|
|
6
|
+
loop?: boolean;
|
|
7
|
+
speeds?: number[];
|
|
8
|
+
}): import("react").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=NativeReplay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeReplay.d.ts","sourceRoot":"","sources":["../../src/replay/NativeReplay.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,sBAAsB,CAAC;AAK9B,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EACnC,MAAM,EACN,QAAgB,EAChB,IAAY,EACZ,MAAuB,GACxB,EAAE;IACD,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,+BAqNA"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/* The rrweb player. Loaded on demand by ReplayPreview, so pages that only embed Loop QA
|
|
3
|
+
iframes (the markdown `{% embed %}` case) never download rrweb or its stylesheet. */
|
|
4
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
5
|
+
import { EventType, Replayer } from 'rrweb';
|
|
6
|
+
import { sanitizeReplayEvent } from './sanitize.js';
|
|
7
|
+
import 'rrweb/dist/style.css';
|
|
8
|
+
const DEFAULT_SPEEDS = [0.5, 1, 2, 4, 8];
|
|
9
|
+
const SKIP_IDLE_THRESHOLD_MS = 5_000;
|
|
10
|
+
export default function NativeReplay({ events, autoplay = false, loop = false, speeds = DEFAULT_SPEEDS, }) {
|
|
11
|
+
const stageRef = useRef(null);
|
|
12
|
+
const playerRef = useRef(null);
|
|
13
|
+
const replayerRef = useRef(null);
|
|
14
|
+
const fedCountRef = useRef(0);
|
|
15
|
+
const [playing, setPlaying] = useState(false);
|
|
16
|
+
const [speed, setSpeed] = useState(1);
|
|
17
|
+
const [dims, setDims] = useState(null);
|
|
18
|
+
const [scale, setScale] = useState(1);
|
|
19
|
+
const [currentTime, setCurrentTime] = useState(0);
|
|
20
|
+
const [totalTime, setTotalTime] = useState(0);
|
|
21
|
+
const [scrubbing, setScrubbing] = useState(null);
|
|
22
|
+
const speedRef = useRef(speed);
|
|
23
|
+
const loopRef = useRef(loop);
|
|
24
|
+
const autoplayRef = useRef(autoplay);
|
|
25
|
+
const prepared = useMemo(() => events.map((event) => sanitizeReplayEvent(event)).sort((a, b) => a.timestamp - b.timestamp), [events]);
|
|
26
|
+
const hasSnapshot = prepared.some((event) => event.type === EventType.FullSnapshot);
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
if (replayerRef.current && prepared.length < fedCountRef.current) {
|
|
29
|
+
try {
|
|
30
|
+
replayerRef.current.destroy();
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
// Ignore stale player teardown.
|
|
34
|
+
}
|
|
35
|
+
replayerRef.current = null;
|
|
36
|
+
fedCountRef.current = 0;
|
|
37
|
+
}
|
|
38
|
+
if (!hasSnapshot || !playerRef.current)
|
|
39
|
+
return;
|
|
40
|
+
if (!replayerRef.current) {
|
|
41
|
+
const replayer = new Replayer(prepared, {
|
|
42
|
+
root: playerRef.current,
|
|
43
|
+
liveMode: false,
|
|
44
|
+
speed: speedRef.current,
|
|
45
|
+
skipInactive: true,
|
|
46
|
+
inactivePeriodThreshold: SKIP_IDLE_THRESHOLD_MS,
|
|
47
|
+
mouseTail: false,
|
|
48
|
+
showWarning: false,
|
|
49
|
+
});
|
|
50
|
+
replayer.on('resize', (payload) => {
|
|
51
|
+
const size = payload;
|
|
52
|
+
if (size.width && size.height)
|
|
53
|
+
setDims({ w: size.width, h: size.height });
|
|
54
|
+
});
|
|
55
|
+
replayer.on('finish', () => {
|
|
56
|
+
if (loopRef.current) {
|
|
57
|
+
replayer.play(0);
|
|
58
|
+
setPlaying(true);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
setPlaying(false);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
replayer.pause(0);
|
|
65
|
+
replayerRef.current = replayer;
|
|
66
|
+
fedCountRef.current = prepared.length;
|
|
67
|
+
if (autoplayRef.current) {
|
|
68
|
+
replayer.play(0);
|
|
69
|
+
setPlaying(true);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else if (prepared.length > fedCountRef.current) {
|
|
73
|
+
for (let i = fedCountRef.current; i < prepared.length; i++) {
|
|
74
|
+
replayerRef.current.addEvent(prepared[i]);
|
|
75
|
+
}
|
|
76
|
+
fedCountRef.current = prepared.length;
|
|
77
|
+
}
|
|
78
|
+
}, [hasSnapshot, prepared]);
|
|
79
|
+
useEffect(() => () => {
|
|
80
|
+
try {
|
|
81
|
+
replayerRef.current?.destroy();
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
// Ignore unmount teardown errors from rrweb.
|
|
85
|
+
}
|
|
86
|
+
replayerRef.current = null;
|
|
87
|
+
fedCountRef.current = 0;
|
|
88
|
+
}, []);
|
|
89
|
+
useEffect(() => {
|
|
90
|
+
speedRef.current = speed;
|
|
91
|
+
replayerRef.current?.setConfig({ speed });
|
|
92
|
+
}, [speed]);
|
|
93
|
+
useEffect(() => {
|
|
94
|
+
loopRef.current = loop;
|
|
95
|
+
}, [loop]);
|
|
96
|
+
useEffect(() => {
|
|
97
|
+
autoplayRef.current = autoplay;
|
|
98
|
+
}, [autoplay]);
|
|
99
|
+
const recalcScale = useCallback(() => {
|
|
100
|
+
if (!dims || !stageRef.current || dims.w <= 0)
|
|
101
|
+
return;
|
|
102
|
+
setScale(Math.min(1, stageRef.current.clientWidth / dims.w));
|
|
103
|
+
}, [dims]);
|
|
104
|
+
useEffect(() => {
|
|
105
|
+
recalcScale();
|
|
106
|
+
window.addEventListener('resize', recalcScale);
|
|
107
|
+
return () => window.removeEventListener('resize', recalcScale);
|
|
108
|
+
}, [recalcScale]);
|
|
109
|
+
useEffect(() => {
|
|
110
|
+
if (!hasSnapshot)
|
|
111
|
+
return;
|
|
112
|
+
const interval = window.setInterval(() => {
|
|
113
|
+
const replayer = replayerRef.current;
|
|
114
|
+
if (!replayer)
|
|
115
|
+
return;
|
|
116
|
+
try {
|
|
117
|
+
const total = replayer.getMetaData().totalTime;
|
|
118
|
+
const current = Math.max(0, Math.min(replayer.getCurrentTime(), total));
|
|
119
|
+
setTotalTime(total);
|
|
120
|
+
if (scrubbing === null)
|
|
121
|
+
setCurrentTime(current);
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
// rrweb can briefly be unready while a full snapshot is applied.
|
|
125
|
+
}
|
|
126
|
+
}, 200);
|
|
127
|
+
return () => window.clearInterval(interval);
|
|
128
|
+
}, [hasSnapshot, scrubbing]);
|
|
129
|
+
const seek = useCallback((value) => {
|
|
130
|
+
const replayer = replayerRef.current;
|
|
131
|
+
if (!replayer)
|
|
132
|
+
return;
|
|
133
|
+
const next = Math.max(0, Math.min(value, totalTime));
|
|
134
|
+
if (playing)
|
|
135
|
+
replayer.play(next);
|
|
136
|
+
else
|
|
137
|
+
replayer.pause(next);
|
|
138
|
+
setCurrentTime(next);
|
|
139
|
+
}, [playing, totalTime]);
|
|
140
|
+
const toggle = () => {
|
|
141
|
+
const replayer = replayerRef.current;
|
|
142
|
+
if (!replayer)
|
|
143
|
+
return;
|
|
144
|
+
if (playing) {
|
|
145
|
+
replayer.pause();
|
|
146
|
+
setPlaying(false);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
let offset = currentTime;
|
|
150
|
+
try {
|
|
151
|
+
if (offset >= replayer.getMetaData().totalTime - 1)
|
|
152
|
+
offset = 0;
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
offset = 0;
|
|
156
|
+
}
|
|
157
|
+
replayer.play(offset);
|
|
158
|
+
setPlaying(true);
|
|
159
|
+
};
|
|
160
|
+
const restart = () => {
|
|
161
|
+
replayerRef.current?.play(0);
|
|
162
|
+
setCurrentTime(0);
|
|
163
|
+
setPlaying(true);
|
|
164
|
+
};
|
|
165
|
+
if (!hasSnapshot) {
|
|
166
|
+
return (_jsx("div", { className: "replay-preview__empty", children: events.length ? `Captured ${events.length} events, but no full DOM snapshot is available.` : 'Replay data is not available yet.' }));
|
|
167
|
+
}
|
|
168
|
+
return (_jsxs("div", { className: "replay-preview__native", children: [_jsx("div", { ref: stageRef, className: "replay-preview__stage", style: dims ? { height: Math.max(1, Math.round(dims.h * scale)) } : undefined, children: _jsx("div", { className: "replay-preview__scaler", style: { transform: `scale(${scale})`, transformOrigin: 'top left' }, children: _jsx("div", { ref: playerRef, className: "replay-preview__player", "aria-hidden": "true" }) }) }), _jsxs("div", { className: "replay-preview__controls", children: [_jsx("button", { type: "button", onClick: toggle, "aria-label": playing ? 'Pause replay' : 'Play replay', children: playing ? 'Pause' : 'Play' }), _jsx("button", { type: "button", onClick: restart, "aria-label": "Restart replay", children: "Restart" }), _jsx("input", { type: "range", min: 0, max: Math.max(totalTime, 1), step: 1, value: scrubbing ?? currentTime, onChange: (event) => setScrubbing(Number(event.target.value)), onPointerUp: (event) => {
|
|
169
|
+
seek(Number(event.currentTarget.value));
|
|
170
|
+
setScrubbing(null);
|
|
171
|
+
}, "aria-label": "Replay position" }), _jsx("select", { value: speed, onChange: (event) => setSpeed(Number(event.target.value)), "aria-label": "Replay speed", children: speeds.map((option) => (_jsxs("option", { value: option, children: [option, "\u00D7"] }, option))) })] })] }));
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=NativeReplay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NativeReplay.js","sourceRoot":"","sources":["../../src/replay/NativeReplay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { eventWithTime } from 'rrweb';
|
|
2
|
+
export interface ReplayPageSource {
|
|
3
|
+
kind: 'url';
|
|
4
|
+
url: string;
|
|
5
|
+
title?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface ReplayEventsSource {
|
|
8
|
+
kind: 'events';
|
|
9
|
+
events: eventWithTime[];
|
|
10
|
+
}
|
|
11
|
+
export interface ReplayEventsUrlSource {
|
|
12
|
+
kind: 'events-url';
|
|
13
|
+
url: string;
|
|
14
|
+
fetchInit?: RequestInit;
|
|
15
|
+
}
|
|
16
|
+
export type ReplaySource = string | eventWithTime[] | ReplayPageSource | ReplayEventsSource | ReplayEventsUrlSource;
|
|
17
|
+
export interface ReplayPreviewProps {
|
|
18
|
+
/** A public Loop QA URL, a public event endpoint, or an in-memory rrweb event list. */
|
|
19
|
+
source: ReplaySource;
|
|
20
|
+
/** Avoid mounting the rrweb player until the editor block is visible. */
|
|
21
|
+
active?: boolean;
|
|
22
|
+
/** Public-page embeds default to lazy loading; native rrweb playback defaults to paused. */
|
|
23
|
+
autoplay?: boolean;
|
|
24
|
+
loop?: boolean;
|
|
25
|
+
className?: string;
|
|
26
|
+
title?: string;
|
|
27
|
+
/** Playback speed options mirror the Loop QA player. */
|
|
28
|
+
speeds?: number[];
|
|
29
|
+
}
|
|
30
|
+
export declare function ReplayPreview({ source, active, autoplay, loop, className, title, speeds, }: ReplayPreviewProps): import("react").JSX.Element | null;
|
|
31
|
+
/** Semantic alias for markdown/document renderers. */
|
|
32
|
+
export declare const ReplayEmbed: typeof ReplayPreview;
|
|
33
|
+
//# sourceMappingURL=ReplayPreview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReplayPreview.d.ts","sourceRoot":"","sources":["../../src/replay/ReplayPreview.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,aAAa,EAAE,GACf,gBAAgB,GAChB,kBAAkB,GAClB,qBAAqB,CAAC;AAE1B,MAAM,WAAW,kBAAkB;IACjC,uFAAuF;IACvF,MAAM,EAAE,YAAY,CAAC;IACrB,yEAAyE;IACzE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4FAA4F;IAC5F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAiGD,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,MAAa,EACb,QAAgB,EAChB,IAAY,EACZ,SAAS,EACT,KAAK,EACL,MAAuB,GACxB,EAAE,kBAAkB,sCA8BpB;AAED,sDAAsD;AACtD,eAAO,MAAM,WAAW,sBAAgB,CAAC"}
|