vectra 0.12.3 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/README.md +92 -100
  2. package/lib/BrowserWebFetcher.d.ts +75 -0
  3. package/lib/BrowserWebFetcher.d.ts.map +1 -0
  4. package/lib/BrowserWebFetcher.js +290 -0
  5. package/lib/BrowserWebFetcher.js.map +1 -0
  6. package/lib/FileFetcher.d.ts.map +1 -1
  7. package/lib/FileFetcher.js +25 -15
  8. package/lib/FileFetcher.js.map +1 -1
  9. package/lib/FileFetcher.spec.d.ts +2 -0
  10. package/lib/FileFetcher.spec.d.ts.map +1 -0
  11. package/lib/FileFetcher.spec.js +244 -0
  12. package/lib/FileFetcher.spec.js.map +1 -0
  13. package/lib/FolderWatcher.d.ts +91 -0
  14. package/lib/FolderWatcher.d.ts.map +1 -0
  15. package/lib/FolderWatcher.js +304 -0
  16. package/lib/FolderWatcher.js.map +1 -0
  17. package/lib/FolderWatcher.spec.d.ts +2 -0
  18. package/lib/FolderWatcher.spec.d.ts.map +1 -0
  19. package/lib/FolderWatcher.spec.js +308 -0
  20. package/lib/FolderWatcher.spec.js.map +1 -0
  21. package/lib/GPT3Tokenizer.spec.d.ts +2 -0
  22. package/lib/GPT3Tokenizer.spec.d.ts.map +1 -0
  23. package/lib/GPT3Tokenizer.spec.js +45 -0
  24. package/lib/GPT3Tokenizer.spec.js.map +1 -0
  25. package/lib/ItemSelector.d.ts.map +1 -1
  26. package/lib/ItemSelector.js +19 -8
  27. package/lib/ItemSelector.js.map +1 -1
  28. package/lib/ItemSelector.spec.d.ts +2 -0
  29. package/lib/ItemSelector.spec.d.ts.map +1 -0
  30. package/lib/ItemSelector.spec.js +204 -0
  31. package/lib/ItemSelector.spec.js.map +1 -0
  32. package/lib/LocalDocument.d.ts +1 -1
  33. package/lib/LocalDocument.d.ts.map +1 -1
  34. package/lib/LocalDocument.js +5 -45
  35. package/lib/LocalDocument.js.map +1 -1
  36. package/lib/LocalDocument.spec.d.ts +2 -0
  37. package/lib/LocalDocument.spec.d.ts.map +1 -0
  38. package/lib/LocalDocument.spec.js +214 -0
  39. package/lib/LocalDocument.spec.js.map +1 -0
  40. package/lib/LocalDocumentIndex.d.ts +20 -0
  41. package/lib/LocalDocumentIndex.d.ts.map +1 -1
  42. package/lib/LocalDocumentIndex.js +16 -52
  43. package/lib/LocalDocumentIndex.js.map +1 -1
  44. package/lib/LocalDocumentIndex.spec.d.ts +2 -0
  45. package/lib/LocalDocumentIndex.spec.d.ts.map +1 -0
  46. package/lib/LocalDocumentIndex.spec.js +494 -0
  47. package/lib/LocalDocumentIndex.spec.js.map +1 -0
  48. package/lib/LocalDocumentResult.d.ts +32 -11
  49. package/lib/LocalDocumentResult.d.ts.map +1 -1
  50. package/lib/LocalDocumentResult.js +305 -257
  51. package/lib/LocalDocumentResult.js.map +1 -1
  52. package/lib/LocalDocumentResult.spec.d.ts +2 -0
  53. package/lib/LocalDocumentResult.spec.d.ts.map +1 -0
  54. package/lib/LocalDocumentResult.spec.js +373 -0
  55. package/lib/LocalDocumentResult.spec.js.map +1 -0
  56. package/lib/LocalEmbeddings.d.ts +59 -0
  57. package/lib/LocalEmbeddings.d.ts.map +1 -0
  58. package/lib/LocalEmbeddings.js +101 -0
  59. package/lib/LocalEmbeddings.js.map +1 -0
  60. package/lib/LocalEmbeddings.spec.d.ts +2 -0
  61. package/lib/LocalEmbeddings.spec.d.ts.map +1 -0
  62. package/lib/LocalEmbeddings.spec.js +155 -0
  63. package/lib/LocalEmbeddings.spec.js.map +1 -0
  64. package/lib/LocalIndex.d.ts +27 -18
  65. package/lib/LocalIndex.d.ts.map +1 -1
  66. package/lib/LocalIndex.js +109 -105
  67. package/lib/LocalIndex.js.map +1 -1
  68. package/lib/LocalIndex.spec.js +434 -43
  69. package/lib/LocalIndex.spec.js.map +1 -1
  70. package/lib/OpenAIEmbeddings.d.ts +4 -6
  71. package/lib/OpenAIEmbeddings.d.ts.map +1 -1
  72. package/lib/OpenAIEmbeddings.js +16 -24
  73. package/lib/OpenAIEmbeddings.js.map +1 -1
  74. package/lib/OpenAIEmbeddings.spec.d.ts +2 -0
  75. package/lib/OpenAIEmbeddings.spec.d.ts.map +1 -0
  76. package/lib/OpenAIEmbeddings.spec.js +298 -0
  77. package/lib/OpenAIEmbeddings.spec.js.map +1 -0
  78. package/lib/TextSplitter.d.ts +2 -0
  79. package/lib/TextSplitter.d.ts.map +1 -1
  80. package/lib/TextSplitter.js +154 -111
  81. package/lib/TextSplitter.js.map +1 -1
  82. package/lib/TextSplitter.spec.js +289 -61
  83. package/lib/TextSplitter.spec.js.map +1 -1
  84. package/lib/TransformersEmbeddings.d.ts +121 -0
  85. package/lib/TransformersEmbeddings.d.ts.map +1 -0
  86. package/lib/TransformersEmbeddings.js +176 -0
  87. package/lib/TransformersEmbeddings.js.map +1 -0
  88. package/lib/TransformersEmbeddings.spec.d.ts +2 -0
  89. package/lib/TransformersEmbeddings.spec.d.ts.map +1 -0
  90. package/lib/TransformersEmbeddings.spec.js +198 -0
  91. package/lib/TransformersEmbeddings.spec.js.map +1 -0
  92. package/lib/TransformersTokenizer.d.ts +33 -0
  93. package/lib/TransformersTokenizer.d.ts.map +1 -0
  94. package/lib/TransformersTokenizer.js +44 -0
  95. package/lib/TransformersTokenizer.js.map +1 -0
  96. package/lib/TransformersTokenizer.spec.d.ts +2 -0
  97. package/lib/TransformersTokenizer.spec.d.ts.map +1 -0
  98. package/lib/TransformersTokenizer.spec.js +112 -0
  99. package/lib/TransformersTokenizer.spec.js.map +1 -0
  100. package/lib/WebFetcher.d.ts +1 -2
  101. package/lib/WebFetcher.d.ts.map +1 -1
  102. package/lib/WebFetcher.js +58 -54
  103. package/lib/WebFetcher.js.map +1 -1
  104. package/lib/WebFetcher.spec.d.ts +2 -0
  105. package/lib/WebFetcher.spec.d.ts.map +1 -0
  106. package/lib/WebFetcher.spec.js +263 -0
  107. package/lib/WebFetcher.spec.js.map +1 -0
  108. package/lib/browser.d.ts +30 -0
  109. package/lib/browser.d.ts.map +1 -0
  110. package/lib/browser.js +52 -0
  111. package/lib/browser.js.map +1 -0
  112. package/lib/codecs/IndexCodec.d.ts +37 -0
  113. package/lib/codecs/IndexCodec.d.ts.map +1 -0
  114. package/lib/codecs/IndexCodec.js +3 -0
  115. package/lib/codecs/IndexCodec.js.map +1 -0
  116. package/lib/codecs/JsonCodec.d.ts +19 -0
  117. package/lib/codecs/JsonCodec.d.ts.map +1 -0
  118. package/lib/codecs/JsonCodec.js +35 -0
  119. package/lib/codecs/JsonCodec.js.map +1 -0
  120. package/lib/codecs/JsonCodec.spec.d.ts +2 -0
  121. package/lib/codecs/JsonCodec.spec.d.ts.map +1 -0
  122. package/lib/codecs/JsonCodec.spec.js +66 -0
  123. package/lib/codecs/JsonCodec.spec.js.map +1 -0
  124. package/lib/codecs/LocalIndex.protobuf.spec.d.ts +2 -0
  125. package/lib/codecs/LocalIndex.protobuf.spec.d.ts.map +1 -0
  126. package/lib/codecs/LocalIndex.protobuf.spec.js +108 -0
  127. package/lib/codecs/LocalIndex.protobuf.spec.js.map +1 -0
  128. package/lib/codecs/ProtobufCodec.d.ts +20 -0
  129. package/lib/codecs/ProtobufCodec.d.ts.map +1 -0
  130. package/lib/codecs/ProtobufCodec.js +225 -0
  131. package/lib/codecs/ProtobufCodec.js.map +1 -0
  132. package/lib/codecs/ProtobufCodec.spec.d.ts +2 -0
  133. package/lib/codecs/ProtobufCodec.spec.d.ts.map +1 -0
  134. package/lib/codecs/ProtobufCodec.spec.js +155 -0
  135. package/lib/codecs/ProtobufCodec.spec.js.map +1 -0
  136. package/lib/codecs/index.d.ts +5 -0
  137. package/lib/codecs/index.d.ts.map +1 -0
  138. package/lib/codecs/index.js +21 -0
  139. package/lib/codecs/index.js.map +1 -0
  140. package/lib/codecs/migrateIndex.d.ts +24 -0
  141. package/lib/codecs/migrateIndex.d.ts.map +1 -0
  142. package/lib/codecs/migrateIndex.js +119 -0
  143. package/lib/codecs/migrateIndex.js.map +1 -0
  144. package/lib/codecs/migrateIndex.spec.d.ts +2 -0
  145. package/lib/codecs/migrateIndex.spec.d.ts.map +1 -0
  146. package/lib/codecs/migrateIndex.spec.js +151 -0
  147. package/lib/codecs/migrateIndex.spec.js.map +1 -0
  148. package/lib/codecs/schemas/index.proto +34 -0
  149. package/lib/index.d.ts +9 -1
  150. package/lib/index.d.ts.map +1 -1
  151. package/lib/index.js +9 -1
  152. package/lib/index.js.map +1 -1
  153. package/lib/internals/Colorize.d.ts.map +1 -1
  154. package/lib/internals/Colorize.js +20 -15
  155. package/lib/internals/Colorize.js.map +1 -1
  156. package/lib/server/IndexManager.d.ts +78 -0
  157. package/lib/server/IndexManager.d.ts.map +1 -0
  158. package/lib/server/IndexManager.js +259 -0
  159. package/lib/server/IndexManager.js.map +1 -0
  160. package/lib/server/VectraServer.d.ts +40 -0
  161. package/lib/server/VectraServer.d.ts.map +1 -0
  162. package/lib/server/VectraServer.js +151 -0
  163. package/lib/server/VectraServer.js.map +1 -0
  164. package/lib/server/VectraServer.spec.d.ts +2 -0
  165. package/lib/server/VectraServer.spec.d.ts.map +1 -0
  166. package/lib/server/VectraServer.spec.js +322 -0
  167. package/lib/server/VectraServer.spec.js.map +1 -0
  168. package/lib/server/handlers/documentHandlers.d.ts +15 -0
  169. package/lib/server/handlers/documentHandlers.d.ts.map +1 -0
  170. package/lib/server/handlers/documentHandlers.js +95 -0
  171. package/lib/server/handlers/documentHandlers.js.map +1 -0
  172. package/lib/server/handlers/helpers.d.ts +23 -0
  173. package/lib/server/handlers/helpers.d.ts.map +1 -0
  174. package/lib/server/handlers/helpers.js +138 -0
  175. package/lib/server/handlers/helpers.js.map +1 -0
  176. package/lib/server/handlers/index.d.ts +8 -0
  177. package/lib/server/handlers/index.d.ts.map +1 -0
  178. package/lib/server/handlers/index.js +22 -0
  179. package/lib/server/handlers/index.js.map +1 -0
  180. package/lib/server/handlers/indexHandlers.d.ts +14 -0
  181. package/lib/server/handlers/indexHandlers.d.ts.map +1 -0
  182. package/lib/server/handlers/indexHandlers.js +85 -0
  183. package/lib/server/handlers/indexHandlers.js.map +1 -0
  184. package/lib/server/handlers/itemHandlers.d.ts +34 -0
  185. package/lib/server/handlers/itemHandlers.d.ts.map +1 -0
  186. package/lib/server/handlers/itemHandlers.js +166 -0
  187. package/lib/server/handlers/itemHandlers.js.map +1 -0
  188. package/lib/server/handlers/lifecycleHandlers.d.ts +11 -0
  189. package/lib/server/handlers/lifecycleHandlers.d.ts.map +1 -0
  190. package/lib/server/handlers/lifecycleHandlers.js +31 -0
  191. package/lib/server/handlers/lifecycleHandlers.js.map +1 -0
  192. package/lib/server/handlers/queryHandlers.d.ts +27 -0
  193. package/lib/server/handlers/queryHandlers.d.ts.map +1 -0
  194. package/lib/server/handlers/queryHandlers.js +135 -0
  195. package/lib/server/handlers/queryHandlers.js.map +1 -0
  196. package/lib/server/handlers/statsHandlers.d.ts +17 -0
  197. package/lib/server/handlers/statsHandlers.d.ts.map +1 -0
  198. package/lib/server/handlers/statsHandlers.js +81 -0
  199. package/lib/server/handlers/statsHandlers.js.map +1 -0
  200. package/lib/server/index.d.ts +4 -0
  201. package/lib/server/index.d.ts.map +1 -0
  202. package/lib/server/index.js +23 -0
  203. package/lib/server/index.js.map +1 -0
  204. package/lib/storage/FileStorage.d.ts +92 -0
  205. package/lib/storage/FileStorage.d.ts.map +1 -0
  206. package/lib/storage/FileStorage.js +3 -0
  207. package/lib/storage/FileStorage.js.map +1 -0
  208. package/lib/storage/FileStorageUtilities.d.ts +36 -0
  209. package/lib/storage/FileStorageUtilities.d.ts.map +1 -0
  210. package/lib/storage/FileStorageUtilities.js +91 -0
  211. package/lib/storage/FileStorageUtilities.js.map +1 -0
  212. package/lib/storage/FileStorageUtilities.spec.d.ts +2 -0
  213. package/lib/storage/FileStorageUtilities.spec.d.ts.map +1 -0
  214. package/lib/storage/FileStorageUtilities.spec.js +98 -0
  215. package/lib/storage/FileStorageUtilities.spec.js.map +1 -0
  216. package/lib/storage/FileType.d.ts +29 -0
  217. package/lib/storage/FileType.d.ts.map +1 -0
  218. package/lib/storage/FileType.js +38 -0
  219. package/lib/storage/FileType.js.map +1 -0
  220. package/lib/storage/IndexedDBStorage.d.ts +47 -0
  221. package/lib/storage/IndexedDBStorage.d.ts.map +1 -0
  222. package/lib/storage/IndexedDBStorage.js +347 -0
  223. package/lib/storage/IndexedDBStorage.js.map +1 -0
  224. package/lib/storage/LocalFileStorage.browser.d.ts +19 -0
  225. package/lib/storage/LocalFileStorage.browser.d.ts.map +1 -0
  226. package/lib/storage/LocalFileStorage.browser.js +43 -0
  227. package/lib/storage/LocalFileStorage.browser.js.map +1 -0
  228. package/lib/storage/LocalFileStorage.d.ts +23 -0
  229. package/lib/storage/LocalFileStorage.d.ts.map +1 -0
  230. package/lib/storage/LocalFileStorage.js +152 -0
  231. package/lib/storage/LocalFileStorage.js.map +1 -0
  232. package/lib/storage/LocalFileStorage.spec.d.ts +2 -0
  233. package/lib/storage/LocalFileStorage.spec.d.ts.map +1 -0
  234. package/lib/storage/LocalFileStorage.spec.js +249 -0
  235. package/lib/storage/LocalFileStorage.spec.js.map +1 -0
  236. package/lib/storage/VirtualFileStorage.d.ts +18 -0
  237. package/lib/storage/VirtualFileStorage.d.ts.map +1 -0
  238. package/lib/storage/VirtualFileStorage.js +178 -0
  239. package/lib/storage/VirtualFileStorage.js.map +1 -0
  240. package/lib/storage/VirtualFileStorage.spec.d.ts +2 -0
  241. package/lib/storage/VirtualFileStorage.spec.d.ts.map +1 -0
  242. package/lib/storage/VirtualFileStorage.spec.js +302 -0
  243. package/lib/storage/VirtualFileStorage.spec.js.map +1 -0
  244. package/lib/storage/index.d.ts +6 -0
  245. package/lib/storage/index.d.ts.map +1 -0
  246. package/lib/storage/index.js +22 -0
  247. package/lib/storage/index.js.map +1 -0
  248. package/lib/templates/templates/csharp/README.md +48 -0
  249. package/lib/templates/templates/csharp/VectraClient.cs +234 -0
  250. package/lib/templates/templates/go/README.md +71 -0
  251. package/lib/templates/templates/go/vectra_client.go +322 -0
  252. package/lib/templates/templates/java/README.md +81 -0
  253. package/lib/templates/templates/java/VectraClient.java +232 -0
  254. package/lib/templates/templates/python/README.md +37 -0
  255. package/lib/templates/templates/python/vectra_client.py +279 -0
  256. package/lib/templates/templates/rust/Cargo.toml +14 -0
  257. package/lib/templates/templates/rust/README.md +39 -0
  258. package/lib/templates/templates/rust/build.rs +4 -0
  259. package/lib/templates/templates/rust/lib.rs +284 -0
  260. package/lib/templates/templates/typescript/README.md +96 -0
  261. package/lib/templates/templates/typescript/VectraClient.ts +374 -0
  262. package/lib/templates/typescript/VectraClient.d.ts +114 -0
  263. package/lib/templates/typescript/VectraClient.d.ts.map +1 -0
  264. package/lib/templates/typescript/VectraClient.js +328 -0
  265. package/lib/templates/typescript/VectraClient.js.map +1 -0
  266. package/lib/types.d.ts +7 -0
  267. package/lib/types.d.ts.map +1 -1
  268. package/lib/utils/index.d.ts +2 -0
  269. package/lib/utils/index.d.ts.map +1 -0
  270. package/lib/utils/index.js +18 -0
  271. package/lib/utils/index.js.map +1 -0
  272. package/lib/utils/pathUtils.d.ts +40 -0
  273. package/lib/utils/pathUtils.d.ts.map +1 -0
  274. package/lib/utils/pathUtils.js +98 -0
  275. package/lib/utils/pathUtils.js.map +1 -0
  276. package/lib/vectra-cli.d.ts.map +1 -1
  277. package/lib/vectra-cli.generate.spec.d.ts +2 -0
  278. package/lib/vectra-cli.generate.spec.d.ts.map +1 -0
  279. package/lib/vectra-cli.generate.spec.js +112 -0
  280. package/lib/vectra-cli.generate.spec.js.map +1 -0
  281. package/lib/vectra-cli.js +446 -9
  282. package/lib/vectra-cli.js.map +1 -1
  283. package/lib/vectra-cli.spec.d.ts +1 -0
  284. package/lib/vectra-cli.spec.d.ts.map +1 -0
  285. package/lib/vectra-cli.spec.js +2 -0
  286. package/lib/vectra-cli.spec.js.map +1 -0
  287. package/package.json +89 -16
  288. package/proto/vectra_service.proto +276 -0
  289. package/src/BrowserWebFetcher.ts +345 -0
  290. package/src/FileFetcher.spec.ts +234 -0
  291. package/src/FileFetcher.ts +37 -25
  292. package/src/FolderWatcher.spec.ts +288 -0
  293. package/src/FolderWatcher.ts +304 -0
  294. package/src/GPT3Tokenizer.spec.ts +50 -0
  295. package/src/ItemSelector.spec.ts +252 -0
  296. package/src/ItemSelector.ts +163 -150
  297. package/src/LocalDocument.spec.ts +211 -0
  298. package/src/LocalDocument.ts +88 -94
  299. package/src/LocalDocumentIndex.spec.ts +481 -0
  300. package/src/LocalDocumentIndex.ts +39 -40
  301. package/src/LocalDocumentResult.spec.ts +373 -0
  302. package/src/LocalDocumentResult.ts +489 -319
  303. package/src/LocalEmbeddings.spec.ts +138 -0
  304. package/src/LocalEmbeddings.ts +120 -0
  305. package/src/LocalIndex.spec.ts +808 -323
  306. package/src/LocalIndex.ts +479 -430
  307. package/src/OpenAIEmbeddings.spec.ts +354 -0
  308. package/src/OpenAIEmbeddings.ts +26 -27
  309. package/src/TextSplitter.spec.ts +320 -65
  310. package/src/TextSplitter.ts +172 -115
  311. package/src/TransformersEmbeddings.spec.ts +188 -0
  312. package/src/TransformersEmbeddings.ts +232 -0
  313. package/src/TransformersTokenizer.spec.ts +143 -0
  314. package/src/TransformersTokenizer.ts +45 -0
  315. package/src/WebFetcher.spec.ts +288 -0
  316. package/src/WebFetcher.ts +184 -186
  317. package/src/browser.ts +69 -0
  318. package/src/codecs/IndexCodec.ts +40 -0
  319. package/src/codecs/JsonCodec.spec.ts +70 -0
  320. package/src/codecs/JsonCodec.ts +37 -0
  321. package/src/codecs/LocalIndex.protobuf.spec.ts +115 -0
  322. package/src/codecs/ProtobufCodec.spec.ts +166 -0
  323. package/src/codecs/ProtobufCodec.ts +193 -0
  324. package/src/codecs/index.ts +4 -0
  325. package/src/codecs/migrateIndex.spec.ts +176 -0
  326. package/src/codecs/migrateIndex.ts +125 -0
  327. package/src/codecs/schemas/index.proto +34 -0
  328. package/src/index.ts +9 -1
  329. package/src/internals/Colorize.ts +19 -16
  330. package/src/server/IndexManager.ts +243 -0
  331. package/src/server/VectraServer.spec.ts +303 -0
  332. package/src/server/VectraServer.ts +156 -0
  333. package/src/server/handlers/documentHandlers.ts +59 -0
  334. package/src/server/handlers/helpers.ts +93 -0
  335. package/src/server/handlers/index.ts +7 -0
  336. package/src/server/handlers/indexHandlers.ts +44 -0
  337. package/src/server/handlers/itemHandlers.ts +140 -0
  338. package/src/server/handlers/lifecycleHandlers.ts +26 -0
  339. package/src/server/handlers/queryHandlers.ts +96 -0
  340. package/src/server/handlers/statsHandlers.ts +38 -0
  341. package/src/server/index.ts +3 -0
  342. package/src/storage/FileStorage.ts +105 -0
  343. package/src/storage/FileStorageUtilities.spec.ts +106 -0
  344. package/src/storage/FileStorageUtilities.ts +77 -0
  345. package/src/storage/FileType.ts +61 -0
  346. package/src/storage/IndexedDBStorage.ts +365 -0
  347. package/src/storage/LocalFileStorage.browser.ts +52 -0
  348. package/src/storage/LocalFileStorage.spec.ts +292 -0
  349. package/src/storage/LocalFileStorage.ts +98 -0
  350. package/src/storage/VirtualFileStorage.spec.ts +307 -0
  351. package/src/storage/VirtualFileStorage.ts +169 -0
  352. package/src/storage/index.ts +5 -0
  353. package/src/templates/csharp/README.md +48 -0
  354. package/src/templates/csharp/VectraClient.cs +234 -0
  355. package/src/templates/go/README.md +71 -0
  356. package/src/templates/go/vectra_client.go +322 -0
  357. package/src/templates/java/README.md +81 -0
  358. package/src/templates/java/VectraClient.java +232 -0
  359. package/src/templates/python/README.md +37 -0
  360. package/src/templates/python/vectra_client.py +279 -0
  361. package/src/templates/rust/Cargo.toml +14 -0
  362. package/src/templates/rust/README.md +39 -0
  363. package/src/templates/rust/build.rs +4 -0
  364. package/src/templates/rust/lib.rs +284 -0
  365. package/src/templates/typescript/README.md +96 -0
  366. package/src/templates/typescript/VectraClient.ts +374 -0
  367. package/src/types.ts +131 -123
  368. package/src/utils/index.ts +1 -0
  369. package/src/utils/pathUtils.ts +106 -0
  370. package/src/vectra-cli.generate.spec.ts +72 -0
  371. package/src/vectra-cli.spec.ts +0 -0
  372. package/src/vectra-cli.ts +687 -246
  373. package/README.draft.md +0 -499
  374. package/README.draft.outline.md +0 -160
  375. package/README.research.md +0 -2159
@@ -0,0 +1,302 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ var __importDefault = (this && this.__importDefault) || function (mod) {
45
+ return (mod && mod.__esModule) ? mod : { "default": mod };
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ const node_assert_1 = __importDefault(require("node:assert"));
49
+ const path = __importStar(require("path"));
50
+ const VirtualFileStorage_1 = require("./VirtualFileStorage");
51
+ const FileStorageUtilities_1 = require("./FileStorageUtilities");
52
+ describe('VirtualFileStorage', () => {
53
+ let storage;
54
+ beforeEach(() => {
55
+ storage = new VirtualFileStorage_1.VirtualFileStorage();
56
+ });
57
+ describe('createFile', () => {
58
+ it('creates a new file with string content', () => __awaiter(void 0, void 0, void 0, function* () {
59
+ yield storage.createFile('file.txt', 'hello');
60
+ const details = yield storage.getDetails('file.txt');
61
+ node_assert_1.default.strictEqual(details.name, 'file.txt');
62
+ node_assert_1.default.strictEqual(details.path, path.normalize('file.txt'));
63
+ node_assert_1.default.strictEqual(details.isFolder, false);
64
+ node_assert_1.default.strictEqual(details.fileType, FileStorageUtilities_1.FileStorageUtilities.getFileType(path.normalize('file.txt')));
65
+ const content = yield storage.readFile('file.txt');
66
+ node_assert_1.default.deepStrictEqual(content, Buffer.from('hello', 'utf8'));
67
+ }));
68
+ it('creates a new file with Buffer content', () => __awaiter(void 0, void 0, void 0, function* () {
69
+ const buf = Buffer.from('buffer content');
70
+ yield storage.createFile('bufferfile.bin', buf);
71
+ const content = yield storage.readFile('bufferfile.bin');
72
+ node_assert_1.default.deepStrictEqual(content, buf);
73
+ }));
74
+ it('throws when file already exists (including folder at path)', () => __awaiter(void 0, void 0, void 0, function* () {
75
+ yield storage.createFile('dup.txt', 'content');
76
+ yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
77
+ yield storage.createFile('dup.txt', 'new content');
78
+ }), /File already exists/);
79
+ yield storage.createFolder('folder');
80
+ yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
81
+ yield storage.createFile('folder', 'content');
82
+ }), /File already exists/);
83
+ }));
84
+ it('throws when creating file with normalized duplicate path', () => __awaiter(void 0, void 0, void 0, function* () {
85
+ yield storage.createFile('a/../b/file.txt', 'content');
86
+ yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
87
+ yield storage.createFile('b/file.txt', 'content');
88
+ }), /File already exists/);
89
+ }));
90
+ });
91
+ describe('createFolder', () => {
92
+ it('creates a new folder', () => __awaiter(void 0, void 0, void 0, function* () {
93
+ yield storage.createFolder('myfolder');
94
+ const details = yield storage.getDetails('myfolder');
95
+ node_assert_1.default.strictEqual(details.name, 'myfolder');
96
+ node_assert_1.default.strictEqual(details.isFolder, true);
97
+ node_assert_1.default.strictEqual(details.fileType, undefined);
98
+ }));
99
+ it('is idempotent when folder already exists', () => __awaiter(void 0, void 0, void 0, function* () {
100
+ yield storage.createFolder('myfolder');
101
+ yield storage.createFolder('myfolder'); // no error
102
+ }));
103
+ it('throws when a file exists at that path', () => __awaiter(void 0, void 0, void 0, function* () {
104
+ yield storage.createFile('file.txt', 'content');
105
+ yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
106
+ yield storage.createFolder('file.txt');
107
+ }), /Cannot create folder/);
108
+ }));
109
+ it('does not create parent folders automatically', () => __awaiter(void 0, void 0, void 0, function* () {
110
+ // Implementation creates only the explicit folder entry
111
+ yield storage.createFolder('parent/child');
112
+ // Only 'parent/child' exists, not 'parent'
113
+ yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
114
+ yield storage.getDetails('parent');
115
+ }), /Path not found/);
116
+ const details = yield storage.getDetails('parent/child');
117
+ node_assert_1.default.strictEqual(details.isFolder, true);
118
+ }));
119
+ });
120
+ describe('deleteFile', () => {
121
+ it('deletes an existing file', () => __awaiter(void 0, void 0, void 0, function* () {
122
+ yield storage.createFile('file.txt', 'content');
123
+ yield storage.deleteFile('file.txt');
124
+ const exists = yield storage.pathExists('file.txt');
125
+ node_assert_1.default.strictEqual(exists, false);
126
+ yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
127
+ yield storage.readFile('file.txt');
128
+ }), /File not found/);
129
+ }));
130
+ it('throws when deleting a folder as file', () => __awaiter(void 0, void 0, void 0, function* () {
131
+ yield storage.createFolder('folder');
132
+ yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
133
+ yield storage.deleteFile('folder');
134
+ }), /Cannot delete file/);
135
+ }));
136
+ it('no error when deleting non-existent file', () => __awaiter(void 0, void 0, void 0, function* () {
137
+ yield storage.deleteFile('nonexistent');
138
+ }));
139
+ });
140
+ describe('deleteFolder', () => {
141
+ it('deletes an existing folder', () => __awaiter(void 0, void 0, void 0, function* () {
142
+ yield storage.createFolder('folder');
143
+ yield storage.deleteFolder('folder');
144
+ const exists = yield storage.pathExists('folder');
145
+ node_assert_1.default.strictEqual(exists, false);
146
+ }));
147
+ it('throws when deleting a file as folder', () => __awaiter(void 0, void 0, void 0, function* () {
148
+ yield storage.createFile('file.txt', 'content');
149
+ yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
150
+ yield storage.deleteFolder('file.txt');
151
+ }), /Cannot delete folder/);
152
+ }));
153
+ it('no error when deleting non-existent folder', () => __awaiter(void 0, void 0, void 0, function* () {
154
+ yield storage.deleteFolder('nonexistent');
155
+ }));
156
+ it('does not delete children when deleting folder', () => __awaiter(void 0, void 0, void 0, function* () {
157
+ yield storage.createFolder('parent');
158
+ yield storage.createFile('parent/child.txt', 'content');
159
+ yield storage.deleteFolder('parent');
160
+ // Parent deleted
161
+ const parentExists = yield storage.pathExists('parent');
162
+ node_assert_1.default.strictEqual(parentExists, false);
163
+ // Child still exists
164
+ const childExists = yield storage.pathExists('parent/child.txt');
165
+ node_assert_1.default.strictEqual(childExists, true);
166
+ }));
167
+ });
168
+ describe('getDetails', () => {
169
+ it('returns details for existing file', () => __awaiter(void 0, void 0, void 0, function* () {
170
+ yield storage.createFile('file.txt', 'content');
171
+ const details = yield storage.getDetails('file.txt');
172
+ node_assert_1.default.strictEqual(details.name, 'file.txt');
173
+ node_assert_1.default.strictEqual(details.path, path.normalize('file.txt'));
174
+ node_assert_1.default.strictEqual(details.isFolder, false);
175
+ node_assert_1.default.strictEqual(details.fileType, FileStorageUtilities_1.FileStorageUtilities.getFileType(path.normalize('file.txt')));
176
+ }));
177
+ it('returns details for existing folder', () => __awaiter(void 0, void 0, void 0, function* () {
178
+ yield storage.createFolder('folder');
179
+ const details = yield storage.getDetails('folder');
180
+ node_assert_1.default.strictEqual(details.name, 'folder');
181
+ node_assert_1.default.strictEqual(details.path, path.normalize('folder'));
182
+ node_assert_1.default.strictEqual(details.isFolder, true);
183
+ node_assert_1.default.strictEqual(details.fileType, undefined);
184
+ }));
185
+ it('throws for non-existent path', () => __awaiter(void 0, void 0, void 0, function* () {
186
+ yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
187
+ yield storage.getDetails('missing');
188
+ }), /Path not found/);
189
+ }));
190
+ });
191
+ describe('listFiles', () => {
192
+ beforeEach(() => __awaiter(void 0, void 0, void 0, function* () {
193
+ yield storage.createFolder('a');
194
+ yield storage.createFolder('a/b');
195
+ yield storage.createFile('a/file1.txt', 'content1');
196
+ yield storage.createFile('a/b/file2.txt', 'content2');
197
+ yield storage.createFolder('c');
198
+ yield storage.createFile('fileRoot.txt', 'root');
199
+ }));
200
+ it('returns immediate children only', () => __awaiter(void 0, void 0, void 0, function* () {
201
+ const listA = yield storage.listFiles('a');
202
+ (0, node_assert_1.default)(listA.some(e => e.name === 'file1.txt'));
203
+ (0, node_assert_1.default)(listA.some(e => e.name === 'b'));
204
+ (0, node_assert_1.default)(!listA.some(e => e.name === 'file2.txt'));
205
+ const listRoot = yield storage.listFiles('');
206
+ (0, node_assert_1.default)(listRoot.some(e => e.name === 'a'));
207
+ (0, node_assert_1.default)(listRoot.some(e => e.name === 'c'));
208
+ (0, node_assert_1.default)(listRoot.some(e => e.name === 'fileRoot.txt'));
209
+ }));
210
+ it('respects filter "all"', () => __awaiter(void 0, void 0, void 0, function* () {
211
+ const all = yield storage.listFiles('a', 'all');
212
+ (0, node_assert_1.default)(all.some(e => e.isFolder));
213
+ (0, node_assert_1.default)(all.some(e => !e.isFolder));
214
+ }));
215
+ it('respects filter "files"', () => __awaiter(void 0, void 0, void 0, function* () {
216
+ const files = yield storage.listFiles('a', 'files');
217
+ (0, node_assert_1.default)(files.every(e => !e.isFolder));
218
+ (0, node_assert_1.default)(files.some(e => e.name === 'file1.txt'));
219
+ (0, node_assert_1.default)(!files.some(e => e.name === 'b'));
220
+ }));
221
+ it('respects filter "folders"', () => __awaiter(void 0, void 0, void 0, function* () {
222
+ const folders = yield storage.listFiles('a', 'folders');
223
+ (0, node_assert_1.default)(folders.every(e => e.isFolder));
224
+ (0, node_assert_1.default)(folders.some(e => e.name === 'b'));
225
+ (0, node_assert_1.default)(!folders.some(e => e.name === 'file1.txt'));
226
+ }));
227
+ it('normalizes folderPath', () => __awaiter(void 0, void 0, void 0, function* () {
228
+ const list1 = yield storage.listFiles('a/');
229
+ const list2 = yield storage.listFiles('a');
230
+ node_assert_1.default.deepStrictEqual(list1, list2);
231
+ }));
232
+ });
233
+ describe('pathExists', () => {
234
+ it('returns true for existing file and folder', () => __awaiter(void 0, void 0, void 0, function* () {
235
+ yield storage.createFile('file.txt', 'content');
236
+ yield storage.createFolder('folder');
237
+ node_assert_1.default.strictEqual(yield storage.pathExists('file.txt'), true);
238
+ node_assert_1.default.strictEqual(yield storage.pathExists('folder'), true);
239
+ }));
240
+ it('returns false for missing path', () => __awaiter(void 0, void 0, void 0, function* () {
241
+ node_assert_1.default.strictEqual(yield storage.pathExists('missing'), false);
242
+ }));
243
+ });
244
+ describe('readFile', () => {
245
+ it('returns exact Buffer written', () => __awaiter(void 0, void 0, void 0, function* () {
246
+ const buf = Buffer.from('data');
247
+ yield storage.createFile('file.txt', buf);
248
+ const read = yield storage.readFile('file.txt');
249
+ node_assert_1.default.deepStrictEqual(read, buf);
250
+ }));
251
+ it('throws when path does not exist', () => __awaiter(void 0, void 0, void 0, function* () {
252
+ yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
253
+ yield storage.readFile('missing.txt');
254
+ }), /File not found/);
255
+ }));
256
+ it('throws when path is a folder', () => __awaiter(void 0, void 0, void 0, function* () {
257
+ yield storage.createFolder('folder');
258
+ yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
259
+ yield storage.readFile('folder');
260
+ }), /Cannot read file/);
261
+ }));
262
+ it('returns empty buffer if content is undefined (forced)', () => __awaiter(void 0, void 0, void 0, function* () {
263
+ // Force an entry with undefined content to hit the fallback branch
264
+ storage._entries.set('emptyfile.txt', {
265
+ details: {
266
+ name: 'emptyfile.txt',
267
+ path: path.normalize('emptyfile.txt'),
268
+ isFolder: false,
269
+ fileType: FileStorageUtilities_1.FileStorageUtilities.getFileType(path.normalize('emptyfile.txt')),
270
+ },
271
+ content: undefined,
272
+ });
273
+ const content = yield storage.readFile('emptyfile.txt');
274
+ node_assert_1.default.deepStrictEqual(content, Buffer.from('', 'utf8'));
275
+ }));
276
+ });
277
+ describe('upsertFile', () => {
278
+ it('creates new file when missing with string content', () => __awaiter(void 0, void 0, void 0, function* () {
279
+ yield storage.upsertFile('newfile.txt', 'content');
280
+ const details = yield storage.getDetails('newfile.txt');
281
+ node_assert_1.default.strictEqual(details.isFolder, false);
282
+ node_assert_1.default.strictEqual(details.fileType, FileStorageUtilities_1.FileStorageUtilities.getFileType(path.normalize('newfile.txt')));
283
+ const content = yield storage.readFile('newfile.txt');
284
+ node_assert_1.default.deepStrictEqual(content, Buffer.from('content', 'utf8'));
285
+ }));
286
+ it('replaces content of existing file and keeps correct fileType', () => __awaiter(void 0, void 0, void 0, function* () {
287
+ yield storage.createFile('file.txt', 'old');
288
+ yield storage.upsertFile('file.txt', Buffer.from('new'));
289
+ const content = yield storage.readFile('file.txt');
290
+ node_assert_1.default.deepStrictEqual(content, Buffer.from('new'));
291
+ const details = yield storage.getDetails('file.txt');
292
+ node_assert_1.default.strictEqual(details.fileType, FileStorageUtilities_1.FileStorageUtilities.getFileType(path.normalize('file.txt')));
293
+ }));
294
+ it('throws when a folder exists at that path', () => __awaiter(void 0, void 0, void 0, function* () {
295
+ yield storage.createFolder('folder');
296
+ yield node_assert_1.default.rejects(() => __awaiter(void 0, void 0, void 0, function* () {
297
+ yield storage.upsertFile('folder', 'content');
298
+ }), /Cannot write file/);
299
+ }));
300
+ });
301
+ });
302
+ //# sourceMappingURL=VirtualFileStorage.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VirtualFileStorage.spec.js","sourceRoot":"","sources":["../../src/storage/VirtualFileStorage.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAAiC;AACjC,2CAA6B;AAC7B,6DAA0D;AAC1D,iEAA8D;AAE9D,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,OAA2B,CAAC;IAEhC,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,IAAI,uCAAkB,EAAE,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,wCAAwC,EAAE,GAAS,EAAE;YACtD,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC9C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACrD,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC7C,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;YAC7D,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC5C,qBAAM,CAAC,WAAW,CAChB,OAAO,CAAC,QAAQ,EAChB,2CAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAC7D,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACnD,qBAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QAChE,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAS,EAAE;YACtD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC1C,MAAM,OAAO,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACzD,qBAAM,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,GAAS,EAAE;YAC1E,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC/C,MAAM,qBAAM,CAAC,OAAO,CAAC,GAAS,EAAE;gBAC9B,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACrD,CAAC,CAAA,EAAE,qBAAqB,CAAC,CAAC;YAE1B,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,qBAAM,CAAC,OAAO,CAAC,GAAS,EAAE;gBAC9B,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAChD,CAAC,CAAA,EAAE,qBAAqB,CAAC,CAAC;QAC5B,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,GAAS,EAAE;YACxE,MAAM,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;YACvD,MAAM,qBAAM,CAAC,OAAO,CAAC,GAAS,EAAE;gBAC9B,MAAM,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YACpD,CAAC,CAAA,EAAE,qBAAqB,CAAC,CAAC;QAC5B,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,sBAAsB,EAAE,GAAS,EAAE;YACpC,MAAM,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACrD,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC7C,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC3C,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAClD,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAS,EAAE;YACxD,MAAM,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACvC,MAAM,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW;QACrD,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAS,EAAE;YACtD,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAChD,MAAM,qBAAM,CAAC,OAAO,CAAC,GAAS,EAAE;gBAC9B,MAAM,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACzC,CAAC,CAAA,EAAE,sBAAsB,CAAC,CAAC;QAC7B,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAS,EAAE;YAC5D,wDAAwD;YACxD,MAAM,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YAE3C,2CAA2C;YAC3C,MAAM,qBAAM,CAAC,OAAO,CAAC,GAAS,EAAE;gBAC9B,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACrC,CAAC,CAAA,EAAE,gBAAgB,CAAC,CAAC;YAErB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YACzD,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,0BAA0B,EAAE,GAAS,EAAE;YACxC,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAChD,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACpD,qBAAM,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAClC,MAAM,qBAAM,CAAC,OAAO,CAAC,GAAS,EAAE;gBAC9B,MAAM,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACrC,CAAC,CAAA,EAAE,gBAAgB,CAAC,CAAC;QACvB,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAS,EAAE;YACrD,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,qBAAM,CAAC,OAAO,CAAC,GAAS,EAAE;gBAC9B,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACrC,CAAC,CAAA,EAAE,oBAAoB,CAAC,CAAC;QAC3B,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAS,EAAE;YACxD,MAAM,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;QAC1C,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,4BAA4B,EAAE,GAAS,EAAE;YAC1C,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAClD,qBAAM,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAS,EAAE;YACrD,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAChD,MAAM,qBAAM,CAAC,OAAO,CAAC,GAAS,EAAE;gBAC9B,MAAM,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YACzC,CAAC,CAAA,EAAE,sBAAsB,CAAC,CAAC;QAC7B,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,4CAA4C,EAAE,GAAS,EAAE;YAC1D,MAAM,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAC5C,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAS,EAAE;YAC7D,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;YACxD,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAErC,iBAAiB;YACjB,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACxD,qBAAM,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAExC,qBAAqB;YACrB,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;YACjE,qBAAM,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,mCAAmC,EAAE,GAAS,EAAE;YACjD,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACrD,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC7C,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;YAC7D,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC5C,qBAAM,CAAC,WAAW,CAChB,OAAO,CAAC,QAAQ,EAChB,2CAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAC7D,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAS,EAAE;YACnD,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACnD,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC3C,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC3D,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC3C,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAClD,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAS,EAAE;YAC5C,MAAM,qBAAM,CAAC,OAAO,CAAC,GAAS,EAAE;gBAC9B,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YACtC,CAAC,CAAA,EAAE,gBAAgB,CAAC,CAAC;QACvB,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,UAAU,CAAC,GAAS,EAAE;YACpB,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YACpD,MAAM,OAAO,CAAC,UAAU,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;YACtD,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAS,EAAE;YAC/C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAA,qBAAM,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC;YAChD,IAAA,qBAAM,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;YACxC,IAAA,qBAAM,EAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC;YAEjD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC7C,IAAA,qBAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAA,qBAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAA,qBAAM,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC;QACxD,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE,GAAS,EAAE;YACrC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAChD,IAAA,qBAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAClC,IAAA,qBAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrC,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAS,EAAE;YACvC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YACpD,IAAA,qBAAM,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACtC,IAAA,qBAAM,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC;YAChD,IAAA,qBAAM,EAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,2BAA2B,EAAE,GAAS,EAAE;YACzC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YACxD,IAAA,qBAAM,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACvC,IAAA,qBAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;YAC1C,IAAA,qBAAM,EAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC;QACrD,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,uBAAuB,EAAE,GAAS,EAAE;YACrC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAC3C,qBAAM,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,2CAA2C,EAAE,GAAS,EAAE;YACzD,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAChD,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrC,qBAAM,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;YAC/D,qBAAM,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAS,EAAE;YAC9C,qBAAM,CAAC,WAAW,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;QACjE,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,8BAA8B,EAAE,GAAS,EAAE;YAC5C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChC,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAChD,qBAAM,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAS,EAAE;YAC/C,MAAM,qBAAM,CAAC,OAAO,CAAC,GAAS,EAAE;gBAC9B,MAAM,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACxC,CAAC,CAAA,EAAE,gBAAgB,CAAC,CAAC;QACvB,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,8BAA8B,EAAE,GAAS,EAAE;YAC5C,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,qBAAM,CAAC,OAAO,CAAC,GAAS,EAAE;gBAC9B,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnC,CAAC,CAAA,EAAE,kBAAkB,CAAC,CAAC;QACzB,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAS,EAAE;YACrE,mEAAmE;YAClE,OAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE;gBAC7C,OAAO,EAAE;oBACP,IAAI,EAAE,eAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC;oBACrC,QAAQ,EAAE,KAAK;oBACf,QAAQ,EAAE,2CAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;iBAC5E;gBACD,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;YACxD,qBAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,mDAAmD,EAAE,GAAS,EAAE;YACjE,MAAM,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;YACxD,qBAAM,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC5C,qBAAM,CAAC,WAAW,CAChB,OAAO,CAAC,QAAQ,EAChB,2CAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAChE,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACtD,qBAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QAClE,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,GAAS,EAAE;YAC5E,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAC5C,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACnD,qBAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACrD,qBAAM,CAAC,WAAW,CAChB,OAAO,CAAC,QAAQ,EAChB,2CAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAC7D,CAAC;QACJ,CAAC,CAAA,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAS,EAAE;YACxD,MAAM,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,qBAAM,CAAC,OAAO,CAAC,GAAS,EAAE;gBAC9B,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAChD,CAAC,CAAA,EAAE,mBAAmB,CAAC,CAAC;QAC1B,CAAC,CAAA,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from "./FileStorage";
2
+ export * from "./FileStorageUtilities";
3
+ export * from "./FileType";
4
+ export * from "./LocalFileStorage";
5
+ export * from "./VirtualFileStorage";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./FileStorage"), exports);
18
+ __exportStar(require("./FileStorageUtilities"), exports);
19
+ __exportStar(require("./FileType"), exports);
20
+ __exportStar(require("./LocalFileStorage"), exports);
21
+ __exportStar(require("./VirtualFileStorage"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,yDAAuC;AACvC,6CAA2B;AAC3B,qDAAmC;AACnC,uDAAqC"}
@@ -0,0 +1,48 @@
1
+ # Vectra C# Client
2
+
3
+ Thin idiomatic C# wrapper over the Vectra gRPC service.
4
+
5
+ ## Prerequisites
6
+
7
+ Add these NuGet packages to your project:
8
+
9
+ ```bash
10
+ dotnet add package Grpc.Net.Client
11
+ dotnet add package Google.Protobuf
12
+ dotnet add package Grpc.Tools
13
+ ```
14
+
15
+ ## Generate gRPC stubs
16
+
17
+ Add to your `.csproj`:
18
+
19
+ ```xml
20
+ <ItemGroup>
21
+ <Protobuf Include="vectra_service.proto" GrpcServices="Client" />
22
+ </ItemGroup>
23
+ ```
24
+
25
+ The stubs are generated automatically at build time by `Grpc.Tools`.
26
+
27
+ ## Usage
28
+
29
+ ```csharp
30
+ using Vectra.Client;
31
+
32
+ using var client = new VectraClient();
33
+
34
+ // Create a document index
35
+ await client.CreateIndexAsync("my-index", isDocumentIndex: true);
36
+
37
+ // Add a document
38
+ await client.UpsertDocumentAsync("my-index", "doc1.txt", "Hello world...");
39
+
40
+ // Query
41
+ var results = await client.QueryDocumentsAsync("my-index", "hello");
42
+ foreach (var doc in results)
43
+ {
44
+ Console.WriteLine($"{doc.Uri} (score: {doc.Score:F3})");
45
+ foreach (var chunk in doc.Chunks)
46
+ Console.WriteLine($" {chunk.Text[..Math.Min(80, chunk.Text.Length)]}...");
47
+ }
48
+ ```
@@ -0,0 +1,234 @@
1
+ // Vectra gRPC client — thin idiomatic wrapper over generated stubs.
2
+ //
3
+ // Usage:
4
+ // using var client = new VectraClient();
5
+ // var results = await client.QueryDocumentsAsync("my-index", "search query");
6
+ //
7
+ // Generate stubs first (see README.md).
8
+
9
+ using System.Text.Json;
10
+ using Grpc.Net.Client;
11
+ using Vectra;
12
+
13
+ namespace Vectra.Client;
14
+
15
+ /// <summary>Idiomatic C# client for the Vectra gRPC server.</summary>
16
+ public sealed class VectraClient : IDisposable
17
+ {
18
+ private readonly GrpcChannel _channel;
19
+ private readonly VectraService.VectraServiceClient _stub;
20
+
21
+ public VectraClient(string host = "127.0.0.1", int port = 50051)
22
+ {
23
+ _channel = GrpcChannel.ForAddress($"http://{host}:{port}");
24
+ _stub = new VectraService.VectraServiceClient(_channel);
25
+ }
26
+
27
+ public void Dispose() => _channel.Dispose();
28
+
29
+ // ── Index Management ──────────────────────────────────
30
+
31
+ public async Task CreateIndexAsync(
32
+ string name,
33
+ string format = "json",
34
+ bool isDocumentIndex = false,
35
+ uint chunkSize = 512,
36
+ uint chunkOverlap = 0)
37
+ {
38
+ var req = new CreateIndexRequest
39
+ {
40
+ IndexName = name,
41
+ Format = format,
42
+ IsDocumentIndex = isDocumentIndex,
43
+ };
44
+ if (isDocumentIndex)
45
+ {
46
+ req.DocumentConfig = new DocumentIndexConfig
47
+ {
48
+ Version = 1,
49
+ ChunkSize = chunkSize,
50
+ ChunkOverlap = chunkOverlap,
51
+ };
52
+ }
53
+ await _stub.CreateIndexAsync(req);
54
+ }
55
+
56
+ public async Task DeleteIndexAsync(string name)
57
+ => await _stub.DeleteIndexAsync(new DeleteIndexRequest { IndexName = name });
58
+
59
+ public async Task<List<IndexInfo>> ListIndexesAsync()
60
+ {
61
+ var resp = await _stub.ListIndexesAsync(new ListIndexesRequest());
62
+ return resp.Indexes.ToList();
63
+ }
64
+
65
+ // ── Item Operations ───────────────────────────────────
66
+
67
+ public async Task<string> InsertItemAsync(
68
+ string index,
69
+ string text = "",
70
+ IEnumerable<float>? vector = null,
71
+ Dictionary<string, object>? metadata = null,
72
+ string id = "")
73
+ {
74
+ var req = new InsertItemRequest
75
+ {
76
+ IndexName = index,
77
+ Text = text,
78
+ Id = id,
79
+ };
80
+ if (vector != null) req.Vector.AddRange(vector);
81
+ if (metadata != null) SetMetadata(req.Metadata, metadata);
82
+ var resp = await _stub.InsertItemAsync(req);
83
+ return resp.Id;
84
+ }
85
+
86
+ public async Task<string> UpsertItemAsync(
87
+ string index,
88
+ string id,
89
+ string text = "",
90
+ IEnumerable<float>? vector = null,
91
+ Dictionary<string, object>? metadata = null)
92
+ {
93
+ var req = new UpsertItemRequest
94
+ {
95
+ IndexName = index,
96
+ Id = id,
97
+ Text = text,
98
+ };
99
+ if (vector != null) req.Vector.AddRange(vector);
100
+ if (metadata != null) SetMetadata(req.Metadata, metadata);
101
+ var resp = await _stub.UpsertItemAsync(req);
102
+ return resp.Id;
103
+ }
104
+
105
+ public async Task<ItemResult?> GetItemAsync(string index, string id)
106
+ {
107
+ var resp = await _stub.GetItemAsync(new GetItemRequest { IndexName = index, Id = id });
108
+ return resp.Item;
109
+ }
110
+
111
+ public async Task DeleteItemAsync(string index, string id)
112
+ => await _stub.DeleteItemAsync(new DeleteItemRequest { IndexName = index, Id = id });
113
+
114
+ public async Task<List<ItemResult>> ListItemsAsync(
115
+ string index,
116
+ Dictionary<string, object>? filter = null)
117
+ {
118
+ var req = new ListItemsRequest { IndexName = index };
119
+ if (filter != null)
120
+ req.Filter = new MetadataFilter { FilterJson = JsonSerializer.Serialize(filter) };
121
+ var resp = await _stub.ListItemsAsync(req);
122
+ return resp.Items.ToList();
123
+ }
124
+
125
+ // ── Query ─────────────────────────────────────────────
126
+
127
+ public async Task<List<ItemResult>> QueryItemsAsync(
128
+ string index,
129
+ string text = "",
130
+ IEnumerable<float>? vector = null,
131
+ uint topK = 10,
132
+ Dictionary<string, object>? filter = null)
133
+ {
134
+ var req = new QueryItemsRequest
135
+ {
136
+ IndexName = index,
137
+ Text = text,
138
+ TopK = topK,
139
+ };
140
+ if (vector != null) req.Vector.AddRange(vector);
141
+ if (filter != null)
142
+ req.Filter = new MetadataFilter { FilterJson = JsonSerializer.Serialize(filter) };
143
+ var resp = await _stub.QueryItemsAsync(req);
144
+ return resp.Results.ToList();
145
+ }
146
+
147
+ public async Task<List<DocumentResult>> QueryDocumentsAsync(
148
+ string index,
149
+ string query,
150
+ uint maxDocuments = 10,
151
+ uint maxChunks = 50,
152
+ Dictionary<string, object>? filter = null,
153
+ bool useBm25 = false)
154
+ {
155
+ var req = new QueryDocumentsRequest
156
+ {
157
+ IndexName = index,
158
+ Query = query,
159
+ MaxDocuments = maxDocuments,
160
+ MaxChunks = maxChunks,
161
+ UseBm25 = useBm25,
162
+ };
163
+ if (filter != null)
164
+ req.Filter = new MetadataFilter { FilterJson = JsonSerializer.Serialize(filter) };
165
+ var resp = await _stub.QueryDocumentsAsync(req);
166
+ return resp.Results.ToList();
167
+ }
168
+
169
+ // ── Document Operations ───────────────────────────────
170
+
171
+ public async Task<string> UpsertDocumentAsync(
172
+ string index,
173
+ string uri,
174
+ string text,
175
+ string docType = "",
176
+ Dictionary<string, object>? metadata = null)
177
+ {
178
+ var req = new UpsertDocumentRequest
179
+ {
180
+ IndexName = index,
181
+ Uri = uri,
182
+ Text = text,
183
+ DocType = docType,
184
+ };
185
+ if (metadata != null) SetMetadata(req.Metadata, metadata);
186
+ var resp = await _stub.UpsertDocumentAsync(req);
187
+ return resp.DocumentId;
188
+ }
189
+
190
+ public async Task DeleteDocumentAsync(string index, string uri)
191
+ => await _stub.DeleteDocumentAsync(new DeleteDocumentRequest { IndexName = index, Uri = uri });
192
+
193
+ public async Task<List<DocumentInfo>> ListDocumentsAsync(string index)
194
+ {
195
+ var resp = await _stub.ListDocumentsAsync(new ListDocumentsRequest { IndexName = index });
196
+ return resp.Documents.ToList();
197
+ }
198
+
199
+ // ── Stats ─────────────────────────────────────────────
200
+
201
+ public async Task<GetIndexStatsResponse> GetIndexStatsAsync(string index)
202
+ => await _stub.GetIndexStatsAsync(new GetIndexStatsRequest { IndexName = index });
203
+
204
+ public async Task<GetCatalogStatsResponse> GetCatalogStatsAsync(string index)
205
+ => await _stub.GetCatalogStatsAsync(new GetCatalogStatsRequest { IndexName = index });
206
+
207
+ // ── Lifecycle ─────────────────────────────────────────
208
+
209
+ public async Task<HealthcheckResponse> HealthcheckAsync()
210
+ => await _stub.HealthcheckAsync(new HealthcheckRequest());
211
+
212
+ public async Task ShutdownAsync()
213
+ => await _stub.ShutdownAsync(new ShutdownRequest());
214
+
215
+ // ── Helpers ───────────────────────────────────────────
216
+
217
+ private static void SetMetadata(
218
+ Google.Protobuf.Collections.MapField<string, MetadataValue> protoMap,
219
+ Dictionary<string, object> metadata)
220
+ {
221
+ foreach (var (key, value) in metadata)
222
+ {
223
+ protoMap[key] = value switch
224
+ {
225
+ bool b => new MetadataValue { BoolValue = b },
226
+ int i => new MetadataValue { NumberValue = i },
227
+ long l => new MetadataValue { NumberValue = l },
228
+ float f => new MetadataValue { NumberValue = f },
229
+ double d => new MetadataValue { NumberValue = d },
230
+ _ => new MetadataValue { StringValue = value?.ToString() ?? "" },
231
+ };
232
+ }
233
+ }
234
+ }