fundus 0.0.2 → 0.0.3
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 +58 -0
- package/build/client/_app/immutable/assets/0.DLhIsYA_.css.br +0 -0
- package/build/client/_app/immutable/assets/0.DLhIsYA_.css.gz +0 -0
- package/build/client/_app/immutable/assets/2.wavcNhPC.css +1 -0
- package/build/client/_app/immutable/assets/2.wavcNhPC.css.br +0 -0
- package/build/client/_app/immutable/assets/2.wavcNhPC.css.gz +0 -0
- package/build/client/_app/immutable/assets/3.Cjh_fXPY.css +1 -0
- package/build/client/_app/immutable/assets/3.Cjh_fXPY.css.br +0 -0
- package/build/client/_app/immutable/assets/3.Cjh_fXPY.css.gz +0 -0
- package/build/client/_app/immutable/assets/4.p004hmEN.css +1 -0
- package/build/client/_app/immutable/assets/4.p004hmEN.css.br +0 -0
- package/build/client/_app/immutable/assets/4.p004hmEN.css.gz +0 -0
- package/build/client/_app/immutable/assets/ConfirmDialog.BdKlitwi.css +1 -0
- package/build/client/_app/immutable/assets/ConfirmDialog.BdKlitwi.css.br +0 -0
- package/build/client/_app/immutable/assets/ConfirmDialog.BdKlitwi.css.gz +0 -0
- package/build/client/_app/immutable/assets/LibraryContextMenu.zyZtpKzC.css +1 -0
- package/build/client/_app/immutable/assets/LibraryContextMenu.zyZtpKzC.css.br +0 -0
- package/build/client/_app/immutable/assets/LibraryContextMenu.zyZtpKzC.css.gz +0 -0
- package/build/client/_app/immutable/chunks/BiIto6ft.js +1 -0
- package/build/client/_app/immutable/chunks/BiIto6ft.js.br +0 -0
- package/build/client/_app/immutable/chunks/BiIto6ft.js.gz +0 -0
- package/build/client/_app/immutable/chunks/Bjy-W4x2.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bjy-W4x2.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CNRz3sSw.js.br +0 -0
- package/build/client/_app/immutable/chunks/CNRz3sSw.js.gz +0 -0
- package/build/client/_app/immutable/chunks/CO4RBJfa.js.br +0 -0
- package/build/client/_app/immutable/chunks/CO4RBJfa.js.gz +0 -0
- package/{dist/editor/_app/immutable/chunks/DjvOiDmq.js → build/client/_app/immutable/chunks/CvY6YsFE.js} +1 -1
- package/build/client/_app/immutable/chunks/CvY6YsFE.js.br +0 -0
- package/build/client/_app/immutable/chunks/CvY6YsFE.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DL0_39Ys.js +5 -0
- package/build/client/_app/immutable/chunks/DL0_39Ys.js.br +0 -0
- package/build/client/_app/immutable/chunks/DL0_39Ys.js.gz +0 -0
- package/{dist/editor/_app/immutable/chunks/BfPE5wdt.js → build/client/_app/immutable/chunks/DQ8SXFaX.js} +1 -1
- package/build/client/_app/immutable/chunks/DQ8SXFaX.js.br +0 -0
- package/build/client/_app/immutable/chunks/DQ8SXFaX.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DjdrdRzT.js.br +0 -0
- package/build/client/_app/immutable/chunks/DjdrdRzT.js.gz +0 -0
- package/build/client/_app/immutable/chunks/xihTtKlq.js.br +1 -0
- package/build/client/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
- package/{dist/editor/_app/immutable/entry/app.BkqbfI8n.js → build/client/_app/immutable/entry/app.ubN0v9bN.js} +2 -2
- package/build/client/_app/immutable/entry/app.ubN0v9bN.js.br +0 -0
- package/build/client/_app/immutable/entry/app.ubN0v9bN.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BW8dBDh6.js +1 -0
- package/build/client/_app/immutable/entry/start.BW8dBDh6.js.br +0 -0
- package/build/client/_app/immutable/entry/start.BW8dBDh6.js.gz +0 -0
- package/{dist/editor/_app/immutable/nodes/0.xdMI5GEU.js → build/client/_app/immutable/nodes/0.Dr5ijCIl.js} +1 -1
- package/build/client/_app/immutable/nodes/0.Dr5ijCIl.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.Dr5ijCIl.js.gz +0 -0
- package/{dist/editor/_app/immutable/nodes/1.D9p2tfoJ.js → build/client/_app/immutable/nodes/1.DiIGIRAb.js} +1 -1
- package/build/client/_app/immutable/nodes/1.DiIGIRAb.js.br +3 -0
- package/build/client/_app/immutable/nodes/1.DiIGIRAb.js.gz +0 -0
- package/{dist/editor/_app/immutable/nodes/2.BrA0Hyzu.js → build/client/_app/immutable/nodes/2.B8KYmQcV.js} +3 -3
- package/build/client/_app/immutable/nodes/2.B8KYmQcV.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.B8KYmQcV.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.B1jc7arT.js +104 -0
- package/build/client/_app/immutable/nodes/3.B1jc7arT.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.B1jc7arT.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.BPK9n1mH.js +2 -0
- package/build/client/_app/immutable/nodes/4.BPK9n1mH.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.BPK9n1mH.js.gz +0 -0
- package/build/client/_app/version.json +1 -0
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/env.js +100 -0
- package/build/env.js.map +1 -0
- package/build/handler.js +22 -0
- package/build/handler.js.map +1 -0
- package/build/index.js +145 -0
- package/build/index.js.map +1 -0
- package/build/server/chunks/chunks/context.js-Bw4WWLhG.js +443 -0
- package/build/server/chunks/chunks/context.js-Bw4WWLhG.js.map +1 -0
- package/build/server/chunks/chunks/core.js-DDntpb72.js +409 -0
- package/build/server/chunks/chunks/core.js-DDntpb72.js.map +1 -0
- package/build/server/chunks/chunks/env.js-l0sNRNKZ.js +2 -0
- package/build/server/chunks/chunks/env.js-l0sNRNKZ.js.map +1 -0
- package/build/server/chunks/chunks/exports.js-CLTzaOxn.js +152 -0
- package/build/server/chunks/chunks/exports.js-CLTzaOxn.js.map +1 -0
- package/build/server/chunks/chunks/folder-path.js-ytx9ucgg.js +64 -0
- package/build/server/chunks/chunks/folder-path.js-ytx9ucgg.js.map +1 -0
- package/build/server/chunks/chunks/http.js-Dxoa-jtP.js +100 -0
- package/build/server/chunks/chunks/http.js-Dxoa-jtP.js.map +1 -0
- package/build/server/chunks/chunks/internal.js-BDBSzJId.js +5753 -0
- package/build/server/chunks/chunks/internal.js-BDBSzJId.js.map +1 -0
- package/build/server/chunks/chunks/internal2.js-BlXt2rfE.js +22 -0
- package/build/server/chunks/chunks/internal2.js-BlXt2rfE.js.map +1 -0
- package/{dist/operations-DYM-5KVl.js → build/server/chunks/chunks/library-store.js-BP8cL-qD.js} +344 -444
- package/build/server/chunks/chunks/library-store.js-BP8cL-qD.js.map +1 -0
- package/build/server/chunks/chunks/manifest-appearance.js-DTk355LQ.js +146 -0
- package/build/server/chunks/chunks/manifest-appearance.js-DTk355LQ.js.map +1 -0
- package/build/server/chunks/chunks/routing.js-y-tryuip.js +213 -0
- package/build/server/chunks/chunks/routing.js-y-tryuip.js.map +1 -0
- package/build/server/chunks/chunks/shared.js-BWXgl1Xf.js +255 -0
- package/build/server/chunks/chunks/shared.js-BWXgl1Xf.js.map +1 -0
- package/build/server/chunks/chunks/utils.js-9oI5Oz0w.js +1048 -0
- package/build/server/chunks/chunks/utils.js-9oI5Oz0w.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/_...path_/_server.ts.js-WknZVW_S.js +27 -0
- package/build/server/chunks/entries/endpoints/api/_...path_/_server.ts.js-WknZVW_S.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/assets/_id_/_server.ts.js-BrZ__-HZ.js +24 -0
- package/build/server/chunks/entries/endpoints/api/assets/_id_/_server.ts.js-BrZ__-HZ.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/assets/_server.ts.js-PqADGPXc.js +45 -0
- package/build/server/chunks/entries/endpoints/api/assets/_server.ts.js-PqADGPXc.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/assets/delete/_server.ts.js-OqoE5PN-.js +31 -0
- package/build/server/chunks/entries/endpoints/api/assets/delete/_server.ts.js-OqoE5PN-.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/assets/move/_server.ts.js-CJ08e1ho.js +31 -0
- package/build/server/chunks/entries/endpoints/api/assets/move/_server.ts.js-CJ08e1ho.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/folders/_path_/_server.ts.js-DdF3eK2I.js +38 -0
- package/build/server/chunks/entries/endpoints/api/folders/_path_/_server.ts.js-DdF3eK2I.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/folders/_server.ts.js-Cxt6jsJ5.js +31 -0
- package/build/server/chunks/entries/endpoints/api/folders/_server.ts.js-Cxt6jsJ5.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/manifests/_name_/_server.ts.js-BWVM2Ntl.js +24 -0
- package/build/server/chunks/entries/endpoints/api/manifests/_name_/_server.ts.js-BWVM2Ntl.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/manifests/_server.ts.js-Z2bM-qHM.js +31 -0
- package/build/server/chunks/entries/endpoints/api/manifests/_server.ts.js-Z2bM-qHM.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/state/_server.ts.js-BX9H2Z34.js +24 -0
- package/build/server/chunks/entries/endpoints/api/state/_server.ts.js-BX9H2Z34.js.map +1 -0
- package/build/server/chunks/entries/endpoints/files/_...path_/_server.ts.js-BWHDZ8mz.js +27 -0
- package/build/server/chunks/entries/endpoints/files/_...path_/_server.ts.js-BWHDZ8mz.js.map +1 -0
- package/build/server/chunks/entries/endpoints/files/proxy/_...path_/_server.ts.js-CR_7mndO.js +24 -0
- package/build/server/chunks/entries/endpoints/files/proxy/_...path_/_server.ts.js-CR_7mndO.js.map +1 -0
- package/build/server/chunks/entries/endpoints/files/raw/_...path_/_server.ts.js-Cw1PDBvb.js +24 -0
- package/build/server/chunks/entries/endpoints/files/raw/_...path_/_server.ts.js-Cw1PDBvb.js.map +1 -0
- package/build/server/chunks/entries/hooks.server.js-BHoE0yBi.js +23 -0
- package/build/server/chunks/entries/hooks.server.js-BHoE0yBi.js.map +1 -0
- package/build/server/chunks/handler-10cx4zHn.js +1475 -0
- package/build/server/chunks/handler-10cx4zHn.js.map +1 -0
- package/build/server/chunks/index.js-DvPfiC00.js +3789 -0
- package/build/server/chunks/index.js-DvPfiC00.js.map +1 -0
- package/build/server/chunks/manifest.js-DoPjUnzD.js +149 -0
- package/build/server/chunks/manifest.js-DoPjUnzD.js.map +1 -0
- package/build/server/chunks/nodes/0.js-Di3qgAtW.js +11 -0
- package/build/server/chunks/nodes/0.js-Di3qgAtW.js.map +1 -0
- package/build/server/chunks/nodes/1.js-BlWSFIA8.js +7 -0
- package/build/server/chunks/nodes/1.js-BlWSFIA8.js.map +1 -0
- package/build/server/chunks/nodes/2.js-CO9nSPUN.js +7 -0
- package/build/server/chunks/nodes/2.js-CO9nSPUN.js.map +1 -0
- package/build/server/chunks/nodes/3.js-C2D6xpEO.js +7 -0
- package/build/server/chunks/nodes/3.js-C2D6xpEO.js.map +1 -0
- package/build/server/chunks/nodes/4.js-B3IuagJW.js +7 -0
- package/build/server/chunks/nodes/4.js-B3IuagJW.js.map +1 -0
- package/build/shims.js +33 -0
- package/build/shims.js.map +1 -0
- package/dist/cli.d.ts +2 -1
- package/dist/cli.js +109 -1332
- package/dist/config.d.ts +3 -2
- package/dist/config.js +2 -2
- package/dist/core/api-types.d.ts +141 -0
- package/dist/core/api-types.js +1 -0
- package/dist/core/asset-id.d.ts +28 -0
- package/dist/core/asset-id.js +59 -0
- package/dist/core/asset-reference.d.ts +23 -0
- package/dist/core/asset-reference.js +15 -0
- package/dist/core/canonicalize.d.ts +9 -0
- package/dist/core/canonicalize.js +36 -0
- package/dist/core/chroma-key.d.ts +30 -0
- package/dist/core/chroma-key.js +55 -0
- package/dist/core/config.d.ts +35 -0
- package/dist/core/config.js +4 -0
- package/dist/core/folder-path.d.ts +19 -0
- package/dist/core/folder-path.js +86 -0
- package/dist/core/index.d.ts +33 -499
- package/dist/core/index.js +17 -962
- package/dist/core/ingest.d.ts +18 -0
- package/dist/core/ingest.js +58 -0
- package/dist/core/library.d.ts +54 -0
- package/dist/core/library.js +138 -0
- package/dist/core/manifest-appearance.d.ts +35 -0
- package/dist/core/manifest-appearance.js +123 -0
- package/dist/core/manifest-entry.d.ts +104 -0
- package/dist/core/manifest-entry.js +1 -0
- package/dist/core/manifest-membership.d.ts +56 -0
- package/dist/core/manifest-membership.js +54 -0
- package/dist/core/plugins/audio.d.ts +26 -0
- package/dist/core/plugins/audio.js +44 -0
- package/dist/core/plugins/chroma-key-video.d.ts +29 -0
- package/dist/core/plugins/chroma-key-video.js +69 -0
- package/dist/core/plugins/contract.d.ts +35 -0
- package/dist/core/plugins/contract.js +1 -0
- package/dist/core/plugins/image.d.ts +30 -0
- package/dist/core/plugins/image.js +45 -0
- package/dist/core/plugins/slice.d.ts +22 -0
- package/dist/core/plugins/slice.js +60 -0
- package/dist/core/plugins/video.d.ts +45 -0
- package/dist/core/plugins/video.js +77 -0
- package/dist/core/reference-graph.d.ts +41 -0
- package/dist/core/reference-graph.js +138 -0
- package/dist/core/slice-data.d.ts +61 -0
- package/dist/core/slice-data.js +49 -0
- package/dist/runtime/chroma-key-gl.d.ts +40 -22
- package/dist/runtime/chroma-key-gl.js +189 -183
- package/dist/runtime/components/ChromaKeyVideo.svelte +3 -3
- package/dist/runtime/components/ChromaKeyVideo.svelte.d.ts +21 -0
- package/dist/runtime/components/Image.svelte +1 -1
- package/dist/runtime/components/Image.svelte.d.ts +9 -0
- package/dist/runtime/components/Slice.svelte +1 -1
- package/dist/runtime/components/Slice.svelte.d.ts +19 -0
- package/dist/runtime/components/SliceCanvas.svelte +3 -3
- package/dist/runtime/components/SliceCanvas.svelte.d.ts +10 -0
- package/dist/runtime/components/SliceDom.svelte +3 -3
- package/dist/runtime/components/SliceDom.svelte.d.ts +10 -0
- package/dist/runtime/components/Video.svelte +2 -2
- package/dist/runtime/components/Video.svelte.d.ts +18 -0
- package/dist/runtime/geometry.d.ts +55 -35
- package/dist/runtime/geometry.js +186 -191
- package/dist/runtime/index.d.ts +9 -9
- package/dist/runtime/index.js +9 -9
- package/dist/runtime/kind-handlers.d.ts +33 -24
- package/dist/runtime/kind-handlers.js +74 -65
- package/dist/runtime/manifest.d.ts +53 -47
- package/dist/runtime/manifest.js +133 -113
- package/dist/runtime/observe-border-box-size.d.ts +1 -4
- package/dist/runtime/observe-border-box-size.js +9 -10
- package/dist/runtime/preload-registry.d.ts +22 -8
- package/dist/runtime/preload-registry.js +65 -62
- package/dist/server/build.d.ts +8 -0
- package/dist/server/build.js +25 -0
- package/dist/server/check.d.ts +24 -0
- package/dist/server/check.js +199 -0
- package/dist/server/cli-commands.d.ts +25 -0
- package/dist/server/cli-commands.js +1178 -0
- package/dist/server/cli-init.d.ts +3 -0
- package/dist/server/cli-init.js +53 -0
- package/dist/server/cli-io.d.ts +46 -0
- package/dist/server/cli-io.js +105 -0
- package/dist/server/codegen.d.ts +58 -0
- package/dist/server/codegen.js +185 -0
- package/dist/server/config-loader.d.ts +34 -0
- package/dist/server/config-loader.js +103 -0
- package/dist/server/context.d.ts +8 -0
- package/dist/server/context.js +19 -0
- package/dist/server/folder-filesystem.d.ts +7 -0
- package/dist/server/folder-filesystem.js +39 -0
- package/dist/server/http.d.ts +12 -0
- package/dist/server/http.js +100 -0
- package/dist/server/index.d.ts +16 -0
- package/dist/server/index.js +9 -0
- package/dist/server/job-hash.d.ts +10 -0
- package/dist/server/job-hash.js +23 -0
- package/dist/server/library-store.d.ts +82 -0
- package/dist/server/library-store.js +763 -0
- package/dist/server/operations.d.ts +87 -0
- package/dist/server/operations.js +427 -0
- package/dist/server/plugins/audio.d.ts +7 -0
- package/dist/server/plugins/audio.js +27 -0
- package/dist/server/plugins/chroma-key-video.d.ts +9 -0
- package/dist/server/plugins/chroma-key-video.js +38 -0
- package/dist/server/plugins/contract.d.ts +100 -0
- package/dist/server/plugins/contract.js +16 -0
- package/dist/server/plugins/image.d.ts +8 -0
- package/dist/server/plugins/image.js +30 -0
- package/dist/server/plugins/slice.d.ts +14 -0
- package/dist/server/plugins/slice.js +63 -0
- package/dist/server/plugins/video.d.ts +6 -0
- package/dist/server/plugins/video.js +29 -0
- package/dist/server/plugins.d.ts +23 -0
- package/dist/server/plugins.js +33 -0
- package/dist/server/processing/audio-processing.d.ts +17 -0
- package/dist/server/processing/audio-processing.js +46 -0
- package/dist/server/processing/ffmpeg.d.ts +9 -0
- package/dist/server/processing/ffmpeg.js +50 -0
- package/dist/server/processing/image-processing.d.ts +16 -0
- package/dist/server/processing/image-processing.js +26 -0
- package/dist/server/processing/media-probe.d.ts +15 -0
- package/dist/server/processing/media-probe.js +27 -0
- package/dist/server/processing/processor.d.ts +50 -0
- package/dist/server/processing/processor.js +158 -0
- package/dist/server/processing/video-processing.d.ts +35 -0
- package/dist/server/processing/video-processing.js +87 -0
- package/dist/server/server.d.ts +13 -0
- package/dist/server/server.js +57 -0
- package/dist/server/start.d.ts +1 -0
- package/dist/server/start.js +33 -0
- package/package.json +29 -16
- package/dist/build-CZYFLLvl.js +0 -191
- package/dist/core/image-Dqmz8FXS.js +0 -54
- package/dist/core/reference-graph-CjuHbLDw.d.ts +0 -280
- package/dist/core/testing.d.ts +0 -27
- package/dist/core/testing.js +0 -80
- package/dist/editor/200.html +0 -37
- package/dist/editor/_app/immutable/assets/2.DIbbW7U1.css +0 -1
- package/dist/editor/_app/immutable/assets/3.C-9vFQ9A.css +0 -1
- package/dist/editor/_app/immutable/assets/4.BS8ElpOV.css +0 -1
- package/dist/editor/_app/immutable/assets/ConfirmDialog.CHEISE-L.css +0 -1
- package/dist/editor/_app/immutable/assets/LibraryContextMenu.CDjCmdV-.css +0 -1
- package/dist/editor/_app/immutable/chunks/Cx6qtxJg.js +0 -1
- package/dist/editor/_app/immutable/chunks/n7mvYc42.js +0 -5
- package/dist/editor/_app/immutable/entry/start.C8HHOLly.js +0 -1
- package/dist/editor/_app/immutable/nodes/3.WO7tZH_d.js +0 -104
- package/dist/editor/_app/immutable/nodes/4.DQtx17aW.js +0 -2
- package/dist/editor/_app/version.json +0 -1
- package/dist/index.d.ts +0 -370
- package/dist/index.js +0 -4
- package/dist/start-Bhnqt9Dc.js +0 -279
- package/dist/start-D2IXOrni.js +0 -2
- /package/{dist/editor → build/client}/_app/immutable/assets/0.DLhIsYA_.css +0 -0
- /package/{dist/editor → build/client}/_app/immutable/chunks/Bjy-W4x2.js +0 -0
- /package/{dist/editor → build/client}/_app/immutable/chunks/CNRz3sSw.js +0 -0
- /package/{dist/editor → build/client}/_app/immutable/chunks/CO4RBJfa.js +0 -0
- /package/{dist/editor → build/client}/_app/immutable/chunks/DjdrdRzT.js +0 -0
- /package/{dist/editor → build/client}/_app/immutable/chunks/xihTtKlq.js +0 -0
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
//#region src/lib/core/asset-id.ts
|
|
2
|
+
/**
|
|
3
|
+
* Asset ids are the SSOT keys and the generated property names on manifests
|
|
4
|
+
* are stable, human-readable camelCase slugs that must be valid JS
|
|
5
|
+
* identifiers and must not collide with `Manifest` class members.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Names an asset id may never take: current and future members of the runtime
|
|
9
|
+
* `Manifest` class (entries become direct properties on it), plus inherited
|
|
10
|
+
* `Object.prototype` members that would shadow-collide, plus keys that are
|
|
11
|
+
* prototype-pollution hazards when used as record keys (`prototype`;
|
|
12
|
+
* `__proto__` already fails the camelCase pattern).
|
|
13
|
+
*/
|
|
14
|
+
var RESERVED_ASSET_IDS = [
|
|
15
|
+
"preload",
|
|
16
|
+
"release",
|
|
17
|
+
"entries",
|
|
18
|
+
"constructor",
|
|
19
|
+
"prototype",
|
|
20
|
+
"hasOwnProperty",
|
|
21
|
+
"isPrototypeOf",
|
|
22
|
+
"propertyIsEnumerable",
|
|
23
|
+
"toLocaleString",
|
|
24
|
+
"toString",
|
|
25
|
+
"valueOf"
|
|
26
|
+
];
|
|
27
|
+
var ASSET_ID_PATTERN = /^[a-z][A-Za-z0-9]*$/;
|
|
28
|
+
/**
|
|
29
|
+
* Why an id is invalid, as a human-readable message — or `null` when valid.
|
|
30
|
+
* Lets the editor and the validator surface the precise reason.
|
|
31
|
+
*/
|
|
32
|
+
function assetIdError(id) {
|
|
33
|
+
if (!ASSET_ID_PATTERN.test(id)) return `"${id}" is not a valid asset id — use a camelCase identifier starting with a lowercase letter (e.g. "navigationPanel").`;
|
|
34
|
+
if (RESERVED_ASSET_IDS.includes(id)) return `"${id}" is reserved (it collides with a Manifest member name).`;
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Manifest names deliberately share the asset-id grammar because each name
|
|
39
|
+
* becomes a generated JavaScript module export.
|
|
40
|
+
*/
|
|
41
|
+
function manifestNameError(name) {
|
|
42
|
+
if (!ASSET_ID_PATTERN.test(name)) return `"${name}" is not a valid manifest name — use a camelCase identifier starting with a lowercase letter (e.g. "mainCatalog").`;
|
|
43
|
+
if (RESERVED_ASSET_IDS.includes(name)) return `"${name}" is reserved (it collides with a Manifest member name).`;
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
//#region src/lib/core/plugins/audio.ts
|
|
48
|
+
/** Built-in presets, always available; host config merges over them. */
|
|
49
|
+
var AUDIO_BUILT_IN_PRESETS = { default: {
|
|
50
|
+
codec: "opus",
|
|
51
|
+
bitrateKbps: 96,
|
|
52
|
+
container: "webm"
|
|
53
|
+
} };
|
|
54
|
+
/** Each codec's muxable container — a mismatch is a config error, not an ffmpeg one. */
|
|
55
|
+
var CONTAINER_BY_CODEC = {
|
|
56
|
+
opus: "webm",
|
|
57
|
+
aac: "m4a"
|
|
58
|
+
};
|
|
59
|
+
function validateAudioPreset(name, value) {
|
|
60
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error(`Audio preset "${name}" must be an object.`);
|
|
61
|
+
const record = value;
|
|
62
|
+
if (record.codec !== "opus" && record.codec !== "aac") throw new Error(`Audio preset "${name}" needs a "codec" of 'opus' | 'aac'.`);
|
|
63
|
+
if (typeof record.bitrateKbps !== "number" || !Number.isInteger(record.bitrateKbps) || record.bitrateKbps <= 0) throw new Error(`Audio preset "${name}" needs a positive integer "bitrateKbps".`);
|
|
64
|
+
const expectedContainer = CONTAINER_BY_CODEC[record.codec];
|
|
65
|
+
if (record.container !== expectedContainer) throw new Error(`Audio preset "${name}": codec '${record.codec}' requires container '${expectedContainer}'.`);
|
|
66
|
+
return {
|
|
67
|
+
codec: record.codec,
|
|
68
|
+
bitrateKbps: record.bitrateKbps,
|
|
69
|
+
container: expectedContainer
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
var audioPlugin = {
|
|
73
|
+
type: "audio",
|
|
74
|
+
accepts: [...[
|
|
75
|
+
"mp3",
|
|
76
|
+
"wav",
|
|
77
|
+
"m4a",
|
|
78
|
+
"ogg",
|
|
79
|
+
"flac"
|
|
80
|
+
]],
|
|
81
|
+
defaultParameters: () => ({ preset: "default" }),
|
|
82
|
+
validateParameters(value) {
|
|
83
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error("Audio parameters must be an object.");
|
|
84
|
+
const record = value;
|
|
85
|
+
if (typeof record.preset !== "string" || record.preset.length === 0) throw new Error("Audio parameters need a non-empty string \"preset\".");
|
|
86
|
+
return { preset: record.preset };
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
//#endregion
|
|
90
|
+
//#region src/lib/core/asset-reference.ts
|
|
91
|
+
/** Whether a value is a well-formed asset-reference marker. */
|
|
92
|
+
function isAssetReference(value) {
|
|
93
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) && typeof value.$asset === "string" && value.$asset !== "";
|
|
94
|
+
}
|
|
95
|
+
//#endregion
|
|
96
|
+
//#region src/lib/core/chroma-key.ts
|
|
97
|
+
/** The upstream shader's property defaults — a freshly ingested asset starts here. */
|
|
98
|
+
var DEFAULT_CHROMA_KEY_PARAMETERS = {
|
|
99
|
+
keyColor: [
|
|
100
|
+
0,
|
|
101
|
+
1,
|
|
102
|
+
0
|
|
103
|
+
],
|
|
104
|
+
colorCutoff: .2,
|
|
105
|
+
colorFeathering: .33,
|
|
106
|
+
maskFeathering: 1,
|
|
107
|
+
sharpening: .5,
|
|
108
|
+
despill: 1,
|
|
109
|
+
despillLuminanceAdd: .2
|
|
110
|
+
};
|
|
111
|
+
var SCALAR_KEYS = [
|
|
112
|
+
"colorCutoff",
|
|
113
|
+
"colorFeathering",
|
|
114
|
+
"maskFeathering",
|
|
115
|
+
"sharpening",
|
|
116
|
+
"despill",
|
|
117
|
+
"despillLuminanceAdd"
|
|
118
|
+
];
|
|
119
|
+
function clampUnit(value) {
|
|
120
|
+
return Math.min(1, Math.max(0, value));
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Validate an unknown chroma-key blob: every field required, every channel and
|
|
124
|
+
* scalar a finite number. Values are clamped into 0–1 (slider float artifacts
|
|
125
|
+
* must not invalidate a library), non-numbers throw.
|
|
126
|
+
*/
|
|
127
|
+
function validateChromaKeyParameters(value) {
|
|
128
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error("\"chromaKey\" must be an object.");
|
|
129
|
+
const record = value;
|
|
130
|
+
const keyColor = record.keyColor;
|
|
131
|
+
if (!Array.isArray(keyColor) || keyColor.length !== 3 || keyColor.some((channel) => typeof channel !== "number" || !Number.isFinite(channel))) throw new Error("\"chromaKey.keyColor\" must be an array of three numbers (RGB, 0–1 each).");
|
|
132
|
+
const result = { keyColor: [
|
|
133
|
+
clampUnit(keyColor[0]),
|
|
134
|
+
clampUnit(keyColor[1]),
|
|
135
|
+
clampUnit(keyColor[2])
|
|
136
|
+
] };
|
|
137
|
+
for (const key of SCALAR_KEYS) {
|
|
138
|
+
const scalar = record[key];
|
|
139
|
+
if (typeof scalar !== "number" || !Number.isFinite(scalar)) throw new Error(`"chromaKey.${key}" must be a number (0–1).`);
|
|
140
|
+
result[key] = clampUnit(scalar);
|
|
141
|
+
}
|
|
142
|
+
return result;
|
|
143
|
+
}
|
|
144
|
+
//#endregion
|
|
145
|
+
//#region src/lib/core/plugins/video.ts
|
|
146
|
+
/**
|
|
147
|
+
* Built-in presets, always available; host config merges over them. The
|
|
148
|
+
* default is the proven committed-video formula: H.264, slow preset, animation
|
|
149
|
+
* tune, CRF 28, yuv420p, faststart MP4.
|
|
150
|
+
*/
|
|
151
|
+
var VIDEO_BUILT_IN_PRESETS = { default: {
|
|
152
|
+
codec: "h264",
|
|
153
|
+
crf: 28,
|
|
154
|
+
encoderPreset: "slow",
|
|
155
|
+
tune: "animation",
|
|
156
|
+
pixelFormat: "yuv420p",
|
|
157
|
+
container: "mp4"
|
|
158
|
+
} };
|
|
159
|
+
function validateVideoPreset(name, value) {
|
|
160
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error(`Video preset "${name}" must be an object.`);
|
|
161
|
+
const record = value;
|
|
162
|
+
if (record.codec !== "h264") throw new Error(`Video preset "${name}" needs a "codec" of 'h264'.`);
|
|
163
|
+
if (typeof record.crf !== "number" || !Number.isInteger(record.crf) || record.crf < 0) throw new Error(`Video preset "${name}" needs an integer "crf" ≥ 0.`);
|
|
164
|
+
if (typeof record.encoderPreset !== "string" || record.encoderPreset.length === 0) throw new Error(`Video preset "${name}" needs a non-empty string "encoderPreset".`);
|
|
165
|
+
if (record.tune !== void 0 && (typeof record.tune !== "string" || record.tune.length === 0)) throw new Error(`Video preset "${name}" has a non-string "tune".`);
|
|
166
|
+
if (typeof record.pixelFormat !== "string" || record.pixelFormat.length === 0) throw new Error(`Video preset "${name}" needs a non-empty string "pixelFormat".`);
|
|
167
|
+
if (record.container !== "mp4") throw new Error(`Video preset "${name}" needs a "container" of 'mp4'.`);
|
|
168
|
+
return {
|
|
169
|
+
codec: "h264",
|
|
170
|
+
crf: record.crf,
|
|
171
|
+
encoderPreset: record.encoderPreset,
|
|
172
|
+
...record.tune !== void 0 ? { tune: record.tune } : {},
|
|
173
|
+
pixelFormat: record.pixelFormat,
|
|
174
|
+
container: "mp4"
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
var VIDEO_EXTENSIONS = [
|
|
178
|
+
"mp4",
|
|
179
|
+
"mov",
|
|
180
|
+
"webm",
|
|
181
|
+
"m4v"
|
|
182
|
+
];
|
|
183
|
+
/** Shared by the video and chroma-key-video plugins (identical transcode inputs). */
|
|
184
|
+
function validateVideoParameters(label, value) {
|
|
185
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error(`${label} parameters must be an object.`);
|
|
186
|
+
const record = value;
|
|
187
|
+
if (typeof record.preset !== "string" || record.preset.length === 0) throw new Error(`${label} parameters need a non-empty string "preset".`);
|
|
188
|
+
if (record.maxWidth !== void 0) {
|
|
189
|
+
if (typeof record.maxWidth !== "number" || !Number.isInteger(record.maxWidth) || record.maxWidth <= 0) throw new Error(`${label} "maxWidth" must be a positive integer when set.`);
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
preset: record.preset,
|
|
193
|
+
...record.maxWidth !== void 0 ? { maxWidth: record.maxWidth } : {}
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
var videoPlugin = {
|
|
197
|
+
type: "video",
|
|
198
|
+
accepts: [...VIDEO_EXTENSIONS],
|
|
199
|
+
defaultParameters: () => ({ preset: "default" }),
|
|
200
|
+
validateParameters(value) {
|
|
201
|
+
return validateVideoParameters("Video", value);
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
//#endregion
|
|
205
|
+
//#region src/lib/core/plugins/chroma-key-video.ts
|
|
206
|
+
/**
|
|
207
|
+
* Chroma-key-video plugin (core part): a greenscreen video delivered through
|
|
208
|
+
* the video plugin's transcode pipeline, plus the keying data the runtime's
|
|
209
|
+
* WebGL renderer needs — chroma-key parameters and two optional image
|
|
210
|
+
* references: a grayscale shape `mask` multiplied onto the keyed
|
|
211
|
+
* alpha, and a static `fallback` image shown when WebGL2 is unavailable.
|
|
212
|
+
*
|
|
213
|
+
* The keying values and references are entry-only data: they travel into the
|
|
214
|
+
* generated manifest entry but never touch the ffmpeg job, so
|
|
215
|
+
* `processingParameters` narrows the job-hash input to the transcode inputs
|
|
216
|
+
* (preset + maxWidth) — retuning a slider must not re-transcode the proxy.
|
|
217
|
+
*/
|
|
218
|
+
function validateOptionalReference(label, value) {
|
|
219
|
+
if (value === void 0) return void 0;
|
|
220
|
+
if (!isAssetReference(value)) throw new Error(`"${label}" must be an asset reference ({ "$asset": "<id>" }).`);
|
|
221
|
+
return { $asset: value.$asset };
|
|
222
|
+
}
|
|
223
|
+
var chromaKeyVideoPlugin = {
|
|
224
|
+
type: "chroma-key-video",
|
|
225
|
+
accepts: [...VIDEO_EXTENSIONS],
|
|
226
|
+
defaultParameters: () => ({
|
|
227
|
+
preset: "default",
|
|
228
|
+
chromaKey: {
|
|
229
|
+
...DEFAULT_CHROMA_KEY_PARAMETERS,
|
|
230
|
+
keyColor: [...DEFAULT_CHROMA_KEY_PARAMETERS.keyColor]
|
|
231
|
+
}
|
|
232
|
+
}),
|
|
233
|
+
validateParameters(value) {
|
|
234
|
+
const videoParameters = validateVideoParameters("Chroma-key-video", value);
|
|
235
|
+
const record = value;
|
|
236
|
+
const chromaKey = validateChromaKeyParameters(record.chromaKey);
|
|
237
|
+
const mask = validateOptionalReference("mask", record.mask);
|
|
238
|
+
const fallback = validateOptionalReference("fallback", record.fallback);
|
|
239
|
+
return {
|
|
240
|
+
...videoParameters,
|
|
241
|
+
chromaKey,
|
|
242
|
+
...mask !== void 0 ? { mask } : {},
|
|
243
|
+
...fallback !== void 0 ? { fallback } : {}
|
|
244
|
+
};
|
|
245
|
+
},
|
|
246
|
+
collectReferences(parameters) {
|
|
247
|
+
const references = [];
|
|
248
|
+
if (parameters.mask) references.push({
|
|
249
|
+
field: "mask",
|
|
250
|
+
assetId: parameters.mask.$asset,
|
|
251
|
+
expectedTypes: ["image"]
|
|
252
|
+
});
|
|
253
|
+
if (parameters.fallback) references.push({
|
|
254
|
+
field: "fallback",
|
|
255
|
+
assetId: parameters.fallback.$asset,
|
|
256
|
+
expectedTypes: ["image"]
|
|
257
|
+
});
|
|
258
|
+
return references;
|
|
259
|
+
},
|
|
260
|
+
processingParameters(parameters) {
|
|
261
|
+
return {
|
|
262
|
+
preset: parameters.preset,
|
|
263
|
+
...parameters.maxWidth !== void 0 ? { maxWidth: parameters.maxWidth } : {}
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
//#endregion
|
|
268
|
+
//#region src/lib/core/plugins/image.ts
|
|
269
|
+
var IMAGE_FORMATS = [
|
|
270
|
+
"webp",
|
|
271
|
+
"png",
|
|
272
|
+
"avif",
|
|
273
|
+
"jpeg"
|
|
274
|
+
];
|
|
275
|
+
/** Built-in presets, always available; host config merges over them. */
|
|
276
|
+
var IMAGE_BUILT_IN_PRESETS = { default: {
|
|
277
|
+
format: "webp",
|
|
278
|
+
quality: 82
|
|
279
|
+
} };
|
|
280
|
+
function validateImagePreset(name, value) {
|
|
281
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error(`Image preset "${name}" must be an object.`);
|
|
282
|
+
const record = value;
|
|
283
|
+
if (typeof record.format !== "string" || !IMAGE_FORMATS.includes(record.format)) throw new Error(`Image preset "${name}" needs a "format" of ${IMAGE_FORMATS.map((format) => `'${format}'`).join(" | ")}.`);
|
|
284
|
+
if (record.quality !== void 0 && typeof record.quality !== "number") throw new Error(`Image preset "${name}" has a non-number "quality".`);
|
|
285
|
+
return {
|
|
286
|
+
format: record.format,
|
|
287
|
+
quality: record.quality
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
var RASTER_IMAGE_EXTENSIONS = [
|
|
291
|
+
"png",
|
|
292
|
+
"jpg",
|
|
293
|
+
"jpeg",
|
|
294
|
+
"webp",
|
|
295
|
+
"avif"
|
|
296
|
+
];
|
|
297
|
+
var imagePlugin = {
|
|
298
|
+
type: "image",
|
|
299
|
+
accepts: [...RASTER_IMAGE_EXTENSIONS],
|
|
300
|
+
defaultParameters: () => ({ preset: "default" }),
|
|
301
|
+
validateParameters(value) {
|
|
302
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error("Image parameters must be an object.");
|
|
303
|
+
const record = value;
|
|
304
|
+
if (typeof record.preset !== "string" || record.preset.length === 0) throw new Error("Image parameters need a non-empty string \"preset\".");
|
|
305
|
+
if (record.targetWidth !== void 0) {
|
|
306
|
+
if (typeof record.targetWidth !== "number" || !Number.isInteger(record.targetWidth) || record.targetWidth <= 0) throw new Error("Image \"targetWidth\" must be a positive integer when set.");
|
|
307
|
+
}
|
|
308
|
+
return {
|
|
309
|
+
preset: record.preset,
|
|
310
|
+
...record.targetWidth !== void 0 ? { targetWidth: record.targetWidth } : {}
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
};
|
|
314
|
+
//#endregion
|
|
315
|
+
//#region src/lib/core/slice-data.ts
|
|
316
|
+
/**
|
|
317
|
+
* The slice data model keeps the source image separate from slicing metadata
|
|
318
|
+
* (Fundus tracks raw files and
|
|
319
|
+
* proxy dimensions separately), so there is no `SliceSource` here.
|
|
320
|
+
*
|
|
321
|
+
* The geometry is stored as **insets** (border thickness in source pixels), the
|
|
322
|
+
* canonical, render-ready form — equivalent to CSS `border-image-slice`.
|
|
323
|
+
* `slicedAxesFor` is the single source of truth for which axes each mode uses.
|
|
324
|
+
*/
|
|
325
|
+
var SLICE_MODES = [
|
|
326
|
+
"nine",
|
|
327
|
+
"three-horizontal",
|
|
328
|
+
"three-vertical",
|
|
329
|
+
"one"
|
|
330
|
+
];
|
|
331
|
+
/** All-zero insets — the "no overdraw" value. */
|
|
332
|
+
function createZeroInsets() {
|
|
333
|
+
return {
|
|
334
|
+
top: 0,
|
|
335
|
+
right: 0,
|
|
336
|
+
bottom: 0,
|
|
337
|
+
left: 0
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Default insets for a freshly ingested image: each border a quarter of the
|
|
342
|
+
* corresponding dimension (at least 1px where the image is large enough),
|
|
343
|
+
* always clamped so a center of at least one source pixel remains on each
|
|
344
|
+
* axis. For an axis too small for insets + a 1px center (width/height ≤ 2)
|
|
345
|
+
* the insets on that axis are 0 — structurally valid slicing for any size ≥ 1.
|
|
346
|
+
*/
|
|
347
|
+
function defaultInsetsForSize(width, height) {
|
|
348
|
+
const horizontal = Math.min(Math.max(1, Math.floor(width / 4)), Math.floor((width - 1) / 2));
|
|
349
|
+
const vertical = Math.min(Math.max(1, Math.floor(height / 4)), Math.floor((height - 1) / 2));
|
|
350
|
+
return {
|
|
351
|
+
top: vertical,
|
|
352
|
+
right: horizontal,
|
|
353
|
+
bottom: vertical,
|
|
354
|
+
left: horizontal
|
|
355
|
+
};
|
|
356
|
+
}
|
|
357
|
+
//#endregion
|
|
358
|
+
//#region src/lib/core/plugins/slice.ts
|
|
359
|
+
/** Built-in presets, always available; host config merges over them. */
|
|
360
|
+
var SLICE_BUILT_IN_PRESETS = { default: {
|
|
361
|
+
format: "webp",
|
|
362
|
+
quality: 82
|
|
363
|
+
} };
|
|
364
|
+
function validateInsets(label, value) {
|
|
365
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error(`Slice ${label} must be an object with top/right/bottom/left.`);
|
|
366
|
+
const record = value;
|
|
367
|
+
const sides = [
|
|
368
|
+
"top",
|
|
369
|
+
"right",
|
|
370
|
+
"bottom",
|
|
371
|
+
"left"
|
|
372
|
+
];
|
|
373
|
+
const result = createZeroInsets();
|
|
374
|
+
for (const side of sides) {
|
|
375
|
+
const sideValue = record[side];
|
|
376
|
+
if (typeof sideValue !== "number" || !Number.isInteger(sideValue) || sideValue < 0) throw new Error(`Slice ${label}.${side} must be a non-negative integer.`);
|
|
377
|
+
result[side] = sideValue;
|
|
378
|
+
}
|
|
379
|
+
return result;
|
|
380
|
+
}
|
|
381
|
+
var slicePlugin = {
|
|
382
|
+
type: "slice",
|
|
383
|
+
accepts: [...RASTER_IMAGE_EXTENSIONS],
|
|
384
|
+
defaultParameters: () => ({
|
|
385
|
+
mode: "nine",
|
|
386
|
+
insets: createZeroInsets(),
|
|
387
|
+
pixelRatio: 1,
|
|
388
|
+
preset: "default"
|
|
389
|
+
}),
|
|
390
|
+
validateParameters(value) {
|
|
391
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error("Slice parameters must be an object.");
|
|
392
|
+
const record = value;
|
|
393
|
+
if (typeof record.mode !== "string" || !SLICE_MODES.includes(record.mode)) throw new Error(`Slice "mode" must be one of ${SLICE_MODES.map((mode) => `'${mode}'`).join(" | ")}.`);
|
|
394
|
+
const insets = validateInsets("insets", record.insets);
|
|
395
|
+
if (typeof record.pixelRatio !== "number" || !Number.isInteger(record.pixelRatio) || record.pixelRatio < 1) throw new Error("Slice \"pixelRatio\" must be an integer ≥ 1.");
|
|
396
|
+
const overdraw = record.overdraw === void 0 ? void 0 : validateInsets("overdraw", record.overdraw);
|
|
397
|
+
if (typeof record.preset !== "string" || record.preset.length === 0) throw new Error("Slice parameters need a non-empty string \"preset\".");
|
|
398
|
+
return {
|
|
399
|
+
mode: record.mode,
|
|
400
|
+
insets,
|
|
401
|
+
pixelRatio: record.pixelRatio,
|
|
402
|
+
...overdraw !== void 0 ? { overdraw } : {},
|
|
403
|
+
preset: record.preset
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
};
|
|
407
|
+
|
|
408
|
+
export { AUDIO_BUILT_IN_PRESETS as A, IMAGE_BUILT_IN_PRESETS as I, SLICE_BUILT_IN_PRESETS as S, VIDEO_BUILT_IN_PRESETS as V, audioPlugin as a, assetIdError as b, chromaKeyVideoPlugin as c, defaultInsetsForSize as d, isAssetReference as e, validateAudioPreset as f, validateVideoPreset as g, validateImagePreset as h, imagePlugin as i, manifestNameError as m, slicePlugin as s, videoPlugin as v };
|
|
409
|
+
//# sourceMappingURL=core.js-DDntpb72.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js-DDntpb72.js","sources":["../../../../.svelte-kit/output/server/chunks/core.js"],"sourcesContent":["//#region src/lib/core/asset-id.ts\n/**\n* Asset ids are the SSOT keys and the generated property names on manifests\n* are stable, human-readable camelCase slugs that must be valid JS\n* identifiers and must not collide with `Manifest` class members.\n*/\n/**\n* Names an asset id may never take: current and future members of the runtime\n* `Manifest` class (entries become direct properties on it), plus inherited\n* `Object.prototype` members that would shadow-collide, plus keys that are\n* prototype-pollution hazards when used as record keys (`prototype`;\n* `__proto__` already fails the camelCase pattern).\n*/\nvar RESERVED_ASSET_IDS = [\n\t\"preload\",\n\t\"release\",\n\t\"entries\",\n\t\"constructor\",\n\t\"prototype\",\n\t\"hasOwnProperty\",\n\t\"isPrototypeOf\",\n\t\"propertyIsEnumerable\",\n\t\"toLocaleString\",\n\t\"toString\",\n\t\"valueOf\"\n];\nvar ASSET_ID_PATTERN = /^[a-z][A-Za-z0-9]*$/;\n/**\n* Why an id is invalid, as a human-readable message — or `null` when valid.\n* Lets the editor and the validator surface the precise reason.\n*/\nfunction assetIdError(id) {\n\tif (!ASSET_ID_PATTERN.test(id)) return `\"${id}\" is not a valid asset id — use a camelCase identifier starting with a lowercase letter (e.g. \"navigationPanel\").`;\n\tif (RESERVED_ASSET_IDS.includes(id)) return `\"${id}\" is reserved (it collides with a Manifest member name).`;\n\treturn null;\n}\n/**\n* Manifest names deliberately share the asset-id grammar because each name\n* becomes a generated JavaScript module export.\n*/\nfunction manifestNameError(name) {\n\tif (!ASSET_ID_PATTERN.test(name)) return `\"${name}\" is not a valid manifest name — use a camelCase identifier starting with a lowercase letter (e.g. \"mainCatalog\").`;\n\tif (RESERVED_ASSET_IDS.includes(name)) return `\"${name}\" is reserved (it collides with a Manifest member name).`;\n\treturn null;\n}\n//#endregion\n//#region src/lib/core/plugins/audio.ts\n/** Built-in presets, always available; host config merges over them. */\nvar AUDIO_BUILT_IN_PRESETS = { default: {\n\tcodec: \"opus\",\n\tbitrateKbps: 96,\n\tcontainer: \"webm\"\n} };\n/** Each codec's muxable container — a mismatch is a config error, not an ffmpeg one. */\nvar CONTAINER_BY_CODEC = {\n\topus: \"webm\",\n\taac: \"m4a\"\n};\nfunction validateAudioPreset(name, value) {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) throw new Error(`Audio preset \"${name}\" must be an object.`);\n\tconst record = value;\n\tif (record.codec !== \"opus\" && record.codec !== \"aac\") throw new Error(`Audio preset \"${name}\" needs a \"codec\" of 'opus' | 'aac'.`);\n\tif (typeof record.bitrateKbps !== \"number\" || !Number.isInteger(record.bitrateKbps) || record.bitrateKbps <= 0) throw new Error(`Audio preset \"${name}\" needs a positive integer \"bitrateKbps\".`);\n\tconst expectedContainer = CONTAINER_BY_CODEC[record.codec];\n\tif (record.container !== expectedContainer) throw new Error(`Audio preset \"${name}\": codec '${record.codec}' requires container '${expectedContainer}'.`);\n\treturn {\n\t\tcodec: record.codec,\n\t\tbitrateKbps: record.bitrateKbps,\n\t\tcontainer: expectedContainer\n\t};\n}\nvar audioPlugin = {\n\ttype: \"audio\",\n\taccepts: [...[\n\t\t\"mp3\",\n\t\t\"wav\",\n\t\t\"m4a\",\n\t\t\"ogg\",\n\t\t\"flac\"\n\t]],\n\tdefaultParameters: () => ({ preset: \"default\" }),\n\tvalidateParameters(value) {\n\t\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) throw new Error(\"Audio parameters must be an object.\");\n\t\tconst record = value;\n\t\tif (typeof record.preset !== \"string\" || record.preset.length === 0) throw new Error(\"Audio parameters need a non-empty string \\\"preset\\\".\");\n\t\treturn { preset: record.preset };\n\t}\n};\n//#endregion\n//#region src/lib/core/asset-reference.ts\n/** Whether a value is a well-formed asset-reference marker. */\nfunction isAssetReference(value) {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value) && typeof value.$asset === \"string\" && value.$asset !== \"\";\n}\n//#endregion\n//#region src/lib/core/chroma-key.ts\n/** The upstream shader's property defaults — a freshly ingested asset starts here. */\nvar DEFAULT_CHROMA_KEY_PARAMETERS = {\n\tkeyColor: [\n\t\t0,\n\t\t1,\n\t\t0\n\t],\n\tcolorCutoff: .2,\n\tcolorFeathering: .33,\n\tmaskFeathering: 1,\n\tsharpening: .5,\n\tdespill: 1,\n\tdespillLuminanceAdd: .2\n};\nvar SCALAR_KEYS = [\n\t\"colorCutoff\",\n\t\"colorFeathering\",\n\t\"maskFeathering\",\n\t\"sharpening\",\n\t\"despill\",\n\t\"despillLuminanceAdd\"\n];\nfunction clampUnit(value) {\n\treturn Math.min(1, Math.max(0, value));\n}\n/**\n* Validate an unknown chroma-key blob: every field required, every channel and\n* scalar a finite number. Values are clamped into 0–1 (slider float artifacts\n* must not invalidate a library), non-numbers throw.\n*/\nfunction validateChromaKeyParameters(value) {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) throw new Error(\"\\\"chromaKey\\\" must be an object.\");\n\tconst record = value;\n\tconst keyColor = record.keyColor;\n\tif (!Array.isArray(keyColor) || keyColor.length !== 3 || keyColor.some((channel) => typeof channel !== \"number\" || !Number.isFinite(channel))) throw new Error(\"\\\"chromaKey.keyColor\\\" must be an array of three numbers (RGB, 0–1 each).\");\n\tconst result = { keyColor: [\n\t\tclampUnit(keyColor[0]),\n\t\tclampUnit(keyColor[1]),\n\t\tclampUnit(keyColor[2])\n\t] };\n\tfor (const key of SCALAR_KEYS) {\n\t\tconst scalar = record[key];\n\t\tif (typeof scalar !== \"number\" || !Number.isFinite(scalar)) throw new Error(`\"chromaKey.${key}\" must be a number (0–1).`);\n\t\tresult[key] = clampUnit(scalar);\n\t}\n\treturn result;\n}\n//#endregion\n//#region src/lib/core/plugins/video.ts\n/**\n* Built-in presets, always available; host config merges over them. The\n* default is the proven committed-video formula: H.264, slow preset, animation\n* tune, CRF 28, yuv420p, faststart MP4.\n*/\nvar VIDEO_BUILT_IN_PRESETS = { default: {\n\tcodec: \"h264\",\n\tcrf: 28,\n\tencoderPreset: \"slow\",\n\ttune: \"animation\",\n\tpixelFormat: \"yuv420p\",\n\tcontainer: \"mp4\"\n} };\nfunction validateVideoPreset(name, value) {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) throw new Error(`Video preset \"${name}\" must be an object.`);\n\tconst record = value;\n\tif (record.codec !== \"h264\") throw new Error(`Video preset \"${name}\" needs a \"codec\" of 'h264'.`);\n\tif (typeof record.crf !== \"number\" || !Number.isInteger(record.crf) || record.crf < 0) throw new Error(`Video preset \"${name}\" needs an integer \"crf\" ≥ 0.`);\n\tif (typeof record.encoderPreset !== \"string\" || record.encoderPreset.length === 0) throw new Error(`Video preset \"${name}\" needs a non-empty string \"encoderPreset\".`);\n\tif (record.tune !== void 0 && (typeof record.tune !== \"string\" || record.tune.length === 0)) throw new Error(`Video preset \"${name}\" has a non-string \"tune\".`);\n\tif (typeof record.pixelFormat !== \"string\" || record.pixelFormat.length === 0) throw new Error(`Video preset \"${name}\" needs a non-empty string \"pixelFormat\".`);\n\tif (record.container !== \"mp4\") throw new Error(`Video preset \"${name}\" needs a \"container\" of 'mp4'.`);\n\treturn {\n\t\tcodec: \"h264\",\n\t\tcrf: record.crf,\n\t\tencoderPreset: record.encoderPreset,\n\t\t...record.tune !== void 0 ? { tune: record.tune } : {},\n\t\tpixelFormat: record.pixelFormat,\n\t\tcontainer: \"mp4\"\n\t};\n}\nvar VIDEO_EXTENSIONS = [\n\t\"mp4\",\n\t\"mov\",\n\t\"webm\",\n\t\"m4v\"\n];\n/** Shared by the video and chroma-key-video plugins (identical transcode inputs). */\nfunction validateVideoParameters(label, value) {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) throw new Error(`${label} parameters must be an object.`);\n\tconst record = value;\n\tif (typeof record.preset !== \"string\" || record.preset.length === 0) throw new Error(`${label} parameters need a non-empty string \"preset\".`);\n\tif (record.maxWidth !== void 0) {\n\t\tif (typeof record.maxWidth !== \"number\" || !Number.isInteger(record.maxWidth) || record.maxWidth <= 0) throw new Error(`${label} \"maxWidth\" must be a positive integer when set.`);\n\t}\n\treturn {\n\t\tpreset: record.preset,\n\t\t...record.maxWidth !== void 0 ? { maxWidth: record.maxWidth } : {}\n\t};\n}\nvar videoPlugin = {\n\ttype: \"video\",\n\taccepts: [...VIDEO_EXTENSIONS],\n\tdefaultParameters: () => ({ preset: \"default\" }),\n\tvalidateParameters(value) {\n\t\treturn validateVideoParameters(\"Video\", value);\n\t}\n};\n//#endregion\n//#region src/lib/core/plugins/chroma-key-video.ts\n/**\n* Chroma-key-video plugin (core part): a greenscreen video delivered through\n* the video plugin's transcode pipeline, plus the keying data the runtime's\n* WebGL renderer needs — chroma-key parameters and two optional image\n* references: a grayscale shape `mask` multiplied onto the keyed\n* alpha, and a static `fallback` image shown when WebGL2 is unavailable.\n*\n* The keying values and references are entry-only data: they travel into the\n* generated manifest entry but never touch the ffmpeg job, so\n* `processingParameters` narrows the job-hash input to the transcode inputs\n* (preset + maxWidth) — retuning a slider must not re-transcode the proxy.\n*/\nfunction validateOptionalReference(label, value) {\n\tif (value === void 0) return void 0;\n\tif (!isAssetReference(value)) throw new Error(`\"${label}\" must be an asset reference ({ \"$asset\": \"<id>\" }).`);\n\treturn { $asset: value.$asset };\n}\nvar chromaKeyVideoPlugin = {\n\ttype: \"chroma-key-video\",\n\taccepts: [...VIDEO_EXTENSIONS],\n\tdefaultParameters: () => ({\n\t\tpreset: \"default\",\n\t\tchromaKey: {\n\t\t\t...DEFAULT_CHROMA_KEY_PARAMETERS,\n\t\t\tkeyColor: [...DEFAULT_CHROMA_KEY_PARAMETERS.keyColor]\n\t\t}\n\t}),\n\tvalidateParameters(value) {\n\t\tconst videoParameters = validateVideoParameters(\"Chroma-key-video\", value);\n\t\tconst record = value;\n\t\tconst chromaKey = validateChromaKeyParameters(record.chromaKey);\n\t\tconst mask = validateOptionalReference(\"mask\", record.mask);\n\t\tconst fallback = validateOptionalReference(\"fallback\", record.fallback);\n\t\treturn {\n\t\t\t...videoParameters,\n\t\t\tchromaKey,\n\t\t\t...mask !== void 0 ? { mask } : {},\n\t\t\t...fallback !== void 0 ? { fallback } : {}\n\t\t};\n\t},\n\tcollectReferences(parameters) {\n\t\tconst references = [];\n\t\tif (parameters.mask) references.push({\n\t\t\tfield: \"mask\",\n\t\t\tassetId: parameters.mask.$asset,\n\t\t\texpectedTypes: [\"image\"]\n\t\t});\n\t\tif (parameters.fallback) references.push({\n\t\t\tfield: \"fallback\",\n\t\t\tassetId: parameters.fallback.$asset,\n\t\t\texpectedTypes: [\"image\"]\n\t\t});\n\t\treturn references;\n\t},\n\tprocessingParameters(parameters) {\n\t\treturn {\n\t\t\tpreset: parameters.preset,\n\t\t\t...parameters.maxWidth !== void 0 ? { maxWidth: parameters.maxWidth } : {}\n\t\t};\n\t}\n};\n//#endregion\n//#region src/lib/core/plugins/image.ts\nvar IMAGE_FORMATS = [\n\t\"webp\",\n\t\"png\",\n\t\"avif\",\n\t\"jpeg\"\n];\n/** Built-in presets, always available; host config merges over them. */\nvar IMAGE_BUILT_IN_PRESETS = { default: {\n\tformat: \"webp\",\n\tquality: 82\n} };\nfunction validateImagePreset(name, value) {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) throw new Error(`Image preset \"${name}\" must be an object.`);\n\tconst record = value;\n\tif (typeof record.format !== \"string\" || !IMAGE_FORMATS.includes(record.format)) throw new Error(`Image preset \"${name}\" needs a \"format\" of ${IMAGE_FORMATS.map((format) => `'${format}'`).join(\" | \")}.`);\n\tif (record.quality !== void 0 && typeof record.quality !== \"number\") throw new Error(`Image preset \"${name}\" has a non-number \"quality\".`);\n\treturn {\n\t\tformat: record.format,\n\t\tquality: record.quality\n\t};\n}\nvar RASTER_IMAGE_EXTENSIONS = [\n\t\"png\",\n\t\"jpg\",\n\t\"jpeg\",\n\t\"webp\",\n\t\"avif\"\n];\nvar imagePlugin = {\n\ttype: \"image\",\n\taccepts: [...RASTER_IMAGE_EXTENSIONS],\n\tdefaultParameters: () => ({ preset: \"default\" }),\n\tvalidateParameters(value) {\n\t\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) throw new Error(\"Image parameters must be an object.\");\n\t\tconst record = value;\n\t\tif (typeof record.preset !== \"string\" || record.preset.length === 0) throw new Error(\"Image parameters need a non-empty string \\\"preset\\\".\");\n\t\tif (record.targetWidth !== void 0) {\n\t\t\tif (typeof record.targetWidth !== \"number\" || !Number.isInteger(record.targetWidth) || record.targetWidth <= 0) throw new Error(\"Image \\\"targetWidth\\\" must be a positive integer when set.\");\n\t\t}\n\t\treturn {\n\t\t\tpreset: record.preset,\n\t\t\t...record.targetWidth !== void 0 ? { targetWidth: record.targetWidth } : {}\n\t\t};\n\t}\n};\n//#endregion\n//#region src/lib/core/slice-data.ts\n/**\n* The slice data model keeps the source image separate from slicing metadata\n* (Fundus tracks raw files and\n* proxy dimensions separately), so there is no `SliceSource` here.\n*\n* The geometry is stored as **insets** (border thickness in source pixels), the\n* canonical, render-ready form — equivalent to CSS `border-image-slice`.\n* `slicedAxesFor` is the single source of truth for which axes each mode uses.\n*/\nvar SLICE_MODES = [\n\t\"nine\",\n\t\"three-horizontal\",\n\t\"three-vertical\",\n\t\"one\"\n];\n/** All-zero insets — the \"no overdraw\" value. */\nfunction createZeroInsets() {\n\treturn {\n\t\ttop: 0,\n\t\tright: 0,\n\t\tbottom: 0,\n\t\tleft: 0\n\t};\n}\n/**\n* Default insets for a freshly ingested image: each border a quarter of the\n* corresponding dimension (at least 1px where the image is large enough),\n* always clamped so a center of at least one source pixel remains on each\n* axis. For an axis too small for insets + a 1px center (width/height ≤ 2)\n* the insets on that axis are 0 — structurally valid slicing for any size ≥ 1.\n*/\nfunction defaultInsetsForSize(width, height) {\n\tconst horizontal = Math.min(Math.max(1, Math.floor(width / 4)), Math.floor((width - 1) / 2));\n\tconst vertical = Math.min(Math.max(1, Math.floor(height / 4)), Math.floor((height - 1) / 2));\n\treturn {\n\t\ttop: vertical,\n\t\tright: horizontal,\n\t\tbottom: vertical,\n\t\tleft: horizontal\n\t};\n}\n/** Which source-image axes are sliced for a mode. */\nfunction slicedAxesFor(mode) {\n\treturn {\n\t\thorizontal: mode === \"nine\" || mode === \"three-horizontal\",\n\t\tvertical: mode === \"nine\" || mode === \"three-vertical\"\n\t};\n}\n/** Maximum inset on one side while preserving the opposite inset. */\nfunction maxInset(insets, side, width, height) {\n\tif (side === \"left\") return width - insets.right;\n\tif (side === \"right\") return width - insets.left;\n\tif (side === \"top\") return height - insets.bottom;\n\treturn height - insets.top;\n}\n/** Maximum overdraw on one side while preserving at least one core source pixel. */\nfunction maxOverdraw(overdraw, side, width, height) {\n\treturn maxInset(overdraw, side, width, height) - 1;\n}\n//#endregion\n//#region src/lib/core/plugins/slice.ts\n/** Built-in presets, always available; host config merges over them. */\nvar SLICE_BUILT_IN_PRESETS = { default: {\n\tformat: \"webp\",\n\tquality: 82\n} };\nfunction validateInsets(label, value) {\n\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) throw new Error(`Slice ${label} must be an object with top/right/bottom/left.`);\n\tconst record = value;\n\tconst sides = [\n\t\t\"top\",\n\t\t\"right\",\n\t\t\"bottom\",\n\t\t\"left\"\n\t];\n\tconst result = createZeroInsets();\n\tfor (const side of sides) {\n\t\tconst sideValue = record[side];\n\t\tif (typeof sideValue !== \"number\" || !Number.isInteger(sideValue) || sideValue < 0) throw new Error(`Slice ${label}.${side} must be a non-negative integer.`);\n\t\tresult[side] = sideValue;\n\t}\n\treturn result;\n}\nvar slicePlugin = {\n\ttype: \"slice\",\n\taccepts: [...RASTER_IMAGE_EXTENSIONS],\n\tdefaultParameters: () => ({\n\t\tmode: \"nine\",\n\t\tinsets: createZeroInsets(),\n\t\tpixelRatio: 1,\n\t\tpreset: \"default\"\n\t}),\n\tvalidateParameters(value) {\n\t\tif (typeof value !== \"object\" || value === null || Array.isArray(value)) throw new Error(\"Slice parameters must be an object.\");\n\t\tconst record = value;\n\t\tif (typeof record.mode !== \"string\" || !SLICE_MODES.includes(record.mode)) throw new Error(`Slice \"mode\" must be one of ${SLICE_MODES.map((mode) => `'${mode}'`).join(\" | \")}.`);\n\t\tconst insets = validateInsets(\"insets\", record.insets);\n\t\tif (typeof record.pixelRatio !== \"number\" || !Number.isInteger(record.pixelRatio) || record.pixelRatio < 1) throw new Error(\"Slice \\\"pixelRatio\\\" must be an integer ≥ 1.\");\n\t\tconst overdraw = record.overdraw === void 0 ? void 0 : validateInsets(\"overdraw\", record.overdraw);\n\t\tif (typeof record.preset !== \"string\" || record.preset.length === 0) throw new Error(\"Slice parameters need a non-empty string \\\"preset\\\".\");\n\t\treturn {\n\t\t\tmode: record.mode,\n\t\t\tinsets,\n\t\t\tpixelRatio: record.pixelRatio,\n\t\t\t...overdraw !== void 0 ? { overdraw } : {},\n\t\t\tpreset: record.preset\n\t\t};\n\t}\n};\n//#endregion\n//#region src/lib/core/ingest.ts\n/**\n* Ingestion helpers shared by every ingest surface: the editor's\n* drag & drop dialog and the CLI's `asset ingest` command both resolve a\n* dropped file name to its candidate asset types and propose an asset id the\n* same way — one implementation, in core.\n*/\n/** The built-in descriptors, in registration order (image before slice, video before chroma-key-video). */\nvar BUILT_IN_DESCRIPTORS = [\n\timagePlugin,\n\tslicePlugin,\n\tvideoPlugin,\n\tchromaKeyVideoPlugin,\n\taudioPlugin\n];\n/** Unique HTML file-picker accept extensions derived from descriptor claims. */\nfunction acceptedExtensions(descriptors = BUILT_IN_DESCRIPTORS) {\n\treturn [...new Set(descriptors.flatMap((descriptor) => descriptor.accepts))].sort().map((extension) => `.${extension}`);\n}\n/**\n* Types an ingested file of this extension could become — derived from the\n* descriptors' `accepts` claims. Raster images and video containers are\n* ambiguous (image/slice, video/chroma-key-video) — the editor dialog prompts\n* once, the CLI requires `--type`; audio is unambiguous.\n*/\nfunction typesForFileName(fileName, descriptors = BUILT_IN_DESCRIPTORS) {\n\tconst extension = fileName.slice(fileName.lastIndexOf(\".\") + 1).toLowerCase();\n\treturn descriptors.filter((descriptor) => descriptor.accepts.includes(extension)).map((descriptor) => descriptor.type);\n}\n//#endregion\nexport { manifestNameError as S, isAssetReference as _, createZeroInsets as a, validateAudioPreset as b, maxOverdraw as c, imagePlugin as d, validateImagePreset as f, videoPlugin as g, validateVideoPreset as h, slicePlugin as i, slicedAxesFor as l, VIDEO_BUILT_IN_PRESETS as m, typesForFileName as n, defaultInsetsForSize as o, chromaKeyVideoPlugin as p, SLICE_BUILT_IN_PRESETS as r, maxInset as s, acceptedExtensions as t, IMAGE_BUILT_IN_PRESETS as u, AUDIO_BUILT_IN_PRESETS as v, assetIdError as x, audioPlugin as y };\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js-l0sNRNKZ.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import './internal.js-BDBSzJId.js';
|
|
2
|
+
|
|
3
|
+
//#region node_modules/@sveltejs/kit/src/utils/array.js
|
|
4
|
+
/**
|
|
5
|
+
* Removes nullish values from an array.
|
|
6
|
+
*
|
|
7
|
+
* @template T
|
|
8
|
+
* @param {Array<T>} arr
|
|
9
|
+
*/
|
|
10
|
+
function compact(arr) {
|
|
11
|
+
return arr.filter(
|
|
12
|
+
/** @returns {val is NonNullable<T>} */
|
|
13
|
+
(val) => val != null
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region node_modules/@sveltejs/kit/src/runtime/telemetry/noop.js
|
|
18
|
+
/**
|
|
19
|
+
* @type {Span}
|
|
20
|
+
*/
|
|
21
|
+
var noop_span = {
|
|
22
|
+
spanContext() {
|
|
23
|
+
return noop_span_context;
|
|
24
|
+
},
|
|
25
|
+
setAttribute() {
|
|
26
|
+
return this;
|
|
27
|
+
},
|
|
28
|
+
setAttributes() {
|
|
29
|
+
return this;
|
|
30
|
+
},
|
|
31
|
+
addEvent() {
|
|
32
|
+
return this;
|
|
33
|
+
},
|
|
34
|
+
setStatus() {
|
|
35
|
+
return this;
|
|
36
|
+
},
|
|
37
|
+
updateName() {
|
|
38
|
+
return this;
|
|
39
|
+
},
|
|
40
|
+
end() {
|
|
41
|
+
return this;
|
|
42
|
+
},
|
|
43
|
+
isRecording() {
|
|
44
|
+
return false;
|
|
45
|
+
},
|
|
46
|
+
recordException() {
|
|
47
|
+
return this;
|
|
48
|
+
},
|
|
49
|
+
addLink() {
|
|
50
|
+
return this;
|
|
51
|
+
},
|
|
52
|
+
addLinks() {
|
|
53
|
+
return this;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* @type {SpanContext}
|
|
58
|
+
*/
|
|
59
|
+
var noop_span_context = {
|
|
60
|
+
traceId: "",
|
|
61
|
+
spanId: "",
|
|
62
|
+
traceFlags: 0
|
|
63
|
+
};
|
|
64
|
+
//#endregion
|
|
65
|
+
//#region node_modules/@sveltejs/kit/src/utils/hash.js
|
|
66
|
+
/**
|
|
67
|
+
* Hash using djb2
|
|
68
|
+
* @param {import('types').StrictBody[]} values
|
|
69
|
+
*/
|
|
70
|
+
function hash(...values) {
|
|
71
|
+
let hash = 5381;
|
|
72
|
+
for (const value of values) if (typeof value === "string") {
|
|
73
|
+
let i = value.length;
|
|
74
|
+
while (i) hash = hash * 33 ^ value.charCodeAt(--i);
|
|
75
|
+
} else if (ArrayBuffer.isView(value)) {
|
|
76
|
+
const buffer = new Uint8Array(value.buffer, value.byteOffset, value.byteLength);
|
|
77
|
+
let i = buffer.length;
|
|
78
|
+
while (i) hash = hash * 33 ^ buffer[--i];
|
|
79
|
+
} else throw new TypeError("value must be a string or TypedArray");
|
|
80
|
+
return (hash >>> 0).toString(36);
|
|
81
|
+
}
|
|
82
|
+
//#endregion
|
|
83
|
+
//#region node_modules/@sveltejs/kit/src/utils/exports.js
|
|
84
|
+
/**
|
|
85
|
+
* @param {Set<string>} expected
|
|
86
|
+
*/
|
|
87
|
+
function validator(expected) {
|
|
88
|
+
/**
|
|
89
|
+
* @param {any} module
|
|
90
|
+
* @param {string} [file]
|
|
91
|
+
*/
|
|
92
|
+
function validate(module, file) {
|
|
93
|
+
if (!module) return;
|
|
94
|
+
for (const key in module) {
|
|
95
|
+
if (key[0] === "_" || expected.has(key)) continue;
|
|
96
|
+
const values = [...expected.values()];
|
|
97
|
+
const hint = hint_for_supported_files(key, file?.slice(file.lastIndexOf("."))) ?? `valid exports are ${values.join(", ")}, or anything with a '_' prefix`;
|
|
98
|
+
throw new Error(`Invalid export '${key}'${file ? ` in ${file}` : ""} (${hint})`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return validate;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* @param {string} key
|
|
105
|
+
* @param {string} ext
|
|
106
|
+
* @returns {string | void}
|
|
107
|
+
*/
|
|
108
|
+
function hint_for_supported_files(key, ext = ".js") {
|
|
109
|
+
const supported_files = [];
|
|
110
|
+
if (valid_layout_exports.has(key)) supported_files.push(`+layout${ext}`);
|
|
111
|
+
if (valid_page_exports.has(key)) supported_files.push(`+page${ext}`);
|
|
112
|
+
if (valid_layout_server_exports.has(key)) supported_files.push(`+layout.server${ext}`);
|
|
113
|
+
if (valid_page_server_exports.has(key)) supported_files.push(`+page.server${ext}`);
|
|
114
|
+
if (valid_server_exports.has(key)) supported_files.push(`+server${ext}`);
|
|
115
|
+
if (supported_files.length > 0) return `'${key}' is a valid export in ${supported_files.slice(0, -1).join(", ")}${supported_files.length > 1 ? " or " : ""}${supported_files.at(-1)}`;
|
|
116
|
+
}
|
|
117
|
+
var valid_layout_exports = /* @__PURE__ */ new Set([
|
|
118
|
+
"load",
|
|
119
|
+
"prerender",
|
|
120
|
+
"csr",
|
|
121
|
+
"ssr",
|
|
122
|
+
"trailingSlash",
|
|
123
|
+
"config"
|
|
124
|
+
]);
|
|
125
|
+
var valid_page_exports = /* @__PURE__ */ new Set([...valid_layout_exports, "entries"]);
|
|
126
|
+
var valid_layout_server_exports = /* @__PURE__ */ new Set([...valid_layout_exports]);
|
|
127
|
+
var valid_page_server_exports = /* @__PURE__ */ new Set([
|
|
128
|
+
...valid_layout_server_exports,
|
|
129
|
+
"actions",
|
|
130
|
+
"entries"
|
|
131
|
+
]);
|
|
132
|
+
var valid_server_exports = /* @__PURE__ */ new Set([
|
|
133
|
+
"GET",
|
|
134
|
+
"POST",
|
|
135
|
+
"PATCH",
|
|
136
|
+
"PUT",
|
|
137
|
+
"DELETE",
|
|
138
|
+
"OPTIONS",
|
|
139
|
+
"HEAD",
|
|
140
|
+
"fallback",
|
|
141
|
+
"prerender",
|
|
142
|
+
"trailingSlash",
|
|
143
|
+
"config",
|
|
144
|
+
"entries"
|
|
145
|
+
]);
|
|
146
|
+
var validate_layout_exports = validator(valid_layout_exports);
|
|
147
|
+
var validate_page_exports = validator(valid_page_exports);
|
|
148
|
+
var validate_layout_server_exports = validator(valid_layout_server_exports);
|
|
149
|
+
var validate_page_server_exports = validator(valid_page_server_exports);
|
|
150
|
+
|
|
151
|
+
export { validate_layout_exports as a, validate_page_server_exports as b, validate_page_exports as c, compact as d, hash as h, noop_span as n, validate_layout_server_exports as v };
|
|
152
|
+
//# sourceMappingURL=exports.js-CLTzaOxn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exports.js-CLTzaOxn.js","sources":["../../../../.svelte-kit/output/server/chunks/exports.js"],"sourcesContent":["import \"./internal.js\";\n//#region node_modules/@sveltejs/kit/src/utils/array.js\n/**\n* Removes nullish values from an array.\n*\n* @template T\n* @param {Array<T>} arr\n*/\nfunction compact(arr) {\n\treturn arr.filter(\n\t\t/** @returns {val is NonNullable<T>} */\n\t\t(val) => val != null\n\t);\n}\n//#endregion\n//#region node_modules/@sveltejs/kit/src/runtime/telemetry/noop.js\n/**\n* @type {Span}\n*/\nvar noop_span = {\n\tspanContext() {\n\t\treturn noop_span_context;\n\t},\n\tsetAttribute() {\n\t\treturn this;\n\t},\n\tsetAttributes() {\n\t\treturn this;\n\t},\n\taddEvent() {\n\t\treturn this;\n\t},\n\tsetStatus() {\n\t\treturn this;\n\t},\n\tupdateName() {\n\t\treturn this;\n\t},\n\tend() {\n\t\treturn this;\n\t},\n\tisRecording() {\n\t\treturn false;\n\t},\n\trecordException() {\n\t\treturn this;\n\t},\n\taddLink() {\n\t\treturn this;\n\t},\n\taddLinks() {\n\t\treturn this;\n\t}\n};\n/**\n* @type {SpanContext}\n*/\nvar noop_span_context = {\n\ttraceId: \"\",\n\tspanId: \"\",\n\ttraceFlags: 0\n};\n//#endregion\n//#region node_modules/@sveltejs/kit/src/utils/hash.js\n/**\n* Hash using djb2\n* @param {import('types').StrictBody[]} values\n*/\nfunction hash(...values) {\n\tlet hash = 5381;\n\tfor (const value of values) if (typeof value === \"string\") {\n\t\tlet i = value.length;\n\t\twhile (i) hash = hash * 33 ^ value.charCodeAt(--i);\n\t} else if (ArrayBuffer.isView(value)) {\n\t\tconst buffer = new Uint8Array(value.buffer, value.byteOffset, value.byteLength);\n\t\tlet i = buffer.length;\n\t\twhile (i) hash = hash * 33 ^ buffer[--i];\n\t} else throw new TypeError(\"value must be a string or TypedArray\");\n\treturn (hash >>> 0).toString(36);\n}\n//#endregion\n//#region node_modules/@sveltejs/kit/src/utils/exports.js\n/**\n* @param {Set<string>} expected\n*/\nfunction validator(expected) {\n\t/**\n\t* @param {any} module\n\t* @param {string} [file]\n\t*/\n\tfunction validate(module, file) {\n\t\tif (!module) return;\n\t\tfor (const key in module) {\n\t\t\tif (key[0] === \"_\" || expected.has(key)) continue;\n\t\t\tconst values = [...expected.values()];\n\t\t\tconst hint = hint_for_supported_files(key, file?.slice(file.lastIndexOf(\".\"))) ?? `valid exports are ${values.join(\", \")}, or anything with a '_' prefix`;\n\t\t\tthrow new Error(`Invalid export '${key}'${file ? ` in ${file}` : \"\"} (${hint})`);\n\t\t}\n\t}\n\treturn validate;\n}\n/**\n* @param {string} key\n* @param {string} ext\n* @returns {string | void}\n*/\nfunction hint_for_supported_files(key, ext = \".js\") {\n\tconst supported_files = [];\n\tif (valid_layout_exports.has(key)) supported_files.push(`+layout${ext}`);\n\tif (valid_page_exports.has(key)) supported_files.push(`+page${ext}`);\n\tif (valid_layout_server_exports.has(key)) supported_files.push(`+layout.server${ext}`);\n\tif (valid_page_server_exports.has(key)) supported_files.push(`+page.server${ext}`);\n\tif (valid_server_exports.has(key)) supported_files.push(`+server${ext}`);\n\tif (supported_files.length > 0) return `'${key}' is a valid export in ${supported_files.slice(0, -1).join(\", \")}${supported_files.length > 1 ? \" or \" : \"\"}${supported_files.at(-1)}`;\n}\nvar valid_layout_exports = /* @__PURE__ */ new Set([\n\t\"load\",\n\t\"prerender\",\n\t\"csr\",\n\t\"ssr\",\n\t\"trailingSlash\",\n\t\"config\"\n]);\nvar valid_page_exports = /* @__PURE__ */ new Set([...valid_layout_exports, \"entries\"]);\nvar valid_layout_server_exports = /* @__PURE__ */ new Set([...valid_layout_exports]);\nvar valid_page_server_exports = /* @__PURE__ */ new Set([\n\t...valid_layout_server_exports,\n\t\"actions\",\n\t\"entries\"\n]);\nvar valid_server_exports = /* @__PURE__ */ new Set([\n\t\"GET\",\n\t\"POST\",\n\t\"PATCH\",\n\t\"PUT\",\n\t\"DELETE\",\n\t\"OPTIONS\",\n\t\"HEAD\",\n\t\"fallback\",\n\t\"prerender\",\n\t\"trailingSlash\",\n\t\"config\",\n\t\"entries\"\n]);\nvar validate_layout_exports = validator(valid_layout_exports);\nvar validate_page_exports = validator(valid_page_exports);\nvar validate_layout_server_exports = validator(valid_layout_server_exports);\nvar validate_page_server_exports = validator(valid_page_server_exports);\nvar validate_server_exports = validator(valid_server_exports);\n//#endregion\nexport { validate_server_exports as a, compact as c, validate_page_server_exports as i, validate_layout_server_exports as n, hash as o, validate_page_exports as r, noop_span as s, validate_layout_exports as t };\n"],"names":[],"mappings":"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"}
|