fundus 0.15.0 → 0.17.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 +158 -1
- package/build/client/_app/immutable/assets/2.X44Wyac-.css +1 -0
- package/build/client/_app/immutable/assets/2.X44Wyac-.css.br +0 -0
- package/build/client/_app/immutable/assets/2.X44Wyac-.css.gz +0 -0
- package/build/client/_app/immutable/assets/{3.C6xo25uI.css → 3.66PJT3JC.css} +1 -1
- package/build/client/_app/immutable/assets/3.66PJT3JC.css.br +0 -0
- package/build/client/_app/immutable/assets/3.66PJT3JC.css.gz +0 -0
- package/build/client/_app/immutable/assets/{AssetSourceMenu.IjDdjx3o.css → AssetSourceMenu.Buj2UxUg.css} +1 -1
- package/build/client/_app/immutable/assets/AssetSourceMenu.Buj2UxUg.css.br +0 -0
- package/build/client/_app/immutable/assets/AssetSourceMenu.Buj2UxUg.css.gz +0 -0
- package/build/client/_app/immutable/chunks/{VX-Uq_b9.js → 5fq8ySvR.js} +1 -1
- package/build/client/_app/immutable/chunks/5fq8ySvR.js.br +0 -0
- package/build/client/_app/immutable/chunks/5fq8ySvR.js.gz +0 -0
- package/build/client/_app/immutable/chunks/BcVZHIBD.js +1 -0
- package/build/client/_app/immutable/chunks/BcVZHIBD.js.br +0 -0
- package/build/client/_app/immutable/chunks/BcVZHIBD.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DXiUbZ9S.js +2 -0
- package/build/client/_app/immutable/chunks/DXiUbZ9S.js.br +0 -0
- package/build/client/_app/immutable/chunks/DXiUbZ9S.js.gz +0 -0
- package/build/client/_app/immutable/chunks/H5KnxQLQ.js +108 -0
- package/build/client/_app/immutable/chunks/H5KnxQLQ.js.br +0 -0
- package/build/client/_app/immutable/chunks/H5KnxQLQ.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{-8MKoIIe.js → jEVVu5G9.js} +1 -1
- package/build/client/_app/immutable/chunks/jEVVu5G9.js.br +0 -0
- package/build/client/_app/immutable/chunks/jEVVu5G9.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.CJpgt8H5.js → app.Z9n2k33I.js} +2 -2
- package/build/client/_app/immutable/entry/app.Z9n2k33I.js.br +0 -0
- package/build/client/_app/immutable/entry/app.Z9n2k33I.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DGo1uhI2.js +1 -0
- package/build/client/_app/immutable/entry/start.DGo1uhI2.js.br +0 -0
- package/build/client/_app/immutable/entry/start.DGo1uhI2.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.DiZpkhxP.js +1 -0
- package/build/client/_app/immutable/nodes/0.DiZpkhxP.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.DiZpkhxP.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.D6OhgXcC.js → 1.rgoSlmPu.js} +1 -1
- package/build/client/_app/immutable/nodes/1.rgoSlmPu.js.br +2 -0
- package/build/client/_app/immutable/nodes/1.rgoSlmPu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.Dzp3a3be.js +3 -0
- package/build/client/_app/immutable/nodes/2.Dzp3a3be.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.Dzp3a3be.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.mSsa2TDI.js +1 -0
- package/build/client/_app/immutable/nodes/3.mSsa2TDI.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.mSsa2TDI.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.4oRGPYr4.js +2 -0
- package/build/client/_app/immutable/nodes/4.4oRGPYr4.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.4oRGPYr4.js.gz +0 -0
- package/build/client/_app/version.json +1 -1
- package/build/client/_app/version.json.br +0 -0
- package/build/client/_app/version.json.gz +0 -0
- package/build/handler.js +8 -7
- package/build/handler.js.map +1 -1
- package/build/index.js +8 -7
- package/build/index.js.map +1 -1
- package/build/server/chunks/chunks/{context.js-CVuTSPjH.js → context.js-Dh0ibRIF.js} +818 -136
- package/build/server/chunks/chunks/context.js-Dh0ibRIF.js.map +1 -0
- package/build/server/chunks/chunks/{contract.js-itFN0Gon.js → contract.js-_LTMZBo2.js} +156 -58
- package/build/server/chunks/chunks/contract.js-_LTMZBo2.js.map +1 -0
- package/build/server/chunks/chunks/{core.js-CABVXpby.js → core.js-CTyKR4bu.js} +145 -156
- package/build/server/chunks/chunks/core.js-CTyKR4bu.js.map +1 -0
- package/build/server/chunks/chunks/{exports.js-VRV1_yEb.js → exports.js-gz2aNXzz.js} +2 -2
- package/build/server/chunks/chunks/{exports.js-VRV1_yEb.js.map → exports.js-gz2aNXzz.js.map} +1 -1
- package/build/server/chunks/chunks/{http.js-ChQRRKfZ.js → http.js-BiqUcAuu.js} +3 -2
- package/build/server/chunks/chunks/http.js-BiqUcAuu.js.map +1 -0
- package/build/server/chunks/chunks/{internal.js-qXxDe7VN.js → internal.js-DoH0cN5N.js} +5 -3
- package/build/server/chunks/chunks/internal.js-DoH0cN5N.js.map +1 -0
- package/build/server/chunks/chunks/internal2.js-BlXt2rfE.js.map +1 -1
- package/build/server/chunks/chunks/{manifest-membership.js-BnSECWpJ.js → manifest-membership.js-at1ixQdW.js} +10 -3
- package/build/server/chunks/chunks/manifest-membership.js-at1ixQdW.js.map +1 -0
- package/build/server/chunks/chunks/{raw-reconciliation.js-ZEOCk_jA.js → raw-reconciliation.js-CUH8IIJx.js} +3 -3
- package/build/server/chunks/chunks/raw-reconciliation.js-CUH8IIJx.js.map +1 -0
- package/build/server/chunks/chunks/{raw-reconciliation2.js-CscuoBC2.js → raw-reconciliation2.js-z4xl5zw2.js} +2 -2
- package/build/server/chunks/chunks/{raw-reconciliation2.js-CscuoBC2.js.map → raw-reconciliation2.js-z4xl5zw2.js.map} +1 -1
- package/build/server/chunks/chunks/{shared.js-DnEOHbgT.js → shared.js-CI-ZkPQn.js} +2 -2
- package/build/server/chunks/chunks/{shared.js-DnEOHbgT.js.map → shared.js-CI-ZkPQn.js.map} +1 -1
- package/build/server/chunks/chunks/{utils.js-lNH0hKSx.js → utils.js-gXYLxRG9.js} +3 -3
- package/build/server/chunks/chunks/{utils.js-lNH0hKSx.js.map → utils.js-gXYLxRG9.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/_...path_/{_server.ts.js-z988EDp2.js → _server.ts.js-CdDjuW0r.js} +6 -6
- package/build/server/chunks/entries/endpoints/api/_...path_/{_server.ts.js-z988EDp2.js.map → _server.ts.js-CdDjuW0r.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-C68ru6gS.js → _server.ts.js-OWM1eORG.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-C68ru6gS.js.map → _server.ts.js-OWM1eORG.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-C0tk6RFk.js → _server.ts.js-DoG-7ZpZ.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-C0tk6RFk.js.map → _server.ts.js-DoG-7ZpZ.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/{_server.ts.js-I03oZuo8.js → _server.ts.js-CAWjVeGd.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/{_server.ts.js-I03oZuo8.js.map → _server.ts.js-CAWjVeGd.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/retag/_server.ts.js-CqS4aALY.js +38 -0
- package/build/server/chunks/entries/endpoints/api/assets/_id_/retag/_server.ts.js-CqS4aALY.js.map +1 -0
- package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-BsQB8YDq.js → _server.ts.js-Bo_EsYXJ.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-BsQB8YDq.js.map → _server.ts.js-Bo_EsYXJ.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-CJuFE6Fb.js → _server.ts.js-DW4w0XAr.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-CJuFE6Fb.js.map → _server.ts.js-DW4w0XAr.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-DuOZRRiA.js → _server.ts.js-_MiNPnSy.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-DuOZRRiA.js.map → _server.ts.js-_MiNPnSy.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-DGzYpQbv.js → _server.ts.js-DwbrQnBc.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-DGzYpQbv.js.map → _server.ts.js-DwbrQnBc.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-B045QoCA.js → _server.ts.js-CEnHQf3b.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-B045QoCA.js.map → _server.ts.js-CEnHQf3b.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/imports/{_server.ts.js-HUkVdz19.js → _server.ts.js-BZDuJZtF.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/imports/{_server.ts.js-HUkVdz19.js.map → _server.ts.js-BZDuJZtF.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-ry509mom.js → _server.ts.js-DRgdpKKd.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-ry509mom.js.map → _server.ts.js-DRgdpKKd.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-DU0J7U25.js → _server.ts.js-CP5QyIhz.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-DU0J7U25.js.map → _server.ts.js-CP5QyIhz.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-AZIV2PIn.js → _server.ts.js-BKEvt065.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-AZIV2PIn.js.map → _server.ts.js-BKEvt065.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-CDL0hCfM.js → _server.ts.js-C_zihkDS.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-CDL0hCfM.js.map → _server.ts.js-C_zihkDS.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-B13c17fq.js → _server.ts.js-watkBmy6.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-B13c17fq.js.map → _server.ts.js-watkBmy6.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-BCxjyAGC.js → _server.ts.js-YtumLIou.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-BCxjyAGC.js.map → _server.ts.js-YtumLIou.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/reveal/{_server.ts.js-BveeMZc2.js → _server.ts.js-Dkouuu-M.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/reveal/{_server.ts.js-BveeMZc2.js.map → _server.ts.js-Dkouuu-M.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-BZjTd9a0.js → _server.ts.js-DwsEQeuf.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-BZjTd9a0.js.map → _server.ts.js-DwsEQeuf.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/usage/{_server.ts.js-BbTfPvC9.js → _server.ts.js-CdQxfhV3.js} +9 -7
- package/build/server/chunks/entries/endpoints/api/usage/{_server.ts.js-BbTfPvC9.js.map → _server.ts.js-CdQxfhV3.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/files/_...path_/{_server.ts.js-8VPJMLBk.js → _server.ts.js-DDdMocWj.js} +6 -6
- package/build/server/chunks/entries/endpoints/files/_...path_/{_server.ts.js-8VPJMLBk.js.map → _server.ts.js-DDdMocWj.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-BqR2J2sB.js → _server.ts.js-DbzjbH32.js} +9 -7
- package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-BqR2J2sB.js.map → _server.ts.js-DbzjbH32.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-DbA28dCY.js → _server.ts.js-K_JbXZsU.js} +9 -7
- package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-DbA28dCY.js.map → _server.ts.js-K_JbXZsU.js.map} +1 -1
- package/build/server/chunks/entries/{hooks.server.js-9PBc_3Jh.js → hooks.server.js-DgZAVFbQ.js} +8 -6
- package/build/server/chunks/entries/{hooks.server.js-9PBc_3Jh.js.map → hooks.server.js-DgZAVFbQ.js.map} +1 -1
- package/build/server/chunks/{handler-BHt7eOOX.js → handler-CFkKak8t.js} +5 -5
- package/build/server/chunks/{handler-BHt7eOOX.js.map → handler-CFkKak8t.js.map} +1 -1
- package/build/server/chunks/{index.js-DcVaL-Ja.js → index.js-B1IroJH5.js} +5 -5
- package/build/server/chunks/{index.js-DcVaL-Ja.js.map → index.js-B1IroJH5.js.map} +1 -1
- package/build/server/chunks/{manifest.js-DgjSU4wg.js → manifest.js-DNDBsrEU.js} +36 -29
- package/build/server/chunks/manifest.js-DNDBsrEU.js.map +1 -0
- package/build/server/chunks/nodes/{0.js-BgTB-_Zt.js → 0.js-CZ3mZUZl.js} +2 -2
- package/build/server/chunks/nodes/{0.js-BgTB-_Zt.js.map → 0.js-CZ3mZUZl.js.map} +1 -1
- package/build/server/chunks/nodes/1.js-BmDzLKxV.js +7 -0
- package/build/server/chunks/nodes/{1.js-DNabcIPP.js.map → 1.js-BmDzLKxV.js.map} +1 -1
- package/build/server/chunks/nodes/2.js-Dirm-bY-.js +7 -0
- package/build/server/chunks/nodes/2.js-Dirm-bY-.js.map +1 -0
- package/build/server/chunks/nodes/3.js-DOqHmSWt.js +7 -0
- package/build/server/chunks/nodes/3.js-DOqHmSWt.js.map +1 -0
- package/build/server/chunks/nodes/4.js-C8pmF8IP.js +7 -0
- package/build/server/chunks/nodes/{4.js-BE7ZG9vA.js.map → 4.js-C8pmF8IP.js.map} +1 -1
- package/dist/config.d.ts +3 -3
- package/dist/config.js +2 -2
- package/dist/core/api-types.d.ts +24 -3
- package/dist/core/config.d.ts +84 -0
- package/dist/core/config.js +9 -0
- package/dist/core/index.d.ts +10 -5
- package/dist/core/index.js +5 -2
- package/dist/core/ingest.d.ts +1 -6
- package/dist/core/ingest.js +4 -21
- package/dist/core/library-validation.d.ts +13 -0
- package/dist/core/library-validation.js +48 -0
- package/dist/core/library.d.ts +19 -0
- package/dist/core/library.js +4 -4
- package/dist/core/manifest-membership.d.ts +2 -2
- package/dist/core/package-declaration.d.ts +43 -0
- package/dist/core/package-declaration.js +80 -0
- package/dist/core/package-merge.d.ts +65 -0
- package/dist/core/package-merge.js +173 -0
- package/dist/core/propose-asset-id.d.ts +10 -0
- package/dist/core/propose-asset-id.js +25 -0
- package/dist/core/reference-graph.d.ts +3 -3
- package/dist/server/build.js +26 -11
- package/dist/server/check.d.ts +13 -3
- package/dist/server/check.js +112 -24
- package/dist/server/cli-commands.d.ts +2 -2
- package/dist/server/cli-commands.js +213 -29
- package/dist/server/codegen.d.ts +3 -1
- package/dist/server/codegen.js +18 -0
- package/dist/server/config-loader.d.ts +36 -1
- package/dist/server/config-loader.js +190 -4
- package/dist/server/http.js +1 -0
- package/dist/server/importers/figma.d.ts +26 -3
- package/dist/server/importers/figma.js +114 -1
- package/dist/server/library-store.d.ts +20 -1
- package/dist/server/library-store.js +121 -60
- package/dist/server/operations.d.ts +12 -0
- package/dist/server/operations.js +283 -48
- package/package.json +1 -1
- package/build/client/_app/immutable/assets/2.C-1MfvLQ.css +0 -1
- package/build/client/_app/immutable/assets/2.C-1MfvLQ.css.br +0 -0
- package/build/client/_app/immutable/assets/2.C-1MfvLQ.css.gz +0 -0
- package/build/client/_app/immutable/assets/3.C6xo25uI.css.br +0 -0
- package/build/client/_app/immutable/assets/3.C6xo25uI.css.gz +0 -0
- package/build/client/_app/immutable/assets/AssetSourceMenu.IjDdjx3o.css.br +0 -0
- package/build/client/_app/immutable/assets/AssetSourceMenu.IjDdjx3o.css.gz +0 -0
- package/build/client/_app/immutable/chunks/-8MKoIIe.js.br +0 -0
- package/build/client/_app/immutable/chunks/-8MKoIIe.js.gz +0 -0
- package/build/client/_app/immutable/chunks/D1wFzWdi.js +0 -108
- package/build/client/_app/immutable/chunks/D1wFzWdi.js.br +0 -0
- package/build/client/_app/immutable/chunks/D1wFzWdi.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DmQb0SN8.js +0 -2
- package/build/client/_app/immutable/chunks/DmQb0SN8.js.br +0 -0
- package/build/client/_app/immutable/chunks/DmQb0SN8.js.gz +0 -0
- package/build/client/_app/immutable/chunks/N1X6Qzcl.js +0 -1
- package/build/client/_app/immutable/chunks/N1X6Qzcl.js.br +0 -0
- package/build/client/_app/immutable/chunks/N1X6Qzcl.js.gz +0 -0
- package/build/client/_app/immutable/chunks/VX-Uq_b9.js.br +0 -1
- package/build/client/_app/immutable/chunks/VX-Uq_b9.js.gz +0 -0
- package/build/client/_app/immutable/entry/app.CJpgt8H5.js.br +0 -0
- package/build/client/_app/immutable/entry/app.CJpgt8H5.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.DToPJitz.js +0 -1
- package/build/client/_app/immutable/entry/start.DToPJitz.js.br +0 -1
- package/build/client/_app/immutable/entry/start.DToPJitz.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.Co4Hh8k6.js +0 -1
- package/build/client/_app/immutable/nodes/0.Co4Hh8k6.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.Co4Hh8k6.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.D6OhgXcC.js.br +0 -3
- package/build/client/_app/immutable/nodes/1.D6OhgXcC.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.sBDjyIQu.js +0 -3
- package/build/client/_app/immutable/nodes/2.sBDjyIQu.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.sBDjyIQu.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.DDt73kMC.js +0 -1
- package/build/client/_app/immutable/nodes/3.DDt73kMC.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.DDt73kMC.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.FsXXhVSP.js +0 -2
- package/build/client/_app/immutable/nodes/4.FsXXhVSP.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.FsXXhVSP.js.gz +0 -0
- package/build/server/chunks/chunks/context.js-CVuTSPjH.js.map +0 -1
- package/build/server/chunks/chunks/contract.js-itFN0Gon.js.map +0 -1
- package/build/server/chunks/chunks/core.js-CABVXpby.js.map +0 -1
- package/build/server/chunks/chunks/http.js-ChQRRKfZ.js.map +0 -1
- package/build/server/chunks/chunks/internal.js-qXxDe7VN.js.map +0 -1
- package/build/server/chunks/chunks/manifest-membership.js-BnSECWpJ.js.map +0 -1
- package/build/server/chunks/chunks/raw-reconciliation.js-ZEOCk_jA.js.map +0 -1
- package/build/server/chunks/manifest.js-DgjSU4wg.js.map +0 -1
- package/build/server/chunks/nodes/1.js-DNabcIPP.js +0 -7
- package/build/server/chunks/nodes/2.js-CcVBvLSR.js +0 -7
- package/build/server/chunks/nodes/2.js-CcVBvLSR.js.map +0 -1
- package/build/server/chunks/nodes/3.js-DreG5rig.js +0 -7
- package/build/server/chunks/nodes/3.js-DreG5rig.js.map +0 -1
- package/build/server/chunks/nodes/4.js-BE7ZG9vA.js +0 -7
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { a as plugins, b as audioPlugin, d as chromaKeyVideoPlugin, v as videoPlugin, s as slicePlugin, e as imagePlugin, n as normalizeFolderPath, g as canonicalizeParameters, h as folderOfRawPath, j as rawFileNameOfPath, f as folderPathError, k as parentFolderPath, l as folderNameError, m as joinFolderPath, o as folderNameOf, q as isFolderOrDescendant, t as replaceFolderPrefix, u as portableFolderPathKey, c as compareCodeUnits, w as isCustomFfmpegVideoPreset, x as processedSliceInsets, y as defaultInsetsForSize, F as FOLDER_SENTINEL, r as rawFilePathError, z as materializeFfmpegCommand, A as slicedAxesFor, B as isAssetReference, C as validateVideoPreset, V as VIDEO_BUILT_IN_PRESETS, D as validateAudioPreset, E as AUDIO_BUILT_IN_PRESETS, G as validateImagePreset, I as IMAGE_BUILT_IN_PRESETS, S as SLICE_BUILT_IN_PRESETS } from './core.js-
|
|
2
|
-
import { a as assetIdError,
|
|
1
|
+
import { a as plugins, b as audioPlugin, d as chromaKeyVideoPlugin, v as videoPlugin, s as slicePlugin, e as imagePlugin, n as normalizeFolderPath, g as canonicalizeParameters, h as folderOfRawPath, j as rawFileNameOfPath, f as folderPathError, k as parentFolderPath, l as folderNameError, m as joinFolderPath, o as folderNameOf, q as isFolderOrDescendant, t as replaceFolderPrefix, u as portableFolderPathKey, c as compareCodeUnits, w as isCustomFfmpegVideoPreset, x as processedSliceInsets, y as defaultInsetsForSize, F as FOLDER_SENTINEL, r as rawFilePathError, z as materializeFfmpegCommand, A as slicedAxesFor, B as isAssetReference, C as validateVideoPreset, V as VIDEO_BUILT_IN_PRESETS, D as validateAudioPreset, E as AUDIO_BUILT_IN_PRESETS, G as validateImagePreset, I as IMAGE_BUILT_IN_PRESETS, S as SLICE_BUILT_IN_PRESETS } from './core.js-CTyKR4bu.js';
|
|
2
|
+
import { a as assetIdError, c as collectAllReferences, b as computeLibraryMembership, r as referenceErrors, m as manifestNameError, d as allDeliveredAssetIds, t as topologicalReferenceOrder } from './manifest-membership.js-at1ixQdW.js';
|
|
3
3
|
import { m as manifestColorError, a as manifestEmojiError } from './manifest-appearance.js-DTk355LQ.js';
|
|
4
|
-
import { v as verifyStableRawFile } from './raw-reconciliation2.js-
|
|
4
|
+
import { v as verifyStableRawFile } from './raw-reconciliation2.js-z4xl5zw2.js';
|
|
5
5
|
import { join, extname, dirname, isAbsolute, basename, resolve } from 'node:path';
|
|
6
6
|
import { existsSync } from 'node:fs';
|
|
7
7
|
import { readFile, mkdir, writeFile, rename, unlink, rm, stat, readdir, mkdtemp } from 'node:fs/promises';
|
|
@@ -148,6 +148,49 @@ function serializeLibrary(library) {
|
|
|
148
148
|
}), null, " ")}\n`;
|
|
149
149
|
}
|
|
150
150
|
//#endregion
|
|
151
|
+
//#region src/lib/core/library-validation.ts
|
|
152
|
+
function flatLibraryIssues(library, plugins) {
|
|
153
|
+
const issues = [];
|
|
154
|
+
for (const [name, record] of Object.entries(library.manifests)) {
|
|
155
|
+
const nameProblem = manifestNameError(name);
|
|
156
|
+
if (nameProblem) issues.push({ message: nameProblem });
|
|
157
|
+
if (record.color !== void 0) {
|
|
158
|
+
const colorProblem = manifestColorError(record.color);
|
|
159
|
+
if (colorProblem) issues.push({ message: `Manifest "${name}": ${colorProblem}` });
|
|
160
|
+
}
|
|
161
|
+
if (record.emoji !== void 0) {
|
|
162
|
+
const emojiProblem = manifestEmojiError(record.emoji);
|
|
163
|
+
if (emojiProblem) issues.push({ message: `Manifest "${name}": ${emojiProblem}` });
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
for (const [assetId, record] of Object.entries(library.assets)) {
|
|
167
|
+
const idProblem = assetIdError(assetId);
|
|
168
|
+
if (idProblem) issues.push({
|
|
169
|
+
assetId,
|
|
170
|
+
message: idProblem
|
|
171
|
+
});
|
|
172
|
+
const plugin = plugins[record.type];
|
|
173
|
+
if (!plugin) issues.push({
|
|
174
|
+
assetId,
|
|
175
|
+
message: `Unknown asset type "${record.type}".`
|
|
176
|
+
});
|
|
177
|
+
else try {
|
|
178
|
+
plugin.validateParameters(record.parameters);
|
|
179
|
+
} catch (cause) {
|
|
180
|
+
issues.push({
|
|
181
|
+
assetId,
|
|
182
|
+
message: `Invalid parameters: ${cause instanceof Error ? cause.message : String(cause)}`
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
for (const manifest of record.manifests) if (!library.manifests[manifest]) issues.push({
|
|
186
|
+
assetId,
|
|
187
|
+
message: `Unknown manifest "${manifest}".`
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
issues.push(...referenceErrors(library, collectAllReferences(library, plugins)));
|
|
191
|
+
return issues;
|
|
192
|
+
}
|
|
193
|
+
//#endregion
|
|
151
194
|
//#region src/lib/server/processing/ffmpeg.ts
|
|
152
195
|
/**
|
|
153
196
|
* The ffmpeg/ffprobe toolchain layer: binary resolution (bundled `-static`
|
|
@@ -871,6 +914,18 @@ function kebabCaseFromCamel(name) {
|
|
|
871
914
|
function manifestModuleFileName(manifestName) {
|
|
872
915
|
return `${kebabCaseFromCamel(manifestName)}.generated.ts`;
|
|
873
916
|
}
|
|
917
|
+
/** Two manifest names that would generate the same kebab-case module file. */
|
|
918
|
+
function manifestModuleCollisionIssues(manifests) {
|
|
919
|
+
const issues = [];
|
|
920
|
+
const namesByModuleFile = /* @__PURE__ */ new Map();
|
|
921
|
+
for (const name of Object.keys(manifests)) {
|
|
922
|
+
const fileName = manifestModuleFileName(name);
|
|
923
|
+
const existingName = namesByModuleFile.get(fileName);
|
|
924
|
+
if (existingName !== void 0) issues.push({ message: `Manifests "${existingName}" and "${name}" would both generate "${fileName}".` });
|
|
925
|
+
else namesByModuleFile.set(fileName, name);
|
|
926
|
+
}
|
|
927
|
+
return issues;
|
|
928
|
+
}
|
|
874
929
|
/**
|
|
875
930
|
* Build the entry data codegen emits for one asset — delegated to
|
|
876
931
|
* the owning server plugin's `buildManifestEntry`. Reference fields
|
|
@@ -1303,7 +1358,8 @@ var LibraryStore = class {
|
|
|
1303
1358
|
const folder = options.folder === void 0 ? "" : normalizeFolderPath(options.folder);
|
|
1304
1359
|
this.#requireFolder(library, folder);
|
|
1305
1360
|
const manifests = [...new Set(options.manifests ?? [])].sort();
|
|
1306
|
-
|
|
1361
|
+
const validManifests = this.#validManifestNames(library);
|
|
1362
|
+
for (const manifest of manifests) if (!validManifests.has(manifest)) throw new Error(`Unknown manifest "${manifest}".`);
|
|
1307
1363
|
const rawDirectory = join(this.#config.rawDir, folder);
|
|
1308
1364
|
await mkdir(rawDirectory, { recursive: true });
|
|
1309
1365
|
const storedName = this.#uniqueRawName(sanitizeFileName(options.fileName), folder);
|
|
@@ -1313,12 +1369,16 @@ var LibraryStore = class {
|
|
|
1313
1369
|
let installed = false;
|
|
1314
1370
|
try {
|
|
1315
1371
|
await writeFile(temporaryPath, options.bytes);
|
|
1316
|
-
let parameters
|
|
1317
|
-
if (
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
parameters
|
|
1321
|
-
|
|
1372
|
+
let parameters;
|
|
1373
|
+
if (options.parametersOverride !== void 0) parameters = options.parametersOverride;
|
|
1374
|
+
else {
|
|
1375
|
+
parameters = plugin.descriptor.validateParameters(plugin.descriptor.defaultParameters(plugin.pluginConfig(this.#config)));
|
|
1376
|
+
if (prepareParameters) parameters = plugin.descriptor.validateParameters(await prepareParameters({
|
|
1377
|
+
rawPath: temporaryPath,
|
|
1378
|
+
rawFileName: storedName,
|
|
1379
|
+
parameters
|
|
1380
|
+
}));
|
|
1381
|
+
}
|
|
1322
1382
|
const record = {
|
|
1323
1383
|
type: options.type,
|
|
1324
1384
|
raw: storedPath,
|
|
@@ -1364,7 +1424,7 @@ var LibraryStore = class {
|
|
|
1364
1424
|
if (sourceOptions) {
|
|
1365
1425
|
const currentSource = record.importSource ? canonicalizeParameters(record.importSource) : null;
|
|
1366
1426
|
if (record.raw !== sourceOptions.expected.raw || record.rawHash !== sourceOptions.expected.rawHash || record.type !== sourceOptions.expected.type || currentSource !== sourceOptions.expected.canonicalSource) throw new Error("stale-import");
|
|
1367
|
-
const { verifyStableRawFile } = await import('./raw-reconciliation.js-
|
|
1427
|
+
const { verifyStableRawFile } = await import('./raw-reconciliation.js-CUH8IIJx.js');
|
|
1368
1428
|
try {
|
|
1369
1429
|
await verifyStableRawFile(join(this.#config.rawDir, record.raw), sourceOptions.expected.rawHash);
|
|
1370
1430
|
} catch {
|
|
@@ -1430,7 +1490,7 @@ var LibraryStore = class {
|
|
|
1430
1490
|
const record = this.#requireAsset(library, id);
|
|
1431
1491
|
if (record.raw !== expected.raw || record.rawHash !== expected.rawHash || record.type !== expected.type || !record.importSource || canonicalizeParameters(record.importSource) !== expected.canonicalSource) throw new Error("stale-import");
|
|
1432
1492
|
const absolutePath = join(this.#config.rawDir, record.raw);
|
|
1433
|
-
const { verifyStableRawFile } = await import('./raw-reconciliation.js-
|
|
1493
|
+
const { verifyStableRawFile } = await import('./raw-reconciliation.js-CUH8IIJx.js');
|
|
1434
1494
|
try {
|
|
1435
1495
|
await verifyStableRawFile(absolutePath, expected.rawHash);
|
|
1436
1496
|
} catch {
|
|
@@ -1467,6 +1527,68 @@ var LibraryStore = class {
|
|
|
1467
1527
|
return library;
|
|
1468
1528
|
});
|
|
1469
1529
|
}
|
|
1530
|
+
/**
|
|
1531
|
+
* CAS-protected raw swap for a Figma tag source that may also rename the
|
|
1532
|
+
* asset. In tag mode the tag IS the id, so changing the tag moves the library
|
|
1533
|
+
* key. The raw swap and the (optional) key move happen in ONE queued critical
|
|
1534
|
+
* section and ONE `write`, so no inconsistent intermediate state is ever
|
|
1535
|
+
* persisted; on any error the record and raw file are rolled back and the key
|
|
1536
|
+
* move (in-memory only until `write`) is discarded.
|
|
1537
|
+
*/
|
|
1538
|
+
async repointTagAsset(oldId, newId, bytes, expected, nextSource, updateParameters) {
|
|
1539
|
+
return this.#enqueue(async () => {
|
|
1540
|
+
const library = await this.read();
|
|
1541
|
+
const record = this.#requireAsset(library, oldId);
|
|
1542
|
+
if (record.raw !== expected.raw || record.rawHash !== expected.rawHash || record.type !== expected.type || !record.importSource || canonicalizeParameters(record.importSource) !== expected.canonicalSource) throw new Error("stale-import");
|
|
1543
|
+
const renamed = newId !== oldId;
|
|
1544
|
+
if (renamed && Object.hasOwn(library.assets, newId)) throw new Error(`An asset with id "${newId}" already exists.`);
|
|
1545
|
+
const absolutePath = join(this.#config.rawDir, record.raw);
|
|
1546
|
+
const { verifyStableRawFile } = await import('./raw-reconciliation.js-CUH8IIJx.js');
|
|
1547
|
+
try {
|
|
1548
|
+
await verifyStableRawFile(absolutePath, expected.rawHash);
|
|
1549
|
+
} catch {
|
|
1550
|
+
throw new Error("stale-import");
|
|
1551
|
+
}
|
|
1552
|
+
const token = crypto.randomUUID();
|
|
1553
|
+
const temporaryPath = `${absolutePath}.fundus-retag-${token}.tmp`;
|
|
1554
|
+
const backupPath = `${absolutePath}.fundus-retag-${token}`;
|
|
1555
|
+
const previousHash = record.rawHash;
|
|
1556
|
+
const previousSource = structuredClone(record.importSource);
|
|
1557
|
+
const previousParameters = structuredClone(record.parameters);
|
|
1558
|
+
let staged = false;
|
|
1559
|
+
let installed = false;
|
|
1560
|
+
try {
|
|
1561
|
+
await writeFile(temporaryPath, bytes);
|
|
1562
|
+
await rename(absolutePath, backupPath);
|
|
1563
|
+
staged = true;
|
|
1564
|
+
await rename(temporaryPath, absolutePath);
|
|
1565
|
+
installed = true;
|
|
1566
|
+
record.rawHash = sha256Hex(bytes);
|
|
1567
|
+
if (nextSource) record.importSource = structuredClone(nextSource);
|
|
1568
|
+
if (updateParameters) record.parameters = updateParameters(record.parameters);
|
|
1569
|
+
if (renamed) {
|
|
1570
|
+
delete library.assets[oldId];
|
|
1571
|
+
library.assets[newId] = record;
|
|
1572
|
+
}
|
|
1573
|
+
await this.write(library);
|
|
1574
|
+
} catch (cause) {
|
|
1575
|
+
record.rawHash = previousHash;
|
|
1576
|
+
record.importSource = previousSource;
|
|
1577
|
+
record.parameters = previousParameters;
|
|
1578
|
+
if (renamed) {
|
|
1579
|
+
delete library.assets[newId];
|
|
1580
|
+
library.assets[oldId] = record;
|
|
1581
|
+
}
|
|
1582
|
+
if (installed) await unlink(absolutePath).catch(() => {});
|
|
1583
|
+
if (staged) await rename(backupPath, absolutePath);
|
|
1584
|
+
await unlink(temporaryPath).catch(() => {});
|
|
1585
|
+
throw cause;
|
|
1586
|
+
}
|
|
1587
|
+
if (staged) await unlink(backupPath).catch(() => {});
|
|
1588
|
+
if (renamed) await this.#deleteProxiesOf(oldId);
|
|
1589
|
+
return library;
|
|
1590
|
+
});
|
|
1591
|
+
}
|
|
1470
1592
|
/** Replace an asset's parameters (validated by the owning plugin). */
|
|
1471
1593
|
async updateParameters(id, parameters) {
|
|
1472
1594
|
return this.#enqueue(() => this.#updateParameters(id, parameters));
|
|
@@ -1486,7 +1608,8 @@ var LibraryStore = class {
|
|
|
1486
1608
|
const library = await this.read();
|
|
1487
1609
|
const record = this.#requireAsset(library, id);
|
|
1488
1610
|
const unique = [...new Set(manifests)];
|
|
1489
|
-
|
|
1611
|
+
const validManifests = this.#validManifestNames(library);
|
|
1612
|
+
for (const name of unique) if (!validManifests.has(name)) throw new Error(`Unknown manifest "${name}".`);
|
|
1490
1613
|
record.manifests = unique.sort();
|
|
1491
1614
|
await this.write(library);
|
|
1492
1615
|
return library;
|
|
@@ -1857,7 +1980,8 @@ var LibraryStore = class {
|
|
|
1857
1980
|
* type, dangling raw pointer, invalid parameters, unknown manifest names,
|
|
1858
1981
|
* and reference errors (dangling target, type mismatch, cycles).
|
|
1859
1982
|
*/
|
|
1860
|
-
async validate(library) {
|
|
1983
|
+
async validate(library, options = {}) {
|
|
1984
|
+
const flatSpace = options.flatSpace ?? true;
|
|
1861
1985
|
const issues = [];
|
|
1862
1986
|
const folderKeys = /* @__PURE__ */ new Map();
|
|
1863
1987
|
for (const folder of library.folders) {
|
|
@@ -1872,44 +1996,7 @@ var LibraryStore = class {
|
|
|
1872
1996
|
if (parent !== "" && !library.folders.includes(parent)) issues.push({ message: `Folder "${folder}" has missing parent "${parent}".` });
|
|
1873
1997
|
for (const root of [this.#config.rawDir, this.#config.proxyDir]) if (!existsSync(join(root, folder, ".gitkeep"))) issues.push({ message: `Folder "${folder}" is not mirrored with a .gitkeep in ${root}.` });
|
|
1874
1998
|
}
|
|
1875
|
-
for (const [name, record] of Object.entries(library.manifests)) {
|
|
1876
|
-
const nameProblem = manifestNameError(name);
|
|
1877
|
-
if (nameProblem) issues.push({ message: nameProblem });
|
|
1878
|
-
if (record.color !== void 0) {
|
|
1879
|
-
const colorProblem = manifestColorError(record.color);
|
|
1880
|
-
if (colorProblem) issues.push({ message: `Manifest "${name}": ${colorProblem}` });
|
|
1881
|
-
}
|
|
1882
|
-
if (record.emoji !== void 0) {
|
|
1883
|
-
const emojiProblem = manifestEmojiError(record.emoji);
|
|
1884
|
-
if (emojiProblem) issues.push({ message: `Manifest "${name}": ${emojiProblem}` });
|
|
1885
|
-
}
|
|
1886
|
-
}
|
|
1887
|
-
const namesByModuleFile = /* @__PURE__ */ new Map();
|
|
1888
|
-
for (const name of Object.keys(library.manifests)) {
|
|
1889
|
-
const fileName = manifestModuleFileName(name);
|
|
1890
|
-
const existingName = namesByModuleFile.get(fileName);
|
|
1891
|
-
if (existingName !== void 0) issues.push({ message: `Manifests "${existingName}" and "${name}" would both generate "${fileName}".` });
|
|
1892
|
-
else namesByModuleFile.set(fileName, name);
|
|
1893
|
-
}
|
|
1894
1999
|
for (const [assetId, record] of Object.entries(library.assets)) {
|
|
1895
|
-
const idProblem = assetIdError(assetId);
|
|
1896
|
-
if (idProblem) issues.push({
|
|
1897
|
-
assetId,
|
|
1898
|
-
message: idProblem
|
|
1899
|
-
});
|
|
1900
|
-
const plugin = this.#registry[record.type];
|
|
1901
|
-
if (!plugin) issues.push({
|
|
1902
|
-
assetId,
|
|
1903
|
-
message: `Unknown asset type "${record.type}".`
|
|
1904
|
-
});
|
|
1905
|
-
else try {
|
|
1906
|
-
plugin.descriptor.validateParameters(record.parameters);
|
|
1907
|
-
} catch (cause) {
|
|
1908
|
-
issues.push({
|
|
1909
|
-
assetId,
|
|
1910
|
-
message: `Invalid parameters: ${cause instanceof Error ? cause.message : String(cause)}`
|
|
1911
|
-
});
|
|
1912
|
-
}
|
|
1913
2000
|
try {
|
|
1914
2001
|
assertSafeRelativeFilePath(record.raw);
|
|
1915
2002
|
} catch (cause) {
|
|
@@ -1927,12 +2014,11 @@ var LibraryStore = class {
|
|
|
1927
2014
|
assetId,
|
|
1928
2015
|
message: `Raw file "${record.raw}" is missing from the raw directory.`
|
|
1929
2016
|
});
|
|
1930
|
-
for (const manifest of record.manifests) if (!library.manifests[manifest]) issues.push({
|
|
1931
|
-
assetId,
|
|
1932
|
-
message: `Unknown manifest "${manifest}".`
|
|
1933
|
-
});
|
|
1934
2017
|
}
|
|
1935
|
-
|
|
2018
|
+
if (flatSpace) {
|
|
2019
|
+
issues.push(...flatLibraryIssues(library, descriptorsByType(this.#registry)));
|
|
2020
|
+
issues.push(...manifestModuleCollisionIssues(library.manifests));
|
|
2021
|
+
}
|
|
1936
2022
|
return issues;
|
|
1937
2023
|
}
|
|
1938
2024
|
async #deleteProxiesOf(assetId) {
|
|
@@ -1946,6 +2032,18 @@ var LibraryStore = class {
|
|
|
1946
2032
|
if (!Object.hasOwn(library.assets, id)) throw new Error(`Unknown asset "${id}".`);
|
|
1947
2033
|
return library.assets[id];
|
|
1948
2034
|
}
|
|
2035
|
+
/**
|
|
2036
|
+
* Valid manifest names for asset membership: the host library's own manifests
|
|
2037
|
+
* plus any a configured Package introduces. The effective (merged) library
|
|
2038
|
+
* unions both, so a host asset (or slot fill) may be placed into a
|
|
2039
|
+
* Package-introduced manifest — validating against the host manifests alone
|
|
2040
|
+
* would wrongly reject that placement.
|
|
2041
|
+
*/
|
|
2042
|
+
#validManifestNames(library) {
|
|
2043
|
+
const names = new Set(Object.keys(library.manifests));
|
|
2044
|
+
for (const pkg of this.#config.packages ?? []) for (const name of Object.keys(pkg.declaration.manifests)) names.add(name);
|
|
2045
|
+
return names;
|
|
2046
|
+
}
|
|
1949
2047
|
/** Resolve a non-colliding raw file name, appending `-1`, `-2`, … before the extension. */
|
|
1950
2048
|
#uniqueRawName(fileName, folder) {
|
|
1951
2049
|
if (!existsSync(join(this.#config.rawDir, folder, fileName))) return fileName;
|
|
@@ -1982,5 +2080,5 @@ function invalidInput(message) {
|
|
|
1982
2080
|
throw new SourceImportError("invalid-input", message);
|
|
1983
2081
|
}
|
|
1984
2082
|
|
|
1985
|
-
export { LibraryStore as L, SourceImportError as S, serializeLibrary as a, serverPluginForType as b,
|
|
1986
|
-
//# sourceMappingURL=contract.js-
|
|
2083
|
+
export { LibraryStore as L, SourceImportError as S, serializeLibrary as a, serverPluginForType as b, manifestModuleCollisionIssues as c, descriptorsByType as d, encodeRelativePathForUrl as e, flatLibraryIssues as f, generateManifestModules as g, invalidInput as h, isRecord as i, parseLibrary as j, isRecord$1 as k, locateGeneratedAssetDeclaration as l, manifestModuleFileName as m, assertSafeKey as n, parseManifestRecord as o, processAssets as p, parseImportSource as q, readCurrentProxy as r, serverPluginsByType as s, assertSafeRelativeFilePath as t };
|
|
2084
|
+
//# sourceMappingURL=contract.js-_LTMZBo2.js.map
|