@dxos/client-services 0.1.50 → 0.1.51-main.04cd027

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/lib/browser/{chunk-BAHSFG33.mjs → chunk-ARBZHWMK.mjs} +126 -74
  2. package/dist/lib/browser/chunk-ARBZHWMK.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +1 -1
  4. package/dist/lib/browser/meta.json +1 -1
  5. package/dist/lib/browser/packlets/testing/index.mjs +1 -1
  6. package/dist/lib/node/index.cjs +139 -87
  7. package/dist/lib/node/index.cjs.map +3 -3
  8. package/dist/lib/node/meta.json +1 -1
  9. package/dist/lib/node/packlets/testing/index.cjs +156 -104
  10. package/dist/lib/node/packlets/testing/index.cjs.map +3 -3
  11. package/dist/types/src/packlets/devtools/feeds.d.ts.map +1 -1
  12. package/dist/types/src/packlets/identity/identity-manager.d.ts.map +1 -1
  13. package/dist/types/src/packlets/invitations/invitations-handler.d.ts.map +1 -1
  14. package/dist/types/src/packlets/logging/logging-service.d.ts +1 -1
  15. package/dist/types/src/packlets/logging/logging-service.d.ts.map +1 -1
  16. package/dist/types/src/packlets/spaces/data-space-manager.d.ts.map +1 -1
  17. package/dist/types/src/packlets/spaces/data-space.d.ts.map +1 -1
  18. package/dist/types/src/packlets/spaces/spaces-service.d.ts.map +1 -1
  19. package/package.json +30 -30
  20. package/src/packlets/devtools/feeds.ts +1 -0
  21. package/src/packlets/identity/identity-manager.ts +4 -1
  22. package/src/packlets/identity/identity.test.ts +9 -3
  23. package/src/packlets/invitations/invitations-handler.ts +14 -6
  24. package/src/packlets/invitations/space-invitation-protocol.test.ts +8 -1
  25. package/src/packlets/logging/logging-service.ts +58 -15
  26. package/src/packlets/spaces/data-space-manager.test.ts +64 -1
  27. package/src/packlets/spaces/data-space-manager.ts +2 -1
  28. package/src/packlets/spaces/data-space.ts +8 -3
  29. package/src/packlets/spaces/spaces-service.ts +7 -0
  30. package/dist/lib/browser/chunk-BAHSFG33.mjs.map +0 -7
@@ -1 +1 @@
1
- {"version":3,"file":"feeds.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/devtools/feeds.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAgB,SAAS,EAAe,MAAM,kBAAkB,CAAC;AAExE,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,6BAA6B,EAC9B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAGnE,eAAO,MAAM,gBAAgB;eACC,UAAU,WAAW,CAAC;iBACpC,uBAAuB,qCAkCtC,CAAC;AAEF,eAAO,MAAM,qBAAqB;eACJ,UAAU,WAAW,CAAC;2BACrB,4BAA4B,0CA6C1D,CAAC"}
1
+ {"version":3,"file":"feeds.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/devtools/feeds.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAgB,SAAS,EAAe,MAAM,kBAAkB,CAAC;AAExE,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,6BAA6B,EAC9B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAGnE,eAAO,MAAM,gBAAgB;eACC,UAAU,WAAW,CAAC;iBACpC,uBAAuB,qCAmCtC,CAAC;AAEF,eAAO,MAAM,qBAAqB;eACJ,UAAU,WAAW,CAAC;2BACrB,4BAA4B,0CA6C1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"identity-manager.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/identity/identity-manager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAiB,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,SAAS,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,SAAS,CAAC;IACxB,kBAAkB,EAAE,SAAS,CAAC;IAC9B,cAAc,EAAE,SAAS,CAAC;IAC1B,WAAW,EAAE,SAAS,CAAC;IAEvB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAGF,qBAAa,eAAe;IAQxB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAVhC,QAAQ,CAAC,WAAW,cAAe;IAEnC,OAAO,CAAC,SAAS,CAAC,CAAW;gBAKV,cAAc,EAAE,aAAa,EAC7B,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,SAAS,CAAC,WAAW,CAAC,EAClC,aAAa,EAAE,YAAY;IAG9C,IAAI,QAAQ,yBAEX;IAEK,IAAI;IAoBJ,KAAK;IAIL,cAAc,CAAC,EAAE,WAAW,EAAE,GAAE,qBAA0B;IAmEhE;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,kBAAkB;YA+BjC,kBAAkB;YAwClB,eAAe;CAc9B"}
1
+ {"version":3,"file":"identity-manager.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/identity/identity-manager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAiB,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAGnE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQtC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,EAAE,SAAS,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,SAAS,CAAC;IACxB,kBAAkB,EAAE,SAAS,CAAC;IAC9B,cAAc,EAAE,SAAS,CAAC;IAC1B,WAAW,EAAE,SAAS,CAAC;IAEvB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAGF,qBAAa,eAAe;IAQxB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAVhC,QAAQ,CAAC,WAAW,cAAe;IAEnC,OAAO,CAAC,SAAS,CAAC,CAAW;gBAKV,cAAc,EAAE,aAAa,EAC7B,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,SAAS,CAAC,WAAW,CAAC,EAClC,aAAa,EAAE,YAAY;IAG9C,IAAI,QAAQ,yBAEX;IAEK,IAAI;IAoBJ,KAAK;IAIL,cAAc,CAAC,EAAE,WAAW,EAAE,GAAE,qBAA0B;IAmEhE;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,kBAAkB;YA+BjC,kBAAkB;YA2ClB,eAAe;CAc9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"invitations-handler.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/invitations/invitations-handler.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,kCAAkC,EAElC,+BAA+B,EAGhC,MAAM,uBAAuB,CAAC;AAQ/B,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AASxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,kBAAkB;IAIjB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAE5C,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,+BAA+B;IA8I9G,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,GAAG,kCAAkC;CA2K3G"}
1
+ {"version":3,"file":"invitations-handler.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/invitations/invitations-handler.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,kCAAkC,EAElC,+BAA+B,EAEhC,MAAM,uBAAuB,CAAC;AAQ/B,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AASxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,kBAAkB;IAIjB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAE5C,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,+BAA+B;IAgJ9G,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,GAAG,kCAAkC;CAkL3G"}
@@ -1,5 +1,5 @@
1
1
  import { Stream } from '@dxos/codec-protobuf';
2
- import { LoggingService, LogEntry, QueryLogsRequest } from '@dxos/protocols/proto/dxos/client/services';
2
+ import { LogEntry, LoggingService, QueryLogsRequest } from '@dxos/protocols/proto/dxos/client/services';
3
3
  /**
4
4
  * Logging service used to spy on logs of the host.
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"logging-service.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/logging/logging-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAGxG;;GAEG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IAEhD,IAAI;IAIJ,KAAK;IAKX,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC;IAgCtD,OAAO,CAAC,aAAa,CAEnB;CACH"}
1
+ {"version":3,"file":"logging-service.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/logging/logging-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAGxG;;GAEG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IAEhD,IAAI;IAIJ,KAAK;IAKX,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC;IA4CtD,OAAO,CAAC,aAAa,CAEnB;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"data-space-manager.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/data-space-manager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAA4B,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAA0B,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAS,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAE1F,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAiB,MAAM,YAAY,CAAC;AAGvD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,SAAS,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,gBAAgB,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,EAAE,SAAS,CAAC;IAE1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAE7B;;;OAGG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B,CAAC;AAEF,qBACa,gBAAgB;IAWzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAf7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IAEtC,SAAgB,OAAO,cAAe;IAEtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwD;IAEhF,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;gBAGvC,aAAa,EAAE,YAAY,EAC3B,cAAc,EAAE,aAAa,EAC7B,yBAAyB,EAAE,wBAAwB,EACnD,QAAQ,EAAE,OAAO,EACjB,eAAe,EAAE,cAAc,EAC/B,UAAU,EAAE,SAAS,CAAC,WAAW,CAAC;IAIrD,IAAI,MAAM,qCAET;IAGK,IAAI;IAsBJ,KAAK;IASX;;OAEG;IAEG,WAAW;IA8BX,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC;IAqB/D;;;;OAIG;IACG,mBAAmB,CAAC,QAAQ,EAAE,SAAS;YAU/B,eAAe;CA6E9B"}
1
+ {"version":3,"file":"data-space-manager.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/data-space-manager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAA4B,MAAM,aAAa,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAA0B,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,aAAa,EAAS,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAE1F,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAiB,MAAM,YAAY,CAAC;AAGvD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,SAAS,CAAC;IACvB,SAAS,EAAE,SAAS,CAAC;IACrB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,gBAAgB,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,SAAS,CAAC;IACpB,cAAc,EAAE,SAAS,CAAC;IAE1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAE7B;;;OAGG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;CAC3B,CAAC;AAEF,qBACa,gBAAgB;IAWzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAf7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IAEtC,SAAgB,OAAO,cAAe;IAEtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwD;IAEhF,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;gBAGvC,aAAa,EAAE,YAAY,EAC3B,cAAc,EAAE,aAAa,EAC7B,yBAAyB,EAAE,wBAAwB,EACnD,QAAQ,EAAE,OAAO,EACjB,eAAe,EAAE,cAAc,EAC/B,UAAU,EAAE,SAAS,CAAC,WAAW,CAAC;IAIrD,IAAI,MAAM,qCAET;IAGK,IAAI;IAsBJ,KAAK;IASX;;OAEG;IAEG,WAAW;IA8BX,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC;IAqB/D;;;;OAIG;IACG,mBAAmB,CAAC,QAAQ,EAAE,SAAS;YAU/B,eAAe;CA8E9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"data-space.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/data-space.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-space.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/data-space.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"spaces-service.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/spaces-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAsB,MAAM,qBAAqB,CAAC;AAGjG,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,KAAK,EAEL,aAAa,EACb,wBAAwB,EACxB,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAY,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD,qBAAa,iBAAkB,YAAW,aAAa;IAEnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,oBAAoB;gBAHpB,gBAAgB,EAAE,eAAe,EACjC,aAAa,EAAE,YAAY,EAC3B,yBAAyB,EAAE,wBAAwB,EACnD,oBAAoB,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAGtE,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;IAS7B,WAAW,CAAC,OAAO,EAAE,kBAAkB;IAI7C,WAAW,IAAI,MAAM,CAAC,mBAAmB,CAAC;IAoDpC,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,kBAAkB;IAMpE,iBAAiB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,wBAAwB;IAajE,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE,uBAAuB,GAAG,MAAM,CAAC,UAAU,CAAC;IAcrE,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,uBAAuB;IAOnE,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE,kBAAkB;IAMlD,OAAO,CAAC,eAAe;CAiCxB"}
1
+ {"version":3,"file":"spaces-service.d.ts","sourceRoot":"","sources":["../../../../../src/packlets/spaces/spaces-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,wBAAwB,EAAE,YAAY,EAAsB,MAAM,qBAAqB,CAAC;AAGjG,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,KAAK,EAEL,aAAa,EACb,wBAAwB,EACxB,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAY,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD,qBAAa,iBAAkB,YAAW,aAAa;IAEnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAC1C,OAAO,CAAC,QAAQ,CAAC,oBAAoB;gBAHpB,gBAAgB,EAAE,eAAe,EACjC,aAAa,EAAE,YAAY,EAC3B,yBAAyB,EAAE,wBAAwB,EACnD,oBAAoB,EAAE,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAGtE,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC;IAU7B,WAAW,CAAC,OAAO,EAAE,kBAAkB;IAI7C,WAAW,IAAI,MAAM,CAAC,mBAAmB,CAAC;IAqDpC,WAAW,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,kBAAkB;IAMpE,iBAAiB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,wBAAwB;IAajE,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE,uBAAuB,GAAG,MAAM,CAAC,UAAU,CAAC;IAcrE,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,uBAAuB;IAOnE,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE,kBAAkB;IAMlD,OAAO,CAAC,eAAe;CAsCxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/client-services",
3
- "version": "0.1.50",
3
+ "version": "0.1.51-main.04cd027",
4
4
  "description": "DXOS client services implementation",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -23,38 +23,38 @@
23
23
  "dependencies": {
24
24
  "@types/lockfile": "^1.0.2",
25
25
  "lockfile": "^1.0.4",
26
- "@dxos/async": "0.1.50",
27
- "@dxos/client-protocol": "0.1.50",
28
- "@dxos/codec-protobuf": "0.1.50",
29
- "@dxos/config": "0.1.50",
30
- "@dxos/context": "0.1.50",
31
- "@dxos/credentials": "0.1.50",
32
- "@dxos/crypto": "0.1.50",
33
- "@dxos/debug": "0.1.50",
34
- "@dxos/document-model": "0.1.50",
35
- "@dxos/echo-db": "0.1.50",
36
- "@dxos/echo-pipeline": "0.1.50",
37
- "@dxos/errors": "0.1.50",
38
- "@dxos/feed-store": "0.1.50",
39
- "@dxos/keyring": "0.1.50",
40
- "@dxos/keys": "0.1.50",
41
- "@dxos/log": "0.1.50",
42
- "@dxos/messaging": "0.1.50",
43
- "@dxos/model-factory": "0.1.50",
44
- "@dxos/network-manager": "0.1.50",
45
- "@dxos/node-std": "0.1.50",
46
- "@dxos/protocols": "0.1.50",
47
- "@dxos/random-access-storage": "0.1.50",
48
- "@dxos/rpc": "0.1.50",
49
- "@dxos/teleport": "0.1.50",
50
- "@dxos/teleport-extension-gossip": "0.1.50",
51
- "@dxos/text-model": "0.1.50",
52
- "@dxos/timeframe": "0.1.50",
53
- "@dxos/util": "0.1.50"
26
+ "@dxos/async": "0.1.51-main.04cd027",
27
+ "@dxos/client-protocol": "0.1.51-main.04cd027",
28
+ "@dxos/codec-protobuf": "0.1.51-main.04cd027",
29
+ "@dxos/config": "0.1.51-main.04cd027",
30
+ "@dxos/context": "0.1.51-main.04cd027",
31
+ "@dxos/credentials": "0.1.51-main.04cd027",
32
+ "@dxos/crypto": "0.1.51-main.04cd027",
33
+ "@dxos/debug": "0.1.51-main.04cd027",
34
+ "@dxos/document-model": "0.1.51-main.04cd027",
35
+ "@dxos/echo-db": "0.1.51-main.04cd027",
36
+ "@dxos/echo-pipeline": "0.1.51-main.04cd027",
37
+ "@dxos/errors": "0.1.51-main.04cd027",
38
+ "@dxos/feed-store": "0.1.51-main.04cd027",
39
+ "@dxos/keyring": "0.1.51-main.04cd027",
40
+ "@dxos/keys": "0.1.51-main.04cd027",
41
+ "@dxos/log": "0.1.51-main.04cd027",
42
+ "@dxos/messaging": "0.1.51-main.04cd027",
43
+ "@dxos/model-factory": "0.1.51-main.04cd027",
44
+ "@dxos/network-manager": "0.1.51-main.04cd027",
45
+ "@dxos/node-std": "0.1.51-main.04cd027",
46
+ "@dxos/protocols": "0.1.51-main.04cd027",
47
+ "@dxos/random-access-storage": "0.1.51-main.04cd027",
48
+ "@dxos/rpc": "0.1.51-main.04cd027",
49
+ "@dxos/teleport": "0.1.51-main.04cd027",
50
+ "@dxos/teleport-extension-gossip": "0.1.51-main.04cd027",
51
+ "@dxos/text-model": "0.1.51-main.04cd027",
52
+ "@dxos/timeframe": "0.1.51-main.04cd027",
53
+ "@dxos/util": "0.1.51-main.04cd027"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@types/readable-stream": "^2.3.9",
57
- "@dxos/signal": "0.1.50"
57
+ "@dxos/signal": "0.1.51-main.04cd027"
58
58
  },
59
59
  "publishConfig": {
60
60
  "access": "public"
@@ -40,6 +40,7 @@ export const subscribeToFeeds = (
40
40
  feedKey: feed.key,
41
41
  length: feed.properties.length,
42
42
  bytes: feed.core.byteLength,
43
+ downloaded: feed.core.bitfield?.data.toBuffer() ?? new Uint8Array(),
43
44
  })),
44
45
  });
45
46
  };
@@ -200,7 +200,10 @@ export class IdentityManager {
200
200
  writable: true,
201
201
  });
202
202
  assert(identityRecord.haloSpace.dataFeedKey);
203
- const dataFeed = await this._feedStore.openFeed(identityRecord.haloSpace.dataFeedKey, { writable: true });
203
+ const dataFeed = await this._feedStore.openFeed(identityRecord.haloSpace.dataFeedKey, {
204
+ writable: true,
205
+ sparse: true,
206
+ });
204
207
 
205
208
  const space = await this._constructSpace({
206
209
  spaceRecord: identityRecord.haloSpace,
@@ -66,6 +66,8 @@ describe('identity/identity', () => {
66
66
  }),
67
67
  });
68
68
 
69
+ const metadata = new MetadataStore(createStorage({ type: StorageType.RAM }).createDirectory());
70
+ await metadata.setIdentityRecord({ haloSpace: { key: spaceKey }, identityKey, deviceKey });
69
71
  const space: Space = new Space({
70
72
  spaceKey,
71
73
  protocol,
@@ -73,7 +75,7 @@ describe('identity/identity', () => {
73
75
  feedProvider: (feedKey) => feedStore.openFeed(feedKey),
74
76
  memberKey: identityKey,
75
77
  modelFactory: createDefaultModelFactory(),
76
- metadataStore: new MetadataStore(createStorage({ type: StorageType.RAM }).createDirectory()),
78
+ metadataStore: metadata,
77
79
  snapshotManager: new SnapshotManager(
78
80
  new SnapshotStore(createStorage({ type: StorageType.RAM }).createDirectory()),
79
81
  ),
@@ -178,6 +180,8 @@ describe('identity/identity', () => {
178
180
  }),
179
181
  });
180
182
 
183
+ const metadata = new MetadataStore(createStorage({ type: StorageType.RAM }).createDirectory());
184
+ await metadata.setIdentityRecord({ haloSpace: { key: spaceKey }, identityKey, deviceKey });
181
185
  const space = new Space({
182
186
  spaceKey,
183
187
  protocol,
@@ -185,7 +189,7 @@ describe('identity/identity', () => {
185
189
  feedProvider: (feedKey) => feedStore.openFeed(feedKey),
186
190
  memberKey: identityKey,
187
191
  modelFactory: createDefaultModelFactory(),
188
- metadataStore: new MetadataStore(createStorage({ type: StorageType.RAM }).createDirectory()),
192
+ metadataStore: metadata,
189
193
  snapshotManager: new SnapshotManager(
190
194
  new SnapshotStore(createStorage({ type: StorageType.RAM }).createDirectory()),
191
195
  ),
@@ -263,6 +267,8 @@ describe('identity/identity', () => {
263
267
  }),
264
268
  });
265
269
 
270
+ const metadata = new MetadataStore(createStorage({ type: StorageType.RAM }).createDirectory());
271
+ await metadata.setIdentityRecord({ haloSpace: { key: spaceKey }, identityKey: identity1.identityKey, deviceKey });
266
272
  const space = new Space({
267
273
  spaceKey,
268
274
  protocol,
@@ -270,7 +276,7 @@ describe('identity/identity', () => {
270
276
  feedProvider: (feedKey) => feedStore.openFeed(feedKey),
271
277
  memberKey: identityKey,
272
278
  modelFactory: createDefaultModelFactory(),
273
- metadataStore: new MetadataStore(createStorage({ type: StorageType.RAM }).createDirectory()),
279
+ metadataStore: metadata,
274
280
  snapshotManager: new SnapshotManager(
275
281
  new SnapshotStore(createStorage({ type: StorageType.RAM }).createDirectory()),
276
282
  ),
@@ -4,20 +4,19 @@
4
4
 
5
5
  import assert from 'node:assert';
6
6
 
7
- import { PushStream, scheduleTask, sleep, TimeoutError, Trigger } from '@dxos/async';
7
+ import { PushStream, scheduleTask, TimeoutError, Trigger } from '@dxos/async';
8
8
  import {
9
9
  AuthenticatingInvitationObservable,
10
10
  AUTHENTICATION_CODE_LENGTH,
11
11
  CancellableInvitationObservable,
12
12
  INVITATION_TIMEOUT,
13
- ON_CLOSE_DELAY,
14
13
  } from '@dxos/client-protocol';
15
14
  import { Context } from '@dxos/context';
16
15
  import { generatePasscode } from '@dxos/credentials';
17
16
  import { InvalidInvitationExtensionRoleError } from '@dxos/errors';
18
17
  import { PublicKey } from '@dxos/keys';
19
18
  import { log } from '@dxos/log';
20
- import { createTeleportProtocolFactory, NetworkManager, StarTopology } from '@dxos/network-manager';
19
+ import { createTeleportProtocolFactory, NetworkManager, StarTopology, SwarmConnection } from '@dxos/network-manager';
21
20
  import { trace } from '@dxos/protocols';
22
21
  import { Invitation } from '@dxos/protocols/proto/dxos/client/services';
23
22
  import { AuthenticationResponse } from '@dxos/protocols/proto/dxos/halo/invitations';
@@ -154,7 +153,8 @@ export class InvitationsHandler {
154
153
  log.trace('dxos.sdk.invitations-handler.host.onOpen', trace.error({ id: traceId, error: err }));
155
154
  } finally {
156
155
  if (type !== Invitation.Type.MULTIUSE) {
157
- await sleep(ON_CLOSE_DELAY);
156
+ // Wait for graceful close before disposing.
157
+ await swarmConnection.close();
158
158
  await ctx.dispose();
159
159
  }
160
160
  }
@@ -177,9 +177,10 @@ export class InvitationsHandler {
177
177
  return extension;
178
178
  };
179
179
 
180
+ let swarmConnection: SwarmConnection;
180
181
  scheduleTask(ctx, async () => {
181
182
  const topic = invitation.swarmKey!;
182
- const swarmConnection = await this._networkManager.joinSwarm({
183
+ swarmConnection = await this._networkManager.joinSwarm({
183
184
  topic,
184
185
  peerId: topic,
185
186
  protocolProvider: createTeleportProtocolFactory(async (teleport) => {
@@ -211,6 +212,10 @@ export class InvitationsHandler {
211
212
 
212
213
  const authenticated = new Trigger<string>();
213
214
 
215
+ // TODO(dmaretskyi): Turn into state?
216
+ // Whether the Host has already admitted us and the remote connection is no longer needed.
217
+ let admitted = false;
218
+
214
219
  let currentState: Invitation.State;
215
220
  const stream = new PushStream<Invitation>();
216
221
  const setState = (newData: Partial<Invitation>) => {
@@ -244,7 +249,7 @@ export class InvitationsHandler {
244
249
  onOpen: (extensionCtx) => {
245
250
  extensionCtx.onDispose(async () => {
246
251
  log('extension disposed', { currentState });
247
- if (currentState !== Invitation.State.SUCCESS) {
252
+ if (!admitted) {
248
253
  stream.error(new Error('Remote peer disconnected.'));
249
254
  }
250
255
  });
@@ -307,6 +312,9 @@ export class InvitationsHandler {
307
312
  const admissionRequest = await protocol.createAdmissionRequest();
308
313
  const admissionResponse = await extension.rpc.InvitationHostService.admit(admissionRequest);
309
314
 
315
+ // Remote connection no longer needed.
316
+ admitted = true;
317
+
310
318
  // 4. Record credential in our HALO.
311
319
  const result = await protocol.accept(admissionResponse, admissionRequest);
312
320
 
@@ -78,7 +78,7 @@ describe('services/space-invitations-protocol', () => {
78
78
 
79
79
  const space1 = await host.dataSpaceManager!.createSpace();
80
80
 
81
- const [{ invitation: invitation1 }, { invitation: invitation2 }] = await Promise.all(
81
+ const [{ invitation: invitation1, error: error1 }, { invitation: invitation2, error: error2 }] = await Promise.all(
82
82
  performInvitation({
83
83
  host,
84
84
  guest,
@@ -100,6 +100,13 @@ describe('services/space-invitations-protocol', () => {
100
100
  }),
101
101
  );
102
102
 
103
+ if (error1) {
104
+ throw error1;
105
+ }
106
+ if (error2) {
107
+ throw error2;
108
+ }
109
+
103
110
  expect(attempt).to.eq(1);
104
111
  expect(invitation1?.spaceKey).to.exist;
105
112
  expect(invitation2?.spaceKey).to.exist;
@@ -4,8 +4,8 @@
4
4
 
5
5
  import { Event } from '@dxos/async';
6
6
  import { Stream } from '@dxos/codec-protobuf';
7
- import { log, LogEntry as NaturalLogEntry, LogProcessor, shouldLog, getContextFromEntry } from '@dxos/log';
8
- import { LoggingService, LogEntry, QueryLogsRequest } from '@dxos/protocols/proto/dxos/client/services';
7
+ import { LogLevel, LogProcessor, LogEntry as NaturalLogEntry, getContextFromEntry, log } from '@dxos/log';
8
+ import { LogEntry, LoggingService, QueryLogsRequest } from '@dxos/protocols/proto/dxos/client/services';
9
9
  import { jsonify } from '@dxos/util';
10
10
 
11
11
  /**
@@ -24,9 +24,13 @@ export class LoggingServiceImpl implements LoggingService {
24
24
  }
25
25
 
26
26
  queryLogs(request: QueryLogsRequest): Stream<LogEntry> {
27
- const filters = request.filters?.length ? request.filters : undefined;
28
27
  return new Stream<LogEntry>(({ ctx, next }) => {
29
28
  const handler = (entry: NaturalLogEntry) => {
29
+ // This call was caused by the logging service itself.
30
+ if (LOG_PROCESSING > 0) {
31
+ return;
32
+ }
33
+
30
34
  // Prevent logging feedback loop from logging service.
31
35
  if (
32
36
  entry.meta?.file.includes('logging-service') ||
@@ -36,22 +40,30 @@ export class LoggingServiceImpl implements LoggingService {
36
40
  return;
37
41
  }
38
42
 
39
- if (shouldLog(entry, filters)) {
40
- const record = {
41
- ...entry,
42
- context: jsonify(getContextFromEntry(entry)),
43
- } satisfies NaturalLogEntry;
44
- delete record.meta?.bugcheck;
45
- delete record.meta?.scope;
43
+ if (!shouldLog(entry, request)) {
44
+ return;
45
+ }
46
+
47
+ const record: LogEntry = {
48
+ ...entry,
49
+ context: jsonify(getContextFromEntry(entry)),
50
+ timestamp: new Date(),
51
+ meta: {
52
+ // TODO(dmaretskyi): Fix proto.
53
+ file: entry.meta?.file ?? '',
54
+ line: entry.meta?.line ?? 0,
55
+ },
56
+ };
57
+
58
+ try {
59
+ LOG_PROCESSING++;
46
60
  next(record);
61
+ } finally {
62
+ LOG_PROCESSING--;
47
63
  }
48
64
  };
49
65
 
50
- ctx.onDispose(() => {
51
- this._logs.off(handler);
52
- });
53
-
54
- this._logs.on(handler);
66
+ this._logs.on(ctx, handler);
55
67
  });
56
68
  }
57
69
 
@@ -59,3 +71,34 @@ export class LoggingServiceImpl implements LoggingService {
59
71
  this._logs.emit(entry);
60
72
  };
61
73
  }
74
+
75
+ const matchFilter = (
76
+ filter: QueryLogsRequest.Filter,
77
+ level: LogLevel,
78
+ path: string,
79
+ options: QueryLogsRequest.MatchingOptions,
80
+ ) => {
81
+ switch (options) {
82
+ case QueryLogsRequest.MatchingOptions.INCLUSIVE:
83
+ return level >= filter.level && (!filter.pattern || path.includes(filter.pattern));
84
+ case QueryLogsRequest.MatchingOptions.EXPLICIT:
85
+ return level === filter.level && (!filter.pattern || path.includes(filter.pattern));
86
+ }
87
+ };
88
+
89
+ /**
90
+ * Determines if the current line should be logged (called by the processor).
91
+ */
92
+ const shouldLog = (entry: NaturalLogEntry, request: QueryLogsRequest): boolean => {
93
+ const options = request.options ?? QueryLogsRequest.MatchingOptions.INCLUSIVE;
94
+ if (request.filters === undefined) {
95
+ return options === QueryLogsRequest.MatchingOptions.INCLUSIVE;
96
+ } else {
97
+ return request.filters.some((filter) => matchFilter(filter, entry.level, entry.meta?.file ?? '', options));
98
+ }
99
+ };
100
+
101
+ /**
102
+ * Counter that is used to track whether we are processing a log entry.
103
+ */
104
+ let LOG_PROCESSING = 0;
@@ -6,11 +6,13 @@ import { expect } from 'chai';
6
6
  import path from 'node:path';
7
7
 
8
8
  import { latch } from '@dxos/async';
9
- import { createAdmissionCredentials } from '@dxos/credentials';
9
+ import { SpecificCredential, createAdmissionCredentials } from '@dxos/credentials';
10
10
  import { AuthStatus, DataServiceSubscriptions } from '@dxos/echo-pipeline';
11
11
  import { testLocalDatabase } from '@dxos/echo-pipeline/testing';
12
12
  import { writeMessages } from '@dxos/feed-store';
13
+ import { PublicKey } from '@dxos/keys';
13
14
  import { log } from '@dxos/log';
15
+ import { Epoch } from '@dxos/protocols/proto/dxos/halo/credentials';
14
16
  import { StorageType } from '@dxos/random-access-storage';
15
17
  import { afterTest, describe, test } from '@dxos/test';
16
18
  import { range } from '@dxos/util';
@@ -233,5 +235,66 @@ describe('DataSpaceManager', () => {
233
235
  await space.createEpoch();
234
236
  expect((await file.stat()).size === 0).to.be.true;
235
237
  }).onlyEnvironments('nodejs', 'chromium', 'firefox');
238
+
239
+ test('Loads only last epoch', async () => {
240
+ const builder = new TestBuilder();
241
+ afterTest(async () => builder.destroy());
242
+
243
+ const peer = builder.createPeer();
244
+ const identity = await createSigningContext(peer.keyring);
245
+ const epochsNumber = 10;
246
+ const dataService = new DataServiceSubscriptions();
247
+ let spaceKey: PublicKey;
248
+ {
249
+ // Create space and create epochs in it.s
250
+ const dataSpaceManager = new DataSpaceManager(
251
+ peer.spaceManager,
252
+ peer.metadataStore,
253
+ dataService,
254
+ peer.keyring,
255
+ identity,
256
+ peer.feedStore,
257
+ );
258
+ await dataSpaceManager.open();
259
+ afterTest(() => dataSpaceManager.close());
260
+
261
+ const space = await dataSpaceManager.createSpace();
262
+ spaceKey = space.key;
263
+ await space.inner.controlPipeline.state.waitUntilTimeframe(space.inner.controlPipeline.state.endTimeframe);
264
+
265
+ for (const _ of range(epochsNumber)) {
266
+ await testLocalDatabase(space.dataPipeline);
267
+ await space.createEpoch();
268
+ }
269
+ await space.close();
270
+ await dataSpaceManager.close();
271
+ }
272
+ {
273
+ // Load same space and check if it loads only last epoch.s
274
+ const dataSpaceManager = new DataSpaceManager(
275
+ peer.spaceManager,
276
+ peer.metadataStore,
277
+ dataService,
278
+ peer.keyring,
279
+ identity,
280
+ peer.feedStore,
281
+ );
282
+ await dataSpaceManager.open();
283
+ afterTest(() => dataSpaceManager.close());
284
+
285
+ const space = dataSpaceManager.spaces.get(spaceKey)!;
286
+
287
+ const epochs: number[] = [];
288
+ space.dataPipeline.onNewEpoch.on((epoch: SpecificCredential<Epoch>) => {
289
+ epochs.push(epoch.subject.assertion.number);
290
+ });
291
+ const processedFirstEpoch = space.dataPipeline.onNewEpoch.waitFor(() => true);
292
+
293
+ await space.inner.controlPipeline.state.waitUntilTimeframe(space.inner.controlPipeline.state.endTimeframe);
294
+
295
+ await processedFirstEpoch;
296
+ expect(epochs).to.deep.equal([epochsNumber]);
297
+ }
298
+ });
236
299
  });
237
300
  });
@@ -191,7 +191,8 @@ export class DataSpaceManager {
191
191
 
192
192
  const controlFeed =
193
193
  metadata.controlFeedKey && (await this._feedStore.openFeed(metadata.controlFeedKey, { writable: true }));
194
- const dataFeed = metadata.dataFeedKey && (await this._feedStore.openFeed(metadata.dataFeedKey, { writable: true }));
194
+ const dataFeed =
195
+ metadata.dataFeedKey && (await this._feedStore.openFeed(metadata.dataFeedKey, { writable: true, sparse: true }));
195
196
 
196
197
  const space: Space = await this._spaceManager.constructSpace({
197
198
  metadata,
@@ -19,6 +19,7 @@ import { SpaceCache } from '@dxos/protocols/proto/dxos/echo/metadata';
19
19
  import { AdmittedFeed, Credential } from '@dxos/protocols/proto/dxos/halo/credentials';
20
20
  import { GossipMessage } from '@dxos/protocols/proto/dxos/mesh/teleport/gossip';
21
21
  import { Gossip, Presence } from '@dxos/teleport-extension-gossip';
22
+ import { Timeframe } from '@dxos/timeframe';
22
23
  import { ComplexSet } from '@dxos/util';
23
24
 
24
25
  import { TrustedKeySetAuthVerifier } from '../identity';
@@ -189,7 +190,6 @@ export class DataSpace {
189
190
  }
190
191
  this._state = SpaceState.INITIALIZING;
191
192
 
192
- // TODO(dmaretskyi): Cancel with context.
193
193
  await this._inner.controlPipeline.state.waitUntilReachedTargetTimeframe({
194
194
  ctx: this._ctx,
195
195
  breakOnStall: false,
@@ -256,7 +256,10 @@ export class DataSpace {
256
256
  );
257
257
  }
258
258
  if (!this.inner.dataFeedKey) {
259
- const dataFeed = await this._feedStore.openFeed(await this._keyring.createKey(), { writable: true });
259
+ const dataFeed = await this._feedStore.openFeed(await this._keyring.createKey(), {
260
+ writable: true,
261
+ sparse: true,
262
+ });
260
263
  this.inner.setDataFeed(dataFeed);
261
264
 
262
265
  credentials.push(
@@ -285,7 +288,7 @@ export class DataSpace {
285
288
  async createEpoch() {
286
289
  const epoch = await this.dataPipeline.createEpoch();
287
290
 
288
- await this.inner.controlPipeline.writer.write({
291
+ const receipt = await this.inner.controlPipeline.writer.write({
289
292
  credential: {
290
293
  credential: await this._signingContext.credentialSigner.createCredential({
291
294
  subject: this.key,
@@ -297,6 +300,8 @@ export class DataSpace {
297
300
  },
298
301
  });
299
302
 
303
+ await this.inner.controlPipeline.state.waitUntilTimeframe(new Timeframe([[receipt.feedKey, receipt.seq]]));
304
+
300
305
  for (const feed of this.inner.dataPipeline.pipelineState?.feeds ?? []) {
301
306
  const indexBeforeEpoch = epoch.timeframe.get(feed.key);
302
307
  if (indexBeforeEpoch) {
@@ -42,6 +42,7 @@ export class SpacesServiceImpl implements SpacesService {
42
42
  if (!this._identityManager.identity) {
43
43
  throw new Error('This device has no HALO identity available. See https://docs.dxos.org/guide/halo');
44
44
  }
45
+
45
46
  const dataSpaceManager = await this._getDataSpaceManager();
46
47
  const space = await dataSpaceManager.createSpace();
47
48
  return this._transformSpace(space);
@@ -73,6 +74,7 @@ export class SpacesServiceImpl implements SpacesService {
73
74
  for (const space of dataSpaceManager.spaces.values()) {
74
75
  subscriptions.add(space.stateUpdate.on(ctx, onUpdate));
75
76
  subscriptions.add(space.presence.updated.on(ctx, onUpdate));
77
+ subscriptions.add(space.dataPipeline.onNewEpoch.on(ctx, onUpdate));
76
78
 
77
79
  // Pipeline progress.
78
80
  space.inner.controlPipeline.state.timeframeUpdate
@@ -155,12 +157,16 @@ export class SpacesServiceImpl implements SpacesService {
155
157
  state: space.state,
156
158
  error: space.error ? encodeError(space.error) : undefined,
157
159
  pipeline: {
160
+ currentEpoch: space.dataPipeline.currentEpoch,
161
+ appliedEpoch: space.dataPipeline.appliedEpoch,
162
+
158
163
  controlFeeds: space.inner.controlPipeline.state.feeds.map((feed) => feed.key),
159
164
  currentControlTimeframe: space.inner.controlPipeline.state.timeframe,
160
165
  targetControlTimeframe: space.inner.controlPipeline.state.targetTimeframe,
161
166
  totalControlTimeframe: space.inner.controlPipeline.state.endTimeframe,
162
167
 
163
168
  dataFeeds: space.dataPipeline.pipelineState?.feeds.map((feed) => feed.key) ?? [],
169
+ startDataTimeframe: space.dataPipeline.pipelineState?.startTimeframe,
164
170
  currentDataTimeframe: space.dataPipeline.pipelineState?.timeframe,
165
171
  targetDataTimeframe: space.dataPipeline.pipelineState?.targetTimeframe,
166
172
  totalDataTimeframe: space.dataPipeline.pipelineState?.endTimeframe,
@@ -178,6 +184,7 @@ export class SpacesServiceImpl implements SpacesService {
178
184
  ? SpaceMember.PresenceState.ONLINE
179
185
  : SpaceMember.PresenceState.OFFLINE,
180
186
  })),
187
+ creator: space.inner.spaceState.creator?.key,
181
188
  cache: space.cache,
182
189
  metrics: space.metrics,
183
190
  };