@adaas/a-frame 0.0.22 → 0.1.1
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 +13 -0
- package/.conf/tsconfig.node.json +14 -0
- package/.env.example +12 -0
- package/dist/browser/A-FrameBrowserStorageBlobs.context-OEQr85oq.d.mts +40 -0
- package/dist/browser/A-FrameBundle.types-DaaUvViw.d.mts +33 -0
- package/dist/browser/A-FrameChannel.types-DWOEUs28.d.mts +142 -0
- package/dist/browser/A-FrameDefinition.entity-DWGN_Ujr.d.mts +329 -0
- package/dist/browser/A-FrameDynamicStructure.entity-DaBgSRCR.d.mts +188 -0
- package/dist/browser/A-FrameLogger.component.env-browser-BIPAP4oQ.d.mts +112 -0
- package/dist/browser/A-FrameNamespace.entity-rCm1AavP.d.mts +125 -0
- package/dist/browser/bundle.d.mts +8 -0
- package/dist/browser/bundle.mjs +2 -0
- package/dist/browser/bundle.mjs.map +1 -0
- package/dist/browser/channel.d.mts +165 -0
- package/dist/browser/channel.mjs +3 -0
- package/dist/browser/channel.mjs.map +1 -0
- package/dist/browser/chunk-5TTVFB3G.mjs +2 -0
- package/dist/browser/chunk-5TTVFB3G.mjs.map +1 -0
- package/dist/browser/chunk-AYN7KUQT.mjs +3 -0
- package/dist/browser/chunk-AYN7KUQT.mjs.map +1 -0
- package/dist/browser/chunk-DMGQW3AO.mjs +2 -0
- package/dist/browser/chunk-DMGQW3AO.mjs.map +1 -0
- package/dist/browser/chunk-G66IL2DR.mjs +2 -0
- package/dist/browser/chunk-G66IL2DR.mjs.map +1 -0
- package/dist/browser/chunk-GOADBDTE.mjs +2 -0
- package/dist/browser/chunk-GOADBDTE.mjs.map +1 -0
- package/dist/browser/chunk-H6OZP4ZV.mjs +2 -0
- package/dist/browser/chunk-H6OZP4ZV.mjs.map +1 -0
- package/dist/browser/chunk-INS7RO3B.mjs +2 -0
- package/dist/browser/chunk-INS7RO3B.mjs.map +1 -0
- package/dist/browser/chunk-K4MZY4ME.mjs +2 -0
- package/dist/browser/chunk-K4MZY4ME.mjs.map +1 -0
- package/dist/browser/chunk-OFKV5GNB.mjs +3 -0
- package/dist/browser/chunk-OFKV5GNB.mjs.map +1 -0
- package/dist/browser/chunk-QATIN7CO.mjs +3 -0
- package/dist/browser/chunk-QATIN7CO.mjs.map +1 -0
- package/dist/browser/chunk-QBBQ37P3.mjs +2 -0
- package/dist/browser/chunk-QBBQ37P3.mjs.map +1 -0
- package/dist/browser/chunk-VDVJWU5T.mjs +2 -0
- package/dist/browser/chunk-VDVJWU5T.mjs.map +1 -0
- package/dist/browser/chunk-X3C4I6YJ.mjs +2 -0
- package/dist/browser/chunk-X3C4I6YJ.mjs.map +1 -0
- package/dist/browser/chunk-YQJFTBGV.mjs +3 -0
- package/dist/browser/chunk-YQJFTBGV.mjs.map +1 -0
- package/dist/browser/chunk-ZVCTU2DN.mjs +3 -0
- package/dist/browser/chunk-ZVCTU2DN.mjs.map +1 -0
- package/dist/browser/core.d.mts +97 -0
- package/dist/browser/core.mjs +2 -0
- package/dist/browser/core.mjs.map +1 -0
- package/dist/browser/crypto.d.mts +35 -0
- package/dist/browser/crypto.mjs +2 -0
- package/dist/browser/crypto.mjs.map +1 -0
- package/dist/browser/definition.d.mts +13 -0
- package/dist/browser/definition.mjs +2 -0
- package/dist/browser/definition.mjs.map +1 -0
- package/dist/browser/dynamic-feature.d.mts +10 -0
- package/dist/browser/dynamic-feature.mjs +2 -0
- package/dist/browser/dynamic-feature.mjs.map +1 -0
- package/dist/browser/dynamic-structure.d.mts +12 -0
- package/dist/browser/dynamic-structure.mjs +2 -0
- package/dist/browser/dynamic-structure.mjs.map +1 -0
- package/dist/browser/env.d.mts +2 -0
- package/dist/browser/env.mjs +2 -0
- package/dist/browser/env.mjs.map +1 -0
- package/dist/browser/frame-index.d.mts +95 -0
- package/dist/browser/frame-index.mjs +2 -0
- package/dist/browser/frame-index.mjs.map +1 -0
- package/dist/browser/index.browser-CZlhzfSP.d.mts +22 -0
- package/dist/browser/index.d.mts +1 -144
- package/dist/browser/index.mjs +1 -1
- package/dist/browser/index.mjs.map +1 -1
- package/dist/browser/logger.d.mts +41 -0
- package/dist/browser/logger.mjs +2 -0
- package/dist/browser/logger.mjs.map +1 -0
- package/dist/browser/namespace.d.mts +13 -0
- package/dist/browser/namespace.mjs +2 -0
- package/dist/browser/namespace.mjs.map +1 -0
- package/dist/browser/storage.d.mts +194 -0
- package/dist/browser/storage.mjs +2 -0
- package/dist/browser/storage.mjs.map +1 -0
- package/dist/browser/vector.d.mts +15 -0
- package/dist/browser/vector.mjs +2 -0
- package/dist/browser/vector.mjs.map +1 -0
- package/dist/index.cjs +0 -0
- package/dist/node/A-FrameChannel.component-BfBcs734.d.ts +62 -0
- package/dist/node/A-FrameChannel.component-NNKcFViw.d.mts +62 -0
- package/dist/node/A-FrameChannel.types-DQF-IiRq.d.mts +146 -0
- package/dist/node/A-FrameChannel.types-DQF-IiRq.d.ts +146 -0
- package/dist/node/A-FrameDefinition.entity-CAUOdEvU.d.ts +329 -0
- package/dist/node/A-FrameDefinition.entity-DWGN_Ujr.d.mts +329 -0
- package/dist/node/A-FrameDynamicStructure.entity-DaBgSRCR.d.mts +188 -0
- package/dist/node/A-FrameDynamicStructure.entity-DaBgSRCR.d.ts +188 -0
- package/dist/node/A-FrameNamespace.entity-D3fZBGDx.d.ts +125 -0
- package/dist/node/A-FrameNamespace.entity-rCm1AavP.d.mts +125 -0
- package/dist/node/A-FrameStorage.component-BYjHfHJJ.d.mts +107 -0
- package/dist/node/A-FrameStorage.component-CT01fs-t.d.ts +107 -0
- package/dist/node/bundle.cjs +101 -0
- package/dist/node/bundle.cjs.map +1 -0
- package/dist/node/bundle.d.mts +69 -0
- package/dist/node/bundle.d.ts +69 -0
- package/dist/node/bundle.mjs +76 -0
- package/dist/node/bundle.mjs.map +1 -0
- package/dist/node/channel.cjs +60 -0
- package/dist/node/channel.cjs.map +1 -0
- package/dist/node/channel.d.mts +61 -0
- package/dist/node/channel.d.ts +61 -0
- package/dist/node/channel.mjs +11 -0
- package/dist/node/channel.mjs.map +1 -0
- package/dist/node/chunk-3LOMGNWA.cjs +8 -0
- package/dist/node/chunk-3LOMGNWA.cjs.map +1 -0
- package/dist/node/chunk-3ONWH75E.mjs +257 -0
- package/dist/node/chunk-3ONWH75E.mjs.map +1 -0
- package/dist/node/chunk-3TD2PEDZ.mjs +53 -0
- package/dist/node/chunk-3TD2PEDZ.mjs.map +1 -0
- package/dist/node/chunk-442DXGOD.mjs +16 -0
- package/dist/node/chunk-442DXGOD.mjs.map +1 -0
- package/dist/node/chunk-5BKCX2RO.mjs +33 -0
- package/dist/node/chunk-5BKCX2RO.mjs.map +1 -0
- package/dist/node/chunk-6EFXNUL4.mjs +6 -0
- package/dist/node/chunk-6EFXNUL4.mjs.map +1 -0
- package/dist/node/chunk-6KAGWGTE.mjs +529 -0
- package/dist/node/chunk-6KAGWGTE.mjs.map +1 -0
- package/dist/node/chunk-7A6XGT5J.cjs +541 -0
- package/dist/node/chunk-7A6XGT5J.cjs.map +1 -0
- package/dist/node/chunk-AOQRXZPC.mjs +207 -0
- package/dist/node/chunk-AOQRXZPC.mjs.map +1 -0
- package/dist/node/chunk-APRYHBEF.mjs +171 -0
- package/dist/node/chunk-APRYHBEF.mjs.map +1 -0
- package/dist/node/chunk-B7BXP7K4.mjs +253 -0
- package/dist/node/chunk-B7BXP7K4.mjs.map +1 -0
- package/dist/node/chunk-B7ZDJXD3.cjs +35 -0
- package/dist/node/chunk-B7ZDJXD3.cjs.map +1 -0
- package/dist/node/chunk-CP6JHUU6.cjs +541 -0
- package/dist/node/chunk-CP6JHUU6.cjs.map +1 -0
- package/dist/node/chunk-DDCEMKBP.mjs +655 -0
- package/dist/node/chunk-DDCEMKBP.mjs.map +1 -0
- package/dist/node/chunk-DMY44VUG.mjs +655 -0
- package/dist/node/chunk-DMY44VUG.mjs.map +1 -0
- package/dist/node/chunk-F46TSY2K.cjs +541 -0
- package/dist/node/chunk-F46TSY2K.cjs.map +1 -0
- package/dist/node/chunk-F4UCOZW5.mjs +33 -0
- package/dist/node/chunk-F4UCOZW5.mjs.map +1 -0
- package/dist/node/chunk-GBTFMT3K.cjs +256 -0
- package/dist/node/chunk-GBTFMT3K.cjs.map +1 -0
- package/dist/node/chunk-GNVXVK2B.cjs +8 -0
- package/dist/node/chunk-GNVXVK2B.cjs.map +1 -0
- package/dist/node/chunk-GRR6NNWY.cjs +688 -0
- package/dist/node/chunk-GRR6NNWY.cjs.map +1 -0
- package/dist/node/chunk-IIVYTS5M.mjs +239 -0
- package/dist/node/chunk-IIVYTS5M.mjs.map +1 -0
- package/dist/node/chunk-JQBYDEMW.mjs +33 -0
- package/dist/node/chunk-JQBYDEMW.mjs.map +1 -0
- package/dist/node/chunk-K4MZY4ME.mjs +3 -0
- package/dist/node/chunk-K4MZY4ME.mjs.map +1 -0
- package/dist/node/chunk-KK64VLZN.cjs +4 -0
- package/dist/node/chunk-KK64VLZN.cjs.map +1 -0
- package/dist/node/chunk-KLG6HKFU.cjs +175 -0
- package/dist/node/chunk-KLG6HKFU.cjs.map +1 -0
- package/dist/node/chunk-LJIZ47HO.cjs +688 -0
- package/dist/node/chunk-LJIZ47HO.cjs.map +1 -0
- package/dist/node/chunk-NIXKAQVP.cjs +35 -0
- package/dist/node/chunk-NIXKAQVP.cjs.map +1 -0
- package/dist/node/chunk-OI76LHVT.mjs +21 -0
- package/dist/node/chunk-OI76LHVT.mjs.map +1 -0
- package/dist/node/chunk-OJGCQNAH.mjs +529 -0
- package/dist/node/chunk-OJGCQNAH.mjs.map +1 -0
- package/dist/node/chunk-OYC6L5NX.mjs +6 -0
- package/dist/node/chunk-OYC6L5NX.mjs.map +1 -0
- package/dist/node/chunk-QFHZIG7Y.cjs +25 -0
- package/dist/node/chunk-QFHZIG7Y.cjs.map +1 -0
- package/dist/node/chunk-QFUZVN4Y.cjs +259 -0
- package/dist/node/chunk-QFUZVN4Y.cjs.map +1 -0
- package/dist/node/chunk-R2H234YO.cjs +8 -0
- package/dist/node/chunk-R2H234YO.cjs.map +1 -0
- package/dist/node/chunk-RRLTGGM7.cjs +209 -0
- package/dist/node/chunk-RRLTGGM7.cjs.map +1 -0
- package/dist/node/chunk-SDKIJDMH.mjs +655 -0
- package/dist/node/chunk-SDKIJDMH.mjs.map +1 -0
- package/dist/node/chunk-TO4BPKCY.mjs +6 -0
- package/dist/node/chunk-TO4BPKCY.mjs.map +1 -0
- package/dist/node/chunk-UKKCN7CQ.cjs +688 -0
- package/dist/node/chunk-UKKCN7CQ.cjs.map +1 -0
- package/dist/node/chunk-UPA7VN4R.mjs +153 -0
- package/dist/node/chunk-UPA7VN4R.mjs.map +1 -0
- package/dist/node/chunk-UTJ7CVVB.cjs +248 -0
- package/dist/node/chunk-UTJ7CVVB.cjs.map +1 -0
- package/dist/node/chunk-XFUF7SDO.cjs +35 -0
- package/dist/node/chunk-XFUF7SDO.cjs.map +1 -0
- package/dist/node/chunk-YVX4W6SI.cjs +155 -0
- package/dist/node/chunk-YVX4W6SI.cjs.map +1 -0
- package/dist/node/chunk-YWWGJ6EJ.cjs +55 -0
- package/dist/node/chunk-YWWGJ6EJ.cjs.map +1 -0
- package/dist/node/chunk-Z4HUCRK2.mjs +529 -0
- package/dist/node/chunk-Z4HUCRK2.mjs.map +1 -0
- package/dist/node/chunk-ZM2RLVVH.cjs +18 -0
- package/dist/node/chunk-ZM2RLVVH.cjs.map +1 -0
- package/dist/node/core.cjs +259 -0
- package/dist/node/core.cjs.map +1 -0
- package/dist/node/core.d.mts +76 -0
- package/dist/node/core.d.ts +76 -0
- package/dist/node/core.mjs +248 -0
- package/dist/node/core.mjs.map +1 -0
- package/dist/node/crypto.cjs +13 -0
- package/dist/node/crypto.cjs.map +1 -0
- package/dist/node/crypto.d.mts +44 -0
- package/dist/node/crypto.d.ts +44 -0
- package/dist/node/crypto.mjs +4 -0
- package/dist/node/crypto.mjs.map +1 -0
- package/dist/node/definition.cjs +19 -0
- package/dist/node/definition.cjs.map +1 -0
- package/dist/node/definition.d.mts +13 -0
- package/dist/node/definition.d.ts +13 -0
- package/dist/node/definition.mjs +6 -0
- package/dist/node/definition.mjs.map +1 -0
- package/dist/node/dynamic-feature.cjs +14 -0
- package/dist/node/dynamic-feature.cjs.map +1 -0
- package/dist/node/dynamic-feature.d.mts +10 -0
- package/dist/node/dynamic-feature.d.ts +10 -0
- package/dist/node/dynamic-feature.mjs +12 -0
- package/dist/node/dynamic-feature.mjs.map +1 -0
- package/dist/node/dynamic-structure.cjs +143 -0
- package/dist/node/dynamic-structure.cjs.map +1 -0
- package/dist/node/dynamic-structure.d.mts +12 -0
- package/dist/node/dynamic-structure.d.ts +12 -0
- package/dist/node/dynamic-structure.mjs +138 -0
- package/dist/node/dynamic-structure.mjs.map +1 -0
- package/dist/node/env.cjs +14 -0
- package/dist/node/env.cjs.map +1 -0
- package/dist/node/env.d.mts +22 -0
- package/dist/node/env.d.ts +22 -0
- package/dist/node/env.mjs +5 -0
- package/dist/node/env.mjs.map +1 -0
- package/dist/node/frame-index.cjs +16 -0
- package/dist/node/frame-index.cjs.map +1 -0
- package/dist/node/frame-index.d.mts +95 -0
- package/dist/node/frame-index.d.ts +95 -0
- package/dist/node/frame-index.mjs +7 -0
- package/dist/node/frame-index.mjs.map +1 -0
- package/dist/node/index.cjs +0 -288
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.mts +1 -144
- package/dist/node/index.d.ts +1 -144
- package/dist/node/index.mjs +0 -284
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/logger.cjs +41 -0
- package/dist/node/logger.cjs.map +1 -0
- package/dist/node/logger.d.mts +150 -0
- package/dist/node/logger.d.ts +150 -0
- package/dist/node/logger.mjs +4 -0
- package/dist/node/logger.mjs.map +1 -0
- package/dist/node/namespace.cjs +24 -0
- package/dist/node/namespace.cjs.map +1 -0
- package/dist/node/namespace.d.mts +13 -0
- package/dist/node/namespace.d.ts +13 -0
- package/dist/node/namespace.mjs +7 -0
- package/dist/node/namespace.mjs.map +1 -0
- package/dist/node/storage.cjs +42 -0
- package/dist/node/storage.cjs.map +1 -0
- package/dist/node/storage.d.mts +110 -0
- package/dist/node/storage.d.ts +110 -0
- package/dist/node/storage.mjs +13 -0
- package/dist/node/storage.mjs.map +1 -0
- package/dist/node/vector.cjs +13 -0
- package/dist/node/vector.cjs.map +1 -0
- package/dist/node/vector.d.mts +15 -0
- package/dist/node/vector.d.ts +15 -0
- package/dist/node/vector.mjs +4 -0
- package/dist/node/vector.mjs.map +1 -0
- package/jest.config.browser.ts +41 -0
- package/jest.config.ts +18 -8
- package/package.json +125 -13
- package/{index.ts → src/concept.ts} +5 -2
- package/src/helpers/Hash.helper.ts +14 -0
- package/src/index.ts +0 -24
- package/src/lib/A-Frame/A-Frame.component.env-browser.ts +126 -0
- package/src/lib/A-Frame/A-Frame.component.env-node.ts +105 -0
- package/src/lib/A-Frame/A-Frame.component.ts +62 -0
- package/src/lib/A-Frame/A-Frame.context.ts +40 -0
- package/src/lib/{components/Index.component.ts/Index.error.ts → A-Frame/A-Frame.error.ts} +1 -1
- package/src/lib/{components/Index.component.ts/Index.guard.ts → A-Frame/A-Frame.guard.ts} +9 -6
- package/src/lib/A-Frame/A-Frame.meta.ts +27 -0
- package/src/lib/{components/Index.component.ts/Index.types.ts → A-Frame/A-Frame.types.ts} +52 -17
- package/src/lib/A-Frame/decorators/A-FrameDefine.decorator.ts +104 -0
- package/src/lib/A-Frame/decorators/A-FrameNamespace.decorator.ts +33 -0
- package/src/lib/A-Frame/index.browser.ts +10 -0
- package/src/lib/A-Frame/index.ts +10 -0
- package/src/lib/A-FrameBundle/A-FrameBundle.builder.env-node.ts +95 -0
- package/src/lib/A-FrameBundle/A-FrameBundle.constants.ts +5 -0
- package/src/lib/A-FrameBundle/A-FrameBundle.types.ts +31 -0
- package/src/lib/A-FrameBundle/index.browser.ts +6 -0
- package/src/lib/A-FrameBundle/index.ts +7 -0
- package/src/lib/A-FrameCLI/A-FrameCLI.container.ts +333 -0
- package/src/lib/A-FrameChannel/A-FrameChannel.component.env-browser.ts +63 -0
- package/src/lib/A-FrameChannel/A-FrameChannel.component.env-node.ts +586 -0
- package/src/lib/A-FrameChannel/A-FrameChannel.component.ts +273 -0
- package/src/lib/A-FrameChannel/A-FrameChannel.constants.ts +39 -0
- package/src/lib/A-FrameChannel/A-FrameChannel.error.ts +10 -0
- package/src/lib/A-FrameChannel/A-FrameChannel.types.ts +143 -0
- package/src/lib/A-FrameChannel/A-FrameChannelEvent.context.ts +28 -0
- package/src/lib/A-FrameChannel/A-FrameChannelRequest.context.ts +36 -0
- package/src/lib/A-FrameChannel/A-FrameChannelSocket.entity.ts +189 -0
- package/src/lib/A-FrameChannel/A-FrameChannelStream.entity.ts +144 -0
- package/src/lib/A-FrameChannel/index.browser.ts +3 -0
- package/src/lib/A-FrameChannel/index.ts +10 -0
- package/src/lib/A-FrameCrypto/A-FrameCrypto.component.env-browser.ts +123 -0
- package/src/lib/A-FrameCrypto/A-FrameCrypto.component.env-node.ts +204 -0
- package/src/lib/A-FrameCrypto/index.browser.ts +1 -0
- package/src/lib/A-FrameCrypto/index.ts +1 -0
- package/src/lib/A-FrameDefinition/A-FrameDefinition.constants.ts +8 -0
- package/src/lib/A-FrameDefinition/A-FrameDefinition.entity.ts +290 -0
- package/src/lib/A-FrameDefinition/A-FrameDefinition.types.ts +109 -0
- package/src/lib/A-FrameDefinition/index.ts +3 -0
- package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.entity.ts +13 -0
- package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.types.ts +10 -0
- package/src/lib/A-FrameDynamicFeature/index.ts +2 -0
- package/src/lib/A-FrameDynamicPatch/A-FrameDynamicPatch.entity.ts +38 -0
- package/src/lib/A-FrameDynamicPatch/A-FrameDynamicPatch.types.ts +20 -0
- package/src/lib/A-FrameDynamicSession/A-FrameDynamicSession.constants.ts +9 -0
- package/src/lib/A-FrameDynamicSession/A-FrameDynamicSession.entity.ts +91 -0
- package/src/lib/A-FrameDynamicSession/A-FrameDynamicSession.types.ts +18 -0
- package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.constants.ts +13 -0
- package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.entity.ts +187 -0
- package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.error.ts +13 -0
- package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.types.ts +128 -0
- package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructureOperation.context.ts +32 -0
- package/src/lib/A-FrameDynamicStructure/index.ts +5 -0
- package/src/lib/A-FrameEnv/A-FrameEnv.fragment.env-browser.ts +31 -0
- package/src/lib/A-FrameEnv/A-FrameEnv.fragment.env-node.ts +39 -0
- package/src/lib/A-FrameEnv/A-FrameEnv.types.ts +7 -0
- package/src/lib/A-FrameEnv/index.browser.ts +1 -0
- package/src/lib/A-FrameEnv/index.ts +1 -0
- package/src/lib/A-FrameIndex/A-FrameIndex.context.ts +321 -0
- package/src/lib/A-FrameIndex/A-FrameIndex.types.ts +63 -0
- package/src/lib/A-FrameIndex/index.browser.ts +3 -0
- package/src/lib/A-FrameIndex/index.ts +3 -0
- package/src/lib/A-FrameLogger/A-FrameLogger.component.env-browser.ts +99 -0
- package/src/lib/A-FrameLogger/A-FrameLogger.component.env-node.ts +129 -0
- package/src/lib/A-FrameLogger/A-FrameLogger.component.ts +123 -0
- package/src/lib/A-FrameLogger/A-FrameLogger.constants.ts +66 -0
- package/src/lib/A-FrameLogger/A-FrameLogger.types.ts +67 -0
- package/src/lib/A-FrameLogger/index.browser.ts +4 -0
- package/src/lib/A-FrameLogger/index.ts +4 -0
- package/src/lib/A-FrameNamespace/A-FrameNamespace.constants.ts +12 -0
- package/src/lib/A-FrameNamespace/A-FrameNamespace.entity.ts +211 -0
- package/src/lib/A-FrameNamespace/A-FrameNamespace.types.ts +72 -0
- package/src/lib/A-FrameNamespace/index.ts +3 -0
- package/src/lib/A-FrameStorage/A-FrameStorage.codec.ts +338 -0
- package/src/lib/A-FrameStorage/A-FrameStorage.component.ts +191 -0
- package/src/lib/A-FrameStorage/A-FrameStorage.constants.ts +11 -0
- package/src/lib/A-FrameStorage/A-FrameStorage.error.ts +13 -0
- package/src/lib/A-FrameStorage/A-FrameStorage.types.ts +98 -0
- package/src/lib/A-FrameStorage/A-FrameStorageOperation.context.ts +59 -0
- package/src/lib/A-FrameStorage/browser/A-FrameBrowserStorage.component.ts +312 -0
- package/src/lib/A-FrameStorage/browser/A-FrameBrowserStorageBlobs.context.ts +77 -0
- package/src/lib/A-FrameStorage/index.browser.ts +11 -0
- package/src/lib/A-FrameStorage/index.ts +10 -0
- package/src/lib/A-FrameStorage/node/A-FrameNodeStorage.component.ts +464 -0
- package/src/lib/A-FrameStorage/server/A-FrameServerStorage.component.ts +177 -0
- package/src/lib/{entities/A_FrameVector/A_FrameVector.entity.ts → A-FrameVector/A-FrameVector.entity.ts} +10 -0
- package/src/lib/A-FrameVector/index.ts +3 -0
- package/tests/A-Frame.browser.test.ts +94 -0
- package/tests/A-Frame.test.ts +74 -67
- package/tests/jest.browser-environment.js +30 -0
- package/tests/jest.polyfills.browser.ts +13 -0
- package/tests/jest.setup.browser.ts +33 -0
- package/tsconfig.browser.json +54 -0
- package/tsconfig.json +16 -0
- package/tsup.config.ts +32 -2
- package/src/lib/components/Builder.component.ts/Builder.component.ts +0 -0
- package/src/lib/components/Index.component.ts/Index.component.ts +0 -79
- package/src/lib/components/Index.component.ts/Index.constants.ts +0 -0
- package/src/lib/components/Index.component.ts/Index.meta.ts +0 -28
- package/src/lib/components/Index.component.ts/IndexConfigurations.meta.ts +0 -78
- package/src/lib/components/Index.component.ts/decorators/IndexComponent.decorator.ts +0 -97
- package/src/lib/components/Index.component.ts/decorators/IndexDescribe.decorator.ts +0 -59
- package/src/lib/components/Index.component.ts/decorators/IndexNamespace.decorator.ts +0 -57
- package/src/lib/components/Search/A_FrameSearch.component.ts +0 -66
- package/src/lib/containers/CLI.container.ts +0 -27
- package/src/lib/entities/Namespace/Namespace.entity.ts +0 -8
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A-FrameStorage binary codec — shared between node and browser environments.
|
|
3
|
+
*
|
|
4
|
+
* Binary payload format (decrypted) — used for BOTH definition records and namespace records:
|
|
5
|
+
* [HEADER 20B]
|
|
6
|
+
* magic 4B = 0x454D424B ("EMBK")
|
|
7
|
+
* version 1B = 0x01
|
|
8
|
+
* count 4B (uint32 LE)
|
|
9
|
+
* dims 2B (uint16 LE)
|
|
10
|
+
* reserved 9B
|
|
11
|
+
* [RECORD × count]
|
|
12
|
+
* aseidLen 2B (uint16 LE)
|
|
13
|
+
* aseid NB utf-8 (primary entity ID, e.g. "app@root:123@v2")
|
|
14
|
+
* nameLen 2B (uint16 LE)
|
|
15
|
+
* name NB utf-8
|
|
16
|
+
* vector dims×4B Float32 LE
|
|
17
|
+
* metaLen 4B (uint32 LE)
|
|
18
|
+
* meta NB JSON
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import { A_Fragment } from '@adaas/a-concept';
|
|
22
|
+
|
|
23
|
+
import type { A_FrameNamespace_Serialized } from '../A-FrameNamespace/A-FrameNamespace.types';
|
|
24
|
+
import { A_FrameDefinition_Serialized } from '../A-FrameDefinition/A-FrameDefinition.types';
|
|
25
|
+
import { A_FrameTargetType } from '../A-Frame/A-Frame.types';
|
|
26
|
+
|
|
27
|
+
const enc = new TextEncoder();
|
|
28
|
+
const dec = new TextDecoder();
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
export class A_FrameStorageCodec extends A_Fragment {
|
|
32
|
+
|
|
33
|
+
protected enc = new TextEncoder();
|
|
34
|
+
protected dec = new TextDecoder();
|
|
35
|
+
|
|
36
|
+
// ─── Binary file format constants ────────────────────────────────────────────
|
|
37
|
+
// FILE LAYOUT (all multi-byte values are little-endian):
|
|
38
|
+
// [HEADER 20B]
|
|
39
|
+
// magic 4B = 0x454D424B ("EMBK")
|
|
40
|
+
// version 1B = 0x01
|
|
41
|
+
// count 4B (uint32)
|
|
42
|
+
// dims 2B (uint16)
|
|
43
|
+
// reserved 9B
|
|
44
|
+
// [RECORD × count]
|
|
45
|
+
// aseidLen 2B (uint16) — variable-length primary entity ID
|
|
46
|
+
// aseid NB utf-8
|
|
47
|
+
// nameLen 2B (uint16)
|
|
48
|
+
// name NB utf-8
|
|
49
|
+
// vector dims×4B Float32 LE
|
|
50
|
+
// metaLen 4B (uint32)
|
|
51
|
+
// meta NB JSON
|
|
52
|
+
// Encrypted on disk: [IV 12B][AuthTag 16B][Ciphertext]
|
|
53
|
+
A_FRAME_FILE_MAGIC = 0x454d424b;
|
|
54
|
+
A_FRAME_FILE_VERSION = 0x01;
|
|
55
|
+
A_FRAME_HEADER_SIZE = 20;
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
static get fileExtension() {
|
|
60
|
+
return '.aframe';
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
getFileName(namespace: string) {
|
|
65
|
+
return `${namespace}${A_FrameStorageCodec.fileExtension}`;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
getNamespaceFileName() {
|
|
69
|
+
return `__namespaces${A_FrameStorageCodec.fileExtension}`;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
encodePayload(records: A_FrameDefinition_Serialized[]): Uint8Array {
|
|
74
|
+
const parts: Uint8Array[] = [];
|
|
75
|
+
|
|
76
|
+
if (records.some(r => !r.embedding)) {
|
|
77
|
+
throw new Error('All records must have embeddings to be encoded');
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const header = new Uint8Array(this.A_FRAME_HEADER_SIZE);
|
|
81
|
+
const headerView = new DataView(header.buffer);
|
|
82
|
+
headerView.setUint32(0, this.A_FRAME_FILE_MAGIC, true);
|
|
83
|
+
header[4] = this.A_FRAME_FILE_VERSION;
|
|
84
|
+
headerView.setUint32(5, records.length, true);
|
|
85
|
+
const dims = records[0]?.embedding!.length ?? 0;
|
|
86
|
+
headerView.setUint16(9, dims, true);
|
|
87
|
+
// bytes 11-19: reserved (zeroed)
|
|
88
|
+
parts.push(header);
|
|
89
|
+
|
|
90
|
+
for (const rec of records) {
|
|
91
|
+
const aseidBytes = enc.encode(rec.aseid.toString());
|
|
92
|
+
const nameBytes = enc.encode(rec.name);
|
|
93
|
+
const metaJson = JSON.stringify({
|
|
94
|
+
hash: rec.hash,
|
|
95
|
+
source: rec.source,
|
|
96
|
+
type: rec.type,
|
|
97
|
+
description: rec.description,
|
|
98
|
+
metadata: rec.metadata,
|
|
99
|
+
namespace: rec.namespace,
|
|
100
|
+
date: rec.date,
|
|
101
|
+
model: rec.model,
|
|
102
|
+
credentialId: rec.credentialId,
|
|
103
|
+
aFrameVersion: rec.aFrameVersion,
|
|
104
|
+
aFrameServerVersion: rec.aFrameServerVersion,
|
|
105
|
+
});
|
|
106
|
+
const metaBytes = enc.encode(metaJson);
|
|
107
|
+
|
|
108
|
+
const recSize =
|
|
109
|
+
2 + aseidBytes.length +
|
|
110
|
+
2 + nameBytes.length +
|
|
111
|
+
rec.embedding!.length * 4 +
|
|
112
|
+
4 + metaBytes.length;
|
|
113
|
+
|
|
114
|
+
const recBuf = new Uint8Array(recSize);
|
|
115
|
+
const view = new DataView(recBuf.buffer);
|
|
116
|
+
let offset = 0;
|
|
117
|
+
|
|
118
|
+
view.setUint16(offset, aseidBytes.length, true); offset += 2;
|
|
119
|
+
recBuf.set(aseidBytes, offset); offset += aseidBytes.length;
|
|
120
|
+
|
|
121
|
+
view.setUint16(offset, nameBytes.length, true); offset += 2;
|
|
122
|
+
recBuf.set(nameBytes, offset); offset += nameBytes.length;
|
|
123
|
+
|
|
124
|
+
for (let i = 0; i < rec.embedding!.length; i++) {
|
|
125
|
+
view.setFloat32(offset, rec.embedding![i], true);
|
|
126
|
+
offset += 4;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
view.setUint32(offset, metaBytes.length, true); offset += 4;
|
|
130
|
+
recBuf.set(metaBytes, offset);
|
|
131
|
+
|
|
132
|
+
parts.push(recBuf);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const total = parts.reduce((s, p) => s + p.length, 0);
|
|
136
|
+
const out = new Uint8Array(total);
|
|
137
|
+
let pos = 0;
|
|
138
|
+
for (const p of parts) { out.set(p, pos); pos += p.length; }
|
|
139
|
+
return out;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
decodePayload(data: Uint8Array): A_FrameDefinition_Serialized[] {
|
|
143
|
+
if (data.length < this.A_FRAME_HEADER_SIZE) throw new Error('Corrupt index: too short for header');
|
|
144
|
+
|
|
145
|
+
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
146
|
+
|
|
147
|
+
const magic = view.getUint32(0, true);
|
|
148
|
+
if (magic !== this.A_FRAME_FILE_MAGIC) throw new Error(`Corrupt index: bad magic 0x${magic.toString(16)}`);
|
|
149
|
+
|
|
150
|
+
const version = data[4];
|
|
151
|
+
if (version !== this.A_FRAME_FILE_VERSION) throw new Error(`Unsupported index version: ${version}`);
|
|
152
|
+
|
|
153
|
+
const count = view.getUint32(5, true);
|
|
154
|
+
const dims = view.getUint16(9, true);
|
|
155
|
+
|
|
156
|
+
const records: A_FrameDefinition_Serialized[] = [];
|
|
157
|
+
let offset = this.A_FRAME_HEADER_SIZE;
|
|
158
|
+
|
|
159
|
+
for (let i = 0; i < count; i++) {
|
|
160
|
+
const aseidLen = view.getUint16(offset, true); offset += 2;
|
|
161
|
+
const aseid = dec.decode(data.slice(offset, offset + aseidLen)); offset += aseidLen;
|
|
162
|
+
|
|
163
|
+
const nameLen = view.getUint16(offset, true); offset += 2;
|
|
164
|
+
const name = dec.decode(data.slice(offset, offset + nameLen)); offset += nameLen;
|
|
165
|
+
|
|
166
|
+
const embedding = new Float32Array(dims);
|
|
167
|
+
for (let d = 0; d < dims; d++) {
|
|
168
|
+
embedding[d] = view.getFloat32(offset, true);
|
|
169
|
+
offset += 4;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
const metaLen = view.getUint32(offset, true); offset += 4;
|
|
173
|
+
const metaJson = dec.decode(data.slice(offset, offset + metaLen)); offset += metaLen;
|
|
174
|
+
const meta = JSON.parse(metaJson) as {
|
|
175
|
+
hash?: string;
|
|
176
|
+
source: string;
|
|
177
|
+
description?: string;
|
|
178
|
+
type: A_FrameTargetType;
|
|
179
|
+
metadata?: Record<string, unknown>;
|
|
180
|
+
namespace: string;
|
|
181
|
+
date: string;
|
|
182
|
+
model: string;
|
|
183
|
+
credentialId: string;
|
|
184
|
+
aFrameVersion: string;
|
|
185
|
+
aFrameServerVersion: string;
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
records.push({
|
|
189
|
+
aseid,
|
|
190
|
+
hash: meta.hash ?? aseid,
|
|
191
|
+
name,
|
|
192
|
+
type: meta.type,
|
|
193
|
+
embedding,
|
|
194
|
+
source: meta.source,
|
|
195
|
+
description: meta.description,
|
|
196
|
+
metadata: meta.metadata,
|
|
197
|
+
namespace: meta.namespace,
|
|
198
|
+
date: meta.date,
|
|
199
|
+
model: meta.model,
|
|
200
|
+
credentialId: meta.credentialId,
|
|
201
|
+
aFrameVersion: meta.aFrameVersion,
|
|
202
|
+
aFrameServerVersion: meta.aFrameServerVersion,
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
return records;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
encodeNamespacePayload(records: A_FrameNamespace_Serialized[]): Uint8Array {
|
|
211
|
+
const parts: Uint8Array[] = [];
|
|
212
|
+
|
|
213
|
+
if (records.some(r => !r.embedding)) {
|
|
214
|
+
throw new Error('All records must have embeddings to be encoded');
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
const header = new Uint8Array(this.A_FRAME_HEADER_SIZE);
|
|
218
|
+
const headerView = new DataView(header.buffer);
|
|
219
|
+
headerView.setUint32(0, this.A_FRAME_FILE_MAGIC, true);
|
|
220
|
+
header[4] = this.A_FRAME_FILE_VERSION;
|
|
221
|
+
headerView.setUint32(5, records.length, true);
|
|
222
|
+
const dims = records[0]?.embedding!.length ?? 0;
|
|
223
|
+
headerView.setUint16(9, dims, true);
|
|
224
|
+
parts.push(header);
|
|
225
|
+
|
|
226
|
+
for (const rec of records) {
|
|
227
|
+
const aseidBytes = enc.encode(rec.aseid.toString());
|
|
228
|
+
const nameBytes = enc.encode(rec.name);
|
|
229
|
+
const metaJson = JSON.stringify({
|
|
230
|
+
hash: rec.hash,
|
|
231
|
+
description: rec.description,
|
|
232
|
+
metadata: rec.metadata,
|
|
233
|
+
embeddedAt: rec.embeddedAt,
|
|
234
|
+
embeddingModel: rec.embeddingModel,
|
|
235
|
+
credentialId: rec.credentialId,
|
|
236
|
+
aFrameVersion: rec.aFrameVersion,
|
|
237
|
+
aFrameServerVersion: rec.aFrameServerVersion,
|
|
238
|
+
});
|
|
239
|
+
const metaBytes = enc.encode(metaJson);
|
|
240
|
+
|
|
241
|
+
const recSize =
|
|
242
|
+
2 + aseidBytes.length +
|
|
243
|
+
2 + nameBytes.length +
|
|
244
|
+
rec.embedding!.length * 4 +
|
|
245
|
+
4 + metaBytes.length;
|
|
246
|
+
|
|
247
|
+
const recBuf = new Uint8Array(recSize);
|
|
248
|
+
const view = new DataView(recBuf.buffer);
|
|
249
|
+
let offset = 0;
|
|
250
|
+
|
|
251
|
+
view.setUint16(offset, aseidBytes.length, true); offset += 2;
|
|
252
|
+
recBuf.set(aseidBytes, offset); offset += aseidBytes.length;
|
|
253
|
+
|
|
254
|
+
view.setUint16(offset, nameBytes.length, true); offset += 2;
|
|
255
|
+
recBuf.set(nameBytes, offset); offset += nameBytes.length;
|
|
256
|
+
|
|
257
|
+
for (let i = 0; i < rec.embedding!.length; i++) {
|
|
258
|
+
view.setFloat32(offset, rec.embedding![i], true);
|
|
259
|
+
offset += 4;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
view.setUint32(offset, metaBytes.length, true); offset += 4;
|
|
263
|
+
recBuf.set(metaBytes, offset);
|
|
264
|
+
|
|
265
|
+
parts.push(recBuf);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
const total = parts.reduce((s, p) => s + p.length, 0);
|
|
269
|
+
const out = new Uint8Array(total);
|
|
270
|
+
let pos = 0;
|
|
271
|
+
for (const p of parts) { out.set(p, pos); pos += p.length; }
|
|
272
|
+
return out;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
decodeNamespacePayload(data: Uint8Array): A_FrameNamespace_Serialized[] {
|
|
276
|
+
if (data.length < this.A_FRAME_HEADER_SIZE) throw new Error('Corrupt namespace index: too short for header');
|
|
277
|
+
|
|
278
|
+
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
279
|
+
|
|
280
|
+
const magic = view.getUint32(0, true);
|
|
281
|
+
if (magic !== this.A_FRAME_FILE_MAGIC) throw new Error(`Corrupt namespace index: bad magic 0x${magic.toString(16)}`);
|
|
282
|
+
|
|
283
|
+
const version = data[4];
|
|
284
|
+
if (version !== this.A_FRAME_FILE_VERSION) throw new Error(`Unsupported namespace index version: ${version}`);
|
|
285
|
+
|
|
286
|
+
const count = view.getUint32(5, true);
|
|
287
|
+
const dims = view.getUint16(9, true);
|
|
288
|
+
|
|
289
|
+
const records: A_FrameNamespace_Serialized[] = [];
|
|
290
|
+
let offset = this.A_FRAME_HEADER_SIZE;
|
|
291
|
+
|
|
292
|
+
for (let i = 0; i < count; i++) {
|
|
293
|
+
const aseidLen = view.getUint16(offset, true); offset += 2;
|
|
294
|
+
const aseid = dec.decode(data.slice(offset, offset + aseidLen)); offset += aseidLen;
|
|
295
|
+
|
|
296
|
+
const nameLen = view.getUint16(offset, true); offset += 2;
|
|
297
|
+
const name = dec.decode(data.slice(offset, offset + nameLen)); offset += nameLen;
|
|
298
|
+
|
|
299
|
+
const embedding = new Float32Array(dims);
|
|
300
|
+
for (let d = 0; d < dims; d++) {
|
|
301
|
+
embedding[d] = view.getFloat32(offset, true);
|
|
302
|
+
offset += 4;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
const metaLen = view.getUint32(offset, true); offset += 4;
|
|
306
|
+
const metaJson = dec.decode(data.slice(offset, offset + metaLen)); offset += metaLen;
|
|
307
|
+
const meta = JSON.parse(metaJson) as {
|
|
308
|
+
hash?: string;
|
|
309
|
+
description?: string;
|
|
310
|
+
metadata?: Record<string, unknown>;
|
|
311
|
+
embeddedAt: number;
|
|
312
|
+
embeddingModel?: string;
|
|
313
|
+
credentialId?: string;
|
|
314
|
+
aFrameVersion?: string;
|
|
315
|
+
aFrameServerVersion?: string;
|
|
316
|
+
};
|
|
317
|
+
|
|
318
|
+
records.push({
|
|
319
|
+
aseid,
|
|
320
|
+
hash: meta.hash ?? aseid,
|
|
321
|
+
name,
|
|
322
|
+
embedding,
|
|
323
|
+
description: meta.description,
|
|
324
|
+
metadata: meta.metadata,
|
|
325
|
+
embeddedAt: meta.embeddedAt,
|
|
326
|
+
embeddingModel: meta.embeddingModel,
|
|
327
|
+
credentialId: meta.credentialId,
|
|
328
|
+
aFrameVersion: meta.aFrameVersion,
|
|
329
|
+
aFrameServerVersion: meta.aFrameServerVersion,
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
return records;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { A_Component, A_Context, A_Scope } from '@adaas/a-concept';
|
|
2
|
+
import { A_FrameNamespace_Serialized } from '../A-FrameNamespace/A-FrameNamespace.types';
|
|
3
|
+
import { A_FrameStorageFeatures } from './A-FrameStorage.constants';
|
|
4
|
+
import { A_FrameStorageOperation } from './A-FrameStorageOperation.context';
|
|
5
|
+
import { A_FrameStorageError } from './A-FrameStorage.error';
|
|
6
|
+
import { A_FrameStorageDestroyDefinitionsOperation, A_FrameStorageDestroyDefinitionsOperationParams, A_FrameStorageDestroyDefinitionsOperationResult, A_FrameStorageDestroyNamespacesOperation, A_FrameStorageDestroyNamespacesOperationParams, A_FrameStorageDestroyNamespacesOperationResult, A_FrameStorageLoadDefinitionsOperation, A_FrameStorageLoadDefinitionsOperationParams, A_FrameStorageLoadDefinitionsOperationResult, A_FrameStorageLoadNamespacesOperation, A_FrameStorageLoadNamespacesOperationParams, A_FrameStorageLoadNamespacesOperationResult, A_FrameStorageSaveDefinitionOperation, A_FrameStorageSaveDefinitionOperationParams, A_FrameStorageSaveDefinitionOperationResult, A_FrameStorageSaveNamespaceOperation, A_FrameStorageSaveNamespaceOperationParams, A_FrameStorageSaveNamespaceOperationResult } from './A-FrameStorage.types';
|
|
7
|
+
import { A_FrameDefinition_Serialized } from '../A-FrameDefinition/A-FrameDefinition.types';
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
export class A_FrameStorage extends A_Component {
|
|
11
|
+
|
|
12
|
+
async saveDefinitions(definitions: Array<A_FrameDefinition_Serialized>): Promise<A_FrameStorageSaveDefinitionOperation> {
|
|
13
|
+
const context = new A_FrameStorageOperation<A_FrameStorageSaveDefinitionOperationParams, A_FrameStorageSaveDefinitionOperationResult>({
|
|
14
|
+
records: definitions
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
const executionScope = new A_Scope({
|
|
18
|
+
name: 'A_FrameStorage.saveDefinitions',
|
|
19
|
+
fragments: [context]
|
|
20
|
+
})
|
|
21
|
+
.inherit(A_Context.scope(this));
|
|
22
|
+
|
|
23
|
+
try {
|
|
24
|
+
await this.call(A_FrameStorageFeatures.SaveDefinitions, executionScope);
|
|
25
|
+
executionScope.destroy();
|
|
26
|
+
|
|
27
|
+
return context;
|
|
28
|
+
} catch (error) {
|
|
29
|
+
|
|
30
|
+
context.fail(new A_FrameStorageError({
|
|
31
|
+
title: A_FrameStorageError.SaveDefinitionFailed,
|
|
32
|
+
description: `Failed to save definition records.`,
|
|
33
|
+
}));
|
|
34
|
+
|
|
35
|
+
executionScope.destroy();
|
|
36
|
+
|
|
37
|
+
return context;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
async loadDefinitions(namespaceId: string, definitionId: string): Promise<A_FrameStorageLoadDefinitionsOperation> {
|
|
42
|
+
const context = new A_FrameStorageOperation<A_FrameStorageLoadDefinitionsOperationParams, A_FrameStorageLoadDefinitionsOperationResult>({
|
|
43
|
+
namespaceId,
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
const executionScope = new A_Scope({
|
|
47
|
+
name: 'A_FrameStorage.loadDefinitions',
|
|
48
|
+
fragments: [context]
|
|
49
|
+
})
|
|
50
|
+
.inherit(A_Context.scope(this));
|
|
51
|
+
|
|
52
|
+
try {
|
|
53
|
+
await this.call(A_FrameStorageFeatures.LoadDefinitions, executionScope);
|
|
54
|
+
executionScope.destroy();
|
|
55
|
+
|
|
56
|
+
return context;
|
|
57
|
+
} catch (error) {
|
|
58
|
+
|
|
59
|
+
context.fail(new A_FrameStorageError({
|
|
60
|
+
title: A_FrameStorageError.LoadDefinitionsFailed,
|
|
61
|
+
description: `Failed to load definition records.`,
|
|
62
|
+
}));
|
|
63
|
+
|
|
64
|
+
executionScope.destroy();
|
|
65
|
+
|
|
66
|
+
return context;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
async destroyDefinitions(namespaceId: string, definitionId: string): Promise<A_FrameStorageDestroyDefinitionsOperation> {
|
|
72
|
+
const context = new A_FrameStorageOperation<A_FrameStorageDestroyDefinitionsOperationParams, A_FrameStorageDestroyDefinitionsOperationResult>({
|
|
73
|
+
namespaceId,
|
|
74
|
+
definitionId
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
const executionScope = new A_Scope({
|
|
78
|
+
name: 'A_FrameStorage.destroyDefinitions',
|
|
79
|
+
fragments: [context]
|
|
80
|
+
})
|
|
81
|
+
.inherit(A_Context.scope(this));
|
|
82
|
+
|
|
83
|
+
try {
|
|
84
|
+
await this.call(A_FrameStorageFeatures.DestroyDefinitions, executionScope);
|
|
85
|
+
executionScope.destroy();
|
|
86
|
+
|
|
87
|
+
return context;
|
|
88
|
+
} catch (error) {
|
|
89
|
+
|
|
90
|
+
context.fail(new A_FrameStorageError({
|
|
91
|
+
title: A_FrameStorageError.DestroyDefinitionsFailed,
|
|
92
|
+
description: `Failed to destroy definition records.`,
|
|
93
|
+
}));
|
|
94
|
+
|
|
95
|
+
executionScope.destroy();
|
|
96
|
+
|
|
97
|
+
return context;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
async saveNamespaces(namespaces: A_FrameNamespace_Serialized[]): Promise<A_FrameStorageSaveNamespaceOperation> {
|
|
104
|
+
const context = new A_FrameStorageOperation<A_FrameStorageSaveNamespaceOperationParams, A_FrameStorageSaveNamespaceOperationResult>({
|
|
105
|
+
records: namespaces
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
const executionScope = new A_Scope({
|
|
109
|
+
name: 'A_FrameStorage.saveNamespaces',
|
|
110
|
+
fragments: [context]
|
|
111
|
+
})
|
|
112
|
+
.inherit(A_Context.scope(this));
|
|
113
|
+
|
|
114
|
+
try {
|
|
115
|
+
await this.call(A_FrameStorageFeatures.SaveNamespaces, executionScope);
|
|
116
|
+
executionScope.destroy();
|
|
117
|
+
|
|
118
|
+
return context;
|
|
119
|
+
} catch (error) {
|
|
120
|
+
|
|
121
|
+
context.fail(new A_FrameStorageError({
|
|
122
|
+
title: A_FrameStorageError.SaveNamespaceFailed,
|
|
123
|
+
description: `Failed to save namespace records.`,
|
|
124
|
+
}));
|
|
125
|
+
|
|
126
|
+
executionScope.destroy();
|
|
127
|
+
|
|
128
|
+
return context;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
async loadNamespaces(
|
|
133
|
+
namespaceIds: string[]
|
|
134
|
+
): Promise<A_FrameStorageLoadNamespacesOperation> {
|
|
135
|
+
const context = new A_FrameStorageOperation<A_FrameStorageLoadNamespacesOperationParams, A_FrameStorageLoadNamespacesOperationResult>({
|
|
136
|
+
namespaces: namespaceIds
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
const executionScope = new A_Scope({
|
|
140
|
+
name: 'A_FrameStorage.loadNamespaces',
|
|
141
|
+
fragments: [context]
|
|
142
|
+
})
|
|
143
|
+
.inherit(A_Context.scope(this));
|
|
144
|
+
|
|
145
|
+
try {
|
|
146
|
+
await this.call(A_FrameStorageFeatures.LoadNamespaces, executionScope);
|
|
147
|
+
executionScope.destroy();
|
|
148
|
+
|
|
149
|
+
return context;
|
|
150
|
+
} catch (error) {
|
|
151
|
+
|
|
152
|
+
context.fail(new A_FrameStorageError({
|
|
153
|
+
title: A_FrameStorageError.LoadNamespacesFailed,
|
|
154
|
+
description: `Failed to load namespace records.`,
|
|
155
|
+
}));
|
|
156
|
+
|
|
157
|
+
executionScope.destroy();
|
|
158
|
+
|
|
159
|
+
return context;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
async destroyNamespaces(namespacesIds: string[]): Promise<A_FrameStorageDestroyNamespacesOperation> {
|
|
164
|
+
const context = new A_FrameStorageOperation<A_FrameStorageDestroyNamespacesOperationParams, A_FrameStorageDestroyNamespacesOperationResult>({
|
|
165
|
+
namespaces: namespacesIds
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
const executionScope = new A_Scope({
|
|
169
|
+
name: 'A_FrameStorage.destroyNamespaces',
|
|
170
|
+
fragments: [context]
|
|
171
|
+
})
|
|
172
|
+
.inherit(A_Context.scope(this));
|
|
173
|
+
|
|
174
|
+
try {
|
|
175
|
+
await this.call(A_FrameStorageFeatures.DestroyNamespaces, executionScope);
|
|
176
|
+
executionScope.destroy();
|
|
177
|
+
|
|
178
|
+
return context;
|
|
179
|
+
} catch (error) {
|
|
180
|
+
|
|
181
|
+
context.fail(new A_FrameStorageError({
|
|
182
|
+
title: A_FrameStorageError.DestroyNamespacesFailed,
|
|
183
|
+
description: `Failed to destroy namespace records.`,
|
|
184
|
+
}));
|
|
185
|
+
|
|
186
|
+
executionScope.destroy();
|
|
187
|
+
|
|
188
|
+
return context;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
export const A_FrameStorageFeatures = {
|
|
4
|
+
SaveDefinitions: '_A_FRAME_STORAGE_SAVE',
|
|
5
|
+
LoadDefinitions: '_A_FRAME_STORAGE_LOAD',
|
|
6
|
+
DestroyDefinitions: '_A_FRAME_STORAGE_DESTROY',
|
|
7
|
+
|
|
8
|
+
SaveNamespaces: '_A_FRAME_STORAGE_SAVE_NAMESPACES',
|
|
9
|
+
LoadNamespaces: '_A_FRAME_STORAGE_LOAD_NAMESPACES',
|
|
10
|
+
DestroyNamespaces: '_A_FRAME_STORAGE_DESTROY_NAMESPACES',
|
|
11
|
+
} as const
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { A_Error } from "@adaas/a-concept";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
export class A_FrameStorageError extends A_Error {
|
|
6
|
+
static readonly SaveDefinitionFailed = 'SaveDefinitionFailed';
|
|
7
|
+
static readonly LoadDefinitionsFailed = 'LoadDefinitionsFailed';
|
|
8
|
+
static readonly DestroyDefinitionsFailed = 'DestroyDefinitionsFailed';
|
|
9
|
+
static readonly SaveNamespaceFailed = 'SaveNamespaceFailed';
|
|
10
|
+
static readonly LoadNamespacesFailed = 'LoadNamespacesFailed';
|
|
11
|
+
static readonly DestroyNamespacesFailed = 'DestroyNamespacesFailed';
|
|
12
|
+
|
|
13
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { A_FrameDefinition } from "../A-FrameDefinition";
|
|
2
|
+
import { A_FrameDefinition_Serialized } from "../A-FrameDefinition/A-FrameDefinition.types";
|
|
3
|
+
import { A_FrameNamespace_Record, A_FrameNamespace_Serialized } from "../A-FrameNamespace/A-FrameNamespace.types";
|
|
4
|
+
import { A_FrameStorageOperation } from "./A-FrameStorageOperation.context";
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
export interface IA_FrameStorage {
|
|
8
|
+
|
|
9
|
+
saveDefinitions(definitions: Array<A_FrameDefinition_Serialized>): Promise<A_FrameStorageSaveDefinitionOperationResult>;
|
|
10
|
+
|
|
11
|
+
loadDefinitions(namespaceId: string, definitionId: string): Promise<A_FrameStorageLoadDefinitionsOperationResult>;
|
|
12
|
+
|
|
13
|
+
destroyDefinitions(namespaceId: string, definitionId: string): Promise<A_FrameStorageDestroyDefinitionsOperationResult>;
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
saveNamespaces(namespaces: A_FrameNamespace_Serialized[]): Promise<A_FrameStorageSaveNamespaceOperationResult>;
|
|
18
|
+
|
|
19
|
+
loadNamespaces(): Promise<A_FrameStorageLoadNamespacesOperationResult>;
|
|
20
|
+
|
|
21
|
+
destroyNamespaces(namespaceId: string): Promise<A_FrameStorageDestroyNamespacesOperationResult>;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
// ===================================================================
|
|
26
|
+
// ------------------- Definitions Operations -------------------
|
|
27
|
+
// ===================================================================
|
|
28
|
+
// -------------------- Save Definition Operation --------------------
|
|
29
|
+
export type A_FrameStorageSaveDefinitionOperationParams = {
|
|
30
|
+
records: A_FrameDefinition_Serialized[];
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export type A_FrameStorageSaveDefinitionOperationResult = {
|
|
34
|
+
saved: number;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
// -------------------- Load Definitions Operation --------------------
|
|
38
|
+
export type A_FrameStorageLoadDefinitionsOperationParams = {
|
|
39
|
+
namespaceId: string;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export type A_FrameStorageLoadDefinitionsOperationResult = {
|
|
43
|
+
records?: A_FrameDefinition_Serialized[];
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// -------------------- Destroy Definitions Operation --------------------
|
|
47
|
+
export type A_FrameStorageDestroyDefinitionsOperationParams = {
|
|
48
|
+
namespaceId: string;
|
|
49
|
+
definitionId: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export type A_FrameStorageDestroyDefinitionsOperationResult = {
|
|
53
|
+
records: Array<A_FrameDefinition_Serialized>;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
// ──────────────────────────────────────────────────────────────────────────────
|
|
58
|
+
|
|
59
|
+
export type A_FrameStorageSaveDefinitionOperation = A_FrameStorageOperation<A_FrameStorageSaveDefinitionOperationParams, A_FrameStorageSaveDefinitionOperationResult>;
|
|
60
|
+
|
|
61
|
+
export type A_FrameStorageLoadDefinitionsOperation = A_FrameStorageOperation<A_FrameStorageLoadDefinitionsOperationParams, A_FrameStorageLoadDefinitionsOperationResult>;
|
|
62
|
+
|
|
63
|
+
export type A_FrameStorageDestroyDefinitionsOperation = A_FrameStorageOperation<A_FrameStorageDestroyDefinitionsOperationParams, A_FrameStorageDestroyDefinitionsOperationResult>;
|
|
64
|
+
|
|
65
|
+
// ===================================================================
|
|
66
|
+
// ------------------- Namespace Operations -------------------
|
|
67
|
+
// ===================================================================
|
|
68
|
+
// -------------------- Save Namespaces Operation --------------------
|
|
69
|
+
export type A_FrameStorageSaveNamespaceOperationParams = {
|
|
70
|
+
records: A_FrameNamespace_Serialized[];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export type A_FrameStorageSaveNamespaceOperationResult = {
|
|
74
|
+
success: boolean;
|
|
75
|
+
}
|
|
76
|
+
// -------------------- Load Namespaces Operation --------------------
|
|
77
|
+
export type A_FrameStorageLoadNamespacesOperationParams = {
|
|
78
|
+
namespaces?: string[];
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export type A_FrameStorageLoadNamespacesOperationResult = {
|
|
82
|
+
records: A_FrameNamespace_Serialized[];
|
|
83
|
+
}
|
|
84
|
+
// -------------------- Destroy Namespaces Operation --------------------
|
|
85
|
+
export type A_FrameStorageDestroyNamespacesOperationParams = {
|
|
86
|
+
namespaces: string[];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export type A_FrameStorageDestroyNamespacesOperationResult = {
|
|
90
|
+
success: boolean;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
export type A_FrameStorageSaveNamespaceOperation = A_FrameStorageOperation<A_FrameStorageSaveNamespaceOperationParams, A_FrameStorageSaveNamespaceOperationResult>;
|
|
95
|
+
|
|
96
|
+
export type A_FrameStorageLoadNamespacesOperation = A_FrameStorageOperation<A_FrameStorageLoadNamespacesOperationParams, A_FrameStorageLoadNamespacesOperationResult>;
|
|
97
|
+
|
|
98
|
+
export type A_FrameStorageDestroyNamespacesOperation = A_FrameStorageOperation<A_FrameStorageDestroyNamespacesOperationParams, A_FrameStorageDestroyNamespacesOperationResult>;
|