mcard-js 2.1.12 → 2.1.13

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 (362) hide show
  1. package/README.md +14 -0
  2. package/dist/hash/HashValidator.d.ts +14 -0
  3. package/dist/hash/HashValidator.d.ts.map +1 -0
  4. package/dist/hash/HashValidator.js +57 -0
  5. package/dist/hash/HashValidator.js.map +1 -0
  6. package/dist/index.d.ts +29 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +38 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/model/CardCollection.d.ts +92 -0
  11. package/dist/model/CardCollection.d.ts.map +1 -0
  12. package/dist/model/CardCollection.js +217 -0
  13. package/dist/model/CardCollection.js.map +1 -0
  14. package/dist/model/ContentTypeInterpreter.d.ts +23 -0
  15. package/dist/model/ContentTypeInterpreter.d.ts.map +1 -0
  16. package/dist/model/ContentTypeInterpreter.js +140 -0
  17. package/dist/model/ContentTypeInterpreter.js.map +1 -0
  18. package/dist/model/EventProducer.d.ts +10 -0
  19. package/dist/model/EventProducer.d.ts.map +1 -0
  20. package/dist/model/EventProducer.js +46 -0
  21. package/dist/model/EventProducer.js.map +1 -0
  22. package/dist/model/GTime.d.ts +44 -0
  23. package/dist/model/GTime.d.ts.map +1 -0
  24. package/dist/model/GTime.js +91 -0
  25. package/dist/model/GTime.js.map +1 -0
  26. package/dist/model/Handle.d.ts +37 -0
  27. package/dist/model/Handle.d.ts.map +1 -0
  28. package/dist/model/Handle.js +90 -0
  29. package/dist/model/Handle.js.map +1 -0
  30. package/dist/model/MCard.d.ts +43 -0
  31. package/dist/model/MCard.d.ts.map +1 -0
  32. package/dist/model/MCard.js +76 -0
  33. package/dist/model/MCard.js.map +1 -0
  34. package/dist/model/constants.d.ts +45 -0
  35. package/dist/model/constants.d.ts.map +1 -0
  36. package/dist/model/constants.js +27 -0
  37. package/dist/model/constants.js.map +1 -0
  38. package/dist/model/detectors/BaseDetector.d.ts +26 -0
  39. package/dist/model/detectors/BaseDetector.d.ts.map +1 -0
  40. package/dist/model/detectors/BaseDetector.js +5 -0
  41. package/dist/model/detectors/BaseDetector.js.map +1 -0
  42. package/dist/model/detectors/BinaryDetector.d.ts +12 -0
  43. package/dist/model/detectors/BinaryDetector.d.ts.map +1 -0
  44. package/dist/model/detectors/BinaryDetector.js +82 -0
  45. package/dist/model/detectors/BinaryDetector.js.map +1 -0
  46. package/dist/model/detectors/ContentTypeInterpreter.d.ts +11 -0
  47. package/dist/model/detectors/ContentTypeInterpreter.d.ts.map +1 -0
  48. package/dist/model/detectors/ContentTypeInterpreter.js +51 -0
  49. package/dist/model/detectors/ContentTypeInterpreter.js.map +1 -0
  50. package/dist/model/detectors/DataFormatDetectors.d.ts +29 -0
  51. package/dist/model/detectors/DataFormatDetectors.d.ts.map +1 -0
  52. package/dist/model/detectors/DataFormatDetectors.js +223 -0
  53. package/dist/model/detectors/DataFormatDetectors.js.map +1 -0
  54. package/dist/model/detectors/LanguageDetector.d.ts +11 -0
  55. package/dist/model/detectors/LanguageDetector.d.ts.map +1 -0
  56. package/dist/model/detectors/LanguageDetector.js +148 -0
  57. package/dist/model/detectors/LanguageDetector.js.map +1 -0
  58. package/dist/model/detectors/MarkupDetectors.d.ts +22 -0
  59. package/dist/model/detectors/MarkupDetectors.d.ts.map +1 -0
  60. package/dist/model/detectors/MarkupDetectors.js +132 -0
  61. package/dist/model/detectors/MarkupDetectors.js.map +1 -0
  62. package/dist/model/detectors/OBJDetector.d.ts +8 -0
  63. package/dist/model/detectors/OBJDetector.d.ts.map +1 -0
  64. package/dist/model/detectors/OBJDetector.js +48 -0
  65. package/dist/model/detectors/OBJDetector.js.map +1 -0
  66. package/dist/model/detectors/registry.d.ts +13 -0
  67. package/dist/model/detectors/registry.d.ts.map +1 -0
  68. package/dist/model/detectors/registry.js +67 -0
  69. package/dist/model/detectors/registry.js.map +1 -0
  70. package/dist/monads/Either.d.ts +51 -0
  71. package/dist/monads/Either.d.ts.map +1 -0
  72. package/dist/monads/Either.js +82 -0
  73. package/dist/monads/Either.js.map +1 -0
  74. package/dist/monads/IO.d.ts +38 -0
  75. package/dist/monads/IO.d.ts.map +1 -0
  76. package/dist/monads/IO.js +66 -0
  77. package/dist/monads/IO.js.map +1 -0
  78. package/dist/monads/Maybe.d.ts +45 -0
  79. package/dist/monads/Maybe.d.ts.map +1 -0
  80. package/dist/monads/Maybe.js +73 -0
  81. package/dist/monads/Maybe.js.map +1 -0
  82. package/dist/monads/Reader.d.ts +29 -0
  83. package/dist/monads/Reader.d.ts.map +1 -0
  84. package/dist/monads/Reader.js +44 -0
  85. package/dist/monads/Reader.js.map +1 -0
  86. package/dist/monads/State.d.ts +33 -0
  87. package/dist/monads/State.d.ts.map +1 -0
  88. package/dist/monads/State.js +50 -0
  89. package/dist/monads/State.js.map +1 -0
  90. package/dist/monads/Writer.d.ts +29 -0
  91. package/dist/monads/Writer.d.ts.map +1 -0
  92. package/dist/monads/Writer.js +46 -0
  93. package/dist/monads/Writer.js.map +1 -0
  94. package/dist/ptr/FaroSidecar.d.ts +56 -0
  95. package/dist/ptr/FaroSidecar.d.ts.map +1 -0
  96. package/dist/ptr/FaroSidecar.js +102 -0
  97. package/dist/ptr/FaroSidecar.js.map +1 -0
  98. package/dist/ptr/LensProtocol.d.ts +84 -0
  99. package/dist/ptr/LensProtocol.d.ts.map +1 -0
  100. package/dist/ptr/LensProtocol.js +98 -0
  101. package/dist/ptr/LensProtocol.js.map +1 -0
  102. package/dist/ptr/SandboxWorker.d.ts +54 -0
  103. package/dist/ptr/SandboxWorker.d.ts.map +1 -0
  104. package/dist/ptr/SandboxWorker.js +172 -0
  105. package/dist/ptr/SandboxWorker.js.map +1 -0
  106. package/dist/ptr/common_types.d.ts +39 -0
  107. package/dist/ptr/common_types.d.ts.map +1 -0
  108. package/dist/ptr/common_types.js +12 -0
  109. package/dist/ptr/common_types.js.map +1 -0
  110. package/dist/ptr/lambda/AlphaConversion.d.ts +42 -0
  111. package/dist/ptr/lambda/AlphaConversion.d.ts.map +1 -0
  112. package/dist/ptr/lambda/AlphaConversion.js +244 -0
  113. package/dist/ptr/lambda/AlphaConversion.js.map +1 -0
  114. package/dist/ptr/lambda/BetaReduction.d.ts +73 -0
  115. package/dist/ptr/lambda/BetaReduction.d.ts.map +1 -0
  116. package/dist/ptr/lambda/BetaReduction.js +322 -0
  117. package/dist/ptr/lambda/BetaReduction.js.map +1 -0
  118. package/dist/ptr/lambda/EtaConversion.d.ts +65 -0
  119. package/dist/ptr/lambda/EtaConversion.d.ts.map +1 -0
  120. package/dist/ptr/lambda/EtaConversion.js +228 -0
  121. package/dist/ptr/lambda/EtaConversion.js.map +1 -0
  122. package/dist/ptr/lambda/FreeVariables.d.ts +44 -0
  123. package/dist/ptr/lambda/FreeVariables.d.ts.map +1 -0
  124. package/dist/ptr/lambda/FreeVariables.js +207 -0
  125. package/dist/ptr/lambda/FreeVariables.js.map +1 -0
  126. package/dist/ptr/lambda/LambdaRuntime.d.ts +80 -0
  127. package/dist/ptr/lambda/LambdaRuntime.d.ts.map +1 -0
  128. package/dist/ptr/lambda/LambdaRuntime.js +433 -0
  129. package/dist/ptr/lambda/LambdaRuntime.js.map +1 -0
  130. package/dist/ptr/lambda/LambdaTerm.d.ts +95 -0
  131. package/dist/ptr/lambda/LambdaTerm.d.ts.map +1 -0
  132. package/dist/ptr/lambda/LambdaTerm.js +159 -0
  133. package/dist/ptr/lambda/LambdaTerm.js.map +1 -0
  134. package/dist/ptr/lambda/index.d.ts +24 -0
  135. package/dist/ptr/lambda/index.d.ts.map +1 -0
  136. package/dist/ptr/lambda/index.js +34 -0
  137. package/dist/ptr/lambda/index.js.map +1 -0
  138. package/dist/ptr/llm/Config.d.ts +57 -0
  139. package/dist/ptr/llm/Config.d.ts.map +1 -0
  140. package/dist/ptr/llm/Config.js +183 -0
  141. package/dist/ptr/llm/Config.js.map +1 -0
  142. package/dist/ptr/llm/LLMRuntime.d.ts +35 -0
  143. package/dist/ptr/llm/LLMRuntime.d.ts.map +1 -0
  144. package/dist/ptr/llm/LLMRuntime.js +176 -0
  145. package/dist/ptr/llm/LLMRuntime.js.map +1 -0
  146. package/dist/ptr/llm/providers/LLMProvider.d.ts +43 -0
  147. package/dist/ptr/llm/providers/LLMProvider.d.ts.map +1 -0
  148. package/dist/ptr/llm/providers/LLMProvider.js +31 -0
  149. package/dist/ptr/llm/providers/LLMProvider.js.map +1 -0
  150. package/dist/ptr/llm/providers/MLCLLMProvider.d.ts +22 -0
  151. package/dist/ptr/llm/providers/MLCLLMProvider.d.ts.map +1 -0
  152. package/dist/ptr/llm/providers/MLCLLMProvider.js +155 -0
  153. package/dist/ptr/llm/providers/MLCLLMProvider.js.map +1 -0
  154. package/dist/ptr/llm/providers/OllamaEmbeddingProvider.d.ts +20 -0
  155. package/dist/ptr/llm/providers/OllamaEmbeddingProvider.d.ts.map +1 -0
  156. package/dist/ptr/llm/providers/OllamaEmbeddingProvider.js +42 -0
  157. package/dist/ptr/llm/providers/OllamaEmbeddingProvider.js.map +1 -0
  158. package/dist/ptr/llm/providers/OllamaProvider.d.ts +21 -0
  159. package/dist/ptr/llm/providers/OllamaProvider.d.ts.map +1 -0
  160. package/dist/ptr/llm/providers/OllamaProvider.js +158 -0
  161. package/dist/ptr/llm/providers/OllamaProvider.js.map +1 -0
  162. package/dist/ptr/llm/providers/WebLLMProvider.d.ts +22 -0
  163. package/dist/ptr/llm/providers/WebLLMProvider.d.ts.map +1 -0
  164. package/dist/ptr/llm/providers/WebLLMProvider.js +151 -0
  165. package/dist/ptr/llm/providers/WebLLMProvider.js.map +1 -0
  166. package/dist/ptr/node/Action.d.ts +426 -0
  167. package/dist/ptr/node/Action.d.ts.map +1 -0
  168. package/dist/ptr/node/Action.js +711 -0
  169. package/dist/ptr/node/Action.js.map +1 -0
  170. package/dist/ptr/node/CLMLoader.d.ts +18 -0
  171. package/dist/ptr/node/CLMLoader.d.ts.map +1 -0
  172. package/dist/ptr/node/CLMLoader.js +18 -0
  173. package/dist/ptr/node/CLMLoader.js.map +1 -0
  174. package/dist/ptr/node/CLMRunner.d.ts +34 -0
  175. package/dist/ptr/node/CLMRunner.d.ts.map +1 -0
  176. package/dist/ptr/node/CLMRunner.js +36 -0
  177. package/dist/ptr/node/CLMRunner.js.map +1 -0
  178. package/dist/ptr/node/FileSystemUtils.d.ts +40 -0
  179. package/dist/ptr/node/FileSystemUtils.d.ts.map +1 -0
  180. package/dist/ptr/node/FileSystemUtils.js +170 -0
  181. package/dist/ptr/node/FileSystemUtils.js.map +1 -0
  182. package/dist/ptr/node/NetworkConfig.d.ts +191 -0
  183. package/dist/ptr/node/NetworkConfig.d.ts.map +1 -0
  184. package/dist/ptr/node/NetworkConfig.js +8 -0
  185. package/dist/ptr/node/NetworkConfig.js.map +1 -0
  186. package/dist/ptr/node/NetworkRuntime.d.ts +38 -0
  187. package/dist/ptr/node/NetworkRuntime.d.ts.map +1 -0
  188. package/dist/ptr/node/NetworkRuntime.js +871 -0
  189. package/dist/ptr/node/NetworkRuntime.js.map +1 -0
  190. package/dist/ptr/node/P2PChatSession.d.ts +53 -0
  191. package/dist/ptr/node/P2PChatSession.d.ts.map +1 -0
  192. package/dist/ptr/node/P2PChatSession.js +154 -0
  193. package/dist/ptr/node/P2PChatSession.js.map +1 -0
  194. package/dist/ptr/node/RuntimeInterface.d.ts +4 -0
  195. package/dist/ptr/node/RuntimeInterface.d.ts.map +1 -0
  196. package/dist/ptr/node/RuntimeInterface.js +2 -0
  197. package/dist/ptr/node/RuntimeInterface.js.map +1 -0
  198. package/dist/ptr/node/Runtimes.d.ts +34 -0
  199. package/dist/ptr/node/Runtimes.d.ts.map +1 -0
  200. package/dist/ptr/node/Runtimes.js +38 -0
  201. package/dist/ptr/node/Runtimes.js.map +1 -0
  202. package/dist/ptr/node/SignalingServer.d.ts +37 -0
  203. package/dist/ptr/node/SignalingServer.d.ts.map +1 -0
  204. package/dist/ptr/node/SignalingServer.js +218 -0
  205. package/dist/ptr/node/SignalingServer.js.map +1 -0
  206. package/dist/ptr/node/cli.d.ts +3 -0
  207. package/dist/ptr/node/cli.d.ts.map +1 -0
  208. package/dist/ptr/node/cli.js +266 -0
  209. package/dist/ptr/node/cli.js.map +1 -0
  210. package/dist/ptr/node/clm/builtins/handle.d.ts +14 -0
  211. package/dist/ptr/node/clm/builtins/handle.d.ts.map +1 -0
  212. package/dist/ptr/node/clm/builtins/handle.js +177 -0
  213. package/dist/ptr/node/clm/builtins/handle.js.map +1 -0
  214. package/dist/ptr/node/clm/builtins/index.d.ts +20 -0
  215. package/dist/ptr/node/clm/builtins/index.d.ts.map +1 -0
  216. package/dist/ptr/node/clm/builtins/index.js +60 -0
  217. package/dist/ptr/node/clm/builtins/index.js.map +1 -0
  218. package/dist/ptr/node/clm/index.d.ts +25 -0
  219. package/dist/ptr/node/clm/index.d.ts.map +1 -0
  220. package/dist/ptr/node/clm/index.js +28 -0
  221. package/dist/ptr/node/clm/index.js.map +1 -0
  222. package/dist/ptr/node/clm/loader.d.ts +25 -0
  223. package/dist/ptr/node/clm/loader.d.ts.map +1 -0
  224. package/dist/ptr/node/clm/loader.js +146 -0
  225. package/dist/ptr/node/clm/loader.js.map +1 -0
  226. package/dist/ptr/node/clm/multiruntime.d.ts +9 -0
  227. package/dist/ptr/node/clm/multiruntime.d.ts.map +1 -0
  228. package/dist/ptr/node/clm/multiruntime.js +121 -0
  229. package/dist/ptr/node/clm/multiruntime.js.map +1 -0
  230. package/dist/ptr/node/clm/runner.d.ts +70 -0
  231. package/dist/ptr/node/clm/runner.d.ts.map +1 -0
  232. package/dist/ptr/node/clm/runner.js +324 -0
  233. package/dist/ptr/node/clm/runner.js.map +1 -0
  234. package/dist/ptr/node/clm/types.d.ts +166 -0
  235. package/dist/ptr/node/clm/types.d.ts.map +1 -0
  236. package/dist/ptr/node/clm/types.js +5 -0
  237. package/dist/ptr/node/clm/types.js.map +1 -0
  238. package/dist/ptr/node/clm/utils.d.ts +29 -0
  239. package/dist/ptr/node/clm/utils.d.ts.map +1 -0
  240. package/dist/ptr/node/clm/utils.js +88 -0
  241. package/dist/ptr/node/clm/utils.js.map +1 -0
  242. package/dist/ptr/node/network/HttpClient.d.ts +14 -0
  243. package/dist/ptr/node/network/HttpClient.d.ts.map +1 -0
  244. package/dist/ptr/node/network/HttpClient.js +139 -0
  245. package/dist/ptr/node/network/HttpClient.js.map +1 -0
  246. package/dist/ptr/node/network/MCardSerialization.d.ts +19 -0
  247. package/dist/ptr/node/network/MCardSerialization.d.ts.map +1 -0
  248. package/dist/ptr/node/network/MCardSerialization.js +41 -0
  249. package/dist/ptr/node/network/MCardSerialization.js.map +1 -0
  250. package/dist/ptr/node/network/NetworkInfrastructure.d.ts +37 -0
  251. package/dist/ptr/node/network/NetworkInfrastructure.d.ts.map +1 -0
  252. package/dist/ptr/node/network/NetworkInfrastructure.js +121 -0
  253. package/dist/ptr/node/network/NetworkInfrastructure.js.map +1 -0
  254. package/dist/ptr/node/network/NetworkSecurity.d.ts +24 -0
  255. package/dist/ptr/node/network/NetworkSecurity.d.ts.map +1 -0
  256. package/dist/ptr/node/network/NetworkSecurity.js +104 -0
  257. package/dist/ptr/node/network/NetworkSecurity.js.map +1 -0
  258. package/dist/ptr/node/runtimes/base.d.ts +31 -0
  259. package/dist/ptr/node/runtimes/base.d.ts.map +1 -0
  260. package/dist/ptr/node/runtimes/base.js +33 -0
  261. package/dist/ptr/node/runtimes/base.js.map +1 -0
  262. package/dist/ptr/node/runtimes/binary.d.ts +10 -0
  263. package/dist/ptr/node/runtimes/binary.d.ts.map +1 -0
  264. package/dist/ptr/node/runtimes/binary.js +16 -0
  265. package/dist/ptr/node/runtimes/binary.js.map +1 -0
  266. package/dist/ptr/node/runtimes/factory.d.ts +22 -0
  267. package/dist/ptr/node/runtimes/factory.d.ts.map +1 -0
  268. package/dist/ptr/node/runtimes/factory.js +152 -0
  269. package/dist/ptr/node/runtimes/factory.js.map +1 -0
  270. package/dist/ptr/node/runtimes/index.d.ts +28 -0
  271. package/dist/ptr/node/runtimes/index.d.ts.map +1 -0
  272. package/dist/ptr/node/runtimes/index.js +30 -0
  273. package/dist/ptr/node/runtimes/index.js.map +1 -0
  274. package/dist/ptr/node/runtimes/javascript.d.ts +22 -0
  275. package/dist/ptr/node/runtimes/javascript.d.ts.map +1 -0
  276. package/dist/ptr/node/runtimes/javascript.js +125 -0
  277. package/dist/ptr/node/runtimes/javascript.js.map +1 -0
  278. package/dist/ptr/node/runtimes/lean.d.ts +10 -0
  279. package/dist/ptr/node/runtimes/lean.d.ts.map +1 -0
  280. package/dist/ptr/node/runtimes/lean.js +60 -0
  281. package/dist/ptr/node/runtimes/lean.js.map +1 -0
  282. package/dist/ptr/node/runtimes/loader.d.ts +21 -0
  283. package/dist/ptr/node/runtimes/loader.d.ts.map +1 -0
  284. package/dist/ptr/node/runtimes/loader.js +126 -0
  285. package/dist/ptr/node/runtimes/loader.js.map +1 -0
  286. package/dist/ptr/node/runtimes/python.d.ts +14 -0
  287. package/dist/ptr/node/runtimes/python.d.ts.map +1 -0
  288. package/dist/ptr/node/runtimes/python.js +100 -0
  289. package/dist/ptr/node/runtimes/python.js.map +1 -0
  290. package/dist/ptr/node/runtimes/wasm.d.ts +10 -0
  291. package/dist/ptr/node/runtimes/wasm.d.ts.map +1 -0
  292. package/dist/ptr/node/runtimes/wasm.js +55 -0
  293. package/dist/ptr/node/runtimes/wasm.js.map +1 -0
  294. package/dist/rag/GraphRAGEngine.d.ts +26 -0
  295. package/dist/rag/GraphRAGEngine.d.ts.map +1 -0
  296. package/dist/rag/GraphRAGEngine.js +166 -0
  297. package/dist/rag/GraphRAGEngine.js.map +1 -0
  298. package/dist/rag/HandleVectorStore.d.ts +201 -0
  299. package/dist/rag/HandleVectorStore.d.ts.map +1 -0
  300. package/dist/rag/HandleVectorStore.js +527 -0
  301. package/dist/rag/HandleVectorStore.js.map +1 -0
  302. package/dist/rag/PersistentIndexer.d.ts +148 -0
  303. package/dist/rag/PersistentIndexer.d.ts.map +1 -0
  304. package/dist/rag/PersistentIndexer.js +302 -0
  305. package/dist/rag/PersistentIndexer.js.map +1 -0
  306. package/dist/rag/embeddings/VisionEmbeddingProvider.d.ts +87 -0
  307. package/dist/rag/embeddings/VisionEmbeddingProvider.d.ts.map +1 -0
  308. package/dist/rag/embeddings/VisionEmbeddingProvider.js +164 -0
  309. package/dist/rag/embeddings/VisionEmbeddingProvider.js.map +1 -0
  310. package/dist/rag/graph/community.d.ts +56 -0
  311. package/dist/rag/graph/community.d.ts.map +1 -0
  312. package/dist/rag/graph/community.js +247 -0
  313. package/dist/rag/graph/community.js.map +1 -0
  314. package/dist/rag/graph/extractor.d.ts +99 -0
  315. package/dist/rag/graph/extractor.d.ts.map +1 -0
  316. package/dist/rag/graph/extractor.js +210 -0
  317. package/dist/rag/graph/extractor.js.map +1 -0
  318. package/dist/rag/graph/store.d.ts +176 -0
  319. package/dist/rag/graph/store.d.ts.map +1 -0
  320. package/dist/rag/graph/store.js +504 -0
  321. package/dist/rag/graph/store.js.map +1 -0
  322. package/dist/rag/index.d.ts +20 -0
  323. package/dist/rag/index.d.ts.map +1 -0
  324. package/dist/rag/index.js +26 -0
  325. package/dist/rag/index.js.map +1 -0
  326. package/dist/rag/semanticVersioning.d.ts +187 -0
  327. package/dist/rag/semanticVersioning.d.ts.map +1 -0
  328. package/dist/rag/semanticVersioning.js +253 -0
  329. package/dist/rag/semanticVersioning.js.map +1 -0
  330. package/dist/storage/IndexedDBEngine.d.ts +33 -0
  331. package/dist/storage/IndexedDBEngine.d.ts.map +1 -0
  332. package/dist/storage/IndexedDBEngine.js +198 -0
  333. package/dist/storage/IndexedDBEngine.js.map +1 -0
  334. package/dist/storage/SqliteNodeEngine.d.ts +123 -0
  335. package/dist/storage/SqliteNodeEngine.d.ts.map +1 -0
  336. package/dist/storage/SqliteNodeEngine.js +385 -0
  337. package/dist/storage/SqliteNodeEngine.js.map +1 -0
  338. package/dist/storage/SqliteWasmEngine.d.ts +60 -0
  339. package/dist/storage/SqliteWasmEngine.d.ts.map +1 -0
  340. package/dist/storage/SqliteWasmEngine.js +193 -0
  341. package/dist/storage/SqliteWasmEngine.js.map +1 -0
  342. package/dist/storage/StorageAdapter.d.ts +42 -0
  343. package/dist/storage/StorageAdapter.d.ts.map +1 -0
  344. package/dist/storage/StorageAdapter.js +2 -0
  345. package/dist/storage/StorageAdapter.js.map +1 -0
  346. package/dist/storage/VectorStore.d.ts +202 -0
  347. package/dist/storage/VectorStore.d.ts.map +1 -0
  348. package/dist/storage/VectorStore.js +557 -0
  349. package/dist/storage/VectorStore.js.map +1 -0
  350. package/dist/storage/schema.d.ts +162 -0
  351. package/dist/storage/schema.d.ts.map +1 -0
  352. package/dist/storage/schema.js +373 -0
  353. package/dist/storage/schema.js.map +1 -0
  354. package/dist/util/FileIO.d.ts +44 -0
  355. package/dist/util/FileIO.d.ts.map +1 -0
  356. package/dist/util/FileIO.js +203 -0
  357. package/dist/util/FileIO.js.map +1 -0
  358. package/dist/util/Loader.d.ts +34 -0
  359. package/dist/util/Loader.d.ts.map +1 -0
  360. package/dist/util/Loader.js +168 -0
  361. package/dist/util/Loader.js.map +1 -0
  362. package/package.json +2 -1
@@ -0,0 +1,140 @@
1
+ import { registry } from './detectors/registry';
2
+ export class ContentTypeInterpreter {
3
+ static MIME_TO_EXT = {
4
+ 'text/plain': '.txt',
5
+ 'application/json': '.json',
6
+ 'text/csv': '.csv',
7
+ 'text/x-python': '.py',
8
+ 'text/javascript': '.js',
9
+ 'text/jsx': '.jsx',
10
+ 'text/typescript': '.ts',
11
+ 'text/x-c': '.c',
12
+ 'text/x-c++': '.cpp',
13
+ 'application/xml': '.xml',
14
+ 'text/html': '.html',
15
+ 'application/x-yaml': '.yaml',
16
+ 'text/markdown': '.md',
17
+ 'text/x-sql': '.sql',
18
+ 'image/png': '.png',
19
+ 'image/jpeg': '.jpg',
20
+ 'image/gif': '.gif',
21
+ 'image/bmp': '.bmp',
22
+ 'image/x-icon': '.ico',
23
+ 'image/webp': '.webp',
24
+ 'image/svg+xml': '.svg',
25
+ 'application/pdf': '.pdf',
26
+ 'application/zip': '.zip',
27
+ 'application/gzip': '.gz',
28
+ 'application/x-rar-compressed': '.rar',
29
+ 'application/x-7z-compressed': '.7z',
30
+ 'application/x-sqlite3': '.db',
31
+ 'audio/wav': '.wav',
32
+ // Add more as needed
33
+ };
34
+ /**
35
+ * Detect content type and suggest extension.
36
+ *
37
+ * @param content Content string or binary buffer
38
+ * @param fileExtension Optional file extension hint
39
+ * @returns Object containing detected mimeType and suggested extension
40
+ */
41
+ static detectContentType(content, fileExtension) {
42
+ // Prepare sample lines for detectors
43
+ let lines = [];
44
+ let firstLine = '';
45
+ // Convert to string for line analysis (even if binary, we try loosely)
46
+ // Note: For large binary, this might be expensive/messy, but detectors handle it.
47
+ // Python implementation converts to string for lines.
48
+ let textSample = '';
49
+ if (typeof content === 'string') {
50
+ textSample = content.slice(0, 8192); // Limit sample size
51
+ }
52
+ else {
53
+ // Decode ignoring errors for text analysis on binary
54
+ textSample = new TextDecoder('utf-8', { fatal: false }).decode(content.slice(0, 8192));
55
+ }
56
+ lines = textSample.split('\n').slice(0, 20);
57
+ firstLine = lines[0] || '';
58
+ const mimeType = registry.detect(content, lines, firstLine, fileExtension);
59
+ let extension = this.getExtension(mimeType);
60
+ // If detected extension matches provided hint, prefer the hint (case insensitive)
61
+ if (fileExtension && extension) {
62
+ if (fileExtension.toLowerCase() === extension || fileExtension.toLowerCase() === `.${extension}`) {
63
+ extension = fileExtension;
64
+ }
65
+ }
66
+ if (!extension && fileExtension) {
67
+ extension = fileExtension;
68
+ }
69
+ if (!extension) {
70
+ extension = '.txt'; // Default
71
+ }
72
+ return { mimeType, extension };
73
+ }
74
+ static getExtension(mimeType) {
75
+ return this.MIME_TO_EXT[mimeType] || '';
76
+ }
77
+ /**
78
+ * Check if content should be treated as binary.
79
+ */
80
+ static isBinaryContent(content, mimeType) {
81
+ if (mimeType) {
82
+ if (mimeType.startsWith('text/') ||
83
+ mimeType.includes('json') ||
84
+ mimeType.includes('xml') ||
85
+ mimeType.includes('javascript') ||
86
+ mimeType.includes('ecmascript')) {
87
+ return false;
88
+ }
89
+ return true;
90
+ }
91
+ // If string, assume text
92
+ if (typeof content === 'string')
93
+ return false;
94
+ // Heuristic check
95
+ const detection = this.detectContentType(content);
96
+ return !detection.mimeType.startsWith('text/') &&
97
+ !detection.mimeType.includes('json') &&
98
+ !detection.mimeType.includes('xml');
99
+ }
100
+ static isKnownLongLineExtension(extension) {
101
+ if (!extension)
102
+ return false;
103
+ const ext = extension.toLowerCase();
104
+ return ['.min.js', '.min.css', '.map', '.svg', '.json', '.geojson'].some(e => ext.endsWith(e));
105
+ }
106
+ static isUnstructuredBinary(sample) {
107
+ // Match Python's heuristic:
108
+ // if len(sample) < 512: return False
109
+ if (sample.length < 512)
110
+ return false;
111
+ let nullCount = 0;
112
+ let controlCount = 0;
113
+ const len = Math.min(sample.length, 32 * 1024); // match larger sample if available
114
+ for (let i = 0; i < len; i++) {
115
+ const byte = sample[i];
116
+ if (byte === 0) {
117
+ nullCount++;
118
+ }
119
+ // Control chars: < 32, excluding TAB (9), LF (10), CR (13)
120
+ if ((byte < 32 && byte !== 9 && byte !== 10 && byte !== 13)) {
121
+ controlCount++;
122
+ }
123
+ }
124
+ const nullRatio = nullCount / len;
125
+ const controlRatio = controlCount / len;
126
+ // Python Constants: _NULL_RATIO_THRESHOLD = 0.1, _CTRL_RATIO_THRESHOLD = 0.2
127
+ return nullRatio > 0.1 || controlRatio > 0.2;
128
+ }
129
+ static hasPathologicalLines(sample, isKnownType) {
130
+ if (isKnownType || sample.length < 32768)
131
+ return false;
132
+ // Check if there are no newlines in the first 32KB
133
+ for (let i = 0; i < sample.length; i++) {
134
+ if (sample[i] === 10 || sample[i] === 13)
135
+ return false;
136
+ }
137
+ return true;
138
+ }
139
+ }
140
+ //# sourceMappingURL=ContentTypeInterpreter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentTypeInterpreter.js","sourceRoot":"","sources":["../../src/model/ContentTypeInterpreter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { MCard } from './MCard';
2
+ /**
3
+ * Generate a collision event for the given card.
4
+ */
5
+ export declare function generateCollisionEvent(card: MCard): Promise<string>;
6
+ /**
7
+ * Generate a duplication event for the given card.
8
+ */
9
+ export declare function generateDuplicationEvent(card: MCard): string;
10
+ //# sourceMappingURL=EventProducer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventProducer.d.ts","sourceRoot":"","sources":["../../src/model/EventProducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAKhC;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBzE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,KAAK,GAAG,MAAM,CAO5D"}
@@ -0,0 +1,46 @@
1
+ import { EVENT_CONSTANTS, ALGORITHM_HIERARCHY } from './constants';
2
+ import { GTime } from './GTime';
3
+ import { HashValidator } from '../hash/HashValidator';
4
+ /**
5
+ * Generate a collision event for the given card.
6
+ */
7
+ export async function generateCollisionEvent(card) {
8
+ const currentHashFunction = GTime.getHashAlgorithm(card.g_time);
9
+ const nextAlgo = nextHashFunction(currentHashFunction);
10
+ // Compute upgraded hash
11
+ const upgradedHash = await HashValidator.computeHash(card.content, nextAlgo);
12
+ const event = {
13
+ [EVENT_CONSTANTS.TYPE]: EVENT_CONSTANTS.COLLISION_EVENT_TYPE,
14
+ [EVENT_CONSTANTS.HASH]: card.hash,
15
+ [EVENT_CONSTANTS.FIRST_G_TIME]: card.g_time,
16
+ [EVENT_CONSTANTS.COLLISION_TIME]: card.g_time, // Using original card's time as per Python logic reference
17
+ [EVENT_CONSTANTS.CONTENT_SIZE]: card.content.length,
18
+ [EVENT_CONSTANTS.UPGRADED_FUNCTION]: nextAlgo,
19
+ [EVENT_CONSTANTS.UPGRADED_HASH]: upgradedHash
20
+ };
21
+ return JSON.stringify(event);
22
+ }
23
+ /**
24
+ * Generate a duplication event for the given card.
25
+ */
26
+ export function generateDuplicationEvent(card) {
27
+ const event = {
28
+ [EVENT_CONSTANTS.TYPE]: EVENT_CONSTANTS.DUPLICATE_EVENT_TYPE,
29
+ [EVENT_CONSTANTS.HASH]: card.hash,
30
+ [EVENT_CONSTANTS.DUPLICATE_TIME]: card.g_time
31
+ };
32
+ return JSON.stringify(event);
33
+ }
34
+ /**
35
+ * Get the next hash function in the hierarchy.
36
+ */
37
+ function nextHashFunction(current) {
38
+ const currentLower = current.toLowerCase();
39
+ const entry = ALGORITHM_HIERARCHY[currentLower];
40
+ if (entry && entry.next) {
41
+ return entry.next;
42
+ }
43
+ // Fallback logic
44
+ return 'sha256';
45
+ }
46
+ //# sourceMappingURL=EventProducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventProducer.js","sourceRoot":"","sources":["../../src/model/EventProducer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAW;IACpD,MAAM,mBAAmB,GAAG,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;IAEvD,wBAAwB;IACxB,MAAM,YAAY,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAE7E,MAAM,KAAK,GAAG;QACV,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,oBAAoB;QAC5D,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;QACjC,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,MAAM;QAC3C,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,2DAA2D;QAC1G,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;QACnD,CAAC,eAAe,CAAC,iBAAiB,CAAC,EAAE,QAAQ;QAC7C,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE,YAAY;KAChD,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAAW;IAChD,MAAM,KAAK,GAAG;QACV,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,oBAAoB;QAC5D,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI;QACjC,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,MAAM;KAChD,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACrC,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAI,mBAA2B,CAAC,YAAY,CAAC,CAAC;IAEzD,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC,IAAI,CAAC;IACtB,CAAC;IAED,iBAAiB;IACjB,OAAO,QAAQ,CAAC;AACpB,CAAC"}
@@ -0,0 +1,44 @@
1
+ export declare class GTime {
2
+ private static readonly DEFAULT_ALGORITHM;
3
+ /**
4
+ * Generate a GTime stamp for the current moment
5
+ * Format: HASH_ALGO|TIMESTAMP|REGION_CODE
6
+ */
7
+ static stampNow(hashAlgorithm?: string): string;
8
+ /**
9
+ * Parse a GTime string
10
+ */
11
+ static parse(gtime: string): {
12
+ timestamp: Date;
13
+ algorithm: string;
14
+ region: string;
15
+ };
16
+ /**
17
+ * Get the hash algorithm from a GTime string
18
+ */
19
+ static getHashAlgorithm(gtime: string): string;
20
+ /**
21
+ * Get the timestamp from a GTime string
22
+ */
23
+ static getTimestamp(gtime: string): Date;
24
+ /**
25
+ * Get the region code from a GTime string
26
+ */
27
+ static getRegionCode(gtime: string): string;
28
+ /**
29
+ * Check if the provided hash function is valid.
30
+ * Matches Python's GTime.is_valid_hash_function()
31
+ */
32
+ static isValidHashFunction(hashFunction: string): boolean;
33
+ /**
34
+ * Check if the provided region code is valid.
35
+ * Matches Python's GTime.is_valid_region_code()
36
+ */
37
+ static isValidRegionCode(regionCode: string): boolean;
38
+ /**
39
+ * Check if the provided timestamp is in ISO format.
40
+ * Matches Python's GTime.is_iso_format()
41
+ */
42
+ static isIsoFormat(timestamp: string): boolean;
43
+ }
44
+ //# sourceMappingURL=GTime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GTime.d.ts","sourceRoot":"","sources":["../../src/model/GTime.ts"],"names":[],"mappings":"AAKA,qBAAa,KAAK;IACd,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAY;IAErD;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,aAAa,GAAE,MAA+B,GAAG,MAAM;IAQvE;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,SAAS,EAAE,IAAI,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAYnF;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI9C;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI3C;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAOzD;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIrD;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAkBjD"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Valid hash algorithms supported by the system
3
+ */
4
+ const VALID_HASH_ALGORITHMS = ['md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512'];
5
+ export class GTime {
6
+ static DEFAULT_ALGORITHM = 'sha256';
7
+ /**
8
+ * Generate a GTime stamp for the current moment
9
+ * Format: HASH_ALGO|TIMESTAMP|REGION_CODE
10
+ */
11
+ static stampNow(hashAlgorithm = this.DEFAULT_ALGORITHM) {
12
+ const algo = hashAlgorithm.toLowerCase();
13
+ // Use ISO string for timestamp (UTC)
14
+ const timestamp = new Date().toISOString();
15
+ const region = 'UTC'; // Defaulting to UTC for JS implementation
16
+ return `${algo}|${timestamp}|${region}`;
17
+ }
18
+ /**
19
+ * Parse a GTime string
20
+ */
21
+ static parse(gtime) {
22
+ const parts = gtime.split('|');
23
+ if (parts.length !== 3) {
24
+ throw new Error(`Invalid GTime format: ${gtime}`);
25
+ }
26
+ return {
27
+ algorithm: parts[0],
28
+ timestamp: new Date(parts[1]),
29
+ region: parts[2]
30
+ };
31
+ }
32
+ /**
33
+ * Get the hash algorithm from a GTime string
34
+ */
35
+ static getHashAlgorithm(gtime) {
36
+ return this.parse(gtime).algorithm;
37
+ }
38
+ /**
39
+ * Get the timestamp from a GTime string
40
+ */
41
+ static getTimestamp(gtime) {
42
+ return this.parse(gtime).timestamp;
43
+ }
44
+ /**
45
+ * Get the region code from a GTime string
46
+ */
47
+ static getRegionCode(gtime) {
48
+ return this.parse(gtime).region;
49
+ }
50
+ /**
51
+ * Check if the provided hash function is valid.
52
+ * Matches Python's GTime.is_valid_hash_function()
53
+ */
54
+ static isValidHashFunction(hashFunction) {
55
+ if (!hashFunction || typeof hashFunction !== 'string') {
56
+ return false;
57
+ }
58
+ return VALID_HASH_ALGORITHMS.includes(hashFunction.toLowerCase());
59
+ }
60
+ /**
61
+ * Check if the provided region code is valid.
62
+ * Matches Python's GTime.is_valid_region_code()
63
+ */
64
+ static isValidRegionCode(regionCode) {
65
+ return Boolean(regionCode && regionCode === regionCode.toUpperCase());
66
+ }
67
+ /**
68
+ * Check if the provided timestamp is in ISO format.
69
+ * Matches Python's GTime.is_iso_format()
70
+ */
71
+ static isIsoFormat(timestamp) {
72
+ if (!timestamp || typeof timestamp !== 'string') {
73
+ return false;
74
+ }
75
+ try {
76
+ const date = new Date(timestamp);
77
+ // Check if it's a valid date and the string contains expected ISO patterns
78
+ if (isNaN(date.getTime())) {
79
+ return false;
80
+ }
81
+ // ISO format should have 'T' separator or be a valid date string
82
+ // Accept formats like: 2024-12-04T12:00:00.000Z or 2024-12-04T12:00:00
83
+ const isoPattern = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/;
84
+ return isoPattern.test(timestamp);
85
+ }
86
+ catch {
87
+ return false;
88
+ }
89
+ }
90
+ }
91
+ //# sourceMappingURL=GTime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GTime.js","sourceRoot":"","sources":["../../src/model/GTime.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAEtF,MAAM,OAAO,KAAK;IACN,MAAM,CAAU,iBAAiB,GAAG,QAAQ,CAAC;IAErD;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,gBAAwB,IAAI,CAAC,iBAAiB;QAC1D,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;QACzC,qCAAqC;QACrC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,0CAA0C;QAChE,OAAO,GAAG,IAAI,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,KAAa;QACtB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO;YACH,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;YACnB,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;SACnB,CAAC;IACN,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAa;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,KAAa;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,KAAa;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IACpC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,mBAAmB,CAAC,YAAoB;QAC3C,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,qBAAqB,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;IACtE,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,iBAAiB,CAAC,UAAkB;QACvC,OAAO,OAAO,CAAC,UAAU,IAAI,UAAU,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,SAAiB;QAChC,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,2EAA2E;YAC3E,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBACxB,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,iEAAiE;YACjE,uEAAuE;YACvE,MAAM,UAAU,GAAG,sCAAsC,CAAC;YAC1D,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * ContentHandle - UTF-8 aware handle validation and management
3
+ *
4
+ * Supports international characters (文檔, مستند, ドキュメント, документ)
5
+ * Uses Unicode categories for validation
6
+ */
7
+ export declare class HandleValidationError extends Error {
8
+ constructor(message: string);
9
+ }
10
+ /**
11
+ * Validate and normalize a handle string
12
+ * @returns Normalized handle (NFC + lowercase)
13
+ * @throws HandleValidationError if invalid
14
+ */
15
+ export declare function validateHandle(handle: string): string;
16
+ /**
17
+ * ContentHandle - Mutable pointer to immutable MCard hash
18
+ */
19
+ export declare class ContentHandle {
20
+ readonly handle: string;
21
+ currentHash: string;
22
+ readonly createdAt: Date;
23
+ updatedAt: Date;
24
+ constructor(handle: string, currentHash: string, createdAt?: Date, updatedAt?: Date);
25
+ /**
26
+ * Update handle to point to new hash
27
+ * @returns Previous hash for history tracking
28
+ */
29
+ update(newHash: string): string;
30
+ toObject(): {
31
+ handle: string;
32
+ currentHash: string;
33
+ createdAt: string;
34
+ updatedAt: string;
35
+ };
36
+ }
37
+ //# sourceMappingURL=Handle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Handle.d.ts","sourceRoot":"","sources":["../../src/model/Handle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoBH,qBAAa,qBAAsB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI9B;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAmCrD;AAED;;GAEG;AACH,qBAAa,aAAa;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,SAAS,EAAE,IAAI,CAAC;gBAEJ,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,EAAE,IAAI;IAOnF;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAO/B,QAAQ;;;;;;CAQX"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * ContentHandle - UTF-8 aware handle validation and management
3
+ *
4
+ * Supports international characters (文檔, مستند, ドキュメント, документ)
5
+ * Uses Unicode categories for validation
6
+ */
7
+ const MAX_HANDLE_LENGTH = 255;
8
+ /**
9
+ * Check if character is a valid starting character (Unicode letter)
10
+ */
11
+ function isValidStartChar(char) {
12
+ // Unicode letter categories: L (Letter)
13
+ return /^\p{L}$/u.test(char);
14
+ }
15
+ /**
16
+ * Check if character is valid in handle body
17
+ */
18
+ function isValidBodyChar(char) {
19
+ // Letters, numbers, underscore, hyphen, period, forward slash, space
20
+ return /^[\p{L}\p{N}_./ -]$/u.test(char);
21
+ }
22
+ export class HandleValidationError extends Error {
23
+ constructor(message) {
24
+ super(message);
25
+ this.name = 'HandleValidationError';
26
+ }
27
+ }
28
+ /**
29
+ * Validate and normalize a handle string
30
+ * @returns Normalized handle (NFC + lowercase)
31
+ * @throws HandleValidationError if invalid
32
+ */
33
+ export function validateHandle(handle) {
34
+ if (!handle) {
35
+ throw new HandleValidationError('Handle cannot be empty.');
36
+ }
37
+ // Normalize: NFC + trim + lowercase
38
+ const normalized = handle.trim().normalize('NFC').toLowerCase();
39
+ if (normalized.length === 0) {
40
+ throw new HandleValidationError('Handle cannot be empty after normalization.');
41
+ }
42
+ if (normalized.length > MAX_HANDLE_LENGTH) {
43
+ throw new HandleValidationError(`Handle '${handle}' is too long (${normalized.length} chars). Maximum is ${MAX_HANDLE_LENGTH}.`);
44
+ }
45
+ // Validate first character
46
+ if (!isValidStartChar(normalized[0])) {
47
+ throw new HandleValidationError(`Invalid handle '${handle}'. Must start with a letter (any language).`);
48
+ }
49
+ // Validate remaining characters
50
+ for (let i = 1; i < normalized.length; i++) {
51
+ if (!isValidBodyChar(normalized[i])) {
52
+ throw new HandleValidationError(`Invalid character '${normalized[i]}' at position ${i} in handle '${handle}'.`);
53
+ }
54
+ }
55
+ return normalized;
56
+ }
57
+ /**
58
+ * ContentHandle - Mutable pointer to immutable MCard hash
59
+ */
60
+ export class ContentHandle {
61
+ handle;
62
+ currentHash;
63
+ createdAt;
64
+ updatedAt;
65
+ constructor(handle, currentHash, createdAt, updatedAt) {
66
+ this.handle = validateHandle(handle);
67
+ this.currentHash = currentHash;
68
+ this.createdAt = createdAt ?? new Date();
69
+ this.updatedAt = updatedAt ?? this.createdAt;
70
+ }
71
+ /**
72
+ * Update handle to point to new hash
73
+ * @returns Previous hash for history tracking
74
+ */
75
+ update(newHash) {
76
+ const previousHash = this.currentHash;
77
+ this.currentHash = newHash;
78
+ this.updatedAt = new Date();
79
+ return previousHash;
80
+ }
81
+ toObject() {
82
+ return {
83
+ handle: this.handle,
84
+ currentHash: this.currentHash,
85
+ createdAt: this.createdAt.toISOString(),
86
+ updatedAt: this.updatedAt.toISOString()
87
+ };
88
+ }
89
+ }
90
+ //# sourceMappingURL=Handle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Handle.js","sourceRoot":"","sources":["../../src/model/Handle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * MCard - Content-addressable data container
3
+ *
4
+ * Each MCard has:
5
+ * - content: Raw bytes (Uint8Array)
6
+ * - hash: SHA-256 cryptographic hash
7
+ * - g_time: Global timestamp with algorithm identifier
8
+ */
9
+ export declare class MCard {
10
+ readonly content: Uint8Array;
11
+ readonly hash: string;
12
+ readonly g_time: string;
13
+ readonly contentType: string;
14
+ readonly hashFunction: string;
15
+ private constructor();
16
+ /**
17
+ * Create a new MCard from content
18
+ */
19
+ static create(content: string | Uint8Array, hashAlgorithm?: string): Promise<MCard>;
20
+ /**
21
+ * Create an MCard from existing data (e.g., from database)
22
+ */
23
+ static fromData(content: Uint8Array, hash: string, g_time: string): MCard;
24
+ /**
25
+ * Get content as text (UTF-8 decoded)
26
+ */
27
+ getContentAsText(): string;
28
+ /**
29
+ * Get content as raw bytes
30
+ */
31
+ getContent(): Uint8Array;
32
+ /**
33
+ * Convert to plain object
34
+ */
35
+ toObject(): {
36
+ hash: string;
37
+ content: string;
38
+ g_time: string;
39
+ contentType: string;
40
+ hashFunction: string;
41
+ };
42
+ }
43
+ //# sourceMappingURL=MCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MCard.d.ts","sourceRoot":"","sources":["../../src/model/MCard.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,qBAAa,KAAK;IACd,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,OAAO;IAQP;;OAEG;WACU,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,aAAa,GAAE,MAAiB,GAAG,OAAO,CAAC,KAAK,CAAC;IAoBnG;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK;IAMzE;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,UAAU,IAAI,UAAU;IAIxB;;OAEG;IACH,QAAQ,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE;CAS3G"}
@@ -0,0 +1,76 @@
1
+ import { HashValidator } from '../hash/HashValidator';
2
+ import { GTime } from './GTime';
3
+ import { ContentTypeInterpreter } from './detectors/ContentTypeInterpreter';
4
+ /**
5
+ * MCard - Content-addressable data container
6
+ *
7
+ * Each MCard has:
8
+ * - content: Raw bytes (Uint8Array)
9
+ * - hash: SHA-256 cryptographic hash
10
+ * - g_time: Global timestamp with algorithm identifier
11
+ */
12
+ export class MCard {
13
+ content;
14
+ hash;
15
+ g_time;
16
+ contentType; // Defaulting to specific string or null
17
+ hashFunction;
18
+ constructor(content, hash, g_time, contentType, hashFunction) {
19
+ this.content = content;
20
+ this.hash = hash;
21
+ this.g_time = g_time;
22
+ this.contentType = contentType;
23
+ this.hashFunction = hashFunction;
24
+ }
25
+ /**
26
+ * Create a new MCard from content
27
+ */
28
+ static async create(content, hashAlgorithm = 'sha256') {
29
+ if (content === null || content === undefined) {
30
+ throw new Error('Content cannot be null or undefined');
31
+ }
32
+ const bytes = typeof content === 'string'
33
+ ? new TextEncoder().encode(content)
34
+ : content;
35
+ if (bytes.length === 0) {
36
+ throw new Error('Content cannot be empty');
37
+ }
38
+ const hash = await HashValidator.computeHash(bytes, hashAlgorithm);
39
+ const g_time = GTime.stampNow(hashAlgorithm);
40
+ const contentType = ContentTypeInterpreter.detect(bytes);
41
+ return new MCard(bytes, hash, g_time, contentType, hashAlgorithm);
42
+ }
43
+ /**
44
+ * Create an MCard from existing data (e.g., from database)
45
+ */
46
+ static fromData(content, hash, g_time) {
47
+ const alg = GTime.getHashAlgorithm(g_time);
48
+ const contentType = ContentTypeInterpreter.detect(content);
49
+ return new MCard(content, hash, g_time, contentType, alg);
50
+ }
51
+ /**
52
+ * Get content as text (UTF-8 decoded)
53
+ */
54
+ getContentAsText() {
55
+ return new TextDecoder().decode(this.content);
56
+ }
57
+ /**
58
+ * Get content as raw bytes
59
+ */
60
+ getContent() {
61
+ return this.content;
62
+ }
63
+ /**
64
+ * Convert to plain object
65
+ */
66
+ toObject() {
67
+ return {
68
+ hash: this.hash,
69
+ content: this.getContentAsText(),
70
+ g_time: this.g_time,
71
+ contentType: this.contentType,
72
+ hashFunction: this.hashFunction
73
+ };
74
+ }
75
+ }
76
+ //# sourceMappingURL=MCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MCard.js","sourceRoot":"","sources":["../../src/model/MCard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAE5E;;;;;;;GAOG;AACH,MAAM,OAAO,KAAK;IACL,OAAO,CAAa;IACpB,IAAI,CAAS;IACb,MAAM,CAAS;IACf,WAAW,CAAS,CAAC,wCAAwC;IAC7D,YAAY,CAAS;IAE9B,YAAoB,OAAmB,EAAE,IAAY,EAAE,MAAc,EAAE,WAAmB,EAAE,YAAoB;QAC5G,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAA4B,EAAE,gBAAwB,QAAQ;QAC9E,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,OAAO,KAAK,QAAQ;YACrC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;YACnC,CAAC,CAAC,OAAO,CAAC;QAEd,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,WAAW,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEzD,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,OAAmB,EAAE,IAAY,EAAE,MAAc;QAC7D,MAAM,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3D,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,gBAAgB;QACZ,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACH,UAAU;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,QAAQ;QACJ,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAChC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;SAClC,CAAC;IACN,CAAC;CACJ"}