@speckle/objectloader2 2.25.7 → 2.25.8

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 (414) hide show
  1. package/dist/commonjs/{operations → core}/interfaces.d.ts +2 -2
  2. package/dist/commonjs/core/interfaces.d.ts.map +1 -0
  3. package/dist/commonjs/core/interfaces.js.map +1 -0
  4. package/dist/commonjs/{operations → core}/objectLoader2.d.ts +1 -1
  5. package/dist/commonjs/core/objectLoader2.d.ts.map +1 -0
  6. package/dist/commonjs/core/objectLoader2.js +128 -0
  7. package/dist/commonjs/core/objectLoader2.js.map +1 -0
  8. package/dist/commonjs/{operations → core}/objectLoader2Factory.d.ts +4 -2
  9. package/dist/commonjs/core/objectLoader2Factory.d.ts.map +1 -0
  10. package/dist/commonjs/core/objectLoader2Factory.js +74 -0
  11. package/dist/commonjs/core/objectLoader2Factory.js.map +1 -0
  12. package/dist/{esm/operations → commonjs/core}/options.d.ts +2 -1
  13. package/dist/commonjs/core/options.d.ts.map +1 -0
  14. package/dist/commonjs/{operations → core}/options.js.map +1 -1
  15. package/dist/commonjs/core/stages/ItemStore.d.ts +37 -0
  16. package/dist/commonjs/core/stages/ItemStore.d.ts.map +1 -0
  17. package/dist/commonjs/core/stages/ItemStore.js +167 -0
  18. package/dist/commonjs/core/stages/ItemStore.js.map +1 -0
  19. package/dist/commonjs/core/stages/cacheReader.d.ts +18 -0
  20. package/dist/commonjs/core/stages/cacheReader.d.ts.map +1 -0
  21. package/dist/commonjs/core/stages/cacheReader.js +72 -0
  22. package/dist/commonjs/core/stages/cacheReader.js.map +1 -0
  23. package/dist/commonjs/core/stages/cacheWriter.d.ts +15 -0
  24. package/dist/commonjs/core/stages/cacheWriter.d.ts.map +1 -0
  25. package/dist/commonjs/core/stages/cacheWriter.js +50 -0
  26. package/dist/commonjs/core/stages/cacheWriter.js.map +1 -0
  27. package/dist/commonjs/{operations/databases → core/stages}/indexedDatabase.d.ts +2 -9
  28. package/dist/commonjs/core/stages/indexedDatabase.d.ts.map +1 -0
  29. package/dist/commonjs/core/stages/indexedDatabase.js +31 -0
  30. package/dist/commonjs/core/stages/indexedDatabase.js.map +1 -0
  31. package/dist/{esm/operations/databases → commonjs/core/stages/memory}/memoryDatabase.d.ts +4 -4
  32. package/dist/commonjs/core/stages/memory/memoryDatabase.d.ts.map +1 -0
  33. package/dist/commonjs/{operations/databases → core/stages/memory}/memoryDatabase.js +4 -1
  34. package/dist/commonjs/core/stages/memory/memoryDatabase.js.map +1 -0
  35. package/dist/commonjs/{operations/downloaders → core/stages/memory}/memoryDownloader.d.ts +3 -3
  36. package/dist/commonjs/core/stages/memory/memoryDownloader.d.ts.map +1 -0
  37. package/dist/commonjs/core/stages/memory/memoryDownloader.js.map +1 -0
  38. package/dist/{esm/operations/downloaders → commonjs/core/stages}/serverDownloader.d.ts +4 -5
  39. package/dist/commonjs/core/stages/serverDownloader.d.ts.map +1 -0
  40. package/dist/commonjs/{operations/downloaders → core/stages}/serverDownloader.js +81 -31
  41. package/dist/commonjs/core/stages/serverDownloader.js.map +1 -0
  42. package/dist/commonjs/core/traverser.d.ts.map +1 -0
  43. package/dist/commonjs/{operations → core}/traverser.js +7 -7
  44. package/dist/commonjs/core/traverser.js.map +1 -0
  45. package/dist/commonjs/deferment/MemoryCache.d.ts +35 -0
  46. package/dist/commonjs/deferment/MemoryCache.d.ts.map +1 -0
  47. package/dist/commonjs/deferment/MemoryCache.js +162 -0
  48. package/dist/commonjs/deferment/MemoryCache.js.map +1 -0
  49. package/dist/commonjs/deferment/MemoryCache.test.d.ts +2 -0
  50. package/dist/commonjs/deferment/MemoryCache.test.d.ts.map +1 -0
  51. package/dist/commonjs/deferment/MemoryCache.test.js +153 -0
  52. package/dist/commonjs/deferment/MemoryCache.test.js.map +1 -0
  53. package/dist/commonjs/deferment/defermentManager.d.ts +16 -0
  54. package/dist/commonjs/deferment/defermentManager.d.ts.map +1 -0
  55. package/dist/commonjs/deferment/defermentManager.js +58 -0
  56. package/dist/commonjs/deferment/defermentManager.js.map +1 -0
  57. package/dist/commonjs/deferment/defermentManager.test.d.ts +2 -0
  58. package/dist/commonjs/deferment/defermentManager.test.d.ts.map +1 -0
  59. package/dist/commonjs/deferment/defermentManager.test.js +188 -0
  60. package/dist/commonjs/deferment/defermentManager.test.js.map +1 -0
  61. package/dist/commonjs/deferment/deferredBase.d.ts +12 -0
  62. package/dist/commonjs/deferment/deferredBase.d.ts.map +1 -0
  63. package/dist/commonjs/deferment/deferredBase.js +27 -0
  64. package/dist/commonjs/deferment/deferredBase.js.map +1 -0
  65. package/dist/commonjs/index.d.ts +3 -2
  66. package/dist/commonjs/index.d.ts.map +1 -1
  67. package/dist/commonjs/index.js +6 -3
  68. package/dist/commonjs/index.js.map +1 -1
  69. package/dist/commonjs/{helpers → queues}/aggregateQueue.d.ts +2 -1
  70. package/dist/commonjs/queues/aggregateQueue.d.ts.map +1 -0
  71. package/dist/commonjs/{helpers → queues}/aggregateQueue.js +4 -0
  72. package/dist/commonjs/queues/aggregateQueue.js.map +1 -0
  73. package/dist/{esm/helpers → commonjs/queues}/asyncGeneratorQueue.d.ts +1 -1
  74. package/dist/commonjs/queues/asyncGeneratorQueue.d.ts.map +1 -0
  75. package/dist/commonjs/{helpers → queues}/asyncGeneratorQueue.js +2 -1
  76. package/dist/commonjs/queues/asyncGeneratorQueue.js.map +1 -0
  77. package/dist/{esm/helpers → commonjs/queues}/batchedPool.d.ts +2 -1
  78. package/dist/commonjs/queues/batchedPool.d.ts.map +1 -0
  79. package/dist/commonjs/queues/batchedPool.js.map +1 -0
  80. package/dist/{esm/helpers → commonjs/queues}/batchingQueue.d.ts +4 -1
  81. package/dist/commonjs/queues/batchingQueue.d.ts.map +1 -0
  82. package/dist/commonjs/queues/batchingQueue.dispose.test.d.ts +2 -0
  83. package/dist/commonjs/queues/batchingQueue.dispose.test.d.ts.map +1 -0
  84. package/dist/commonjs/queues/batchingQueue.dispose.test.js +64 -0
  85. package/dist/commonjs/queues/batchingQueue.dispose.test.js.map +1 -0
  86. package/dist/commonjs/queues/batchingQueue.js +123 -0
  87. package/dist/commonjs/queues/batchingQueue.js.map +1 -0
  88. package/dist/commonjs/queues/batchingQueue.test.d.ts +2 -0
  89. package/dist/commonjs/queues/batchingQueue.test.d.ts.map +1 -0
  90. package/dist/commonjs/queues/batchingQueue.test.js +138 -0
  91. package/dist/commonjs/queues/batchingQueue.test.js.map +1 -0
  92. package/dist/{esm/helpers → commonjs/queues}/bufferQueue.d.ts +1 -0
  93. package/dist/commonjs/queues/bufferQueue.d.ts.map +1 -0
  94. package/dist/commonjs/{helpers → queues}/bufferQueue.js +3 -0
  95. package/dist/commonjs/queues/bufferQueue.js.map +1 -0
  96. package/dist/commonjs/{helpers → queues}/keyedQueue.d.ts +1 -0
  97. package/dist/commonjs/queues/keyedQueue.d.ts.map +1 -0
  98. package/dist/commonjs/{helpers → queues}/keyedQueue.js +11 -0
  99. package/dist/commonjs/queues/keyedQueue.js.map +1 -0
  100. package/dist/commonjs/queues/queue.d.ts +5 -0
  101. package/dist/commonjs/queues/queue.d.ts.map +1 -0
  102. package/dist/commonjs/{helpers → queues}/queue.js.map +1 -1
  103. package/dist/commonjs/types/functions.d.ts +21 -0
  104. package/dist/commonjs/types/functions.d.ts.map +1 -0
  105. package/dist/commonjs/types/functions.js +92 -0
  106. package/dist/commonjs/types/functions.js.map +1 -0
  107. package/dist/commonjs/types/types.d.ts +1 -7
  108. package/dist/commonjs/types/types.d.ts.map +1 -1
  109. package/dist/commonjs/types/types.js +0 -36
  110. package/dist/commonjs/types/types.js.map +1 -1
  111. package/dist/esm/{operations → core}/interfaces.d.ts +2 -2
  112. package/dist/esm/core/interfaces.d.ts.map +1 -0
  113. package/dist/esm/core/interfaces.js.map +1 -0
  114. package/dist/esm/{operations → core}/objectLoader2.d.ts +1 -1
  115. package/dist/esm/core/objectLoader2.d.ts.map +1 -0
  116. package/dist/esm/core/objectLoader2.js +121 -0
  117. package/dist/esm/core/objectLoader2.js.map +1 -0
  118. package/dist/esm/{operations → core}/objectLoader2Factory.d.ts +4 -2
  119. package/dist/esm/core/objectLoader2Factory.d.ts.map +1 -0
  120. package/dist/esm/core/objectLoader2Factory.js +67 -0
  121. package/dist/esm/core/objectLoader2Factory.js.map +1 -0
  122. package/dist/{commonjs/operations → esm/core}/options.d.ts +2 -1
  123. package/dist/esm/core/options.d.ts.map +1 -0
  124. package/dist/esm/{operations → core}/options.js.map +1 -1
  125. package/dist/esm/core/stages/ItemStore.d.ts +37 -0
  126. package/dist/esm/core/stages/ItemStore.d.ts.map +1 -0
  127. package/dist/esm/core/stages/ItemStore.js +163 -0
  128. package/dist/esm/core/stages/ItemStore.js.map +1 -0
  129. package/dist/esm/core/stages/cacheReader.d.ts +18 -0
  130. package/dist/esm/core/stages/cacheReader.d.ts.map +1 -0
  131. package/dist/esm/core/stages/cacheReader.js +65 -0
  132. package/dist/esm/core/stages/cacheReader.js.map +1 -0
  133. package/dist/esm/core/stages/cacheWriter.d.ts +15 -0
  134. package/dist/esm/core/stages/cacheWriter.d.ts.map +1 -0
  135. package/dist/esm/core/stages/cacheWriter.js +43 -0
  136. package/dist/esm/core/stages/cacheWriter.js.map +1 -0
  137. package/dist/esm/{operations/databases → core/stages}/indexedDatabase.d.ts +2 -9
  138. package/dist/esm/core/stages/indexedDatabase.d.ts.map +1 -0
  139. package/dist/esm/core/stages/indexedDatabase.js +28 -0
  140. package/dist/esm/core/stages/indexedDatabase.js.map +1 -0
  141. package/dist/{commonjs/operations/databases → esm/core/stages/memory}/memoryDatabase.d.ts +4 -4
  142. package/dist/esm/core/stages/memory/memoryDatabase.d.ts.map +1 -0
  143. package/dist/esm/{operations/databases → core/stages/memory}/memoryDatabase.js +4 -1
  144. package/dist/esm/core/stages/memory/memoryDatabase.js.map +1 -0
  145. package/dist/esm/{operations/downloaders → core/stages/memory}/memoryDownloader.d.ts +3 -3
  146. package/dist/esm/core/stages/memory/memoryDownloader.d.ts.map +1 -0
  147. package/dist/esm/core/stages/memory/memoryDownloader.js.map +1 -0
  148. package/dist/{commonjs/operations/downloaders → esm/core/stages}/serverDownloader.d.ts +4 -5
  149. package/dist/esm/core/stages/serverDownloader.d.ts.map +1 -0
  150. package/dist/esm/{operations/downloaders → core/stages}/serverDownloader.js +80 -30
  151. package/dist/esm/core/stages/serverDownloader.js.map +1 -0
  152. package/dist/esm/core/traverser.d.ts.map +1 -0
  153. package/dist/esm/{operations → core}/traverser.js +1 -1
  154. package/dist/esm/core/traverser.js.map +1 -0
  155. package/dist/esm/deferment/MemoryCache.d.ts +35 -0
  156. package/dist/esm/deferment/MemoryCache.d.ts.map +1 -0
  157. package/dist/esm/deferment/MemoryCache.js +157 -0
  158. package/dist/esm/deferment/MemoryCache.js.map +1 -0
  159. package/dist/esm/deferment/MemoryCache.test.d.ts +2 -0
  160. package/dist/esm/deferment/MemoryCache.test.d.ts.map +1 -0
  161. package/dist/esm/deferment/MemoryCache.test.js +151 -0
  162. package/dist/esm/deferment/MemoryCache.test.js.map +1 -0
  163. package/dist/esm/deferment/defermentManager.d.ts +16 -0
  164. package/dist/esm/deferment/defermentManager.d.ts.map +1 -0
  165. package/dist/esm/deferment/defermentManager.js +54 -0
  166. package/dist/esm/deferment/defermentManager.js.map +1 -0
  167. package/dist/esm/deferment/defermentManager.test.d.ts +2 -0
  168. package/dist/esm/deferment/defermentManager.test.d.ts.map +1 -0
  169. package/dist/esm/deferment/defermentManager.test.js +186 -0
  170. package/dist/esm/deferment/defermentManager.test.js.map +1 -0
  171. package/dist/esm/deferment/deferredBase.d.ts +12 -0
  172. package/dist/esm/deferment/deferredBase.d.ts.map +1 -0
  173. package/dist/esm/deferment/deferredBase.js +23 -0
  174. package/dist/esm/deferment/deferredBase.js.map +1 -0
  175. package/dist/esm/index.d.ts +3 -2
  176. package/dist/esm/index.d.ts.map +1 -1
  177. package/dist/esm/index.js +3 -2
  178. package/dist/esm/index.js.map +1 -1
  179. package/dist/esm/{helpers → queues}/aggregateQueue.d.ts +2 -1
  180. package/dist/esm/queues/aggregateQueue.d.ts.map +1 -0
  181. package/dist/esm/{helpers → queues}/aggregateQueue.js +4 -0
  182. package/dist/esm/queues/aggregateQueue.js.map +1 -0
  183. package/dist/{commonjs/helpers → esm/queues}/asyncGeneratorQueue.d.ts +1 -1
  184. package/dist/esm/queues/asyncGeneratorQueue.d.ts.map +1 -0
  185. package/dist/esm/{helpers → queues}/asyncGeneratorQueue.js +2 -1
  186. package/dist/esm/queues/asyncGeneratorQueue.js.map +1 -0
  187. package/dist/{commonjs/helpers → esm/queues}/batchedPool.d.ts +2 -1
  188. package/dist/esm/queues/batchedPool.d.ts.map +1 -0
  189. package/dist/esm/queues/batchedPool.js.map +1 -0
  190. package/dist/{commonjs/helpers → esm/queues}/batchingQueue.d.ts +4 -1
  191. package/dist/esm/queues/batchingQueue.d.ts.map +1 -0
  192. package/dist/esm/queues/batchingQueue.dispose.test.d.ts +2 -0
  193. package/dist/esm/queues/batchingQueue.dispose.test.d.ts.map +1 -0
  194. package/dist/esm/queues/batchingQueue.dispose.test.js +59 -0
  195. package/dist/esm/queues/batchingQueue.dispose.test.js.map +1 -0
  196. package/dist/esm/queues/batchingQueue.js +117 -0
  197. package/dist/esm/queues/batchingQueue.js.map +1 -0
  198. package/dist/esm/queues/batchingQueue.test.d.ts +2 -0
  199. package/dist/esm/queues/batchingQueue.test.d.ts.map +1 -0
  200. package/dist/esm/queues/batchingQueue.test.js +133 -0
  201. package/dist/esm/queues/batchingQueue.test.js.map +1 -0
  202. package/dist/{commonjs/helpers → esm/queues}/bufferQueue.d.ts +1 -0
  203. package/dist/esm/queues/bufferQueue.d.ts.map +1 -0
  204. package/dist/esm/{helpers → queues}/bufferQueue.js +3 -0
  205. package/dist/esm/queues/bufferQueue.js.map +1 -0
  206. package/dist/esm/{helpers → queues}/keyedQueue.d.ts +1 -0
  207. package/dist/esm/queues/keyedQueue.d.ts.map +1 -0
  208. package/dist/esm/{helpers → queues}/keyedQueue.js +11 -0
  209. package/dist/esm/queues/keyedQueue.js.map +1 -0
  210. package/dist/esm/queues/queue.d.ts +5 -0
  211. package/dist/esm/queues/queue.d.ts.map +1 -0
  212. package/dist/esm/{helpers → queues}/queue.js.map +1 -1
  213. package/dist/esm/types/functions.d.ts +21 -0
  214. package/dist/esm/types/functions.d.ts.map +1 -0
  215. package/dist/esm/types/functions.js +83 -0
  216. package/dist/esm/types/functions.js.map +1 -0
  217. package/dist/esm/types/types.d.ts +1 -7
  218. package/dist/esm/types/types.d.ts.map +1 -1
  219. package/dist/esm/types/types.js +1 -32
  220. package/dist/esm/types/types.js.map +1 -1
  221. package/package.json +2 -3
  222. package/readme.md +64 -16
  223. package/src/{operations → core}/interfaces.ts +2 -2
  224. package/src/{operations → core}/objectLoader2.spec.ts +22 -9
  225. package/src/core/objectLoader2.ts +162 -0
  226. package/src/core/objectLoader2Factory.ts +87 -0
  227. package/src/{operations → core}/options.ts +2 -1
  228. package/src/core/stages/ItemStore.ts +196 -0
  229. package/src/{operations/databases → core/stages}/__snapshots__/indexedDatabase.spec.ts.snap +4 -4
  230. package/src/{operations/downloaders → core/stages}/__snapshots__/serverDownloader.spec.ts.snap +25 -0
  231. package/src/{helpers → core/stages}/cacheReader.spec.ts +12 -7
  232. package/src/core/stages/cacheReader.ts +88 -0
  233. package/src/core/stages/cacheWriter.spec.ts +213 -0
  234. package/src/core/stages/cacheWriter.ts +64 -0
  235. package/src/{operations/databases → core/stages}/indexedDatabase.spec.ts +7 -3
  236. package/src/core/stages/indexedDatabase.ts +49 -0
  237. package/src/{operations/databases → core/stages/memory}/memoryDatabase.spec.ts +5 -5
  238. package/src/{operations/databases → core/stages/memory}/memoryDatabase.ts +7 -4
  239. package/src/{operations/downloaders → core/stages/memory}/memoryDownloader.spec.ts +3 -3
  240. package/src/{operations/downloaders → core/stages/memory}/memoryDownloader.ts +3 -3
  241. package/src/{operations/downloaders → core/stages}/serverDownloader.spec.ts +102 -11
  242. package/src/{operations/downloaders → core/stages}/serverDownloader.ts +87 -30
  243. package/src/{operations → core}/traverser.ts +2 -1
  244. package/src/deferment/MemoryCache.test.ts +187 -0
  245. package/src/deferment/MemoryCache.ts +189 -0
  246. package/src/deferment/defermentManager.test.ts +220 -0
  247. package/src/deferment/defermentManager.ts +59 -0
  248. package/src/deferment/deferredBase.ts +29 -0
  249. package/src/index.ts +3 -2
  250. package/src/{helpers → queues}/aggregateQueue.ts +5 -1
  251. package/src/{helpers → queues}/asyncGeneratorQueue.ts +2 -1
  252. package/src/{helpers → queues}/batchedPool.ts +3 -1
  253. package/src/queues/batchingQueue.dispose.test.ts +74 -0
  254. package/src/queues/batchingQueue.test.ts +149 -0
  255. package/src/queues/batchingQueue.ts +138 -0
  256. package/src/{helpers → queues}/bufferQueue.ts +3 -0
  257. package/src/{helpers → queues}/keyedQueue.ts +12 -0
  258. package/src/{helpers → queues}/queue.ts +1 -0
  259. package/src/test/e2e.spec.ts +2 -2
  260. package/src/types/functions.spec.ts +155 -0
  261. package/src/types/functions.ts +118 -0
  262. package/src/types/types.ts +1 -51
  263. package/dist/commonjs/helpers/aggregateQueue.d.ts.map +0 -1
  264. package/dist/commonjs/helpers/aggregateQueue.js.map +0 -1
  265. package/dist/commonjs/helpers/asyncGeneratorQueue.d.ts.map +0 -1
  266. package/dist/commonjs/helpers/asyncGeneratorQueue.js.map +0 -1
  267. package/dist/commonjs/helpers/batchedPool.d.ts.map +0 -1
  268. package/dist/commonjs/helpers/batchedPool.js.map +0 -1
  269. package/dist/commonjs/helpers/batchingQueue.d.ts.map +0 -1
  270. package/dist/commonjs/helpers/batchingQueue.js +0 -77
  271. package/dist/commonjs/helpers/batchingQueue.js.map +0 -1
  272. package/dist/commonjs/helpers/bufferQueue.d.ts.map +0 -1
  273. package/dist/commonjs/helpers/bufferQueue.js.map +0 -1
  274. package/dist/commonjs/helpers/cachePump.d.ts +0 -22
  275. package/dist/commonjs/helpers/cachePump.d.ts.map +0 -1
  276. package/dist/commonjs/helpers/cachePump.js +0 -86
  277. package/dist/commonjs/helpers/cachePump.js.map +0 -1
  278. package/dist/commonjs/helpers/cacheReader.d.ts +0 -14
  279. package/dist/commonjs/helpers/cacheReader.d.ts.map +0 -1
  280. package/dist/commonjs/helpers/cacheReader.js +0 -58
  281. package/dist/commonjs/helpers/cacheReader.js.map +0 -1
  282. package/dist/commonjs/helpers/defermentManager.d.ts +0 -28
  283. package/dist/commonjs/helpers/defermentManager.d.ts.map +0 -1
  284. package/dist/commonjs/helpers/defermentManager.js +0 -150
  285. package/dist/commonjs/helpers/defermentManager.js.map +0 -1
  286. package/dist/commonjs/helpers/deferredBase.d.ts +0 -19
  287. package/dist/commonjs/helpers/deferredBase.d.ts.map +0 -1
  288. package/dist/commonjs/helpers/deferredBase.js +0 -51
  289. package/dist/commonjs/helpers/deferredBase.js.map +0 -1
  290. package/dist/commonjs/helpers/keyedQueue.d.ts.map +0 -1
  291. package/dist/commonjs/helpers/keyedQueue.js.map +0 -1
  292. package/dist/commonjs/helpers/memoryPump.d.ts +0 -15
  293. package/dist/commonjs/helpers/memoryPump.d.ts.map +0 -1
  294. package/dist/commonjs/helpers/memoryPump.js +0 -34
  295. package/dist/commonjs/helpers/memoryPump.js.map +0 -1
  296. package/dist/commonjs/helpers/pump.d.ts +0 -8
  297. package/dist/commonjs/helpers/pump.d.ts.map +0 -1
  298. package/dist/commonjs/helpers/pump.js +0 -3
  299. package/dist/commonjs/helpers/pump.js.map +0 -1
  300. package/dist/commonjs/helpers/queue.d.ts +0 -4
  301. package/dist/commonjs/helpers/queue.d.ts.map +0 -1
  302. package/dist/commonjs/operations/databases/indexedDatabase.d.ts.map +0 -1
  303. package/dist/commonjs/operations/databases/indexedDatabase.js +0 -98
  304. package/dist/commonjs/operations/databases/indexedDatabase.js.map +0 -1
  305. package/dist/commonjs/operations/databases/memoryDatabase.d.ts.map +0 -1
  306. package/dist/commonjs/operations/databases/memoryDatabase.js.map +0 -1
  307. package/dist/commonjs/operations/downloaders/memoryDownloader.d.ts.map +0 -1
  308. package/dist/commonjs/operations/downloaders/memoryDownloader.js.map +0 -1
  309. package/dist/commonjs/operations/downloaders/serverDownloader.d.ts.map +0 -1
  310. package/dist/commonjs/operations/downloaders/serverDownloader.js.map +0 -1
  311. package/dist/commonjs/operations/interfaces.d.ts.map +0 -1
  312. package/dist/commonjs/operations/interfaces.js.map +0 -1
  313. package/dist/commonjs/operations/objectLoader2.d.ts.map +0 -1
  314. package/dist/commonjs/operations/objectLoader2.js +0 -101
  315. package/dist/commonjs/operations/objectLoader2.js.map +0 -1
  316. package/dist/commonjs/operations/objectLoader2Factory.d.ts.map +0 -1
  317. package/dist/commonjs/operations/objectLoader2Factory.js +0 -68
  318. package/dist/commonjs/operations/objectLoader2Factory.js.map +0 -1
  319. package/dist/commonjs/operations/options.d.ts.map +0 -1
  320. package/dist/commonjs/operations/traverser.d.ts.map +0 -1
  321. package/dist/commonjs/operations/traverser.js.map +0 -1
  322. package/dist/esm/helpers/aggregateQueue.d.ts.map +0 -1
  323. package/dist/esm/helpers/aggregateQueue.js.map +0 -1
  324. package/dist/esm/helpers/asyncGeneratorQueue.d.ts.map +0 -1
  325. package/dist/esm/helpers/asyncGeneratorQueue.js.map +0 -1
  326. package/dist/esm/helpers/batchedPool.d.ts.map +0 -1
  327. package/dist/esm/helpers/batchedPool.js.map +0 -1
  328. package/dist/esm/helpers/batchingQueue.d.ts.map +0 -1
  329. package/dist/esm/helpers/batchingQueue.js +0 -71
  330. package/dist/esm/helpers/batchingQueue.js.map +0 -1
  331. package/dist/esm/helpers/bufferQueue.d.ts.map +0 -1
  332. package/dist/esm/helpers/bufferQueue.js.map +0 -1
  333. package/dist/esm/helpers/cachePump.d.ts +0 -22
  334. package/dist/esm/helpers/cachePump.d.ts.map +0 -1
  335. package/dist/esm/helpers/cachePump.js +0 -79
  336. package/dist/esm/helpers/cachePump.js.map +0 -1
  337. package/dist/esm/helpers/cacheReader.d.ts +0 -14
  338. package/dist/esm/helpers/cacheReader.d.ts.map +0 -1
  339. package/dist/esm/helpers/cacheReader.js +0 -51
  340. package/dist/esm/helpers/cacheReader.js.map +0 -1
  341. package/dist/esm/helpers/defermentManager.d.ts +0 -28
  342. package/dist/esm/helpers/defermentManager.d.ts.map +0 -1
  343. package/dist/esm/helpers/defermentManager.js +0 -146
  344. package/dist/esm/helpers/defermentManager.js.map +0 -1
  345. package/dist/esm/helpers/deferredBase.d.ts +0 -19
  346. package/dist/esm/helpers/deferredBase.d.ts.map +0 -1
  347. package/dist/esm/helpers/deferredBase.js +0 -47
  348. package/dist/esm/helpers/deferredBase.js.map +0 -1
  349. package/dist/esm/helpers/keyedQueue.d.ts.map +0 -1
  350. package/dist/esm/helpers/keyedQueue.js.map +0 -1
  351. package/dist/esm/helpers/memoryPump.d.ts +0 -15
  352. package/dist/esm/helpers/memoryPump.d.ts.map +0 -1
  353. package/dist/esm/helpers/memoryPump.js +0 -30
  354. package/dist/esm/helpers/memoryPump.js.map +0 -1
  355. package/dist/esm/helpers/pump.d.ts +0 -8
  356. package/dist/esm/helpers/pump.d.ts.map +0 -1
  357. package/dist/esm/helpers/pump.js +0 -2
  358. package/dist/esm/helpers/pump.js.map +0 -1
  359. package/dist/esm/helpers/queue.d.ts +0 -4
  360. package/dist/esm/helpers/queue.d.ts.map +0 -1
  361. package/dist/esm/operations/databases/indexedDatabase.d.ts.map +0 -1
  362. package/dist/esm/operations/databases/indexedDatabase.js +0 -93
  363. package/dist/esm/operations/databases/indexedDatabase.js.map +0 -1
  364. package/dist/esm/operations/databases/memoryDatabase.d.ts.map +0 -1
  365. package/dist/esm/operations/databases/memoryDatabase.js.map +0 -1
  366. package/dist/esm/operations/downloaders/memoryDownloader.d.ts.map +0 -1
  367. package/dist/esm/operations/downloaders/memoryDownloader.js.map +0 -1
  368. package/dist/esm/operations/downloaders/serverDownloader.d.ts.map +0 -1
  369. package/dist/esm/operations/downloaders/serverDownloader.js.map +0 -1
  370. package/dist/esm/operations/interfaces.d.ts.map +0 -1
  371. package/dist/esm/operations/interfaces.js.map +0 -1
  372. package/dist/esm/operations/objectLoader2.d.ts.map +0 -1
  373. package/dist/esm/operations/objectLoader2.js +0 -94
  374. package/dist/esm/operations/objectLoader2.js.map +0 -1
  375. package/dist/esm/operations/objectLoader2Factory.d.ts.map +0 -1
  376. package/dist/esm/operations/objectLoader2Factory.js +0 -61
  377. package/dist/esm/operations/objectLoader2Factory.js.map +0 -1
  378. package/dist/esm/operations/options.d.ts.map +0 -1
  379. package/dist/esm/operations/traverser.d.ts.map +0 -1
  380. package/dist/esm/operations/traverser.js.map +0 -1
  381. package/src/helpers/__snapshots__/cachePump.spec.ts.snap +0 -31
  382. package/src/helpers/__snapshots__/defermentManager.spec.ts.snap +0 -8
  383. package/src/helpers/batchingQueue.ts +0 -85
  384. package/src/helpers/cachePump.disposal.spec.ts +0 -51
  385. package/src/helpers/cachePump.spec.ts +0 -104
  386. package/src/helpers/cachePump.ts +0 -107
  387. package/src/helpers/cacheReader.ts +0 -64
  388. package/src/helpers/defermentManager.defermentTotals.spec.ts +0 -53
  389. package/src/helpers/defermentManager.disposal.spec.ts +0 -28
  390. package/src/helpers/defermentManager.spec.ts +0 -37
  391. package/src/helpers/defermentManager.ts +0 -160
  392. package/src/helpers/deferredBase.ts +0 -55
  393. package/src/helpers/memoryPump.ts +0 -40
  394. package/src/helpers/pump.ts +0 -8
  395. package/src/operations/databases/indexedDatabase.ts +0 -126
  396. package/src/operations/objectLoader2.ts +0 -119
  397. package/src/operations/objectLoader2Factory.ts +0 -78
  398. package/dist/commonjs/{operations → core}/interfaces.js +0 -0
  399. package/dist/commonjs/{operations → core}/options.js +0 -0
  400. package/dist/commonjs/{operations/downloaders → core/stages/memory}/memoryDownloader.js +0 -0
  401. package/dist/commonjs/{operations → core}/traverser.d.ts +0 -0
  402. package/dist/commonjs/{helpers → queues}/batchedPool.js +0 -0
  403. package/dist/commonjs/{helpers → queues}/queue.js +0 -0
  404. package/dist/esm/{operations → core}/interfaces.js +0 -0
  405. package/dist/esm/{operations → core}/options.js +0 -0
  406. package/dist/esm/{operations/downloaders → core/stages/memory}/memoryDownloader.js +0 -0
  407. package/dist/esm/{operations → core}/traverser.d.ts +0 -0
  408. package/dist/esm/{helpers → queues}/batchedPool.js +0 -0
  409. package/dist/esm/{helpers → queues}/queue.js +0 -0
  410. package/src/{operations → core}/__snapshots__/objectLoader2.spec.ts.snap +0 -0
  411. package/src/{operations → core}/__snapshots__/traverser.spec.ts.snap +0 -0
  412. package/src/{helpers → core/stages}/__snapshots__/cacheReader.spec.ts.snap +0 -0
  413. package/src/{operations/downloaders → core/stages/memory}/__snapshots__/memoryDownloader.spec.ts.snap +0 -0
  414. package/src/{operations → core}/traverser.spec.ts +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchingQueue.js","sourceRoot":"","sources":["../../../src/queues/batchingQueue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=batchingQueue.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchingQueue.test.d.ts","sourceRoot":"","sources":["../../../src/queues/batchingQueue.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,133 @@
1
+ import { describe, test, expect, vi } from 'vitest';
2
+ import BatchingQueue from './batchingQueue.js';
3
+ describe('BatchingQueue', () => {
4
+ test('should add items and process them in batches', async () => {
5
+ const processSpy = vi.fn();
6
+ const queue = new BatchingQueue({
7
+ batchSize: 2,
8
+ maxWaitTime: 100,
9
+ processFunction: async (batch) => {
10
+ await new Promise((resolve) => setTimeout(resolve, 0));
11
+ processSpy(batch);
12
+ }
13
+ });
14
+ try {
15
+ queue.add('key1', 'item1');
16
+ queue.add('key2', 'item2');
17
+ await new Promise((resolve) => setTimeout(resolve, 200));
18
+ expect(processSpy).toHaveBeenCalledTimes(1);
19
+ expect(processSpy).toHaveBeenCalledWith(['item1', 'item2']);
20
+ }
21
+ finally {
22
+ await queue.disposeAsync();
23
+ }
24
+ });
25
+ test('should process items after timeout if batch size is not reached', async () => {
26
+ const processSpy = vi.fn();
27
+ const queue = new BatchingQueue({
28
+ batchSize: 5,
29
+ maxWaitTime: 100,
30
+ processFunction: async (batch) => {
31
+ await new Promise((resolve) => setTimeout(resolve, 0));
32
+ processSpy(batch);
33
+ }
34
+ });
35
+ try {
36
+ queue.add('key1', 'item1');
37
+ queue.add('key2', 'item2');
38
+ await new Promise((resolve) => setTimeout(resolve, 200));
39
+ expect(processSpy).toHaveBeenCalledTimes(1);
40
+ expect(processSpy).toHaveBeenCalledWith(['item1', 'item2']);
41
+ }
42
+ finally {
43
+ await queue.disposeAsync();
44
+ }
45
+ });
46
+ test('should handle multiple batches correctly', async () => {
47
+ const processSpy = vi.fn();
48
+ const queue = new BatchingQueue({
49
+ batchSize: 2,
50
+ maxWaitTime: 100,
51
+ processFunction: async (batch) => {
52
+ await new Promise((resolve) => setTimeout(resolve, 0));
53
+ processSpy(batch);
54
+ }
55
+ });
56
+ try {
57
+ queue.add('key1', 'item1');
58
+ queue.add('key2', 'item2');
59
+ queue.add('key3', 'item3');
60
+ queue.add('key4', 'item4');
61
+ await new Promise((resolve) => setTimeout(resolve, 200));
62
+ expect(processSpy).toHaveBeenCalledTimes(2);
63
+ expect(processSpy).toHaveBeenCalledWith(['item1', 'item2']);
64
+ expect(processSpy).toHaveBeenCalledWith(['item3', 'item4']);
65
+ }
66
+ finally {
67
+ await queue.disposeAsync();
68
+ }
69
+ });
70
+ test('should retrieve items by key', async () => {
71
+ const queue = new BatchingQueue({
72
+ batchSize: 3,
73
+ maxWaitTime: 100,
74
+ processFunction: async () => {
75
+ await new Promise((resolve) => setTimeout(resolve, 0));
76
+ }
77
+ });
78
+ try {
79
+ queue.add('key1', 'item1');
80
+ queue.add('key2', 'item2');
81
+ expect(queue.get('key1')).toBe('item1');
82
+ expect(queue.get('key2')).toBe('item2');
83
+ expect(queue.get('key3')).toBeUndefined();
84
+ }
85
+ finally {
86
+ await queue.disposeAsync();
87
+ }
88
+ });
89
+ test('should return correct count of items', async () => {
90
+ const queue = new BatchingQueue({
91
+ batchSize: 3,
92
+ maxWaitTime: 100,
93
+ processFunction: async () => {
94
+ await new Promise((resolve) => setTimeout(resolve, 0));
95
+ }
96
+ });
97
+ try {
98
+ expect(queue.count()).toBe(0);
99
+ queue.add('key1', 'item1');
100
+ queue.add('key2', 'item2');
101
+ expect(queue.count()).toBe(2);
102
+ }
103
+ finally {
104
+ await queue.disposeAsync();
105
+ }
106
+ });
107
+ test('should not process items if already processing', async () => {
108
+ const processSpy = vi.fn();
109
+ const queue = new BatchingQueue({
110
+ batchSize: 2,
111
+ maxWaitTime: 100,
112
+ processFunction: async (batch) => {
113
+ processSpy(batch);
114
+ await new Promise((resolve) => setTimeout(resolve, 300));
115
+ }
116
+ });
117
+ try {
118
+ queue.add('key1', 'item1');
119
+ queue.add('key2', 'item2');
120
+ queue.add('key3', 'item3');
121
+ await new Promise((resolve) => setTimeout(resolve, 200));
122
+ expect(processSpy).toHaveBeenCalledTimes(1);
123
+ expect(processSpy).toHaveBeenCalledWith(['item1', 'item2']);
124
+ await new Promise((resolve) => setTimeout(resolve, 500));
125
+ expect(processSpy).toHaveBeenCalledTimes(2);
126
+ expect(processSpy).toHaveBeenCalledWith(['item3']);
127
+ }
128
+ finally {
129
+ await queue.disposeAsync();
130
+ }
131
+ });
132
+ });
133
+ //# sourceMappingURL=batchingQueue.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchingQueue.test.js","sourceRoot":"","sources":["../../../src/queues/batchingQueue.test.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,6 @@ export default class BufferQueue<T> implements Queue<T> {
3
3
  #private;
4
4
  add(value: T): void;
5
5
  values(): T[];
6
+ disposeAsync(): Promise<void>;
6
7
  }
7
8
  //# sourceMappingURL=bufferQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bufferQueue.d.ts","sourceRoot":"","sources":["../../../src/queues/bufferQueue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAA;AAE9B,MAAM,CAAC,OAAO,OAAO,WAAW,CAAC,CAAC,CAAE,YAAW,KAAK,CAAC,CAAC,CAAC;;IAErD,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAInB,MAAM,IAAI,CAAC,EAAE;IAGb,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAG9B"}
@@ -6,5 +6,8 @@ export default class BufferQueue {
6
6
  values() {
7
7
  return this.#buffer;
8
8
  }
9
+ disposeAsync() {
10
+ return Promise.resolve();
11
+ }
9
12
  }
10
13
  //# sourceMappingURL=bufferQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bufferQueue.js","sourceRoot":"","sources":["../../../src/queues/bufferQueue.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,WAAW;IAC9B,OAAO,GAAQ,EAAE,CAAA;IACjB,GAAG,CAAC,KAAQ;QACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IACD,YAAY;QACV,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;CACF"}
@@ -3,6 +3,7 @@ export default class KeyedQueue<K, V> {
3
3
  private _order;
4
4
  constructor();
5
5
  enqueue(key: K, value: V): boolean;
6
+ enqueueAll(keys: K[], values: V[]): number;
6
7
  get(key: K): V | undefined;
7
8
  has(key: K): boolean;
8
9
  get size(): number;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyedQueue.d.ts","sourceRoot":"","sources":["../../../src/queues/keyedQueue.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,UAAU,CAAC,CAAC,EAAE,CAAC;IAClC,OAAO,CAAC,IAAI,CAAW;IACvB,OAAO,CAAC,MAAM,CAAK;;IAOnB,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO;IASlC,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,MAAM;IAY1C,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAI1B,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC,EAAE;CActD"}
@@ -13,6 +13,17 @@ export default class KeyedQueue {
13
13
  this._order.push(key);
14
14
  return true;
15
15
  }
16
+ enqueueAll(keys, values) {
17
+ let count = 0;
18
+ for (let i = 0; i < keys.length; i++) {
19
+ if (!this._map.has(keys[i])) {
20
+ this._map.set(keys[i], values[i]);
21
+ this._order.push(keys[i]);
22
+ count++;
23
+ }
24
+ }
25
+ return count;
26
+ }
16
27
  get(key) {
17
28
  return this._map.get(key);
18
29
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyedQueue.js","sourceRoot":"","sources":["../../../src/queues/keyedQueue.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,UAAU;IACrB,IAAI,CAAW;IACf,MAAM,CAAK;IAEnB;QACE,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAQ,CAAA;QAC3B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;IAClB,CAAC;IAED,OAAO,CAAC,GAAM,EAAE,KAAQ;QACtB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,KAAK,CAAA,CAAC,qBAAqB;QACpC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,UAAU,CAAC,IAAS,EAAE,MAAW;QAC/B,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;gBACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;gBACzB,KAAK,EAAE,CAAA;YACT,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,GAAG,CAAC,GAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED,GAAG,CAAC,GAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAA;IAC3B,CAAC;IAED,YAAY,CAAC,KAAa,EAAE,WAAmB;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;QAC1D,MAAM,MAAM,GAAQ,EAAE,CAAA;QAEtB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAChC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAClB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACvB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ export default interface Queue<T> {
2
+ add(value: T): void;
3
+ disposeAsync(): Promise<void>;
4
+ }
5
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/queues/queue.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC,CAAC;IAC9B,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;IACnB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/helpers/queue.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/queues/queue.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ import { Base, Reference } from './types.js';
2
+ export type CustomLogger = (message?: string, ...optionalParams: unknown[]) => void;
3
+ export type Fetcher = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
4
+ export declare function isBase(maybeBase?: unknown): maybeBase is Base;
5
+ export declare function isReference(maybeRef?: unknown): maybeRef is Reference;
6
+ export declare function isScalar(value: unknown): value is string | number | boolean | bigint | symbol | undefined;
7
+ export declare function take<T>(it: Iterator<T>, count: number): T[];
8
+ export declare enum ObjectLoader2Flags {
9
+ DEBUG = "debug",
10
+ USE_CACHE = "useCache"
11
+ }
12
+ export declare function getFeatureFlag(paramName: ObjectLoader2Flags, useDefault?: boolean): string | undefined;
13
+ /**
14
+ * Finds the first index of a "needle" Uint8Array within a "haystack" Uint8Array.
15
+ * @param haystack The larger array to search within.
16
+ * @param needle The smaller array to search for.
17
+ * @param start The index to start searching from. Defaults to 0.
18
+ * @returns The starting index of the needle, or -1 if not found.
19
+ */
20
+ export declare function indexOf(haystack: Uint8Array, needle: Uint8Array, start?: number): number;
21
+ //# sourceMappingURL=functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../src/types/functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAE5C,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;AAEnF,MAAM,MAAM,OAAO,GAAG,CACpB,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAC7B,IAAI,CAAC,EAAE,WAAW,KACf,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEtB,wBAAgB,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,IAAI,IAAI,CAO7D;AAED,wBAAgB,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,IAAI,SAAS,CAOrE;AAED,wBAAgB,QAAQ,CACtB,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAWlE;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAQ3D;AAED,oBAAY,kBAAkB;IAC5B,KAAK,UAAU;IACf,SAAS,aAAa;CACvB;AAOD,wBAAgB,cAAc,CAC5B,SAAS,EAAE,kBAAkB,EAC7B,UAAU,GAAE,OAAc,GACzB,MAAM,GAAG,SAAS,CAiBpB;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CACrB,QAAQ,EAAE,UAAU,EACpB,MAAM,EAAE,UAAU,EAClB,KAAK,GAAE,MAAU,GAChB,MAAM,CAsBR"}
@@ -0,0 +1,83 @@
1
+ export function isBase(maybeBase) {
2
+ return (maybeBase !== null &&
3
+ typeof maybeBase === 'object' &&
4
+ 'id' in maybeBase &&
5
+ typeof maybeBase.id === 'string');
6
+ }
7
+ export function isReference(maybeRef) {
8
+ return (maybeRef !== null &&
9
+ typeof maybeRef === 'object' &&
10
+ 'referencedId' in maybeRef &&
11
+ typeof maybeRef.referencedId === 'string');
12
+ }
13
+ export function isScalar(value) {
14
+ const type = typeof value;
15
+ return (value === null ||
16
+ type === 'string' ||
17
+ type === 'number' ||
18
+ type === 'boolean' ||
19
+ type === 'bigint' ||
20
+ type === 'symbol' ||
21
+ type === 'undefined');
22
+ }
23
+ export function take(it, count) {
24
+ const result = [];
25
+ for (let i = 0; i < count; i++) {
26
+ const itr = it.next();
27
+ if (itr.done)
28
+ break;
29
+ result.push(itr.value);
30
+ }
31
+ return result;
32
+ }
33
+ export var ObjectLoader2Flags;
34
+ (function (ObjectLoader2Flags) {
35
+ ObjectLoader2Flags["DEBUG"] = "debug";
36
+ ObjectLoader2Flags["USE_CACHE"] = "useCache";
37
+ })(ObjectLoader2Flags || (ObjectLoader2Flags = {}));
38
+ const defaultValues = {
39
+ [ObjectLoader2Flags.DEBUG]: 'false',
40
+ [ObjectLoader2Flags.USE_CACHE]: 'true'
41
+ };
42
+ export function getFeatureFlag(paramName, useDefault = true) {
43
+ // Check if the code is running in a browser environment 🌐
44
+ const isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';
45
+ if (!isBrowser) {
46
+ // If in Node.js or another server environment, return the default
47
+ return useDefault ? defaultValues[paramName] : undefined;
48
+ }
49
+ // In a browser, parse the query string
50
+ const params = new URLSearchParams(window.location.search);
51
+ // .get() returns the value, or null if it's not found.
52
+ // The nullish coalescing operator (??) provides the default value
53
+ // if the left-hand side is null or undefined.
54
+ return params.get(paramName) ?? (useDefault ? defaultValues[paramName] : undefined);
55
+ }
56
+ /**
57
+ * Finds the first index of a "needle" Uint8Array within a "haystack" Uint8Array.
58
+ * @param haystack The larger array to search within.
59
+ * @param needle The smaller array to search for.
60
+ * @param start The index to start searching from. Defaults to 0.
61
+ * @returns The starting index of the needle, or -1 if not found.
62
+ */
63
+ export function indexOf(haystack, needle, start = 0) {
64
+ if (needle.length === 0) {
65
+ return 0;
66
+ }
67
+ // The last possible starting position for a match
68
+ const limit = haystack.length - needle.length;
69
+ for (let i = start; i <= limit; i++) {
70
+ let foundMatch = true;
71
+ for (let j = 0; j < needle.length; j++) {
72
+ if (haystack[i + j] !== needle[j]) {
73
+ foundMatch = false;
74
+ break; // Mismatch, break inner loop
75
+ }
76
+ }
77
+ if (foundMatch) {
78
+ return i; // Found a full match at index i
79
+ }
80
+ }
81
+ return -1; // No match found
82
+ }
83
+ //# sourceMappingURL=functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/types/functions.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,6 @@
1
- export type CustomLogger = (message?: string, ...optionalParams: unknown[]) => void;
2
- export type Fetcher = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
3
1
  export interface Item {
4
2
  baseId: string;
5
- base: Base;
3
+ base?: Base;
6
4
  size?: number;
7
5
  }
8
6
  export interface Base {
@@ -18,8 +16,4 @@ export interface Reference {
18
16
  export interface DataChunk extends Base {
19
17
  data?: Base[];
20
18
  }
21
- export declare function isBase(maybeBase?: unknown): maybeBase is Base;
22
- export declare function isReference(maybeRef?: unknown): maybeRef is Reference;
23
- export declare function isScalar(value: unknown): value is string | number | boolean | bigint | symbol | undefined;
24
- export declare function take<T>(it: Iterator<T>, count: number): T[];
25
19
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;AAEnF,MAAM,MAAM,OAAO,GAAG,CACpB,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAC7B,IAAI,CAAC,EAAE,WAAW,KACf,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEtB,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,SAAU,SAAQ,IAAI;IACrC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAA;CACd;AAED,wBAAgB,MAAM,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,IAAI,IAAI,CAO7D;AAED,wBAAgB,WAAW,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,IAAI,SAAS,CAOrE;AAED,wBAAgB,QAAQ,CACtB,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAWlE;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAQ3D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,SAAU,SAAQ,IAAI;IACrC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAA;CACd"}
@@ -1,33 +1,2 @@
1
- export function isBase(maybeBase) {
2
- return (maybeBase !== null &&
3
- typeof maybeBase === 'object' &&
4
- 'id' in maybeBase &&
5
- typeof maybeBase.id === 'string');
6
- }
7
- export function isReference(maybeRef) {
8
- return (maybeRef !== null &&
9
- typeof maybeRef === 'object' &&
10
- 'referencedId' in maybeRef &&
11
- typeof maybeRef.referencedId === 'string');
12
- }
13
- export function isScalar(value) {
14
- const type = typeof value;
15
- return (value === null ||
16
- type === 'string' ||
17
- type === 'number' ||
18
- type === 'boolean' ||
19
- type === 'bigint' ||
20
- type === 'symbol' ||
21
- type === 'undefined');
22
- }
23
- export function take(it, count) {
24
- const result = [];
25
- for (let i = 0; i < count; i++) {
26
- const itr = it.next();
27
- if (itr.done)
28
- break;
29
- result.push(itr.value);
30
- }
31
- return result;
32
- }
1
+ export {};
33
2
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/types/types.ts"],"names":[],"mappings":"AA6BA,MAAM,UAAU,MAAM,CAAC,SAAmB;IACxC,OAAO,CACL,SAAS,KAAK,IAAI;QAClB,OAAO,SAAS,KAAK,QAAQ;QAC7B,IAAI,IAAI,SAAS;QACjB,OAAO,SAAS,CAAC,EAAE,KAAK,QAAQ,CACjC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAkB;IAC5C,OAAO,CACL,QAAQ,KAAK,IAAI;QACjB,OAAO,QAAQ,KAAK,QAAQ;QAC5B,cAAc,IAAI,QAAQ;QAC1B,OAAO,QAAQ,CAAC,YAAY,KAAK,QAAQ,CAC1C,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,KAAc;IAEd,MAAM,IAAI,GAAG,OAAO,KAAK,CAAA;IACzB,OAAO,CACL,KAAK,KAAK,IAAI;QACd,IAAI,KAAK,QAAQ;QACjB,IAAI,KAAK,QAAQ;QACjB,IAAI,KAAK,SAAS;QAClB,IAAI,KAAK,QAAQ;QACjB,IAAI,KAAK,QAAQ;QACjB,IAAI,KAAK,WAAW,CACrB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,IAAI,CAAI,EAAe,EAAE,KAAa;IACpD,MAAM,MAAM,GAAQ,EAAE,CAAA;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,CAAA;QACrB,IAAI,GAAG,CAAC,IAAI;YAAE,MAAK;QACnB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACxB,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/types/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@speckle/objectloader2",
3
- "version": "2.25.7",
3
+ "version": "2.25.8",
4
4
  "description": "This is an updated objectloader for the Speckle viewer written in typescript",
5
5
  "main": "./dist/commonjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -33,8 +33,7 @@
33
33
  "author": "AEC Systems",
34
34
  "license": "Apache-2.0",
35
35
  "dependencies": {
36
- "@speckle/shared": "^2.25.7",
37
- "dexie": "^4.0.11"
36
+ "@speckle/shared": "^2.25.8"
38
37
  },
39
38
  "devDependencies": {
40
39
  "@types/lodash": "^4.17.5",
package/readme.md CHANGED
@@ -11,26 +11,51 @@ The main aim for the objectloader is:
11
11
 
12
12
  ## Architecture
13
13
 
14
- To achieve increased concurrency, the different phases of the objectloader are divided into pools of workers with queues to feed them.
14
+ To achieve increased concurrency, the different phases of the objectloader are divided into pools of workers with queues to feed them. Below is a sequence diagram of the worker stages
15
+
16
+ ```mermaid
17
+ sequenceDiagram
18
+ ObjectLoader2->>CacheReader: Root+Children
19
+ CacheReader-->>Database: Item exists?
20
+ CacheReader->>ObjectLoader2: Item exists in Cache
21
+ CacheReader->>Downloader: Item does not exist in Cache
22
+ Downloader->>CacheWriter: Save Item to Cache
23
+ CacheWriter->>Database: Write Item
24
+ Downloader->>ObjectLoader2: Item exists in Cache
25
+ ```
26
+
27
+ The queues between stages are illustrated below with the concurrency
15
28
 
16
29
  ```mermaid
17
30
  flowchart TD
18
- start(Root Commit)
19
- getIds(Parse Root to get all IDs)
20
- cached{Cached?}
21
- download(Download IDs)
22
- save(Write to Cache)
23
- load(Load from Cache)
24
- generate(Generate to Viewer!)
25
-
26
- start --> getIds
27
- getIds --> cached
28
- cached -->|Yes| load
29
- cached -->|No| download
30
- load --> generate
31
- download --> generate
32
- download --> save
31
+ start(ObjectLoader2)
32
+ cachedQueue(BatchingQueue)
33
+ cachedExists{Exists?}
34
+ downloadQueue(BatchingQueue)
35
+ download{Download Batch}
36
+ saveQueue(BatchingQueue)
37
+ save{Save to Database}
38
+ asyncGeneratorQueue(Aggregated Async Generator Queue)
39
+ loop(Generate to Viewer!)
33
40
 
41
+ start -- Add IDs --> cachedQueue
42
+
43
+ subgraph CacheReader
44
+ cachedQueue -- Checks by Batch --> cachedExists
45
+ end
46
+ cachedExists -->|Yes| asyncGeneratorQueue
47
+ subgraph Downloader
48
+ cachedExists -->|No| downloadQueue
49
+ downloadQueue --> download
50
+ end
51
+ subgraph CacheWriter
52
+ download -- add to queue --> saveQueue
53
+ saveQueue --> save
54
+ end
55
+ subgraph Viewer
56
+ download -- add to queue --> asyncGeneratorQueue
57
+ asyncGeneratorQueue -- Generator Loop --> loop
58
+ end
34
59
  ```
35
60
 
36
61
  From the list of IDs, they are moved to a queue to be begin checking the cache from a pool of readers.
@@ -40,3 +65,26 @@ Results are then sent to the viewer, if found, else they're send to the download
40
65
  The download queue is a batching mechanism that gets what is available, up to a limit or a timeout. The results are parsed and given to the generator and written to another queue.
41
66
 
42
67
  The write cache queue is processed with a single writer to the indexeddb.
68
+
69
+ ## Deferment
70
+
71
+ Deferment is what happens with the viewer does a random access to OL2. It returns a promise but it will be fulfilled later if the item isn't in memory.
72
+
73
+ The `DefermentManager` only holds a subset of the model in memory. If the requested item isn't in memory, then it enqueues the request into the general process laid out above.
74
+
75
+ When items are returned to the generator loop, `undefer` is called which caches the item in the manager as well as fulfills any outstanding promises.
76
+
77
+ A cleanup process is ran to be a singleton process. This process sorts by the total number of requests and the size. If anything falls outside the size window, then it is removed from the manager's memory cache.
78
+
79
+ The aim is to speed up random access while still getting items from the cache in batches. Items that are accessed randomly tend to be references in the model.
80
+
81
+ ## Loader options
82
+
83
+ These can be use via a query string parameter. For example: `https://app.speckle.systems/projects/57bbfabd80/models/81b8d76ef1` can have debug logging enabled with: `https://app.speckle.systems/projects/57bbfabd80/models/81b8d76ef1?debug=true`
84
+
85
+ Current parameters:
86
+
87
+ | Parameter | Default | Type |
88
+ | ---------- | ------- | ------- |
89
+ | `debug` | `false` | boolean |
90
+ | `useCache` | `true` | boolean |
@@ -1,4 +1,4 @@
1
- import Queue from '../helpers/queue.js'
1
+ import Queue from '../queues/queue.js'
2
2
  import { Item } from '../types/types.js'
3
3
 
4
4
  export interface Downloader extends Queue<string> {
@@ -13,6 +13,6 @@ export interface Downloader extends Queue<string> {
13
13
 
14
14
  export interface Database {
15
15
  getAll(keys: string[]): Promise<(Item | undefined)[]>
16
- cacheSaveBatch(params: { batch: Item[] }): Promise<void>
16
+ saveBatch(params: { batch: Item[] }): Promise<void>
17
17
  disposeAsync(): Promise<void>
18
18
  }
@@ -1,10 +1,10 @@
1
- import { describe, expect, test } from 'vitest'
2
- import { ObjectLoader2 } from './objectLoader2.js'
1
+ import { describe, test, expect } from 'vitest'
3
2
  import { Base, Item } from '../types/types.js'
4
- import { MemoryDownloader } from './downloaders/memoryDownloader.js'
3
+ import { ObjectLoader2 } from './objectLoader2.js'
4
+ import IndexedDatabase from './stages/indexedDatabase.js'
5
5
  import { IDBFactory, IDBKeyRange } from 'fake-indexeddb'
6
- import { MemoryDatabase } from './databases/memoryDatabase.js'
7
- import IndexedDatabase from './databases/indexedDatabase.js'
6
+ import { MemoryDatabase } from './stages/memory/memoryDatabase.js'
7
+ import { MemoryDownloader } from './stages/memory/memoryDownloader.js'
8
8
 
9
9
  describe('objectloader2', () => {
10
10
  test('can get a root object from cache', async () => {
@@ -23,6 +23,7 @@ describe('objectloader2', () => {
23
23
  })
24
24
  })
25
25
  const x = await loader.getRootObject()
26
+ await loader.disposeAsync()
26
27
  expect(x).toMatchSnapshot()
27
28
  })
28
29
 
@@ -42,6 +43,7 @@ describe('objectloader2', () => {
42
43
  })
43
44
  })
44
45
  const x = await loader.getRootObject()
46
+ await loader.disposeAsync()
45
47
  expect(x).toMatchSnapshot()
46
48
  })
47
49
 
@@ -64,7 +66,11 @@ describe('objectloader2', () => {
64
66
  const r = []
65
67
  for await (const x of loader.getObjectIterator()) {
66
68
  r.push(x)
69
+ if (r.length >= 1) {
70
+ break
71
+ }
67
72
  }
73
+ await loader.disposeAsync()
68
74
 
69
75
  expect(r).toMatchSnapshot()
70
76
  })
@@ -98,7 +104,11 @@ describe('objectloader2', () => {
98
104
  const obj = loader.getObject({ id: child1.baseId })
99
105
  for await (const x of loader.getObjectIterator()) {
100
106
  r.push(x)
107
+ if (r.length >= 2) {
108
+ break
109
+ }
101
110
  }
111
+ await loader.disposeAsync()
102
112
 
103
113
  expect(obj).toBeDefined()
104
114
  expect(r).toMatchSnapshot()
@@ -129,16 +139,17 @@ describe('objectloader2', () => {
129
139
  const loader = new ObjectLoader2({
130
140
  rootId: root.baseId,
131
141
  downloader: new MemoryDownloader(rootId, records),
132
- database: new IndexedDatabase({
133
- indexedDB: new IDBFactory(),
134
- keyRange: IDBKeyRange
135
- })
142
+ database: new MemoryDatabase({ items: records })
136
143
  })
137
144
  const r = []
138
145
  const obj = loader.getObject({ id: child1.baseId })
139
146
  for await (const x of loader.getObjectIterator()) {
140
147
  r.push(x)
148
+ if (r.length >= 2) {
149
+ break
150
+ }
141
151
  }
152
+ await loader.disposeAsync()
142
153
 
143
154
  expect(obj).toBeDefined()
144
155
  expect(r).toMatchSnapshot()
@@ -172,6 +183,7 @@ describe('objectloader2', () => {
172
183
  })
173
184
  })
174
185
  const x = await loader.getRootObject()
186
+ await loader.disposeAsync()
175
187
  expect(x).toMatchSnapshot()
176
188
  })
177
189
 
@@ -224,6 +236,7 @@ describe('objectloader2', () => {
224
236
  for await (const x of loader.getObjectIterator()) {
225
237
  r.push(x)
226
238
  }
239
+ await loader.disposeAsync()
227
240
  expect(r).toMatchSnapshot()
228
241
  })
229
242
  })