@speckle/objectloader2 2.25.4 → 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.
- package/dist/commonjs/helpers/cachePump.d.ts +1 -0
- package/dist/commonjs/helpers/cachePump.d.ts.map +1 -1
- package/dist/commonjs/helpers/cachePump.js +7 -1
- package/dist/commonjs/helpers/cachePump.js.map +1 -1
- package/dist/commonjs/helpers/defermentManager.d.ts +2 -0
- package/dist/commonjs/helpers/defermentManager.d.ts.map +1 -1
- package/dist/commonjs/helpers/defermentManager.js +20 -1
- package/dist/commonjs/helpers/defermentManager.js.map +1 -1
- package/dist/commonjs/index.d.ts +0 -1
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +1 -3
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/operations/databases/indexedDatabase.d.ts +6 -4
- package/dist/commonjs/operations/databases/indexedDatabase.d.ts.map +1 -1
- package/dist/commonjs/operations/databases/indexedDatabase.js +2 -21
- package/dist/commonjs/operations/databases/indexedDatabase.js.map +1 -1
- package/dist/commonjs/operations/databases/memoryDatabase.d.ts +0 -3
- package/dist/commonjs/operations/databases/memoryDatabase.d.ts.map +1 -1
- package/dist/commonjs/operations/databases/memoryDatabase.js +0 -7
- package/dist/commonjs/operations/databases/memoryDatabase.js.map +1 -1
- package/dist/commonjs/operations/downloaders/memoryDownloader.js +1 -1
- package/dist/commonjs/operations/downloaders/memoryDownloader.js.map +1 -1
- package/dist/commonjs/operations/downloaders/serverDownloader.js +1 -1
- package/dist/commonjs/operations/interfaces.d.ts +0 -3
- package/dist/commonjs/operations/interfaces.d.ts.map +1 -1
- package/dist/commonjs/operations/objectLoader2.d.ts.map +1 -1
- package/dist/commonjs/operations/objectLoader2.js +10 -4
- package/dist/commonjs/operations/objectLoader2.js.map +1 -1
- package/dist/commonjs/operations/objectLoader2Factory.d.ts +11 -7
- package/dist/commonjs/operations/objectLoader2Factory.d.ts.map +1 -1
- package/dist/commonjs/operations/objectLoader2Factory.js +33 -15
- package/dist/commonjs/operations/objectLoader2Factory.js.map +1 -1
- package/dist/esm/helpers/cachePump.d.ts +1 -0
- package/dist/esm/helpers/cachePump.d.ts.map +1 -1
- package/dist/esm/helpers/cachePump.js +7 -1
- package/dist/esm/helpers/cachePump.js.map +1 -1
- package/dist/esm/helpers/defermentManager.d.ts +2 -0
- package/dist/esm/helpers/defermentManager.d.ts.map +1 -1
- package/dist/esm/helpers/defermentManager.js +20 -1
- package/dist/esm/helpers/defermentManager.js.map +1 -1
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/operations/databases/indexedDatabase.d.ts +6 -4
- package/dist/esm/operations/databases/indexedDatabase.d.ts.map +1 -1
- package/dist/esm/operations/databases/indexedDatabase.js +1 -22
- package/dist/esm/operations/databases/indexedDatabase.js.map +1 -1
- package/dist/esm/operations/databases/memoryDatabase.d.ts +0 -3
- package/dist/esm/operations/databases/memoryDatabase.d.ts.map +1 -1
- package/dist/esm/operations/databases/memoryDatabase.js +0 -7
- package/dist/esm/operations/databases/memoryDatabase.js.map +1 -1
- package/dist/esm/operations/downloaders/memoryDownloader.js +1 -1
- package/dist/esm/operations/downloaders/memoryDownloader.js.map +1 -1
- package/dist/esm/operations/downloaders/serverDownloader.js +1 -1
- package/dist/esm/operations/interfaces.d.ts +0 -3
- package/dist/esm/operations/interfaces.d.ts.map +1 -1
- package/dist/esm/operations/objectLoader2.d.ts.map +1 -1
- package/dist/esm/operations/objectLoader2.js +10 -4
- package/dist/esm/operations/objectLoader2.js.map +1 -1
- package/dist/esm/operations/objectLoader2Factory.d.ts +11 -7
- package/dist/esm/operations/objectLoader2Factory.d.ts.map +1 -1
- package/dist/esm/operations/objectLoader2Factory.js +33 -15
- package/dist/esm/operations/objectLoader2Factory.js.map +1 -1
- package/package.json +2 -2
- package/src/helpers/cachePump.disposal.spec.ts +3 -1
- package/src/helpers/cachePump.spec.ts +2 -1
- package/src/helpers/cachePump.ts +9 -1
- package/src/helpers/defermentManager.defermentTotals.spec.ts +53 -0
- package/src/helpers/defermentManager.ts +20 -1
- package/src/index.ts +0 -1
- package/src/operations/databases/__snapshots__/indexedDatabase.spec.ts.snap +13 -26
- package/src/operations/databases/indexedDatabase.spec.ts +23 -27
- package/src/operations/databases/indexedDatabase.ts +1 -25
- package/src/operations/databases/memoryDatabase.spec.ts +48 -0
- package/src/operations/databases/memoryDatabase.ts +0 -8
- package/src/operations/downloaders/__snapshots__/memoryDownloader.spec.ts.snap +12 -0
- package/src/operations/downloaders/memoryDownloader.spec.ts +49 -0
- package/src/operations/downloaders/memoryDownloader.ts +1 -1
- package/src/operations/downloaders/serverDownloader.ts +1 -1
- package/src/operations/interfaces.ts +0 -1
- package/src/operations/objectLoader2.ts +12 -4
- package/src/operations/objectLoader2Factory.ts +40 -18
- package/src/test/e2e.spec.ts +4 -2
|
@@ -8,6 +8,7 @@ export declare class DefermentManager {
|
|
|
8
8
|
private logger;
|
|
9
9
|
private currentSize;
|
|
10
10
|
private disposed;
|
|
11
|
+
private totalDefermentRequests;
|
|
11
12
|
constructor(options: DefermentManagerOptions);
|
|
12
13
|
private now;
|
|
13
14
|
isDeferred(id: string): boolean;
|
|
@@ -15,6 +16,7 @@ export declare class DefermentManager {
|
|
|
15
16
|
defer(params: {
|
|
16
17
|
id: string;
|
|
17
18
|
}): Promise<Base>;
|
|
19
|
+
private trackDefermentRequest;
|
|
18
20
|
undefer(item: Item): void;
|
|
19
21
|
private resetGlobalTimer;
|
|
20
22
|
dispose(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defermentManager.d.ts","sourceRoot":"","sources":["../../../src/helpers/defermentManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAgB,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAElE,qBAAa,gBAAgB;
|
|
1
|
+
{"version":3,"file":"defermentManager.d.ts","sourceRoot":"","sources":["../../../src/helpers/defermentManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAgB,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAElE,qBAAa,gBAAgB;IAUf,OAAO,CAAC,OAAO;IAT3B,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,KAAK,CAAC,CAA+B;IAC7C,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,QAAQ,CAAQ;IAGxB,OAAO,CAAC,sBAAsB,CAAiC;gBAE3C,OAAO,EAAE,uBAAuB;IAKpD,OAAO,CAAC,GAAG;IAIX,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI/B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAKnC,KAAK,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBlD,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAgBzB,OAAO,CAAC,gBAAgB;IAQxB,OAAO,IAAI,IAAI;IAUf,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,eAAe;IAwCvB,uBAAuB,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,MAAM;IAOzE,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM;CAMnE"}
|
|
@@ -6,6 +6,9 @@ export class DefermentManager {
|
|
|
6
6
|
logger;
|
|
7
7
|
currentSize = 0;
|
|
8
8
|
disposed = false;
|
|
9
|
+
//tracks total deferment requests for each id
|
|
10
|
+
//this is used to prevent cleaning up deferments that are still being requested
|
|
11
|
+
totalDefermentRequests = new Map();
|
|
9
12
|
constructor(options) {
|
|
10
13
|
this.options = options;
|
|
11
14
|
this.resetGlobalTimer();
|
|
@@ -25,6 +28,7 @@ export class DefermentManager {
|
|
|
25
28
|
async defer(params) {
|
|
26
29
|
if (this.disposed)
|
|
27
30
|
throw new Error('DefermentManager is disposed');
|
|
31
|
+
this.trackDefermentRequest(params.id);
|
|
28
32
|
const now = this.now();
|
|
29
33
|
const deferredBase = this.deferments.get(params.id);
|
|
30
34
|
if (deferredBase) {
|
|
@@ -35,6 +39,15 @@ export class DefermentManager {
|
|
|
35
39
|
this.deferments.set(params.id, notYetFound);
|
|
36
40
|
return notYetFound.getPromise();
|
|
37
41
|
}
|
|
42
|
+
trackDefermentRequest(id) {
|
|
43
|
+
const request = this.totalDefermentRequests.get(id);
|
|
44
|
+
if (request) {
|
|
45
|
+
this.totalDefermentRequests.set(id, request + 1);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
this.totalDefermentRequests.set(id, 1);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
38
51
|
undefer(item) {
|
|
39
52
|
if (this.disposed)
|
|
40
53
|
throw new Error('DefermentManager is disposed');
|
|
@@ -94,6 +107,12 @@ export class DefermentManager {
|
|
|
94
107
|
.filter((x) => x.isExpired(now))
|
|
95
108
|
.sort((a, b) => this.compareMaybeBasesBySize(a.getItem(), b.getItem()))) {
|
|
96
109
|
if (deferredBase.done(now)) {
|
|
110
|
+
//if the deferment is done but has been requested multiple times,
|
|
111
|
+
//we do not clean it up to allow the requests to resolve
|
|
112
|
+
const requestCount = this.totalDefermentRequests.get(deferredBase.getId());
|
|
113
|
+
if (requestCount && requestCount > 1) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
97
116
|
this.currentSize -= deferredBase.getItem()?.size || 0;
|
|
98
117
|
this.deferments.delete(deferredBase.getId());
|
|
99
118
|
cleaned++;
|
|
@@ -102,7 +121,7 @@ export class DefermentManager {
|
|
|
102
121
|
}
|
|
103
122
|
}
|
|
104
123
|
}
|
|
105
|
-
this.logger('cleaned deferments
|
|
124
|
+
this.logger('cleaned deferments: cleaned, left, time', cleaned, this.deferments.size, performance.now() - start);
|
|
106
125
|
return;
|
|
107
126
|
}
|
|
108
127
|
compareMaybeBasesBySize(a, b) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defermentManager.js","sourceRoot":"","sources":["../../../src/helpers/defermentManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAIhD,MAAM,OAAO,gBAAgB;
|
|
1
|
+
{"version":3,"file":"defermentManager.js","sourceRoot":"","sources":["../../../src/helpers/defermentManager.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.d.ts
CHANGED
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
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"}
|
package/dist/esm/index.js
CHANGED
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","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,5 +1,11 @@
|
|
|
1
1
|
import { CustomLogger, Item } from '../../types/types.js';
|
|
2
|
+
import { Dexie, DexieOptions, Table } from 'dexie';
|
|
2
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
|
+
}
|
|
3
9
|
export interface IndexedDatabaseOptions {
|
|
4
10
|
logger?: CustomLogger;
|
|
5
11
|
indexedDB?: IDBFactory;
|
|
@@ -13,10 +19,6 @@ export default class IndexedDatabase implements Database {
|
|
|
13
19
|
#private;
|
|
14
20
|
constructor(options: IndexedDatabaseOptions);
|
|
15
21
|
getAll(keys: string[]): Promise<(Item | undefined)[]>;
|
|
16
|
-
add(item: Item): Promise<void>;
|
|
17
|
-
getItem(params: {
|
|
18
|
-
id: string;
|
|
19
|
-
}): Promise<Item | undefined>;
|
|
20
22
|
cacheSaveBatch(params: {
|
|
21
23
|
batch: Item[];
|
|
22
24
|
}): Promise<void>;
|
|
@@ -1 +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;
|
|
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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isSafari } from '@speckle/shared';
|
|
2
2
|
import { Dexie } from 'dexie';
|
|
3
|
-
class ObjectStore extends Dexie {
|
|
3
|
+
export class ObjectStore extends Dexie {
|
|
4
4
|
static #databaseName = 'speckle-cache';
|
|
5
5
|
objects; // Table type: <entity, primaryKey>
|
|
6
6
|
constructor(options) {
|
|
@@ -54,27 +54,6 @@ export default class IndexedDatabase {
|
|
|
54
54
|
await this.#safariFix();
|
|
55
55
|
this.#cacheDB = await this.#openDatabase();
|
|
56
56
|
}
|
|
57
|
-
//this is for testing only - in the real world we will not use this
|
|
58
|
-
async add(item) {
|
|
59
|
-
await this.#setupCacheDb();
|
|
60
|
-
await this.#cacheDB.transaction('rw', this.#cacheDB.objects, async () => {
|
|
61
|
-
return await this.#cacheDB?.objects.add(item);
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
async getItem(params) {
|
|
65
|
-
const { id } = params;
|
|
66
|
-
await this.#setupCacheDb();
|
|
67
|
-
//might not be in the real DB yet, so check the write queue first
|
|
68
|
-
if (this.#writeQueue) {
|
|
69
|
-
const item = this.#writeQueue.get(id);
|
|
70
|
-
if (item) {
|
|
71
|
-
return item;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return this.#cacheDB.transaction('r', this.#cacheDB.objects, async () => {
|
|
75
|
-
return await this.#cacheDB?.objects.get(id);
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
57
|
async cacheSaveBatch(params) {
|
|
79
58
|
await this.#setupCacheDb();
|
|
80
59
|
const { batch } = params;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"indexedDatabase.js","sourceRoot":"","sources":["../../../../src/operations/databases/indexedDatabase.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAuB,MAAM,OAAO,CAAA;AAGlD,MAAM,WAAY,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"indexedDatabase.js","sourceRoot":"","sources":["../../../../src/operations/databases/indexedDatabase.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,6 @@ export declare class MemoryDatabase implements Database {
|
|
|
8
8
|
cacheSaveBatch({ batch }: {
|
|
9
9
|
batch: Item[];
|
|
10
10
|
}): Promise<void>;
|
|
11
|
-
getItem(params: {
|
|
12
|
-
id: string;
|
|
13
|
-
}): Promise<Item | undefined>;
|
|
14
11
|
disposeAsync(): Promise<void>;
|
|
15
12
|
}
|
|
16
13
|
//# sourceMappingURL=memoryDatabase.d.ts.map
|
|
@@ -1 +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,
|
|
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"}
|
|
@@ -22,13 +22,6 @@ export class MemoryDatabase {
|
|
|
22
22
|
}
|
|
23
23
|
return Promise.resolve();
|
|
24
24
|
}
|
|
25
|
-
getItem(params) {
|
|
26
|
-
const item = this.items.get(params.id);
|
|
27
|
-
if (item) {
|
|
28
|
-
return Promise.resolve({ baseId: params.id, base: item });
|
|
29
|
-
}
|
|
30
|
-
return Promise.resolve(undefined);
|
|
31
|
-
}
|
|
32
25
|
disposeAsync() {
|
|
33
26
|
return Promise.resolve();
|
|
34
27
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoryDatabase.js","sourceRoot":"","sources":["../../../../src/operations/databases/memoryDatabase.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,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,
|
|
1
|
+
{"version":3,"file":"memoryDatabase.js","sourceRoot":"","sources":["../../../../src/operations/databases/memoryDatabase.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,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"}
|
|
@@ -14,7 +14,7 @@ export class MemoryDownloader {
|
|
|
14
14
|
if (root) {
|
|
15
15
|
return Promise.resolve({ baseId: this.#rootId, base: root });
|
|
16
16
|
}
|
|
17
|
-
|
|
17
|
+
return Promise.reject(new Error('Method not implemented.'));
|
|
18
18
|
}
|
|
19
19
|
disposeAsync() {
|
|
20
20
|
return Promise.resolve();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memoryDownloader.js","sourceRoot":"","sources":["../../../../src/operations/downloaders/memoryDownloader.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CAAmB;IACzB,OAAO,CAAQ;IACf,QAAQ,CAAc;IAEtB,YAAY,MAAc,EAAE,KAAwB;QAClD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;IACrB,CAAC;IACD,cAAc,CAAC,MAId;QACC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAA;IAChC,CAAC;IACD,cAAc;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1C,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"memoryDownloader.js","sourceRoot":"","sources":["../../../../src/operations/downloaders/memoryDownloader.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,gBAAgB;IAC3B,MAAM,CAAmB;IACzB,OAAO,CAAQ;IACf,QAAQ,CAAc;IAEtB,YAAY,MAAc,EAAE,KAAwB;QAClD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;IACrB,CAAC;IACD,cAAc,CAAC,MAId;QACC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAA;IAChC,CAAC;IACD,cAAc;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC1C,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QAC9D,CAAC;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAA;IAC7D,CAAC;IACD,YAAY;QACV,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IACD,GAAG,CAAC,EAAU;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAChC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;YACxC,OAAM;QACR,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC;CACF"}
|
|
@@ -11,9 +11,6 @@ export interface Downloader extends Queue<string> {
|
|
|
11
11
|
}
|
|
12
12
|
export interface Database {
|
|
13
13
|
getAll(keys: string[]): Promise<(Item | undefined)[]>;
|
|
14
|
-
getItem(params: {
|
|
15
|
-
id: string;
|
|
16
|
-
}): Promise<Item | undefined>;
|
|
17
14
|
cacheSaveBatch(params: {
|
|
18
15
|
batch: Item[];
|
|
19
16
|
}): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/operations/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,qBAAqB,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAExC,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,MAAM,CAAC;IAC/C,cAAc,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QACpB,KAAK,EAAE,MAAM,CAAA;QACb,oBAAoB,CAAC,EAAE,MAAM,CAAA;KAC9B,GAAG,IAAI,CAAA;IACR,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;IACrD,
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/operations/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,qBAAqB,CAAA;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAExC,MAAM,WAAW,UAAW,SAAQ,KAAK,CAAC,MAAM,CAAC;IAC/C,cAAc,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QACpB,KAAK,EAAE,MAAM,CAAA;QACb,oBAAoB,CAAC,EAAE,MAAM,CAAA;KAC9B,GAAG,IAAI,CAAA;IACR,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;IACrD,cAAc,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,IAAI,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objectLoader2.d.ts","sourceRoot":"","sources":["../../../src/operations/objectLoader2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAgB,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAOjE,qBAAa,aAAa;;gBAgBZ,OAAO,EAAE,oBAAoB;IA8BnC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"objectLoader2.d.ts","sourceRoot":"","sources":["../../../src/operations/objectLoader2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAgB,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAOjE,qBAAa,aAAa;;gBAgBZ,OAAO,EAAE,oBAAoB;IA8BnC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAS7B,aAAa,IAAI,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAU1C,SAAS,CAAC,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAMrC,iBAAiB,IAAI,cAAc,CAAC,IAAI,CAAC;IA0BhD,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,aAAa;IAIxD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;CAGnD"}
|
|
@@ -29,7 +29,7 @@ export class ObjectLoader2 {
|
|
|
29
29
|
this.#database = options.database;
|
|
30
30
|
this.#deferments = new DefermentManager({
|
|
31
31
|
maxSizeInMb: 2_000, // 2 GBs
|
|
32
|
-
ttlms:
|
|
32
|
+
ttlms: 15_000, // 15 seconds
|
|
33
33
|
logger: this.#logger
|
|
34
34
|
});
|
|
35
35
|
this.#cache = new CacheReader(this.#database, this.#deferments, cacheOptions);
|
|
@@ -37,12 +37,16 @@ export class ObjectLoader2 {
|
|
|
37
37
|
this.#downloader = options.downloader;
|
|
38
38
|
}
|
|
39
39
|
async disposeAsync() {
|
|
40
|
-
await Promise.all([
|
|
40
|
+
await Promise.all([
|
|
41
|
+
this.#downloader.disposeAsync(),
|
|
42
|
+
this.#cache.disposeAsync(),
|
|
43
|
+
this.#pump.disposeAsync()
|
|
44
|
+
]);
|
|
41
45
|
this.#deferments.dispose();
|
|
42
46
|
}
|
|
43
47
|
async getRootObject() {
|
|
44
48
|
if (!this.#root) {
|
|
45
|
-
this.#root = await this.#database.
|
|
49
|
+
this.#root = (await this.#database.getAll([this.#rootId]))[0];
|
|
46
50
|
if (!this.#root) {
|
|
47
51
|
this.#root = await this.#downloader.downloadSingle();
|
|
48
52
|
}
|
|
@@ -68,7 +72,9 @@ export class ObjectLoader2 {
|
|
|
68
72
|
yield rootItem.base;
|
|
69
73
|
if (!rootItem.base.__closure)
|
|
70
74
|
return;
|
|
71
|
-
|
|
75
|
+
//sort the closures by their values descending
|
|
76
|
+
const sortedClosures = Object.entries(rootItem.base.__closure).sort((a, b) => b[1] - a[1]);
|
|
77
|
+
const children = sortedClosures.map((x) => x[0]);
|
|
72
78
|
const total = children.length;
|
|
73
79
|
this.#downloader.initializePool({
|
|
74
80
|
results: new AggregateQueue(this.#gathered, this.#pump),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objectLoader2.js","sourceRoot":"","sources":["../../../src/operations/objectLoader2.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,mCAAmC,CAAA;AAInE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,cAAc,MAAM,8BAA8B,CAAA;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAEhE,MAAM,OAAO,aAAa;IACxB,OAAO,CAAQ;IAEf,OAAO,CAAc;IAErB,SAAS,CAAU;IACnB,WAAW,CAAY;IACvB,KAAK,CAAW;IAChB,MAAM,CAAa;IAEnB,WAAW,CAAkB;IAE7B,SAAS,CAA2B;IAEpC,KAAK,GAAU,SAAS,CAAA;IAExB,YAAY,OAA6B;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAA;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAA;QAE5C,MAAM,YAAY,GAAiB;YACjC,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,gBAAgB,EAAE,MAAM;YACxB,iBAAiB,EAAE,MAAM;YACzB,iBAAiB,EAAE,MAAM;YACzB,sBAAsB,EAAE,KAAK;YAC7B,qBAAqB,EAAE,KAAK;SAC7B,CAAA;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,mBAAmB,EAAE,CAAA;QAC1C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAA;QACjC,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAgB,CAAC;YACtC,WAAW,EAAE,KAAK,EAAE,QAAQ;YAC5B,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"objectLoader2.js","sourceRoot":"","sources":["../../../src/operations/objectLoader2.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { Base, CustomLogger } from '../types/types.js';
|
|
2
2
|
import { ObjectLoader2 } from './objectLoader2.js';
|
|
3
|
+
export interface ObjectLoader2FactoryOptions {
|
|
4
|
+
useMemoryCache?: boolean;
|
|
5
|
+
keyRange?: {
|
|
6
|
+
bound: Function;
|
|
7
|
+
lowerBound: Function;
|
|
8
|
+
upperBound: Function;
|
|
9
|
+
};
|
|
10
|
+
indexedDB?: IDBFactory;
|
|
11
|
+
logger?: CustomLogger;
|
|
12
|
+
}
|
|
3
13
|
export declare class ObjectLoader2Factory {
|
|
4
14
|
static createFromObjects(objects: Base[]): ObjectLoader2;
|
|
5
15
|
static createFromJSON(json: string): ObjectLoader2;
|
|
@@ -9,13 +19,7 @@ export declare class ObjectLoader2Factory {
|
|
|
9
19
|
objectId: string;
|
|
10
20
|
token?: string;
|
|
11
21
|
headers?: Headers;
|
|
12
|
-
|
|
13
|
-
bound: Function;
|
|
14
|
-
lowerBound: Function;
|
|
15
|
-
upperBound: Function;
|
|
16
|
-
};
|
|
17
|
-
indexedDB?: IDBFactory;
|
|
18
|
-
logger?: CustomLogger;
|
|
22
|
+
options?: ObjectLoader2FactoryOptions;
|
|
19
23
|
}): ObjectLoader2;
|
|
20
24
|
}
|
|
21
25
|
//# sourceMappingURL=objectLoader2Factory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objectLoader2Factory.d.ts","sourceRoot":"","sources":["../../../src/operations/objectLoader2Factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,qBAAa,oBAAoB;IAC/B,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,aAAa;IAcxD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAKlD,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE;QAC3B,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAA;QAChB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,OAAO,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"objectLoader2Factory.d.ts","sourceRoot":"","sources":["../../../src/operations/objectLoader2Factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKtD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,MAAM,WAAW,2BAA2B;IAC1C,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB,QAAQ,CAAC,EAAE;QAAE,KAAK,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,QAAQ,CAAC;QAAC,UAAU,EAAE,QAAQ,CAAA;KAAE,CAAA;IAC1E,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB;AAED,qBAAa,oBAAoB;IAC/B,MAAM,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,aAAa;IAcxD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa;IAKlD,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE;QAC3B,SAAS,EAAE,MAAM,CAAA;QACjB,QAAQ,EAAE,MAAM,CAAA;QAChB,QAAQ,EAAE,MAAM,CAAA;QAChB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,OAAO,CAAC,EAAE,OAAO,CAAA;QACjB,OAAO,CAAC,EAAE,2BAA2B,CAAA;KACtC,GAAG,aAAa;CAmClB"}
|
|
@@ -22,21 +22,39 @@ export class ObjectLoader2Factory {
|
|
|
22
22
|
return this.createFromObjects(jsonObj);
|
|
23
23
|
}
|
|
24
24
|
static createFromUrl(params) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
25
|
+
let loader;
|
|
26
|
+
if (params.options?.useMemoryCache) {
|
|
27
|
+
loader = new ObjectLoader2({
|
|
28
|
+
rootId: params.objectId,
|
|
29
|
+
downloader: new ServerDownloader({
|
|
30
|
+
serverUrl: params.serverUrl,
|
|
31
|
+
streamId: params.streamId,
|
|
32
|
+
objectId: params.objectId,
|
|
33
|
+
token: params.token,
|
|
34
|
+
headers: params.headers
|
|
35
|
+
}),
|
|
36
|
+
database: new MemoryDatabase({
|
|
37
|
+
items: new Map()
|
|
38
|
+
})
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
loader = new ObjectLoader2({
|
|
43
|
+
rootId: params.objectId,
|
|
44
|
+
downloader: new ServerDownloader({
|
|
45
|
+
serverUrl: params.serverUrl,
|
|
46
|
+
streamId: params.streamId,
|
|
47
|
+
objectId: params.objectId,
|
|
48
|
+
token: params.token,
|
|
49
|
+
headers: params.headers
|
|
50
|
+
}),
|
|
51
|
+
database: new IndexedDatabase({
|
|
52
|
+
logger: params.options?.logger,
|
|
53
|
+
indexedDB: params.options?.indexedDB,
|
|
54
|
+
keyRange: params.options?.keyRange
|
|
55
|
+
})
|
|
56
|
+
});
|
|
57
|
+
}
|
|
40
58
|
return loader;
|
|
41
59
|
}
|
|
42
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"objectLoader2Factory.js","sourceRoot":"","sources":["../../../src/operations/objectLoader2Factory.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,MAAM,gCAAgC,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,gBAAgB,MAAM,mCAAmC,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"objectLoader2Factory.js","sourceRoot":"","sources":["../../../src/operations/objectLoader2Factory.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,MAAM,gCAAgC,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACpE,OAAO,gBAAgB,MAAM,mCAAmC,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAUlD,MAAM,OAAO,oBAAoB;IAC/B,MAAM,CAAC,iBAAiB,CAAC,OAAe;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACvB,MAAM,OAAO,GAAsB,IAAI,GAAG,EAAgB,CAAA;QAC1D,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC;YAC/B,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,QAAQ,EAAE,IAAI,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YAChD,UAAU,EAAE,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC;SACnD,CAAC,CAAA;QACF,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAY;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAW,CAAA;QAC1C,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,MAOpB;QACC,IAAI,MAAqB,CAAA;QACzB,IAAI,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC;YACnC,MAAM,GAAG,IAAI,aAAa,CAAC;gBACzB,MAAM,EAAE,MAAM,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,gBAAgB,CAAC;oBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAC;gBACF,QAAQ,EAAE,IAAI,cAAc,CAAC;oBAC3B,KAAK,EAAE,IAAI,GAAG,EAAgB;iBAC/B,CAAC;aACH,CAAC,CAAA;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,IAAI,aAAa,CAAC;gBACzB,MAAM,EAAE,MAAM,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,gBAAgB,CAAC;oBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAC;gBACF,QAAQ,EAAE,IAAI,eAAe,CAAC;oBAC5B,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM;oBAC9B,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS;oBACpC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ;iBACnC,CAAC;aACH,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@speckle/objectloader2",
|
|
3
|
-
"version": "2.25.
|
|
3
|
+
"version": "2.25.7",
|
|
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,7 +33,7 @@
|
|
|
33
33
|
"author": "AEC Systems",
|
|
34
34
|
"license": "Apache-2.0",
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@speckle/shared": "^2.25.
|
|
36
|
+
"@speckle/shared": "^2.25.7",
|
|
37
37
|
"dexie": "^4.0.11"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
@@ -8,7 +8,9 @@ import { DefermentManager } from './defermentManager.js'
|
|
|
8
8
|
const makeDatabase = (): Database =>
|
|
9
9
|
({
|
|
10
10
|
cacheSaveBatch: async (): Promise<void> => {},
|
|
11
|
-
getAll: async (): Promise<(Item | undefined)[]> => Promise.resolve([])
|
|
11
|
+
getAll: async (): Promise<(Item | undefined)[]> => Promise.resolve([]),
|
|
12
|
+
getItem: async (): Promise<Item | undefined> => Promise.resolve(undefined),
|
|
13
|
+
disposeAsync: async (): Promise<void> => {}
|
|
12
14
|
} as unknown as Database)
|
|
13
15
|
const makeGathered = (): AsyncGeneratorQueue<Item> =>
|
|
14
16
|
({
|
|
@@ -78,7 +78,8 @@ describe('CachePump testing', () => {
|
|
|
78
78
|
const i2: Item = { baseId: 'id2', base: { id: 'id', speckle_type: 'type' } }
|
|
79
79
|
|
|
80
80
|
const db: Database = {
|
|
81
|
-
getAll: async () => Promise.resolve([])
|
|
81
|
+
getAll: async () => Promise.resolve([]),
|
|
82
|
+
disposeAsync: async (): Promise<void> => {}
|
|
82
83
|
} as unknown as Database
|
|
83
84
|
const gathered = new AsyncGeneratorQueue<Item>()
|
|
84
85
|
const deferments = new DefermentManager({ maxSizeInMb: 1, ttlms: 1 })
|
package/src/helpers/cachePump.ts
CHANGED
|
@@ -19,6 +19,8 @@ export class CachePump implements Pump {
|
|
|
19
19
|
|
|
20
20
|
#options: CacheOptions
|
|
21
21
|
|
|
22
|
+
#disposed = false
|
|
23
|
+
|
|
22
24
|
constructor(
|
|
23
25
|
database: Database,
|
|
24
26
|
gathered: AsyncGeneratorQueue<Item>,
|
|
@@ -46,6 +48,12 @@ export class CachePump implements Pump {
|
|
|
46
48
|
|
|
47
49
|
async disposeAsync(): Promise<void> {
|
|
48
50
|
await this.#writeQueue?.disposeAsync()
|
|
51
|
+
await this.#database.disposeAsync()
|
|
52
|
+
this.#disposed = true
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
get isDisposed(): boolean {
|
|
56
|
+
return this.#disposed
|
|
49
57
|
}
|
|
50
58
|
|
|
51
59
|
async pumpItems(params: {
|
|
@@ -57,7 +65,7 @@ export class CachePump implements Pump {
|
|
|
57
65
|
const maxCacheReadSize = this.#options.maxCacheReadSize
|
|
58
66
|
|
|
59
67
|
for (let i = 0; i < ids.length; ) {
|
|
60
|
-
if (this
|
|
68
|
+
if (this.isDisposed) break
|
|
61
69
|
if ((this.#writeQueue?.count() ?? 0) > this.#options.maxWriteQueueSize) {
|
|
62
70
|
this.#logger(
|
|
63
71
|
'pausing reads (# in write queue: ' + this.#writeQueue?.count() + ')'
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { describe, test, expect, beforeEach } from 'vitest'
|
|
2
|
+
import { DefermentManager } from './defermentManager.js'
|
|
3
|
+
import { DefermentManagerOptions } from '../operations/options.js'
|
|
4
|
+
import { Base, Item } from '../types/types.js'
|
|
5
|
+
|
|
6
|
+
const makeItem = (id: string, size = 1): Item => ({
|
|
7
|
+
baseId: id,
|
|
8
|
+
base: { foo: 'bar' } as unknown as Base,
|
|
9
|
+
size
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
describe('DefermentManager totalDefermentRequests', () => {
|
|
13
|
+
let manager: DefermentManager
|
|
14
|
+
let options: DefermentManagerOptions
|
|
15
|
+
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
options = { maxSizeInMb: 1, ttlms: 1000, logger: (): void => {} }
|
|
18
|
+
manager = new DefermentManager(options)
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
test('tracks deferment requests for each id', () => {
|
|
22
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
23
|
+
manager.defer({ id: 'a' })
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
25
|
+
manager.defer({ id: 'a' })
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
27
|
+
manager.defer({ id: 'b' })
|
|
28
|
+
// @ts-expect-error: access private for test
|
|
29
|
+
expect(manager.totalDefermentRequests.get('a')).toBe(2)
|
|
30
|
+
// @ts-expect-error: access private for test
|
|
31
|
+
expect(manager.totalDefermentRequests.get('b')).toBe(1)
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
test('increments and does not reset on undefer', () => {
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
36
|
+
manager.defer({ id: 'x' })
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
38
|
+
manager.defer({ id: 'x' })
|
|
39
|
+
manager.undefer(makeItem('x'))
|
|
40
|
+
// @ts-expect-error: access private for test
|
|
41
|
+
expect(manager.totalDefermentRequests.get('x')).toBe(2)
|
|
42
|
+
// @ts-expect-error: access private for test
|
|
43
|
+
const deferredBase = manager.deferments.get('x')
|
|
44
|
+
expect(deferredBase).toBeDefined()
|
|
45
|
+
expect(deferredBase?.getId()).toBe('x')
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
test('does not increment for undefer only', () => {
|
|
49
|
+
manager.undefer(makeItem('y'))
|
|
50
|
+
// @ts-expect-error: access private for test
|
|
51
|
+
expect(manager.totalDefermentRequests.get('y')).toBeUndefined()
|
|
52
|
+
})
|
|
53
|
+
})
|