@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.
Files changed (379) hide show
  1. package/.conf/tsconfig.browser.json +13 -0
  2. package/.conf/tsconfig.node.json +14 -0
  3. package/.env.example +12 -0
  4. package/dist/browser/A-FrameBrowserStorageBlobs.context-OEQr85oq.d.mts +40 -0
  5. package/dist/browser/A-FrameBundle.types-DaaUvViw.d.mts +33 -0
  6. package/dist/browser/A-FrameChannel.types-DWOEUs28.d.mts +142 -0
  7. package/dist/browser/A-FrameDefinition.entity-DWGN_Ujr.d.mts +329 -0
  8. package/dist/browser/A-FrameDynamicStructure.entity-DaBgSRCR.d.mts +188 -0
  9. package/dist/browser/A-FrameLogger.component.env-browser-BIPAP4oQ.d.mts +112 -0
  10. package/dist/browser/A-FrameNamespace.entity-rCm1AavP.d.mts +125 -0
  11. package/dist/browser/bundle.d.mts +8 -0
  12. package/dist/browser/bundle.mjs +2 -0
  13. package/dist/browser/bundle.mjs.map +1 -0
  14. package/dist/browser/channel.d.mts +165 -0
  15. package/dist/browser/channel.mjs +3 -0
  16. package/dist/browser/channel.mjs.map +1 -0
  17. package/dist/browser/chunk-5TTVFB3G.mjs +2 -0
  18. package/dist/browser/chunk-5TTVFB3G.mjs.map +1 -0
  19. package/dist/browser/chunk-AYN7KUQT.mjs +3 -0
  20. package/dist/browser/chunk-AYN7KUQT.mjs.map +1 -0
  21. package/dist/browser/chunk-DMGQW3AO.mjs +2 -0
  22. package/dist/browser/chunk-DMGQW3AO.mjs.map +1 -0
  23. package/dist/browser/chunk-G66IL2DR.mjs +2 -0
  24. package/dist/browser/chunk-G66IL2DR.mjs.map +1 -0
  25. package/dist/browser/chunk-GOADBDTE.mjs +2 -0
  26. package/dist/browser/chunk-GOADBDTE.mjs.map +1 -0
  27. package/dist/browser/chunk-H6OZP4ZV.mjs +2 -0
  28. package/dist/browser/chunk-H6OZP4ZV.mjs.map +1 -0
  29. package/dist/browser/chunk-INS7RO3B.mjs +2 -0
  30. package/dist/browser/chunk-INS7RO3B.mjs.map +1 -0
  31. package/dist/browser/chunk-K4MZY4ME.mjs +2 -0
  32. package/dist/browser/chunk-K4MZY4ME.mjs.map +1 -0
  33. package/dist/browser/chunk-OFKV5GNB.mjs +3 -0
  34. package/dist/browser/chunk-OFKV5GNB.mjs.map +1 -0
  35. package/dist/browser/chunk-QATIN7CO.mjs +3 -0
  36. package/dist/browser/chunk-QATIN7CO.mjs.map +1 -0
  37. package/dist/browser/chunk-QBBQ37P3.mjs +2 -0
  38. package/dist/browser/chunk-QBBQ37P3.mjs.map +1 -0
  39. package/dist/browser/chunk-VDVJWU5T.mjs +2 -0
  40. package/dist/browser/chunk-VDVJWU5T.mjs.map +1 -0
  41. package/dist/browser/chunk-X3C4I6YJ.mjs +2 -0
  42. package/dist/browser/chunk-X3C4I6YJ.mjs.map +1 -0
  43. package/dist/browser/chunk-YQJFTBGV.mjs +3 -0
  44. package/dist/browser/chunk-YQJFTBGV.mjs.map +1 -0
  45. package/dist/browser/chunk-ZVCTU2DN.mjs +3 -0
  46. package/dist/browser/chunk-ZVCTU2DN.mjs.map +1 -0
  47. package/dist/browser/core.d.mts +97 -0
  48. package/dist/browser/core.mjs +2 -0
  49. package/dist/browser/core.mjs.map +1 -0
  50. package/dist/browser/crypto.d.mts +35 -0
  51. package/dist/browser/crypto.mjs +2 -0
  52. package/dist/browser/crypto.mjs.map +1 -0
  53. package/dist/browser/definition.d.mts +13 -0
  54. package/dist/browser/definition.mjs +2 -0
  55. package/dist/browser/definition.mjs.map +1 -0
  56. package/dist/browser/dynamic-feature.d.mts +10 -0
  57. package/dist/browser/dynamic-feature.mjs +2 -0
  58. package/dist/browser/dynamic-feature.mjs.map +1 -0
  59. package/dist/browser/dynamic-structure.d.mts +12 -0
  60. package/dist/browser/dynamic-structure.mjs +2 -0
  61. package/dist/browser/dynamic-structure.mjs.map +1 -0
  62. package/dist/browser/env.d.mts +2 -0
  63. package/dist/browser/env.mjs +2 -0
  64. package/dist/browser/env.mjs.map +1 -0
  65. package/dist/browser/frame-index.d.mts +95 -0
  66. package/dist/browser/frame-index.mjs +2 -0
  67. package/dist/browser/frame-index.mjs.map +1 -0
  68. package/dist/browser/index.browser-CZlhzfSP.d.mts +22 -0
  69. package/dist/browser/index.d.mts +1 -144
  70. package/dist/browser/index.mjs +1 -1
  71. package/dist/browser/index.mjs.map +1 -1
  72. package/dist/browser/logger.d.mts +41 -0
  73. package/dist/browser/logger.mjs +2 -0
  74. package/dist/browser/logger.mjs.map +1 -0
  75. package/dist/browser/namespace.d.mts +13 -0
  76. package/dist/browser/namespace.mjs +2 -0
  77. package/dist/browser/namespace.mjs.map +1 -0
  78. package/dist/browser/storage.d.mts +194 -0
  79. package/dist/browser/storage.mjs +2 -0
  80. package/dist/browser/storage.mjs.map +1 -0
  81. package/dist/browser/vector.d.mts +15 -0
  82. package/dist/browser/vector.mjs +2 -0
  83. package/dist/browser/vector.mjs.map +1 -0
  84. package/dist/index.cjs +0 -0
  85. package/dist/node/A-FrameChannel.component-BfBcs734.d.ts +62 -0
  86. package/dist/node/A-FrameChannel.component-NNKcFViw.d.mts +62 -0
  87. package/dist/node/A-FrameChannel.types-DQF-IiRq.d.mts +146 -0
  88. package/dist/node/A-FrameChannel.types-DQF-IiRq.d.ts +146 -0
  89. package/dist/node/A-FrameDefinition.entity-CAUOdEvU.d.ts +329 -0
  90. package/dist/node/A-FrameDefinition.entity-DWGN_Ujr.d.mts +329 -0
  91. package/dist/node/A-FrameDynamicStructure.entity-DaBgSRCR.d.mts +188 -0
  92. package/dist/node/A-FrameDynamicStructure.entity-DaBgSRCR.d.ts +188 -0
  93. package/dist/node/A-FrameNamespace.entity-D3fZBGDx.d.ts +125 -0
  94. package/dist/node/A-FrameNamespace.entity-rCm1AavP.d.mts +125 -0
  95. package/dist/node/A-FrameStorage.component-BYjHfHJJ.d.mts +107 -0
  96. package/dist/node/A-FrameStorage.component-CT01fs-t.d.ts +107 -0
  97. package/dist/node/bundle.cjs +101 -0
  98. package/dist/node/bundle.cjs.map +1 -0
  99. package/dist/node/bundle.d.mts +69 -0
  100. package/dist/node/bundle.d.ts +69 -0
  101. package/dist/node/bundle.mjs +76 -0
  102. package/dist/node/bundle.mjs.map +1 -0
  103. package/dist/node/channel.cjs +60 -0
  104. package/dist/node/channel.cjs.map +1 -0
  105. package/dist/node/channel.d.mts +61 -0
  106. package/dist/node/channel.d.ts +61 -0
  107. package/dist/node/channel.mjs +11 -0
  108. package/dist/node/channel.mjs.map +1 -0
  109. package/dist/node/chunk-3LOMGNWA.cjs +8 -0
  110. package/dist/node/chunk-3LOMGNWA.cjs.map +1 -0
  111. package/dist/node/chunk-3ONWH75E.mjs +257 -0
  112. package/dist/node/chunk-3ONWH75E.mjs.map +1 -0
  113. package/dist/node/chunk-3TD2PEDZ.mjs +53 -0
  114. package/dist/node/chunk-3TD2PEDZ.mjs.map +1 -0
  115. package/dist/node/chunk-442DXGOD.mjs +16 -0
  116. package/dist/node/chunk-442DXGOD.mjs.map +1 -0
  117. package/dist/node/chunk-5BKCX2RO.mjs +33 -0
  118. package/dist/node/chunk-5BKCX2RO.mjs.map +1 -0
  119. package/dist/node/chunk-6EFXNUL4.mjs +6 -0
  120. package/dist/node/chunk-6EFXNUL4.mjs.map +1 -0
  121. package/dist/node/chunk-6KAGWGTE.mjs +529 -0
  122. package/dist/node/chunk-6KAGWGTE.mjs.map +1 -0
  123. package/dist/node/chunk-7A6XGT5J.cjs +541 -0
  124. package/dist/node/chunk-7A6XGT5J.cjs.map +1 -0
  125. package/dist/node/chunk-AOQRXZPC.mjs +207 -0
  126. package/dist/node/chunk-AOQRXZPC.mjs.map +1 -0
  127. package/dist/node/chunk-APRYHBEF.mjs +171 -0
  128. package/dist/node/chunk-APRYHBEF.mjs.map +1 -0
  129. package/dist/node/chunk-B7BXP7K4.mjs +253 -0
  130. package/dist/node/chunk-B7BXP7K4.mjs.map +1 -0
  131. package/dist/node/chunk-B7ZDJXD3.cjs +35 -0
  132. package/dist/node/chunk-B7ZDJXD3.cjs.map +1 -0
  133. package/dist/node/chunk-CP6JHUU6.cjs +541 -0
  134. package/dist/node/chunk-CP6JHUU6.cjs.map +1 -0
  135. package/dist/node/chunk-DDCEMKBP.mjs +655 -0
  136. package/dist/node/chunk-DDCEMKBP.mjs.map +1 -0
  137. package/dist/node/chunk-DMY44VUG.mjs +655 -0
  138. package/dist/node/chunk-DMY44VUG.mjs.map +1 -0
  139. package/dist/node/chunk-F46TSY2K.cjs +541 -0
  140. package/dist/node/chunk-F46TSY2K.cjs.map +1 -0
  141. package/dist/node/chunk-F4UCOZW5.mjs +33 -0
  142. package/dist/node/chunk-F4UCOZW5.mjs.map +1 -0
  143. package/dist/node/chunk-GBTFMT3K.cjs +256 -0
  144. package/dist/node/chunk-GBTFMT3K.cjs.map +1 -0
  145. package/dist/node/chunk-GNVXVK2B.cjs +8 -0
  146. package/dist/node/chunk-GNVXVK2B.cjs.map +1 -0
  147. package/dist/node/chunk-GRR6NNWY.cjs +688 -0
  148. package/dist/node/chunk-GRR6NNWY.cjs.map +1 -0
  149. package/dist/node/chunk-IIVYTS5M.mjs +239 -0
  150. package/dist/node/chunk-IIVYTS5M.mjs.map +1 -0
  151. package/dist/node/chunk-JQBYDEMW.mjs +33 -0
  152. package/dist/node/chunk-JQBYDEMW.mjs.map +1 -0
  153. package/dist/node/chunk-K4MZY4ME.mjs +3 -0
  154. package/dist/node/chunk-K4MZY4ME.mjs.map +1 -0
  155. package/dist/node/chunk-KK64VLZN.cjs +4 -0
  156. package/dist/node/chunk-KK64VLZN.cjs.map +1 -0
  157. package/dist/node/chunk-KLG6HKFU.cjs +175 -0
  158. package/dist/node/chunk-KLG6HKFU.cjs.map +1 -0
  159. package/dist/node/chunk-LJIZ47HO.cjs +688 -0
  160. package/dist/node/chunk-LJIZ47HO.cjs.map +1 -0
  161. package/dist/node/chunk-NIXKAQVP.cjs +35 -0
  162. package/dist/node/chunk-NIXKAQVP.cjs.map +1 -0
  163. package/dist/node/chunk-OI76LHVT.mjs +21 -0
  164. package/dist/node/chunk-OI76LHVT.mjs.map +1 -0
  165. package/dist/node/chunk-OJGCQNAH.mjs +529 -0
  166. package/dist/node/chunk-OJGCQNAH.mjs.map +1 -0
  167. package/dist/node/chunk-OYC6L5NX.mjs +6 -0
  168. package/dist/node/chunk-OYC6L5NX.mjs.map +1 -0
  169. package/dist/node/chunk-QFHZIG7Y.cjs +25 -0
  170. package/dist/node/chunk-QFHZIG7Y.cjs.map +1 -0
  171. package/dist/node/chunk-QFUZVN4Y.cjs +259 -0
  172. package/dist/node/chunk-QFUZVN4Y.cjs.map +1 -0
  173. package/dist/node/chunk-R2H234YO.cjs +8 -0
  174. package/dist/node/chunk-R2H234YO.cjs.map +1 -0
  175. package/dist/node/chunk-RRLTGGM7.cjs +209 -0
  176. package/dist/node/chunk-RRLTGGM7.cjs.map +1 -0
  177. package/dist/node/chunk-SDKIJDMH.mjs +655 -0
  178. package/dist/node/chunk-SDKIJDMH.mjs.map +1 -0
  179. package/dist/node/chunk-TO4BPKCY.mjs +6 -0
  180. package/dist/node/chunk-TO4BPKCY.mjs.map +1 -0
  181. package/dist/node/chunk-UKKCN7CQ.cjs +688 -0
  182. package/dist/node/chunk-UKKCN7CQ.cjs.map +1 -0
  183. package/dist/node/chunk-UPA7VN4R.mjs +153 -0
  184. package/dist/node/chunk-UPA7VN4R.mjs.map +1 -0
  185. package/dist/node/chunk-UTJ7CVVB.cjs +248 -0
  186. package/dist/node/chunk-UTJ7CVVB.cjs.map +1 -0
  187. package/dist/node/chunk-XFUF7SDO.cjs +35 -0
  188. package/dist/node/chunk-XFUF7SDO.cjs.map +1 -0
  189. package/dist/node/chunk-YVX4W6SI.cjs +155 -0
  190. package/dist/node/chunk-YVX4W6SI.cjs.map +1 -0
  191. package/dist/node/chunk-YWWGJ6EJ.cjs +55 -0
  192. package/dist/node/chunk-YWWGJ6EJ.cjs.map +1 -0
  193. package/dist/node/chunk-Z4HUCRK2.mjs +529 -0
  194. package/dist/node/chunk-Z4HUCRK2.mjs.map +1 -0
  195. package/dist/node/chunk-ZM2RLVVH.cjs +18 -0
  196. package/dist/node/chunk-ZM2RLVVH.cjs.map +1 -0
  197. package/dist/node/core.cjs +259 -0
  198. package/dist/node/core.cjs.map +1 -0
  199. package/dist/node/core.d.mts +76 -0
  200. package/dist/node/core.d.ts +76 -0
  201. package/dist/node/core.mjs +248 -0
  202. package/dist/node/core.mjs.map +1 -0
  203. package/dist/node/crypto.cjs +13 -0
  204. package/dist/node/crypto.cjs.map +1 -0
  205. package/dist/node/crypto.d.mts +44 -0
  206. package/dist/node/crypto.d.ts +44 -0
  207. package/dist/node/crypto.mjs +4 -0
  208. package/dist/node/crypto.mjs.map +1 -0
  209. package/dist/node/definition.cjs +19 -0
  210. package/dist/node/definition.cjs.map +1 -0
  211. package/dist/node/definition.d.mts +13 -0
  212. package/dist/node/definition.d.ts +13 -0
  213. package/dist/node/definition.mjs +6 -0
  214. package/dist/node/definition.mjs.map +1 -0
  215. package/dist/node/dynamic-feature.cjs +14 -0
  216. package/dist/node/dynamic-feature.cjs.map +1 -0
  217. package/dist/node/dynamic-feature.d.mts +10 -0
  218. package/dist/node/dynamic-feature.d.ts +10 -0
  219. package/dist/node/dynamic-feature.mjs +12 -0
  220. package/dist/node/dynamic-feature.mjs.map +1 -0
  221. package/dist/node/dynamic-structure.cjs +143 -0
  222. package/dist/node/dynamic-structure.cjs.map +1 -0
  223. package/dist/node/dynamic-structure.d.mts +12 -0
  224. package/dist/node/dynamic-structure.d.ts +12 -0
  225. package/dist/node/dynamic-structure.mjs +138 -0
  226. package/dist/node/dynamic-structure.mjs.map +1 -0
  227. package/dist/node/env.cjs +14 -0
  228. package/dist/node/env.cjs.map +1 -0
  229. package/dist/node/env.d.mts +22 -0
  230. package/dist/node/env.d.ts +22 -0
  231. package/dist/node/env.mjs +5 -0
  232. package/dist/node/env.mjs.map +1 -0
  233. package/dist/node/frame-index.cjs +16 -0
  234. package/dist/node/frame-index.cjs.map +1 -0
  235. package/dist/node/frame-index.d.mts +95 -0
  236. package/dist/node/frame-index.d.ts +95 -0
  237. package/dist/node/frame-index.mjs +7 -0
  238. package/dist/node/frame-index.mjs.map +1 -0
  239. package/dist/node/index.cjs +0 -288
  240. package/dist/node/index.cjs.map +1 -1
  241. package/dist/node/index.d.mts +1 -144
  242. package/dist/node/index.d.ts +1 -144
  243. package/dist/node/index.mjs +0 -284
  244. package/dist/node/index.mjs.map +1 -1
  245. package/dist/node/logger.cjs +41 -0
  246. package/dist/node/logger.cjs.map +1 -0
  247. package/dist/node/logger.d.mts +150 -0
  248. package/dist/node/logger.d.ts +150 -0
  249. package/dist/node/logger.mjs +4 -0
  250. package/dist/node/logger.mjs.map +1 -0
  251. package/dist/node/namespace.cjs +24 -0
  252. package/dist/node/namespace.cjs.map +1 -0
  253. package/dist/node/namespace.d.mts +13 -0
  254. package/dist/node/namespace.d.ts +13 -0
  255. package/dist/node/namespace.mjs +7 -0
  256. package/dist/node/namespace.mjs.map +1 -0
  257. package/dist/node/storage.cjs +42 -0
  258. package/dist/node/storage.cjs.map +1 -0
  259. package/dist/node/storage.d.mts +110 -0
  260. package/dist/node/storage.d.ts +110 -0
  261. package/dist/node/storage.mjs +13 -0
  262. package/dist/node/storage.mjs.map +1 -0
  263. package/dist/node/vector.cjs +13 -0
  264. package/dist/node/vector.cjs.map +1 -0
  265. package/dist/node/vector.d.mts +15 -0
  266. package/dist/node/vector.d.ts +15 -0
  267. package/dist/node/vector.mjs +4 -0
  268. package/dist/node/vector.mjs.map +1 -0
  269. package/jest.config.browser.ts +41 -0
  270. package/jest.config.ts +18 -8
  271. package/package.json +125 -13
  272. package/{index.ts → src/concept.ts} +5 -2
  273. package/src/helpers/Hash.helper.ts +14 -0
  274. package/src/index.ts +0 -24
  275. package/src/lib/A-Frame/A-Frame.component.env-browser.ts +126 -0
  276. package/src/lib/A-Frame/A-Frame.component.env-node.ts +105 -0
  277. package/src/lib/A-Frame/A-Frame.component.ts +62 -0
  278. package/src/lib/A-Frame/A-Frame.context.ts +40 -0
  279. package/src/lib/{components/Index.component.ts/Index.error.ts → A-Frame/A-Frame.error.ts} +1 -1
  280. package/src/lib/{components/Index.component.ts/Index.guard.ts → A-Frame/A-Frame.guard.ts} +9 -6
  281. package/src/lib/A-Frame/A-Frame.meta.ts +27 -0
  282. package/src/lib/{components/Index.component.ts/Index.types.ts → A-Frame/A-Frame.types.ts} +52 -17
  283. package/src/lib/A-Frame/decorators/A-FrameDefine.decorator.ts +104 -0
  284. package/src/lib/A-Frame/decorators/A-FrameNamespace.decorator.ts +33 -0
  285. package/src/lib/A-Frame/index.browser.ts +10 -0
  286. package/src/lib/A-Frame/index.ts +10 -0
  287. package/src/lib/A-FrameBundle/A-FrameBundle.builder.env-node.ts +95 -0
  288. package/src/lib/A-FrameBundle/A-FrameBundle.constants.ts +5 -0
  289. package/src/lib/A-FrameBundle/A-FrameBundle.types.ts +31 -0
  290. package/src/lib/A-FrameBundle/index.browser.ts +6 -0
  291. package/src/lib/A-FrameBundle/index.ts +7 -0
  292. package/src/lib/A-FrameCLI/A-FrameCLI.container.ts +333 -0
  293. package/src/lib/A-FrameChannel/A-FrameChannel.component.env-browser.ts +63 -0
  294. package/src/lib/A-FrameChannel/A-FrameChannel.component.env-node.ts +586 -0
  295. package/src/lib/A-FrameChannel/A-FrameChannel.component.ts +273 -0
  296. package/src/lib/A-FrameChannel/A-FrameChannel.constants.ts +39 -0
  297. package/src/lib/A-FrameChannel/A-FrameChannel.error.ts +10 -0
  298. package/src/lib/A-FrameChannel/A-FrameChannel.types.ts +143 -0
  299. package/src/lib/A-FrameChannel/A-FrameChannelEvent.context.ts +28 -0
  300. package/src/lib/A-FrameChannel/A-FrameChannelRequest.context.ts +36 -0
  301. package/src/lib/A-FrameChannel/A-FrameChannelSocket.entity.ts +189 -0
  302. package/src/lib/A-FrameChannel/A-FrameChannelStream.entity.ts +144 -0
  303. package/src/lib/A-FrameChannel/index.browser.ts +3 -0
  304. package/src/lib/A-FrameChannel/index.ts +10 -0
  305. package/src/lib/A-FrameCrypto/A-FrameCrypto.component.env-browser.ts +123 -0
  306. package/src/lib/A-FrameCrypto/A-FrameCrypto.component.env-node.ts +204 -0
  307. package/src/lib/A-FrameCrypto/index.browser.ts +1 -0
  308. package/src/lib/A-FrameCrypto/index.ts +1 -0
  309. package/src/lib/A-FrameDefinition/A-FrameDefinition.constants.ts +8 -0
  310. package/src/lib/A-FrameDefinition/A-FrameDefinition.entity.ts +290 -0
  311. package/src/lib/A-FrameDefinition/A-FrameDefinition.types.ts +109 -0
  312. package/src/lib/A-FrameDefinition/index.ts +3 -0
  313. package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.entity.ts +13 -0
  314. package/src/lib/A-FrameDynamicFeature/A-FrameDynamicFeature.types.ts +10 -0
  315. package/src/lib/A-FrameDynamicFeature/index.ts +2 -0
  316. package/src/lib/A-FrameDynamicPatch/A-FrameDynamicPatch.entity.ts +38 -0
  317. package/src/lib/A-FrameDynamicPatch/A-FrameDynamicPatch.types.ts +20 -0
  318. package/src/lib/A-FrameDynamicSession/A-FrameDynamicSession.constants.ts +9 -0
  319. package/src/lib/A-FrameDynamicSession/A-FrameDynamicSession.entity.ts +91 -0
  320. package/src/lib/A-FrameDynamicSession/A-FrameDynamicSession.types.ts +18 -0
  321. package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.constants.ts +13 -0
  322. package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.entity.ts +187 -0
  323. package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.error.ts +13 -0
  324. package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructure.types.ts +128 -0
  325. package/src/lib/A-FrameDynamicStructure/A-FrameDynamicStructureOperation.context.ts +32 -0
  326. package/src/lib/A-FrameDynamicStructure/index.ts +5 -0
  327. package/src/lib/A-FrameEnv/A-FrameEnv.fragment.env-browser.ts +31 -0
  328. package/src/lib/A-FrameEnv/A-FrameEnv.fragment.env-node.ts +39 -0
  329. package/src/lib/A-FrameEnv/A-FrameEnv.types.ts +7 -0
  330. package/src/lib/A-FrameEnv/index.browser.ts +1 -0
  331. package/src/lib/A-FrameEnv/index.ts +1 -0
  332. package/src/lib/A-FrameIndex/A-FrameIndex.context.ts +321 -0
  333. package/src/lib/A-FrameIndex/A-FrameIndex.types.ts +63 -0
  334. package/src/lib/A-FrameIndex/index.browser.ts +3 -0
  335. package/src/lib/A-FrameIndex/index.ts +3 -0
  336. package/src/lib/A-FrameLogger/A-FrameLogger.component.env-browser.ts +99 -0
  337. package/src/lib/A-FrameLogger/A-FrameLogger.component.env-node.ts +129 -0
  338. package/src/lib/A-FrameLogger/A-FrameLogger.component.ts +123 -0
  339. package/src/lib/A-FrameLogger/A-FrameLogger.constants.ts +66 -0
  340. package/src/lib/A-FrameLogger/A-FrameLogger.types.ts +67 -0
  341. package/src/lib/A-FrameLogger/index.browser.ts +4 -0
  342. package/src/lib/A-FrameLogger/index.ts +4 -0
  343. package/src/lib/A-FrameNamespace/A-FrameNamespace.constants.ts +12 -0
  344. package/src/lib/A-FrameNamespace/A-FrameNamespace.entity.ts +211 -0
  345. package/src/lib/A-FrameNamespace/A-FrameNamespace.types.ts +72 -0
  346. package/src/lib/A-FrameNamespace/index.ts +3 -0
  347. package/src/lib/A-FrameStorage/A-FrameStorage.codec.ts +338 -0
  348. package/src/lib/A-FrameStorage/A-FrameStorage.component.ts +191 -0
  349. package/src/lib/A-FrameStorage/A-FrameStorage.constants.ts +11 -0
  350. package/src/lib/A-FrameStorage/A-FrameStorage.error.ts +13 -0
  351. package/src/lib/A-FrameStorage/A-FrameStorage.types.ts +98 -0
  352. package/src/lib/A-FrameStorage/A-FrameStorageOperation.context.ts +59 -0
  353. package/src/lib/A-FrameStorage/browser/A-FrameBrowserStorage.component.ts +312 -0
  354. package/src/lib/A-FrameStorage/browser/A-FrameBrowserStorageBlobs.context.ts +77 -0
  355. package/src/lib/A-FrameStorage/index.browser.ts +11 -0
  356. package/src/lib/A-FrameStorage/index.ts +10 -0
  357. package/src/lib/A-FrameStorage/node/A-FrameNodeStorage.component.ts +464 -0
  358. package/src/lib/A-FrameStorage/server/A-FrameServerStorage.component.ts +177 -0
  359. package/src/lib/{entities/A_FrameVector/A_FrameVector.entity.ts → A-FrameVector/A-FrameVector.entity.ts} +10 -0
  360. package/src/lib/A-FrameVector/index.ts +3 -0
  361. package/tests/A-Frame.browser.test.ts +94 -0
  362. package/tests/A-Frame.test.ts +74 -67
  363. package/tests/jest.browser-environment.js +30 -0
  364. package/tests/jest.polyfills.browser.ts +13 -0
  365. package/tests/jest.setup.browser.ts +33 -0
  366. package/tsconfig.browser.json +54 -0
  367. package/tsconfig.json +16 -0
  368. package/tsup.config.ts +32 -2
  369. package/src/lib/components/Builder.component.ts/Builder.component.ts +0 -0
  370. package/src/lib/components/Index.component.ts/Index.component.ts +0 -79
  371. package/src/lib/components/Index.component.ts/Index.constants.ts +0 -0
  372. package/src/lib/components/Index.component.ts/Index.meta.ts +0 -28
  373. package/src/lib/components/Index.component.ts/IndexConfigurations.meta.ts +0 -78
  374. package/src/lib/components/Index.component.ts/decorators/IndexComponent.decorator.ts +0 -97
  375. package/src/lib/components/Index.component.ts/decorators/IndexDescribe.decorator.ts +0 -59
  376. package/src/lib/components/Index.component.ts/decorators/IndexNamespace.decorator.ts +0 -57
  377. package/src/lib/components/Search/A_FrameSearch.component.ts +0 -66
  378. package/src/lib/containers/CLI.container.ts +0 -27
  379. package/src/lib/entities/Namespace/Namespace.entity.ts +0 -8
@@ -0,0 +1,333 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { A_Concept, A_Container, A_Context, A_Error, A_Inject } from "@adaas/a-concept";
4
+ import { A_FrameIndex } from '../A-FrameIndex/A-FrameIndex.context';
5
+ import { A_FrameLogger } from '../A-FrameLogger';
6
+ import { A_FrameBundleBuilder, A_FRAME_BUNDLE_DEFAULT_FILENAME } from '../A-FrameBundle';
7
+ import { A_FrameChannel } from '../A-FrameChannel/A-FrameChannel.component';
8
+ import { A_FrameEnv } from '../A-FrameEnv/A-FrameEnv.fragment.env-node';
9
+
10
+
11
+ /**
12
+ * Decorator call patterns that signal a file registers A-Frame definitions.
13
+ * Matched against raw file content before importing to avoid loading every file.
14
+ */
15
+ const DECORATOR_PATTERNS = [
16
+ /A_Frame\.Define\s*\(/,
17
+ /A_Frame\.NameSpace\s*\(/,
18
+ /A_Frame\.Component\s*\(/,
19
+ /A_Frame\.Entity\s*\(/,
20
+ /A_Frame\.Fragment\s*\(/,
21
+ /A_Frame\.Container\s*\(/,
22
+ ];
23
+
24
+ export class A_FrameCLIContainer extends A_Container {
25
+
26
+ /**
27
+ * Logger instance — bound during `initialize()` via DI so the rest of
28
+ * the container can use it through `this.logger`.
29
+ */
30
+ get logger(): A_FrameLogger {
31
+ return A_Context.scope(this).resolve(A_FrameLogger) as A_FrameLogger;
32
+ };
33
+
34
+ @A_Concept.Load()
35
+ async initialize(
36
+ @A_Inject(A_FrameLogger) logger: A_FrameLogger,
37
+ ) {
38
+ if (A_Context.environment !== 'server') {
39
+ throw new A_Error('A-Frame CLI can only be used in Node.js environment.');
40
+ }
41
+ }
42
+
43
+ @A_Concept.Start()
44
+ async readCommandParams(
45
+ @A_Inject(A_FrameChannel) channel: A_FrameChannel,
46
+ @A_Inject(A_FrameEnv) env: A_FrameEnv,
47
+ ) {
48
+ const args = process.argv.slice(2);
49
+
50
+ switch (true) {
51
+ case args.includes('--embed'): {
52
+ const pathArg = args[args.indexOf('--embed') + 1];
53
+ if (!pathArg) {
54
+ this.logger.error('--embed requires a path, directory, or glob pattern as next argument');
55
+ process.exit(1);
56
+ }
57
+ await this.embed(pathArg);
58
+ break;
59
+ }
60
+ case args.includes('--bundle'): {
61
+ const outArg = args[args.indexOf('--bundle') + 1];
62
+ await this.bundle(outArg, channel, env);
63
+ break;
64
+ }
65
+ case args.includes('--search'):
66
+ this.logger.info('Search command detected');
67
+ break;
68
+ default:
69
+ this.logger.warn('No valid command detected. Available commands: --embed <path|dir|glob>, --bundle [out], --search');
70
+ }
71
+ }
72
+
73
+ // ─── Bundle ─────────────────────────────────────────────────────────────
74
+
75
+ /**
76
+ * Package the encrypted `.aframe` files in `A_FRAME_STORAGE_DIR` into a
77
+ * single artifact consumable by the browser bundle. Output format is
78
+ * inferred from the file extension (`.ts`/`.tsx` → typed module, anything
79
+ * else → JSON).
80
+ */
81
+ private async bundle(
82
+ outArg: string | undefined,
83
+ channel: A_FrameChannel,
84
+ env: A_FrameEnv,
85
+ ): Promise<void> {
86
+ this.logger.resetTimer();
87
+ this.logger.section('Building A-Frame browser bundle');
88
+
89
+ const storageDir = env.A_FRAME_STORAGE_DIR
90
+ ? path.resolve(env.A_FRAME_STORAGE_DIR)
91
+ : path.resolve(process.cwd(), 'storage');
92
+ const outFile = path.resolve(
93
+ process.cwd(),
94
+ outArg || A_FRAME_BUNDLE_DEFAULT_FILENAME,
95
+ );
96
+
97
+ this.logger.info(`Storage: ${storageDir}`);
98
+ this.logger.info(`Output: ${outFile}`);
99
+
100
+ // Need server version to stamp the bundle metadata. Authenticate first.
101
+ let serverVersion = 'unknown';
102
+ try {
103
+ const credentials = await channel.getCredentials();
104
+ if (credentials.error) {
105
+ this.logger.warn(`Could not fetch credentials: ${credentials.error.message}. Bundle will be tagged with serverVersion="unknown".`);
106
+ } else {
107
+ serverVersion = credentials.response?.server_version || 'unknown';
108
+ }
109
+ } catch (err) {
110
+ this.logger.warn(`getCredentials failed: ${err instanceof Error ? err.message : String(err)}. Bundle will be tagged with serverVersion="unknown".`);
111
+ }
112
+
113
+ const builder = new A_FrameBundleBuilder();
114
+ try {
115
+ const bundle = await builder.build({ storageDir, serverVersion });
116
+ await builder.writeAuto(bundle, outFile);
117
+
118
+ this.logger.set('namespaces', bundle.namespaces ? 1 : 0);
119
+ this.logger.set('definitionFiles', Object.keys(bundle.definitions).length);
120
+ this.logger.set('serverVersion', 0); // placeholder (counters are numeric)
121
+ this.logger.success(`Bundle written to ${outFile}`);
122
+ this.logger.info(` serverVersion: ${bundle.serverVersion}`);
123
+ this.logger.info(` aFrameVersion: ${bundle.aFrameVersion}`);
124
+ this.logger.summary('Bundle Stats');
125
+ } catch (err) {
126
+ this.logger.error(`Bundle build failed: ${err instanceof Error ? err.message : String(err)}`);
127
+ this.logger.summary('Bundle Stats');
128
+ process.exit(1);
129
+ }
130
+ }
131
+
132
+ // ─── Embed ───────────────────────────────────────────────────────────────
133
+
134
+ private async embed(pattern: string): Promise<void> {
135
+ this.logger.resetTimer();
136
+ this.logger.section(`Embedding: ${pattern}`);
137
+
138
+ // 1. Discover source files
139
+ const files = this.resolveFiles(pattern);
140
+ this.logger.info(`Discovered ${files.length} candidate file(s)`);
141
+ this.logger.set('files.scanned', files.length);
142
+
143
+ if (files.length === 0) {
144
+ this.logger.warn(`No files found for: ${pattern}`);
145
+ this.logger.summary();
146
+ return;
147
+ }
148
+
149
+ // 2. Filter files that contain A-Frame decorators
150
+ const decoratedFiles = files.filter(f => this.containsDecorators(f));
151
+ this.logger.info(`Found ${decoratedFiles.length} file(s) with A-Frame decorators`);
152
+ this.logger.set('files.matched', decoratedFiles.length);
153
+
154
+ if (decoratedFiles.length === 0) {
155
+ this.logger.warn('Nothing to embed.');
156
+ this.logger.summary();
157
+ return;
158
+ }
159
+
160
+ // 3. Import them — decorators auto-register into A_FrameIndex
161
+ const importBar = this.logger.progress('Importing files', decoratedFiles.length);
162
+ for (const file of decoratedFiles) {
163
+ try {
164
+ await import(file);
165
+ importBar.tick(path.basename(file));
166
+ this.logger.increment('files.imported');
167
+ } catch (err) {
168
+ importBar.tick(`failed: ${path.basename(file)}`);
169
+ this.logger.increment('files.failed');
170
+ this.logger.error(`Failed to import ${file}: ${err instanceof Error ? err.message : String(err)}`);
171
+ }
172
+ }
173
+ importBar.succeed('done');
174
+
175
+ // 4. Collect items needing embed
176
+ const index = A_FrameIndex.instance;
177
+ const namespacesNeedEmbed = index.listNamespaces().filter(ns => !ns.isEmbed);
178
+ const definitionsNeedEmbed = index.listDefinitions({}).filter(def => !def.isEmbed);
179
+
180
+ this.logger.set('namespaces.total', index.listNamespaces().length);
181
+ this.logger.set('definitions.total', index.listDefinitions({}).length);
182
+ this.logger.set('namespaces.toEmbed', namespacesNeedEmbed.length);
183
+ this.logger.set('definitions.toEmbed', definitionsNeedEmbed.length);
184
+
185
+ // 5. Embed namespaces (parallel API calls, sequential file writes)
186
+ if (namespacesNeedEmbed.length > 0) {
187
+ const nsBar = this.logger.progress('Embedding namespaces', namespacesNeedEmbed.length);
188
+ for (const batch of this.chunkArray(namespacesNeedEmbed, 10)) {
189
+ await Promise.all(batch.map(async ns => {
190
+ try {
191
+ await ns.embed();
192
+ this.logger.increment('namespaces.embedded');
193
+ } catch (err) {
194
+ this.logger.increment('namespaces.failed');
195
+ this.logger.error(`Embed failed for namespace "${ns.name}": ${err instanceof Error ? err.message : String(err)}`);
196
+ }
197
+ nsBar.tick(ns.name);
198
+ }));
199
+ for (const ns of batch) {
200
+ try { await ns.save(); this.logger.increment('namespaces.saved'); }
201
+ catch (err) {
202
+ this.logger.increment('namespaces.saveFailed');
203
+ this.logger.error(`Save failed for namespace "${ns.name}": ${err instanceof Error ? err.message : String(err)}`);
204
+ }
205
+ }
206
+ }
207
+ nsBar.succeed('done');
208
+ }
209
+
210
+ // 6. Embed definitions (parallel API calls, sequential file writes)
211
+ if (definitionsNeedEmbed.length > 0) {
212
+ const defBar = this.logger.progress('Embedding definitions', definitionsNeedEmbed.length);
213
+ for (const batch of this.chunkArray(definitionsNeedEmbed, 10)) {
214
+ await Promise.all(batch.map(async def => {
215
+ try {
216
+ await def.embed();
217
+ this.logger.increment('definitions.embedded');
218
+ } catch (err) {
219
+ this.logger.increment('definitions.failed');
220
+ this.logger.error(`Embed failed for "${def.name}": ${err instanceof Error ? err.message : String(err)}`);
221
+ }
222
+ defBar.tick(def.name);
223
+ }));
224
+ for (const def of batch) {
225
+ try { await def.save(); this.logger.increment('definitions.saved'); }
226
+ catch (err) {
227
+ this.logger.increment('definitions.saveFailed');
228
+ this.logger.error(`Save failed for "${def.name}": ${err instanceof Error ? err.message : String(err)}`);
229
+ }
230
+ }
231
+ }
232
+ defBar.succeed('done');
233
+ }
234
+
235
+ this.logger.summary('Embed Stats');
236
+ }
237
+
238
+ // ─── File discovery (no external deps) ───────────────────────────────────
239
+
240
+ /**
241
+ * Resolve a path argument to an array of absolute `.ts`/`.js` file paths.
242
+ * Handles:
243
+ * - Single file → [file]
244
+ * - Directory → all source files found recursively
245
+ * - Glob pattern → files matching the pattern
246
+ */
247
+ private resolveFiles(pattern: string): string[] {
248
+ const absolute = path.isAbsolute(pattern)
249
+ ? pattern
250
+ : path.resolve(process.cwd(), pattern);
251
+
252
+ // No glob characters — plain file or directory path
253
+ if (!/[*?{]/.test(pattern)) {
254
+ const stat = (fs as any).statSync(absolute, { throwIfNoEntry: false }) as fs.Stats | undefined;
255
+ if (!stat) return [];
256
+ if (stat.isFile()) return this.isSourceFile(absolute) ? [absolute] : [];
257
+ if (stat.isDirectory()) return this.walkDir(absolute);
258
+ return [];
259
+ }
260
+
261
+ // Glob pattern: find the static base dir (before first segment with glob chars)
262
+ const sep = path.sep;
263
+ const parts = absolute.split(sep);
264
+ const firstGlobIdx = parts.findIndex(p => /[*?{]/.test(p));
265
+ const baseDir = parts.slice(0, firstGlobIdx).join(sep) || sep;
266
+ const relPattern = parts.slice(firstGlobIdx).join('/');
267
+
268
+ return this.walkDir(baseDir).filter(file => {
269
+ const rel = path.relative(baseDir, file).replace(/\\/g, '/');
270
+ return this.matchGlob(rel, relPattern);
271
+ });
272
+ }
273
+
274
+ /** Recursively collect all source files under a directory. */
275
+ private walkDir(dir: string): string[] {
276
+ const results: string[] = [];
277
+ let entries: fs.Dirent[];
278
+ try {
279
+ entries = fs.readdirSync(dir, { withFileTypes: true });
280
+ } catch {
281
+ return results;
282
+ }
283
+ for (const entry of entries) {
284
+ const full = path.join(dir, entry.name);
285
+ if (entry.isDirectory()) {
286
+ results.push(...this.walkDir(full));
287
+ } else if (entry.isFile() && this.isSourceFile(full)) {
288
+ results.push(full);
289
+ }
290
+ }
291
+ return results;
292
+ }
293
+
294
+ private isSourceFile(file: string): boolean {
295
+ return /\.(ts|js|mts|mjs|cts|cjs)$/.test(file);
296
+ }
297
+
298
+ /**
299
+ * Minimal glob matcher (no external deps).
300
+ * Supports `*` (any chars except `/`), `**` (any path segments), `?` (one char).
301
+ */
302
+ private matchGlob(str: string, pattern: string): boolean {
303
+ const segments = pattern.split('/');
304
+ const regexStr = segments
305
+ .map(seg => {
306
+ if (seg === '**') return '(?:[^/]+/)*[^/]*';
307
+ return seg
308
+ .replace(/\./g, '\\.')
309
+ .replace(/\*/g, '[^/]*')
310
+ .replace(/\?/g, '[^/]');
311
+ })
312
+ .join('/');
313
+ return new RegExp(`^${regexStr}$`).test(str);
314
+ }
315
+
316
+ /** Returns true if the file source contains any A-Frame decorator calls. */
317
+ private containsDecorators(filePath: string): boolean {
318
+ try {
319
+ const content = fs.readFileSync(filePath, 'utf8');
320
+ return DECORATOR_PATTERNS.some(re => re.test(content));
321
+ } catch {
322
+ return false;
323
+ }
324
+ }
325
+
326
+ private chunkArray<T>(array: T[], size: number): T[][] {
327
+ const result: T[][] = [];
328
+ for (let i = 0; i < array.length; i += size) {
329
+ result.push(array.slice(i, i + size));
330
+ }
331
+ return result;
332
+ }
333
+ }
@@ -0,0 +1,63 @@
1
+ import { A_Feature, A_Inject } from "@adaas/a-concept";
2
+ import { A_FrameFeatures } from "./A-FrameChannel.constants";
3
+ import { A_FrameChannelRequest } from "./A-FrameChannelRequest.context";
4
+ import { A_FrameEnv } from "../A-FrameEnv/A-FrameEnv.fragment.env-browser";
5
+ import { A_FrameChannelError } from "./A-FrameChannel.error";
6
+ import { A_FrameChannel } from "./A-FrameChannel.component";
7
+
8
+ /**
9
+ * A_FrameChannel — Browser environment
10
+ *
11
+ * HTTP client for the embed-server API.
12
+ * Configuration must be provided explicitly via configure() since there is
13
+ * no process.env in the browser.
14
+ *
15
+ * At build time, generate .bin index files in Node. In the browser, load them
16
+ * via A_FrameStorage.loadBlob() — no embedding calls are needed at runtime.
17
+ */
18
+ export class A_FrameBrowserChannel extends A_FrameChannel {
19
+
20
+
21
+ @A_Feature.Extend({
22
+ name: A_FrameFeatures.Request,
23
+ scope: [A_FrameChannel],
24
+ })
25
+ async request(
26
+ @A_Inject(A_FrameChannelRequest) context: A_FrameChannelRequest,
27
+ @A_Inject(A_FrameEnv) env: A_FrameEnv,
28
+ ) {
29
+ const url = `${env.A_FRAME_SERVER_URL}${context.path}`;
30
+ const controller = new AbortController();
31
+ const timer = setTimeout(() => {
32
+ controller.abort()
33
+ context.fail(new A_FrameChannelError({
34
+ title: A_FrameChannelError.Timeout,
35
+ description: `Request to ${context.path} timed out after 15 seconds`,
36
+ }));
37
+ }, 15_000);
38
+ try {
39
+ const resp = await fetch(url, {
40
+ method: context.method,
41
+ headers: {
42
+ 'Content-Type': 'application/json',
43
+ Authorization: `Bearer ${env.A_FRAME_SERVER_API_KEY}`,
44
+ },
45
+ body: context.body !== undefined ? JSON.stringify(context.body) : undefined,
46
+ signal: controller.signal,
47
+ });
48
+
49
+ context.complete(await resp.json());
50
+
51
+ } catch (err) {
52
+ context.fail(new A_FrameChannelError({
53
+ title: A_FrameChannelError.RequestFailed,
54
+ description: `Request to ${context.path} failed or timed out`,
55
+ }));
56
+ } finally {
57
+ clearTimeout(timer);
58
+ }
59
+ }
60
+ }
61
+
62
+
63
+