@speckle/objectloader2 2.25.1 → 2.25.7

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 (222) hide show
  1. package/dist/commonjs/helpers/aggregateQueue.d.ts +8 -0
  2. package/dist/commonjs/helpers/aggregateQueue.d.ts.map +1 -0
  3. package/dist/commonjs/helpers/aggregateQueue.js +19 -0
  4. package/dist/commonjs/helpers/aggregateQueue.js.map +1 -0
  5. package/dist/commonjs/helpers/asyncGeneratorQueue.d.ts +8 -0
  6. package/dist/commonjs/helpers/asyncGeneratorQueue.d.ts.map +1 -0
  7. package/dist/commonjs/helpers/asyncGeneratorQueue.js +35 -0
  8. package/dist/commonjs/helpers/asyncGeneratorQueue.js.map +1 -0
  9. package/dist/commonjs/helpers/batchedPool.d.ts +12 -0
  10. package/dist/commonjs/helpers/batchedPool.d.ts.map +1 -0
  11. package/dist/commonjs/helpers/batchedPool.js +45 -0
  12. package/dist/commonjs/helpers/batchedPool.js.map +1 -0
  13. package/dist/commonjs/helpers/batchingQueue.d.ts +14 -0
  14. package/dist/commonjs/helpers/batchingQueue.d.ts.map +1 -0
  15. package/dist/commonjs/helpers/batchingQueue.js +77 -0
  16. package/dist/commonjs/helpers/batchingQueue.js.map +1 -0
  17. package/dist/commonjs/helpers/bufferQueue.d.ts +7 -0
  18. package/dist/commonjs/helpers/bufferQueue.d.ts.map +1 -0
  19. package/dist/commonjs/helpers/bufferQueue.js +13 -0
  20. package/dist/commonjs/helpers/bufferQueue.js.map +1 -0
  21. package/dist/commonjs/helpers/cachePump.d.ts +22 -0
  22. package/dist/commonjs/helpers/cachePump.d.ts.map +1 -0
  23. package/dist/commonjs/helpers/cachePump.js +86 -0
  24. package/dist/commonjs/helpers/cachePump.js.map +1 -0
  25. package/dist/commonjs/helpers/cacheReader.d.ts +14 -0
  26. package/dist/commonjs/helpers/cacheReader.d.ts.map +1 -0
  27. package/dist/commonjs/helpers/cacheReader.js +58 -0
  28. package/dist/commonjs/helpers/cacheReader.js.map +1 -0
  29. package/dist/commonjs/helpers/defermentManager.d.ts +28 -0
  30. package/dist/commonjs/helpers/defermentManager.d.ts.map +1 -0
  31. package/dist/commonjs/helpers/defermentManager.js +150 -0
  32. package/dist/commonjs/helpers/defermentManager.js.map +1 -0
  33. package/dist/commonjs/helpers/deferredBase.d.ts +19 -0
  34. package/dist/commonjs/helpers/deferredBase.d.ts.map +1 -0
  35. package/dist/commonjs/helpers/deferredBase.js +51 -0
  36. package/dist/commonjs/helpers/deferredBase.js.map +1 -0
  37. package/dist/commonjs/helpers/keyedQueue.d.ts +11 -0
  38. package/dist/commonjs/helpers/keyedQueue.d.ts.map +1 -0
  39. package/dist/commonjs/helpers/keyedQueue.js +41 -0
  40. package/dist/commonjs/helpers/keyedQueue.js.map +1 -0
  41. package/dist/commonjs/helpers/memoryPump.d.ts +15 -0
  42. package/dist/commonjs/helpers/memoryPump.d.ts.map +1 -0
  43. package/dist/commonjs/helpers/memoryPump.js +34 -0
  44. package/dist/commonjs/helpers/memoryPump.js.map +1 -0
  45. package/dist/commonjs/helpers/pump.d.ts +8 -0
  46. package/dist/commonjs/helpers/pump.d.ts.map +1 -0
  47. package/dist/commonjs/helpers/pump.js +3 -0
  48. package/dist/commonjs/helpers/pump.js.map +1 -0
  49. package/dist/commonjs/helpers/queue.d.ts +4 -0
  50. package/dist/commonjs/helpers/queue.d.ts.map +1 -0
  51. package/dist/commonjs/helpers/queue.js +3 -0
  52. package/dist/commonjs/helpers/queue.js.map +1 -0
  53. package/dist/commonjs/index.d.ts +3 -0
  54. package/dist/commonjs/index.d.ts.map +1 -0
  55. package/dist/commonjs/index.js +1 -3
  56. package/dist/commonjs/index.js.map +1 -0
  57. package/dist/commonjs/operations/databases/indexedDatabase.d.ts +27 -0
  58. package/dist/commonjs/operations/databases/indexedDatabase.d.ts.map +1 -0
  59. package/dist/commonjs/operations/databases/indexedDatabase.js +98 -0
  60. package/dist/commonjs/operations/databases/indexedDatabase.js.map +1 -0
  61. package/dist/commonjs/operations/databases/memoryDatabase.d.ts +13 -0
  62. package/dist/commonjs/operations/databases/memoryDatabase.d.ts.map +1 -0
  63. package/dist/commonjs/operations/databases/memoryDatabase.js +33 -0
  64. package/dist/commonjs/operations/databases/memoryDatabase.js.map +1 -0
  65. package/dist/commonjs/operations/downloaders/memoryDownloader.d.ts +16 -0
  66. package/dist/commonjs/operations/downloaders/memoryDownloader.d.ts.map +1 -0
  67. package/dist/commonjs/operations/downloaders/memoryDownloader.js +35 -0
  68. package/dist/commonjs/operations/downloaders/memoryDownloader.js.map +1 -0
  69. package/dist/commonjs/operations/downloaders/serverDownloader.d.ts +32 -0
  70. package/dist/commonjs/operations/downloaders/serverDownloader.d.ts.map +1 -0
  71. package/dist/commonjs/operations/downloaders/serverDownloader.js +169 -0
  72. package/dist/commonjs/operations/downloaders/serverDownloader.js.map +1 -0
  73. package/dist/commonjs/operations/interfaces.d.ts +19 -0
  74. package/dist/commonjs/operations/interfaces.d.ts.map +1 -0
  75. package/dist/commonjs/operations/interfaces.js +3 -0
  76. package/dist/commonjs/operations/interfaces.js.map +1 -0
  77. package/dist/commonjs/operations/objectLoader2.d.ts +16 -0
  78. package/dist/commonjs/operations/objectLoader2.d.ts.map +1 -0
  79. package/dist/commonjs/operations/objectLoader2.js +101 -0
  80. package/dist/commonjs/operations/objectLoader2.js.map +1 -0
  81. package/dist/commonjs/operations/objectLoader2Factory.d.ts +25 -0
  82. package/dist/commonjs/operations/objectLoader2Factory.d.ts.map +1 -0
  83. package/dist/commonjs/operations/objectLoader2Factory.js +68 -0
  84. package/dist/commonjs/operations/objectLoader2Factory.js.map +1 -0
  85. package/dist/commonjs/operations/options.d.ts +26 -0
  86. package/dist/commonjs/operations/options.d.ts.map +1 -0
  87. package/dist/commonjs/operations/options.js +3 -0
  88. package/dist/commonjs/operations/options.js.map +1 -0
  89. package/dist/commonjs/operations/traverser.d.ts +19 -0
  90. package/dist/commonjs/operations/traverser.d.ts.map +1 -0
  91. package/dist/commonjs/operations/traverser.js +96 -0
  92. package/dist/commonjs/operations/traverser.js.map +1 -0
  93. package/dist/commonjs/package.json +3 -0
  94. package/dist/commonjs/types/errors.d.ts +21 -0
  95. package/dist/commonjs/types/errors.d.ts.map +1 -0
  96. package/dist/commonjs/types/errors.js +28 -0
  97. package/dist/commonjs/types/errors.js.map +1 -0
  98. package/dist/commonjs/types/types.d.ts +25 -0
  99. package/dist/commonjs/types/types.d.ts.map +1 -0
  100. package/dist/commonjs/types/types.js +39 -0
  101. package/dist/commonjs/types/types.js.map +1 -0
  102. package/dist/esm/helpers/aggregateQueue.d.ts +8 -0
  103. package/dist/esm/helpers/aggregateQueue.d.ts.map +1 -0
  104. package/dist/esm/helpers/aggregateQueue.js +16 -0
  105. package/dist/esm/helpers/aggregateQueue.js.map +1 -0
  106. package/dist/esm/helpers/asyncGeneratorQueue.d.ts +8 -0
  107. package/dist/esm/helpers/asyncGeneratorQueue.d.ts.map +1 -0
  108. package/dist/esm/helpers/asyncGeneratorQueue.js +32 -0
  109. package/dist/esm/helpers/asyncGeneratorQueue.js.map +1 -0
  110. package/dist/esm/helpers/batchedPool.d.ts +12 -0
  111. package/dist/esm/helpers/batchedPool.d.ts.map +1 -0
  112. package/dist/esm/helpers/batchedPool.js +42 -0
  113. package/dist/esm/helpers/batchedPool.js.map +1 -0
  114. package/dist/esm/helpers/batchingQueue.d.ts +14 -0
  115. package/dist/esm/helpers/batchingQueue.d.ts.map +1 -0
  116. package/dist/esm/helpers/batchingQueue.js +71 -0
  117. package/dist/esm/helpers/batchingQueue.js.map +1 -0
  118. package/dist/esm/helpers/bufferQueue.d.ts +7 -0
  119. package/dist/esm/helpers/bufferQueue.d.ts.map +1 -0
  120. package/dist/esm/helpers/bufferQueue.js +10 -0
  121. package/dist/esm/helpers/bufferQueue.js.map +1 -0
  122. package/dist/esm/helpers/cachePump.d.ts +22 -0
  123. package/dist/esm/helpers/cachePump.d.ts.map +1 -0
  124. package/dist/esm/helpers/cachePump.js +79 -0
  125. package/dist/esm/helpers/cachePump.js.map +1 -0
  126. package/dist/esm/helpers/cacheReader.d.ts +14 -0
  127. package/dist/esm/helpers/cacheReader.d.ts.map +1 -0
  128. package/dist/esm/helpers/cacheReader.js +51 -0
  129. package/dist/esm/helpers/cacheReader.js.map +1 -0
  130. package/dist/esm/helpers/defermentManager.d.ts +28 -0
  131. package/dist/esm/helpers/defermentManager.d.ts.map +1 -0
  132. package/dist/esm/helpers/defermentManager.js +146 -0
  133. package/dist/esm/helpers/defermentManager.js.map +1 -0
  134. package/dist/esm/helpers/deferredBase.d.ts +19 -0
  135. package/dist/esm/helpers/deferredBase.d.ts.map +1 -0
  136. package/dist/esm/helpers/deferredBase.js +47 -0
  137. package/dist/esm/helpers/deferredBase.js.map +1 -0
  138. package/dist/esm/helpers/keyedQueue.d.ts +11 -0
  139. package/dist/esm/helpers/keyedQueue.d.ts.map +1 -0
  140. package/dist/esm/helpers/keyedQueue.js +38 -0
  141. package/dist/esm/helpers/keyedQueue.js.map +1 -0
  142. package/dist/esm/helpers/memoryPump.d.ts +15 -0
  143. package/dist/esm/helpers/memoryPump.d.ts.map +1 -0
  144. package/dist/esm/helpers/memoryPump.js +30 -0
  145. package/dist/esm/helpers/memoryPump.js.map +1 -0
  146. package/dist/esm/helpers/pump.d.ts +8 -0
  147. package/dist/esm/helpers/pump.d.ts.map +1 -0
  148. package/dist/esm/helpers/pump.js +2 -0
  149. package/dist/esm/helpers/pump.js.map +1 -0
  150. package/dist/esm/helpers/queue.d.ts +4 -0
  151. package/dist/esm/helpers/queue.d.ts.map +1 -0
  152. package/dist/esm/helpers/queue.js +2 -0
  153. package/dist/esm/helpers/queue.js.map +1 -0
  154. package/dist/esm/index.d.ts +3 -0
  155. package/dist/esm/index.d.ts.map +1 -0
  156. package/dist/esm/index.js +0 -1
  157. package/dist/esm/index.js.map +1 -0
  158. package/dist/esm/operations/databases/indexedDatabase.d.ts +27 -0
  159. package/dist/esm/operations/databases/indexedDatabase.d.ts.map +1 -0
  160. package/dist/esm/operations/databases/indexedDatabase.js +93 -0
  161. package/dist/esm/operations/databases/indexedDatabase.js.map +1 -0
  162. package/dist/esm/operations/databases/memoryDatabase.d.ts +13 -0
  163. package/dist/esm/operations/databases/memoryDatabase.d.ts.map +1 -0
  164. package/dist/esm/operations/databases/memoryDatabase.js +29 -0
  165. package/dist/esm/operations/databases/memoryDatabase.js.map +1 -0
  166. package/dist/esm/operations/downloaders/memoryDownloader.d.ts +16 -0
  167. package/dist/esm/operations/downloaders/memoryDownloader.d.ts.map +1 -0
  168. package/dist/esm/operations/downloaders/memoryDownloader.js +31 -0
  169. package/dist/esm/operations/downloaders/memoryDownloader.js.map +1 -0
  170. package/dist/esm/operations/downloaders/serverDownloader.d.ts +32 -0
  171. package/dist/esm/operations/downloaders/serverDownloader.d.ts.map +1 -0
  172. package/dist/esm/operations/downloaders/serverDownloader.js +163 -0
  173. package/dist/esm/operations/downloaders/serverDownloader.js.map +1 -0
  174. package/dist/esm/operations/interfaces.d.ts +19 -0
  175. package/dist/esm/operations/interfaces.d.ts.map +1 -0
  176. package/dist/esm/operations/interfaces.js +2 -0
  177. package/dist/esm/operations/interfaces.js.map +1 -0
  178. package/dist/esm/operations/objectLoader2.d.ts +16 -0
  179. package/dist/esm/operations/objectLoader2.d.ts.map +1 -0
  180. package/dist/esm/operations/objectLoader2.js +94 -0
  181. package/dist/esm/operations/objectLoader2.js.map +1 -0
  182. package/dist/esm/operations/objectLoader2Factory.d.ts +25 -0
  183. package/dist/esm/operations/objectLoader2Factory.d.ts.map +1 -0
  184. package/dist/esm/operations/objectLoader2Factory.js +61 -0
  185. package/dist/esm/operations/objectLoader2Factory.js.map +1 -0
  186. package/dist/esm/operations/options.d.ts +26 -0
  187. package/dist/esm/operations/options.d.ts.map +1 -0
  188. package/dist/esm/operations/options.js +2 -0
  189. package/dist/esm/operations/options.js.map +1 -0
  190. package/dist/esm/operations/traverser.d.ts +19 -0
  191. package/dist/esm/operations/traverser.d.ts.map +1 -0
  192. package/dist/esm/operations/traverser.js +93 -0
  193. package/dist/esm/operations/traverser.js.map +1 -0
  194. package/dist/esm/package.json +3 -0
  195. package/dist/esm/types/errors.d.ts +21 -0
  196. package/dist/esm/types/errors.d.ts.map +1 -0
  197. package/dist/esm/types/errors.js +23 -0
  198. package/dist/esm/types/errors.js.map +1 -0
  199. package/dist/esm/types/types.d.ts +25 -0
  200. package/dist/esm/types/types.d.ts.map +1 -0
  201. package/dist/esm/types/types.js +33 -0
  202. package/dist/esm/types/types.js.map +1 -0
  203. package/package.json +2 -2
  204. package/src/helpers/cachePump.disposal.spec.ts +3 -1
  205. package/src/helpers/cachePump.spec.ts +2 -1
  206. package/src/helpers/cachePump.ts +9 -1
  207. package/src/helpers/defermentManager.defermentTotals.spec.ts +53 -0
  208. package/src/helpers/defermentManager.ts +20 -1
  209. package/src/index.ts +0 -1
  210. package/src/operations/databases/__snapshots__/indexedDatabase.spec.ts.snap +13 -26
  211. package/src/operations/databases/indexedDatabase.spec.ts +23 -27
  212. package/src/operations/databases/indexedDatabase.ts +1 -25
  213. package/src/operations/databases/memoryDatabase.spec.ts +48 -0
  214. package/src/operations/databases/memoryDatabase.ts +0 -8
  215. package/src/operations/downloaders/__snapshots__/memoryDownloader.spec.ts.snap +12 -0
  216. package/src/operations/downloaders/memoryDownloader.spec.ts +49 -0
  217. package/src/operations/downloaders/memoryDownloader.ts +1 -1
  218. package/src/operations/downloaders/serverDownloader.ts +1 -1
  219. package/src/operations/interfaces.ts +0 -1
  220. package/src/operations/objectLoader2.ts +12 -4
  221. package/src/operations/objectLoader2Factory.ts +40 -18
  222. package/src/test/e2e.spec.ts +4 -2
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DefermentManager = void 0;
4
+ const deferredBase_js_1 = require("./deferredBase.js");
5
+ class DefermentManager {
6
+ options;
7
+ deferments = new Map();
8
+ timer;
9
+ logger;
10
+ currentSize = 0;
11
+ disposed = false;
12
+ //tracks total deferment requests for each id
13
+ //this is used to prevent cleaning up deferments that are still being requested
14
+ totalDefermentRequests = new Map();
15
+ constructor(options) {
16
+ this.options = options;
17
+ this.resetGlobalTimer();
18
+ this.logger = options.logger || (() => { });
19
+ }
20
+ now() {
21
+ return Date.now();
22
+ }
23
+ isDeferred(id) {
24
+ return this.deferments.has(id);
25
+ }
26
+ get(id) {
27
+ if (this.disposed)
28
+ throw new Error('DefermentManager is disposed');
29
+ return this.deferments.get(id);
30
+ }
31
+ async defer(params) {
32
+ if (this.disposed)
33
+ throw new Error('DefermentManager is disposed');
34
+ this.trackDefermentRequest(params.id);
35
+ const now = this.now();
36
+ const deferredBase = this.deferments.get(params.id);
37
+ if (deferredBase) {
38
+ deferredBase.setAccess(now);
39
+ return deferredBase.getPromise();
40
+ }
41
+ const notYetFound = new deferredBase_js_1.DeferredBase(this.options.ttlms, params.id, now + this.options.ttlms);
42
+ this.deferments.set(params.id, notYetFound);
43
+ return notYetFound.getPromise();
44
+ }
45
+ trackDefermentRequest(id) {
46
+ const request = this.totalDefermentRequests.get(id);
47
+ if (request) {
48
+ this.totalDefermentRequests.set(id, request + 1);
49
+ }
50
+ else {
51
+ this.totalDefermentRequests.set(id, 1);
52
+ }
53
+ }
54
+ undefer(item) {
55
+ if (this.disposed)
56
+ throw new Error('DefermentManager is disposed');
57
+ const now = this.now();
58
+ this.currentSize += item.size || 0;
59
+ //order matters here with found before undefer
60
+ const deferredBase = this.deferments.get(item.baseId);
61
+ if (deferredBase) {
62
+ deferredBase.found(item);
63
+ deferredBase.setAccess(now);
64
+ }
65
+ else {
66
+ const existing = new deferredBase_js_1.DeferredBase(this.options.ttlms, item.baseId, now);
67
+ existing.found(item);
68
+ this.deferments.set(item.baseId, existing);
69
+ }
70
+ }
71
+ resetGlobalTimer() {
72
+ const run = () => {
73
+ this.cleanDeferments();
74
+ this.timer = setTimeout(run, this.options.ttlms);
75
+ };
76
+ this.timer = setTimeout(run, this.options.ttlms);
77
+ }
78
+ dispose() {
79
+ if (this.disposed)
80
+ return;
81
+ this.disposed = true;
82
+ if (this.timer) {
83
+ clearTimeout(this.timer);
84
+ this.timer = undefined;
85
+ }
86
+ this.clearDeferments();
87
+ }
88
+ clearDeferments() {
89
+ let waiting = 0;
90
+ for (const deferredBase of this.deferments.values()) {
91
+ deferredBase.done(0);
92
+ if (deferredBase.getItem() === undefined) {
93
+ waiting++;
94
+ }
95
+ }
96
+ this.currentSize = 0;
97
+ this.deferments.clear();
98
+ this.logger('cleared deferments, left', waiting);
99
+ }
100
+ cleanDeferments() {
101
+ const maxSizeBytes = this.options.maxSizeInMb * 1024 * 1024;
102
+ if (this.currentSize < maxSizeBytes) {
103
+ this.logger('deferments size is ok, no need to clean', this.currentSize, maxSizeBytes);
104
+ return;
105
+ }
106
+ const now = this.now();
107
+ let cleaned = 0;
108
+ const start = performance.now();
109
+ for (const deferredBase of Array.from(this.deferments.values())
110
+ .filter((x) => x.isExpired(now))
111
+ .sort((a, b) => this.compareMaybeBasesBySize(a.getItem(), b.getItem()))) {
112
+ if (deferredBase.done(now)) {
113
+ //if the deferment is done but has been requested multiple times,
114
+ //we do not clean it up to allow the requests to resolve
115
+ const requestCount = this.totalDefermentRequests.get(deferredBase.getId());
116
+ if (requestCount && requestCount > 1) {
117
+ return;
118
+ }
119
+ this.currentSize -= deferredBase.getItem()?.size || 0;
120
+ this.deferments.delete(deferredBase.getId());
121
+ cleaned++;
122
+ if (this.currentSize < maxSizeBytes) {
123
+ break;
124
+ }
125
+ }
126
+ }
127
+ this.logger('cleaned deferments: cleaned, left, time', cleaned, this.deferments.size, performance.now() - start);
128
+ return;
129
+ }
130
+ compareMaybeBasesBySize(a, b) {
131
+ if (a === undefined && b === undefined)
132
+ return 0;
133
+ if (a === undefined)
134
+ return -1;
135
+ if (b === undefined)
136
+ return 1;
137
+ return this.compareMaybe(a.size, b.size);
138
+ }
139
+ compareMaybe(a, b) {
140
+ if (a === undefined && b === undefined)
141
+ return 0;
142
+ if (a === undefined)
143
+ return -1;
144
+ if (b === undefined)
145
+ return 1;
146
+ return a - b;
147
+ }
148
+ }
149
+ exports.DefermentManager = DefermentManager;
150
+ //# sourceMappingURL=defermentManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defermentManager.js","sourceRoot":"","sources":["../../../src/helpers/defermentManager.ts"],"names":[],"mappings":";;;AAAA,uDAAgD;AAIhD,MAAa,gBAAgB;IAUP;IATZ,UAAU,GAA8B,IAAI,GAAG,EAAE,CAAA;IACjD,KAAK,CAAgC;IACrC,MAAM,CAAc;IACpB,WAAW,GAAG,CAAC,CAAA;IACf,QAAQ,GAAG,KAAK,CAAA;IACxB,6CAA6C;IAC7C,+EAA+E;IACvE,sBAAsB,GAAwB,IAAI,GAAG,EAAE,CAAA;IAE/D,YAAoB,OAAgC;QAAhC,YAAO,GAAP,OAAO,CAAyB;QAClD,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,GAAS,EAAE,GAAE,CAAC,CAAC,CAAA;IAClD,CAAC;IAEO,GAAG;QACT,OAAO,IAAI,CAAC,GAAG,EAAE,CAAA;IACnB,CAAC;IAED,UAAU,CAAC,EAAU;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAChC,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAClE,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAsB;QAChC,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAClE,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACnD,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YAC3B,OAAO,YAAY,CAAC,UAAU,EAAE,CAAA;QAClC,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,8BAAY,CAClC,IAAI,CAAC,OAAO,CAAC,KAAK,EAClB,MAAM,CAAC,EAAE,EACT,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CACzB,CAAA;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;QAC3C,OAAO,WAAW,CAAC,UAAU,EAAE,CAAA;IACjC,CAAC;IAEO,qBAAqB,CAAC,EAAU;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACnD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC,CAAA;QAClD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QACxC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAU;QAChB,IAAI,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAClE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAA;QAClC,8CAA8C;QAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACrD,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACxB,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QAC7B,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,IAAI,8BAAY,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;YACvE,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACpB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC5C,CAAC;IACH,CAAC;IAEO,gBAAgB;QACtB,MAAM,GAAG,GAAG,GAAS,EAAE;YACrB,IAAI,CAAC,eAAe,EAAE,CAAA;YACtB,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAClD,CAAC,CAAA;QACD,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAClD,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAM;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACxB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACxB,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,CAAA;IACxB,CAAC;IAEO,eAAe;QACrB,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;YACpD,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACpB,IAAI,YAAY,CAAC,OAAO,EAAE,KAAK,SAAS,EAAE,CAAC;gBACzC,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;QACpB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QACvB,IAAI,CAAC,MAAM,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IAEO,eAAe;QACrB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,GAAG,IAAI,CAAA;QAC3D,IAAI,IAAI,CAAC,WAAW,GAAG,YAAY,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,CACT,yCAAyC,EACzC,IAAI,CAAC,WAAW,EAChB,YAAY,CACb,CAAA;YACD,OAAM;QACR,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;QAC/B,KAAK,MAAM,YAAY,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;aAC5D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;aAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;YAC1E,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,iEAAiE;gBACjE,wDAAwD;gBACxD,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAA;gBAC1E,IAAI,YAAY,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;oBACrC,OAAM;gBACR,CAAC;gBACD,IAAI,CAAC,WAAW,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE,IAAI,IAAI,CAAC,CAAA;gBACrD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAA;gBAC5C,OAAO,EAAE,CAAA;gBACT,IAAI,IAAI,CAAC,WAAW,GAAG,YAAY,EAAE,CAAC;oBACpC,MAAK;gBACP,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,CACT,yCAAyC,EACzC,OAAO,EACP,IAAI,CAAC,UAAU,CAAC,IAAI,EACpB,WAAW,CAAC,GAAG,EAAE,GAAG,KAAK,CAC1B,CAAA;QACD,OAAM;IACR,CAAC;IAED,uBAAuB,CAAC,CAAmB,EAAE,CAAmB;QAC9D,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,CAAA;QAChD,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC,CAAA;QAC9B,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,CAAA;QAC7B,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAED,YAAY,CAAC,CAAqB,EAAE,CAAqB;QACvD,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,CAAA;QAChD,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,CAAC,CAAA;QAC9B,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,CAAA;QAC7B,OAAO,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;CACF;AA3JD,4CA2JC"}
@@ -0,0 +1,19 @@
1
+ import { Base, Item } from '../types/types.js';
2
+ export declare class DeferredBase {
3
+ private promise;
4
+ private resolve;
5
+ private reject;
6
+ private item?;
7
+ private readonly id;
8
+ private expiresAt;
9
+ private ttl;
10
+ constructor(ttl: number, id: string, expiresAt: number);
11
+ getId(): string;
12
+ getItem(): Item | undefined;
13
+ getPromise(): Promise<Base>;
14
+ isExpired(now: number): boolean;
15
+ setAccess(now: number): void;
16
+ found(value: Item): void;
17
+ done(now: number): boolean;
18
+ }
19
+ //# sourceMappingURL=deferredBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deferredBase.d.ts","sourceRoot":"","sources":["../../../src/helpers/deferredBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAE9C,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,IAAI,CAAC,CAAM;IAEnB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAQ;IAC3B,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,GAAG,CAAQ;gBAEP,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAUtD,KAAK,IAAI,MAAM;IAIf,OAAO,IAAI,IAAI,GAAG,SAAS;IAI3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAG/B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI5B,KAAK,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI;IAIxB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAS3B"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeferredBase = void 0;
4
+ class DeferredBase {
5
+ promise;
6
+ resolve;
7
+ reject;
8
+ item;
9
+ id;
10
+ expiresAt; // Timestamp in ms
11
+ ttl; // ttl in ms
12
+ constructor(ttl, id, expiresAt) {
13
+ this.expiresAt = expiresAt;
14
+ this.ttl = ttl;
15
+ this.id = id;
16
+ this.promise = new Promise((resolve, reject) => {
17
+ this.resolve = resolve;
18
+ this.reject = reject;
19
+ });
20
+ }
21
+ getId() {
22
+ return this.id;
23
+ }
24
+ getItem() {
25
+ return this.item;
26
+ }
27
+ getPromise() {
28
+ return this.promise;
29
+ }
30
+ isExpired(now) {
31
+ return this.item !== undefined && now > this.expiresAt;
32
+ }
33
+ setAccess(now) {
34
+ this.expiresAt = now + this.ttl;
35
+ }
36
+ found(value) {
37
+ this.item = value;
38
+ this.resolve(value.base);
39
+ }
40
+ done(now) {
41
+ if (this.item) {
42
+ this.resolve(this.item.base);
43
+ }
44
+ if (this.isExpired(now)) {
45
+ return true;
46
+ }
47
+ return false;
48
+ }
49
+ }
50
+ exports.DeferredBase = DeferredBase;
51
+ //# sourceMappingURL=deferredBase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deferredBase.js","sourceRoot":"","sources":["../../../src/helpers/deferredBase.ts"],"names":[],"mappings":";;;AAEA,MAAa,YAAY;IACf,OAAO,CAAe;IACtB,OAAO,CAAwB;IAC/B,MAAM,CAA2B;IACjC,IAAI,CAAO;IAEF,EAAE,CAAQ;IACnB,SAAS,CAAQ,CAAC,kBAAkB;IACpC,GAAG,CAAQ,CAAC,YAAY;IAEhC,YAAY,GAAW,EAAE,EAAU,EAAE,SAAiB;QACpD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;QACZ,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;YACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACtB,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,EAAE,CAAA;IAChB,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,SAAS,CAAC,GAAW;QACnB,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAA;IACxD,CAAC;IACD,SAAS,CAAC,GAAW;QACnB,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,KAAW;QACf,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;QACjB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC1B,CAAC;IACD,IAAI,CAAC,GAAW;QACd,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9B,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;CACF;AApDD,oCAoDC"}
@@ -0,0 +1,11 @@
1
+ export default class KeyedQueue<K, V> {
2
+ private _map;
3
+ private _order;
4
+ constructor();
5
+ enqueue(key: K, value: V): boolean;
6
+ get(key: K): V | undefined;
7
+ has(key: K): boolean;
8
+ get size(): number;
9
+ spliceValues(start: number, deleteCount: number): V[];
10
+ }
11
+ //# sourceMappingURL=keyedQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyedQueue.d.ts","sourceRoot":"","sources":["../../../src/helpers/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,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"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class KeyedQueue {
4
+ _map;
5
+ _order;
6
+ constructor() {
7
+ this._map = new Map();
8
+ this._order = [];
9
+ }
10
+ enqueue(key, value) {
11
+ if (this._map.has(key)) {
12
+ return false; // Key already exists
13
+ }
14
+ this._map.set(key, value);
15
+ this._order.push(key);
16
+ return true;
17
+ }
18
+ get(key) {
19
+ return this._map.get(key);
20
+ }
21
+ has(key) {
22
+ return this._map.has(key);
23
+ }
24
+ get size() {
25
+ return this._order.length;
26
+ }
27
+ spliceValues(start, deleteCount) {
28
+ const splicedKeys = this._order.splice(start, deleteCount);
29
+ const result = [];
30
+ for (const key of splicedKeys) {
31
+ const value = this._map.get(key);
32
+ if (value !== undefined) {
33
+ result.push(value);
34
+ this._map.delete(key);
35
+ }
36
+ }
37
+ return result;
38
+ }
39
+ }
40
+ exports.default = KeyedQueue;
41
+ //# sourceMappingURL=keyedQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyedQueue.js","sourceRoot":"","sources":["../../../src/helpers/keyedQueue.ts"],"names":[],"mappings":";;AAAA,MAAqB,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,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;AA5CD,6BA4CC"}
@@ -0,0 +1,15 @@
1
+ import { Item } from '../types/types.js';
2
+ import { Pump } from './pump.js';
3
+ import Queue from './queue.js';
4
+ export declare class MemoryPump implements Pump {
5
+ #private;
6
+ add(item: Item): void;
7
+ pumpItems(params: {
8
+ ids: string[];
9
+ foundItems: Queue<Item>;
10
+ notFoundItems: Queue<string>;
11
+ }): Promise<void>;
12
+ gather(ids: string[]): AsyncGenerator<Item>;
13
+ disposeAsync(): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=memoryPump.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryPump.d.ts","sourceRoot":"","sources":["../../../src/helpers/memoryPump.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,KAAK,MAAM,YAAY,CAAA;AAE9B,qBAAa,UAAW,YAAW,IAAI;;IAGrC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIf,SAAS,CAAC,MAAM,EAAE;QACtB,GAAG,EAAE,MAAM,EAAE,CAAA;QACb,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QACvB,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;KAC7B,GAAG,OAAO,CAAC,IAAI,CAAC;IAaV,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC;IAU5C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CACpC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemoryPump = void 0;
4
+ class MemoryPump {
5
+ #items = new Map();
6
+ add(item) {
7
+ this.#items.set(item.baseId, item);
8
+ }
9
+ async pumpItems(params) {
10
+ const { ids, foundItems, notFoundItems } = params;
11
+ for (const id of ids) {
12
+ const item = this.#items.get(id);
13
+ if (item) {
14
+ foundItems.add(item);
15
+ }
16
+ else {
17
+ notFoundItems.add(id);
18
+ }
19
+ }
20
+ return Promise.resolve();
21
+ }
22
+ async *gather(ids) {
23
+ for (const id of ids) {
24
+ const item = this.#items.get(id);
25
+ if (item) {
26
+ yield item;
27
+ }
28
+ }
29
+ return Promise.resolve();
30
+ }
31
+ async disposeAsync() { }
32
+ }
33
+ exports.MemoryPump = MemoryPump;
34
+ //# sourceMappingURL=memoryPump.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryPump.js","sourceRoot":"","sources":["../../../src/helpers/memoryPump.ts"],"names":[],"mappings":";;;AAIA,MAAa,UAAU;IACrB,MAAM,GAAsB,IAAI,GAAG,EAAE,CAAA;IAErC,GAAG,CAAC,IAAU;QACZ,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAIf;QACC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,MAAM,CAAA;QACjD,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAChC,IAAI,IAAI,EAAE,CAAC;gBACT,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACtB,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACvB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,GAAa;QACzB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAChC,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,IAAI,CAAA;YACZ,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IAED,KAAK,CAAC,YAAY,KAAmB,CAAC;CACvC;AAnCD,gCAmCC"}
@@ -0,0 +1,8 @@
1
+ import { Downloader } from '../operations/interfaces.js';
2
+ import { Item } from '../types/types.js';
3
+ import Queue from './queue.js';
4
+ export interface Pump extends Queue<Item> {
5
+ gather(ids: string[], downloader: Downloader): AsyncGenerator<Item>;
6
+ disposeAsync(): Promise<void>;
7
+ }
8
+ //# sourceMappingURL=pump.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pump.d.ts","sourceRoot":"","sources":["../../../src/helpers/pump.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,KAAK,MAAM,YAAY,CAAA;AAE9B,MAAM,WAAW,IAAK,SAAQ,KAAK,CAAC,IAAI,CAAC;IACvC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;IACnE,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=pump.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pump.js","sourceRoot":"","sources":["../../../src/helpers/pump.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export default interface Queue<T> {
2
+ add(value: T): void;
3
+ }
4
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/helpers/queue.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,WAAW,KAAK,CAAC,CAAC;IAC9B,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;CACpB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/helpers/queue.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export { ObjectLoader2 } from './operations/objectLoader2.js';
2
+ export { ObjectLoader2Factory } from './operations/objectLoader2Factory.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA"}
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ObjectLoader2Factory = exports.ObjectLoader2 = exports.MemoryDatabase = void 0;
4
- var memoryDatabase_js_1 = require("./operations/databases/memoryDatabase.js");
5
- Object.defineProperty(exports, "MemoryDatabase", { enumerable: true, get: function () { return memoryDatabase_js_1.MemoryDatabase; } });
3
+ exports.ObjectLoader2Factory = exports.ObjectLoader2 = void 0;
6
4
  var objectLoader2_js_1 = require("./operations/objectLoader2.js");
7
5
  Object.defineProperty(exports, "ObjectLoader2", { enumerable: true, get: function () { return objectLoader2_js_1.ObjectLoader2; } });
8
6
  var objectLoader2Factory_js_1 = require("./operations/objectLoader2Factory.js");
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,kEAA6D;AAApD,iHAAA,aAAa,OAAA;AACtB,gFAA2E;AAAlE,+HAAA,oBAAoB,OAAA"}
@@ -0,0 +1,27 @@
1
+ import { CustomLogger, Item } from '../../types/types.js';
2
+ import { Dexie, DexieOptions, Table } from 'dexie';
3
+ import { Database } from '../interfaces.js';
4
+ export declare class ObjectStore extends Dexie {
5
+ #private;
6
+ objects: Table<Item, string>;
7
+ constructor(options: DexieOptions);
8
+ }
9
+ export interface IndexedDatabaseOptions {
10
+ logger?: CustomLogger;
11
+ indexedDB?: IDBFactory;
12
+ keyRange?: {
13
+ bound: Function;
14
+ lowerBound: Function;
15
+ upperBound: Function;
16
+ };
17
+ }
18
+ export default class IndexedDatabase implements Database {
19
+ #private;
20
+ constructor(options: IndexedDatabaseOptions);
21
+ getAll(keys: string[]): Promise<(Item | undefined)[]>;
22
+ cacheSaveBatch(params: {
23
+ batch: Item[];
24
+ }): Promise<void>;
25
+ disposeAsync(): Promise<void>;
26
+ }
27
+ //# sourceMappingURL=indexedDatabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexedDatabase.d.ts","sourceRoot":"","sources":["../../../../src/operations/databases/indexedDatabase.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAEzD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAE3C,qBAAa,WAAY,SAAQ,KAAK;;IAEpC,OAAO,EAAG,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;gBAEjB,OAAO,EAAE,YAAY;CAOlC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,QAAQ,CAAA;QACf,UAAU,EAAE,QAAQ,CAAA;QACpB,UAAU,EAAE,QAAQ,CAAA;KACrB,CAAA;CACF;AAED,MAAM,CAAC,OAAO,OAAO,eAAgB,YAAW,QAAQ;;gBAU1C,OAAO,EAAE,sBAAsB;IAKrC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC;IAwCrD,cAAc,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,IAAI,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCxD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAMpC"}
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ObjectStore = void 0;
4
+ const shared_1 = require("@speckle/shared");
5
+ const dexie_1 = require("dexie");
6
+ class ObjectStore extends dexie_1.Dexie {
7
+ static #databaseName = 'speckle-cache';
8
+ objects; // Table type: <entity, primaryKey>
9
+ constructor(options) {
10
+ super(ObjectStore.#databaseName, options);
11
+ this.version(1).stores({
12
+ objects: 'baseId, item' // baseId is primary key
13
+ });
14
+ }
15
+ }
16
+ exports.ObjectStore = ObjectStore;
17
+ class IndexedDatabase {
18
+ #options;
19
+ #logger;
20
+ #cacheDB;
21
+ #writeQueue;
22
+ // #count: number = 0
23
+ constructor(options) {
24
+ this.#options = options;
25
+ this.#logger = options.logger || (() => { });
26
+ }
27
+ async getAll(keys) {
28
+ await this.#setupCacheDb();
29
+ let items = [];
30
+ // this.#count++
31
+ // const startTime = performance.now()
32
+ // this.#logger('Start read ' + x + ' ' + batch.length)
33
+ //faster than BulkGet with dexie
34
+ await this.#cacheDB.transaction('r', this.#cacheDB.objects, async () => {
35
+ const gets = keys.map((key) => this.#cacheDB.objects.get(key));
36
+ const cachedData = await Promise.all(gets);
37
+ items = cachedData;
38
+ });
39
+ // const endTime = performance.now()
40
+ // const duration = endTime - startTime
41
+ //this.#logger('Saved batch ' + x + ' ' + batch.length + ' ' + duration / TIME_MS.second)
42
+ return items;
43
+ }
44
+ async #openDatabase() {
45
+ const db = new ObjectStore({
46
+ indexedDB: this.#options.indexedDB ?? globalThis.indexedDB,
47
+ IDBKeyRange: this.#options.keyRange ?? IDBKeyRange,
48
+ chromeTransactionDurability: 'relaxed'
49
+ });
50
+ await db.open();
51
+ return db;
52
+ }
53
+ async #setupCacheDb() {
54
+ if (this.#cacheDB !== undefined) {
55
+ return;
56
+ }
57
+ // Initialize
58
+ await this.#safariFix();
59
+ this.#cacheDB = await this.#openDatabase();
60
+ }
61
+ async cacheSaveBatch(params) {
62
+ await this.#setupCacheDb();
63
+ const { batch } = params;
64
+ //const x = this.#count
65
+ //this.#count++
66
+ // const startTime = performance.now()
67
+ // this.#logger('Start save ' + x + ' ' + batch.length)
68
+ await this.#cacheDB.objects.bulkPut(batch);
69
+ // const endTime = performance.now()
70
+ // const duration = endTime - startTime
71
+ //this.#logger('Saved batch ' + x + ' ' + batch.length + ' ' + duration / TIME_MS.second)
72
+ }
73
+ /**
74
+ * Fixes a Safari bug where IndexedDB requests get lost and never resolve - invoke before you use IndexedDB
75
+ * @link Credits and more info: https://github.com/jakearchibald/safari-14-idb-fix
76
+ */
77
+ async #safariFix() {
78
+ // No point putting other browsers or older versions of Safari through this mess.
79
+ if (!(0, shared_1.isSafari)() || !this.#options.indexedDB?.databases)
80
+ return Promise.resolve();
81
+ let intervalId;
82
+ return new Promise((resolve) => {
83
+ const tryIdb = () => this.#options.indexedDB?.databases().finally(resolve);
84
+ intervalId = setInterval(() => {
85
+ void tryIdb();
86
+ }, 100);
87
+ void tryIdb();
88
+ }).finally(() => clearInterval(intervalId));
89
+ }
90
+ async disposeAsync() {
91
+ this.#cacheDB?.close();
92
+ this.#cacheDB = undefined;
93
+ await this.#writeQueue?.disposeAsync();
94
+ this.#writeQueue = undefined;
95
+ }
96
+ }
97
+ exports.default = IndexedDatabase;
98
+ //# sourceMappingURL=indexedDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexedDatabase.js","sourceRoot":"","sources":["../../../../src/operations/databases/indexedDatabase.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { Item } from '../../types/types.js';
2
+ import { Database } from '../interfaces.js';
3
+ import { MemoryDatabaseOptions } from '../options.js';
4
+ export declare class MemoryDatabase implements Database {
5
+ private items;
6
+ constructor(options?: MemoryDatabaseOptions);
7
+ getAll(keys: string[]): Promise<(Item | undefined)[]>;
8
+ cacheSaveBatch({ batch }: {
9
+ batch: Item[];
10
+ }): Promise<void>;
11
+ disposeAsync(): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=memoryDatabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryDatabase.d.ts","sourceRoot":"","sources":["../../../../src/operations/databases/memoryDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,IAAI,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAErD,qBAAa,cAAe,YAAW,QAAQ;IAC7C,OAAO,CAAC,KAAK,CAAmB;gBAEpB,OAAO,CAAC,EAAE,qBAAqB;IAI3C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC;IAarD,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,EAAE,IAAI,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3D,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;CAG9B"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MemoryDatabase = void 0;
4
+ class MemoryDatabase {
5
+ items;
6
+ constructor(options) {
7
+ this.items = options?.items || new Map();
8
+ }
9
+ getAll(keys) {
10
+ const found = [];
11
+ for (const key of keys) {
12
+ const item = this.items.get(key);
13
+ if (item) {
14
+ found.push({ baseId: key, base: item });
15
+ }
16
+ else {
17
+ found.push(undefined);
18
+ }
19
+ }
20
+ return Promise.resolve(found);
21
+ }
22
+ cacheSaveBatch({ batch }) {
23
+ for (const item of batch) {
24
+ this.items.set(item.baseId, item.base);
25
+ }
26
+ return Promise.resolve();
27
+ }
28
+ disposeAsync() {
29
+ return Promise.resolve();
30
+ }
31
+ }
32
+ exports.MemoryDatabase = MemoryDatabase;
33
+ //# sourceMappingURL=memoryDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryDatabase.js","sourceRoot":"","sources":["../../../../src/operations/databases/memoryDatabase.ts"],"names":[],"mappings":";;;AAIA,MAAa,cAAc;IACjB,KAAK,CAAmB;IAEhC,YAAY,OAA+B;QACzC,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,IAAI,GAAG,EAAgB,CAAA;IACxD,CAAC;IAED,MAAM,CAAC,IAAc;QACnB,MAAM,KAAK,GAAyB,EAAE,CAAA;QACtC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAChC,IAAI,IAAI,EAAE,CAAC;gBACT,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YACzC,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACvB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED,cAAc,CAAC,EAAE,KAAK,EAAqB;QACzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACxC,CAAC;QACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IAED,YAAY;QACV,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;CACF;AA9BD,wCA8BC"}
@@ -0,0 +1,16 @@
1
+ import Queue from '../../helpers/queue.js';
2
+ import { Base, Item } from '../../types/types.js';
3
+ import { Downloader } from '../interfaces.js';
4
+ export declare class MemoryDownloader implements Downloader {
5
+ #private;
6
+ constructor(rootId: string, items: Map<string, Base>);
7
+ initializePool(params: {
8
+ results: Queue<Item>;
9
+ total: number;
10
+ maxDownloadBatchWait?: number;
11
+ }): void;
12
+ downloadSingle(): Promise<Item>;
13
+ disposeAsync(): Promise<void>;
14
+ add(id: string): void;
15
+ }
16
+ //# sourceMappingURL=memoryDownloader.d.ts.map