fundus 0.17.2 → 0.19.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 +60 -121
- package/build/client/_app/immutable/assets/2.C-1MfvLQ.css +1 -0
- 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.66PJT3JC.css → 3.q3CUOEpz.css} +1 -1
- package/build/client/_app/immutable/assets/3.q3CUOEpz.css.br +0 -0
- package/build/client/_app/immutable/assets/3.q3CUOEpz.css.gz +0 -0
- package/build/client/_app/immutable/assets/{AssetSourceMenu.Buj2UxUg.css → AssetSourceMenu.CgyMTAb6.css} +1 -1
- package/build/client/_app/immutable/assets/AssetSourceMenu.CgyMTAb6.css.br +0 -0
- package/build/client/_app/immutable/assets/AssetSourceMenu.CgyMTAb6.css.gz +0 -0
- package/build/client/_app/immutable/chunks/Bly9uffh.js +1 -0
- package/build/client/_app/immutable/chunks/Bly9uffh.js.br +0 -0
- package/build/client/_app/immutable/chunks/Bly9uffh.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{R0o69z6O.js → BpsKkIFc.js} +1 -1
- package/build/client/_app/immutable/chunks/BpsKkIFc.js.br +2 -0
- package/build/client/_app/immutable/chunks/BpsKkIFc.js.gz +0 -0
- package/build/client/_app/immutable/chunks/{jEVVu5G9.js → CrIZjnDr.js} +1 -1
- package/build/client/_app/immutable/chunks/CrIZjnDr.js.br +0 -0
- package/build/client/_app/immutable/chunks/CrIZjnDr.js.gz +0 -0
- package/build/client/_app/immutable/chunks/ZGU9Utak.js +108 -0
- package/build/client/_app/immutable/chunks/ZGU9Utak.js.br +0 -0
- package/build/client/_app/immutable/chunks/ZGU9Utak.js.gz +0 -0
- package/build/client/_app/immutable/chunks/lw3KP4og.js +2 -0
- package/build/client/_app/immutable/chunks/lw3KP4og.js.br +0 -0
- package/build/client/_app/immutable/chunks/lw3KP4og.js.gz +0 -0
- package/build/client/_app/immutable/entry/{app.DxYfHxs-.js → app.D-lO1MC-.js} +2 -2
- package/build/client/_app/immutable/entry/app.D-lO1MC-.js.br +0 -0
- package/build/client/_app/immutable/entry/app.D-lO1MC-.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.BrSEFrid.js +1 -0
- package/build/client/_app/immutable/entry/start.BrSEFrid.js.br +1 -0
- package/build/client/_app/immutable/entry/start.BrSEFrid.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{0.Do0MsVUC.js → 0.BPGg3A-F.js} +1 -1
- package/build/client/_app/immutable/nodes/0.BPGg3A-F.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.BPGg3A-F.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{1.DhfAdUbg.js → 1.-VJ5Mlss.js} +1 -1
- package/build/client/_app/immutable/nodes/1.-VJ5Mlss.js.br +1 -0
- package/build/client/_app/immutable/nodes/1.-VJ5Mlss.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.Dhyvb4bF.js +3 -0
- package/build/client/_app/immutable/nodes/2.Dhyvb4bF.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.Dhyvb4bF.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.D9Fgsq-b.js +1 -0
- package/build/client/_app/immutable/nodes/3.D9Fgsq-b.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.D9Fgsq-b.js.gz +0 -0
- package/build/client/_app/immutable/nodes/{4.gPNAednG.js → 4.DErtysFP.js} +1 -1
- package/build/client/_app/immutable/nodes/4.DErtysFP.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.DErtysFP.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 +7 -7
- package/build/index.js +7 -7
- package/build/server/chunks/chunks/{context.js-Dh0ibRIF.js → context.js-BIgcUcEl.js} +216 -604
- package/build/server/chunks/chunks/context.js-BIgcUcEl.js.map +1 -0
- package/build/server/chunks/chunks/{contract.js-_LTMZBo2.js → contract.js-B6KBK8D9.js} +59 -95
- package/build/server/chunks/chunks/contract.js-B6KBK8D9.js.map +1 -0
- package/build/server/chunks/chunks/{core.js-CTyKR4bu.js → core.js-Bp-ReC60.js} +38 -38
- package/build/server/chunks/chunks/core.js-Bp-ReC60.js.map +1 -0
- package/build/server/chunks/chunks/dependencies.js-pUkjICr5.js +45 -0
- package/build/server/chunks/chunks/dependencies.js-pUkjICr5.js.map +1 -0
- package/build/server/chunks/chunks/{exports.js-gUMFfqhw.js → exports.js-bhKV7cEL.js} +2 -2
- package/build/server/chunks/chunks/{exports.js-gUMFfqhw.js.map → exports.js-bhKV7cEL.js.map} +1 -1
- package/build/server/chunks/chunks/{http.js-BiqUcAuu.js → http.js-BTq44nR5.js} +2 -2
- package/build/server/chunks/chunks/{http.js-BiqUcAuu.js.map → http.js-BTq44nR5.js.map} +1 -1
- package/build/server/chunks/chunks/{internal.js-DvC1GD8s.js → internal.js-7MmaxxwZ.js} +3 -3
- package/build/server/chunks/chunks/{internal.js-DvC1GD8s.js.map → internal.js-7MmaxxwZ.js.map} +1 -1
- package/build/server/chunks/chunks/internal2.js-BlXt2rfE.js.map +1 -1
- package/build/server/chunks/chunks/{manifest-membership.js-at1ixQdW.js → manifest-membership.js-Dj3WwZgz.js} +2 -2
- package/build/server/chunks/chunks/{manifest-membership.js-at1ixQdW.js.map → manifest-membership.js-Dj3WwZgz.js.map} +1 -1
- package/build/server/chunks/chunks/{raw-reconciliation.js-CUH8IIJx.js → raw-reconciliation.js-mWOAOdgL.js} +3 -3
- package/build/server/chunks/chunks/raw-reconciliation.js-mWOAOdgL.js.map +1 -0
- package/build/server/chunks/chunks/{raw-reconciliation2.js-z4xl5zw2.js → raw-reconciliation2.js-Bo1jJgvd.js} +2 -2
- package/build/server/chunks/chunks/{raw-reconciliation2.js-z4xl5zw2.js.map → raw-reconciliation2.js-Bo1jJgvd.js.map} +1 -1
- package/build/server/chunks/chunks/{shared.js-nXNT--BO.js → shared.js-B0m3s2U9.js} +2 -2
- package/build/server/chunks/chunks/{shared.js-nXNT--BO.js.map → shared.js-B0m3s2U9.js.map} +1 -1
- package/build/server/chunks/chunks/{utils.js-C5pr7OK-.js → utils.js-BXV0zq44.js} +3 -3
- package/build/server/chunks/chunks/{utils.js-C5pr7OK-.js.map → utils.js-BXV0zq44.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/_...path_/{_server.ts.js-CdDjuW0r.js → _server.ts.js-B_aa_zh7.js} +6 -6
- package/build/server/chunks/entries/endpoints/api/_...path_/{_server.ts.js-CdDjuW0r.js.map → _server.ts.js-B_aa_zh7.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-OWM1eORG.js → _server.ts.js-DbEPdkbO.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/assets/_id_/{_server.ts.js-OWM1eORG.js.map → _server.ts.js-DbEPdkbO.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-DoG-7ZpZ.js → _server.ts.js-BzA96yBM.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/assets/_id_/raw/{_server.ts.js-DoG-7ZpZ.js.map → _server.ts.js-BzA96yBM.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/{_server.ts.js-CAWjVeGd.js → _server.ts.js-fQAXFRLh.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/assets/_id_/reimport/{_server.ts.js-CAWjVeGd.js.map → _server.ts.js-fQAXFRLh.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/_id_/retag/{_server.ts.js-CqS4aALY.js → _server.ts.js-RTBrlhk5.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/assets/_id_/retag/{_server.ts.js-CqS4aALY.js.map → _server.ts.js-RTBrlhk5.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-Bo_EsYXJ.js → _server.ts.js-Baz4gPRd.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/assets/{_server.ts.js-Bo_EsYXJ.js.map → _server.ts.js-Baz4gPRd.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-DW4w0XAr.js → _server.ts.js-CnqdPxWQ.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/assets/delete/{_server.ts.js-DW4w0XAr.js.map → _server.ts.js-CnqdPxWQ.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-_MiNPnSy.js → _server.ts.js-bvrtSRDz.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/assets/move/{_server.ts.js-_MiNPnSy.js.map → _server.ts.js-bvrtSRDz.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-DwbrQnBc.js → _server.ts.js-cgYcVXgU.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/folders/_path_/{_server.ts.js-DwbrQnBc.js.map → _server.ts.js-cgYcVXgU.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-CEnHQf3b.js → _server.ts.js-DbXw3YEr.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/folders/{_server.ts.js-CEnHQf3b.js.map → _server.ts.js-DbXw3YEr.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/imports/{_server.ts.js-BZDuJZtF.js → _server.ts.js-D0PEYlzG.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/imports/{_server.ts.js-BZDuJZtF.js.map → _server.ts.js-D0PEYlzG.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-DRgdpKKd.js → _server.ts.js-Dt9Wfgs7.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/manifests/_name_/{_server.ts.js-DRgdpKKd.js.map → _server.ts.js-Dt9Wfgs7.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-CP5QyIhz.js → _server.ts.js-BBuZYakQ.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/manifests/{_server.ts.js-CP5QyIhz.js.map → _server.ts.js-BBuZYakQ.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-BKEvt065.js → _server.ts.js-DQ_CWMTu.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/raw/adopt/{_server.ts.js-BKEvt065.js.map → _server.ts.js-DQ_CWMTu.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-C_zihkDS.js → _server.ts.js-B3TVoDCl.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/raw/edited/accept/{_server.ts.js-C_zihkDS.js.map → _server.ts.js-B3TVoDCl.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-watkBmy6.js → _server.ts.js--2C2x6Q0.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/raw/edited/dismiss/{_server.ts.js-watkBmy6.js.map → _server.ts.js--2C2x6Q0.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-YtumLIou.js → _server.ts.js-DD2Hz15k.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/reconcile/{_server.ts.js-YtumLIou.js.map → _server.ts.js-DD2Hz15k.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/reveal/{_server.ts.js-Dkouuu-M.js → _server.ts.js-Ei98ilB5.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/reveal/{_server.ts.js-Dkouuu-M.js.map → _server.ts.js-Ei98ilB5.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-DwsEQeuf.js → _server.ts.js-NNuDGwyK.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/state/{_server.ts.js-DwsEQeuf.js.map → _server.ts.js-NNuDGwyK.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/api/usage/{_server.ts.js-CdQxfhV3.js → _server.ts.js-6_Wl_k0H.js} +8 -8
- package/build/server/chunks/entries/endpoints/api/usage/{_server.ts.js-CdQxfhV3.js.map → _server.ts.js-6_Wl_k0H.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/files/_...path_/{_server.ts.js-DDdMocWj.js → _server.ts.js-DkYQlG9U.js} +6 -6
- package/build/server/chunks/entries/endpoints/files/_...path_/{_server.ts.js-DDdMocWj.js.map → _server.ts.js-DkYQlG9U.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-DbzjbH32.js → _server.ts.js-Dft0Zgh3.js} +8 -8
- package/build/server/chunks/entries/endpoints/files/proxy/_...path_/{_server.ts.js-DbzjbH32.js.map → _server.ts.js-Dft0Zgh3.js.map} +1 -1
- package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-K_JbXZsU.js → _server.ts.js-rlV0QRQS.js} +8 -8
- package/build/server/chunks/entries/endpoints/files/raw/_...path_/{_server.ts.js-K_JbXZsU.js.map → _server.ts.js-rlV0QRQS.js.map} +1 -1
- package/build/server/chunks/entries/{hooks.server.js-DgZAVFbQ.js → hooks.server.js-C345JVQ2.js} +7 -7
- package/build/server/chunks/entries/{hooks.server.js-DgZAVFbQ.js.map → hooks.server.js-C345JVQ2.js.map} +1 -1
- package/build/server/chunks/{handler-C4m7sKKb.js → handler-C_S3CtEF.js} +5 -5
- package/build/server/chunks/{handler-C4m7sKKb.js.map → handler-C_S3CtEF.js.map} +1 -1
- package/build/server/chunks/{index.js-pAnkrzRH.js → index.js-CSCxgyyg.js} +5 -5
- package/build/server/chunks/{index.js-pAnkrzRH.js.map → index.js-CSCxgyyg.js.map} +1 -1
- package/build/server/chunks/{manifest.js-CXQHeYnS.js → manifest.js-CO6AjAUm.js} +30 -30
- package/build/server/chunks/{manifest.js-CXQHeYnS.js.map → manifest.js-CO6AjAUm.js.map} +1 -1
- package/build/server/chunks/nodes/{0.js-lmQMhWZd.js → 0.js-CRc8onmc.js} +2 -2
- package/build/server/chunks/nodes/{0.js-lmQMhWZd.js.map → 0.js-CRc8onmc.js.map} +1 -1
- package/build/server/chunks/nodes/1.js-CZm_Doa7.js +7 -0
- package/build/server/chunks/nodes/{1.js-CdH3UJI2.js.map → 1.js-CZm_Doa7.js.map} +1 -1
- package/build/server/chunks/nodes/2.js-B92vn1Hu.js +7 -0
- package/build/server/chunks/nodes/2.js-B92vn1Hu.js.map +1 -0
- package/build/server/chunks/nodes/3.js-C14BP7Jm.js +7 -0
- package/build/server/chunks/nodes/3.js-C14BP7Jm.js.map +1 -0
- package/build/server/chunks/nodes/4.js-BLNdVCa1.js +7 -0
- package/build/server/chunks/nodes/{4.js-DtgDNAZF.js.map → 4.js-BLNdVCa1.js.map} +1 -1
- package/dist/config.d.ts +5 -3
- package/dist/config.js +3 -2
- package/dist/core/api-types.d.ts +7 -22
- package/dist/core/config.d.ts +8 -82
- package/dist/core/config.js +0 -9
- package/dist/core/dependencies.d.ts +52 -0
- package/dist/core/dependencies.js +56 -0
- package/dist/core/dependency-validation.d.ts +17 -0
- package/dist/core/dependency-validation.js +19 -0
- package/dist/core/index.d.ts +8 -10
- package/dist/core/index.js +4 -5
- package/dist/core/library.d.ts +0 -19
- package/dist/core/library.js +4 -4
- package/dist/core/manifest-membership.d.ts +2 -2
- package/dist/core/reference-graph.d.ts +3 -3
- package/dist/server/build.js +12 -26
- package/dist/server/check.d.ts +3 -13
- package/dist/server/check.js +33 -112
- package/dist/server/codegen.d.ts +1 -3
- package/dist/server/codegen.js +0 -18
- package/dist/server/config-loader.d.ts +10 -33
- package/dist/server/config-loader.js +87 -156
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/library-store.d.ts +1 -11
- package/dist/server/library-store.js +60 -42
- package/dist/server/operations.js +54 -161
- package/package.json +1 -1
- package/build/client/_app/immutable/assets/2.X44Wyac-.css +0 -1
- 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.66PJT3JC.css.br +0 -0
- package/build/client/_app/immutable/assets/3.66PJT3JC.css.gz +0 -0
- 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/0SQyBKXe.js +0 -108
- package/build/client/_app/immutable/chunks/0SQyBKXe.js.br +0 -0
- package/build/client/_app/immutable/chunks/0SQyBKXe.js.gz +0 -0
- package/build/client/_app/immutable/chunks/DXiUbZ9S.js +0 -2
- 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/R0o69z6O.js.br +0 -0
- package/build/client/_app/immutable/chunks/R0o69z6O.js.gz +0 -0
- package/build/client/_app/immutable/chunks/TrnW_5ju.js +0 -1
- package/build/client/_app/immutable/chunks/TrnW_5ju.js.br +0 -0
- package/build/client/_app/immutable/chunks/TrnW_5ju.js.gz +0 -0
- 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.DxYfHxs-.js.br +0 -0
- package/build/client/_app/immutable/entry/app.DxYfHxs-.js.gz +0 -0
- package/build/client/_app/immutable/entry/start.CdM7ozdO.js +0 -1
- package/build/client/_app/immutable/entry/start.CdM7ozdO.js.br +0 -0
- package/build/client/_app/immutable/entry/start.CdM7ozdO.js.gz +0 -0
- package/build/client/_app/immutable/nodes/0.Do0MsVUC.js.br +0 -0
- package/build/client/_app/immutable/nodes/0.Do0MsVUC.js.gz +0 -0
- package/build/client/_app/immutable/nodes/1.DhfAdUbg.js.br +0 -1
- package/build/client/_app/immutable/nodes/1.DhfAdUbg.js.gz +0 -0
- package/build/client/_app/immutable/nodes/2.lLNAdU5s.js +0 -3
- package/build/client/_app/immutable/nodes/2.lLNAdU5s.js.br +0 -0
- package/build/client/_app/immutable/nodes/2.lLNAdU5s.js.gz +0 -0
- package/build/client/_app/immutable/nodes/3.DA8xzCvA.js +0 -1
- package/build/client/_app/immutable/nodes/3.DA8xzCvA.js.br +0 -0
- package/build/client/_app/immutable/nodes/3.DA8xzCvA.js.gz +0 -0
- package/build/client/_app/immutable/nodes/4.gPNAednG.js.br +0 -0
- package/build/client/_app/immutable/nodes/4.gPNAednG.js.gz +0 -0
- package/build/server/chunks/chunks/context.js-Dh0ibRIF.js.map +0 -1
- package/build/server/chunks/chunks/contract.js-_LTMZBo2.js.map +0 -1
- package/build/server/chunks/chunks/core.js-CTyKR4bu.js.map +0 -1
- package/build/server/chunks/chunks/raw-reconciliation.js-CUH8IIJx.js.map +0 -1
- package/build/server/chunks/nodes/1.js-CdH3UJI2.js +0 -7
- package/build/server/chunks/nodes/2.js-BHnsJqcE.js +0 -7
- package/build/server/chunks/nodes/2.js-BHnsJqcE.js.map +0 -1
- package/build/server/chunks/nodes/3.js-cR9NdrYS.js +0 -7
- package/build/server/chunks/nodes/3.js-cR9NdrYS.js.map +0 -1
- package/build/server/chunks/nodes/4.js-DtgDNAZF.js +0 -7
- package/dist/core/library-validation.d.ts +0 -13
- package/dist/core/library-validation.js +0 -48
- package/dist/core/package-declaration.d.ts +0 -43
- package/dist/core/package-declaration.js +0 -80
- package/dist/core/package-merge.d.ts +0 -65
- package/dist/core/package-merge.js +0 -173
|
@@ -7,10 +7,9 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { readFile } from 'node:fs/promises';
|
|
9
9
|
import { join } from 'node:path';
|
|
10
|
-
import { assetIdError, allDeliveredAssetIds, canonicalizeParameters, collectAllReferences, compareCodeUnits, computeLibraryMembership,
|
|
10
|
+
import { assetIdError, allDeliveredAssetIds, canonicalizeParameters, collectAllReferences, compareCodeUnits, computeLibraryMembership, folderOfRawPath, normalizeFolderPath, parentFolderPath, portableFolderPathKey, proposeAssetId, rawFileNameOfPath, serializeLibrary, typesForFileName, validateDependencies } from '../core/index.js';
|
|
11
11
|
import { LibraryStore } from './library-store.js';
|
|
12
|
-
import { generateManifestModules, locateGeneratedAssetDeclaration,
|
|
13
|
-
import { packageSlotFindings } from './check.js';
|
|
12
|
+
import { generateManifestModules, locateGeneratedAssetDeclaration, manifestModuleFileName } from './codegen.js';
|
|
14
13
|
import { descriptorsByType, serverPluginForType, serverPluginsByType } from './plugins.js';
|
|
15
14
|
import { processAssets, readCurrentProxy } from './processing/processor.js';
|
|
16
15
|
import { encodeRelativePathForUrl } from './folder-filesystem.js';
|
|
@@ -600,65 +599,36 @@ export class FundusOperations {
|
|
|
600
599
|
this.#validateImportedRaw(raw);
|
|
601
600
|
const fileName = raw.suggestedFileName ?? `${options.id}.${raw.extension}`;
|
|
602
601
|
const plugin = serverPluginForType(options.type, this.#registry);
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
602
|
+
const library = await this.#store.createAsset({
|
|
603
|
+
fileName,
|
|
604
|
+
bytes: raw.bytes,
|
|
605
|
+
type: options.type,
|
|
606
|
+
id: options.id,
|
|
607
|
+
folder: options.folder,
|
|
608
|
+
manifests: options.manifests,
|
|
609
|
+
importSource: raw.importSource
|
|
610
|
+
}, async ({ rawPath, rawFileName, parameters }) => {
|
|
611
|
+
let next = parameters;
|
|
612
|
+
if (plugin.seedIngestParameters) {
|
|
613
|
+
const seeded = await plugin.seedIngestParameters({
|
|
614
|
+
rawPath,
|
|
615
|
+
rawFileName,
|
|
616
|
+
parameters: next,
|
|
617
|
+
config: this.#config
|
|
618
|
+
});
|
|
619
|
+
if (seeded !== undefined)
|
|
620
|
+
next = seeded;
|
|
621
|
+
}
|
|
622
|
+
// Source scale is a default: an explicit parametersPatch below still wins.
|
|
613
623
|
const pixelRatio = figmaSlicePixelRatio(raw, options.type);
|
|
614
624
|
if (pixelRatio !== undefined) {
|
|
615
|
-
|
|
625
|
+
next = mergeParameterPatch(next, { pixelRatio });
|
|
616
626
|
}
|
|
617
627
|
if (options.parametersPatch !== undefined) {
|
|
618
|
-
|
|
628
|
+
next = mergeParameterPatch(next, options.parametersPatch);
|
|
619
629
|
}
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
? await this.#store.createAsset({
|
|
623
|
-
fileName,
|
|
624
|
-
bytes: raw.bytes,
|
|
625
|
-
type: options.type,
|
|
626
|
-
id: options.id,
|
|
627
|
-
folder: options.folder,
|
|
628
|
-
manifests: options.manifests,
|
|
629
|
-
importSource: raw.importSource,
|
|
630
|
-
parametersOverride: slotOverride
|
|
631
|
-
})
|
|
632
|
-
: await this.#store.createAsset({
|
|
633
|
-
fileName,
|
|
634
|
-
bytes: raw.bytes,
|
|
635
|
-
type: options.type,
|
|
636
|
-
id: options.id,
|
|
637
|
-
folder: options.folder,
|
|
638
|
-
manifests: options.manifests,
|
|
639
|
-
importSource: raw.importSource
|
|
640
|
-
}, async ({ rawPath, rawFileName, parameters }) => {
|
|
641
|
-
let next = parameters;
|
|
642
|
-
if (plugin.seedIngestParameters) {
|
|
643
|
-
const seeded = await plugin.seedIngestParameters({
|
|
644
|
-
rawPath,
|
|
645
|
-
rawFileName,
|
|
646
|
-
parameters: next,
|
|
647
|
-
config: this.#config
|
|
648
|
-
});
|
|
649
|
-
if (seeded !== undefined)
|
|
650
|
-
next = seeded;
|
|
651
|
-
}
|
|
652
|
-
// Source scale is a default: an explicit parametersPatch below still wins.
|
|
653
|
-
const pixelRatio = figmaSlicePixelRatio(raw, options.type);
|
|
654
|
-
if (pixelRatio !== undefined) {
|
|
655
|
-
next = mergeParameterPatch(next, { pixelRatio });
|
|
656
|
-
}
|
|
657
|
-
if (options.parametersPatch !== undefined) {
|
|
658
|
-
next = mergeParameterPatch(next, options.parametersPatch);
|
|
659
|
-
}
|
|
660
|
-
return plugin.descriptor.validateParameters(next);
|
|
661
|
-
});
|
|
630
|
+
return plugin.descriptor.validateParameters(next);
|
|
631
|
+
});
|
|
662
632
|
return this.#afterMutation(library);
|
|
663
633
|
}
|
|
664
634
|
#validateImportTarget(options, library) {
|
|
@@ -683,10 +653,8 @@ export class FundusOperations {
|
|
|
683
653
|
options.manifests.some((value) => typeof value !== 'string'))) {
|
|
684
654
|
throw new SourceImportError('invalid-input', 'Import manifests must be an array of strings.');
|
|
685
655
|
}
|
|
686
|
-
// A placement may target a Package-introduced manifest (host + package union).
|
|
687
|
-
const validManifests = this.#effectiveOf(library).effective.manifests;
|
|
688
656
|
for (const manifest of new Set(options.manifests ?? [])) {
|
|
689
|
-
if (!Object.hasOwn(
|
|
657
|
+
if (!Object.hasOwn(library.manifests, manifest)) {
|
|
690
658
|
throw new SourceImportError('invalid-input', `Unknown manifest "${manifest}".`);
|
|
691
659
|
}
|
|
692
660
|
}
|
|
@@ -710,9 +678,7 @@ export class FundusOperations {
|
|
|
710
678
|
}
|
|
711
679
|
async #patchAsset(id, body) {
|
|
712
680
|
let library = await this.#store.read();
|
|
713
|
-
|
|
714
|
-
// with its id. Host assets and existing overrides patch normally.
|
|
715
|
-
this.#assertHostAsset(library, id, 'editing it');
|
|
681
|
+
this.#requireAsset(library, id);
|
|
716
682
|
if (body.parameters !== undefined) {
|
|
717
683
|
library = await this.#store.updateParameters(id, body.parameters);
|
|
718
684
|
}
|
|
@@ -934,19 +900,12 @@ export class FundusOperations {
|
|
|
934
900
|
async #runAfterMutation(library) {
|
|
935
901
|
const pipelineIssues = [];
|
|
936
902
|
const classification = await this.#classifyRawDirectory(library);
|
|
937
|
-
const
|
|
938
|
-
const materialized = materializeLibrary(effective);
|
|
939
|
-
const ordinaryIssues = [
|
|
940
|
-
...(await this.#store.validate(library, { flatSpace: false })),
|
|
941
|
-
...this.#flatIssues(effective, provenance, mergeFindings)
|
|
942
|
-
];
|
|
903
|
+
const ordinaryIssues = await this.#store.validate(library);
|
|
943
904
|
const safetyIssues = this.#rawSafetyIssues(library, classification);
|
|
944
905
|
if (ordinaryIssues.length === 0 && safetyIssues.length === 0) {
|
|
945
906
|
try {
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
const report = await processAssets(this.#config, materialized, this.#registry);
|
|
949
|
-
await generateManifestModules(this.#config, materialized, report.proxies, this.#registry);
|
|
907
|
+
const report = await processAssets(this.#config, library, this.#registry);
|
|
908
|
+
await generateManifestModules(this.#config, library, report.proxies, this.#registry);
|
|
950
909
|
}
|
|
951
910
|
catch (cause) {
|
|
952
911
|
pipelineIssues.push({
|
|
@@ -962,15 +921,13 @@ export class FundusOperations {
|
|
|
962
921
|
state: await this.#snapshotState(latestLibrary, latestClassification, pipelineIssues)
|
|
963
922
|
};
|
|
964
923
|
}
|
|
965
|
-
async #buildState(
|
|
924
|
+
async #buildState(library, issues, classification) {
|
|
966
925
|
const [gitBranch, changedGitAssets] = await Promise.all([
|
|
967
926
|
currentGitBranch(this.#config.projectRoot),
|
|
968
|
-
|
|
969
|
-
// and would otherwise all read as "new".
|
|
970
|
-
gitAssetChanges(this.#config.projectRoot, this.#config.library, host)
|
|
927
|
+
gitAssetChanges(this.#config.projectRoot, this.#config.library, library)
|
|
971
928
|
]);
|
|
972
929
|
const referencesByAsset = collectAllReferences(library, descriptorsByType(this.#registry));
|
|
973
|
-
const duplicatesByAsset = await this.#duplicateDetector.find(
|
|
930
|
+
const duplicatesByAsset = await this.#duplicateDetector.find(library, this.#config.rawDir);
|
|
974
931
|
const membershipByManifest = computeLibraryMembership(library, referencesByAsset);
|
|
975
932
|
const delivered = allDeliveredAssetIds(membershipByManifest);
|
|
976
933
|
// Per asset: the manifests it is a passive member of, with attribution.
|
|
@@ -990,17 +947,15 @@ export class FundusOperations {
|
|
|
990
947
|
incomingByAsset.set(reference.assetId, incoming);
|
|
991
948
|
}
|
|
992
949
|
}
|
|
950
|
+
// Which dependency sources declare each asset id (D2), so the editor can
|
|
951
|
+
// flag required assets and warn before deleting one.
|
|
952
|
+
const requiredByAsset = new Map();
|
|
953
|
+
for (const dependency of this.#config.dependencies) {
|
|
954
|
+
requiredByAsset.set(dependency.id, [...dependency.sources]);
|
|
955
|
+
}
|
|
993
956
|
const assets = [];
|
|
994
957
|
for (const assetId of Object.keys(library.assets).sort(compareCodeUnits)) {
|
|
995
958
|
const record = library.assets[assetId];
|
|
996
|
-
const prov = provenance[assetId] ?? { source: 'host' };
|
|
997
|
-
const origin = prov.source === 'host'
|
|
998
|
-
? { kind: 'host' }
|
|
999
|
-
: prov.source === 'package'
|
|
1000
|
-
? { kind: 'package', origin: prov.origin }
|
|
1001
|
-
: { kind: 'override', origin: prov.origin };
|
|
1002
|
-
// An unfilled Package slot carries no bytes.
|
|
1003
|
-
const isSlot = record.raw === undefined;
|
|
1004
959
|
const warnings = [];
|
|
1005
960
|
for (const issue of issues) {
|
|
1006
961
|
if (issue.assetId === assetId)
|
|
@@ -1008,9 +963,8 @@ export class FundusOperations {
|
|
|
1008
963
|
}
|
|
1009
964
|
// Unreachable: no explicit membership AND no passive membership in any
|
|
1010
965
|
// manifest — nothing delivers the asset. A passively delivered asset is
|
|
1011
|
-
// fine (it ships inlined into its referrers) and must not warn.
|
|
1012
|
-
|
|
1013
|
-
if (record.manifests.length === 0 && !delivered.has(assetId) && !isSlot) {
|
|
966
|
+
// fine (it ships inlined into its referrers) and must not warn.
|
|
967
|
+
if (record.manifests.length === 0 && !delivered.has(assetId)) {
|
|
1014
968
|
warnings.push('In no manifest and not referenced by any delivered asset — ' +
|
|
1015
969
|
'nothing is processed or generated for it.');
|
|
1016
970
|
}
|
|
@@ -1018,7 +972,7 @@ export class FundusOperations {
|
|
|
1018
972
|
warnings.push(`Importer "${record.importSource.importer}" is unavailable; the local raw file remains usable.`);
|
|
1019
973
|
}
|
|
1020
974
|
let proxy = null;
|
|
1021
|
-
if (delivered.has(assetId)
|
|
975
|
+
if (delivered.has(assetId)) {
|
|
1022
976
|
try {
|
|
1023
977
|
const currentProxy = await readCurrentProxy(assetId, record, this.#config, this.#registry);
|
|
1024
978
|
if (currentProxy) {
|
|
@@ -1036,17 +990,13 @@ export class FundusOperations {
|
|
|
1036
990
|
warnings.push(cause instanceof Error ? cause.message : String(cause));
|
|
1037
991
|
}
|
|
1038
992
|
}
|
|
1039
|
-
const raw = record.raw ?? '';
|
|
1040
|
-
const rawHash = record.rawHash ?? '';
|
|
1041
993
|
assets.push({
|
|
1042
994
|
id: assetId,
|
|
1043
995
|
type: record.type,
|
|
1044
|
-
raw,
|
|
1045
|
-
folder: folderOfRawPath(raw),
|
|
1046
|
-
rawUrl:
|
|
1047
|
-
|
|
1048
|
-
: `/files/raw/${encodeRelativePathForUrl(raw)}?v=${rawHash.slice(0, 12)}`,
|
|
1049
|
-
rawHash,
|
|
996
|
+
raw: record.raw,
|
|
997
|
+
folder: folderOfRawPath(record.raw),
|
|
998
|
+
rawUrl: `/files/raw/${encodeRelativePathForUrl(record.raw)}?v=${record.rawHash.slice(0, 12)}`,
|
|
999
|
+
rawHash: record.rawHash,
|
|
1050
1000
|
gitStatus: changedGitAssets.get(assetId) ?? null,
|
|
1051
1001
|
importSource: record.importSource,
|
|
1052
1002
|
parameters: record.parameters,
|
|
@@ -1062,8 +1012,7 @@ export class FundusOperations {
|
|
|
1062
1012
|
})),
|
|
1063
1013
|
incoming: incomingByAsset.get(assetId) ?? []
|
|
1064
1014
|
},
|
|
1065
|
-
|
|
1066
|
-
overridden: origin.kind === 'override'
|
|
1015
|
+
requiredBy: requiredByAsset.get(assetId) ?? []
|
|
1067
1016
|
});
|
|
1068
1017
|
}
|
|
1069
1018
|
// Per manifest: the membership picture for the manifests view, and the
|
|
@@ -1094,7 +1043,7 @@ export class FundusOperations {
|
|
|
1094
1043
|
presetNames[type] = names;
|
|
1095
1044
|
presetCapabilities[type] = Object.fromEntries(names.map((name) => [name, plugin.presetCapabilities?.(presets[name]) ?? {}]));
|
|
1096
1045
|
}
|
|
1097
|
-
const rawIngestionQueue = this.#buildRawIngestionQueue(
|
|
1046
|
+
const rawIngestionQueue = this.#buildRawIngestionQueue(library, classification);
|
|
1098
1047
|
return {
|
|
1099
1048
|
gitBranch,
|
|
1100
1049
|
library,
|
|
@@ -1112,8 +1061,7 @@ export class FundusOperations {
|
|
|
1112
1061
|
presetCapabilities,
|
|
1113
1062
|
manifestMemberships,
|
|
1114
1063
|
manifestDeliveredBytes,
|
|
1115
|
-
rawIngestionQueue
|
|
1116
|
-
packageOrigins: this.#config.packages.map((pkg) => pkg.origin).sort(compareCodeUnits)
|
|
1064
|
+
rawIngestionQueue
|
|
1117
1065
|
};
|
|
1118
1066
|
}
|
|
1119
1067
|
#compatibleTypes(path) {
|
|
@@ -1126,11 +1074,10 @@ export class FundusOperations {
|
|
|
1126
1074
|
return rawSafetyIssues(library, classification, (path) => this.#compatibleTypes(path));
|
|
1127
1075
|
}
|
|
1128
1076
|
async #snapshotState(library, classification, extraIssues = []) {
|
|
1129
|
-
const { effective, provenance, mergeFindings } = this.#effectiveOf(library);
|
|
1130
1077
|
const issues = [
|
|
1131
|
-
...(await this.#store.validate(library
|
|
1132
|
-
...this.#flatIssues(effective, provenance, mergeFindings),
|
|
1078
|
+
...(await this.#store.validate(library)),
|
|
1133
1079
|
...this.#rawSafetyIssues(library, classification),
|
|
1080
|
+
...validateDependencies(this.#config.dependencies, library),
|
|
1134
1081
|
...extraIssues
|
|
1135
1082
|
];
|
|
1136
1083
|
const seen = new Set();
|
|
@@ -1141,7 +1088,7 @@ export class FundusOperations {
|
|
|
1141
1088
|
seen.add(key);
|
|
1142
1089
|
return true;
|
|
1143
1090
|
});
|
|
1144
|
-
return this.#buildState(library,
|
|
1091
|
+
return this.#buildState(library, uniqueIssues, classification);
|
|
1145
1092
|
}
|
|
1146
1093
|
#canAutoReconcile(classification, retry = false) {
|
|
1147
1094
|
return (classification.complete &&
|
|
@@ -1247,60 +1194,6 @@ export class FundusOperations {
|
|
|
1247
1194
|
throw new Error(`Unknown asset "${id}".`);
|
|
1248
1195
|
}
|
|
1249
1196
|
}
|
|
1250
|
-
/** Merge the configured Packages under the host library (host wins). */
|
|
1251
|
-
#effectiveOf(host) {
|
|
1252
|
-
const { library, provenance, findings } = mergePackages(host, this.#config.packages ?? []);
|
|
1253
|
-
return { effective: library, provenance, mergeFindings: findings };
|
|
1254
|
-
}
|
|
1255
|
-
/**
|
|
1256
|
-
* The Package base record for `id` when `id` is a read-only Package asset the
|
|
1257
|
-
* host has not yet filled — i.e. this create is a *slot fill*. Returns null
|
|
1258
|
-
* for a plain new host asset.
|
|
1259
|
-
*/
|
|
1260
|
-
#packageBase(host, id) {
|
|
1261
|
-
if (Object.hasOwn(host.assets, id))
|
|
1262
|
-
return null;
|
|
1263
|
-
const { effective, provenance } = this.#effectiveOf(host);
|
|
1264
|
-
if (provenance[id]?.source === 'package')
|
|
1265
|
-
return { type: effective.assets[id].type };
|
|
1266
|
-
return null;
|
|
1267
|
-
}
|
|
1268
|
-
/**
|
|
1269
|
-
* Flat-space validation over the effective library: merge errors, id/type/
|
|
1270
|
-
* parameter/membership/appearance/reference checks, module collisions, and
|
|
1271
|
-
* delivered-slot findings. Disk/host checks stay in `store.validate(host,
|
|
1272
|
-
* { flatSpace: false })`.
|
|
1273
|
-
*/
|
|
1274
|
-
#flatIssues(effective, provenance, mergeFindings) {
|
|
1275
|
-
const referencesByAsset = collectAllReferences(effective, descriptorsByType(this.#registry));
|
|
1276
|
-
const membership = computeLibraryMembership(effective, referencesByAsset);
|
|
1277
|
-
return [
|
|
1278
|
-
...mergeFindings
|
|
1279
|
-
.filter((finding) => finding.kind !== 'package-overridden')
|
|
1280
|
-
.map((finding) => ({ assetId: finding.assetId, message: finding.message })),
|
|
1281
|
-
...flatLibraryIssues(effective, descriptorsByType(this.#registry)),
|
|
1282
|
-
...manifestModuleCollisionIssues(effective.manifests),
|
|
1283
|
-
...packageSlotFindings(effective, provenance, membership).map((finding) => ({
|
|
1284
|
-
assetId: finding.assetId,
|
|
1285
|
-
message: finding.message
|
|
1286
|
-
}))
|
|
1287
|
-
];
|
|
1288
|
-
}
|
|
1289
|
-
/**
|
|
1290
|
-
* Whether an id is a read-only Package asset the host has not overridden.
|
|
1291
|
-
* Such ids can be filled/overridden (write a host record) but not mutated,
|
|
1292
|
-
* renamed, moved, or deleted in place.
|
|
1293
|
-
*/
|
|
1294
|
-
#assertHostAsset(host, id, action) {
|
|
1295
|
-
if (Object.hasOwn(host.assets, id))
|
|
1296
|
-
return;
|
|
1297
|
-
const { provenance } = this.#effectiveOf(host);
|
|
1298
|
-
const prov = provenance[id];
|
|
1299
|
-
if (prov && prov.source !== 'host') {
|
|
1300
|
-
throw new Error(`Asset "${id}" is provided by package "${prov.origin}"; ${action} is not available. Override it by importing or uploading bytes with this id.`);
|
|
1301
|
-
}
|
|
1302
|
-
throw new Error(`Unknown asset "${id}".`);
|
|
1303
|
-
}
|
|
1304
1197
|
/**
|
|
1305
1198
|
* Apply a CLI asset change to the store, validating the resulting library
|
|
1306
1199
|
* on an in-memory candidate first — nothing is persisted when the change
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.submenu-anchor.svelte-13hq4tl{position:relative}button.svelte-13hq4tl{width:100%;color:var(--text);font:inherit;text-align:left;white-space:nowrap;background:0 0;border:0;border-radius:4px;padding:6px 8px}button.svelte-13hq4tl:hover,button.svelte-13hq4tl:focus-visible{background:var(--accent-soft);outline:none}.submenu-anchor.svelte-13hq4tl:has(.submenu:where(.svelte-13hq4tl))>.submenu-trigger:where(.svelte-13hq4tl){background:var(--accent-soft);outline:none}button.svelte-13hq4tl:disabled{color:var(--text-faint);background:0 0}.submenu-trigger.svelte-13hq4tl{justify-content:space-between;align-items:center;gap:12px;display:flex}.arrow.svelte-13hq4tl{color:var(--text-faint);font-size:16px;line-height:12px}.submenu.svelte-13hq4tl{z-index:1;background:var(--panel-raised);border:1px solid var(--border);border-radius:6px;min-width:168px;max-width:320px;padding:4px;position:absolute;top:-5px;left:calc(100% - 4px);overflow-y:auto;box-shadow:0 8px 24px #00000073}.submenu.opens-left.svelte-13hq4tl{left:auto;right:calc(100% - 4px)}.submenu.svelte-13hq4tl button:where(.svelte-13hq4tl){text-overflow:ellipsis;overflow:hidden}hr.svelte-13hq4tl{background:var(--border);border:0;height:1px;margin:4px 8px}.context-menu.svelte-109nkvw{z-index:200;background:var(--panel-raised);border:1px solid var(--border);border-radius:6px;width:168px;padding:4px;position:fixed;box-shadow:0 8px 24px #00000073}button.svelte-109nkvw{width:100%;color:var(--text);font:inherit;text-align:left;background:0 0;border:0;border-radius:4px;padding:6px 8px}button.svelte-109nkvw:hover,button.svelte-109nkvw:focus-visible{background:var(--accent-soft);outline:none}button.danger.svelte-109nkvw{color:var(--danger)}button.svelte-109nkvw:disabled{color:var(--text-dim);cursor:default}button.svelte-109nkvw:disabled:hover,button.svelte-109nkvw:disabled:focus-visible{background:0 0}hr.svelte-109nkvw{background:var(--border);border:0;height:1px;margin:4px 8px}.manifest-label.svelte-1b4m5oj{align-items:center;gap:4px;min-width:0;display:inline-flex}.emoji.svelte-1b4m5oj{flex:none;line-height:1}.name.svelte-1b4m5oj{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.chip.svelte-1b4m5oj{background:color-mix(in srgb, var(--manifest-color) 20%, transparent);color:var(--manifest-color);border-radius:4px;padding:0 5px;font-size:10px}.chip.passive.svelte-1b4m5oj{border:1px dashed var(--manifest-color);background:0 0}.browse-select.svelte-dr99ka{border-radius:4px;align-items:center;min-width:0;height:24px;padding:0 6px 0 0;display:inline-flex}.browse-select.svelte-dr99ka:focus-within{border-color:var(--accent)}.browse-select.filter-active.svelte-dr99ka{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.browse-select.filter-active.svelte-dr99ka .icon-slot:where(.svelte-dr99ka){color:var(--accent)}.icon-slot.svelte-dr99ka{width:24px;height:24px;color:var(--text-dim);-webkit-user-select:none;user-select:none;flex:none;justify-content:center;align-items:center;display:flex}select.svelte-dr99ka{background:0 0;border:0;outline:none;min-width:0;height:100%;margin:0;padding:0 6px 0 0}.filter-field .popover-anchor{width:100%}.multi-select-trigger.svelte-1yxb8yh{text-align:left;border-radius:4px;align-items:center;gap:5px;width:100%;min-width:0;height:24px;padding:0 6px 0 0;display:flex}.multi-select-trigger.filter-active.svelte-1yxb8yh{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.icon-slot.svelte-1yxb8yh{width:24px;height:24px;color:var(--text-dim);flex:none;place-items:center;display:grid}.filter-active.svelte-1yxb8yh .icon-slot:where(.svelte-1yxb8yh){color:var(--accent)}.summary.svelte-1yxb8yh{min-width:0;color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.filter-active.svelte-1yxb8yh .summary:where(.svelte-1yxb8yh){color:var(--accent)}.selected-count.svelte-1yxb8yh{background:var(--accent);min-width:15px;height:15px;color:var(--text);border-radius:999px;flex:none;place-items:center;padding:0 4px;font-size:9px;font-weight:700;display:grid}.multi-select-menu.svelte-1yxb8yh{width:max(160px, var(--multi-select-width,100%));min-width:160px}.menu-header.svelte-1yxb8yh{border-bottom:1px solid var(--border-soft);color:var(--text-dim);justify-content:space-between;align-items:center;gap:12px;padding:1px 4px 6px;font-size:10px;display:flex}.menu-header.svelte-1yxb8yh button:where(.svelte-1yxb8yh){color:var(--accent);font:inherit;background:0 0;border:0;padding:1px 2px}.menu-header.svelte-1yxb8yh button:where(.svelte-1yxb8yh):disabled{opacity:.4;cursor:default}.options.svelte-1yxb8yh{max-height:224px;padding-top:4px;overflow-y:auto}.options.svelte-1yxb8yh label:where(.svelte-1yxb8yh){border-radius:var(--radius-small);min-width:0;height:26px;color:var(--text);cursor:pointer;align-items:center;gap:7px;padding:0 5px;display:flex}.options.svelte-1yxb8yh label:where(.svelte-1yxb8yh):hover,.options.svelte-1yxb8yh label:where(.svelte-1yxb8yh):focus-within{background:var(--accent-soft)}.options.svelte-1yxb8yh label.selected:where(.svelte-1yxb8yh){color:var(--accent)}.options.svelte-1yxb8yh input:where(.svelte-1yxb8yh){width:12px;height:12px;accent-color:var(--accent);flex:none;margin:0}.options.svelte-1yxb8yh span:where(.svelte-1yxb8yh){text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.browse-checkbox.svelte-sa6meb{cursor:pointer;align-items:center;min-width:0;height:24px;display:inline-flex}.browse-checkbox.svelte-sa6meb:focus-within .value:where(.svelte-sa6meb){color:var(--accent)}.icon-slot.svelte-sa6meb{-webkit-user-select:none;user-select:none;flex:none;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.value.svelte-sa6meb{min-width:0;color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:11px;line-height:14px;overflow:hidden}input.svelte-sa6meb{width:12px;height:12px;accent-color:var(--accent);margin:0}.library-view.svelte-1uha8ag{flex:1;min-height:0;display:flex}.page.svelte-1uha8ag{flex:1;min-height:0;padding:16px;position:relative;overflow-y:auto}.library-toolbar.svelte-1uha8ag{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px;display:flex}.library-toolbar.svelte-1uha8ag .control{border-radius:var(--radius-small);height:24px}.selection-controls.svelte-1uha8ag{align-items:center;gap:8px;display:inline-flex}.selection-action.svelte-1uha8ag:disabled{opacity:.45;cursor:default}.selection-action.svelte-1uha8ag{justify-content:center;align-items:center;display:inline-flex}.selection-summary.svelte-1uha8ag{color:var(--accent);white-space:nowrap;font-weight:600}.preview-size-control.svelte-1uha8ag{height:24px;color:var(--text-dim);cursor:default;align-items:center;gap:6px;margin-left:auto;padding:0 7px;display:inline-flex}.preview-size-icon.svelte-1uha8ag{fill:currentColor;flex:none;width:14px;height:14px}.preview-size-icon.dense.svelte-1uha8ag{color:var(--text-faint)}.preview-size-icon.dense.svelte-1uha8ag rect:where(.svelte-1uha8ag){rx:.75px;width:3px;height:3px}.preview-size-icon.roomy.svelte-1uha8ag rect:where(.svelte-1uha8ag){rx:1.25px}.preview-size-range.svelte-1uha8ag{appearance:none;cursor:pointer;background:0 0;flex:none;width:104px;height:14px;margin:0;padding:0}.preview-size-range.svelte-1uha8ag::-webkit-slider-runnable-track{background:linear-gradient(to right, var(--accent) 0 var(--preview-size-progress), var(--border) var(--preview-size-progress) 100%);border-radius:999px;height:3px}.preview-size-range.svelte-1uha8ag::-moz-range-track{background:var(--border);border-radius:999px;height:3px}.preview-size-range.svelte-1uha8ag::-moz-range-progress{background:var(--accent);border-radius:999px;height:3px}.preview-size-range.svelte-1uha8ag::-webkit-slider-thumb{border:2px solid var(--panel-raised);appearance:none;background:var(--accent);width:12px;height:12px;box-shadow:0 0 0 1px var(--accent);border-radius:50%;margin-top:-4.5px}.preview-size-range.svelte-1uha8ag::-moz-range-thumb{border:2px solid var(--panel-raised);background:var(--accent);width:8px;height:8px;box-shadow:0 0 0 1px var(--accent);border-radius:50%}.preview-size-range.svelte-1uha8ag:focus-visible{outline:none}.preview-size-range.svelte-1uha8ag:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 1px var(--accent), 0 0 0 4px var(--accent-soft)}.preview-size-range.svelte-1uha8ag:focus-visible::-moz-range-thumb{box-shadow:0 0 0 1px var(--accent), 0 0 0 4px var(--accent-soft)}.search.svelte-1uha8ag{flex:0 0 240px;align-items:center;gap:4px;width:240px;min-width:200px;height:24px;padding:0 6px 0 0;display:flex}.search.svelte-1uha8ag:focus-within{border-color:var(--accent)}.search.filter-active.svelte-1uha8ag{border-color:var(--accent);background:var(--accent-soft)}.search.filter-active.svelte-1uha8ag .search-icon-slot:where(.svelte-1uha8ag),.search.filter-active.svelte-1uha8ag kbd:where(.svelte-1uha8ag){color:var(--accent)}.search.filter-active.svelte-1uha8ag kbd:where(.svelte-1uha8ag){border-color:var(--accent)}.search-icon-slot.svelte-1uha8ag{width:24px;height:24px;color:var(--text-dim);flex:none;justify-content:center;align-items:center;display:flex}.search-icon.svelte-1uha8ag{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;flex:none;width:14px;height:14px}.search-input.svelte-1uha8ag{min-width:0;height:100%;color:var(--text);font:inherit;background:0 0;border:0;outline:none;flex:1;padding:0}.search-input.svelte-1uha8ag::-webkit-search-cancel-button{appearance:none;background:var(--text-dim);cursor:pointer;width:12px;height:12px;margin:0;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='m3 3 8 8m0-8-8 8' fill='none' stroke='black' stroke-linecap='round' stroke-width='2.25'/%3E%3C/svg%3E") 50%/12px 12px no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='m3 3 8 8m0-8-8 8' fill='none' stroke='black' stroke-linecap='round' stroke-width='2.25'/%3E%3C/svg%3E") 50%/12px 12px no-repeat}.search.filter-active.svelte-1uha8ag .search-input:where(.svelte-1uha8ag)::-webkit-search-cancel-button{background:var(--accent)}.search.svelte-1uha8ag kbd:where(.svelte-1uha8ag){border:1px solid var(--border);color:var(--text-faint);border-radius:3px;flex:none;padding:1px 4px;font:9px/14px system-ui,sans-serif}.toolbar-button.svelte-1uha8ag,.import-trigger.svelte-1uha8ag{white-space:nowrap;justify-content:center;align-items:center;gap:6px;display:inline-flex}.toolbar-button.active.svelte-1uha8ag{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.filter-count.svelte-1uha8ag{background:var(--accent);min-width:16px;height:16px;color:var(--text);border-radius:999px;place-items:center;padding:0 4px;font-size:10px;font-weight:700;display:inline-grid}.filters-popover.svelte-1uha8ag{width:min(480px,100vw - 24px)}.popover-header.svelte-1uha8ag{border-bottom:1px solid var(--border-soft);justify-content:space-between;align-items:center;gap:16px;padding:2px 2px 10px;display:flex}.popover-header.svelte-1uha8ag strong:where(.svelte-1uha8ag){color:var(--text);font-size:11px;font-weight:400}.clear-filters.svelte-1uha8ag{color:var(--accent);font:inherit;background:0 0;border:0;padding:2px 4px;font-size:11px}.clear-filters.svelte-1uha8ag:disabled{opacity:.4;cursor:default}.filter-grid.svelte-1uha8ag{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:10px 2px;display:grid}.filter-field.svelte-1uha8ag{flex-direction:column;gap:4px;min-width:0;display:flex}.filter-field.svelte-1uha8ag>span:where(.svelte-1uha8ag){color:#ffffffb2;letter-spacing:.27px;-webkit-user-select:none;user-select:none;font-size:9px;font-weight:500;line-height:14px}.filter-field.svelte-1uha8ag .browse-select,.filter-field.svelte-1uha8ag .browse-checkbox{width:100%}.filter-field.svelte-1uha8ag .browse-select select{flex:1;width:100%}.filter-options-grid.svelte-1uha8ag{padding-top:0;padding-bottom:2px}.filter-options-grid.svelte-1uha8ag .browse-checkbox,.filter-options-grid.svelte-1uha8ag .browse-checkbox .icon-slot{height:14px}.filter-options-grid.svelte-1uha8ag .browse-checkbox .icon-slot{justify-content:flex-start;align-items:flex-start;width:18px}@media (width<=560px){.filter-grid.svelte-1uha8ag{grid-template-columns:1fr}}@media (width<=1056px){.search.svelte-1uha8ag{flex-basis:100%;order:10;width:100%}}.section.svelte-1uha8ag{margin-bottom:24px}.section.svelte-1uha8ag:last-child{margin-bottom:0}.section-emoji.svelte-1uha8ag{margin-right:6px}.grid.svelte-1uha8ag,.folder-grid.svelte-1uha8ag{gap:8px;display:grid}.grid.svelte-1uha8ag{grid-template-columns:repeat(auto-fill, minmax(min(100%, var(--preview-card-width)), 1fr))}.folder-grid.svelte-1uha8ag{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.folder-card.svelte-1uha8ag{background:var(--panel);border:1px solid var(--border-soft);min-width:0;height:60px;color:var(--text);text-align:left;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;display:flex}.folder-card.svelte-1uha8ag:hover,.folder-card.svelte-1uha8ag:focus-visible{border-color:var(--accent);outline:none}.folder-card.drop-target.svelte-1uha8ag{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent)}.folder-card.dragging-folder.svelte-1uha8ag{opacity:.55}.folder-card-icon.svelte-1uha8ag{color:var(--text-dim);flex:none;align-items:center;display:flex}.folder-card-details.svelte-1uha8ag{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.folder-card-details.svelte-1uha8ag strong:where(.svelte-1uha8ag){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.folder-card-details.svelte-1uha8ag span:where(.svelte-1uha8ag),.folder-card-arrow.svelte-1uha8ag{color:var(--text-faint)}.folder-card-arrow.svelte-1uha8ag{flex:none;font-size:18px}.card.svelte-1uha8ag{background:var(--panel);border:1px solid var(--border-soft);border-radius:8px;flex-direction:column;gap:clamp(4px,5cqi,8px);padding:clamp(4px,5cqi,8px);display:flex;position:relative;container-type:inline-size}.card.selected.svelte-1uha8ag{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.asset-select.svelte-1uha8ag{z-index:1;width:16px;height:16px;accent-color:var(--accent);position:absolute;top:clamp(6px,8cqi,12px);left:clamp(6px,8cqi,12px)}.card.svelte-1uha8ag:hover{border-color:var(--accent)}.thumbnail.svelte-1uha8ag{width:100%;height:min(var(--preview-card-height), 66.667cqi);border-radius:var(--radius);justify-content:center;align-items:center;display:flex;overflow:hidden}.meta.svelte-1uha8ag{align-items:center;gap:6px;min-width:0;display:flex}.id.svelte-1uha8ag{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.type-badge.svelte-1uha8ag{color:var(--text-dim);border:1px solid var(--border);border-radius:4px;flex:none;margin-left:auto;padding:0 5px;font-size:10px}.badges.svelte-1uha8ag{flex-wrap:wrap;gap:4px;min-height:16px;display:flex}.badge.svelte-1uha8ag{border-radius:4px;padding:0 5px;font-size:10px}.badge.warning.svelte-1uha8ag{background:var(--warning-soft);color:var(--warning)}@container (width<=109px){.type-badge.svelte-1uha8ag{display:none}.badges.svelte-1uha8ag{flex-wrap:nowrap;overflow:hidden}}@container (width<=79px){.card.svelte-1uha8ag>.overlay{background:var(--accent);border:0;width:6px;height:6px;padding:0;font-size:0;top:5px;left:auto;right:5px;transform:none}.card.svelte-1uha8ag>.overlay.edited{background:var(--warning)}.asset-select.svelte-1uha8ag{width:8px;height:8px;top:0;left:0;transform:translate(-8%,8%)}.meta.svelte-1uha8ag,.badges.svelte-1uha8ag{display:none}}.empty.svelte-1uha8ag{color:var(--text-dim);text-align:center;padding:48px}.dialog-row.svelte-1uha8ag{align-items:center;gap:8px;display:flex}.dialog-row.svelte-1uha8ag span:where(.svelte-1uha8ag){width:44px;color:var(--text-dim)}.dialog-row.svelte-1uha8ag input:where(.svelte-1uha8ag){flex:1}.dialog-text.svelte-1uha8ag,.dialog-warning.svelte-1uha8ag{margin:8px 0 0}.dialog-warning.svelte-1uha8ag{color:var(--warning)}.drop-hint.svelte-1uha8ag{border:2px dashed var(--accent);color:var(--accent);pointer-events:none;background:#0d99ff14;border-radius:12px;justify-content:center;align-items:center;font-size:14px;display:flex;position:fixed;inset:48px 8px 8px}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|