@procedures/client 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +5 -5
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/adapters/http/server/transport.d.ts.map +1 -1
  5. package/dist/adapters/http/server/transport.js +1 -0
  6. package/dist/adapters/http/server/transport.js.map +1 -1
  7. package/dist/browser.d.ts +6 -3
  8. package/dist/browser.d.ts.map +1 -1
  9. package/dist/browser.js +4 -1
  10. package/dist/browser.js.map +1 -1
  11. package/dist/client/client.d.ts +9 -1
  12. package/dist/client/client.d.ts.map +1 -1
  13. package/dist/client/client.js +27 -6
  14. package/dist/client/client.js.map +1 -1
  15. package/dist/client/types.d.ts +9 -0
  16. package/dist/client/types.d.ts.map +1 -1
  17. package/dist/client/types.js.map +1 -1
  18. package/dist/procedures/capability.d.ts +111 -0
  19. package/dist/procedures/capability.d.ts.map +1 -0
  20. package/dist/procedures/capability.js +269 -0
  21. package/dist/procedures/capability.js.map +1 -0
  22. package/dist/procedures/cli/discover.d.ts +3 -3
  23. package/dist/procedures/cli/discover.js +3 -3
  24. package/dist/procedures/cli/index.js +5 -3
  25. package/dist/procedures/cli/index.js.map +1 -1
  26. package/dist/procedures/cli/init.js +1 -1
  27. package/dist/procedures/collection/procedures.d.ts.map +1 -1
  28. package/dist/procedures/collection/procedures.js +12 -0
  29. package/dist/procedures/collection/procedures.js.map +1 -1
  30. package/dist/procedures/core/array.d.ts.map +1 -1
  31. package/dist/procedures/core/array.js +3 -1
  32. package/dist/procedures/core/array.js.map +1 -1
  33. package/dist/procedures/core/comparison.d.ts.map +1 -1
  34. package/dist/procedures/core/comparison.js +3 -1
  35. package/dist/procedures/core/comparison.js.map +1 -1
  36. package/dist/procedures/core/index.d.ts.map +1 -1
  37. package/dist/procedures/core/index.js +5 -2
  38. package/dist/procedures/core/index.js.map +1 -1
  39. package/dist/procedures/core/math.d.ts.map +1 -1
  40. package/dist/procedures/core/math.js +3 -1
  41. package/dist/procedures/core/math.js.map +1 -1
  42. package/dist/procedures/core/meta.d.ts.map +1 -1
  43. package/dist/procedures/core/meta.js +11 -6
  44. package/dist/procedures/core/meta.js.map +1 -1
  45. package/dist/procedures/core/object.d.ts.map +1 -1
  46. package/dist/procedures/core/object.js +3 -1
  47. package/dist/procedures/core/object.js.map +1 -1
  48. package/dist/procedures/core/string.d.ts.map +1 -1
  49. package/dist/procedures/core/string.js +3 -1
  50. package/dist/procedures/core/string.js.map +1 -1
  51. package/dist/procedures/core/type.d.ts.map +1 -1
  52. package/dist/procedures/core/type.js +3 -1
  53. package/dist/procedures/core/type.js.map +1 -1
  54. package/dist/procedures/define-procedure.d.ts.map +1 -1
  55. package/dist/procedures/define-procedure.js +5 -4
  56. package/dist/procedures/define-procedure.js.map +1 -1
  57. package/dist/procedures/effects.d.ts +15 -0
  58. package/dist/procedures/effects.d.ts.map +1 -0
  59. package/dist/procedures/effects.js +18 -0
  60. package/dist/procedures/effects.js.map +1 -0
  61. package/dist/procedures/index.d.ts +5 -2
  62. package/dist/procedures/index.d.ts.map +1 -1
  63. package/dist/procedures/index.js +8 -23
  64. package/dist/procedures/index.js.map +1 -1
  65. package/dist/procedures/interceptors.d.ts.map +1 -1
  66. package/dist/procedures/interceptors.js +2 -1
  67. package/dist/procedures/interceptors.js.map +1 -1
  68. package/dist/procedures/invoke.d.ts +36 -3
  69. package/dist/procedures/invoke.d.ts.map +1 -1
  70. package/dist/procedures/invoke.js +78 -12
  71. package/dist/procedures/invoke.js.map +1 -1
  72. package/dist/procedures/module.d.ts +13 -8
  73. package/dist/procedures/module.d.ts.map +1 -1
  74. package/dist/procedures/module.js +19 -9
  75. package/dist/procedures/module.js.map +1 -1
  76. package/dist/procedures/types.d.ts +100 -2
  77. package/dist/procedures/types.d.ts.map +1 -1
  78. package/dist/procedures/types.js.map +1 -1
  79. package/dist/register.d.ts +8 -0
  80. package/dist/register.d.ts.map +1 -0
  81. package/dist/register.js +9 -0
  82. package/dist/register.js.map +1 -0
  83. package/dist/server/host-policy.d.ts +24 -2
  84. package/dist/server/host-policy.d.ts.map +1 -1
  85. package/dist/server/host-policy.js +22 -0
  86. package/dist/server/host-policy.js.map +1 -1
  87. package/dist/server/procedure-server.d.ts +16 -2
  88. package/dist/server/procedure-server.d.ts.map +1 -1
  89. package/dist/server/procedure-server.js +26 -1
  90. package/dist/server/procedure-server.js.map +1 -1
  91. package/package.json +6 -4
  92. package/src/adapters/http/server/transport.ts +1 -0
  93. package/src/browser.ts +29 -0
  94. package/src/client/client.ts +33 -6
  95. package/src/client/types.ts +11 -0
  96. package/src/procedures/capability.ts +333 -0
  97. package/src/procedures/cli/discover.ts +3 -3
  98. package/src/procedures/cli/index.ts +5 -3
  99. package/src/procedures/cli/init.ts +1 -1
  100. package/src/procedures/collection/procedures.ts +12 -0
  101. package/src/procedures/core/array.ts +3 -1
  102. package/src/procedures/core/comparison.ts +3 -1
  103. package/src/procedures/core/index.ts +5 -2
  104. package/src/procedures/core/math.ts +3 -1
  105. package/src/procedures/core/meta.ts +11 -6
  106. package/src/procedures/core/object.ts +3 -1
  107. package/src/procedures/core/string.ts +3 -1
  108. package/src/procedures/core/type.ts +3 -1
  109. package/src/procedures/define-procedure.ts +5 -4
  110. package/src/procedures/effects.ts +24 -0
  111. package/src/procedures/index.ts +33 -22
  112. package/src/procedures/interceptors.ts +2 -1
  113. package/src/procedures/invoke.ts +112 -13
  114. package/src/procedures/module.ts +19 -9
  115. package/src/procedures/types.ts +113 -2
  116. package/src/register.ts +10 -0
  117. package/src/server/host-policy.ts +44 -2
  118. package/src/server/procedure-server.ts +44 -2
  119. package/dist/client/middleware/batching.d.ts +0 -102
  120. package/dist/client/middleware/batching.d.ts.map +0 -1
  121. package/dist/client/middleware/batching.js +0 -245
  122. package/dist/client/middleware/batching.js.map +0 -1
  123. package/dist/collections/async/async-queue.d.ts +0 -144
  124. package/dist/collections/async/async-queue.d.ts.map +0 -1
  125. package/dist/collections/async/async-queue.js +0 -347
  126. package/dist/collections/async/async-queue.js.map +0 -1
  127. package/dist/collections/async/channels.d.ts +0 -188
  128. package/dist/collections/async/channels.d.ts.map +0 -1
  129. package/dist/collections/async/channels.js +0 -312
  130. package/dist/collections/async/channels.js.map +0 -1
  131. package/dist/collections/behaviors/bounded.d.ts +0 -79
  132. package/dist/collections/behaviors/bounded.d.ts.map +0 -1
  133. package/dist/collections/behaviors/bounded.js +0 -384
  134. package/dist/collections/behaviors/bounded.js.map +0 -1
  135. package/dist/collections/behaviors/evented.d.ts +0 -154
  136. package/dist/collections/behaviors/evented.d.ts.map +0 -1
  137. package/dist/collections/behaviors/evented.js +0 -299
  138. package/dist/collections/behaviors/evented.js.map +0 -1
  139. package/dist/collections/behaviors/lru.d.ts +0 -84
  140. package/dist/collections/behaviors/lru.d.ts.map +0 -1
  141. package/dist/collections/behaviors/lru.js +0 -330
  142. package/dist/collections/behaviors/lru.js.map +0 -1
  143. package/dist/collections/behaviors/readonly.d.ts +0 -73
  144. package/dist/collections/behaviors/readonly.d.ts.map +0 -1
  145. package/dist/collections/behaviors/readonly.js +0 -158
  146. package/dist/collections/behaviors/readonly.js.map +0 -1
  147. package/dist/collections/behaviors/safe.d.ts +0 -163
  148. package/dist/collections/behaviors/safe.d.ts.map +0 -1
  149. package/dist/collections/behaviors/safe.js +0 -172
  150. package/dist/collections/behaviors/safe.js.map +0 -1
  151. package/dist/collections/behaviors/synchronized.d.ts +0 -88
  152. package/dist/collections/behaviors/synchronized.d.ts.map +0 -1
  153. package/dist/collections/behaviors/synchronized.js +0 -294
  154. package/dist/collections/behaviors/synchronized.js.map +0 -1
  155. package/dist/collections/behaviors/ttl.d.ts +0 -118
  156. package/dist/collections/behaviors/ttl.d.ts.map +0 -1
  157. package/dist/collections/behaviors/ttl.js +0 -338
  158. package/dist/collections/behaviors/ttl.js.map +0 -1
  159. package/dist/collections/core/effects.d.ts +0 -176
  160. package/dist/collections/core/effects.d.ts.map +0 -1
  161. package/dist/collections/core/effects.js +0 -180
  162. package/dist/collections/core/effects.js.map +0 -1
  163. package/dist/collections/core/events.d.ts +0 -192
  164. package/dist/collections/core/events.d.ts.map +0 -1
  165. package/dist/collections/core/events.js +0 -291
  166. package/dist/collections/core/events.js.map +0 -1
  167. package/dist/collections/core/middleware.d.ts +0 -231
  168. package/dist/collections/core/middleware.d.ts.map +0 -1
  169. package/dist/collections/core/middleware.js +0 -161
  170. package/dist/collections/core/middleware.js.map +0 -1
  171. package/dist/collections/core/policies.d.ts +0 -220
  172. package/dist/collections/core/policies.d.ts.map +0 -1
  173. package/dist/collections/core/policies.js +0 -48
  174. package/dist/collections/core/policies.js.map +0 -1
  175. package/dist/collections/core/traits.d.ts +0 -142
  176. package/dist/collections/core/traits.d.ts.map +0 -1
  177. package/dist/collections/core/traits.js +0 -8
  178. package/dist/collections/core/traits.js.map +0 -1
  179. package/dist/collections/examples.d.ts +0 -13
  180. package/dist/collections/examples.d.ts.map +0 -1
  181. package/dist/collections/examples.js +0 -302
  182. package/dist/collections/examples.js.map +0 -1
  183. package/dist/collections/fx/collectors.d.ts +0 -190
  184. package/dist/collections/fx/collectors.d.ts.map +0 -1
  185. package/dist/collections/fx/collectors.js +0 -369
  186. package/dist/collections/fx/collectors.js.map +0 -1
  187. package/dist/collections/fx/iter.d.ts +0 -166
  188. package/dist/collections/fx/iter.d.ts.map +0 -1
  189. package/dist/collections/fx/iter.js +0 -421
  190. package/dist/collections/fx/iter.js.map +0 -1
  191. package/dist/collections/impl/array-deque.d.ts +0 -107
  192. package/dist/collections/impl/array-deque.d.ts.map +0 -1
  193. package/dist/collections/impl/array-deque.js +0 -381
  194. package/dist/collections/impl/array-deque.js.map +0 -1
  195. package/dist/collections/impl/array-list.d.ts +0 -101
  196. package/dist/collections/impl/array-list.d.ts.map +0 -1
  197. package/dist/collections/impl/array-list.js +0 -387
  198. package/dist/collections/impl/array-list.js.map +0 -1
  199. package/dist/collections/impl/hash-map.d.ts +0 -141
  200. package/dist/collections/impl/hash-map.d.ts.map +0 -1
  201. package/dist/collections/impl/hash-map.js +0 -450
  202. package/dist/collections/impl/hash-map.js.map +0 -1
  203. package/dist/collections/impl/hash-set.d.ts +0 -125
  204. package/dist/collections/impl/hash-set.d.ts.map +0 -1
  205. package/dist/collections/impl/hash-set.js +0 -264
  206. package/dist/collections/impl/hash-set.js.map +0 -1
  207. package/dist/collections/impl/linked-hash-map.d.ts +0 -141
  208. package/dist/collections/impl/linked-hash-map.d.ts.map +0 -1
  209. package/dist/collections/impl/linked-hash-map.js +0 -472
  210. package/dist/collections/impl/linked-hash-map.js.map +0 -1
  211. package/dist/collections/impl/linked-list.d.ts +0 -109
  212. package/dist/collections/impl/linked-list.d.ts.map +0 -1
  213. package/dist/collections/impl/linked-list.js +0 -491
  214. package/dist/collections/impl/linked-list.js.map +0 -1
  215. package/dist/collections/impl/priority-queue.d.ts +0 -134
  216. package/dist/collections/impl/priority-queue.d.ts.map +0 -1
  217. package/dist/collections/impl/priority-queue.js +0 -336
  218. package/dist/collections/impl/priority-queue.js.map +0 -1
  219. package/dist/collections/impl/tree-map.d.ts +0 -146
  220. package/dist/collections/impl/tree-map.d.ts.map +0 -1
  221. package/dist/collections/impl/tree-map.js +0 -781
  222. package/dist/collections/impl/tree-map.js.map +0 -1
  223. package/dist/collections/impl/tree-set.d.ts +0 -112
  224. package/dist/collections/impl/tree-set.d.ts.map +0 -1
  225. package/dist/collections/impl/tree-set.js +0 -374
  226. package/dist/collections/impl/tree-set.js.map +0 -1
  227. package/dist/collections/index.d.ts +0 -105
  228. package/dist/collections/index.d.ts.map +0 -1
  229. package/dist/collections/index.js +0 -135
  230. package/dist/collections/index.js.map +0 -1
  231. package/dist/collections/interfaces/collection.d.ts +0 -119
  232. package/dist/collections/interfaces/collection.d.ts.map +0 -1
  233. package/dist/collections/interfaces/collection.js +0 -8
  234. package/dist/collections/interfaces/collection.js.map +0 -1
  235. package/dist/collections/interfaces/list.d.ts +0 -247
  236. package/dist/collections/interfaces/list.d.ts.map +0 -1
  237. package/dist/collections/interfaces/list.js +0 -8
  238. package/dist/collections/interfaces/list.js.map +0 -1
  239. package/dist/collections/interfaces/map.d.ts +0 -344
  240. package/dist/collections/interfaces/map.d.ts.map +0 -1
  241. package/dist/collections/interfaces/map.js +0 -8
  242. package/dist/collections/interfaces/map.js.map +0 -1
  243. package/dist/collections/interfaces/queue.d.ts +0 -304
  244. package/dist/collections/interfaces/queue.d.ts.map +0 -1
  245. package/dist/collections/interfaces/queue.js +0 -8
  246. package/dist/collections/interfaces/queue.js.map +0 -1
  247. package/dist/collections/interfaces/set.d.ts +0 -137
  248. package/dist/collections/interfaces/set.d.ts.map +0 -1
  249. package/dist/collections/interfaces/set.js +0 -8
  250. package/dist/collections/interfaces/set.js.map +0 -1
  251. package/dist/collections/storage/api.d.ts +0 -109
  252. package/dist/collections/storage/api.d.ts.map +0 -1
  253. package/dist/collections/storage/api.js +0 -182
  254. package/dist/collections/storage/api.js.map +0 -1
  255. package/dist/collections/storage/hybrid.d.ts +0 -164
  256. package/dist/collections/storage/hybrid.d.ts.map +0 -1
  257. package/dist/collections/storage/hybrid.js +0 -416
  258. package/dist/collections/storage/hybrid.js.map +0 -1
  259. package/dist/collections/storage/index.d.ts +0 -16
  260. package/dist/collections/storage/index.d.ts.map +0 -1
  261. package/dist/collections/storage/index.js +0 -13
  262. package/dist/collections/storage/index.js.map +0 -1
  263. package/dist/collections/storage/interface.d.ts +0 -141
  264. package/dist/collections/storage/interface.d.ts.map +0 -1
  265. package/dist/collections/storage/interface.js +0 -23
  266. package/dist/collections/storage/interface.js.map +0 -1
  267. package/dist/collections/storage/memory.d.ts +0 -68
  268. package/dist/collections/storage/memory.d.ts.map +0 -1
  269. package/dist/collections/storage/memory.js +0 -154
  270. package/dist/collections/storage/memory.js.map +0 -1
  271. package/dist/collections/utils/defaults.d.ts +0 -135
  272. package/dist/collections/utils/defaults.d.ts.map +0 -1
  273. package/dist/collections/utils/defaults.js +0 -322
  274. package/dist/collections/utils/defaults.js.map +0 -1
  275. package/dist/collections/utils/factories.d.ts +0 -144
  276. package/dist/collections/utils/factories.d.ts.map +0 -1
  277. package/dist/collections/utils/factories.js +0 -293
  278. package/dist/collections/utils/factories.js.map +0 -1
  279. package/dist/collections/utils/helpers.d.ts +0 -137
  280. package/dist/collections/utils/helpers.d.ts.map +0 -1
  281. package/dist/collections/utils/helpers.js +0 -221
  282. package/dist/collections/utils/helpers.js.map +0 -1
  283. package/dist/collections.d.ts +0 -12
  284. package/dist/collections.d.ts.map +0 -1
  285. package/dist/collections.js +0 -10
  286. package/dist/collections.js.map +0 -1
  287. package/dist/components/define.d.ts +0 -134
  288. package/dist/components/define.d.ts.map +0 -1
  289. package/dist/components/define.js +0 -486
  290. package/dist/components/define.js.map +0 -1
  291. package/dist/components/index.d.ts +0 -39
  292. package/dist/components/index.d.ts.map +0 -1
  293. package/dist/components/index.js +0 -38
  294. package/dist/components/index.js.map +0 -1
  295. package/dist/components/types.d.ts +0 -264
  296. package/dist/components/types.d.ts.map +0 -1
  297. package/dist/components/types.js +0 -46
  298. package/dist/components/types.js.map +0 -1
  299. package/dist/procedures/storage/adapter.d.ts +0 -148
  300. package/dist/procedures/storage/adapter.d.ts.map +0 -1
  301. package/dist/procedures/storage/adapter.js +0 -214
  302. package/dist/procedures/storage/adapter.js.map +0 -1
  303. package/dist/procedures/storage/api.d.ts +0 -125
  304. package/dist/procedures/storage/api.d.ts.map +0 -1
  305. package/dist/procedures/storage/api.js +0 -220
  306. package/dist/procedures/storage/api.js.map +0 -1
  307. package/dist/procedures/storage/factory.d.ts +0 -134
  308. package/dist/procedures/storage/factory.d.ts.map +0 -1
  309. package/dist/procedures/storage/factory.js +0 -166
  310. package/dist/procedures/storage/factory.js.map +0 -1
  311. package/dist/procedures/storage/hybrid.d.ts +0 -193
  312. package/dist/procedures/storage/hybrid.d.ts.map +0 -1
  313. package/dist/procedures/storage/hybrid.js +0 -519
  314. package/dist/procedures/storage/hybrid.js.map +0 -1
  315. package/dist/procedures/storage/index.d.ts +0 -17
  316. package/dist/procedures/storage/index.d.ts.map +0 -1
  317. package/dist/procedures/storage/index.js +0 -17
  318. package/dist/procedures/storage/index.js.map +0 -1
  319. package/dist/procedures/storage/procedures.d.ts +0 -39
  320. package/dist/procedures/storage/procedures.d.ts.map +0 -1
  321. package/dist/procedures/storage/procedures.js +0 -261
  322. package/dist/procedures/storage/procedures.js.map +0 -1
  323. package/dist/procedures/storage/serialization.d.ts +0 -123
  324. package/dist/procedures/storage/serialization.d.ts.map +0 -1
  325. package/dist/procedures/storage/serialization.js +0 -216
  326. package/dist/procedures/storage/serialization.js.map +0 -1
  327. package/dist/procedures/storage/synced-registry.d.ts +0 -246
  328. package/dist/procedures/storage/synced-registry.d.ts.map +0 -1
  329. package/dist/procedures/storage/synced-registry.js +0 -575
  330. package/dist/procedures/storage/synced-registry.js.map +0 -1
  331. package/dist/procedures/storage/types.d.ts +0 -130
  332. package/dist/procedures/storage/types.d.ts.map +0 -1
  333. package/dist/procedures/storage/types.js +0 -8
  334. package/dist/procedures/storage/types.js.map +0 -1
@@ -1,137 +0,0 @@
1
- /**
2
- * Set interfaces that mirror Java's Set interface hierarchy.
3
- *
4
- * Sets are collections that contain no duplicate elements.
5
- * They provide efficient membership testing.
6
- */
7
- import type { Collection, ReadonlyCollection } from "./collection.js";
8
- import type { Compare } from "../core/traits.js";
9
- /**
10
- * ReadonlySet<T> - Readonly set with no duplicates.
11
- */
12
- export interface ReadonlySet<T> extends ReadonlyCollection<T> {
13
- /**
14
- * Returns true if this set contains the specified element.
15
- */
16
- contains(element: T): boolean;
17
- /**
18
- * Returns true if this set contains all elements in the specified collection.
19
- */
20
- containsAll(other: Iterable<T>): boolean;
21
- }
22
- /**
23
- * Set<T> - Mutable set with no duplicates.
24
- *
25
- * Mirrors java.util.Set.
26
- * Elements are unique based on the set's equality function.
27
- */
28
- export interface Set<T> extends ReadonlySet<T>, Collection<T> {
29
- /**
30
- * Adds the specified element to this set if it is not already present.
31
- *
32
- * @returns true if this set did not already contain the element
33
- */
34
- add(element: T): boolean;
35
- /**
36
- * Removes the specified element from this set if it is present.
37
- *
38
- * @returns true if this set contained the element
39
- */
40
- remove(element: T): boolean;
41
- /**
42
- * Adds all elements in the specified collection to this set.
43
- * This is a union operation.
44
- *
45
- * @returns true if this set changed
46
- */
47
- addAll(other: Iterable<T>): boolean;
48
- /**
49
- * Removes from this set all of its elements that are contained in the specified collection.
50
- * This is a difference operation.
51
- *
52
- * @returns true if this set changed
53
- */
54
- removeAll(other: Iterable<T>): boolean;
55
- /**
56
- * Retains only the elements in this set that are contained in the specified collection.
57
- * This is an intersection operation.
58
- *
59
- * @returns true if this set changed
60
- */
61
- retainAll(other: Iterable<T>): boolean;
62
- }
63
- /**
64
- * SortedSet<T> - Set that maintains elements in sorted order.
65
- *
66
- * Mirrors java.util.SortedSet.
67
- */
68
- export interface SortedSet<T> extends Set<T> {
69
- /**
70
- * Returns the comparator used to order elements in this set.
71
- */
72
- readonly comparator: Compare<T>;
73
- /**
74
- * Returns the first (lowest) element in this set.
75
- *
76
- * @throws Error if set is empty
77
- */
78
- first(): T;
79
- /**
80
- * Returns the last (highest) element in this set.
81
- *
82
- * @throws Error if set is empty
83
- */
84
- last(): T;
85
- /**
86
- * Returns a view of the portion of this set whose elements are strictly less than toElement.
87
- */
88
- headSet(toElement: T): SortedSet<T>;
89
- /**
90
- * Returns a view of the portion of this set whose elements are greater than or equal to fromElement.
91
- */
92
- tailSet(fromElement: T): SortedSet<T>;
93
- /**
94
- * Returns a view of the portion of this set whose elements range from fromElement to toElement.
95
- */
96
- subSet(fromElement: T, toElement: T): SortedSet<T>;
97
- }
98
- /**
99
- * NavigableSet<T> - Extended sorted set with navigation methods.
100
- *
101
- * Mirrors java.util.NavigableSet.
102
- */
103
- export interface NavigableSet<T> extends SortedSet<T> {
104
- /**
105
- * Returns the greatest element less than or equal to the given element, or undefined if none.
106
- */
107
- floor(element: T): T | undefined;
108
- /**
109
- * Returns the least element greater than or equal to the given element, or undefined if none.
110
- */
111
- ceiling(element: T): T | undefined;
112
- /**
113
- * Returns the greatest element strictly less than the given element, or undefined if none.
114
- */
115
- lower(element: T): T | undefined;
116
- /**
117
- * Returns the least element strictly greater than the given element, or undefined if none.
118
- */
119
- higher(element: T): T | undefined;
120
- /**
121
- * Retrieves and removes the first (lowest) element, or returns undefined if empty.
122
- */
123
- pollFirst(): T | undefined;
124
- /**
125
- * Retrieves and removes the last (highest) element, or returns undefined if empty.
126
- */
127
- pollLast(): T | undefined;
128
- /**
129
- * Returns a reverse order view of this set.
130
- */
131
- descendingSet(): NavigableSet<T>;
132
- /**
133
- * Returns a reverse order iterator over the elements in this set.
134
- */
135
- descendingIterator(): Iterator<T>;
136
- }
137
- //# sourceMappingURL=set.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/collections/interfaces/set.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,CAAE,SAAQ,kBAAkB,CAAC,CAAC,CAAC;IAC3D;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;IAE9B;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CAC1C;AAED;;;;;GAKG;AACH,MAAM,WAAW,GAAG,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3D;;;;OAIG;IACH,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;IAEzB;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC;IAE5B;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAEpC;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAEvC;;;;;OAKG;IACH,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;CACxC;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS,CAAC,CAAC,CAAE,SAAQ,GAAG,CAAC,CAAC,CAAC;IAC1C;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAEhC;;;;OAIG;IACH,KAAK,IAAI,CAAC,CAAC;IAEX;;;;OAIG;IACH,IAAI,IAAI,CAAC,CAAC;IAEV;;OAEG;IACH,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAEpC;;OAEG;IACH,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAEtC;;OAEG;IACH,MAAM,CAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;CACpD;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IACnD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAEjC;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAEnC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAEjC;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IAElC;;OAEG;IACH,SAAS,IAAI,CAAC,GAAG,SAAS,CAAC;IAE3B;;OAEG;IACH,QAAQ,IAAI,CAAC,GAAG,SAAS,CAAC;IAE1B;;OAEG;IACH,aAAa,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;IAEjC;;OAEG;IACH,kBAAkB,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;CACnC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Set interfaces that mirror Java's Set interface hierarchy.
3
- *
4
- * Sets are collections that contain no duplicate elements.
5
- * They provide efficient membership testing.
6
- */
7
- export {};
8
- //# sourceMappingURL=set.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/collections/interfaces/set.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,109 +0,0 @@
1
- /**
2
- * API Storage Implementation
3
- *
4
- * Remote storage backed by universal client.
5
- * Enables collections to be persisted on a server.
6
- *
7
- * This is the KEY integration between Collections and Universal Client!
8
- */
9
- import type { CollectionStorage, StorageMetadata } from "./interface.js";
10
- import type { Client } from "../../client/client.js";
11
- /**
12
- * API storage configuration options.
13
- */
14
- export interface ApiStorageOptions {
15
- /**
16
- * Service name for RPC calls
17
- * @example "users", "orders", "products"
18
- */
19
- service: string;
20
- /**
21
- * Optional API version
22
- * @example "v1", "v2"
23
- */
24
- version?: string;
25
- /**
26
- * Custom operation names (override defaults)
27
- */
28
- operations?: {
29
- get?: string;
30
- getAll?: string;
31
- find?: string;
32
- has?: string;
33
- size?: string;
34
- set?: string;
35
- delete?: string;
36
- clear?: string;
37
- setBatch?: string;
38
- deleteBatch?: string;
39
- getBatch?: string;
40
- };
41
- /**
42
- * Request timeout in milliseconds
43
- * @default 30000 (30 seconds)
44
- */
45
- timeout?: number;
46
- /**
47
- * Enable automatic retry on failures
48
- * @default true
49
- */
50
- retry?: boolean;
51
- /**
52
- * AbortSignal for cancelling requests
53
- */
54
- signal?: AbortSignal;
55
- }
56
- /**
57
- * API storage backed by universal client.
58
- *
59
- * Maps collection operations to RPC calls:
60
- * - get(id) → client.call({ service, operation: "get" }, { id })
61
- * - set(id, value) → client.call({ service, operation: "set" }, { id, value })
62
- * - etc.
63
- *
64
- * Features:
65
- * - Remote persistence via any transport (HTTP, WebSocket, gRPC)
66
- * - Automatic retry and timeout (via client middleware)
67
- * - Type-safe with full TypeScript inference
68
- * - Async operations (all return Promises)
69
- *
70
- * @example
71
- * ```typescript
72
- * // Create API storage
73
- * const client = new Client({
74
- * transport: new HttpTransport({ baseUrl: "https://api.example.com" })
75
- * });
76
- *
77
- * const storage = new ApiStorage(client, { service: "users" });
78
- *
79
- * // Use with collection
80
- * const users = createCollection(storage);
81
- *
82
- * // Operations are automatically sent to server
83
- * await users.set("123", { name: "John" });
84
- * const user = await users.get("123"); // Fetched from server
85
- * ```
86
- */
87
- export declare class ApiStorage<T> implements CollectionStorage<T> {
88
- private client;
89
- private options;
90
- constructor(client: Client, options: ApiStorageOptions);
91
- get(id: string): Promise<T | undefined>;
92
- getAll(): Promise<T[]>;
93
- find(predicate: (item: T) => boolean): Promise<T[]>;
94
- has(id: string): Promise<boolean>;
95
- size(): Promise<number>;
96
- set(id: string, value: T): Promise<void>;
97
- delete(id: string): Promise<boolean>;
98
- clear(): Promise<void>;
99
- setBatch(items: Array<[string, T]>): Promise<void>;
100
- deleteBatch(ids: string[]): Promise<number>;
101
- getBatch(ids: string[]): Promise<Map<string, T>>;
102
- close(): Promise<void>;
103
- getMetadata(): Promise<StorageMetadata>;
104
- /**
105
- * Make RPC call via universal client.
106
- */
107
- private call;
108
- }
109
- //# sourceMappingURL=api.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/collections/storage/api.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGrD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE;QACX,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAYD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,UAAU,CAAC,CAAC,CAAE,YAAW,iBAAiB,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAOb;gBAEU,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB;IA6BhD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAOvC,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC;IAKtB,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAanD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAOjC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IASvB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlD,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ3C,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAkBhD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;IAkB7C;;OAEG;YACW,IAAI;CAkCnB"}
@@ -1,182 +0,0 @@
1
- /**
2
- * API Storage Implementation
3
- *
4
- * Remote storage backed by universal client.
5
- * Enables collections to be persisted on a server.
6
- *
7
- * This is the KEY integration between Collections and Universal Client!
8
- */
9
- /**
10
- * API storage backed by universal client.
11
- *
12
- * Maps collection operations to RPC calls:
13
- * - get(id) → client.call({ service, operation: "get" }, { id })
14
- * - set(id, value) → client.call({ service, operation: "set" }, { id, value })
15
- * - etc.
16
- *
17
- * Features:
18
- * - Remote persistence via any transport (HTTP, WebSocket, gRPC)
19
- * - Automatic retry and timeout (via client middleware)
20
- * - Type-safe with full TypeScript inference
21
- * - Async operations (all return Promises)
22
- *
23
- * @example
24
- * ```typescript
25
- * // Create API storage
26
- * const client = new Client({
27
- * transport: new HttpTransport({ baseUrl: "https://api.example.com" })
28
- * });
29
- *
30
- * const storage = new ApiStorage(client, { service: "users" });
31
- *
32
- * // Use with collection
33
- * const users = createCollection(storage);
34
- *
35
- * // Operations are automatically sent to server
36
- * await users.set("123", { name: "John" });
37
- * const user = await users.get("123"); // Fetched from server
38
- * ```
39
- */
40
- export class ApiStorage {
41
- client;
42
- options;
43
- constructor(client, options) {
44
- this.client = client;
45
- this.options = {
46
- service: options.service,
47
- ...(options.version !== undefined && { version: options.version }),
48
- operations: {
49
- get: "get",
50
- getAll: "getAll",
51
- find: "find",
52
- has: "has",
53
- size: "size",
54
- set: "set",
55
- delete: "delete",
56
- clear: "clear",
57
- setBatch: "setBatch",
58
- deleteBatch: "deleteBatch",
59
- getBatch: "getBatch",
60
- ...options.operations,
61
- },
62
- timeout: options.timeout ?? 30000,
63
- retry: options.retry ?? true,
64
- ...(options.signal !== undefined && { signal: options.signal }),
65
- };
66
- }
67
- //
68
- // ═══ Read Operations ═══
69
- //
70
- async get(id) {
71
- const response = await this.call("get", {
72
- id,
73
- });
74
- return response.data ?? undefined;
75
- }
76
- async getAll() {
77
- const response = await this.call("getAll", {});
78
- return response.data;
79
- }
80
- async find(predicate) {
81
- // Note: Predicate functions can't be serialized over network
82
- // Options:
83
- // 1. Fetch all and filter client-side (simple but inefficient)
84
- // 2. Use query language (e.g., MongoDB query, GraphQL)
85
- // 3. Pre-defined server-side filters
86
- // For now: Fetch all and filter client-side
87
- // TODO: Consider adding query language support
88
- const all = await this.getAll();
89
- return all.filter(predicate);
90
- }
91
- async has(id) {
92
- const response = await this.call("has", {
93
- id,
94
- });
95
- return response.data;
96
- }
97
- async size() {
98
- const response = await this.call("size", {});
99
- return response.data;
100
- }
101
- //
102
- // ═══ Write Operations ═══
103
- //
104
- async set(id, value) {
105
- await this.call("set", {
106
- id,
107
- value,
108
- });
109
- }
110
- async delete(id) {
111
- const response = await this.call("delete", { id });
112
- return response.data;
113
- }
114
- async clear() {
115
- await this.call("clear", {});
116
- }
117
- //
118
- // ═══ Bulk Operations ═══
119
- //
120
- async setBatch(items) {
121
- await this.call("setBatch", { items });
122
- }
123
- async deleteBatch(ids) {
124
- const response = await this.call("deleteBatch", { ids });
125
- return response.data;
126
- }
127
- async getBatch(ids) {
128
- const response = await this.call("getBatch", { ids });
129
- // Convert object to Map
130
- const result = new Map();
131
- for (const [id, value] of Object.entries(response.data)) {
132
- result.set(id, value);
133
- }
134
- return result;
135
- }
136
- //
137
- // ═══ Lifecycle & Metadata ═══
138
- //
139
- async close() {
140
- // Close underlying client transport
141
- await this.client.close();
142
- }
143
- async getMetadata() {
144
- const storageSize = await this.size();
145
- return {
146
- type: "api",
147
- size: storageSize,
148
- stats: {
149
- service: this.options.service,
150
- version: this.options.version,
151
- timeout: this.options.timeout,
152
- },
153
- };
154
- }
155
- //
156
- // ═══ Internal Helpers ═══
157
- //
158
- /**
159
- * Make RPC call via universal client.
160
- */
161
- async call(operation, payload) {
162
- const operationName = this.options.operations?.[operation] ?? operation;
163
- const method = {
164
- service: this.options.service,
165
- operation: operationName,
166
- ...(this.options.version !== undefined && { version: this.options.version }),
167
- };
168
- const metadata = {};
169
- if (this.options.timeout) {
170
- metadata["timeout"] = {
171
- overall: this.options.timeout,
172
- };
173
- }
174
- if (this.options.signal) {
175
- metadata["signal"] = this.options.signal;
176
- }
177
- // Call via universal client (uses configured transport and middleware)
178
- const response = await this.client.call(method, payload, metadata);
179
- return response;
180
- }
181
- }
182
- //# sourceMappingURL=api.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/collections/storage/api.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,OAAO,UAAU;IACb,MAAM,CAAS;IACf,OAAO,CAOb;IAEF,YAAY,MAAc,EAAE,OAA0B;QACpD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG;YACb,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;YAClE,UAAU,EAAE;gBACV,GAAG,EAAE,KAAK;gBACV,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,KAAK;gBACV,IAAI,EAAE,MAAM;gBACZ,GAAG,EAAE,KAAK;gBACV,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,OAAO;gBACd,QAAQ,EAAE,UAAU;gBACpB,WAAW,EAAE,aAAa;gBAC1B,QAAQ,EAAE,UAAU;gBACpB,GAAG,OAAO,CAAC,UAAU;aACtB;YACD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;YACjC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;YAC5B,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;SAChE,CAAC;IACJ,CAAC;IAED,EAAE;IACF,0BAA0B;IAC1B,EAAE;IAEF,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAwC,KAAK,EAAE;YAC7E,EAAE;SACH,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,IAAI,SAAS,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAuB,QAAQ,EAAE,EAAE,CAAC,CAAC;QACrE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,SAA+B;QACxC,6DAA6D;QAC7D,WAAW;QACX,+DAA+D;QAC/D,uDAAuD;QACvD,qCAAqC;QAErC,4CAA4C;QAC5C,+CAA+C;QAC/C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QAChC,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAuC,KAAK,EAAE;YAC5E,EAAE;SACH,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAA0B,MAAM,EAAE,EAAE,CAAC,CAAC;QACtE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,EAAE;IACF,2BAA2B;IAC3B,EAAE;IAEF,KAAK,CAAC,GAAG,CAAC,EAAU,EAAE,KAAQ;QAC5B,MAAM,IAAI,CAAC,IAAI,CAA8C,KAAK,EAAE;YAClE,EAAE;YACF,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAC9B,QAAQ,EACR,EAAE,EAAE,EAAE,CACP,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,IAAI,CAAwB,OAAO,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,EAAE;IACF,0BAA0B;IAC1B,EAAE;IAEF,KAAK,CAAC,QAAQ,CAAC,KAAyB;QACtC,MAAM,IAAI,CAAC,IAAI,CACb,UAAU,EACV,EAAE,KAAK,EAAE,CACV,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,GAAa;QAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAC9B,aAAa,EACb,EAAE,GAAG,EAAE,CACR,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,GAAa;QAC1B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAG9B,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAEvB,wBAAwB;QACxB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAa,CAAC;QACpC,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACxD,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,EAAE;IACF,+BAA+B;IAC/B,EAAE;IAEF,KAAK,CAAC,KAAK;QACT,oCAAoC;QACpC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAEtC,OAAO;YACL,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE;gBACL,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC7B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;aAC9B;SACF,CAAC;IACJ,CAAC;IAED,EAAE;IACF,2BAA2B;IAC3B,EAAE;IAEF;;OAEG;IACK,KAAK,CAAC,IAAI,CAChB,SAA0D,EAC1D,OAAa;QAEb,MAAM,aAAa,GACjB,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;QAEpD,MAAM,MAAM,GAAW;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;YAC7B,SAAS,EAAE,aAAa;YACxB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;SAC7E,CAAC;QAEF,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAE7C,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACzB,QAAQ,CAAC,SAAS,CAAC,GAAG;gBACpB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;aAC9B,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,QAAQ,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC3C,CAAC;QAED,uEAAuE;QACvE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACrC,MAAM,EACN,OAAO,EACP,QAAQ,CACT,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
@@ -1,164 +0,0 @@
1
- /**
2
- * Hybrid Storage Implementation
3
- *
4
- * Combines local cache (InMemoryStorage) with remote persistence (ApiStorage).
5
- * Provides fast local reads with remote backup and sync.
6
- *
7
- * Features:
8
- * - Local cache for fast reads
9
- * - Write-through or write-back strategies
10
- * - Automatic sync on initialization
11
- * - Conflict resolution
12
- * - Offline operation queue
13
- */
14
- import type { CollectionStorage, StorageMetadata } from "./interface.js";
15
- import type { ApiStorage } from "./api.js";
16
- /**
17
- * Conflict resolution strategy.
18
- */
19
- export type ConflictResolution = "local" | "remote" | "merge" | "error";
20
- /**
21
- * Write strategy for hybrid storage.
22
- */
23
- export type WriteStrategy = "write-through" | "write-back";
24
- /**
25
- * Hybrid storage configuration options.
26
- */
27
- export interface HybridStorageOptions {
28
- /**
29
- * Write strategy
30
- * - write-through: Write to both local and remote immediately
31
- * - write-back: Write to local immediately, sync to remote later
32
- * @default "write-through"
33
- */
34
- writeStrategy?: WriteStrategy;
35
- /**
36
- * Conflict resolution strategy
37
- * - local: Local changes win
38
- * - remote: Remote changes win
39
- * - merge: Custom merge function (requires mergeFn)
40
- * - error: Throw error on conflict
41
- * @default "remote"
42
- */
43
- conflictResolution?: ConflictResolution;
44
- /**
45
- * Custom merge function for conflict resolution.
46
- * Only used when conflictResolution is "merge".
47
- *
48
- * @param local - Local version
49
- * @param remote - Remote version
50
- * @returns Merged value
51
- */
52
- mergeFn?: <T>(local: T, remote: T) => T;
53
- /**
54
- * Automatic sync interval in milliseconds (for write-back mode).
55
- * Set to 0 to disable automatic sync.
56
- * @default 5000 (5 seconds)
57
- */
58
- syncInterval?: number;
59
- /**
60
- * Initialize by syncing from remote on construction.
61
- * @default true
62
- */
63
- syncOnInit?: boolean;
64
- /**
65
- * Maximum offline operations to queue.
66
- * @default 1000
67
- */
68
- maxOfflineOps?: number;
69
- /**
70
- * Enable offline operation queue.
71
- * When remote is unavailable, operations are queued and retried.
72
- * @default true
73
- */
74
- offlineQueue?: boolean;
75
- }
76
- /**
77
- * Hybrid storage combining local cache with remote persistence.
78
- *
79
- * @example
80
- * ```typescript
81
- * const client = new Client({
82
- * transport: new HttpTransport({ baseUrl: "https://api.example.com" })
83
- * });
84
- *
85
- * const remote = new ApiStorage(client, { service: "users" });
86
- * const hybrid = new HybridStorage(remote, {
87
- * writeStrategy: "write-through",
88
- * conflictResolution: "remote",
89
- * syncInterval: 5000
90
- * });
91
- *
92
- * // Fast local reads
93
- * const user = hybrid.get("123"); // From cache
94
- *
95
- * // Writes go to both local and remote
96
- * await hybrid.set("123", { name: "John" });
97
- * ```
98
- */
99
- export declare class HybridStorage<T> implements CollectionStorage<T> {
100
- private local;
101
- private remote;
102
- private options;
103
- private offlineOps;
104
- private syncTimer;
105
- private isOnline;
106
- private stats;
107
- constructor(remote: ApiStorage<T>, options?: HybridStorageOptions);
108
- get(id: string): Promise<T | undefined>;
109
- getAll(): Promise<T[]>;
110
- find(predicate: (item: T) => boolean): Promise<T[]>;
111
- has(id: string): Promise<boolean>;
112
- size(): Promise<number>;
113
- set(id: string, value: T): Promise<void>;
114
- delete(id: string): Promise<boolean>;
115
- clear(): Promise<void>;
116
- setBatch(items: Array<[string, T]>): Promise<void>;
117
- deleteBatch(ids: string[]): Promise<number>;
118
- getBatch(ids: string[]): Promise<Map<string, T>>;
119
- /**
120
- * Sync all data from remote to local.
121
- * Handles conflicts according to conflict resolution strategy.
122
- */
123
- syncFromRemote(): Promise<void>;
124
- /**
125
- * Sync all pending offline operations to remote.
126
- * Processes queued operations in order.
127
- */
128
- syncToRemote(): Promise<void>;
129
- /**
130
- * Force a full sync (both directions).
131
- */
132
- sync(): Promise<void>;
133
- close(): Promise<void>;
134
- getMetadata(): Promise<StorageMetadata>;
135
- /**
136
- * Resolve conflict between local and remote versions.
137
- */
138
- private resolveConflict;
139
- /**
140
- * Queue operation for later sync.
141
- */
142
- private queueOperation;
143
- /**
144
- * Execute a queued operation against remote storage.
145
- */
146
- private executeOperation;
147
- /**
148
- * Handle remote operation failure.
149
- */
150
- private handleRemoteFailure;
151
- /**
152
- * Start periodic background sync.
153
- */
154
- private startPeriodicSync;
155
- /**
156
- * Get current online status.
157
- */
158
- isRemoteOnline(): boolean;
159
- /**
160
- * Get pending offline operations count.
161
- */
162
- getPendingOpsCount(): number;
163
- }
164
- //# sourceMappingURL=hybrid.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hybrid.d.ts","sourceRoot":"","sources":["../../../src/collections/storage/hybrid.ts"],"names":[],"mappings":"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"}