@adaas/a-frame 0.1.1 → 0.1.2
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/.conf/tsconfig.browser.json +7 -1
- package/.conf/tsconfig.node.json +7 -1
- package/dist/browser/A-FrameBrowserStorageBlobs.context-CZTTvpn2.d.mts +53 -0
- package/dist/browser/A-FrameBrowserStorageBlobs.context-CaGTyatz.d.mts +40 -0
- package/dist/browser/A-FrameBrowserStorageBlobs.context-DjeEH8cn.d.mts +53 -0
- package/dist/browser/A-FrameBrowserStorageBlobs.context-vCsuTea9.d.mts +40 -0
- package/dist/browser/A-FrameBundle.types-LzfgdMiQ.d.mts +71 -0
- package/dist/browser/A-FrameChannel.component-4mTNctXL.d.mts +704 -0
- package/dist/browser/A-FrameChannel.types-BXEKJK9t.d.mts +205 -0
- package/dist/browser/A-FrameChannel.types-Ba3wgUZj.d.mts +199 -0
- package/dist/browser/A-FrameChannel.types-BfINhQZe.d.mts +145 -0
- package/dist/browser/A-FrameChannel.types-DfacgYL1.d.mts +199 -0
- package/dist/browser/A-FrameCompletion.entity-Dzy9sIa8.d.mts +72 -0
- package/dist/browser/A-FrameDefinition.entity-C1aK-gdl.d.mts +370 -0
- package/dist/browser/A-FrameDefinition.entity-CKPXsarS.d.mts +358 -0
- package/dist/browser/A-FrameDefinition.entity-yA0GsBoe.d.mts +143 -0
- package/dist/browser/A-FrameDefinition.types-BT02yAhQ.d.mts +232 -0
- package/dist/browser/A-FrameDynamicContentOperation.context-CoViNb19.d.mts +297 -0
- package/dist/browser/A-FrameDynamicContentOperation.context-Dd7Lb7X2.d.mts +266 -0
- package/dist/browser/A-FrameDynamicPatch.entity-BRuF1tqs.d.mts +29 -0
- package/dist/browser/A-FrameDynamicStructure.entity-DMvI_EPT.d.mts +210 -0
- package/dist/browser/A-FrameDynamicStructure.entity-DxkPP9mR.d.mts +235 -0
- package/dist/browser/A-FrameEnv.types-DnK-CYVk.d.mts +21 -0
- package/dist/browser/A-FrameNamespace.entity-BDg1FUgo.d.mts +136 -0
- package/dist/browser/A-FrameSchema.entity-DjYIhsoj.d.mts +141 -0
- package/dist/browser/A-FrameSegment.entity-D1xjjWvG.d.mts +161 -0
- package/dist/browser/A-FrameSegment.entity-D7Aj39Wh.d.mts +146 -0
- package/dist/browser/bundle.d.mts +6 -2
- package/dist/browser/bundle.mjs +1 -1
- package/dist/browser/bundle.mjs.map +1 -1
- package/dist/browser/channel.d.mts +51 -74
- package/dist/browser/channel.mjs +1 -2
- package/dist/browser/channel.mjs.map +1 -1
- package/dist/browser/chunk-2RNFZSBL.mjs +2 -0
- package/dist/browser/chunk-2RNFZSBL.mjs.map +1 -0
- package/dist/browser/chunk-46LRNZRG.mjs +2 -0
- package/dist/browser/chunk-46LRNZRG.mjs.map +1 -0
- package/dist/browser/chunk-52HFO3OY.mjs +2 -0
- package/dist/browser/chunk-52HFO3OY.mjs.map +1 -0
- package/dist/browser/chunk-643KGQKR.mjs +3 -0
- package/dist/browser/chunk-643KGQKR.mjs.map +1 -0
- package/dist/browser/chunk-66BBIZAM.mjs +3 -0
- package/dist/browser/chunk-66BBIZAM.mjs.map +1 -0
- package/dist/browser/chunk-6NPQURSO.mjs +2 -0
- package/dist/browser/chunk-6NPQURSO.mjs.map +1 -0
- package/dist/browser/chunk-6WAOMX7M.mjs +2 -0
- package/dist/browser/chunk-6WAOMX7M.mjs.map +1 -0
- package/dist/browser/chunk-77HU5SRQ.mjs +2 -0
- package/dist/browser/chunk-77HU5SRQ.mjs.map +1 -0
- package/dist/browser/chunk-AET6XULU.mjs +2 -0
- package/dist/browser/chunk-AET6XULU.mjs.map +1 -0
- package/dist/browser/chunk-BIBPE2GT.mjs +3 -0
- package/dist/browser/chunk-BIBPE2GT.mjs.map +1 -0
- package/dist/browser/chunk-CDJKU4DK.mjs +2 -0
- package/dist/browser/chunk-CDJKU4DK.mjs.map +1 -0
- package/dist/browser/chunk-CT67Y46H.mjs +3 -0
- package/dist/browser/chunk-CT67Y46H.mjs.map +1 -0
- package/dist/browser/chunk-EFC7OUNO.mjs +2 -0
- package/dist/browser/chunk-EFC7OUNO.mjs.map +1 -0
- package/dist/browser/chunk-EJIX7H7A.mjs +2 -0
- package/dist/browser/chunk-EJIX7H7A.mjs.map +1 -0
- package/dist/browser/chunk-FHJ5ATND.mjs +3 -0
- package/dist/browser/chunk-FHJ5ATND.mjs.map +1 -0
- package/dist/browser/chunk-FVH2EEVP.mjs +3 -0
- package/dist/browser/chunk-FVH2EEVP.mjs.map +1 -0
- package/dist/browser/chunk-G6ULYKSU.mjs +2 -0
- package/dist/browser/chunk-G6ULYKSU.mjs.map +1 -0
- package/dist/browser/chunk-G7MKGKG5.mjs +2 -0
- package/dist/browser/chunk-G7MKGKG5.mjs.map +1 -0
- package/dist/browser/chunk-GOMJPGVB.mjs +3 -0
- package/dist/browser/chunk-GOMJPGVB.mjs.map +1 -0
- package/dist/browser/chunk-INQV5UZA.mjs +2 -0
- package/dist/browser/chunk-INQV5UZA.mjs.map +1 -0
- package/dist/browser/chunk-INXPVBTZ.mjs +2 -0
- package/dist/browser/chunk-INXPVBTZ.mjs.map +1 -0
- package/dist/browser/chunk-KFMVTZ7T.mjs +2 -0
- package/dist/browser/chunk-KFMVTZ7T.mjs.map +1 -0
- package/dist/browser/chunk-LK6C7C3S.mjs +2 -0
- package/dist/browser/chunk-LK6C7C3S.mjs.map +1 -0
- package/dist/browser/chunk-LOGRQOWP.mjs +3 -0
- package/dist/browser/chunk-LOGRQOWP.mjs.map +1 -0
- package/dist/browser/chunk-LZACYSUC.mjs +3 -0
- package/dist/browser/chunk-LZACYSUC.mjs.map +1 -0
- package/dist/browser/chunk-NTOIVRX3.mjs +2 -0
- package/dist/browser/chunk-NTOIVRX3.mjs.map +1 -0
- package/dist/browser/chunk-OES2N3X7.mjs +3 -0
- package/dist/browser/chunk-OES2N3X7.mjs.map +1 -0
- package/dist/browser/chunk-OFKV5GNB.mjs +1 -1
- package/dist/browser/chunk-OFKV5GNB.mjs.map +1 -1
- package/dist/browser/chunk-OVLM5A32.mjs +3 -0
- package/dist/browser/chunk-OVLM5A32.mjs.map +1 -0
- package/dist/browser/chunk-QATIN7CO.mjs +1 -1
- package/dist/browser/chunk-QATIN7CO.mjs.map +1 -1
- package/dist/browser/chunk-QOL7CAUZ.mjs +2 -0
- package/dist/browser/chunk-QOL7CAUZ.mjs.map +1 -0
- package/dist/browser/chunk-RCB3PX4V.mjs +2 -0
- package/dist/browser/chunk-RCB3PX4V.mjs.map +1 -0
- package/dist/browser/chunk-RWQSCROK.mjs +3 -0
- package/dist/browser/chunk-RWQSCROK.mjs.map +1 -0
- package/dist/browser/chunk-TIAUMK2X.mjs +2 -0
- package/dist/browser/chunk-TIAUMK2X.mjs.map +1 -0
- package/dist/browser/chunk-TQPC5MYM.mjs +3 -0
- package/dist/browser/chunk-TQPC5MYM.mjs.map +1 -0
- package/dist/browser/chunk-UNIKTCXL.mjs +3 -0
- package/dist/browser/chunk-UNIKTCXL.mjs.map +1 -0
- package/dist/browser/chunk-UULJJ5C5.mjs +3 -0
- package/dist/browser/chunk-UULJJ5C5.mjs.map +1 -0
- package/dist/browser/chunk-VSSANMPF.mjs +2 -0
- package/dist/browser/chunk-VSSANMPF.mjs.map +1 -0
- package/dist/browser/chunk-VW2BZYNY.mjs +2 -0
- package/dist/browser/chunk-VW2BZYNY.mjs.map +1 -0
- package/dist/browser/chunk-WAXBOWM6.mjs +3 -0
- package/dist/browser/chunk-WAXBOWM6.mjs.map +1 -0
- package/dist/browser/chunk-WXCQCHAX.mjs +2 -0
- package/dist/browser/chunk-WXCQCHAX.mjs.map +1 -0
- package/dist/browser/chunk-XKKBIIZG.mjs +3 -0
- package/dist/browser/chunk-XKKBIIZG.mjs.map +1 -0
- package/dist/browser/chunk-XR7FVA5M.mjs +3 -0
- package/dist/browser/chunk-XR7FVA5M.mjs.map +1 -0
- package/dist/browser/chunk-YQJFTBGV.mjs +1 -1
- package/dist/browser/chunk-YQJFTBGV.mjs.map +1 -1
- package/dist/browser/chunk-YTAMZDWC.mjs +3 -0
- package/dist/browser/chunk-YTAMZDWC.mjs.map +1 -0
- package/dist/browser/chunk-ZEONOTRL.mjs +2 -0
- package/dist/browser/chunk-ZEONOTRL.mjs.map +1 -0
- package/dist/browser/completion.d.mts +10 -0
- package/dist/browser/completion.mjs +2 -0
- package/dist/browser/completion.mjs.map +1 -0
- package/dist/browser/core.d.mts +7 -6
- package/dist/browser/core.mjs +1 -1
- package/dist/browser/core.mjs.map +1 -1
- package/dist/browser/credentials.d.mts +74 -0
- package/dist/browser/credentials.mjs +2 -0
- package/dist/browser/credentials.mjs.map +1 -0
- package/dist/browser/definition.d.mts +3 -2
- package/dist/browser/definition.mjs +1 -1
- package/dist/browser/dynamic-content.d.mts +13 -0
- package/dist/browser/dynamic-content.mjs +2 -0
- package/dist/browser/dynamic-content.mjs.map +1 -0
- package/dist/browser/dynamic-feature.d.mts +66 -6
- package/dist/browser/dynamic-feature.mjs +3 -1
- package/dist/browser/dynamic-feature.mjs.map +1 -1
- package/dist/browser/dynamic-structure.d.mts +77 -3
- package/dist/browser/dynamic-structure.mjs +1 -1
- package/dist/browser/dynamic-structure.mjs.map +1 -1
- package/dist/browser/env.d.mts +16 -2
- package/dist/browser/env.mjs +1 -1
- package/dist/browser/frame-index.d.mts +70 -9
- package/dist/browser/frame-index.mjs +1 -1
- package/dist/browser/models.d.mts +64 -0
- package/dist/browser/models.mjs +2 -0
- package/dist/browser/models.mjs.map +1 -0
- package/dist/browser/namespace.d.mts +1 -1
- package/dist/browser/namespace.mjs +1 -1
- package/dist/browser/schema.d.mts +10 -0
- package/dist/browser/schema.mjs +2 -0
- package/dist/browser/schema.mjs.map +1 -0
- package/dist/browser/segment.d.mts +13 -0
- package/dist/browser/segment.mjs +2 -0
- package/dist/browser/segment.mjs.map +1 -0
- package/dist/browser/storage.d.mts +13 -7
- package/dist/browser/storage.mjs +1 -1
- package/dist/browser/vector.d.mts +7 -0
- package/dist/browser/vector.mjs +1 -1
- package/dist/cli.cjs +5593 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/node/A-FrameChannel.component--YErPxf4.d.mts +97 -0
- package/dist/node/A-FrameChannel.component-BjgqMh1B.d.ts +97 -0
- package/dist/node/A-FrameChannel.component-C0O3TaRD.d.ts +679 -0
- package/dist/node/A-FrameChannel.component-CgBZYBz0.d.mts +379 -0
- package/dist/node/A-FrameChannel.component-CkZserv3.d.ts +97 -0
- package/dist/node/A-FrameChannel.component-DMA-3sUB.d.mts +679 -0
- package/dist/node/A-FrameChannel.component-DYV8omYR.d.ts +379 -0
- package/dist/node/A-FrameChannel.component-DwgYNfFn.d.mts +97 -0
- package/dist/node/A-FrameChannel.types-B3_xWKEO.d.mts +151 -0
- package/dist/node/A-FrameChannel.types-BGcVXTqa.d.ts +205 -0
- package/dist/node/A-FrameChannel.types-Boi8QqDK.d.mts +205 -0
- package/dist/node/A-FrameChannel.types-BsE6bNky.d.mts +205 -0
- package/dist/node/A-FrameChannel.types-C-gxXl8m.d.ts +151 -0
- package/dist/node/A-FrameChannel.types-DD2B11rf.d.ts +205 -0
- package/dist/node/A-FrameChannel.types-DYMgRiCF.d.mts +205 -0
- package/dist/node/A-FrameChannel.types-DwyZRsOy.d.ts +205 -0
- package/dist/node/A-FrameCompletion.entity-Brx11JMp.d.ts +72 -0
- package/dist/node/A-FrameCompletion.entity-Dzy9sIa8.d.mts +72 -0
- package/dist/node/A-FrameDefinition.entity-BIF0sclD.d.ts +370 -0
- package/dist/node/A-FrameDefinition.entity-Bt9ua6cn.d.ts +358 -0
- package/dist/node/A-FrameDefinition.entity-C0kzaGJ0.d.ts +143 -0
- package/dist/node/A-FrameDefinition.entity-C1aK-gdl.d.mts +370 -0
- package/dist/node/A-FrameDefinition.entity-CKPXsarS.d.mts +358 -0
- package/dist/node/A-FrameDefinition.entity-yA0GsBoe.d.mts +143 -0
- package/dist/node/A-FrameDefinition.types-BA_pLGpo.d.ts +232 -0
- package/dist/node/A-FrameDefinition.types-BT02yAhQ.d.mts +232 -0
- package/dist/node/A-FrameDynamicContentOperation.context-C_aH1gEn.d.ts +297 -0
- package/dist/node/A-FrameDynamicContentOperation.context-CoViNb19.d.mts +297 -0
- package/dist/node/A-FrameDynamicContentOperation.context-DRqH2c3o.d.ts +266 -0
- package/dist/node/A-FrameDynamicContentOperation.context-Dd7Lb7X2.d.mts +266 -0
- package/dist/node/A-FrameDynamicPatch.entity-BRuF1tqs.d.mts +29 -0
- package/dist/node/A-FrameDynamicPatch.entity-BRuF1tqs.d.ts +29 -0
- package/dist/node/A-FrameDynamicStructure.entity-BVCbolMd.d.ts +210 -0
- package/dist/node/A-FrameDynamicStructure.entity-DMvI_EPT.d.mts +210 -0
- package/dist/node/A-FrameDynamicStructure.entity-DxkPP9mR.d.mts +235 -0
- package/dist/node/A-FrameDynamicStructure.entity-DxkPP9mR.d.ts +235 -0
- package/dist/node/A-FrameLogger.component.env-node-DIDBeuiz.d.mts +114 -0
- package/dist/node/A-FrameLogger.component.env-node-DIDBeuiz.d.ts +114 -0
- package/dist/node/A-FrameNamespace.entity-BDg1FUgo.d.mts +136 -0
- package/dist/node/A-FrameNamespace.entity-HDXcLGcS.d.ts +136 -0
- package/dist/node/A-FrameSchema.entity-DjYIhsoj.d.mts +141 -0
- package/dist/node/A-FrameSchema.entity-DjYIhsoj.d.ts +141 -0
- package/dist/node/A-FrameSegment.entity-C0izuOmC.d.ts +161 -0
- package/dist/node/A-FrameSegment.entity-CMCgFCWU.d.ts +146 -0
- package/dist/node/A-FrameSegment.entity-D1xjjWvG.d.mts +161 -0
- package/dist/node/A-FrameSegment.entity-D7Aj39Wh.d.mts +146 -0
- package/dist/node/A-FrameStorage.component-BnNKzvpY.d.mts +107 -0
- package/dist/node/A-FrameStorage.component-CDztogHV.d.mts +107 -0
- package/dist/node/A-FrameStorage.component-CW0YgKDI.d.mts +107 -0
- package/dist/node/A-FrameStorage.component-D4UEkIBx.d.mts +107 -0
- package/dist/node/A-FrameStorage.component-DV_jwK6r.d.ts +107 -0
- package/dist/node/A-FrameStorage.component-Di4EvbtC.d.ts +107 -0
- package/dist/node/A-FrameStorage.component-emIH1a1M.d.ts +107 -0
- package/dist/node/A-FrameStorage.component-y-JPiIQ4.d.ts +107 -0
- package/dist/node/bundle.cjs +66 -21
- package/dist/node/bundle.cjs.map +1 -1
- package/dist/node/bundle.d.mts +88 -24
- package/dist/node/bundle.d.ts +88 -24
- package/dist/node/bundle.mjs +65 -20
- package/dist/node/bundle.mjs.map +1 -1
- package/dist/node/channel.cjs +33 -26
- package/dist/node/channel.d.mts +10 -6
- package/dist/node/channel.d.ts +10 -6
- package/dist/node/channel.mjs +13 -6
- package/dist/node/chunk-2HUSP34L.mjs +55 -0
- package/dist/node/chunk-2HUSP34L.mjs.map +1 -0
- package/dist/node/chunk-2KXGI2E5.cjs +474 -0
- package/dist/node/chunk-2KXGI2E5.cjs.map +1 -0
- package/dist/node/chunk-2OQMOIR5.mjs +170 -0
- package/dist/node/chunk-2OQMOIR5.mjs.map +1 -0
- package/dist/node/chunk-2UI7RJ4Q.mjs +207 -0
- package/dist/node/chunk-2UI7RJ4Q.mjs.map +1 -0
- package/dist/node/chunk-3SLICJ3L.cjs +265 -0
- package/dist/node/chunk-3SLICJ3L.cjs.map +1 -0
- package/dist/node/chunk-3ZDHQOIU.cjs +92 -0
- package/dist/node/chunk-3ZDHQOIU.cjs.map +1 -0
- package/dist/node/chunk-5BKCX2RO.mjs +1 -1
- package/dist/node/chunk-5BKCX2RO.mjs.map +1 -1
- package/dist/node/chunk-5NCGXLP2.mjs +6 -0
- package/dist/node/chunk-5NCGXLP2.mjs.map +1 -0
- package/dist/node/chunk-5OTXZ7BB.mjs +53 -0
- package/dist/node/chunk-5OTXZ7BB.mjs.map +1 -0
- package/dist/node/chunk-5PYIATGT.mjs +469 -0
- package/dist/node/chunk-5PYIATGT.mjs.map +1 -0
- package/dist/node/chunk-64QCZG53.cjs +57 -0
- package/dist/node/chunk-64QCZG53.cjs.map +1 -0
- package/dist/node/chunk-652OEICJ.cjs +4 -0
- package/dist/node/chunk-652OEICJ.cjs.map +1 -0
- package/dist/node/chunk-674ZX6XJ.mjs +187 -0
- package/dist/node/chunk-674ZX6XJ.mjs.map +1 -0
- package/dist/node/chunk-6ID2IXYX.mjs +6 -0
- package/dist/node/chunk-6ID2IXYX.mjs.map +1 -0
- package/dist/node/chunk-7EM3Q7HA.mjs +655 -0
- package/dist/node/chunk-7EM3Q7HA.mjs.map +1 -0
- package/dist/node/chunk-7MVVMISA.cjs +293 -0
- package/dist/node/chunk-7MVVMISA.cjs.map +1 -0
- package/dist/node/chunk-7NSLGCAZ.mjs +1395 -0
- package/dist/node/chunk-7NSLGCAZ.mjs.map +1 -0
- package/dist/node/chunk-7OLLATCC.mjs +1289 -0
- package/dist/node/chunk-7OLLATCC.mjs.map +1 -0
- package/dist/node/chunk-7SEZMRLI.cjs +183 -0
- package/dist/node/chunk-7SEZMRLI.cjs.map +1 -0
- package/dist/node/chunk-A4CVDMSV.mjs +608 -0
- package/dist/node/chunk-A4CVDMSV.mjs.map +1 -0
- package/dist/node/chunk-A7CJIUYY.cjs +4 -0
- package/dist/node/chunk-A7CJIUYY.cjs.map +1 -0
- package/dist/node/chunk-ALFFUJ2J.mjs +163 -0
- package/dist/node/chunk-ALFFUJ2J.mjs.map +1 -0
- package/dist/node/chunk-AMMQ76RJ.mjs +179 -0
- package/dist/node/chunk-AMMQ76RJ.mjs.map +1 -0
- package/dist/node/chunk-AUKWKGVA.cjs +688 -0
- package/dist/node/chunk-AUKWKGVA.cjs.map +1 -0
- package/dist/node/chunk-AY6UMDWD.cjs +270 -0
- package/dist/node/chunk-AY6UMDWD.cjs.map +1 -0
- package/dist/node/chunk-B7ZDJXD3.cjs +1 -1
- package/dist/node/chunk-B7ZDJXD3.cjs.map +1 -1
- package/dist/node/chunk-BBYOL3LM.cjs +1308 -0
- package/dist/node/chunk-BBYOL3LM.cjs.map +1 -0
- package/dist/node/chunk-BINGAHFW.cjs +1308 -0
- package/dist/node/chunk-BINGAHFW.cjs.map +1 -0
- package/dist/node/chunk-BSBY37MG.cjs +55 -0
- package/dist/node/chunk-BSBY37MG.cjs.map +1 -0
- package/dist/node/chunk-BWX7HFTH.cjs +209 -0
- package/dist/node/chunk-BWX7HFTH.cjs.map +1 -0
- package/dist/node/chunk-C37B34MH.cjs +188 -0
- package/dist/node/chunk-C37B34MH.cjs.map +1 -0
- package/dist/node/chunk-C6BBKHQG.cjs +250 -0
- package/dist/node/chunk-C6BBKHQG.cjs.map +1 -0
- package/dist/node/chunk-CLCAS67N.cjs +8 -0
- package/dist/node/chunk-CLCAS67N.cjs.map +1 -0
- package/dist/node/chunk-CNU3CRTR.mjs +43 -0
- package/dist/node/chunk-CNU3CRTR.mjs.map +1 -0
- package/dist/node/chunk-CV5FPKU6.mjs +6 -0
- package/dist/node/chunk-CV5FPKU6.mjs.map +1 -0
- package/dist/node/chunk-CZYOAFIR.mjs +129 -0
- package/dist/node/chunk-CZYOAFIR.mjs.map +1 -0
- package/dist/node/chunk-D2HTYEJZ.cjs +209 -0
- package/dist/node/chunk-D2HTYEJZ.cjs.map +1 -0
- package/dist/node/chunk-EMLZZPOT.cjs +1446 -0
- package/dist/node/chunk-EMLZZPOT.cjs.map +1 -0
- package/dist/node/chunk-EOIXXXBV.cjs +55 -0
- package/dist/node/chunk-EOIXXXBV.cjs.map +1 -0
- package/dist/node/chunk-F4UCOZW5.mjs +1 -1
- package/dist/node/chunk-F4UCOZW5.mjs.map +1 -1
- package/dist/node/chunk-F64CK4NI.mjs +53 -0
- package/dist/node/chunk-F64CK4NI.mjs.map +1 -0
- package/dist/node/chunk-FAV62EUG.cjs +35 -0
- package/dist/node/chunk-FAV62EUG.cjs.map +1 -0
- package/dist/node/chunk-GHSPKZUN.mjs +529 -0
- package/dist/node/chunk-GHSPKZUN.mjs.map +1 -0
- package/dist/node/chunk-GRNVK7DW.mjs +97 -0
- package/dist/node/chunk-GRNVK7DW.mjs.map +1 -0
- package/dist/node/chunk-H5VGRPD5.cjs +8 -0
- package/dist/node/chunk-H5VGRPD5.cjs.map +1 -0
- package/dist/node/chunk-HAMDDCPS.cjs +8 -0
- package/dist/node/chunk-HAMDDCPS.cjs.map +1 -0
- package/dist/node/chunk-HAORARSB.cjs +75 -0
- package/dist/node/chunk-HAORARSB.cjs.map +1 -0
- package/dist/node/chunk-HELNAM5Y.cjs +8 -0
- package/dist/node/chunk-HELNAM5Y.cjs.map +1 -0
- package/dist/node/chunk-HET6L5PD.mjs +530 -0
- package/dist/node/chunk-HET6L5PD.mjs.map +1 -0
- package/dist/node/chunk-HI5SEX53.mjs +264 -0
- package/dist/node/chunk-HI5SEX53.mjs.map +1 -0
- package/dist/node/chunk-HZGFXE4Q.mjs +6 -0
- package/dist/node/chunk-HZGFXE4Q.mjs.map +1 -0
- package/dist/node/chunk-IAL2NK2V.mjs +73 -0
- package/dist/node/chunk-IAL2NK2V.mjs.map +1 -0
- package/dist/node/chunk-IHELFDCW.mjs +327 -0
- package/dist/node/chunk-IHELFDCW.mjs.map +1 -0
- package/dist/node/chunk-ILD6OSYW.mjs +966 -0
- package/dist/node/chunk-ILD6OSYW.mjs.map +1 -0
- package/dist/node/chunk-IP6DFAO7.mjs +264 -0
- package/dist/node/chunk-IP6DFAO7.mjs.map +1 -0
- package/dist/node/chunk-IYEDO7OQ.cjs +276 -0
- package/dist/node/chunk-IYEDO7OQ.cjs.map +1 -0
- package/dist/node/chunk-JFPGFPQD.mjs +1413 -0
- package/dist/node/chunk-JFPGFPQD.mjs.map +1 -0
- package/dist/node/chunk-JHZGTVYF.cjs +999 -0
- package/dist/node/chunk-JHZGTVYF.cjs.map +1 -0
- package/dist/node/chunk-JN3UJBUH.mjs +608 -0
- package/dist/node/chunk-JN3UJBUH.mjs.map +1 -0
- package/dist/node/chunk-JNPDXCCN.mjs +530 -0
- package/dist/node/chunk-JNPDXCCN.mjs.map +1 -0
- package/dist/node/chunk-JQBYDEMW.mjs +1 -1
- package/dist/node/chunk-JQBYDEMW.mjs.map +1 -1
- package/dist/node/chunk-JQJ7N4NL.cjs +267 -0
- package/dist/node/chunk-JQJ7N4NL.cjs.map +1 -0
- package/dist/node/chunk-K4AJBPPY.cjs +174 -0
- package/dist/node/chunk-K4AJBPPY.cjs.map +1 -0
- package/dist/node/chunk-K7SXPJPK.cjs +131 -0
- package/dist/node/chunk-K7SXPJPK.cjs.map +1 -0
- package/dist/node/chunk-KFW4GE7H.mjs +1289 -0
- package/dist/node/chunk-KFW4GE7H.mjs.map +1 -0
- package/dist/node/chunk-KKL2DF2D.cjs +518 -0
- package/dist/node/chunk-KKL2DF2D.cjs.map +1 -0
- package/dist/node/chunk-KKMKQGTR.cjs +620 -0
- package/dist/node/chunk-KKMKQGTR.cjs.map +1 -0
- package/dist/node/chunk-KNTO7FCZ.mjs +207 -0
- package/dist/node/chunk-KNTO7FCZ.mjs.map +1 -0
- package/dist/node/chunk-KTKVW3PH.mjs +286 -0
- package/dist/node/chunk-KTKVW3PH.mjs.map +1 -0
- package/dist/node/chunk-KZPSF32W.mjs +33 -0
- package/dist/node/chunk-KZPSF32W.mjs.map +1 -0
- package/dist/node/chunk-LWKFCMA7.mjs +129 -0
- package/dist/node/chunk-LWKFCMA7.mjs.map +1 -0
- package/dist/node/chunk-M2ZSE6YJ.mjs +512 -0
- package/dist/node/chunk-M2ZSE6YJ.mjs.map +1 -0
- package/dist/node/chunk-M6DJYGDO.cjs +167 -0
- package/dist/node/chunk-M6DJYGDO.cjs.map +1 -0
- package/dist/node/chunk-MAHKDTOQ.mjs +3 -0
- package/dist/node/chunk-MAHKDTOQ.mjs.map +1 -0
- package/dist/node/chunk-MM2R2OM6.cjs +541 -0
- package/dist/node/chunk-MM2R2OM6.cjs.map +1 -0
- package/dist/node/chunk-MSOD5UQH.cjs +45 -0
- package/dist/node/chunk-MSOD5UQH.cjs.map +1 -0
- package/dist/node/chunk-MVAWR76Q.cjs +276 -0
- package/dist/node/chunk-MVAWR76Q.cjs.map +1 -0
- package/dist/node/chunk-MXUO7OR5.cjs +97 -0
- package/dist/node/chunk-MXUO7OR5.cjs.map +1 -0
- package/dist/node/chunk-N4THTV6P.cjs +131 -0
- package/dist/node/chunk-N4THTV6P.cjs.map +1 -0
- package/dist/node/chunk-NIXKAQVP.cjs +1 -1
- package/dist/node/chunk-NIXKAQVP.cjs.map +1 -1
- package/dist/node/chunk-NUPXUUPM.cjs +1428 -0
- package/dist/node/chunk-NUPXUUPM.cjs.map +1 -0
- package/dist/node/chunk-NWOUVAIS.cjs +45 -0
- package/dist/node/chunk-NWOUVAIS.cjs.map +1 -0
- package/dist/node/chunk-OK7I5OQ3.mjs +89 -0
- package/dist/node/chunk-OK7I5OQ3.mjs.map +1 -0
- package/dist/node/chunk-OMGYXCFM.mjs +248 -0
- package/dist/node/chunk-OMGYXCFM.mjs.map +1 -0
- package/dist/node/chunk-OYZAQMKD.mjs +263 -0
- package/dist/node/chunk-OYZAQMKD.mjs.map +1 -0
- package/dist/node/chunk-P2LULMNL.cjs +189 -0
- package/dist/node/chunk-P2LULMNL.cjs.map +1 -0
- package/dist/node/chunk-PABEFHCO.mjs +63 -0
- package/dist/node/chunk-PABEFHCO.mjs.map +1 -0
- package/dist/node/chunk-Q5NYJQP2.cjs +8 -0
- package/dist/node/chunk-Q5NYJQP2.cjs.map +1 -0
- package/dist/node/chunk-QCEWWJ3N.cjs +65 -0
- package/dist/node/chunk-QCEWWJ3N.cjs.map +1 -0
- package/dist/node/chunk-QW4AZ3Z2.cjs +542 -0
- package/dist/node/chunk-QW4AZ3Z2.cjs.map +1 -0
- package/dist/node/chunk-RK5WSZ5J.mjs +43 -0
- package/dist/node/chunk-RK5WSZ5J.mjs.map +1 -0
- package/dist/node/chunk-RPHYBPXT.mjs +30 -0
- package/dist/node/chunk-RPHYBPXT.mjs.map +1 -0
- package/dist/node/chunk-RVXASBMQ.mjs +273 -0
- package/dist/node/chunk-RVXASBMQ.mjs.map +1 -0
- package/dist/node/chunk-RVZTZD32.mjs +187 -0
- package/dist/node/chunk-RVZTZD32.mjs.map +1 -0
- package/dist/node/chunk-RWLKISZQ.mjs +273 -0
- package/dist/node/chunk-RWLKISZQ.mjs.map +1 -0
- package/dist/node/chunk-SESXQJDD.cjs +999 -0
- package/dist/node/chunk-SESXQJDD.cjs.map +1 -0
- package/dist/node/chunk-SKIEPTFS.mjs +6 -0
- package/dist/node/chunk-SKIEPTFS.mjs.map +1 -0
- package/dist/node/chunk-SL7FT5R5.mjs +94 -0
- package/dist/node/chunk-SL7FT5R5.mjs.map +1 -0
- package/dist/node/chunk-SXHQW74T.mjs +43 -0
- package/dist/node/chunk-SXHQW74T.mjs.map +1 -0
- package/dist/node/chunk-TEJKDVNT.cjs +620 -0
- package/dist/node/chunk-TEJKDVNT.cjs.map +1 -0
- package/dist/node/chunk-TQS5WYND.cjs +352 -0
- package/dist/node/chunk-TQS5WYND.cjs.map +1 -0
- package/dist/node/chunk-UCAWV2IG.mjs +184 -0
- package/dist/node/chunk-UCAWV2IG.mjs.map +1 -0
- package/dist/node/chunk-UDUJDEAO.cjs +189 -0
- package/dist/node/chunk-UDUJDEAO.cjs.map +1 -0
- package/dist/node/chunk-VMJDL4SS.cjs +542 -0
- package/dist/node/chunk-VMJDL4SS.cjs.map +1 -0
- package/dist/node/chunk-VNOZTB3B.cjs +8 -0
- package/dist/node/chunk-VNOZTB3B.cjs.map +1 -0
- package/dist/node/chunk-VPMBZGYR.mjs +327 -0
- package/dist/node/chunk-VPMBZGYR.mjs.map +1 -0
- package/dist/node/chunk-WEPNBKOA.mjs +6 -0
- package/dist/node/chunk-WEPNBKOA.mjs.map +1 -0
- package/dist/node/chunk-WTBRJXFG.cjs +100 -0
- package/dist/node/chunk-WTBRJXFG.cjs.map +1 -0
- package/dist/node/chunk-WXCQCHAX.mjs +3 -0
- package/dist/node/chunk-WXCQCHAX.mjs.map +1 -0
- package/dist/node/chunk-X3TRPYGV.cjs +352 -0
- package/dist/node/chunk-X3TRPYGV.cjs.map +1 -0
- package/dist/node/chunk-XFUF7SDO.cjs +1 -1
- package/dist/node/chunk-XFUF7SDO.cjs.map +1 -1
- package/dist/node/chunk-XP2EPEBM.mjs +966 -0
- package/dist/node/chunk-XP2EPEBM.mjs.map +1 -0
- package/dist/node/chunk-XPIJ6BKP.cjs +45 -0
- package/dist/node/chunk-XPIJ6BKP.cjs.map +1 -0
- package/dist/node/chunk-YRVBMP7I.cjs +542 -0
- package/dist/node/chunk-YRVBMP7I.cjs.map +1 -0
- package/dist/node/chunk-ZIHSN5EE.mjs +530 -0
- package/dist/node/chunk-ZIHSN5EE.mjs.map +1 -0
- package/dist/node/chunk-ZNQMUU7I.cjs +32 -0
- package/dist/node/chunk-ZNQMUU7I.cjs.map +1 -0
- package/dist/node/completion.cjs +23 -0
- package/dist/node/completion.cjs.map +1 -0
- package/dist/node/completion.d.mts +10 -0
- package/dist/node/completion.d.ts +10 -0
- package/dist/node/completion.mjs +6 -0
- package/dist/node/completion.mjs.map +1 -0
- package/dist/node/core.cjs +67 -38
- package/dist/node/core.cjs.map +1 -1
- package/dist/node/core.d.mts +13 -8
- package/dist/node/core.d.ts +13 -8
- package/dist/node/core.mjs +58 -29
- package/dist/node/core.mjs.map +1 -1
- package/dist/node/credentials.cjs +17 -0
- package/dist/node/credentials.cjs.map +1 -0
- package/dist/node/credentials.d.mts +74 -0
- package/dist/node/credentials.d.ts +74 -0
- package/dist/node/credentials.mjs +4 -0
- package/dist/node/credentials.mjs.map +1 -0
- package/dist/node/definition.cjs +6 -4
- package/dist/node/definition.d.mts +3 -2
- package/dist/node/definition.d.ts +3 -2
- package/dist/node/definition.mjs +4 -2
- package/dist/node/dynamic-content.cjs +30 -0
- package/dist/node/dynamic-content.cjs.map +1 -0
- package/dist/node/dynamic-content.d.mts +13 -0
- package/dist/node/dynamic-content.d.ts +13 -0
- package/dist/node/dynamic-content.mjs +9 -0
- package/dist/node/dynamic-content.mjs.map +1 -0
- package/dist/node/dynamic-feature.cjs +41 -7
- package/dist/node/dynamic-feature.cjs.map +1 -1
- package/dist/node/dynamic-feature.d.mts +66 -6
- package/dist/node/dynamic-feature.d.ts +66 -6
- package/dist/node/dynamic-feature.mjs +16 -9
- package/dist/node/dynamic-feature.mjs.map +1 -1
- package/dist/node/dynamic-structure.cjs +45 -136
- package/dist/node/dynamic-structure.cjs.map +1 -1
- package/dist/node/dynamic-structure.d.mts +77 -3
- package/dist/node/dynamic-structure.d.ts +77 -3
- package/dist/node/dynamic-structure.mjs +16 -135
- package/dist/node/dynamic-structure.mjs.map +1 -1
- package/dist/node/env.cjs +3 -3
- package/dist/node/env.d.mts +26 -0
- package/dist/node/env.d.ts +26 -0
- package/dist/node/env.mjs +2 -2
- package/dist/node/frame-index.cjs +7 -4
- package/dist/node/frame-index.d.mts +70 -9
- package/dist/node/frame-index.d.ts +70 -9
- package/dist/node/frame-index.mjs +6 -3
- package/dist/node/logger.d.mts +4 -113
- package/dist/node/logger.d.ts +4 -113
- package/dist/node/models.cjs +14 -0
- package/dist/node/models.cjs.map +1 -0
- package/dist/node/models.d.mts +64 -0
- package/dist/node/models.d.ts +64 -0
- package/dist/node/models.mjs +5 -0
- package/dist/node/models.mjs.map +1 -0
- package/dist/node/namespace.cjs +7 -5
- package/dist/node/namespace.d.mts +1 -1
- package/dist/node/namespace.d.ts +1 -1
- package/dist/node/namespace.mjs +4 -2
- package/dist/node/schema.cjs +22 -0
- package/dist/node/schema.cjs.map +1 -0
- package/dist/node/schema.d.mts +10 -0
- package/dist/node/schema.d.ts +10 -0
- package/dist/node/schema.mjs +5 -0
- package/dist/node/schema.mjs.map +1 -0
- package/dist/node/segment.cjs +25 -0
- package/dist/node/segment.cjs.map +1 -0
- package/dist/node/segment.d.mts +13 -0
- package/dist/node/segment.d.ts +13 -0
- package/dist/node/segment.mjs +8 -0
- package/dist/node/segment.mjs.map +1 -0
- package/dist/node/storage.cjs +17 -14
- package/dist/node/storage.d.mts +18 -6
- package/dist/node/storage.d.ts +18 -6
- package/dist/node/storage.mjs +11 -8
- package/dist/node/vector.cjs +2 -2
- package/dist/node/vector.d.mts +7 -0
- package/dist/node/vector.d.ts +7 -0
- package/dist/node/vector.mjs +1 -1
- package/examples/article/main.ts +358 -0
- package/examples/components.ts +660 -0
- package/examples/feature/file-system.components.ts +211 -0
- package/examples/feature/main.ts +374 -0
- package/examples/interaction/main.ts +426 -0
- package/examples/logger.ts +126 -0
- package/examples/structure/main.ts +195 -0
- package/examples/structure/renderer.ts +296 -0
- package/examples/structure/server-app.components.ts +387 -0
- package/jest.config.browser.ts +9 -0
- package/jest.config.examples.ts +49 -0
- package/jest.config.integration.ts +38 -0
- package/jest.config.ts +56 -27
- package/jest.config.unit.ts +38 -0
- package/package.json +75 -7
- package/src/index.ts +13 -0
- package/src/lib/A-Frame/A-Frame.component.env-browser.ts +14 -3
- package/src/lib/A-Frame/A-Frame.component.env-node.ts +45 -15
- package/src/lib/A-Frame/A-Frame.context.ts +9 -8
- package/src/lib/A-Frame/decorators/A-FrameDefine.decorator.ts +4 -4
- package/src/lib/A-FrameBundle/A-FrameBundle.builder.env-node.ts +95 -25
- package/src/lib/A-FrameBundle/A-FrameBundle.constants.ts +1 -1
- package/src/lib/A-FrameBundle/A-FrameBundle.types.ts +54 -13
- package/src/lib/A-FrameBundle/index.browser.ts +1 -1
- package/src/lib/A-FrameBundle/index.ts +1 -1
- package/src/lib/A-FrameCLI/A-FrameCLI.container.ts +18 -7
- package/src/lib/A-FrameChannel/A-FrameChannel.component.env-browser.ts +0 -2
- package/src/lib/A-FrameChannel/A-FrameChannel.component.env-node.ts +14 -15
- package/src/lib/A-FrameChannel/A-FrameChannel.component.ts +542 -7
- package/src/lib/A-FrameChannel/A-FrameChannel.constants.ts +2 -0
- package/src/lib/A-FrameChannel/A-FrameChannel.types.ts +65 -1
- package/src/lib/A-FrameChannel/A-FrameChannelDsgStream.entity.ts +112 -0
- package/src/lib/A-FrameChannel/A-FrameChannelStream.entity.ts +1 -0
- package/src/lib/A-FrameChannel/index.browser.ts +5 -0
- package/src/lib/A-FrameCompletion/A-FrameCompletion.constants.ts +3 -0
- package/src/lib/A-FrameCompletion/A-FrameCompletion.entity.ts +128 -0
- package/src/lib/A-FrameCompletion/A-FrameCompletion.types.ts +40 -0
- package/src/lib/A-FrameCompletion/index.ts +3 -0
- package/src/lib/A-FrameCredentials/A-FrameCredentials.constants.ts +5 -0
- package/src/lib/A-FrameCredentials/A-FrameCredentials.entity.ts +120 -0
- package/src/lib/A-FrameCredentials/A-FrameCredentials.types.ts +39 -0
- package/src/lib/A-FrameCredentials/index.ts +3 -0
- package/src/lib/A-FrameDefinition/A-FrameDefinition.entity.ts +23 -1
- package/src/lib/A-FrameDefinition/A-FrameDefinition.types.ts +34 -1
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContent.constants.ts +5 -0
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContent.entity.ts +348 -0
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContent.error.ts +10 -0
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContent.types.ts +116 -0
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContentIndex.context.ts +288 -0
- package/src/lib/A-FrameDynamicContent/A-FrameDynamicContentOperation.context.ts +26 -0
- package/src/lib/A-FrameDynamicContent/index.ts +5 -0
- package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.constants.ts +6 -0
- package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.entity.ts +253 -4
- package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.error.ts +11 -0
- package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.types.ts +188 -4
- package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeatureOperation.context.ts +33 -0
- package/src/lib/A-FrameDynamicFeature/A-FrameMethodMapIndex.context.ts +99 -0
- package/src/lib/A-FrameDynamicFeature/A-FrameMethodMapper.component.ts +182 -0
- package/src/lib/A-FrameDynamicFeature/index.ts +6 -1
- package/src/lib/A-FrameDynamicPatch/index.ts +2 -0
- package/src/lib/A-FrameDynamicStructure/A-FrameComponentMapIndex.context.ts +99 -0
- package/src/lib/A-FrameDynamicStructure/A-FrameComponentMapper.component.ts +320 -0
- package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.constants.ts +2 -1
- package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.entity.ts +240 -128
- package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.types.ts +183 -87
- package/src/lib/A-FrameDynamicStructure/index.ts +3 -0
- package/src/lib/A-FrameEnv/A-FrameEnv.fragment.env-browser.ts +5 -1
- package/src/lib/A-FrameEnv/A-FrameEnv.fragment.env-node.ts +23 -1
- package/src/lib/A-FrameEnv/A-FrameEnv.types.ts +12 -0
- package/src/lib/A-FrameIndex/A-FrameIndex.context.ts +63 -13
- package/src/lib/A-FrameIndex/A-FrameIndex.types.ts +53 -0
- package/src/lib/A-FrameModels/A-FrameModels.constants.ts +75 -0
- package/src/lib/A-FrameModels/index.ts +1 -0
- package/src/lib/A-FrameNamespace/A-FrameNamespace.entity.ts +10 -3
- package/src/lib/A-FrameNamespace/A-FrameNamespace.types.ts +5 -0
- package/src/lib/A-FrameSchema/A-FrameSchema.constants.ts +4 -0
- package/src/lib/A-FrameSchema/A-FrameSchema.entity.ts +154 -0
- package/src/lib/A-FrameSchema/A-FrameSchema.types.ts +88 -0
- package/src/lib/A-FrameSchema/index.ts +3 -0
- package/src/lib/A-FrameSegment/A-FrameSegment.constants.ts +12 -0
- package/src/lib/A-FrameSegment/A-FrameSegment.entity.ts +221 -0
- package/src/lib/A-FrameSegment/A-FrameSegment.types.ts +91 -0
- package/src/lib/A-FrameSegment/index.ts +3 -0
- package/src/lib/A-FrameStorage/A-FrameStorage.codec.ts +10 -4
- package/src/lib/A-FrameStorage/browser/A-FrameBrowserStorage.component.ts +21 -0
- package/src/lib/A-FrameStorage/browser/A-FrameBrowserStorageBlobs.context.ts +39 -21
- package/src/lib/A-FrameStorage/node/A-FrameNodeStorage.component.ts +124 -42
- package/src/lib/A-FrameVector/A-FrameVector.entity.ts +24 -0
- package/tests/A-Frame.browser.test.ts +167 -57
- package/tests/A-FrameDynamicContent.browser.test.ts +74 -0
- package/tests/integration/A-Frame.integration.test.ts +272 -0
- package/tests/integration/A-FrameCompletion.integration.test.ts +88 -0
- package/tests/integration/A-FrameContentMapping.integration.test.ts +261 -0
- package/tests/integration/A-FrameDefinition.integration.test.ts +154 -0
- package/tests/integration/A-FrameDynamicContent.integration.test.ts +126 -0
- package/tests/integration/A-FrameDynamicFeature.integration.test.ts +337 -0
- package/tests/integration/A-FrameDynamicStructure.integration.test.ts +264 -0
- package/tests/integration/A-FrameNamespace.integration.test.ts +109 -0
- package/tests/integration/A-FrameSchema.integration.test.ts +74 -0
- package/tests/integration/A-FrameSegment.integration.test.ts +102 -0
- package/tests/integration/A-FrameStorage.integration.test.ts +598 -0
- package/tests/jest.setup.browser.ts +1 -1
- package/tests/jest.setup.ts +4 -0
- package/tests/jest.setup.unit.ts +30 -0
- package/tests/unit/A-FrameChannel.unit.test.ts +124 -0
- package/tests/unit/A-FrameCompletion.unit.test.ts +25 -0
- package/tests/unit/A-FrameDefinition.unit.test.ts +36 -0
- package/tests/unit/A-FrameDynamicContent.unit.test.ts +28 -0
- package/tests/unit/A-FrameNamespace.unit.test.ts +35 -0
- package/tests/unit/A-FrameSchema.unit.test.ts +31 -0
- package/tests/unit/A-FrameSegment.unit.test.ts +20 -0
- package/tests/unit/mocks/MockA_FrameChannel.ts +112 -0
- package/tsconfig.browser.json +2 -0
- package/tsconfig.json +6 -0
- package/tsup.config.ts +52 -0
- package/tests/A-Frame.test.ts +0 -98
|
@@ -229,6 +229,17 @@ export class A_FrameBrowserStorageProvider extends A_FrameStorage {
|
|
|
229
229
|
@A_Inject(A_FrameStorageCodec) codec: A_FrameStorageCodec,
|
|
230
230
|
@A_Inject(A_FrameBrowserStorageBlobs) blobs: A_FrameBrowserStorageBlobs,
|
|
231
231
|
): Promise<void> {
|
|
232
|
+
// ── 1. Check plain record store (pre-built bundle, no key needed) ───────
|
|
233
|
+
const plainRecords = blobs.plainStore.get(definition.namespace.id);
|
|
234
|
+
if (plainRecords?.length) {
|
|
235
|
+
const record = plainRecords.find(r => r.aseid === definition.aseid.toString());
|
|
236
|
+
if (record && record.hash === definition.hash) {
|
|
237
|
+
definition.fromJSON(record);
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
// ── 2. Fall back to encrypted blob store (live session) ──────────────────
|
|
232
243
|
if (!context.encryptionKey) return;
|
|
233
244
|
|
|
234
245
|
const records = await this._loadDefinitionsFromMemory(
|
|
@@ -261,6 +272,16 @@ export class A_FrameBrowserStorageProvider extends A_FrameStorage {
|
|
|
261
272
|
@A_Inject(A_FrameStorageCodec) codec: A_FrameStorageCodec,
|
|
262
273
|
@A_Inject(A_FrameBrowserStorageBlobs) blobs: A_FrameBrowserStorageBlobs,
|
|
263
274
|
): Promise<void> {
|
|
275
|
+
// ── 1. Check plain record store (pre-built bundle, no key needed) ───────
|
|
276
|
+
if (blobs.plainNamespaceRecords?.length) {
|
|
277
|
+
const record = blobs.plainNamespaceRecords.find(r => r.aseid === namespace.aseid.toString());
|
|
278
|
+
if (record && record.hash === namespace.hash) {
|
|
279
|
+
namespace.fromJSON(record);
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
// ── 2. Fall back to encrypted blob store (live session) ──────────────────
|
|
264
285
|
if (!context.encryptionKey) return;
|
|
265
286
|
|
|
266
287
|
const records = await this._loadNamespacesFromMemory(blobs, context.encryptionKey, codec);
|
|
@@ -5,19 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
import { A_Fragment } from "@adaas/a-concept";
|
|
7
7
|
import type { A_FrameBundle } from "@adaas/a-frame/bundle";
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
/** Browser-safe base64 → Uint8Array (uses globalThis.atob; falls back to Buffer in Node tests). */
|
|
11
|
-
function decodeBase64(b64: string): Uint8Array {
|
|
12
|
-
if (typeof atob === 'function') {
|
|
13
|
-
const bin = atob(b64);
|
|
14
|
-
const out = new Uint8Array(bin.length);
|
|
15
|
-
for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i);
|
|
16
|
-
return out;
|
|
17
|
-
}
|
|
18
|
-
// Node fallback so the same fragment works in Jest/SSR.
|
|
19
|
-
return new Uint8Array(Buffer.from(b64, 'base64'));
|
|
20
|
-
}
|
|
8
|
+
import type { A_FrameDefinition_Serialized } from "../../A-FrameDefinition/A-FrameDefinition.types";
|
|
9
|
+
import type { A_FrameNamespace_Serialized } from "../../A-FrameNamespace/A-FrameNamespace.types";
|
|
21
10
|
|
|
22
11
|
|
|
23
12
|
export class A_FrameBrowserStorageBlobs extends A_Fragment {
|
|
@@ -48,30 +37,59 @@ export class A_FrameBrowserStorageBlobs extends A_Fragment {
|
|
|
48
37
|
super({ name: 'a-frame-browser-storage-blobs' });
|
|
49
38
|
}
|
|
50
39
|
|
|
51
|
-
|
|
40
|
+
// ─── Encrypted blob store (live session writes) ───────────────────────────
|
|
41
|
+
|
|
42
|
+
/** namespace → encrypted definition bytes (written during live browser session) */
|
|
52
43
|
readonly store = new Map<string, Uint8Array>();
|
|
53
44
|
|
|
54
45
|
/** encrypted bytes for the namespace index (`__namespaces.aframe` equivalent) */
|
|
55
46
|
namespaceBlob: Uint8Array | null = null;
|
|
56
47
|
|
|
48
|
+
// ─── Plain record store (populated from pre-built bundle) ─────────────────
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* namespace → decoded definition records loaded from a pre-built bundle.
|
|
52
|
+
* No encryption key needed — records are stored as plain JSON-friendly objects.
|
|
53
|
+
* Takes precedence over the encrypted `store` during load.
|
|
54
|
+
*/
|
|
55
|
+
readonly plainStore = new Map<string, A_FrameDefinition_Serialized[]>();
|
|
56
|
+
|
|
57
|
+
/** Decoded namespace records from the bundle. */
|
|
58
|
+
plainNamespaceRecords: A_FrameNamespace_Serialized[] | null = null;
|
|
59
|
+
|
|
57
60
|
/** Bundle metadata recorded at seed time, used by A_Frame to validate versions. */
|
|
58
61
|
bundleMeta: { aFrameVersion: string; serverVersion: string; builtAt: string } | null = null;
|
|
59
62
|
|
|
63
|
+
/** Returns true when a pre-built bundle has been seeded into plainStore. */
|
|
64
|
+
get hasBundleData(): boolean {
|
|
65
|
+
return this.plainStore.size > 0 || (this.plainNamespaceRecords?.length ?? 0) > 0;
|
|
66
|
+
}
|
|
67
|
+
|
|
60
68
|
/**
|
|
61
|
-
* Populate the store from a bundle artifact.
|
|
62
|
-
* same namespace are overwritten; unrelated entries
|
|
69
|
+
* Populate the plain record store from a bundle artifact.
|
|
70
|
+
* Existing entries with the same namespace are overwritten; unrelated entries preserved.
|
|
71
|
+
* No encryption key is required — the bundle stores decoded plain records.
|
|
63
72
|
*/
|
|
64
73
|
seedFromBundle(bundle: A_FrameBundle): void {
|
|
65
|
-
|
|
66
|
-
this.
|
|
74
|
+
for (const [ns, recs] of Object.entries(bundle.records ?? {})) {
|
|
75
|
+
this.plainStore.set(ns, recs.map(r => ({
|
|
76
|
+
...r,
|
|
77
|
+
// JSON stores embedding as number[] — convert to Float32Array for in-memory use
|
|
78
|
+
embedding: r.embedding.length > 0 ? new Float32Array(r.embedding) : undefined,
|
|
79
|
+
} as A_FrameDefinition_Serialized)));
|
|
67
80
|
}
|
|
68
|
-
|
|
69
|
-
|
|
81
|
+
|
|
82
|
+
if (bundle.namespaceRecords?.length) {
|
|
83
|
+
this.plainNamespaceRecords = bundle.namespaceRecords.map(r => ({
|
|
84
|
+
...r,
|
|
85
|
+
embedding: r.embedding.length > 0 ? new Float32Array(r.embedding) : undefined,
|
|
86
|
+
} as A_FrameNamespace_Serialized));
|
|
70
87
|
}
|
|
88
|
+
|
|
71
89
|
this.bundleMeta = {
|
|
72
90
|
aFrameVersion: bundle.aFrameVersion,
|
|
73
91
|
serverVersion: bundle.serverVersion,
|
|
74
92
|
builtAt: bundle.builtAt,
|
|
75
93
|
};
|
|
76
94
|
}
|
|
77
|
-
}
|
|
95
|
+
}
|
|
@@ -41,6 +41,27 @@ export class A_FrameNodeStorage extends A_FrameStorage {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Resolves extra storage directories by expanding each comma-separated glob
|
|
46
|
+
* pattern in `pattern`. Returns an empty array when `pattern` is blank or
|
|
47
|
+
* when no paths match. Errors from unsupported patterns are swallowed so
|
|
48
|
+
* that a bad env value never breaks the application.
|
|
49
|
+
*/
|
|
50
|
+
private async listExtraStorageDirs(pattern: string): Promise<string[]> {
|
|
51
|
+
if (!pattern) return [];
|
|
52
|
+
const dirs: string[] = [];
|
|
53
|
+
for (const p of pattern.split(',').map(s => s.trim()).filter(Boolean)) {
|
|
54
|
+
try {
|
|
55
|
+
for await (const match of fs.glob(p)) {
|
|
56
|
+
dirs.push(match);
|
|
57
|
+
}
|
|
58
|
+
} catch {
|
|
59
|
+
// unsupported pattern or no matches — skip silently
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return dirs;
|
|
63
|
+
}
|
|
64
|
+
|
|
44
65
|
//---------------------------------------------------------------------------------------
|
|
45
66
|
//--------------------------Definition Features Extensions-------------------------------
|
|
46
67
|
//---------------------------------------------------------------------------------------
|
|
@@ -69,7 +90,7 @@ export class A_FrameNodeStorage extends A_FrameStorage {
|
|
|
69
90
|
if (!incoming.embedding)
|
|
70
91
|
throw new Error('Only definitions with embeddings can be saved to storage');
|
|
71
92
|
|
|
72
|
-
const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.
|
|
93
|
+
const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(namespace.id)));
|
|
73
94
|
const existing: A_FrameDefinition_Serialized[] = rawBuf
|
|
74
95
|
? codec.decodePayload(await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!))
|
|
75
96
|
: [];
|
|
@@ -83,7 +104,7 @@ export class A_FrameNodeStorage extends A_FrameStorage {
|
|
|
83
104
|
const encrypted = await aFrameCrypto.encryptBytes(payload, context.encryptionKey!);
|
|
84
105
|
|
|
85
106
|
await fs.mkdir(env.A_FRAME_STORAGE_DIR, { recursive: true });
|
|
86
|
-
await fs.writeFile(path.join(env.A_FRAME_STORAGE_DIR, codec.
|
|
107
|
+
await fs.writeFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(namespace.id)), encrypted);
|
|
87
108
|
}
|
|
88
109
|
/**
|
|
89
110
|
* Load a single definition from local file storage. This is called as part of A_FrameDefinition.load() when using the local file storage provider. It reads the namespace file, finds the record for the requested definition, and if found and hash matches, populates the definition with the stored data.
|
|
@@ -99,23 +120,32 @@ export class A_FrameNodeStorage extends A_FrameStorage {
|
|
|
99
120
|
@A_Inject(A_FrameStorageCodec) codec: A_FrameStorageCodec,
|
|
100
121
|
@A_Inject(A_FrameCrypto) aFrameCrypto: A_FrameCrypto,
|
|
101
122
|
): Promise<void> {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
record &&
|
|
112
|
-
record.hash === definition.hash &&
|
|
113
|
-
record.aFrameServerVersion === context.serverVersion
|
|
114
|
-
) {
|
|
115
|
-
definition.fromJSON(record);
|
|
123
|
+
// 1. Try primary storage dir
|
|
124
|
+
const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(definition.namespace.id)));
|
|
125
|
+
if (rawBuf) {
|
|
126
|
+
const plain = await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!);
|
|
127
|
+
const record = codec.decodePayload(plain).find(r => r.aseid === definition.aseid.toString());
|
|
128
|
+
if (record && record.hash === definition.hash && record.aFrameServerVersion === context.serverVersion) {
|
|
129
|
+
definition.fromJSON(record);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
116
132
|
}
|
|
117
133
|
|
|
118
|
-
|
|
134
|
+
// 2. Scan extra storage directories discovered via A_FRAME_STORAGE_PATTERN
|
|
135
|
+
for (const dir of await this.listExtraStorageDirs(env.A_FRAME_STORAGE_PATTERN)) {
|
|
136
|
+
const extraBuf = await this.tryReadFile(path.join(dir, codec.getDefinitionsFileName(definition.namespace.id)));
|
|
137
|
+
if (!extraBuf) continue;
|
|
138
|
+
try {
|
|
139
|
+
const plain = await aFrameCrypto.decryptBytes(new Uint8Array(extraBuf), context.encryptionKey!);
|
|
140
|
+
const record = codec.decodePayload(plain).find(r => r.aseid === definition.aseid.toString());
|
|
141
|
+
if (record && record.hash === definition.hash && record.aFrameServerVersion === context.serverVersion) {
|
|
142
|
+
definition.fromJSON(record);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
} catch {
|
|
146
|
+
// skip unreadable extra storage
|
|
147
|
+
}
|
|
148
|
+
}
|
|
119
149
|
}
|
|
120
150
|
/**
|
|
121
151
|
* Delete a single definition from local file storage. This is called as part of A_FrameDefinition.destroy() when using the local file storage provider. It reads the namespace file, removes the record for the requested definition, and writes back the encrypted file.
|
|
@@ -137,7 +167,7 @@ export class A_FrameNodeStorage extends A_FrameStorage {
|
|
|
137
167
|
@A_Inject(A_FrameCrypto) aFrameCrypto: A_FrameCrypto,
|
|
138
168
|
|
|
139
169
|
): Promise<void> {
|
|
140
|
-
const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.
|
|
170
|
+
const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(definition.namespace.id)));
|
|
141
171
|
if (!rawBuf) return;
|
|
142
172
|
|
|
143
173
|
const plain = await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!);
|
|
@@ -149,7 +179,7 @@ export class A_FrameNodeStorage extends A_FrameStorage {
|
|
|
149
179
|
const encrypted = await aFrameCrypto.encryptBytes(payload, context.encryptionKey!);
|
|
150
180
|
|
|
151
181
|
await fs.mkdir(env.A_FRAME_STORAGE_DIR, { recursive: true });
|
|
152
|
-
await fs.writeFile(path.join(env.A_FRAME_STORAGE_DIR, codec.
|
|
182
|
+
await fs.writeFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(definition.namespace.id)), encrypted);
|
|
153
183
|
}
|
|
154
184
|
|
|
155
185
|
// ---------------------------------------------------------------------------------------
|
|
@@ -198,20 +228,31 @@ export class A_FrameNodeStorage extends A_FrameStorage {
|
|
|
198
228
|
@A_Inject(A_FrameCrypto) aFrameCrypto: A_FrameCrypto,
|
|
199
229
|
@A_Inject(A_FrameStorageCodec) codec: A_FrameStorageCodec,
|
|
200
230
|
): Promise<void> {
|
|
231
|
+
// 1. Try primary storage dir
|
|
201
232
|
const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getNamespaceFileName()));
|
|
202
|
-
if (
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
233
|
+
if (rawBuf) {
|
|
234
|
+
const plain = await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!);
|
|
235
|
+
const record = codec.decodeNamespacePayload(plain).find(r => r.aseid === namespace.aseid.toString());
|
|
236
|
+
if (record && record.hash === namespace.hash && record.aFrameServerVersion === context.serverVersion) {
|
|
237
|
+
namespace.fromJSON(record);
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
208
241
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
242
|
+
// 2. Scan extra storage directories discovered via A_FRAME_STORAGE_PATTERN
|
|
243
|
+
for (const dir of await this.listExtraStorageDirs(env.A_FRAME_STORAGE_PATTERN)) {
|
|
244
|
+
const extraBuf = await this.tryReadFile(path.join(dir, codec.getNamespaceFileName()));
|
|
245
|
+
if (!extraBuf) continue;
|
|
246
|
+
try {
|
|
247
|
+
const plain = await aFrameCrypto.decryptBytes(new Uint8Array(extraBuf), context.encryptionKey!);
|
|
248
|
+
const record = codec.decodeNamespacePayload(plain).find(r => r.aseid === namespace.aseid.toString());
|
|
249
|
+
if (record && record.hash === namespace.hash && record.aFrameServerVersion === context.serverVersion) {
|
|
250
|
+
namespace.fromJSON(record);
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
} catch {
|
|
254
|
+
// skip unreadable extra storage
|
|
255
|
+
}
|
|
215
256
|
}
|
|
216
257
|
}
|
|
217
258
|
|
|
@@ -244,7 +285,7 @@ export class A_FrameNodeStorage extends A_FrameStorage {
|
|
|
244
285
|
* 2. Then drop definitions file related to the namespace.
|
|
245
286
|
*/
|
|
246
287
|
try {
|
|
247
|
-
await fs.unlink(path.join(env.A_FRAME_STORAGE_DIR, codec.
|
|
288
|
+
await fs.unlink(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(namespace.id)));
|
|
248
289
|
} catch {
|
|
249
290
|
// no-op if file doesn't exist
|
|
250
291
|
}
|
|
@@ -271,7 +312,7 @@ export class A_FrameNodeStorage extends A_FrameStorage {
|
|
|
271
312
|
const records = operation.params.records;
|
|
272
313
|
const namespace = records[0].namespace;
|
|
273
314
|
|
|
274
|
-
const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.
|
|
315
|
+
const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(namespace)));
|
|
275
316
|
const existing: A_FrameDefinition_Serialized[] = rawBuf
|
|
276
317
|
? codec.decodePayload(await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!))
|
|
277
318
|
: [];
|
|
@@ -285,7 +326,7 @@ export class A_FrameNodeStorage extends A_FrameStorage {
|
|
|
285
326
|
const encrypted = await aFrameCrypto.encryptBytes(payload, context.encryptionKey!);
|
|
286
327
|
|
|
287
328
|
await fs.mkdir(env.A_FRAME_STORAGE_DIR, { recursive: true });
|
|
288
|
-
await fs.writeFile(path.join(env.A_FRAME_STORAGE_DIR, codec.
|
|
329
|
+
await fs.writeFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(namespace)), encrypted);
|
|
289
330
|
|
|
290
331
|
operation.complete({
|
|
291
332
|
saved: records.length
|
|
@@ -305,13 +346,33 @@ export class A_FrameNodeStorage extends A_FrameStorage {
|
|
|
305
346
|
): Promise<void> {
|
|
306
347
|
const namespace = operation.params.namespaceId;
|
|
307
348
|
|
|
308
|
-
|
|
309
|
-
const
|
|
349
|
+
// 1. Primary storage
|
|
350
|
+
const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(namespace)));
|
|
351
|
+
const primaryRecords: A_FrameDefinition_Serialized[] = rawBuf
|
|
310
352
|
? codec.decodePayload(await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!))
|
|
311
353
|
: [];
|
|
312
354
|
|
|
355
|
+
// 2. Merge extra storage directories (read-only; primary records take precedence)
|
|
356
|
+
const merged = new Map<string, A_FrameDefinition_Serialized>();
|
|
357
|
+
for (const r of primaryRecords) merged.set(r.hash, r);
|
|
358
|
+
|
|
359
|
+
for (const dir of await this.listExtraStorageDirs(env.A_FRAME_STORAGE_PATTERN)) {
|
|
360
|
+
const extraBuf = await this.tryReadFile(path.join(dir, codec.getDefinitionsFileName(namespace)));
|
|
361
|
+
if (!extraBuf) continue;
|
|
362
|
+
try {
|
|
363
|
+
const extraRecords = codec.decodePayload(
|
|
364
|
+
await aFrameCrypto.decryptBytes(new Uint8Array(extraBuf), context.encryptionKey!)
|
|
365
|
+
);
|
|
366
|
+
for (const r of extraRecords) {
|
|
367
|
+
if (!merged.has(r.hash)) merged.set(r.hash, r);
|
|
368
|
+
}
|
|
369
|
+
} catch {
|
|
370
|
+
// skip unreadable extra storage
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
|
|
313
374
|
operation.complete({
|
|
314
|
-
records
|
|
375
|
+
records: Array.from(merged.values())
|
|
315
376
|
});
|
|
316
377
|
}
|
|
317
378
|
|
|
@@ -332,7 +393,7 @@ export class A_FrameNodeStorage extends A_FrameStorage {
|
|
|
332
393
|
const namespace = operation.params.namespaceId;
|
|
333
394
|
const definitionId = operation.params.definitionId;
|
|
334
395
|
|
|
335
|
-
const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.
|
|
396
|
+
const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(namespace)));
|
|
336
397
|
const records: A_FrameDefinition_Serialized[] = rawBuf
|
|
337
398
|
? codec.decodePayload(await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!))
|
|
338
399
|
: [];
|
|
@@ -343,7 +404,7 @@ export class A_FrameNodeStorage extends A_FrameStorage {
|
|
|
343
404
|
const encrypted = await aFrameCrypto.encryptBytes(payload, context.encryptionKey!);
|
|
344
405
|
|
|
345
406
|
await fs.mkdir(env.A_FRAME_STORAGE_DIR, { recursive: true });
|
|
346
|
-
await fs.writeFile(path.join(env.A_FRAME_STORAGE_DIR, codec.
|
|
407
|
+
await fs.writeFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(namespace)), encrypted);
|
|
347
408
|
|
|
348
409
|
operation.complete({
|
|
349
410
|
records: filtered
|
|
@@ -400,13 +461,34 @@ export class A_FrameNodeStorage extends A_FrameStorage {
|
|
|
400
461
|
): Promise<void> {
|
|
401
462
|
const ids = operation.params.namespaces;
|
|
402
463
|
|
|
464
|
+
// 1. Primary storage
|
|
403
465
|
const rawBuf = await this.tryReadFile(path.join(env.A_FRAME_STORAGE_DIR, codec.getNamespaceFileName()));
|
|
404
|
-
const
|
|
466
|
+
const primaryRecords: A_FrameNamespace_Serialized[] = rawBuf
|
|
405
467
|
? codec.decodeNamespacePayload(await aFrameCrypto.decryptBytes(new Uint8Array(rawBuf), context.encryptionKey!))
|
|
406
468
|
: [];
|
|
407
469
|
|
|
470
|
+
// 2. Merge extra storage directories (read-only; primary records take precedence)
|
|
471
|
+
const merged = new Map<string, A_FrameNamespace_Serialized>();
|
|
472
|
+
for (const r of primaryRecords) merged.set(r.aseid, r);
|
|
473
|
+
|
|
474
|
+
for (const dir of await this.listExtraStorageDirs(env.A_FRAME_STORAGE_PATTERN)) {
|
|
475
|
+
const extraBuf = await this.tryReadFile(path.join(dir, codec.getNamespaceFileName()));
|
|
476
|
+
if (!extraBuf) continue;
|
|
477
|
+
try {
|
|
478
|
+
const extraRecords = codec.decodeNamespacePayload(
|
|
479
|
+
await aFrameCrypto.decryptBytes(new Uint8Array(extraBuf), context.encryptionKey!)
|
|
480
|
+
);
|
|
481
|
+
for (const r of extraRecords) {
|
|
482
|
+
if (!merged.has(r.aseid)) merged.set(r.aseid, r);
|
|
483
|
+
}
|
|
484
|
+
} catch {
|
|
485
|
+
// skip unreadable extra storage
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
const allRecords = Array.from(merged.values());
|
|
408
490
|
operation.complete({
|
|
409
|
-
records: ids ?
|
|
491
|
+
records: ids ? allRecords.filter(r => ids.includes(r.name)) : allRecords
|
|
410
492
|
});
|
|
411
493
|
}
|
|
412
494
|
|
|
@@ -443,7 +525,7 @@ export class A_FrameNodeStorage extends A_FrameStorage {
|
|
|
443
525
|
*/
|
|
444
526
|
try {
|
|
445
527
|
for (const id of ids) {
|
|
446
|
-
await fs.unlink(path.join(env.A_FRAME_STORAGE_DIR, codec.
|
|
528
|
+
await fs.unlink(path.join(env.A_FRAME_STORAGE_DIR, codec.getDefinitionsFileName(id)));
|
|
447
529
|
}
|
|
448
530
|
operation.complete({
|
|
449
531
|
success: true
|
|
@@ -15,10 +15,23 @@ export class A_FrameVector extends A_Entity {
|
|
|
15
15
|
: new Float32Array(values)
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
get dimensions(): number {
|
|
19
|
+
return this.values.length
|
|
20
|
+
}
|
|
21
|
+
|
|
18
22
|
get length(): number {
|
|
19
23
|
return this.values.length
|
|
20
24
|
}
|
|
21
25
|
|
|
26
|
+
|
|
27
|
+
isEqualTo(vector: A_FrameVector): boolean {
|
|
28
|
+
if (this.length !== vector.length) return false;
|
|
29
|
+
for (let i = 0; i < this.length; i++) {
|
|
30
|
+
if (this.values[i] !== vector.values[i]) return false;
|
|
31
|
+
}
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
|
|
22
35
|
magnitude(): number {
|
|
23
36
|
let sum = 0
|
|
24
37
|
for (let i = 0; i < this.values.length; i++) {
|
|
@@ -49,6 +62,17 @@ export class A_FrameVector extends A_Entity {
|
|
|
49
62
|
return sum
|
|
50
63
|
}
|
|
51
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Returns the cosine similarity between this vector and `other` (range −1 to 1).
|
|
67
|
+
* Vectors with zero magnitude return 0.
|
|
68
|
+
*/
|
|
69
|
+
cosineSimilarity(other: A_FrameVector): number {
|
|
70
|
+
const magA = this.magnitude();
|
|
71
|
+
const magB = other.magnitude();
|
|
72
|
+
if (magA === 0 || magB === 0) return 0;
|
|
73
|
+
return this.normalize().dot(other.normalize());
|
|
74
|
+
}
|
|
75
|
+
|
|
52
76
|
private assertSameLength(other: A_FrameVector) {
|
|
53
77
|
if (this.length !== other.length) {
|
|
54
78
|
throw new Error(
|