cojson-storage-indexeddb 0.7.0-alpha.37 → 0.7.0-alpha.39
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/.eslintrc.cjs +13 -7
- package/.prettierrc.js +9 -0
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-lint.log +4 -0
- package/.turbo/turbo-test.log +0 -0
- package/CHANGELOG.md +14 -0
- package/README.md +3 -0
- package/dist/index.js +13 -7
- package/dist/index.js.map +1 -1
- package/dist/index.test.js +8 -7
- package/dist/index.test.js.map +1 -1
- package/dist/syncPromises.js +4 -4
- package/dist/syncPromises.js.map +1 -1
- package/package.json +9 -4
- package/src/index.test.ts +23 -19
- package/src/index.ts +76 -70
- package/src/syncPromises.ts +178 -177
package/.eslintrc.cjs
CHANGED
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
module.exports = {
|
|
2
2
|
extends: [
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
"eslint:recommended",
|
|
4
|
+
"plugin:@typescript-eslint/recommended",
|
|
5
|
+
"plugin:require-extensions/recommended",
|
|
6
|
+
"prettier"
|
|
5
7
|
],
|
|
6
|
-
parser:
|
|
7
|
-
plugins: [
|
|
8
|
+
parser: "@typescript-eslint/parser",
|
|
9
|
+
plugins: ["@typescript-eslint", "require-extensions"],
|
|
8
10
|
parserOptions: {
|
|
9
11
|
project: "./tsconfig.json",
|
|
10
12
|
tsconfigRootDir: __dirname,
|
|
11
13
|
},
|
|
14
|
+
ignorePatterns: [".eslint.cjs"],
|
|
12
15
|
root: true,
|
|
13
16
|
rules: {
|
|
14
17
|
"no-unused-vars": "off",
|
|
15
|
-
"@typescript-eslint/no-unused-vars": [
|
|
16
|
-
|
|
18
|
+
"@typescript-eslint/no-unused-vars": [
|
|
19
|
+
"error",
|
|
20
|
+
{ argsIgnorePattern: "^_", varsIgnorePattern: "^_" },
|
|
21
|
+
],
|
|
22
|
+
"@typescript-eslint/no-floating-promises": "error",
|
|
17
23
|
},
|
|
18
|
-
}
|
|
24
|
+
}
|
package/.prettierrc.js
ADDED
package/.turbo/turbo-build.log
CHANGED
|
File without changes
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# cojson-storage-indexeddb
|
|
2
2
|
|
|
3
|
+
## 0.7.0-alpha.39
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies
|
|
8
|
+
- cojson@0.7.0-alpha.39
|
|
9
|
+
|
|
10
|
+
## 0.7.0-alpha.38
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies
|
|
15
|
+
- cojson@0.7.0-alpha.38
|
|
16
|
+
|
|
3
17
|
## 0.7.0-alpha.37
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
package/README.md
ADDED
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { cojsonInternals, MAX_RECOMMENDED_TX_SIZE, } from "cojson";
|
|
2
|
-
import { SyncPromise } from "./syncPromises";
|
|
2
|
+
import { SyncPromise } from "./syncPromises.js";
|
|
3
3
|
export class IDBStorage {
|
|
4
4
|
constructor(db, fromLocalNode, toLocalNode) {
|
|
5
5
|
this.currentTxID = 0;
|
|
6
6
|
this.db = db;
|
|
7
7
|
this.fromLocalNode = fromLocalNode.getReader();
|
|
8
8
|
this.toLocalNode = toLocalNode.getWriter();
|
|
9
|
-
(async () => {
|
|
9
|
+
void (async () => {
|
|
10
10
|
let done = false;
|
|
11
11
|
while (!done) {
|
|
12
12
|
const result = await this.fromLocalNode.read();
|
|
@@ -202,7 +202,10 @@ export class IDBStorage {
|
|
|
202
202
|
return this.makeRequest(({ transactions }) => transactions.getAll(IDBKeyRange.bound([
|
|
203
203
|
sessionRow.rowID,
|
|
204
204
|
firstNewTxIdx,
|
|
205
|
-
], [
|
|
205
|
+
], [
|
|
206
|
+
sessionRow.rowID,
|
|
207
|
+
Infinity,
|
|
208
|
+
]))).then((newTxsInSession) => {
|
|
206
209
|
collectNewTxs(newTxsInSession, newContentPieces, sessionRow, signaturesAndIdxs, theirKnown, firstNewTxIdx);
|
|
207
210
|
});
|
|
208
211
|
});
|
|
@@ -249,7 +252,7 @@ export class IDBStorage {
|
|
|
249
252
|
const header = msg.header;
|
|
250
253
|
if (!header) {
|
|
251
254
|
console.error("Expected to be sent header first");
|
|
252
|
-
this.toLocalNode.write({
|
|
255
|
+
void this.toLocalNode.write({
|
|
253
256
|
action: "known",
|
|
254
257
|
id: msg.id,
|
|
255
258
|
header: false,
|
|
@@ -268,10 +271,13 @@ export class IDBStorage {
|
|
|
268
271
|
}
|
|
269
272
|
})
|
|
270
273
|
.then((storedCoValueRowID) => {
|
|
271
|
-
this.makeRequest(({ sessions }) => sessions
|
|
274
|
+
void this.makeRequest(({ sessions }) => sessions
|
|
272
275
|
.index("sessionsByCoValue")
|
|
273
276
|
.getAll(storedCoValueRowID)).then((allOurSessionsEntries) => {
|
|
274
|
-
const allOurSessions = Object.fromEntries(allOurSessionsEntries.map((row) => [
|
|
277
|
+
const allOurSessions = Object.fromEntries(allOurSessionsEntries.map((row) => [
|
|
278
|
+
row.sessionID,
|
|
279
|
+
row,
|
|
280
|
+
]));
|
|
275
281
|
const ourKnown = {
|
|
276
282
|
id: msg.id,
|
|
277
283
|
header: true,
|
|
@@ -293,7 +299,7 @@ export class IDBStorage {
|
|
|
293
299
|
}
|
|
294
300
|
})).then(() => {
|
|
295
301
|
if (invalidAssumptions) {
|
|
296
|
-
this.toLocalNode.write({
|
|
302
|
+
void this.toLocalNode.write({
|
|
297
303
|
action: "known",
|
|
298
304
|
...ourKnown,
|
|
299
305
|
isCorrection: invalidAssumptions,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.test.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { expect, test } from "vitest";
|
|
2
|
-
import { ControlledAgent, LocalNode, cojsonInternals } from "cojson";
|
|
3
|
-
import { IDBStorage } from ".";
|
|
2
|
+
import { ControlledAgent, LocalNode, WasmCrypto, cojsonInternals, } from "cojson";
|
|
3
|
+
import { IDBStorage } from "./index.js";
|
|
4
|
+
const Crypto = await WasmCrypto.create();
|
|
4
5
|
test.skip("Should be able to initialize and load from empty DB", async () => {
|
|
5
|
-
const agentSecret =
|
|
6
|
-
const node = new LocalNode(new ControlledAgent(agentSecret), cojsonInternals.newRandomSessionID(
|
|
6
|
+
const agentSecret = Crypto.newRandomAgentSecret();
|
|
7
|
+
const node = new LocalNode(new ControlledAgent(agentSecret, Crypto), cojsonInternals.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
|
|
7
8
|
node.syncManager.addPeer(await IDBStorage.asPeer({ trace: true }));
|
|
8
9
|
console.log("yay!");
|
|
9
10
|
const _group = node.createGroup();
|
|
@@ -11,15 +12,15 @@ test.skip("Should be able to initialize and load from empty DB", async () => {
|
|
|
11
12
|
expect(node.syncManager.peers["storage"]).toBeDefined();
|
|
12
13
|
});
|
|
13
14
|
test("Should be able to sync data to database and then load that from a new node", async () => {
|
|
14
|
-
const agentSecret =
|
|
15
|
-
const node1 = new LocalNode(new ControlledAgent(agentSecret), cojsonInternals.newRandomSessionID(
|
|
15
|
+
const agentSecret = Crypto.newRandomAgentSecret();
|
|
16
|
+
const node1 = new LocalNode(new ControlledAgent(agentSecret, Crypto), cojsonInternals.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
|
|
16
17
|
node1.syncManager.addPeer(await IDBStorage.asPeer({ trace: true, localNodeName: "node1" }));
|
|
17
18
|
console.log("yay!");
|
|
18
19
|
const group = node1.createGroup();
|
|
19
20
|
const map = group.createMap();
|
|
20
21
|
map.set("hello", "world");
|
|
21
22
|
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
22
|
-
const node2 = new LocalNode(new ControlledAgent(agentSecret), cojsonInternals.newRandomSessionID(
|
|
23
|
+
const node2 = new LocalNode(new ControlledAgent(agentSecret, Crypto), cojsonInternals.newRandomSessionID(Crypto.getAgentID(agentSecret)), Crypto);
|
|
23
24
|
node2.syncManager.addPeer(await IDBStorage.asPeer({ trace: true, localNodeName: "node2" }));
|
|
24
25
|
const map2 = await node2.load(map.id);
|
|
25
26
|
if (map2 === "unavailable") {
|
package/dist/index.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
|
package/dist/syncPromises.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* eslint @typescript-eslint/no-explicit-any: 0 */
|
|
2
|
-
const isFunction = (func) => typeof func ===
|
|
3
|
-
const isObject = (supposedObject) => typeof supposedObject ===
|
|
2
|
+
const isFunction = (func) => typeof func === "function";
|
|
3
|
+
const isObject = (supposedObject) => typeof supposedObject === "object" &&
|
|
4
4
|
supposedObject !== null &&
|
|
5
5
|
!Array.isArray(supposedObject);
|
|
6
6
|
const isThenable = (obj) => isObject(obj) && isFunction(obj.then);
|
|
@@ -34,7 +34,7 @@ export class SyncPromise {
|
|
|
34
34
|
this.state = state;
|
|
35
35
|
return this.executeHandlers();
|
|
36
36
|
};
|
|
37
|
-
set();
|
|
37
|
+
void set();
|
|
38
38
|
};
|
|
39
39
|
this.executeHandlers = () => {
|
|
40
40
|
if (this.state === States.PENDING) {
|
|
@@ -133,7 +133,7 @@ export class SyncPromise {
|
|
|
133
133
|
static all(collection) {
|
|
134
134
|
return new SyncPromise((resolve, reject) => {
|
|
135
135
|
if (!Array.isArray(collection)) {
|
|
136
|
-
return reject(new TypeError(
|
|
136
|
+
return reject(new TypeError("An array must be provided."));
|
|
137
137
|
}
|
|
138
138
|
if (collection.length === 0) {
|
|
139
139
|
return resolve([]);
|
package/dist/syncPromises.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncPromises.js","sourceRoot":"","sources":["../src/syncPromises.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,MAAM,UAAU,GAAG,CAAC,IAAS,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,UAAU,CAAC;AAE7D,MAAM,QAAQ,GAAG,CAAC,cAAmB,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"syncPromises.js","sourceRoot":"","sources":["../src/syncPromises.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,24 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cojson-storage-indexeddb",
|
|
3
|
-
"version": "0.7.0-alpha.
|
|
3
|
+
"version": "0.7.0-alpha.39",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"types": "src/index.ts",
|
|
6
7
|
"license": "MIT",
|
|
7
8
|
"dependencies": {
|
|
8
9
|
"typescript": "^5.1.6",
|
|
9
10
|
"isomorphic-streams": "https://github.com/sgwilym/isomorphic-streams.git#aa9394781bfc92f8d7c981be7daf8af4b4cd4fae",
|
|
10
|
-
"cojson": "0.7.0-alpha.
|
|
11
|
+
"cojson": "0.7.0-alpha.39"
|
|
11
12
|
},
|
|
12
13
|
"devDependencies": {
|
|
13
14
|
"@vitest/browser": "^0.34.1",
|
|
14
15
|
"vitest": "^0.34.1",
|
|
15
16
|
"webdriverio": "^8.15.0"
|
|
16
17
|
},
|
|
18
|
+
"lint-staged": {
|
|
19
|
+
"*.{ts,tsx}": "eslint --fix",
|
|
20
|
+
"*.{js,jsx,mdx,json}": "prettier --write"
|
|
21
|
+
},
|
|
17
22
|
"gitHead": "33c27053293b4801b968c61d5c4c989f93a67d13",
|
|
18
23
|
"scripts": {
|
|
19
24
|
"dev": "tsc --watch --sourceMap --outDir dist",
|
|
20
|
-
"
|
|
21
|
-
"
|
|
25
|
+
"lint": "eslint . --ext ts,tsx",
|
|
26
|
+
"format": "prettier --write './src/**/*.{ts,tsx}'",
|
|
22
27
|
"build": "npm run lint && rm -rf ./dist && tsc --sourceMap --outDir dist"
|
|
23
28
|
}
|
|
24
29
|
}
|
package/src/index.test.ts
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
import { expect, test } from "vitest";
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import {
|
|
3
|
+
ControlledAgent,
|
|
4
|
+
LocalNode,
|
|
5
|
+
WasmCrypto,
|
|
6
|
+
cojsonInternals,
|
|
7
|
+
} from "cojson";
|
|
8
|
+
import { IDBStorage } from "./index.js";
|
|
9
|
+
|
|
10
|
+
const Crypto = await WasmCrypto.create();
|
|
4
11
|
|
|
5
12
|
test.skip("Should be able to initialize and load from empty DB", async () => {
|
|
6
|
-
const agentSecret =
|
|
13
|
+
const agentSecret = Crypto.newRandomAgentSecret();
|
|
7
14
|
|
|
8
15
|
const node = new LocalNode(
|
|
9
|
-
new ControlledAgent(agentSecret),
|
|
10
|
-
cojsonInternals.newRandomSessionID(
|
|
11
|
-
|
|
12
|
-
)
|
|
16
|
+
new ControlledAgent(agentSecret, Crypto),
|
|
17
|
+
cojsonInternals.newRandomSessionID(Crypto.getAgentID(agentSecret)),
|
|
18
|
+
Crypto,
|
|
13
19
|
);
|
|
14
20
|
|
|
15
21
|
node.syncManager.addPeer(await IDBStorage.asPeer({ trace: true }));
|
|
@@ -24,17 +30,16 @@ test.skip("Should be able to initialize and load from empty DB", async () => {
|
|
|
24
30
|
});
|
|
25
31
|
|
|
26
32
|
test("Should be able to sync data to database and then load that from a new node", async () => {
|
|
27
|
-
const agentSecret =
|
|
33
|
+
const agentSecret = Crypto.newRandomAgentSecret();
|
|
28
34
|
|
|
29
35
|
const node1 = new LocalNode(
|
|
30
|
-
new ControlledAgent(agentSecret),
|
|
31
|
-
cojsonInternals.newRandomSessionID(
|
|
32
|
-
|
|
33
|
-
)
|
|
36
|
+
new ControlledAgent(agentSecret, Crypto),
|
|
37
|
+
cojsonInternals.newRandomSessionID(Crypto.getAgentID(agentSecret)),
|
|
38
|
+
Crypto,
|
|
34
39
|
);
|
|
35
40
|
|
|
36
41
|
node1.syncManager.addPeer(
|
|
37
|
-
await IDBStorage.asPeer({ trace: true, localNodeName: "node1" })
|
|
42
|
+
await IDBStorage.asPeer({ trace: true, localNodeName: "node1" }),
|
|
38
43
|
);
|
|
39
44
|
|
|
40
45
|
console.log("yay!");
|
|
@@ -43,19 +48,18 @@ test("Should be able to sync data to database and then load that from a new node
|
|
|
43
48
|
|
|
44
49
|
const map = group.createMap();
|
|
45
50
|
|
|
46
|
-
map.set("hello", "world")
|
|
51
|
+
map.set("hello", "world");
|
|
47
52
|
|
|
48
53
|
await new Promise((resolve) => setTimeout(resolve, 200));
|
|
49
54
|
|
|
50
55
|
const node2 = new LocalNode(
|
|
51
|
-
new ControlledAgent(agentSecret),
|
|
52
|
-
cojsonInternals.newRandomSessionID(
|
|
53
|
-
|
|
54
|
-
)
|
|
56
|
+
new ControlledAgent(agentSecret, Crypto),
|
|
57
|
+
cojsonInternals.newRandomSessionID(Crypto.getAgentID(agentSecret)),
|
|
58
|
+
Crypto,
|
|
55
59
|
);
|
|
56
60
|
|
|
57
61
|
node2.syncManager.addPeer(
|
|
58
|
-
await IDBStorage.asPeer({ trace: true, localNodeName: "node2" })
|
|
62
|
+
await IDBStorage.asPeer({ trace: true, localNodeName: "node2" }),
|
|
59
63
|
);
|
|
60
64
|
|
|
61
65
|
const map2 = await node2.load(map.id);
|
package/src/index.ts
CHANGED
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
ReadableStreamDefaultReader,
|
|
14
14
|
WritableStreamDefaultWriter,
|
|
15
15
|
} from "isomorphic-streams";
|
|
16
|
-
import { SyncPromise } from "./syncPromises";
|
|
16
|
+
import { SyncPromise } from "./syncPromises.js";
|
|
17
17
|
|
|
18
18
|
type CoValueRow = {
|
|
19
19
|
id: CojsonInternalTypes.RawCoID;
|
|
@@ -52,13 +52,13 @@ export class IDBStorage {
|
|
|
52
52
|
constructor(
|
|
53
53
|
db: IDBDatabase,
|
|
54
54
|
fromLocalNode: ReadableStream<SyncMessage>,
|
|
55
|
-
toLocalNode: WritableStream<SyncMessage
|
|
55
|
+
toLocalNode: WritableStream<SyncMessage>,
|
|
56
56
|
) {
|
|
57
57
|
this.db = db;
|
|
58
58
|
this.fromLocalNode = fromLocalNode.getReader();
|
|
59
59
|
this.toLocalNode = toLocalNode.getWriter();
|
|
60
60
|
|
|
61
|
-
(async () => {
|
|
61
|
+
void (async () => {
|
|
62
62
|
let done = false;
|
|
63
63
|
while (!done) {
|
|
64
64
|
const result = await this.fromLocalNode.read();
|
|
@@ -87,17 +87,17 @@ export class IDBStorage {
|
|
|
87
87
|
localNodeName = "local",
|
|
88
88
|
}: { trace?: boolean; localNodeName?: string } | undefined = {
|
|
89
89
|
localNodeName: "local",
|
|
90
|
-
}
|
|
90
|
+
},
|
|
91
91
|
): Promise<Peer> {
|
|
92
92
|
const [localNodeAsPeer, storageAsPeer] = cojsonInternals.connectedPeers(
|
|
93
93
|
localNodeName,
|
|
94
94
|
"storage",
|
|
95
|
-
{ peer1role: "client", peer2role: "server", trace }
|
|
95
|
+
{ peer1role: "client", peer2role: "server", trace },
|
|
96
96
|
);
|
|
97
97
|
|
|
98
98
|
await IDBStorage.open(
|
|
99
99
|
localNodeAsPeer.incoming,
|
|
100
|
-
localNodeAsPeer.outgoing
|
|
100
|
+
localNodeAsPeer.outgoing,
|
|
101
101
|
);
|
|
102
102
|
|
|
103
103
|
return { ...storageAsPeer, priority: 100 };
|
|
@@ -105,7 +105,7 @@ export class IDBStorage {
|
|
|
105
105
|
|
|
106
106
|
static async open(
|
|
107
107
|
fromLocalNode: ReadableStream<SyncMessage>,
|
|
108
|
-
toLocalNode: WritableStream<SyncMessage
|
|
108
|
+
toLocalNode: WritableStream<SyncMessage>,
|
|
109
109
|
) {
|
|
110
110
|
const dbPromise = new Promise<IDBDatabase>((resolve, reject) => {
|
|
111
111
|
const request = indexedDB.open("jazz-storage", 4);
|
|
@@ -138,7 +138,7 @@ export class IDBStorage {
|
|
|
138
138
|
["coValue", "sessionID"],
|
|
139
139
|
{
|
|
140
140
|
unique: true,
|
|
141
|
-
}
|
|
141
|
+
},
|
|
142
142
|
);
|
|
143
143
|
|
|
144
144
|
db.createObjectStore("transactions", {
|
|
@@ -219,7 +219,7 @@ export class IDBStorage {
|
|
|
219
219
|
sessions: IDBObjectStore;
|
|
220
220
|
transactions: IDBObjectStore;
|
|
221
221
|
signatureAfter: IDBObjectStore;
|
|
222
|
-
}) => IDBRequest
|
|
222
|
+
}) => IDBRequest,
|
|
223
223
|
): SyncPromise<T> {
|
|
224
224
|
return new SyncPromise((resolve, reject) => {
|
|
225
225
|
let txEntry = this.currentTx;
|
|
@@ -260,7 +260,7 @@ export class IDBStorage {
|
|
|
260
260
|
if (!txEntry || performance.now() - txEntry.startedAt > 20) {
|
|
261
261
|
const tx = this.db.transaction(
|
|
262
262
|
["coValues", "sessions", "transactions", "signatureAfter"],
|
|
263
|
-
"readwrite"
|
|
263
|
+
"readwrite",
|
|
264
264
|
);
|
|
265
265
|
txEntry = {
|
|
266
266
|
id: this.currentTxID++,
|
|
@@ -296,10 +296,10 @@ export class IDBStorage {
|
|
|
296
296
|
|
|
297
297
|
sendNewContentAfter(
|
|
298
298
|
theirKnown: CojsonInternalTypes.CoValueKnownState,
|
|
299
|
-
asDependencyOf?: CojsonInternalTypes.RawCoID
|
|
299
|
+
asDependencyOf?: CojsonInternalTypes.RawCoID,
|
|
300
300
|
): SyncPromise<void> {
|
|
301
301
|
return this.makeRequest<StoredCoValueRow | undefined>(({ coValues }) =>
|
|
302
|
-
coValues.index("coValuesById").get(theirKnown.id)
|
|
302
|
+
coValues.index("coValuesById").get(theirKnown.id),
|
|
303
303
|
)
|
|
304
304
|
.then((coValueRow) => {
|
|
305
305
|
return (
|
|
@@ -307,7 +307,7 @@ export class IDBStorage {
|
|
|
307
307
|
? this.makeRequest<StoredSessionRow[]>(({ sessions }) =>
|
|
308
308
|
sessions
|
|
309
309
|
.index("sessionsByCoValue")
|
|
310
|
-
.getAll(coValueRow.rowID)
|
|
310
|
+
.getAll(coValueRow.rowID),
|
|
311
311
|
)
|
|
312
312
|
: SyncPromise.resolve([])
|
|
313
313
|
).then((allOurSessions) => {
|
|
@@ -350,9 +350,9 @@ export class IDBStorage {
|
|
|
350
350
|
sessionRow.rowID,
|
|
351
351
|
firstNewTxIdx,
|
|
352
352
|
],
|
|
353
|
-
[sessionRow.rowID, Infinity]
|
|
354
|
-
)
|
|
355
|
-
)
|
|
353
|
+
[sessionRow.rowID, Infinity],
|
|
354
|
+
),
|
|
355
|
+
),
|
|
356
356
|
).then((signaturesAndIdxs) => {
|
|
357
357
|
// console.log(
|
|
358
358
|
// theirKnown.id,
|
|
@@ -368,9 +368,12 @@ export class IDBStorage {
|
|
|
368
368
|
sessionRow.rowID,
|
|
369
369
|
firstNewTxIdx,
|
|
370
370
|
],
|
|
371
|
-
[
|
|
372
|
-
|
|
373
|
-
|
|
371
|
+
[
|
|
372
|
+
sessionRow.rowID,
|
|
373
|
+
Infinity,
|
|
374
|
+
],
|
|
375
|
+
),
|
|
376
|
+
),
|
|
374
377
|
).then((newTxsInSession) => {
|
|
375
378
|
collectNewTxs(
|
|
376
379
|
newTxsInSession,
|
|
@@ -378,19 +381,19 @@ export class IDBStorage {
|
|
|
378
381
|
sessionRow,
|
|
379
382
|
signaturesAndIdxs,
|
|
380
383
|
theirKnown,
|
|
381
|
-
firstNewTxIdx
|
|
384
|
+
firstNewTxIdx,
|
|
382
385
|
);
|
|
383
386
|
});
|
|
384
387
|
});
|
|
385
388
|
} else {
|
|
386
389
|
return SyncPromise.resolve();
|
|
387
390
|
}
|
|
388
|
-
})
|
|
391
|
+
}),
|
|
389
392
|
).then(() => {
|
|
390
393
|
const dependedOnCoValues = getDependedOnCoValues(
|
|
391
394
|
coValueRow,
|
|
392
395
|
newContentPieces,
|
|
393
|
-
theirKnown
|
|
396
|
+
theirKnown,
|
|
394
397
|
);
|
|
395
398
|
|
|
396
399
|
return SyncPromise.all(
|
|
@@ -401,9 +404,9 @@ export class IDBStorage {
|
|
|
401
404
|
header: false,
|
|
402
405
|
sessions: {},
|
|
403
406
|
},
|
|
404
|
-
asDependencyOf || theirKnown.id
|
|
405
|
-
)
|
|
406
|
-
)
|
|
407
|
+
asDependencyOf || theirKnown.id,
|
|
408
|
+
),
|
|
409
|
+
),
|
|
407
410
|
).then(() => {
|
|
408
411
|
// we're done with IndexedDB stuff here so can use native Promises again
|
|
409
412
|
setTimeout(async () => {
|
|
@@ -417,7 +420,7 @@ export class IDBStorage {
|
|
|
417
420
|
newContentPieces.filter(
|
|
418
421
|
(piece) =>
|
|
419
422
|
piece.header ||
|
|
420
|
-
Object.keys(piece.new).length > 0
|
|
423
|
+
Object.keys(piece.new).length > 0,
|
|
421
424
|
);
|
|
422
425
|
|
|
423
426
|
// console.log(theirKnown.id, nonEmptyNewContentPieces);
|
|
@@ -425,7 +428,7 @@ export class IDBStorage {
|
|
|
425
428
|
for (const piece of nonEmptyNewContentPieces) {
|
|
426
429
|
await this.toLocalNode.write(piece);
|
|
427
430
|
await new Promise((resolve) =>
|
|
428
|
-
setTimeout(resolve, 0)
|
|
431
|
+
setTimeout(resolve, 0),
|
|
429
432
|
);
|
|
430
433
|
}
|
|
431
434
|
}, 0);
|
|
@@ -443,17 +446,17 @@ export class IDBStorage {
|
|
|
443
446
|
}
|
|
444
447
|
|
|
445
448
|
handleContent(
|
|
446
|
-
msg: CojsonInternalTypes.NewContentMessage
|
|
449
|
+
msg: CojsonInternalTypes.NewContentMessage,
|
|
447
450
|
): SyncPromise<void> {
|
|
448
451
|
return this.makeRequest<StoredCoValueRow | undefined>(({ coValues }) =>
|
|
449
|
-
coValues.index("coValuesById").get(msg.id)
|
|
452
|
+
coValues.index("coValuesById").get(msg.id),
|
|
450
453
|
)
|
|
451
454
|
.then((coValueRow) => {
|
|
452
455
|
if (coValueRow?.rowID === undefined) {
|
|
453
456
|
const header = msg.header;
|
|
454
457
|
if (!header) {
|
|
455
458
|
console.error("Expected to be sent header first");
|
|
456
|
-
this.toLocalNode.write({
|
|
459
|
+
void this.toLocalNode.write({
|
|
457
460
|
action: "known",
|
|
458
461
|
id: msg.id,
|
|
459
462
|
header: false,
|
|
@@ -467,22 +470,25 @@ export class IDBStorage {
|
|
|
467
470
|
coValues.put({
|
|
468
471
|
id: msg.id,
|
|
469
472
|
header: header,
|
|
470
|
-
} satisfies CoValueRow)
|
|
473
|
+
} satisfies CoValueRow),
|
|
471
474
|
) as SyncPromise<number>;
|
|
472
475
|
} else {
|
|
473
476
|
return SyncPromise.resolve(coValueRow.rowID);
|
|
474
477
|
}
|
|
475
478
|
})
|
|
476
479
|
.then((storedCoValueRowID: number) => {
|
|
477
|
-
this.makeRequest<StoredSessionRow[]>(({ sessions }) =>
|
|
480
|
+
void this.makeRequest<StoredSessionRow[]>(({ sessions }) =>
|
|
478
481
|
sessions
|
|
479
482
|
.index("sessionsByCoValue")
|
|
480
|
-
.getAll(storedCoValueRowID)
|
|
483
|
+
.getAll(storedCoValueRowID),
|
|
481
484
|
).then((allOurSessionsEntries) => {
|
|
482
485
|
const allOurSessions: {
|
|
483
486
|
[sessionID: SessionID]: StoredSessionRow;
|
|
484
487
|
} = Object.fromEntries(
|
|
485
|
-
allOurSessionsEntries.map((row) => [
|
|
488
|
+
allOurSessionsEntries.map((row) => [
|
|
489
|
+
row.sessionID,
|
|
490
|
+
row,
|
|
491
|
+
]),
|
|
486
492
|
);
|
|
487
493
|
|
|
488
494
|
const ourKnown: CojsonInternalTypes.CoValueKnownState = {
|
|
@@ -511,14 +517,14 @@ export class IDBStorage {
|
|
|
511
517
|
msg,
|
|
512
518
|
sessionID,
|
|
513
519
|
sessionRow,
|
|
514
|
-
storedCoValueRowID
|
|
520
|
+
storedCoValueRowID,
|
|
515
521
|
);
|
|
516
522
|
}
|
|
517
|
-
}
|
|
518
|
-
)
|
|
523
|
+
},
|
|
524
|
+
),
|
|
519
525
|
).then(() => {
|
|
520
526
|
if (invalidAssumptions) {
|
|
521
|
-
this.toLocalNode.write({
|
|
527
|
+
void this.toLocalNode.write({
|
|
522
528
|
action: "known",
|
|
523
529
|
...ourKnown,
|
|
524
530
|
isCorrection: invalidAssumptions,
|
|
@@ -533,7 +539,7 @@ export class IDBStorage {
|
|
|
533
539
|
msg: CojsonInternalTypes.NewContentMessage,
|
|
534
540
|
sessionID: SessionID,
|
|
535
541
|
sessionRow: StoredSessionRow | undefined,
|
|
536
|
-
storedCoValueRowID: number
|
|
542
|
+
storedCoValueRowID: number,
|
|
537
543
|
) {
|
|
538
544
|
const newTransactions = msg.new[sessionID]?.newTransactions || [];
|
|
539
545
|
|
|
@@ -551,7 +557,7 @@ export class IDBStorage {
|
|
|
551
557
|
(tx.privacy === "private"
|
|
552
558
|
? tx.encryptedChanges.length
|
|
553
559
|
: tx.changes.length),
|
|
554
|
-
0
|
|
560
|
+
0,
|
|
555
561
|
);
|
|
556
562
|
|
|
557
563
|
const newLastIdx =
|
|
@@ -581,8 +587,8 @@ export class IDBStorage {
|
|
|
581
587
|
rowID: sessionRow.rowID,
|
|
582
588
|
...sessionUpdate,
|
|
583
589
|
}
|
|
584
|
-
: sessionUpdate
|
|
585
|
-
)
|
|
590
|
+
: sessionUpdate,
|
|
591
|
+
),
|
|
586
592
|
).then((sessionRowID) => {
|
|
587
593
|
let maybePutRequest;
|
|
588
594
|
if (shouldWriteSignature) {
|
|
@@ -592,7 +598,7 @@ export class IDBStorage {
|
|
|
592
598
|
// TODO: newLastIdx is a misnomer, it's actually more like nextIdx or length
|
|
593
599
|
idx: newLastIdx - 1,
|
|
594
600
|
signature: msg.new[sessionID]!.lastSignature,
|
|
595
|
-
} satisfies SignatureAfterRow)
|
|
601
|
+
} satisfies SignatureAfterRow),
|
|
596
602
|
);
|
|
597
603
|
} else {
|
|
598
604
|
maybePutRequest = SyncPromise.resolve();
|
|
@@ -606,10 +612,10 @@ export class IDBStorage {
|
|
|
606
612
|
ses: sessionRowID,
|
|
607
613
|
idx: nextIdx + i,
|
|
608
614
|
tx: newTransaction,
|
|
609
|
-
} satisfies TransactionRow)
|
|
615
|
+
} satisfies TransactionRow),
|
|
610
616
|
);
|
|
611
|
-
})
|
|
612
|
-
)
|
|
617
|
+
}),
|
|
618
|
+
),
|
|
613
619
|
);
|
|
614
620
|
});
|
|
615
621
|
}
|
|
@@ -663,7 +669,7 @@ function collectNewTxs(
|
|
|
663
669
|
sessionRow: StoredSessionRow,
|
|
664
670
|
signaturesAndIdxs: SignatureAfterRow[],
|
|
665
671
|
theirKnown: CojsonInternalTypes.CoValueKnownState,
|
|
666
|
-
firstNewTxIdx: number
|
|
672
|
+
firstNewTxIdx: number,
|
|
667
673
|
) {
|
|
668
674
|
let idx = firstNewTxIdx;
|
|
669
675
|
|
|
@@ -709,7 +715,7 @@ function collectNewTxs(
|
|
|
709
715
|
function getDependedOnCoValues(
|
|
710
716
|
coValueRow: StoredCoValueRow | undefined,
|
|
711
717
|
newContentPieces: CojsonInternalTypes.NewContentMessage[],
|
|
712
|
-
theirKnown: CojsonInternalTypes.CoValueKnownState
|
|
718
|
+
theirKnown: CojsonInternalTypes.CoValueKnownState,
|
|
713
719
|
) {
|
|
714
720
|
return coValueRow?.header.ruleset.type === "group"
|
|
715
721
|
? newContentPieces
|
|
@@ -727,35 +733,35 @@ function getDependedOnCoValues(
|
|
|
727
733
|
"op" in change &&
|
|
728
734
|
change.op === "set" &&
|
|
729
735
|
"key" in change &&
|
|
730
|
-
change.key
|
|
736
|
+
change.key,
|
|
731
737
|
)
|
|
732
738
|
.filter(
|
|
733
739
|
(key): key is CojsonInternalTypes.RawCoID =>
|
|
734
740
|
typeof key === "string" &&
|
|
735
|
-
key.startsWith("co_")
|
|
741
|
+
key.startsWith("co_"),
|
|
736
742
|
);
|
|
737
|
-
})
|
|
743
|
+
}),
|
|
738
744
|
)
|
|
739
745
|
: coValueRow?.header.ruleset.type === "ownedByGroup"
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
746
|
+
? [
|
|
747
|
+
coValueRow?.header.ruleset.group,
|
|
748
|
+
...new Set(
|
|
749
|
+
newContentPieces.flatMap((piece) =>
|
|
750
|
+
Object.keys(piece)
|
|
751
|
+
.map((sessionID) =>
|
|
752
|
+
cojsonInternals.accountOrAgentIDfromSessionID(
|
|
753
|
+
sessionID as SessionID,
|
|
754
|
+
),
|
|
755
|
+
)
|
|
756
|
+
.filter(
|
|
757
|
+
(accountID): accountID is AccountID =>
|
|
758
|
+
cojsonInternals.isAccountID(accountID) &&
|
|
759
|
+
accountID !== theirKnown.id,
|
|
760
|
+
),
|
|
761
|
+
),
|
|
762
|
+
),
|
|
763
|
+
]
|
|
764
|
+
: [];
|
|
759
765
|
}
|
|
760
766
|
// let lastTx = 0;
|
|
761
767
|
|
package/src/syncPromises.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/* eslint @typescript-eslint/no-explicit-any: 0 */
|
|
2
|
-
const isFunction = (func: any) => typeof func ===
|
|
2
|
+
const isFunction = (func: any) => typeof func === "function";
|
|
3
3
|
|
|
4
4
|
const isObject = (supposedObject: any) =>
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
typeof supposedObject === "object" &&
|
|
6
|
+
supposedObject !== null &&
|
|
7
|
+
!Array.isArray(supposedObject);
|
|
8
8
|
|
|
9
9
|
const isThenable = (obj: any) => isObject(obj) && isFunction(obj.then);
|
|
10
10
|
|
|
@@ -13,14 +13,14 @@ const identity = (co: any) => co;
|
|
|
13
13
|
export { isObject, isThenable, identity, isFunction };
|
|
14
14
|
|
|
15
15
|
enum States {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
PENDING = "PENDING",
|
|
17
|
+
RESOLVED = "RESOLVED",
|
|
18
|
+
REJECTED = "REJECTED",
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
interface Handler<T, U> {
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
onSuccess: HandlerOnSuccess<T, U>;
|
|
23
|
+
onFail: HandlerOnFail<U>;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
type HandlerOnSuccess<T, U = any> = (value: T) => U | Thenable<U>;
|
|
@@ -28,201 +28,202 @@ type HandlerOnFail<U = any> = (reason: any) => U | Thenable<U>;
|
|
|
28
28
|
type Finally<U> = () => U | Thenable<U>;
|
|
29
29
|
|
|
30
30
|
interface Thenable<T> {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
31
|
+
then<U>(
|
|
32
|
+
onSuccess?: HandlerOnSuccess<T, U>,
|
|
33
|
+
onFail?: HandlerOnFail<U>,
|
|
34
|
+
): Thenable<U>;
|
|
35
|
+
then<U>(
|
|
36
|
+
onSuccess?: HandlerOnSuccess<T, U>,
|
|
37
|
+
onFail?: (reason: any) => void,
|
|
38
|
+
): Thenable<U>;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
type Resolve<R> = (value?: R | Thenable<R>) => void;
|
|
42
42
|
type Reject = (value?: any) => void;
|
|
43
43
|
|
|
44
44
|
export class SyncPromise<T> {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
45
|
+
private state: States = States.PENDING;
|
|
46
|
+
private handlers: Handler<T, any>[] = [];
|
|
47
|
+
private value: T | any;
|
|
48
|
+
|
|
49
|
+
public constructor(
|
|
50
|
+
callback: (resolve: Resolve<T>, reject: Reject) => void,
|
|
51
|
+
) {
|
|
52
|
+
try {
|
|
53
|
+
callback(this.resolve as Resolve<T>, this.reject);
|
|
54
|
+
} catch (e) {
|
|
55
|
+
this.reject(e);
|
|
56
|
+
}
|
|
54
57
|
}
|
|
55
|
-
}
|
|
56
58
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
private resolve = (value: T) => {
|
|
60
|
+
return this.setResult(value, States.RESOLVED);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
private reject = (reason: any) => {
|
|
64
|
+
return this.setResult(reason, States.REJECTED);
|
|
65
|
+
};
|
|
60
66
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
67
|
+
private setResult = (value: T | any, state: States) => {
|
|
68
|
+
const set = () => {
|
|
69
|
+
if (this.state !== States.PENDING) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
64
72
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
73
|
+
if (isThenable(value)) {
|
|
74
|
+
return (value as Thenable<T>).then(this.resolve, this.reject);
|
|
75
|
+
}
|
|
70
76
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
77
|
+
this.value = value;
|
|
78
|
+
this.state = state;
|
|
74
79
|
|
|
75
|
-
|
|
76
|
-
|
|
80
|
+
return this.executeHandlers();
|
|
81
|
+
};
|
|
77
82
|
|
|
78
|
-
|
|
83
|
+
void set();
|
|
79
84
|
};
|
|
80
85
|
|
|
81
|
-
|
|
82
|
-
|
|
86
|
+
private executeHandlers = () => {
|
|
87
|
+
if (this.state === States.PENDING) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
83
90
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
91
|
+
this.handlers.forEach((handler) => {
|
|
92
|
+
if (this.state === States.REJECTED) {
|
|
93
|
+
return handler.onFail(this.value);
|
|
94
|
+
}
|
|
88
95
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return handler.onFail(this.value);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
return handler.onSuccess(this.value);
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
this.handlers = [];
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
private attachHandler = (handler: Handler<T, any>) => {
|
|
101
|
-
this.handlers = [...this.handlers, handler];
|
|
102
|
-
|
|
103
|
-
this.executeHandlers();
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
public then<U>(
|
|
107
|
-
onSuccess: HandlerOnSuccess<T, U>,
|
|
108
|
-
onFail?: HandlerOnFail<U>,
|
|
109
|
-
) {
|
|
110
|
-
return new SyncPromise<U>((resolve, reject) => {
|
|
111
|
-
return this.attachHandler({
|
|
112
|
-
onSuccess: (result) => {
|
|
113
|
-
try {
|
|
114
|
-
return resolve(onSuccess(result));
|
|
115
|
-
} catch (e) {
|
|
116
|
-
return reject(e);
|
|
117
|
-
}
|
|
118
|
-
},
|
|
119
|
-
onFail: (reason) => {
|
|
120
|
-
if (!onFail) {
|
|
121
|
-
return reject(reason);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
try {
|
|
125
|
-
return resolve(onFail(reason));
|
|
126
|
-
} catch (e) {
|
|
127
|
-
return reject(e);
|
|
128
|
-
}
|
|
129
|
-
},
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
public catch<U>(onFail: HandlerOnFail<U>) {
|
|
135
|
-
return this.then<U>(identity, onFail);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
// methods
|
|
139
|
-
|
|
140
|
-
public toString() {
|
|
141
|
-
return `[object SyncPromise]`;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
public finally<U>(cb: Finally<U>) {
|
|
145
|
-
return new SyncPromise<U>((resolve, reject) => {
|
|
146
|
-
let co: U | any;
|
|
147
|
-
let isRejected: boolean;
|
|
148
|
-
|
|
149
|
-
return this.then(
|
|
150
|
-
(value) => {
|
|
151
|
-
isRejected = false;
|
|
152
|
-
co = value;
|
|
153
|
-
return cb();
|
|
154
|
-
},
|
|
155
|
-
(reason) => {
|
|
156
|
-
isRejected = true;
|
|
157
|
-
co = reason;
|
|
158
|
-
return cb();
|
|
159
|
-
},
|
|
160
|
-
).then(() => {
|
|
161
|
-
if (isRejected) {
|
|
162
|
-
return reject(co);
|
|
163
|
-
}
|
|
96
|
+
return handler.onSuccess(this.value);
|
|
97
|
+
});
|
|
164
98
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
});
|
|
168
|
-
}
|
|
99
|
+
this.handlers = [];
|
|
100
|
+
};
|
|
169
101
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
102
|
+
private attachHandler = (handler: Handler<T, any>) => {
|
|
103
|
+
this.handlers = [...this.handlers, handler];
|
|
104
|
+
|
|
105
|
+
this.executeHandlers();
|
|
106
|
+
};
|
|
175
107
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
108
|
+
public then<U>(
|
|
109
|
+
onSuccess: HandlerOnSuccess<T, U>,
|
|
110
|
+
onFail?: HandlerOnFail<U>,
|
|
111
|
+
) {
|
|
112
|
+
return new SyncPromise<U>((resolve, reject) => {
|
|
113
|
+
return this.attachHandler({
|
|
114
|
+
onSuccess: (result) => {
|
|
115
|
+
try {
|
|
116
|
+
return resolve(onSuccess(result));
|
|
117
|
+
} catch (e) {
|
|
118
|
+
return reject(e);
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
onFail: (reason) => {
|
|
122
|
+
if (!onFail) {
|
|
123
|
+
return reject(reason);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
try {
|
|
127
|
+
return resolve(onFail(reason));
|
|
128
|
+
} catch (e) {
|
|
129
|
+
return reject(e);
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
}
|
|
179
135
|
|
|
136
|
+
public catch<U>(onFail: HandlerOnFail<U>) {
|
|
137
|
+
return this.then<U>(identity, onFail);
|
|
138
|
+
}
|
|
180
139
|
|
|
181
|
-
|
|
140
|
+
// methods
|
|
182
141
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
});
|
|
187
|
-
}
|
|
142
|
+
public toString() {
|
|
143
|
+
return `[object SyncPromise]`;
|
|
144
|
+
}
|
|
188
145
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
146
|
+
public finally<U>(cb: Finally<U>) {
|
|
147
|
+
return new SyncPromise<U>((resolve, reject) => {
|
|
148
|
+
let co: U | any;
|
|
149
|
+
let isRejected: boolean;
|
|
150
|
+
|
|
151
|
+
return this.then(
|
|
152
|
+
(value) => {
|
|
153
|
+
isRejected = false;
|
|
154
|
+
co = value;
|
|
155
|
+
return cb();
|
|
156
|
+
},
|
|
157
|
+
(reason) => {
|
|
158
|
+
isRejected = true;
|
|
159
|
+
co = reason;
|
|
160
|
+
return cb();
|
|
161
|
+
},
|
|
162
|
+
).then(() => {
|
|
163
|
+
if (isRejected) {
|
|
164
|
+
return reject(co);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
return resolve(co);
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
}
|
|
194
171
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
172
|
+
public spread<U>(handler: (...args: any[]) => U) {
|
|
173
|
+
return this.then<U>((collection) => {
|
|
174
|
+
if (Array.isArray(collection)) {
|
|
175
|
+
return handler(...collection);
|
|
176
|
+
}
|
|
200
177
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
178
|
+
return handler(collection);
|
|
179
|
+
});
|
|
180
|
+
}
|
|
204
181
|
|
|
205
|
-
|
|
206
|
-
const resolvedCollection: U[] = [];
|
|
182
|
+
// static
|
|
207
183
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
184
|
+
public static resolve<U = any>(value?: U | Thenable<U>) {
|
|
185
|
+
return new SyncPromise<U>((resolve) => {
|
|
186
|
+
return resolve(value);
|
|
187
|
+
});
|
|
188
|
+
}
|
|
211
189
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
190
|
+
public static reject<U>(reason?: any) {
|
|
191
|
+
return new SyncPromise<U>((_resolve, reject) => {
|
|
192
|
+
return reject(reason);
|
|
193
|
+
});
|
|
194
|
+
}
|
|
215
195
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
196
|
+
public static all<U = any>(collection: (U | Thenable<U>)[]) {
|
|
197
|
+
return new SyncPromise<U[]>((resolve, reject) => {
|
|
198
|
+
if (!Array.isArray(collection)) {
|
|
199
|
+
return reject(new TypeError("An array must be provided."));
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
if (collection.length === 0) {
|
|
203
|
+
return resolve([]);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
let counter = collection.length;
|
|
207
|
+
const resolvedCollection: U[] = [];
|
|
208
|
+
|
|
209
|
+
const tryResolve = (value: U, index: number) => {
|
|
210
|
+
counter -= 1;
|
|
211
|
+
resolvedCollection[index] = value;
|
|
212
|
+
|
|
213
|
+
if (counter !== 0) {
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return resolve(resolvedCollection);
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
return collection.forEach((item, index) => {
|
|
221
|
+
return SyncPromise.resolve(item)
|
|
222
|
+
.then((value) => {
|
|
223
|
+
return tryResolve(value, index);
|
|
224
|
+
})
|
|
225
|
+
.catch(reject);
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
}
|