cojson-storage-indexeddb 0.7.0-alpha.37 → 0.7.0-alpha.38

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 CHANGED
@@ -1,18 +1,24 @@
1
1
  module.exports = {
2
2
  extends: [
3
- 'eslint:recommended',
4
- 'plugin:@typescript-eslint/recommended',
3
+ "eslint:recommended",
4
+ "plugin:@typescript-eslint/recommended",
5
+ "plugin:require-extensions/recommended",
6
+ "prettier"
5
7
  ],
6
- parser: '@typescript-eslint/parser',
7
- plugins: ['@typescript-eslint'],
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": ["error", { "argsIgnorePattern": "^_", "varsIgnorePattern": "^_" }],
16
- // "@typescript-eslint/no-floating-promises": "error",
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
@@ -0,0 +1,9 @@
1
+ /** @type {import("prettier").Config} */
2
+ const config = {
3
+ trailingComma: "all",
4
+ tabWidth: 4,
5
+ semi: true,
6
+ singleQuote: false,
7
+ };
8
+
9
+ export default config;
@@ -4,5 +4,5 @@
4
4
 
5
5
 
6
6
  > cojson-storage-indexeddb@0.7.0-alpha.37 lint
7
- > eslint src/**/*.ts
7
+ > eslint . --ext ts,tsx
8
8
 
@@ -0,0 +1,4 @@
1
+
2
+ > cojson-storage-indexeddb@0.7.0-alpha.37 lint /Users/anselm/jazz/jazz/packages/cojson-storage-indexeddb
3
+ > eslint . --ext ts,tsx
4
+
File without changes
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # cojson-storage-indexeddb
2
2
 
3
+ ## 0.7.0-alpha.38
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+ - cojson@0.7.0-alpha.38
9
+
3
10
  ## 0.7.0-alpha.37
4
11
 
5
12
  ### Patch Changes
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # CoJSON Storage IndexedDB
2
+
3
+ This implements persistence for CoJSON / Jazz (see [jazz.tools](https://jazz.tools)) using IndexedDB.
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
- ], [sessionRow.rowID, Infinity]))).then((newTxsInSession) => {
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) => [row.sessionID, 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":"AAAA,OAAO,EACH,eAAe,EAKf,uBAAuB,GAE1B,MAAM,QAAQ,CAAC;AAOhB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AA+B7C,MAAM,OAAO,UAAU;IAKnB,YACI,EAAe,EACf,aAA0C,EAC1C,WAAwC;QA+J5C,gBAAW,GAAG,CAAC,CAAC;QA7JZ,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;QAE3C,CAAC,KAAK,IAAI,EAAE;YACR,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,OAAO,CAAC,IAAI,EAAE,CAAC;gBACX,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;gBAC/C,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;gBAEnB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,eAAe;oBACf,2BAA2B;oBAC3B,uBAAuB;oBACvB,0BAA0B;oBAC1B,KAAK;oBACL,MAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC3C,eAAe;oBACf,0BAA0B;oBAC1B,uBAAuB;oBACvB,0BAA0B;oBAC1B,KAAK;gBACT,CAAC;YACL,CAAC;QACL,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CACf,EACI,KAAK,EACL,aAAa,GAAG,OAAO,MACkC;QACzD,aAAa,EAAE,OAAO;KACzB;QAED,MAAM,CAAC,eAAe,EAAE,aAAa,CAAC,GAAG,eAAe,CAAC,cAAc,CACnE,aAAa,EACb,SAAS,EACT,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CACtD,CAAC;QAEF,MAAM,UAAU,CAAC,IAAI,CACjB,eAAe,CAAC,QAAQ,EACxB,eAAe,CAAC,QAAQ,CAC3B,CAAC;QAEF,OAAO,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CACb,aAA0C,EAC1C,WAAwC;QAExC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3D,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,OAAO,GAAG,GAAG,EAAE;gBACnB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC,CAAC;YACF,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE;gBACrB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC,CAAC;YACF,OAAO,CAAC,eAAe,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE;gBACnC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC1B,IAAI,EAAE,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;oBACtB,MAAM,QAAQ,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE;wBAC9C,aAAa,EAAE,IAAI;wBACnB,OAAO,EAAE,OAAO;qBACnB,CAAC,CAAC;oBAEH,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,EAAE;wBACvC,MAAM,EAAE,IAAI;qBACf,CAAC,CAAC;oBAEH,MAAM,QAAQ,GAAG,EAAE,CAAC,iBAAiB,CAAC,UAAU,EAAE;wBAC9C,aAAa,EAAE,IAAI;wBACnB,OAAO,EAAE,OAAO;qBACnB,CAAC,CAAC;oBAEH,QAAQ,CAAC,WAAW,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;oBACrD,QAAQ,CAAC,WAAW,CAChB,gBAAgB,EAChB,CAAC,SAAS,EAAE,WAAW,CAAC,EACxB;wBACI,MAAM,EAAE,IAAI;qBACf,CACJ,CAAC;oBAEF,EAAE,CAAC,iBAAiB,CAAC,cAAc,EAAE;wBACjC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;qBAC1B,CAAC,CAAC;gBACP,CAAC;gBACD,IAAI,EAAE,CAAC,UAAU,IAAI,CAAC,EAAE,CAAC;oBACrB,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;wBACnC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;qBAC1B,CAAC,CAAC;gBACP,CAAC;gBACD,mDAAmD;gBACnD,mEAAmE;gBACnE,yDAAyD;gBACzD,4BAA4B;gBAC5B,kEAAkE;gBAClE,qBAAqB;gBAErB,gEAAgE;gBAChE,qDAAqD;gBAErD,8BAA8B;gBAC9B,6DAA6D;gBAC7D,uBAAuB;gBACvB,4CAA4C;gBAC5C,QAAQ;gBACR,gEAAgE;gBAChE,IAAI;YACR,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,UAAU,CAAC,MAAM,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAgB;QACpC,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;YACjB,KAAK,MAAM;gBACP,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC3B,MAAM;YACV,KAAK,SAAS;gBACV,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC9B,MAAM;YACV,KAAK,OAAO;gBACR,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC5B,MAAM;YACV,KAAK,MAAM;gBACP,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC3B,MAAM;QACd,CAAC;IACL,CAAC;IAyBD,WAAW,CACP,OAKgB;QAEhB,OAAO,IAAI,WAAW,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvC,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;YAE7B,MAAM,YAAY,GAAG,CAAC,EAClB,MAAM,GAQT,EAAE,EAAE;gBACD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;gBAChC,OAAO,CAAC,OAAO,GAAG,GAAG,EAAE;oBACnB,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;oBACjD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;oBAC3B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBACtB,2CAA2C;gBAC/C,CAAC,CAAC;gBACF,OAAO,CAAC,SAAS,GAAG,GAAG,EAAE;oBACrB,MAAM,KAAK,GAAG,OAAO,CAAC,MAAW,CAAC;oBAClC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAEf,MAAM,IAAI,GAAG,OAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;oBAE9C,IAAI,IAAI,EAAE,CAAC;wBACP,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;oBACrB,CAAC;yBAAM,CAAC;wBACJ,IAAI,IAAI,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;4BAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;wBAC/B,CAAC;oBACL,CAAC;gBACL,CAAC,CAAC;YACN,CAAC,CAAC;YAEF,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,GAAG,EAAE,EAAE,CAAC;gBACzD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAC1B,CAAC,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,CAAC,EAC1D,WAAW,CACd,CAAC;gBACF,OAAO,GAAG;oBACN,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE;oBACtB,EAAE;oBACF,MAAM,EAAE;wBACJ,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC;wBACpC,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC;wBACpC,YAAY,EAAE,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC;wBAC5C,cAAc,EAAE,EAAE,CAAC,WAAW,CAAC,gBAAgB,CAAC;qBACnD;oBACD,SAAS,EAAE,WAAW,CAAC,GAAG,EAAE;oBAC5B,eAAe,EAAE,EAAE;iBACtB,CAAC;gBAEF,6CAA6C;gBAE7C,kCAAkC;gBAClC,qDAAqD;gBACrD,KAAK;gBAEL,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;gBAEzB,YAAY,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC3C,eAAe;gBACf,4CAA4C;gBAC5C,qCAAqC;gBACrC,KAAK;YACT,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,mBAAmB,CACf,UAAiD,EACjD,cAA4C;QAE5C,OAAO,IAAI,CAAC,WAAW,CAA+B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CACnE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CACpD;aACI,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;YACjB,OAAO,CACH,UAAU;gBACN,CAAC,CAAC,IAAI,CAAC,WAAW,CAAqB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAClD,QAAQ;qBACH,KAAK,CAAC,mBAAmB,CAAC;qBAC1B,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAChC;gBACH,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAChC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE;gBACtB,MAAM,QAAQ,GAA0C;oBACpD,EAAE,EAAE,UAAU,CAAC,EAAE;oBACjB,MAAM,EAAE,CAAC,CAAC,UAAU;oBACpB,QAAQ,EAAE,EAAE;iBACf,CAAC;gBAEF,MAAM,gBAAgB,GAClB;oBACI;wBACI,MAAM,EAAE,SAAS;wBACjB,EAAE,EAAE,UAAU,CAAC,EAAE;wBACjB,MAAM,EAAE,UAAU,CAAC,MAAM;4BACrB,CAAC,CAAC,SAAS;4BACX,CAAC,CAAC,UAAU,EAAE,MAAM;wBACxB,GAAG,EAAE,EAAE;qBACV;iBACJ,CAAC;gBAEN,OAAO,WAAW,CAAC,GAAG,CAClB,cAAc,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBAC9B,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;wBACnC,UAAU,CAAC,OAAO,CAAC;oBAEvB,IACI,UAAU,CAAC,OAAO;wBAClB,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAClD,CAAC;wBACC,MAAM,aAAa,GACf,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;4BACzC,CAAC,CAAC;wBAEN,OAAO,IAAI,CAAC,WAAW,CACnB,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CACnB,cAAc,CAAC,MAAM,CACjB,WAAW,CAAC,KAAK,CACb;4BACI,UAAU,CAAC,KAAK;4BAChB,aAAa;yBAChB,EACD,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAC/B,CACJ,CACR,CAAC,IAAI,CAAC,CAAC,iBAAiB,EAAE,EAAE;4BACzB,eAAe;4BACf,qBAAqB;4BACrB,2BAA2B;4BAC3B,wCAAwC;4BACxC,KAAK;4BAEL,OAAO,IAAI,CAAC,WAAW,CACnB,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CACjB,YAAY,CAAC,MAAM,CACf,WAAW,CAAC,KAAK,CACb;gCACI,UAAU,CAAC,KAAK;gCAChB,aAAa;6BAChB,EACD,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAC/B,CACJ,CACR,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,EAAE;gCACvB,aAAa,CACT,eAAe,EACf,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,aAAa,CAChB,CAAC;4BACN,CAAC,CAAC,CAAC;wBACP,CAAC,CAAC,CAAC;oBACP,CAAC;yBAAM,CAAC;wBACJ,OAAO,WAAW,CAAC,OAAO,EAAE,CAAC;oBACjC,CAAC;gBACL,CAAC,CAAC,CACL,CAAC,IAAI,CAAC,GAAG,EAAE;oBACR,MAAM,kBAAkB,GAAG,qBAAqB,CAC5C,UAAU,EACV,gBAAgB,EAChB,UAAU,CACb,CAAC;oBAEF,OAAO,WAAW,CAAC,GAAG,CAClB,kBAAkB,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,EAAE,CACzC,IAAI,CAAC,mBAAmB,CACpB;wBACI,EAAE,EAAE,iBAAiB;wBACrB,MAAM,EAAE,KAAK;wBACb,QAAQ,EAAE,EAAE;qBACf,EACD,cAAc,IAAI,UAAU,CAAC,EAAE,CAClC,CACJ,CACJ,CAAC,IAAI,CAAC,GAAG,EAAE;wBACR,wEAAwE;wBACxE,UAAU,CAAC,KAAK,IAAI,EAAE;4BAClB,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gCACzB,MAAM,EAAE,OAAO;gCACf,GAAG,QAAQ;gCACX,cAAc;6BACjB,CAAC,CAAC;4BAEH,MAAM,wBAAwB,GAC1B,gBAAgB,CAAC,MAAM,CACnB,CAAC,KAAK,EAAE,EAAE,CACN,KAAK,CAAC,MAAM;gCACZ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CACxC,CAAC;4BAEN,wDAAwD;4BAExD,KAAK,MAAM,KAAK,IAAI,wBAAwB,EAAE,CAAC;gCAC3C,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gCACpC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAC1B,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CACzB,CAAC;4BACN,CAAC;wBACL,CAAC,EAAE,CAAC,CAAC,CAAC;wBAEN,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;oBAC7B,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACxB,CAAC;IAED,UAAU,CAAC,GAAoC;QAC3C,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,aAAa,CACT,GAA0C;QAE1C,OAAO,IAAI,CAAC,WAAW,CAA+B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CACnE,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAC7C;aACI,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;YACjB,IAAI,UAAU,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;gBAC1B,IAAI,CAAC,MAAM,EAAE,CAAC;oBACV,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;oBAClD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;wBACnB,MAAM,EAAE,OAAO;wBACf,EAAE,EAAE,GAAG,CAAC,EAAE;wBACV,MAAM,EAAE,KAAK;wBACb,QAAQ,EAAE,EAAE;wBACZ,YAAY,EAAE,IAAI;qBACrB,CAAC,CAAC;oBACH,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;gBACxD,CAAC;gBAED,OAAO,IAAI,CAAC,WAAW,CAAc,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAClD,QAAQ,CAAC,GAAG,CAAC;oBACT,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,MAAM,EAAE,MAAM;iBACI,CAAC,CACH,CAAC;YAC7B,CAAC;iBAAM,CAAC;gBACJ,OAAO,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACjD,CAAC;QACL,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,kBAA0B,EAAE,EAAE;YACjC,IAAI,CAAC,WAAW,CAAqB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAClD,QAAQ;iBACH,KAAK,CAAC,mBAAmB,CAAC;iBAC1B,MAAM,CAAC,kBAAkB,CAAC,CAClC,CAAC,IAAI,CAAC,CAAC,qBAAqB,EAAE,EAAE;gBAC7B,MAAM,cAAc,GAEhB,MAAM,CAAC,WAAW,CAClB,qBAAqB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAC3D,CAAC;gBAEF,MAAM,QAAQ,GAA0C;oBACpD,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,MAAM,EAAE,IAAI;oBACZ,QAAQ,EAAE,EAAE;iBACf,CAAC;gBACF,IAAI,kBAAkB,GAAG,KAAK,CAAC;gBAE/B,OAAO,OAAO,CAAC,GAAG,CACb,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAiB,CAAC,GAAG,CACrC,CAAC,SAAS,EAAE,EAAE;oBACV,MAAM,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;oBAC7C,IAAI,UAAU,EAAE,CAAC;wBACb,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;4BACnC,UAAU,CAAC,OAAO,CAAC;oBAC3B,CAAC;oBAED,IACI,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,CAAC;wBAC1B,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,EAClC,CAAC;wBACC,kBAAkB,GAAG,IAAI,CAAC;oBAC9B,CAAC;yBAAM,CAAC;wBACJ,OAAO,IAAI,CAAC,SAAS,CACjB,GAAG,EACH,SAAS,EACT,UAAU,EACV,kBAAkB,CACrB,CAAC;oBACN,CAAC;gBACL,CAAC,CACJ,CACJ,CAAC,IAAI,CAAC,GAAG,EAAE;oBACR,IAAI,kBAAkB,EAAE,CAAC;wBACrB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;4BACnB,MAAM,EAAE,OAAO;4BACf,GAAG,QAAQ;4BACX,YAAY,EAAE,kBAAkB;yBACnC,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACX,CAAC;IAEO,SAAS,CACb,GAA0C,EAC1C,SAAoB,EACpB,UAAwC,EACxC,kBAA0B;QAE1B,MAAM,eAAe,GAAG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,eAAe,IAAI,EAAE,CAAC;QAElE,MAAM,iBAAiB,GACnB,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;QAElE,MAAM,uBAAuB,GACzB,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAE7C,IAAI,0BAA0B,GAC1B,CAAC,UAAU,EAAE,uBAAuB,IAAI,CAAC,CAAC;YAC1C,uBAAuB,CAAC,MAAM,CAC1B,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CACR,GAAG;gBACH,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS;oBACrB,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM;oBAC5B,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAC5B,CAAC,CACJ,CAAC;QAEN,MAAM,UAAU,GACZ,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,CAAC,GAAG,uBAAuB,CAAC,MAAM,CAAC;QAEhE,IAAI,oBAAoB,GAAG,KAAK,CAAC;QAEjC,IAAI,0BAA0B,GAAG,uBAAuB,EAAE,CAAC;YACvD,oBAAoB,GAAG,IAAI,CAAC;YAC5B,0BAA0B,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,EAAE,OAAO,IAAI,CAAC,CAAC;QAEzC,MAAM,aAAa,GAAG;YAClB,OAAO,EAAE,kBAAkB;YAC3B,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,UAAU;YACnB,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,aAAa;YAChD,uBAAuB,EAAE,0BAA0B;SACtD,CAAC;QAEF,OAAO,IAAI,CAAC,WAAW,CAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAC7C,QAAQ,CAAC,GAAG,CACR,UAAU,EAAE,KAAK;YACb,CAAC,CAAC;gBACI,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,GAAG,aAAa;aACnB;YACH,CAAC,CAAC,aAAa,CACtB,CACJ,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;YACpB,IAAI,eAAe,CAAC;YACpB,IAAI,oBAAoB,EAAE,CAAC;gBACvB,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CACtD,cAAc,CAAC,GAAG,CAAC;oBACf,GAAG,EAAE,YAAY;oBACjB,4EAA4E;oBAC5E,GAAG,EAAE,UAAU,GAAG,CAAC;oBACnB,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,aAAa;iBACnB,CAAC,CACjC,CAAC;YACN,CAAC;iBAAM,CAAC;gBACJ,eAAe,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;YAC5C,CAAC;YAED,OAAO,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAC7B,OAAO,CAAC,GAAG,CACP,uBAAuB,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE;gBAC9C,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CACzC,YAAY,CAAC,GAAG,CAAC;oBACb,GAAG,EAAE,YAAY;oBACjB,GAAG,EAAE,OAAO,GAAG,CAAC;oBAChB,EAAE,EAAE,cAAc;iBACI,CAAC,CAC9B,CAAC;YACN,CAAC,CAAC,CACL,CACJ,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED,WAAW,CAAC,GAA0C;QAClD,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,IAAqC,IAAG,CAAC;CAqCvD;AAED,SAAS,aAAa,CAClB,eAAiC,EACjC,gBAAyD,EACzD,UAA4B,EAC5B,iBAAsC,EACtC,UAAiD,EACjD,aAAqB;IAErB,IAAI,GAAG,GAAG,aAAa,CAAC;IAExB,eAAe;IACf,qBAAqB;IACrB,wBAAwB;IACxB,4BAA4B;IAC5B,KAAK;IACL,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QAC/B,IAAI,YAAY,GACZ,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,GAAG,CAC9C,UAAU,CAAC,SAAS,CACvB,CAAC;QACN,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,YAAY,GAAG;gBACX,KAAK,EAAE,GAAG;gBACV,aAAa,EACT,kBAAmD;gBACvD,eAAe,EAAE,EAAE;aACtB,CAAC;YACF,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,GAAG,CAC9C,UAAU,CAAC,SAAS,CACvB,GAAG,YAAY,CAAC;QACrB,CAAC;QAED,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAEzC,IAAI,iBAAiB,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YAC3D,YAAY,CAAC,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5D,iBAAiB,CAAC,KAAK,EAAE,CAAC;YAC1B,gBAAgB,CAAC,IAAI,CAAC;gBAClB,MAAM,EAAE,SAAS;gBACjB,EAAE,EAAE,UAAU,CAAC,EAAE;gBACjB,GAAG,EAAE,EAAE;aACV,CAAC,CAAC;QACP,CAAC;aAAM,IAAI,GAAG,KAAK,aAAa,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5D,YAAY,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;QAC1D,CAAC;QACD,GAAG,IAAI,CAAC,CAAC;IACb,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAC1B,UAAwC,EACxC,gBAAyD,EACzD,UAAiD;IAEjD,OAAO,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO;QAC9C,CAAC,CAAC,gBAAgB;aACX,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aAC5C,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE,CACtB,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;YACxC,IAAI,EAAE,CAAC,OAAO,KAAK,UAAU;gBAAE,OAAO,EAAE,CAAC;YACzC,0BAA0B;YAC1B,OAAO,eAAe;iBACjB,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC;iBACrB,GAAG,CACA,CAAC,MAAM,EAAE,EAAE,CACP,MAAM;gBACN,OAAO,MAAM,KAAK,QAAQ;gBAC1B,IAAI,IAAI,MAAM;gBACd,MAAM,CAAC,EAAE,KAAK,KAAK;gBACnB,KAAK,IAAI,MAAM;gBACf,MAAM,CAAC,GAAG,CACjB;iBACA,MAAM,CACH,CAAC,GAAG,EAAsC,EAAE,CACxC,OAAO,GAAG,KAAK,QAAQ;gBACvB,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAC5B,CAAC;QACV,CAAC,CAAC,CACL;QACP,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,cAAc;YACpD,CAAC,CAAC;gBACI,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;gBAChC,GAAG,IAAI,GAAG,CACN,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;qBACb,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACf,eAAe,CAAC,6BAA6B,CACzC,SAAsB,CACzB,CACJ;qBACA,MAAM,CACH,CAAC,SAAS,EAA0B,EAAE,CAClC,eAAe,CAAC,WAAW,CAAC,SAAS,CAAC;oBACtC,SAAS,KAAK,UAAU,CAAC,EAAE,CAClC,CACR,CACJ;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;AACb,CAAC;AACD,kBAAkB;AAElB,6DAA6D;AAC7D,mDAAmD;AACnD,sCAAsC;AACtC,uCAAuC;AACvC,aAAa;AACb,oCAAoC;AACpC,qCAAqC;AACrC,aAAa;AACb,UAAU;AACV,IAAI"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -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 = cojsonInternals.newRandomAgentSecret();
6
- const node = new LocalNode(new ControlledAgent(agentSecret), cojsonInternals.newRandomSessionID(cojsonInternals.getAgentID(agentSecret)));
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 = cojsonInternals.newRandomAgentSecret();
15
- const node1 = new LocalNode(new ControlledAgent(agentSecret), cojsonInternals.newRandomSessionID(cojsonInternals.getAgentID(agentSecret)));
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(cojsonInternals.getAgentID(agentSecret)));
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") {
@@ -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,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC;AAE/B,IAAI,CAAC,IAAI,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;IACxE,MAAM,WAAW,GAAG,eAAe,CAAC,oBAAoB,EAAE,CAAC;IAE3D,MAAM,IAAI,GAAG,IAAI,SAAS,CACtB,IAAI,eAAe,CAAC,WAAW,CAAC,EAChC,eAAe,CAAC,kBAAkB,CAC9B,eAAe,CAAC,UAAU,CAAC,WAAW,CAAC,CAC1C,CACJ,CAAC;IAEF,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAElC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAEzD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,4EAA4E,EAAE,KAAK,IAAI,EAAE;IAC1F,MAAM,WAAW,GAAG,eAAe,CAAC,oBAAoB,EAAE,CAAC;IAE3D,MAAM,KAAK,GAAG,IAAI,SAAS,CACvB,IAAI,eAAe,CAAC,WAAW,CAAC,EAChC,eAAe,CAAC,kBAAkB,CAC9B,eAAe,CAAC,UAAU,CAAC,WAAW,CAAC,CAC1C,CACJ,CAAC;IAEF,KAAK,CAAC,WAAW,CAAC,OAAO,CACrB,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CACnE,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEpB,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAElC,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAE9B,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAEzB,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAEzD,MAAM,KAAK,GAAG,IAAI,SAAS,CACvB,IAAI,eAAe,CAAC,WAAW,CAAC,EAChC,eAAe,CAAC,kBAAkB,CAC9B,eAAe,CAAC,UAAU,CAAC,WAAW,CAAC,CAC1C,CACJ,CAAC;IAEF,KAAK,CAAC,WAAW,CAAC,OAAO,CACrB,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,CACnE,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtC,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /* eslint @typescript-eslint/no-explicit-any: 0 */
2
- const isFunction = (func) => typeof func === 'function';
3
- const isObject = (supposedObject) => typeof supposedObject === 'object' &&
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('An array must be provided.'));
136
+ return reject(new TypeError("An array must be provided."));
137
137
  }
138
138
  if (collection.length === 0) {
139
139
  return resolve([]);
@@ -1 +1 @@
1
- {"version":3,"file":"syncPromises.js","sourceRoot":"","sources":["../src/syncPromises.ts"],"names":[],"mappings":"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"}
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.37",
3
+ "version": "0.7.0-alpha.38",
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.37"
11
+ "cojson": "0.7.0-alpha.38"
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
- "test": "vitest --browser chrome",
21
- "lint": "eslint src/**/*.ts",
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 { ControlledAgent, LocalNode, cojsonInternals } from "cojson";
3
- import { IDBStorage } from ".";
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 = cojsonInternals.newRandomAgentSecret();
13
+ const agentSecret = Crypto.newRandomAgentSecret();
7
14
 
8
15
  const node = new LocalNode(
9
- new ControlledAgent(agentSecret),
10
- cojsonInternals.newRandomSessionID(
11
- cojsonInternals.getAgentID(agentSecret)
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 = cojsonInternals.newRandomAgentSecret();
33
+ const agentSecret = Crypto.newRandomAgentSecret();
28
34
 
29
35
  const node1 = new LocalNode(
30
- new ControlledAgent(agentSecret),
31
- cojsonInternals.newRandomSessionID(
32
- cojsonInternals.getAgentID(agentSecret)
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
- cojsonInternals.getAgentID(agentSecret)
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
- [sessionRow.rowID, Infinity]
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) => [row.sessionID, 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
- coValueRow?.header.ruleset.group,
742
- ...new Set(
743
- newContentPieces.flatMap((piece) =>
744
- Object.keys(piece)
745
- .map((sessionID) =>
746
- cojsonInternals.accountOrAgentIDfromSessionID(
747
- sessionID as SessionID
748
- )
749
- )
750
- .filter(
751
- (accountID): accountID is AccountID =>
752
- cojsonInternals.isAccountID(accountID) &&
753
- accountID !== theirKnown.id
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
 
@@ -1,10 +1,10 @@
1
1
  /* eslint @typescript-eslint/no-explicit-any: 0 */
2
- const isFunction = (func: any) => typeof func === 'function';
2
+ const isFunction = (func: any) => typeof func === "function";
3
3
 
4
4
  const isObject = (supposedObject: any) =>
5
- typeof supposedObject === 'object' &&
6
- supposedObject !== null &&
7
- !Array.isArray(supposedObject);
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
- PENDING = 'PENDING',
17
- RESOLVED = 'RESOLVED',
18
- REJECTED = 'REJECTED',
16
+ PENDING = "PENDING",
17
+ RESOLVED = "RESOLVED",
18
+ REJECTED = "REJECTED",
19
19
  }
20
20
 
21
21
  interface Handler<T, U> {
22
- onSuccess: HandlerOnSuccess<T, U>;
23
- onFail: HandlerOnFail<U>;
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
- 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>;
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
- private state: States = States.PENDING;
46
- private handlers: Handler<T, any>[] = [];
47
- private value: T | any;
48
-
49
- public constructor(callback: (resolve: Resolve<T>, reject: Reject) => void) {
50
- try {
51
- callback(this.resolve as Resolve<T>, this.reject);
52
- } catch (e) {
53
- this.reject(e);
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
- private resolve = (value: T) => {
58
- return this.setResult(value, States.RESOLVED);
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
- private reject = (reason: any) => {
62
- return this.setResult(reason, States.REJECTED);
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
- private setResult = (value: T | any, state: States) => {
66
- const set = () => {
67
- if (this.state !== States.PENDING) {
68
- return null;
69
- }
73
+ if (isThenable(value)) {
74
+ return (value as Thenable<T>).then(this.resolve, this.reject);
75
+ }
70
76
 
71
- if (isThenable(value)) {
72
- return (value as Thenable<T>).then(this.resolve, this.reject);
73
- }
77
+ this.value = value;
78
+ this.state = state;
74
79
 
75
- this.value = value;
76
- this.state = state;
80
+ return this.executeHandlers();
81
+ };
77
82
 
78
- return this.executeHandlers();
83
+ void set();
79
84
  };
80
85
 
81
- set();
82
- };
86
+ private executeHandlers = () => {
87
+ if (this.state === States.PENDING) {
88
+ return null;
89
+ }
83
90
 
84
- private executeHandlers = () => {
85
- if (this.state === States.PENDING) {
86
- return null;
87
- }
91
+ this.handlers.forEach((handler) => {
92
+ if (this.state === States.REJECTED) {
93
+ return handler.onFail(this.value);
94
+ }
88
95
 
89
- this.handlers.forEach((handler) => {
90
- if (this.state === States.REJECTED) {
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
- return resolve(co);
166
- });
167
- });
168
- }
99
+ this.handlers = [];
100
+ };
169
101
 
170
- public spread<U>(handler: (...args: any[]) => U) {
171
- return this.then<U>((collection) => {
172
- if (Array.isArray(collection)) {
173
- return handler(...collection);
174
- }
102
+ private attachHandler = (handler: Handler<T, any>) => {
103
+ this.handlers = [...this.handlers, handler];
104
+
105
+ this.executeHandlers();
106
+ };
175
107
 
176
- return handler(collection);
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
- // static
140
+ // methods
182
141
 
183
- public static resolve<U = any>(value?: U | Thenable<U>) {
184
- return new SyncPromise<U>((resolve) => {
185
- return resolve(value);
186
- });
187
- }
142
+ public toString() {
143
+ return `[object SyncPromise]`;
144
+ }
188
145
 
189
- public static reject<U>(reason?: any) {
190
- return new SyncPromise<U>((_resolve, reject) => {
191
- return reject(reason);
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
- public static all<U = any>(collection: (U | Thenable<U>)[]) {
196
- return new SyncPromise<U[]>((resolve, reject) => {
197
- if (!Array.isArray(collection)) {
198
- return reject(new TypeError('An array must be provided.'));
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
- if (collection.length === 0) {
202
- return resolve([]);
203
- }
178
+ return handler(collection);
179
+ });
180
+ }
204
181
 
205
- let counter = collection.length;
206
- const resolvedCollection: U[] = [];
182
+ // static
207
183
 
208
- const tryResolve = (value: U, index: number) => {
209
- counter -= 1;
210
- resolvedCollection[index] = value;
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
- if (counter !== 0) {
213
- return null;
214
- }
190
+ public static reject<U>(reason?: any) {
191
+ return new SyncPromise<U>((_resolve, reject) => {
192
+ return reject(reason);
193
+ });
194
+ }
215
195
 
216
- return resolve(resolvedCollection);
217
- };
218
-
219
- return collection.forEach((item, index) => {
220
- return SyncPromise.resolve(item)
221
- .then((value) => {
222
- return tryResolve(value, index);
223
- })
224
- .catch(reject);
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
+ }