@based/db 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (354) hide show
  1. package/dist/lib/darwin_aarch64/include/jemalloc.h +468 -0
  2. package/dist/lib/darwin_aarch64/include/selva/selva_string.h +2 -0
  3. package/dist/lib/darwin_aarch64/libdeflate.dylib +0 -0
  4. package/dist/lib/darwin_aarch64/libjemalloc_selva.2.dylib +0 -0
  5. package/dist/lib/darwin_aarch64/libnode-v20.11.1.node +0 -0
  6. package/dist/lib/darwin_aarch64/libnode-v22.13.1.node +0 -0
  7. package/dist/lib/darwin_aarch64/libselva.dylib +0 -0
  8. package/dist/src/client/bitWise.d.ts +7 -0
  9. package/dist/src/client/bitWise.js +62 -0
  10. package/dist/src/client/bitWise.js.map +1 -0
  11. package/dist/src/client/crc32.js.map +1 -0
  12. package/dist/src/client/index.js.map +1 -0
  13. package/dist/src/client/modify/ModifyRes.js.map +1 -0
  14. package/dist/src/client/modify/alias.js.map +1 -0
  15. package/dist/src/client/modify/binary.js.map +1 -0
  16. package/dist/src/client/modify/create.js.map +1 -0
  17. package/dist/src/client/modify/fixed.js.map +1 -0
  18. package/dist/src/client/modify/hll.js.map +1 -0
  19. package/dist/src/client/modify/index.js.map +1 -0
  20. package/dist/src/client/modify/modify.js +5 -1
  21. package/dist/src/client/modify/modify.js.map +1 -0
  22. package/dist/src/client/modify/references/edge.js.map +1 -0
  23. package/dist/src/client/modify/references/reference.js.map +1 -0
  24. package/dist/src/client/modify/references/references.js.map +1 -0
  25. package/dist/src/client/modify/remove.js.map +1 -0
  26. package/dist/src/client/modify/setCursor.js.map +1 -0
  27. package/dist/src/client/modify/string.js.map +1 -0
  28. package/dist/src/client/modify/text.d.ts +4 -2
  29. package/dist/src/client/modify/text.js +1 -2
  30. package/dist/src/client/modify/text.js.map +1 -0
  31. package/dist/src/client/modify/types.js.map +1 -0
  32. package/dist/src/client/modify/update.js.map +1 -0
  33. package/dist/src/client/modify/upsert.js.map +1 -0
  34. package/dist/src/client/modify/vector.d.ts +4 -0
  35. package/dist/src/client/modify/vector.js +44 -0
  36. package/dist/src/client/modify/vector.js.map +1 -0
  37. package/dist/src/client/operations.js.map +1 -0
  38. package/dist/src/client/query/BasedDbQuery.d.ts +3 -1
  39. package/dist/src/client/query/BasedDbQuery.js +9 -7
  40. package/dist/src/client/query/BasedDbQuery.js.map +1 -0
  41. package/dist/src/client/query/BasedIterable.d.ts +2 -2
  42. package/dist/src/client/query/BasedIterable.js +10 -5
  43. package/dist/src/client/query/BasedIterable.js.map +1 -0
  44. package/dist/src/client/query/debug.js +4 -3
  45. package/dist/src/client/query/debug.js.map +1 -0
  46. package/dist/src/client/query/display.js +19 -4
  47. package/dist/src/client/query/display.js.map +1 -0
  48. package/dist/src/client/query/filter/FilterBranch.js.map +1 -0
  49. package/dist/src/client/query/filter/createFixedFilterBuffer.js.map +1 -0
  50. package/dist/src/client/query/filter/createReferenceFilter.js.map +1 -0
  51. package/dist/src/client/query/filter/createVariableFilterBuffer.d.ts +2 -1
  52. package/dist/src/client/query/filter/createVariableFilterBuffer.js +16 -7
  53. package/dist/src/client/query/filter/createVariableFilterBuffer.js.map +1 -0
  54. package/dist/src/client/query/filter/filter.js +17 -4
  55. package/dist/src/client/query/filter/filter.js.map +1 -0
  56. package/dist/src/client/query/filter/operators.js.map +1 -0
  57. package/dist/src/client/query/filter/parseFilterValue.js.map +1 -0
  58. package/dist/src/client/query/filter/primitiveFilter.d.ts +2 -1
  59. package/dist/src/client/query/filter/primitiveFilter.js +2 -2
  60. package/dist/src/client/query/filter/primitiveFilter.js.map +1 -0
  61. package/dist/src/client/query/filter/toBuffer.js.map +1 -0
  62. package/dist/src/client/query/filter/types.js.map +1 -0
  63. package/dist/src/client/query/include/props.js.map +1 -0
  64. package/dist/src/client/query/include/toBuffer.js.map +1 -0
  65. package/dist/src/client/query/include/utils.js +1 -0
  66. package/dist/src/client/query/include/utils.js.map +1 -0
  67. package/dist/src/client/query/include/walk.js +1 -0
  68. package/dist/src/client/query/include/walk.js.map +1 -0
  69. package/dist/src/client/query/query.js.map +1 -0
  70. package/dist/src/client/query/queryDef.js +2 -0
  71. package/dist/src/client/query/queryDef.js.map +1 -0
  72. package/dist/src/client/query/read/read.d.ts +2 -2
  73. package/dist/src/client/query/read/read.js +64 -38
  74. package/dist/src/client/query/read/read.js.map +1 -0
  75. package/dist/src/client/query/registerQuery.js.map +1 -0
  76. package/dist/src/client/query/search/index.js.map +1 -0
  77. package/dist/src/client/query/sort.js.map +1 -0
  78. package/dist/src/client/query/subscription/index.js +3 -3
  79. package/dist/src/client/query/subscription/index.js.map +1 -0
  80. package/dist/src/client/query/subscription/markers.js.map +1 -0
  81. package/dist/src/client/query/subscription/run.d.ts +1 -1
  82. package/dist/src/client/query/subscription/run.js +12 -2
  83. package/dist/src/client/query/subscription/run.js.map +1 -0
  84. package/dist/src/client/query/subscription/types.js.map +1 -0
  85. package/dist/src/client/query/thresholds.js.map +1 -0
  86. package/dist/src/client/query/toBuffer.js +3 -0
  87. package/dist/src/client/query/toBuffer.js.map +1 -0
  88. package/dist/src/client/query/types.d.ts +2 -0
  89. package/dist/src/client/query/types.js.map +1 -0
  90. package/dist/src/client/query/validation.js.map +1 -0
  91. package/dist/src/client/string.d.ts +3 -2
  92. package/dist/src/client/string.js +13 -7
  93. package/dist/src/client/string.js.map +1 -0
  94. package/dist/src/client/tree.js.map +1 -0
  95. package/dist/src/index.js.map +1 -0
  96. package/dist/src/native.d.ts +1 -1
  97. package/dist/src/native.js +2 -1
  98. package/dist/src/native.js.map +1 -0
  99. package/dist/src/server/csmt/draw-dot.js.map +1 -0
  100. package/dist/src/server/csmt/index.js.map +1 -0
  101. package/dist/src/server/csmt/match.js.map +1 -0
  102. package/dist/src/server/csmt/memebership-proof.js.map +1 -0
  103. package/dist/src/server/csmt/tree-utils.js.map +1 -0
  104. package/dist/src/server/csmt/tree.js.map +1 -0
  105. package/dist/src/server/csmt/types.js.map +1 -0
  106. package/dist/src/server/index.d.ts +1 -1
  107. package/dist/src/server/index.js +2 -1
  108. package/dist/src/server/index.js.map +1 -0
  109. package/dist/src/server/migrate/index.js.map +1 -0
  110. package/dist/src/server/migrate/worker.js.map +1 -0
  111. package/dist/src/server/save.js.map +1 -0
  112. package/dist/src/server/schema/schema.js.map +1 -0
  113. package/dist/src/server/schema/selvaBuffer.js +4 -3
  114. package/dist/src/server/schema/selvaBuffer.js.map +1 -0
  115. package/dist/src/server/schema/typeDef.js +4 -1
  116. package/dist/src/server/schema/typeDef.js.map +1 -0
  117. package/dist/src/server/schema/types.d.ts +3 -0
  118. package/dist/src/server/schema/types.js +5 -0
  119. package/dist/src/server/schema/types.js.map +1 -0
  120. package/dist/src/server/schema/utils.js.map +1 -0
  121. package/dist/src/server/start.js.map +1 -0
  122. package/dist/src/server/tree.js.map +1 -0
  123. package/dist/src/server/worker.js +1 -1
  124. package/dist/src/server/worker.js.map +1 -0
  125. package/dist/test/alias.d.ts +1 -0
  126. package/dist/test/alias.js +232 -0
  127. package/dist/test/alias.js.map +1 -0
  128. package/dist/test/binary.d.ts +1 -0
  129. package/dist/test/binary.js +45 -0
  130. package/dist/test/binary.js.map +1 -0
  131. package/dist/test/boolean.d.ts +1 -0
  132. package/dist/test/boolean.js +43 -0
  133. package/dist/test/boolean.js.map +1 -0
  134. package/dist/test/clientServer.d.ts +1 -0
  135. package/dist/test/clientServer.js +64 -0
  136. package/dist/test/clientServer.js.map +1 -0
  137. package/dist/test/concurrency.d.ts +1 -0
  138. package/dist/test/concurrency.js +61 -0
  139. package/dist/test/concurrency.js.map +1 -0
  140. package/dist/test/csmt.d.ts +1 -0
  141. package/dist/test/csmt.js +365 -0
  142. package/dist/test/csmt.js.map +1 -0
  143. package/dist/test/edges.d.ts +1 -0
  144. package/dist/test/edges.js +295 -0
  145. package/dist/test/edges.js.map +1 -0
  146. package/dist/test/edgesReference.d.ts +1 -0
  147. package/dist/test/edgesReference.js +179 -0
  148. package/dist/test/edgesReference.js.map +1 -0
  149. package/dist/test/edgesReferences.d.ts +1 -0
  150. package/dist/test/edgesReferences.js +472 -0
  151. package/dist/test/edgesReferences.js.map +1 -0
  152. package/dist/test/enum.d.ts +1 -0
  153. package/dist/test/enum.js +44 -0
  154. package/dist/test/enum.js.map +1 -0
  155. package/dist/test/filter.d.ts +1 -0
  156. package/dist/test/filter.js +512 -0
  157. package/dist/test/filter.js.map +1 -0
  158. package/dist/test/filterString.d.ts +1 -0
  159. package/dist/test/filterString.js +482 -0
  160. package/dist/test/filterString.js.map +1 -0
  161. package/dist/test/flush.d.ts +1 -0
  162. package/dist/test/flush.js +44 -0
  163. package/dist/test/flush.js.map +1 -0
  164. package/dist/test/hll.d.ts +1 -0
  165. package/dist/test/hll.js +32 -0
  166. package/dist/test/hll.js.map +1 -0
  167. package/dist/test/migration.d.ts +1 -0
  168. package/dist/test/migration.js +112 -0
  169. package/dist/test/migration.js.map +1 -0
  170. package/dist/test/number.d.ts +1 -0
  171. package/dist/test/number.js +172 -0
  172. package/dist/test/number.js.map +1 -0
  173. package/dist/test/range.d.ts +1 -0
  174. package/dist/test/range.js +70 -0
  175. package/dist/test/range.js.map +1 -0
  176. package/dist/test/references.d.ts +1 -0
  177. package/dist/test/references.js +350 -0
  178. package/dist/test/references.js.map +1 -0
  179. package/dist/test/referencesIndex.d.ts +1 -0
  180. package/dist/test/referencesIndex.js +151 -0
  181. package/dist/test/referencesIndex.js.map +1 -0
  182. package/dist/test/referencesModify.d.ts +1 -0
  183. package/dist/test/referencesModify.js +79 -0
  184. package/dist/test/referencesModify.js.map +1 -0
  185. package/dist/test/remove.d.ts +1 -0
  186. package/dist/test/remove.js +61 -0
  187. package/dist/test/remove.js.map +1 -0
  188. package/dist/test/rootProps.d.ts +1 -0
  189. package/dist/test/rootProps.js +53 -0
  190. package/dist/test/rootProps.js.map +1 -0
  191. package/dist/test/save.d.ts +1 -0
  192. package/dist/test/save.js +43 -0
  193. package/dist/test/save.js.map +1 -0
  194. package/dist/test/saveRange.d.ts +1 -0
  195. package/dist/test/saveRange.js +230 -0
  196. package/dist/test/saveRange.js.map +1 -0
  197. package/dist/test/search.d.ts +1 -0
  198. package/dist/test/search.js +322 -0
  199. package/dist/test/search.js.map +1 -0
  200. package/dist/test/shared/assert.d.ts +5 -0
  201. package/dist/test/shared/assert.js +75 -0
  202. package/dist/test/shared/assert.js.map +1 -0
  203. package/dist/test/shared/examples.d.ts +6 -0
  204. package/dist/test/shared/examples.js +1323 -0
  205. package/dist/test/shared/examples.js.map +1 -0
  206. package/dist/test/shared/playground.d.ts +1 -0
  207. package/dist/test/shared/playground.js +250 -0
  208. package/dist/test/shared/playground.js.map +1 -0
  209. package/dist/test/shared/test.d.ts +11 -0
  210. package/dist/test/shared/test.js +112 -0
  211. package/dist/test/shared/test.js.map +1 -0
  212. package/dist/test/shared/worker.d.ts +1 -0
  213. package/dist/test/shared/worker.js +127 -0
  214. package/dist/test/shared/worker.js.map +1 -0
  215. package/dist/test/simpleQuery.d.ts +1 -0
  216. package/dist/test/simpleQuery.js +43 -0
  217. package/dist/test/simpleQuery.js.map +1 -0
  218. package/dist/test/singleRef.d.ts +1 -0
  219. package/dist/test/singleRef.js +572 -0
  220. package/dist/test/singleRef.js.map +1 -0
  221. package/dist/test/singleRefQuery.d.ts +1 -0
  222. package/dist/test/singleRefQuery.js +136 -0
  223. package/dist/test/singleRefQuery.js.map +1 -0
  224. package/dist/test/sort.d.ts +1 -0
  225. package/dist/test/sort.js +401 -0
  226. package/dist/test/sort.js.map +1 -0
  227. package/dist/test/sortIds.d.ts +1 -0
  228. package/dist/test/sortIds.js +104 -0
  229. package/dist/test/sortIds.js.map +1 -0
  230. package/dist/test/sortNumber.d.ts +1 -0
  231. package/dist/test/sortNumber.js +76 -0
  232. package/dist/test/sortNumber.js.map +1 -0
  233. package/dist/test/sortString.d.ts +1 -0
  234. package/dist/test/sortString.js +118 -0
  235. package/dist/test/sortString.js.map +1 -0
  236. package/dist/test/string.d.ts +1 -0
  237. package/dist/test/string.js +310 -0
  238. package/dist/test/string.js.map +1 -0
  239. package/dist/test/subscription.d.ts +1 -0
  240. package/dist/test/subscription.js +336 -0
  241. package/dist/test/subscription.js.map +1 -0
  242. package/dist/test/text.d.ts +1 -0
  243. package/dist/test/text.js +87 -0
  244. package/dist/test/text.js.map +1 -0
  245. package/dist/test/timestamp.d.ts +1 -0
  246. package/dist/test/timestamp.js +50 -0
  247. package/dist/test/timestamp.js.map +1 -0
  248. package/dist/test/update.d.ts +1 -0
  249. package/dist/test/update.js +223 -0
  250. package/dist/test/update.js.map +1 -0
  251. package/dist/test/validation.d.ts +1 -0
  252. package/dist/test/validation.js +90 -0
  253. package/dist/test/validation.js.map +1 -0
  254. package/dist/test/vector.d.ts +1 -0
  255. package/dist/test/vector.js +47 -0
  256. package/dist/test/vector.js.map +1 -0
  257. package/package.json +4 -4
  258. package/dist/lib/darwin_aarch64/libnode-v20.18.1.node +0 -0
  259. package/dist/lib/darwin_aarch64/libnode-v22.13.0.node +0 -0
  260. package/dist/lib/darwin_aarch64/libnode-v22.8.0.node +0 -0
  261. package/dist/lib/linux_aarch64/include/cdefs.h +0 -317
  262. package/dist/lib/linux_aarch64/include/libdeflate.h +0 -322
  263. package/dist/lib/linux_aarch64/include/libdeflate_strings.h +0 -35
  264. package/dist/lib/linux_aarch64/include/linker_set.h +0 -109
  265. package/dist/lib/linux_aarch64/include/queue.h +0 -627
  266. package/dist/lib/linux_aarch64/include/selva/_export.h +0 -7
  267. package/dist/lib/linux_aarch64/include/selva/align.h +0 -9
  268. package/dist/lib/linux_aarch64/include/selva/backoff_timeout.h +0 -29
  269. package/dist/lib/linux_aarch64/include/selva/base64.h +0 -59
  270. package/dist/lib/linux_aarch64/include/selva/base64url.h +0 -59
  271. package/dist/lib/linux_aarch64/include/selva/bitmap.h +0 -95
  272. package/dist/lib/linux_aarch64/include/selva/crc32c.h +0 -17
  273. package/dist/lib/linux_aarch64/include/selva/ctime.h +0 -135
  274. package/dist/lib/linux_aarch64/include/selva/db.h +0 -284
  275. package/dist/lib/linux_aarch64/include/selva/endian.h +0 -301
  276. package/dist/lib/linux_aarch64/include/selva/fast_linear_search.h +0 -23
  277. package/dist/lib/linux_aarch64/include/selva/fast_memmem.h +0 -11
  278. package/dist/lib/linux_aarch64/include/selva/fast_parsei.h +0 -36
  279. package/dist/lib/linux_aarch64/include/selva/fields.h +0 -338
  280. package/dist/lib/linux_aarch64/include/selva/find.h +0 -47
  281. package/dist/lib/linux_aarch64/include/selva/lpf.h +0 -28
  282. package/dist/lib/linux_aarch64/include/selva/node_id_set.h +0 -43
  283. package/dist/lib/linux_aarch64/include/selva/poptop.h +0 -114
  284. package/dist/lib/linux_aarch64/include/selva/queue_r.h +0 -190
  285. package/dist/lib/linux_aarch64/include/selva/selva_hash128.h +0 -39
  286. package/dist/lib/linux_aarch64/include/selva/selva_lang.h +0 -105
  287. package/dist/lib/linux_aarch64/include/selva/selva_math.h +0 -37
  288. package/dist/lib/linux_aarch64/include/selva/selva_string.h +0 -672
  289. package/dist/lib/linux_aarch64/include/selva/sort.h +0 -119
  290. package/dist/lib/linux_aarch64/include/selva/strsearch.h +0 -43
  291. package/dist/lib/linux_aarch64/include/selva/timestamp.h +0 -25
  292. package/dist/lib/linux_aarch64/include/selva/traverse.h +0 -65
  293. package/dist/lib/linux_aarch64/include/selva/types.h +0 -110
  294. package/dist/lib/linux_aarch64/include/selva/vector.h +0 -14
  295. package/dist/lib/linux_aarch64/include/selva/worker_ctx.h +0 -13
  296. package/dist/lib/linux_aarch64/include/selva_error.h +0 -137
  297. package/dist/lib/linux_aarch64/include/selva_lang_code.h +0 -157
  298. package/dist/lib/linux_aarch64/include/tree.h +0 -852
  299. package/dist/lib/linux_aarch64/libdeflate.so +0 -0
  300. package/dist/lib/linux_aarch64/libjemalloc_selva.so.2 +0 -0
  301. package/dist/lib/linux_aarch64/libnode-v20.11.1.node +0 -0
  302. package/dist/lib/linux_aarch64/libnode-v20.18.1.node +0 -0
  303. package/dist/lib/linux_aarch64/libnode-v22.13.0.node +0 -0
  304. package/dist/lib/linux_aarch64/libselva.so +0 -0
  305. package/dist/lib/linux_aarch64/libxxhash.so +0 -0
  306. package/dist/lib/linux_aarch64/libxxhash.so.0 +0 -0
  307. package/dist/lib/linux_aarch64/libxxhash.so.0.8.2 +0 -0
  308. package/dist/lib/linux_x86_64/include/cdefs.h +0 -317
  309. package/dist/lib/linux_x86_64/include/libdeflate.h +0 -322
  310. package/dist/lib/linux_x86_64/include/libdeflate_strings.h +0 -35
  311. package/dist/lib/linux_x86_64/include/linker_set.h +0 -109
  312. package/dist/lib/linux_x86_64/include/queue.h +0 -627
  313. package/dist/lib/linux_x86_64/include/selva/_export.h +0 -7
  314. package/dist/lib/linux_x86_64/include/selva/align.h +0 -9
  315. package/dist/lib/linux_x86_64/include/selva/backoff_timeout.h +0 -29
  316. package/dist/lib/linux_x86_64/include/selva/base64.h +0 -59
  317. package/dist/lib/linux_x86_64/include/selva/base64url.h +0 -59
  318. package/dist/lib/linux_x86_64/include/selva/bitmap.h +0 -95
  319. package/dist/lib/linux_x86_64/include/selva/crc32c.h +0 -17
  320. package/dist/lib/linux_x86_64/include/selva/ctime.h +0 -135
  321. package/dist/lib/linux_x86_64/include/selva/db.h +0 -284
  322. package/dist/lib/linux_x86_64/include/selva/endian.h +0 -301
  323. package/dist/lib/linux_x86_64/include/selva/fast_linear_search.h +0 -23
  324. package/dist/lib/linux_x86_64/include/selva/fast_memmem.h +0 -11
  325. package/dist/lib/linux_x86_64/include/selva/fast_parsei.h +0 -36
  326. package/dist/lib/linux_x86_64/include/selva/fields.h +0 -338
  327. package/dist/lib/linux_x86_64/include/selva/find.h +0 -47
  328. package/dist/lib/linux_x86_64/include/selva/lpf.h +0 -28
  329. package/dist/lib/linux_x86_64/include/selva/node_id_set.h +0 -43
  330. package/dist/lib/linux_x86_64/include/selva/poptop.h +0 -114
  331. package/dist/lib/linux_x86_64/include/selva/queue_r.h +0 -190
  332. package/dist/lib/linux_x86_64/include/selva/selva_hash128.h +0 -39
  333. package/dist/lib/linux_x86_64/include/selva/selva_lang.h +0 -105
  334. package/dist/lib/linux_x86_64/include/selva/selva_math.h +0 -37
  335. package/dist/lib/linux_x86_64/include/selva/selva_string.h +0 -672
  336. package/dist/lib/linux_x86_64/include/selva/sort.h +0 -119
  337. package/dist/lib/linux_x86_64/include/selva/strsearch.h +0 -43
  338. package/dist/lib/linux_x86_64/include/selva/timestamp.h +0 -25
  339. package/dist/lib/linux_x86_64/include/selva/traverse.h +0 -65
  340. package/dist/lib/linux_x86_64/include/selva/types.h +0 -110
  341. package/dist/lib/linux_x86_64/include/selva/vector.h +0 -14
  342. package/dist/lib/linux_x86_64/include/selva/worker_ctx.h +0 -13
  343. package/dist/lib/linux_x86_64/include/selva_error.h +0 -137
  344. package/dist/lib/linux_x86_64/include/selva_lang_code.h +0 -157
  345. package/dist/lib/linux_x86_64/include/tree.h +0 -852
  346. package/dist/lib/linux_x86_64/libdeflate.so +0 -0
  347. package/dist/lib/linux_x86_64/libjemalloc_selva.so.2 +0 -0
  348. package/dist/lib/linux_x86_64/libnode-v20.11.1.node +0 -0
  349. package/dist/lib/linux_x86_64/libnode-v20.18.1.node +0 -0
  350. package/dist/lib/linux_x86_64/libnode-v22.13.0.node +0 -0
  351. package/dist/lib/linux_x86_64/libselva.so +0 -0
  352. package/dist/lib/linux_x86_64/libxxhash.so +0 -0
  353. package/dist/lib/linux_x86_64/libxxhash.so.0 +0 -0
  354. package/dist/lib/linux_x86_64/libxxhash.so.0.8.2 +0 -0
@@ -0,0 +1,295 @@
1
+ import { BasedDb } from '../src/index.js';
2
+ import test from './shared/test.js';
3
+ import { deepEqual } from './shared/assert.js';
4
+ import { italy, sentence } from './shared/examples.js';
5
+ await test('multiple references', async (t) => {
6
+ const db = new BasedDb({
7
+ path: t.tmp,
8
+ });
9
+ t.after(() => {
10
+ return db.destroy();
11
+ });
12
+ await db.start({ clean: true });
13
+ await db.putSchema({
14
+ types: {
15
+ user: {
16
+ props: {
17
+ email: 'string',
18
+ name: 'string',
19
+ smurp: 'string',
20
+ articles: {
21
+ items: {
22
+ ref: 'article',
23
+ prop: 'contributors',
24
+ },
25
+ },
26
+ location: {
27
+ props: {
28
+ long: 'number',
29
+ lat: 'number',
30
+ },
31
+ },
32
+ },
33
+ },
34
+ country: {
35
+ props: {
36
+ code: { type: 'string', maxBytes: 2 },
37
+ name: 'string',
38
+ },
39
+ },
40
+ article: {
41
+ props: {
42
+ name: 'string',
43
+ contributors: {
44
+ type: 'references',
45
+ items: {
46
+ ref: 'user',
47
+ prop: 'articles',
48
+ $friend: {
49
+ ref: 'user',
50
+ },
51
+ $countries: {
52
+ items: {
53
+ ref: 'country',
54
+ },
55
+ },
56
+ $file: 'binary',
57
+ $lang: 'string',
58
+ $bigString: 'string',
59
+ $role: { enum: ['writer', 'editor'] },
60
+ $rating: 'uint32',
61
+ $on: 'boolean',
62
+ },
63
+ },
64
+ },
65
+ },
66
+ },
67
+ });
68
+ const mrSnurp = db.create('user', {
69
+ name: 'Mr snurp',
70
+ location: {
71
+ long: 42.12,
72
+ lat: 32.14,
73
+ },
74
+ });
75
+ const mrYur = db.create('user', {
76
+ name: 'Mr Yur',
77
+ });
78
+ const mrDerp = db.create('user', {
79
+ name: 'Mr Derp',
80
+ });
81
+ await db.drain();
82
+ await db.create('article', {
83
+ name: 'The wonders of Strudel',
84
+ contributors: [
85
+ {
86
+ id: mrSnurp,
87
+ $lang: 'en',
88
+ $rating: 5,
89
+ $role: 'writer',
90
+ $on: true,
91
+ $file: new Uint8Array([1, 2, 3, 4]),
92
+ },
93
+ ],
94
+ });
95
+ await db.create('article', {
96
+ name: 'Italy',
97
+ contributors: [
98
+ {
99
+ id: mrSnurp,
100
+ $bigString: italy,
101
+ },
102
+ ],
103
+ });
104
+ deepEqual((await db
105
+ .query('article')
106
+ .include('contributors.$role', 'contributors.$bigString')
107
+ .get()).toObject(), [
108
+ {
109
+ id: 1,
110
+ contributors: [{ id: 1, $role: 'writer' }],
111
+ },
112
+ {
113
+ id: 2,
114
+ contributors: [{ id: 1, $bigString: italy }],
115
+ },
116
+ ]);
117
+ deepEqual((await db.query('article').include('contributors.$rating').get()).toObject(), [
118
+ {
119
+ id: 1,
120
+ contributors: [{ id: 1, $rating: 5 }],
121
+ },
122
+ {
123
+ id: 2,
124
+ contributors: [{ id: 1 }],
125
+ },
126
+ ]);
127
+ deepEqual((await db.query('article').include('contributors.$lang').get()).toObject(), [
128
+ {
129
+ id: 1,
130
+ contributors: [{ id: 1, $lang: 'en' }],
131
+ },
132
+ {
133
+ id: 2,
134
+ contributors: [{ id: 1 }],
135
+ },
136
+ ]);
137
+ deepEqual((await db.query('article').include('contributors.$on').get()).toObject(), [
138
+ {
139
+ id: 1,
140
+ contributors: [{ id: 1, $on: true }],
141
+ },
142
+ {
143
+ id: 2,
144
+ contributors: [{ id: 1 }],
145
+ },
146
+ ]);
147
+ deepEqual((await db.query('article').include('contributors.$file').get()).toObject(), [
148
+ {
149
+ id: 1,
150
+ contributors: [{ id: 1, $file: new Uint8Array([1, 2, 3, 4]) }],
151
+ },
152
+ {
153
+ id: 2,
154
+ contributors: [{ id: 1 }],
155
+ },
156
+ ], 'Buffer edge value');
157
+ let lastArticle = 0;
158
+ for (let i = 0; i < 3; i++) {
159
+ lastArticle = await db.create('article', {
160
+ name: 'The wonders of Strudel ' + i,
161
+ contributors: [
162
+ { id: mrYur, $role: 'editor', $rating: 5 },
163
+ mrDerp,
164
+ mrSnurp,
165
+ ],
166
+ });
167
+ }
168
+ deepEqual((await db
169
+ .query('article')
170
+ .include((s) => s('contributors').filter('$role', '=', 'writer').include('$role'))
171
+ .get()).toObject(), [
172
+ {
173
+ id: 1,
174
+ contributors: [
175
+ {
176
+ id: 1,
177
+ $role: 'writer',
178
+ },
179
+ ],
180
+ },
181
+ { id: 2, contributors: [] },
182
+ { id: 3, contributors: [] },
183
+ { id: 4, contributors: [] },
184
+ { id: 5, contributors: [] },
185
+ ]);
186
+ deepEqual((await db
187
+ .query('article')
188
+ .include((s) => s('contributors')
189
+ .filter('$bigString', '=', italy)
190
+ .include('$bigString'))
191
+ .get()).toObject(), [
192
+ {
193
+ id: 1,
194
+ contributors: [],
195
+ },
196
+ { id: 2, contributors: [{ id: 1, $bigString: italy }] },
197
+ { id: 3, contributors: [] },
198
+ { id: 4, contributors: [] },
199
+ { id: 5, contributors: [] },
200
+ ]);
201
+ });
202
+ await test('single reference', async (t) => {
203
+ const db = new BasedDb({
204
+ path: t.tmp,
205
+ });
206
+ await db.start({ clean: true });
207
+ await db.putSchema({
208
+ types: {
209
+ user: {
210
+ props: {
211
+ name: 'string',
212
+ derp: 'uint8',
213
+ articles: {
214
+ items: {
215
+ ref: 'article',
216
+ prop: 'author',
217
+ },
218
+ },
219
+ },
220
+ },
221
+ article: {
222
+ props: {
223
+ name: 'string',
224
+ author: {
225
+ type: 'reference',
226
+ ref: 'user',
227
+ prop: 'articles',
228
+ $role: ['writer', 'editor', 'boss'],
229
+ $on: 'boolean',
230
+ $msg: 'string',
231
+ },
232
+ },
233
+ },
234
+ },
235
+ });
236
+ const mrDrol = await db.create('user', {
237
+ name: 'Mr drol',
238
+ });
239
+ await db.create('article', {
240
+ name: 'This is a nice article',
241
+ author: { id: mrDrol, $role: 'boss' },
242
+ });
243
+ deepEqual((await db.query('article').include('author.$role', '*').get()).toObject(), [
244
+ {
245
+ id: 1,
246
+ name: 'This is a nice article',
247
+ author: {
248
+ id: 1,
249
+ $role: 'boss',
250
+ },
251
+ },
252
+ ]);
253
+ await db.create('article', {
254
+ name: 'This is a nice article with mr drol as writer',
255
+ author: { id: mrDrol, $role: 'writer' },
256
+ });
257
+ deepEqual((await db
258
+ .query('article')
259
+ .include('author.$role', '*')
260
+ .filter('author.$role', '=', 'boss')
261
+ .get()).toObject(), [
262
+ {
263
+ id: 1,
264
+ name: 'This is a nice article',
265
+ author: {
266
+ id: 1,
267
+ $role: 'boss',
268
+ },
269
+ },
270
+ ]);
271
+ await db.create('article', {
272
+ name: 'Power article',
273
+ author: { id: mrDrol, $msg: sentence },
274
+ });
275
+ deepEqual((await db.query('article').include('author.$msg', '*').get()).toObject(), [
276
+ { id: 1, name: 'This is a nice article', author: { id: 1 } },
277
+ {
278
+ id: 2,
279
+ name: 'This is a nice article with mr drol as writer',
280
+ author: { id: 1 },
281
+ },
282
+ {
283
+ id: 3,
284
+ name: 'Power article',
285
+ author: {
286
+ id: 1,
287
+ $msg: sentence,
288
+ },
289
+ },
290
+ ]);
291
+ t.after(() => {
292
+ return db.destroy();
293
+ });
294
+ });
295
+ //# sourceMappingURL=edges.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edges.js","sourceRoot":"","sources":["../../test/edges.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,179 @@
1
+ import { BasedDb } from '../src/index.js';
2
+ import test from './shared/test.js';
3
+ import { deepEqual } from './shared/assert.js';
4
+ await test('multi reference', async (t) => {
5
+ const db = new BasedDb({
6
+ path: t.tmp,
7
+ });
8
+ t.after(() => {
9
+ return db.destroy();
10
+ });
11
+ await db.start({ clean: true });
12
+ await db.putSchema({
13
+ types: {
14
+ user: {
15
+ props: {
16
+ name: 'string',
17
+ articles: {
18
+ items: {
19
+ ref: 'article',
20
+ prop: 'contributor',
21
+ },
22
+ },
23
+ },
24
+ },
25
+ country: {
26
+ props: {
27
+ code: { type: 'string', maxBytes: 2 },
28
+ name: 'string',
29
+ },
30
+ },
31
+ article: {
32
+ props: {
33
+ name: 'string',
34
+ contributor: {
35
+ ref: 'user',
36
+ prop: 'articles',
37
+ $friend: {
38
+ ref: 'user',
39
+ },
40
+ },
41
+ },
42
+ },
43
+ },
44
+ });
45
+ const mrSnurp = db.create('user', {
46
+ name: 'Mr snurp',
47
+ });
48
+ const mrYur = db.create('user', {
49
+ name: 'Mr Yur',
50
+ });
51
+ await db.drain();
52
+ await db.create('article', {
53
+ name: 'The wonders of Strudel',
54
+ contributor: {
55
+ id: mrSnurp,
56
+ $friend: mrYur, // id 5
57
+ },
58
+ });
59
+ deepEqual(await db
60
+ .query('article')
61
+ .include('contributor.$friend')
62
+ .get()
63
+ .then((v) => v.toObject()), [
64
+ {
65
+ id: 1,
66
+ contributor: { id: 1, $friend: { id: 2, name: 'Mr Yur' } },
67
+ },
68
+ ]);
69
+ });
70
+ await test('multiple references', async (t) => {
71
+ const db = new BasedDb({
72
+ path: t.tmp,
73
+ });
74
+ t.after(() => {
75
+ return db.destroy();
76
+ });
77
+ await db.start({ clean: true });
78
+ await db.putSchema({
79
+ types: {
80
+ country: {
81
+ props: {
82
+ code: { type: 'string', maxBytes: 2 },
83
+ name: 'string',
84
+ users: { items: { ref: 'user', prop: 'nationality' } },
85
+ },
86
+ },
87
+ user: {
88
+ props: {
89
+ name: 'string',
90
+ nationality: { ref: 'country', prop: 'users' },
91
+ articles: {
92
+ items: {
93
+ ref: 'article',
94
+ prop: 'contributor',
95
+ },
96
+ },
97
+ },
98
+ },
99
+ article: {
100
+ props: {
101
+ name: 'string',
102
+ contributor: {
103
+ type: 'reference',
104
+ ref: 'user',
105
+ prop: 'articles',
106
+ $countries: {
107
+ items: {
108
+ ref: 'country',
109
+ },
110
+ },
111
+ },
112
+ },
113
+ },
114
+ },
115
+ });
116
+ const uk = await db.create('country', {
117
+ name: 'United Kingdom',
118
+ code: 'uk',
119
+ });
120
+ const de = await db.create('country', {
121
+ name: 'Germany',
122
+ code: 'de',
123
+ });
124
+ const nl = await db.create('country', {
125
+ name: 'Netherlands',
126
+ code: 'nl',
127
+ });
128
+ const mrDerp = await db.create('user', {
129
+ name: 'Mr Derp',
130
+ nationality: nl,
131
+ });
132
+ const mrFlap = await db.create('user', {
133
+ name: 'Mr Falp',
134
+ nationality: de,
135
+ });
136
+ await db.create('article', {
137
+ name: 'The wonders of Strudel',
138
+ contributor: {
139
+ id: mrDerp,
140
+ $countries: [uk, de],
141
+ },
142
+ });
143
+ await db.create('article', {
144
+ name: 'The secrets of sourkraut',
145
+ contributor: {
146
+ id: mrFlap,
147
+ $countries: [nl, de],
148
+ },
149
+ });
150
+ deepEqual(await db
151
+ .query('article')
152
+ .include('name', 'contributor.$countries')
153
+ .get()
154
+ .then((v) => v.toObject()), [
155
+ {
156
+ id: 1,
157
+ name: 'The wonders of Strudel',
158
+ contributor: {
159
+ id: 1,
160
+ $countries: [
161
+ { id: 1, code: 'uk', name: 'United Kingdom' },
162
+ { id: 2, code: 'de', name: 'Germany' },
163
+ ],
164
+ },
165
+ },
166
+ {
167
+ id: 2,
168
+ name: 'The secrets of sourkraut',
169
+ contributor: {
170
+ id: 2,
171
+ $countries: [
172
+ { id: 3, code: 'nl', name: 'Netherlands' },
173
+ { id: 2, code: 'de', name: 'Germany' },
174
+ ],
175
+ },
176
+ },
177
+ ]);
178
+ });
179
+ //# sourceMappingURL=edgesReference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edgesReference.js","sourceRoot":"","sources":["../../test/edgesReference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};