@dxos/echo-db 2.33.5-dev.1fc05a51 → 2.33.5-dev.39ec2a53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/api/index.d.ts +0 -5
- package/dist/src/api/index.d.ts.map +1 -1
- package/dist/src/api/index.js +5 -6
- package/dist/src/api/index.js.map +1 -1
- package/dist/src/api/schema.test.js +1 -1
- package/dist/src/api/schema.test.js.map +1 -1
- package/dist/src/echo.d.ts.map +1 -1
- package/dist/src/echo.js +3 -3
- package/dist/src/echo.js.map +1 -1
- package/dist/src/echo.test.js +12 -4
- package/dist/src/echo.test.js.map +1 -1
- package/dist/src/halo/contact-manager.d.ts +2 -1
- package/dist/src/halo/contact-manager.d.ts.map +1 -1
- package/dist/src/halo/contact-manager.js +1 -1
- package/dist/src/halo/contact-manager.js.map +1 -1
- package/dist/src/halo/halo-factory.d.ts +4 -4
- package/dist/src/halo/halo-factory.d.ts.map +1 -1
- package/dist/src/halo/halo-factory.js +7 -6
- package/dist/src/halo/halo-factory.js.map +1 -1
- package/dist/src/halo/halo-party.d.ts +7 -6
- package/dist/src/halo/halo-party.d.ts.map +1 -1
- package/dist/src/halo/halo-party.js +13 -9
- package/dist/src/halo/halo-party.js.map +1 -1
- package/dist/src/halo/halo.d.ts +2 -2
- package/dist/src/halo/halo.d.ts.map +1 -1
- package/dist/src/halo/index.js +5 -1
- package/dist/src/halo/index.js.map +1 -1
- package/dist/src/halo/party-opener.d.ts.map +1 -1
- package/dist/src/halo/party-opener.js +3 -1
- package/dist/src/halo/party-opener.js.map +1 -1
- package/dist/src/halo/preferences.d.ts +1 -1
- package/dist/src/halo/preferences.d.ts.map +1 -1
- package/dist/src/halo/preferences.js +1 -1
- package/dist/src/halo/preferences.js.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/invitations/greeting-initiator.d.ts +4 -5
- package/dist/src/invitations/greeting-initiator.d.ts.map +1 -1
- package/dist/src/invitations/greeting-initiator.js +4 -4
- package/dist/src/invitations/greeting-initiator.js.map +1 -1
- package/dist/src/invitations/greeting-responder.d.ts +6 -4
- package/dist/src/invitations/greeting-responder.d.ts.map +1 -1
- package/dist/src/invitations/greeting-responder.js +3 -2
- package/dist/src/invitations/greeting-responder.js.map +1 -1
- package/dist/src/invitations/halo-recovery-initiator.d.ts +1 -1
- package/dist/src/invitations/halo-recovery-initiator.d.ts.map +1 -1
- package/dist/src/invitations/halo-recovery-initiator.js +2 -2
- package/dist/src/invitations/halo-recovery-initiator.js.map +1 -1
- package/dist/src/invitations/index.js +5 -1
- package/dist/src/invitations/index.js.map +1 -1
- package/dist/src/invitations/invitation-descriptor.js +6 -2
- package/dist/src/invitations/invitation-descriptor.js.map +1 -1
- package/dist/src/invitations/invitation-factory.d.ts +5 -2
- package/dist/src/invitations/invitation-factory.d.ts.map +1 -1
- package/dist/src/invitations/invitation-factory.js +4 -3
- package/dist/src/invitations/invitation-factory.js.map +1 -1
- package/dist/src/invitations/offline-invitation-claimer.js +2 -2
- package/dist/src/invitations/offline-invitation-claimer.js.map +1 -1
- package/dist/src/{database → packlets/database}/data-mirror.d.ts +0 -0
- package/dist/src/packlets/database/data-mirror.d.ts.map +1 -0
- package/dist/src/{database → packlets/database}/data-mirror.js +0 -0
- package/dist/src/packlets/database/data-mirror.js.map +1 -0
- package/dist/src/{database → packlets/database}/data-mirror.test.d.ts +0 -0
- package/dist/src/packlets/database/data-mirror.test.d.ts.map +1 -0
- package/dist/src/{database → packlets/database}/data-mirror.test.js +2 -2
- package/dist/src/packlets/database/data-mirror.test.js.map +1 -0
- package/dist/src/{database → packlets/database}/data-service-host.d.ts +0 -0
- package/dist/src/packlets/database/data-service-host.d.ts.map +1 -0
- package/dist/src/{database → packlets/database}/data-service-host.js +4 -3
- package/dist/src/packlets/database/data-service-host.js.map +1 -0
- package/dist/src/{database → packlets/database}/data-service-router.d.ts +0 -0
- package/dist/src/packlets/database/data-service-router.d.ts.map +1 -0
- package/dist/src/{database → packlets/database}/data-service-router.js +0 -0
- package/dist/src/packlets/database/data-service-router.js.map +1 -0
- package/dist/src/{database → packlets/database}/database-backend.d.ts +4 -5
- package/dist/src/packlets/database/database-backend.d.ts.map +1 -0
- package/dist/src/{database → packlets/database}/database-backend.js +5 -6
- package/dist/src/packlets/database/database-backend.js.map +1 -0
- package/dist/src/{api → packlets/database}/database.d.ts +2 -1
- package/dist/src/packlets/database/database.d.ts.map +1 -0
- package/dist/src/{api → packlets/database}/database.js +2 -2
- package/dist/src/packlets/database/database.js.map +1 -0
- package/dist/src/{api → packlets/database}/database.test.d.ts +0 -0
- package/dist/src/packlets/database/database.test.d.ts.map +1 -0
- package/dist/src/{api → packlets/database}/database.test.js +3 -3
- package/dist/src/packlets/database/database.test.js.map +1 -0
- package/dist/src/{api → packlets/database}/entity.d.ts +1 -1
- package/dist/src/packlets/database/entity.d.ts.map +1 -0
- package/dist/src/{api → packlets/database}/entity.js +0 -0
- package/dist/src/packlets/database/entity.js.map +1 -0
- package/dist/src/{database → packlets/database}/index.d.ts +5 -0
- package/dist/src/packlets/database/index.d.ts.map +1 -0
- package/dist/src/{database → packlets/database}/index.js +10 -1
- package/dist/src/packlets/database/index.js.map +1 -0
- package/dist/src/{database → packlets/database}/item-demuxer.d.ts +4 -3
- package/dist/src/packlets/database/item-demuxer.d.ts.map +1 -0
- package/dist/src/{database → packlets/database}/item-demuxer.js +2 -3
- package/dist/src/packlets/database/item-demuxer.js.map +1 -0
- package/dist/src/{database → packlets/database}/item-demuxer.test.d.ts +0 -0
- package/dist/src/packlets/database/item-demuxer.test.d.ts.map +1 -0
- package/dist/src/{database → packlets/database}/item-demuxer.test.js +15 -11
- package/dist/src/packlets/database/item-demuxer.test.js.map +1 -0
- package/dist/src/{database → packlets/database}/item-manager.d.ts +3 -1
- package/dist/src/packlets/database/item-manager.d.ts.map +1 -0
- package/dist/src/{database → packlets/database}/item-manager.js +11 -10
- package/dist/src/packlets/database/item-manager.js.map +1 -0
- package/dist/src/{database → packlets/database}/item-manager.test.d.ts +0 -0
- package/dist/src/packlets/database/item-manager.test.d.ts.map +1 -0
- package/dist/src/{database → packlets/database}/item-manager.test.js +0 -0
- package/dist/src/packlets/database/item-manager.test.js.map +1 -0
- package/dist/src/{api → packlets/database}/item.d.ts +1 -1
- package/dist/src/packlets/database/item.d.ts.map +1 -0
- package/dist/src/{api → packlets/database}/item.js +0 -0
- package/dist/src/packlets/database/item.js.map +1 -0
- package/dist/src/{api → packlets/database}/link.d.ts +1 -1
- package/dist/src/packlets/database/link.d.ts.map +1 -0
- package/dist/src/{api → packlets/database}/link.js +0 -0
- package/dist/src/packlets/database/link.js.map +1 -0
- package/dist/src/{api → packlets/database}/selection/index.d.ts +0 -0
- package/dist/src/packlets/database/selection/index.d.ts.map +1 -0
- package/dist/src/{api → packlets/database}/selection/index.js +5 -1
- package/dist/src/packlets/database/selection/index.js.map +1 -0
- package/dist/src/{api → packlets/database}/selection/queries.d.ts +0 -0
- package/dist/src/packlets/database/selection/queries.d.ts.map +1 -0
- package/dist/src/{api → packlets/database}/selection/queries.js +0 -0
- package/dist/src/packlets/database/selection/queries.js.map +1 -0
- package/dist/src/{api → packlets/database}/selection/result.d.ts +0 -0
- package/dist/src/packlets/database/selection/result.d.ts.map +1 -0
- package/dist/src/{api → packlets/database}/selection/result.js +0 -0
- package/dist/src/packlets/database/selection/result.js.map +1 -0
- package/dist/src/{api → packlets/database}/selection/selection.d.ts +0 -0
- package/dist/src/packlets/database/selection/selection.d.ts.map +1 -0
- package/dist/src/{api → packlets/database}/selection/selection.js +0 -0
- package/dist/src/packlets/database/selection/selection.js.map +1 -0
- package/dist/src/{api → packlets/database}/selection/selection.test.d.ts +0 -0
- package/dist/src/packlets/database/selection/selection.test.d.ts.map +1 -0
- package/dist/src/{api → packlets/database}/selection/selection.test.js +0 -0
- package/dist/src/packlets/database/selection/selection.test.js.map +1 -0
- package/dist/src/{api → packlets/database}/selection/util.d.ts +0 -0
- package/dist/src/packlets/database/selection/util.d.ts.map +1 -0
- package/dist/src/{api → packlets/database}/selection/util.js +0 -0
- package/dist/src/packlets/database/selection/util.js.map +1 -0
- package/dist/src/{database → packlets/database}/testing.d.ts +1 -1
- package/dist/src/packlets/database/testing.d.ts.map +1 -0
- package/dist/src/{database → packlets/database}/testing.js +5 -6
- package/dist/src/packlets/database/testing.js.map +1 -0
- package/dist/src/{database → packlets/database}/timeframe-clock.d.ts +1 -0
- package/dist/src/packlets/database/timeframe-clock.d.ts.map +1 -0
- package/dist/src/{database → packlets/database}/timeframe-clock.js +3 -0
- package/dist/src/packlets/database/timeframe-clock.js.map +1 -0
- package/dist/src/{errors.d.ts → packlets/errors/index.d.ts} +1 -1
- package/dist/src/packlets/errors/index.d.ts.map +1 -0
- package/dist/src/{errors.js → packlets/errors/index.js} +1 -1
- package/dist/src/packlets/errors/index.js.map +1 -0
- package/dist/src/parties/data-party.d.ts +11 -9
- package/dist/src/parties/data-party.d.ts.map +1 -1
- package/dist/src/parties/data-party.js +31 -10
- package/dist/src/parties/data-party.js.map +1 -1
- package/dist/src/parties/data-party.test.js +33 -14
- package/dist/src/parties/data-party.test.js.map +1 -1
- package/dist/src/parties/index.js +5 -1
- package/dist/src/parties/index.js.map +1 -1
- package/dist/src/parties/party-factory.d.ts +5 -4
- package/dist/src/parties/party-factory.d.ts.map +1 -1
- package/dist/src/parties/party-factory.js +25 -21
- package/dist/src/parties/party-factory.js.map +1 -1
- package/dist/src/parties/party-manager.d.ts +3 -4
- package/dist/src/parties/party-manager.d.ts.map +1 -1
- package/dist/src/parties/party-manager.js +8 -7
- package/dist/src/parties/party-manager.js.map +1 -1
- package/dist/src/parties/party-manager.test.js +9 -9
- package/dist/src/parties/party-manager.test.js.map +1 -1
- package/dist/src/pipeline/{pipeline.d.ts → feed-muxer.d.ts} +8 -11
- package/dist/src/pipeline/feed-muxer.d.ts.map +1 -0
- package/dist/src/pipeline/{pipeline.js → feed-muxer.js} +34 -41
- package/dist/src/pipeline/feed-muxer.js.map +1 -0
- package/dist/src/pipeline/feed-muxer.test.d.ts +2 -0
- package/dist/src/pipeline/feed-muxer.test.d.ts.map +1 -0
- package/dist/src/pipeline/{pipeline.test.js → feed-muxer.test.js} +18 -16
- package/dist/src/pipeline/feed-muxer.test.js.map +1 -0
- package/dist/src/pipeline/index.d.ts +2 -2
- package/dist/src/pipeline/index.d.ts.map +1 -1
- package/dist/src/pipeline/index.js +7 -3
- package/dist/src/pipeline/index.js.map +1 -1
- package/dist/src/pipeline/message-selector.d.ts +1 -1
- package/dist/src/pipeline/message-selector.d.ts.map +1 -1
- package/dist/src/pipeline/message-selector.js +6 -5
- package/dist/src/pipeline/message-selector.js.map +1 -1
- package/dist/src/pipeline/metadata-store.d.ts +2 -1
- package/dist/src/pipeline/metadata-store.d.ts.map +1 -1
- package/dist/src/pipeline/metadata-store.js +7 -1
- package/dist/src/pipeline/metadata-store.js.map +1 -1
- package/dist/src/pipeline/party-feed-provider.d.ts +2 -3
- package/dist/src/pipeline/party-feed-provider.d.ts.map +1 -1
- package/dist/src/pipeline/party-feed-provider.js +2 -17
- package/dist/src/pipeline/party-feed-provider.js.map +1 -1
- package/dist/src/pipeline/{party-core.d.ts → party-pipeline.d.ts} +26 -12
- package/dist/src/pipeline/party-pipeline.d.ts.map +1 -0
- package/dist/src/pipeline/{party-core.js → party-pipeline.js} +32 -36
- package/dist/src/pipeline/party-pipeline.js.map +1 -0
- package/dist/src/pipeline/party-pipeline.test.d.ts +2 -0
- package/dist/src/pipeline/party-pipeline.test.d.ts.map +1 -0
- package/dist/src/pipeline/{party-core.test.js → party-pipeline.test.js} +56 -39
- package/dist/src/pipeline/party-pipeline.test.js.map +1 -0
- package/dist/src/pipeline/party-processor.d.ts +3 -9
- package/dist/src/pipeline/party-processor.d.ts.map +1 -1
- package/dist/src/pipeline/party-processor.js +0 -8
- package/dist/src/pipeline/party-processor.js.map +1 -1
- package/dist/src/protocol/authenticator.d.ts +3 -3
- package/dist/src/protocol/authenticator.d.ts.map +1 -1
- package/dist/src/protocol/authenticator.js +2 -2
- package/dist/src/protocol/authenticator.js.map +1 -1
- package/dist/src/protocol/authenticator.test.js +1 -4
- package/dist/src/protocol/authenticator.test.js.map +1 -1
- package/dist/src/protocol/index.js +5 -1
- package/dist/src/protocol/index.js.map +1 -1
- package/dist/src/snapshots/index.js +5 -1
- package/dist/src/snapshots/index.js.map +1 -1
- package/dist/src/snapshots/snapshot-generator.d.ts +3 -3
- package/dist/src/snapshots/snapshot-generator.d.ts.map +1 -1
- package/dist/src/snapshots/snapshot-generator.js.map +1 -1
- package/dist/src/snapshots/snapshot-store.js +1 -1
- package/dist/src/snapshots/snapshot-store.js.map +1 -1
- package/dist/src/snapshots/snapshot.test.js +1 -1
- package/dist/src/snapshots/snapshot.test.js.map +1 -1
- package/dist/src/testing/index.js +5 -1
- package/dist/src/testing/index.js.map +1 -1
- package/dist/src/testing/testing-factories.d.ts +1 -1
- package/dist/src/testing/testing-factories.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +19 -19
- package/src/api/index.ts +0 -5
- package/src/api/schema.test.ts +1 -2
- package/src/echo.test.ts +16 -5
- package/src/echo.ts +3 -2
- package/src/halo/contact-manager.ts +3 -2
- package/src/halo/halo-factory.ts +10 -10
- package/src/halo/halo-party.ts +22 -15
- package/src/halo/halo.ts +2 -2
- package/src/halo/party-opener.ts +3 -1
- package/src/halo/preferences.ts +3 -2
- package/src/index.ts +3 -2
- package/src/invitations/greeting-initiator.ts +10 -9
- package/src/invitations/greeting-responder.ts +7 -5
- package/src/invitations/halo-recovery-initiator.ts +4 -4
- package/src/invitations/invitation-descriptor.ts +1 -1
- package/src/invitations/invitation-factory.ts +8 -5
- package/src/invitations/offline-invitation-claimer.ts +3 -3
- package/src/{database → packlets/database}/data-mirror.test.ts +3 -3
- package/src/{database → packlets/database}/data-mirror.ts +1 -1
- package/src/{database → packlets/database}/data-service-host.ts +2 -1
- package/src/{database → packlets/database}/data-service-router.ts +0 -0
- package/src/{database → packlets/database}/database-backend.ts +7 -6
- package/src/{api → packlets/database}/database.test.ts +2 -1
- package/src/{api → packlets/database}/database.ts +3 -1
- package/src/{api → packlets/database}/entity.ts +1 -1
- package/src/{database → packlets/database}/index.ts +5 -0
- package/src/{database → packlets/database}/item-demuxer.test.ts +21 -19
- package/src/{database → packlets/database}/item-demuxer.ts +8 -5
- package/src/{database → packlets/database}/item-manager.test.ts +0 -0
- package/src/{database → packlets/database}/item-manager.ts +3 -1
- package/src/{api → packlets/database}/item.ts +2 -2
- package/src/{api → packlets/database}/link.ts +1 -1
- package/src/{api → packlets/database}/selection/index.ts +0 -0
- package/src/{api → packlets/database}/selection/queries.ts +0 -0
- package/src/{api → packlets/database}/selection/result.ts +0 -0
- package/src/{api → packlets/database}/selection/selection.test.ts +0 -0
- package/src/{api → packlets/database}/selection/selection.ts +0 -0
- package/src/{api → packlets/database}/selection/util.ts +0 -0
- package/src/{database → packlets/database}/testing.ts +4 -7
- package/src/{database → packlets/database}/timeframe-clock.ts +4 -0
- package/src/{errors.ts → packlets/errors/index.ts} +0 -0
- package/src/parties/data-party.test.ts +48 -17
- package/src/parties/data-party.ts +40 -16
- package/src/parties/party-factory.ts +29 -27
- package/src/parties/party-manager.test.ts +16 -10
- package/src/parties/party-manager.ts +9 -6
- package/src/pipeline/{pipeline.test.ts → feed-muxer.test.ts} +21 -17
- package/src/pipeline/{pipeline.ts → feed-muxer.ts} +39 -51
- package/src/pipeline/index.ts +2 -2
- package/src/pipeline/message-selector.ts +7 -6
- package/src/pipeline/metadata-store.ts +8 -2
- package/src/pipeline/party-feed-provider.ts +3 -16
- package/src/pipeline/{party-core.test.ts → party-pipeline.test.ts} +55 -33
- package/src/pipeline/{party-core.ts → party-pipeline.ts} +59 -36
- package/src/pipeline/party-processor.ts +2 -18
- package/src/protocol/authenticator.test.ts +1 -4
- package/src/protocol/authenticator.ts +8 -4
- package/src/snapshots/snapshot-generator.ts +3 -3
- package/src/snapshots/snapshot-store.ts +1 -1
- package/src/snapshots/snapshot.test.ts +1 -1
- package/src/testing/testing-factories.ts +1 -1
- package/dist/src/api/database.d.ts.map +0 -1
- package/dist/src/api/database.js.map +0 -1
- package/dist/src/api/database.test.d.ts.map +0 -1
- package/dist/src/api/database.test.js.map +0 -1
- package/dist/src/api/entity.d.ts.map +0 -1
- package/dist/src/api/entity.js.map +0 -1
- package/dist/src/api/item.d.ts.map +0 -1
- package/dist/src/api/item.js.map +0 -1
- package/dist/src/api/link.d.ts.map +0 -1
- package/dist/src/api/link.js.map +0 -1
- package/dist/src/api/selection/index.d.ts.map +0 -1
- package/dist/src/api/selection/index.js.map +0 -1
- package/dist/src/api/selection/queries.d.ts.map +0 -1
- package/dist/src/api/selection/queries.js.map +0 -1
- package/dist/src/api/selection/result.d.ts.map +0 -1
- package/dist/src/api/selection/result.js.map +0 -1
- package/dist/src/api/selection/selection.d.ts.map +0 -1
- package/dist/src/api/selection/selection.js.map +0 -1
- package/dist/src/api/selection/selection.test.d.ts.map +0 -1
- package/dist/src/api/selection/selection.test.js.map +0 -1
- package/dist/src/api/selection/util.d.ts.map +0 -1
- package/dist/src/api/selection/util.js.map +0 -1
- package/dist/src/database/data-mirror.d.ts.map +0 -1
- package/dist/src/database/data-mirror.js.map +0 -1
- package/dist/src/database/data-mirror.test.d.ts.map +0 -1
- package/dist/src/database/data-mirror.test.js.map +0 -1
- package/dist/src/database/data-service-host.d.ts.map +0 -1
- package/dist/src/database/data-service-host.js.map +0 -1
- package/dist/src/database/data-service-router.d.ts.map +0 -1
- package/dist/src/database/data-service-router.js.map +0 -1
- package/dist/src/database/database-backend.d.ts.map +0 -1
- package/dist/src/database/database-backend.js.map +0 -1
- package/dist/src/database/index.d.ts.map +0 -1
- package/dist/src/database/index.js.map +0 -1
- package/dist/src/database/item-demuxer.d.ts.map +0 -1
- package/dist/src/database/item-demuxer.js.map +0 -1
- package/dist/src/database/item-demuxer.test.d.ts.map +0 -1
- package/dist/src/database/item-demuxer.test.js.map +0 -1
- package/dist/src/database/item-manager.d.ts.map +0 -1
- package/dist/src/database/item-manager.js.map +0 -1
- package/dist/src/database/item-manager.test.d.ts.map +0 -1
- package/dist/src/database/item-manager.test.js.map +0 -1
- package/dist/src/database/testing.d.ts.map +0 -1
- package/dist/src/database/testing.js.map +0 -1
- package/dist/src/database/timeframe-clock.d.ts.map +0 -1
- package/dist/src/database/timeframe-clock.js.map +0 -1
- package/dist/src/errors.d.ts.map +0 -1
- package/dist/src/errors.js.map +0 -1
- package/dist/src/pipeline/party-core.d.ts.map +0 -1
- package/dist/src/pipeline/party-core.js.map +0 -1
- package/dist/src/pipeline/party-core.test.d.ts +0 -2
- package/dist/src/pipeline/party-core.test.d.ts.map +0 -1
- package/dist/src/pipeline/party-core.test.js.map +0 -1
- package/dist/src/pipeline/pipeline.d.ts.map +0 -1
- package/dist/src/pipeline/pipeline.js.map +0 -1
- package/dist/src/pipeline/pipeline.test.d.ts +0 -2
- package/dist/src/pipeline/pipeline.test.d.ts.map +0 -1
- package/dist/src/pipeline/pipeline.test.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PublicKey } from '@dxos/crypto';
|
|
2
|
-
import { PartyMetadata } from '@dxos/echo-protocol';
|
|
2
|
+
import { PartyMetadata, Timeframe } from '@dxos/echo-protocol';
|
|
3
3
|
import { Directory } from '@dxos/random-access-multi-storage';
|
|
4
4
|
/**
|
|
5
5
|
* Version for the schema of the stored data as defined in dxos.echo.metadata.EchoMetadata.
|
|
@@ -49,5 +49,6 @@ export declare class MetadataStore {
|
|
|
49
49
|
* Checks if a party with given key has a feed with given key.
|
|
50
50
|
*/
|
|
51
51
|
hasFeed(partyKey: PublicKey, feedKey: PublicKey): boolean;
|
|
52
|
+
setTimeframe(partyKey: PublicKey, timeframe: Timeframe): Promise<void>;
|
|
52
53
|
}
|
|
53
54
|
//# sourceMappingURL=metadata-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-store.d.ts","sourceRoot":"","sources":["../../../src/pipeline/metadata-store.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAgB,aAAa,EAAU,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"metadata-store.d.ts","sourceRoot":"","sources":["../../../src/pipeline/metadata-store.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAgB,aAAa,EAAU,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,eAAe,IAAI,CAAC;AAIjC,qBAAa,aAAa;IAStB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAR7B,OAAO,CAAC,SAAS,CAKf;gBAGiB,UAAU,EAAE,SAAS;IAGxC,IAAI,OAAO,IAAK,MAAM,CAErB;IAED;;;OAGG;IACH,IAAI,OAAO,IAAK,aAAa,EAAE,CAE9B;IAED;;OAEG;IACG,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;YAqBd,KAAK;IAkBnB;;OAEG;IACG,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAK7B;;OAEG;IACG,QAAQ,CAAE,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnD;;;OAGG;IACG,YAAY,CAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3E;;;;OAIG;IACG,WAAW,CAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAO1E;;OAEG;IACH,QAAQ,CAAE,QAAQ,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS;IAIzD;;OAEG;IACH,OAAO,CAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,GAAG,OAAO;IAQpD,YAAY,CAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;CAK9D"}
|
|
@@ -87,7 +87,7 @@ class MetadataStore {
|
|
|
87
87
|
*/
|
|
88
88
|
async clear() {
|
|
89
89
|
log('Clearing all echo metadata...');
|
|
90
|
-
await this._directory.
|
|
90
|
+
await this._directory.delete();
|
|
91
91
|
}
|
|
92
92
|
/**
|
|
93
93
|
* Adds new party to store and saves it in persistent storage.
|
|
@@ -155,6 +155,12 @@ class MetadataStore {
|
|
|
155
155
|
}
|
|
156
156
|
return !!((_a = party.feedKeys) === null || _a === void 0 ? void 0 : _a.find(fk => feedKey.equals(fk)));
|
|
157
157
|
}
|
|
158
|
+
async setTimeframe(partyKey, timeframe) {
|
|
159
|
+
var _a;
|
|
160
|
+
const party = (_a = this.getParty(partyKey)) !== null && _a !== void 0 ? _a : (0, debug_2.failUndefined)();
|
|
161
|
+
party.latestTimeframe = timeframe;
|
|
162
|
+
await this._save();
|
|
163
|
+
}
|
|
158
164
|
}
|
|
159
165
|
exports.MetadataStore = MetadataStore;
|
|
160
166
|
//# sourceMappingURL=metadata-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata-store.js","sourceRoot":"","sources":["../../../src/pipeline/metadata-store.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,oDAA4B;AAC5B,kDAA0B;AAG1B,uCAA4C;AAC5C,
|
|
1
|
+
{"version":3,"file":"metadata-store.js","sourceRoot":"","sources":["../../../src/pipeline/metadata-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Event } from '@dxos/async';
|
|
2
2
|
import { Keyring } from '@dxos/credentials';
|
|
3
3
|
import { PublicKey } from '@dxos/crypto';
|
|
4
|
-
import { FeedStoreIterator, MessageSelector, Timeframe } from '@dxos/echo-protocol';
|
|
4
|
+
import { FeedSelector, FeedStoreIterator, MessageSelector, Timeframe } from '@dxos/echo-protocol';
|
|
5
5
|
import { FeedDescriptor, FeedStore } from '@dxos/feed-store';
|
|
6
6
|
import { MetadataStore } from './metadata-store';
|
|
7
7
|
export declare class PartyFeedProvider {
|
|
@@ -13,11 +13,10 @@ export declare class PartyFeedProvider {
|
|
|
13
13
|
readonly feedOpened: Event<FeedDescriptor>;
|
|
14
14
|
constructor(_metadataStore: MetadataStore, _keyring: Keyring, _feedStore: FeedStore, _partyKey: PublicKey);
|
|
15
15
|
getFeeds(): FeedDescriptor[];
|
|
16
|
-
openKnownFeeds(): Promise<void>;
|
|
17
16
|
createOrOpenWritableFeed(): Promise<FeedDescriptor>;
|
|
18
17
|
createOrOpenReadOnlyFeed(feedKey: PublicKey): Promise<FeedDescriptor>;
|
|
19
18
|
private _trackFeed;
|
|
20
19
|
private _createReadWriteFeed;
|
|
21
|
-
createIterator(messageSelector: MessageSelector, initialTimeframe?: Timeframe): Promise<FeedStoreIterator>;
|
|
20
|
+
createIterator(messageSelector: MessageSelector, feedSelector: FeedSelector, initialTimeframe?: Timeframe): Promise<FeedStoreIterator>;
|
|
22
21
|
}
|
|
23
22
|
//# sourceMappingURL=party-feed-provider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"party-feed-provider.d.ts","sourceRoot":"","sources":["../../../src/pipeline/party-feed-provider.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAgB,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,EAAW,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"party-feed-provider.d.ts","sourceRoot":"","sources":["../../../src/pipeline/party-feed-provider.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAgB,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,OAAO,EAAW,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMjD,qBAAa,iBAAiB;IAK1B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAP5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4D;IACnF,QAAQ,CAAC,UAAU,wBAA+B;gBAG/B,cAAc,EAAE,aAAa,EAC7B,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,SAAS,EACrB,SAAS,EAAE,SAAS;IAGvC,QAAQ,IAAK,cAAc,EAAE;IAKvB,wBAAwB;IAqBxB,wBAAwB,CAAE,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC;IAc5E,OAAO,CAAC,UAAU;YAWJ,oBAAoB;IAU5B,cAAc,CAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,gBAAgB,CAAC,EAAE,SAAS;CAkBjH"}
|
|
@@ -34,18 +34,6 @@ class PartyFeedProvider {
|
|
|
34
34
|
getFeeds() {
|
|
35
35
|
return Array.from(this._feeds.values());
|
|
36
36
|
}
|
|
37
|
-
async openKnownFeeds() {
|
|
38
|
-
var _a, _b;
|
|
39
|
-
for (const feedKey of (_b = (_a = this._metadataStore.getParty(this._partyKey)) === null || _a === void 0 ? void 0 : _a.feedKeys) !== null && _b !== void 0 ? _b : []) {
|
|
40
|
-
if (!this._feeds.has(feedKey)) {
|
|
41
|
-
const fullKey = this._keyring.getFullKey(feedKey);
|
|
42
|
-
const feed = (fullKey === null || fullKey === void 0 ? void 0 : fullKey.secretKey)
|
|
43
|
-
? await this._feedStore.openReadWriteFeed(fullKey.publicKey, fullKey.secretKey)
|
|
44
|
-
: await this._feedStore.openReadOnlyFeed(feedKey);
|
|
45
|
-
this._trackFeed(feed);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
37
|
async createOrOpenWritableFeed() {
|
|
50
38
|
const partyMetadata = this._metadataStore.getParty(this._partyKey);
|
|
51
39
|
if (!(partyMetadata === null || partyMetadata === void 0 ? void 0 : partyMetadata.dataFeedKey)) {
|
|
@@ -92,8 +80,8 @@ class PartyFeedProvider {
|
|
|
92
80
|
this._trackFeed(feed);
|
|
93
81
|
return feed;
|
|
94
82
|
}
|
|
95
|
-
async createIterator(messageSelector, initialTimeframe) {
|
|
96
|
-
const iterator = new echo_protocol_1.FeedStoreIterator(
|
|
83
|
+
async createIterator(messageSelector, feedSelector, initialTimeframe) {
|
|
84
|
+
const iterator = new echo_protocol_1.FeedStoreIterator(feedSelector, messageSelector, initialTimeframe !== null && initialTimeframe !== void 0 ? initialTimeframe : new echo_protocol_1.Timeframe());
|
|
97
85
|
for (const feed of this._feeds.values()) {
|
|
98
86
|
iterator.addFeedDescriptor(feed);
|
|
99
87
|
}
|
|
@@ -109,9 +97,6 @@ class PartyFeedProvider {
|
|
|
109
97
|
return iterator;
|
|
110
98
|
}
|
|
111
99
|
}
|
|
112
|
-
__decorate([
|
|
113
|
-
async_1.synchronized
|
|
114
|
-
], PartyFeedProvider.prototype, "openKnownFeeds", null);
|
|
115
100
|
__decorate([
|
|
116
101
|
async_1.synchronized
|
|
117
102
|
], PartyFeedProvider.prototype, "createOrOpenWritableFeed", null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"party-feed-provider.js","sourceRoot":"","sources":["../../../src/pipeline/party-feed-provider.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;AAEF,oDAA4B;AAC5B,kDAA0B;AAE1B,uCAAkD;AAClD,mDAAqD;AAErD,
|
|
1
|
+
{"version":3,"file":"party-feed-provider.js","sourceRoot":"","sources":["../../../src/pipeline/party-feed-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,32 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Message as HaloMessage } from '@dxos/credentials';
|
|
2
2
|
import { PublicKey } from '@dxos/crypto';
|
|
3
|
-
import { PartyKey, PartySnapshot, Timeframe
|
|
3
|
+
import { FeedWriter, PartyKey, PartySnapshot, Timeframe } from '@dxos/echo-protocol';
|
|
4
4
|
import { ModelFactory } from '@dxos/model-factory';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
5
|
+
import { PartyProcessor, PartyFeedProvider, FeedMuxer } from '.';
|
|
6
|
+
import { Database } from '../packlets/database';
|
|
7
7
|
import { SnapshotStore } from '../snapshots';
|
|
8
|
-
export interface
|
|
8
|
+
export interface PipelineOptions {
|
|
9
9
|
readLogger?: (msg: any) => void;
|
|
10
10
|
writeLogger?: (msg: any) => void;
|
|
11
11
|
readOnly?: boolean;
|
|
12
12
|
snapshots?: boolean;
|
|
13
13
|
snapshotInterval?: number;
|
|
14
14
|
}
|
|
15
|
+
export interface OpenOptions {
|
|
16
|
+
/**
|
|
17
|
+
* Keys of initial feeds needed to bootstrap the party.
|
|
18
|
+
*/
|
|
19
|
+
feedHints?: PublicKey[];
|
|
20
|
+
/**
|
|
21
|
+
* Timeframe to start processing feed messages from.
|
|
22
|
+
*/
|
|
23
|
+
initialTimeframe?: Timeframe;
|
|
24
|
+
/**
|
|
25
|
+
* Timeframe which must be reached until further processing.
|
|
26
|
+
* PartyCore.open will block until this timeframe is reached.
|
|
27
|
+
*/
|
|
28
|
+
targetTimeframe?: Timeframe;
|
|
29
|
+
}
|
|
15
30
|
/**
|
|
16
31
|
* Encapsulates core components needed by a party:
|
|
17
32
|
* - ECHO database with item-manager & item-demuxer.
|
|
@@ -20,13 +35,12 @@ export interface PartyOptions {
|
|
|
20
35
|
*
|
|
21
36
|
* The core class also handles the combined ECHO and HALO state snapshots.
|
|
22
37
|
*/
|
|
23
|
-
export declare class
|
|
38
|
+
export declare class PartyPipeline {
|
|
24
39
|
private readonly _partyKey;
|
|
25
40
|
private readonly _feedProvider;
|
|
26
41
|
private readonly _modelFactory;
|
|
27
42
|
private readonly _snapshotStore;
|
|
28
43
|
private readonly _memberKey;
|
|
29
|
-
private readonly _initialTimeframe?;
|
|
30
44
|
private readonly _options;
|
|
31
45
|
/**
|
|
32
46
|
* Snapshot to be restored from when party.open() is called.
|
|
@@ -37,28 +51,28 @@ export declare class PartyCore {
|
|
|
37
51
|
private _pipeline?;
|
|
38
52
|
private _partyProcessor?;
|
|
39
53
|
private _timeframeClock?;
|
|
40
|
-
constructor(_partyKey: PartyKey, _feedProvider: PartyFeedProvider, _modelFactory: ModelFactory, _snapshotStore: SnapshotStore, _memberKey: PublicKey,
|
|
54
|
+
constructor(_partyKey: PartyKey, _feedProvider: PartyFeedProvider, _modelFactory: ModelFactory, _snapshotStore: SnapshotStore, _memberKey: PublicKey, _options?: PipelineOptions);
|
|
41
55
|
get key(): PartyKey;
|
|
42
56
|
get isOpen(): boolean;
|
|
43
57
|
get database(): Database;
|
|
44
58
|
get processor(): PartyProcessor;
|
|
45
|
-
get pipeline():
|
|
59
|
+
get pipeline(): FeedMuxer;
|
|
46
60
|
get timeframe(): Timeframe;
|
|
47
61
|
get timeframeUpdate(): import("@dxos/async").Event<Timeframe>;
|
|
48
62
|
getWriteFeed(): Promise<import("@dxos/feed-store").FeedDescriptor>;
|
|
63
|
+
get credentialsWriter(): FeedWriter<HaloMessage>;
|
|
49
64
|
/**
|
|
50
65
|
* Opens the pipeline and connects the streams.
|
|
51
66
|
*/
|
|
52
|
-
open(
|
|
67
|
+
open(options?: OpenOptions): Promise<this>;
|
|
53
68
|
/**
|
|
54
69
|
* Closes the pipeline and streams.
|
|
55
70
|
*/
|
|
56
71
|
close(): Promise<this>;
|
|
57
|
-
writeCredentialsMessage(message: HaloMessage): Promise<WriteReceipt>;
|
|
58
72
|
/**
|
|
59
73
|
* Create a snapshot of the current state.
|
|
60
74
|
*/
|
|
61
75
|
createSnapshot(): PartySnapshot;
|
|
62
76
|
restoreFromSnapshot(snapshot: PartySnapshot): Promise<void>;
|
|
63
77
|
}
|
|
64
|
-
//# sourceMappingURL=party-
|
|
78
|
+
//# sourceMappingURL=party-pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"party-pipeline.d.ts","sourceRoot":"","sources":["../../../src/pipeline/party-pipeline.ts"],"names":[],"mappings":"AAOA,OAAO,EAAW,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAoD,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACvI,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,OAAO,EAAyB,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAuC,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAA4B,aAAa,EAAE,MAAM,cAAc,CAAC;AAIvE,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAChC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAGnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,EAAE,CAAA;IACvB;;OAEG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAA;IAC5B;;;OAGG;IACH,eAAe,CAAC,EAAE,SAAS,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,qBAAa,aAAa;IActB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAlB3B;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAA+B;IAExD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2B;IAE1D,OAAO,CAAC,SAAS,CAAC,CAAW;IAC7B,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,eAAe,CAAC,CAAiB;gBAGtB,SAAS,EAAE,QAAQ,EACnB,aAAa,EAAE,iBAAiB,EAChC,aAAa,EAAE,YAAY,EAC3B,cAAc,EAAE,aAAa,EAC7B,UAAU,EAAE,SAAS,EACrB,QAAQ,GAAE,eAAoB;IAGjD,IAAI,GAAG,IAAK,QAAQ,CAEnB;IAED,IAAI,MAAM,IAAK,OAAO,CAErB;IAED,IAAI,QAAQ,IAAK,QAAQ,CAGxB;IAED,IAAI,SAAS,mBAGZ;IAED,IAAI,QAAQ,cAGX;IAED,IAAI,SAAS,cAGZ;IAED,IAAI,eAAe,2CAGlB;IAEK,YAAY;IAMlB,IAAI,iBAAiB,IAAK,UAAU,CAAC,WAAW,CAAC,CAGhD;IAED;;OAEG;IAGG,IAAI,CAAE,OAAO,GAAE,WAAgB;IAkFrC;;OAEG;IAEG,KAAK;IAmBX;;OAEG;IACH,cAAc,IAAK,aAAa;IAY1B,mBAAmB,CAAE,QAAQ,EAAE,aAAa;CAWnD"}
|
|
@@ -12,16 +12,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.
|
|
15
|
+
exports.PartyPipeline = void 0;
|
|
16
16
|
const assert_1 = __importDefault(require("assert"));
|
|
17
17
|
const async_1 = require("@dxos/async");
|
|
18
18
|
const credentials_1 = require("@dxos/credentials");
|
|
19
19
|
const debug_1 = require("@dxos/debug");
|
|
20
20
|
const echo_protocol_1 = require("@dxos/echo-protocol");
|
|
21
21
|
const util_1 = require("@dxos/util");
|
|
22
|
-
const
|
|
23
|
-
const database_1 = require("../database");
|
|
24
|
-
const pipeline_1 = require("../pipeline");
|
|
22
|
+
const _1 = require(".");
|
|
23
|
+
const database_1 = require("../packlets/database");
|
|
25
24
|
const snapshots_1 = require("../snapshots");
|
|
26
25
|
const DEFAULT_SNAPSHOT_INTERVAL = 100; // Every 100 messages.
|
|
27
26
|
/**
|
|
@@ -32,14 +31,13 @@ const DEFAULT_SNAPSHOT_INTERVAL = 100; // Every 100 messages.
|
|
|
32
31
|
*
|
|
33
32
|
* The core class also handles the combined ECHO and HALO state snapshots.
|
|
34
33
|
*/
|
|
35
|
-
class
|
|
36
|
-
constructor(_partyKey, _feedProvider, _modelFactory, _snapshotStore, _memberKey,
|
|
34
|
+
class PartyPipeline {
|
|
35
|
+
constructor(_partyKey, _feedProvider, _modelFactory, _snapshotStore, _memberKey, _options = {}) {
|
|
37
36
|
this._partyKey = _partyKey;
|
|
38
37
|
this._feedProvider = _feedProvider;
|
|
39
38
|
this._modelFactory = _modelFactory;
|
|
40
39
|
this._snapshotStore = _snapshotStore;
|
|
41
40
|
this._memberKey = _memberKey;
|
|
42
|
-
this._initialTimeframe = _initialTimeframe;
|
|
43
41
|
this._options = _options;
|
|
44
42
|
this._subscriptions = new util_1.SubscriptionGroup();
|
|
45
43
|
}
|
|
@@ -74,53 +72,55 @@ class PartyCore {
|
|
|
74
72
|
(0, assert_1.default)(feed, `No writable feed found for party: ${this._partyKey}`);
|
|
75
73
|
return feed;
|
|
76
74
|
}
|
|
75
|
+
get credentialsWriter() {
|
|
76
|
+
var _a, _b;
|
|
77
|
+
(0, assert_1.default)((_a = this._pipeline) === null || _a === void 0 ? void 0 : _a.outboundHaloStream, 'Party not open');
|
|
78
|
+
return (_b = this._pipeline) === null || _b === void 0 ? void 0 : _b.outboundHaloStream;
|
|
79
|
+
}
|
|
77
80
|
/**
|
|
78
81
|
* Opens the pipeline and connects the streams.
|
|
79
82
|
*/
|
|
80
|
-
async open(
|
|
83
|
+
async open(options = {}) {
|
|
81
84
|
var _a;
|
|
85
|
+
const { feedHints = [], initialTimeframe, targetTimeframe } = options;
|
|
82
86
|
if (this.isOpen) {
|
|
83
87
|
return this;
|
|
84
88
|
}
|
|
85
|
-
this._timeframeClock = new database_1.TimeframeClock(
|
|
86
|
-
// Open all feeds known from metadata and open or create a writable feed to the party.
|
|
87
|
-
await this._feedProvider.openKnownFeeds();
|
|
89
|
+
this._timeframeClock = new database_1.TimeframeClock(initialTimeframe);
|
|
88
90
|
const writableFeed = await this._feedProvider.createOrOpenWritableFeed();
|
|
89
91
|
if (!this._partyProcessor) {
|
|
90
|
-
this._partyProcessor = new
|
|
92
|
+
this._partyProcessor = new _1.PartyProcessor(this._partyKey);
|
|
91
93
|
}
|
|
92
94
|
// Automatically open new admitted feeds.
|
|
93
95
|
this._subscriptions.push(this._partyProcessor.feedAdded.on(feed => {
|
|
94
96
|
void this._feedProvider.createOrOpenReadOnlyFeed(feed);
|
|
95
97
|
}));
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
await this._partyProcessor.takeHints([{ type: credentials_1.KeyType.FEED, publicKey: writableFeed.key }]);
|
|
99
|
-
if (keyHints.length > 0) {
|
|
100
|
-
await this._partyProcessor.takeHints(keyHints);
|
|
98
|
+
if (feedHints.length > 0) {
|
|
99
|
+
await this._partyProcessor.takeHints(feedHints.map(publicKey => ({ publicKey, type: credentials_1.KeyType.FEED })));
|
|
101
100
|
}
|
|
102
101
|
//
|
|
103
102
|
// Pipeline
|
|
104
103
|
//
|
|
105
|
-
const iterator = await this._feedProvider.createIterator((0,
|
|
106
|
-
this._pipeline = new
|
|
107
|
-
// TODO(burdon): Support read-only parties.
|
|
108
|
-
const [readStream, writeStream] = await this._pipeline.open();
|
|
109
|
-
// Must happen after open.
|
|
110
|
-
if (this._pipeline.outboundHaloStream) {
|
|
111
|
-
this._partyProcessor.setOutboundStream(this._pipeline.outboundHaloStream);
|
|
112
|
-
}
|
|
104
|
+
const iterator = await this._feedProvider.createIterator((0, _1.createMessageSelector)(this._partyProcessor, this._timeframeClock), createFeedSelector(this._partyProcessor, feedHints), initialTimeframe);
|
|
105
|
+
this._pipeline = new _1.FeedMuxer(this._partyProcessor, iterator, this._timeframeClock, (0, echo_protocol_1.createFeedWriter)(writableFeed.feed), this._options);
|
|
113
106
|
//
|
|
114
107
|
// Database
|
|
115
108
|
//
|
|
116
|
-
|
|
109
|
+
const databaseBackend = new database_1.FeedDatabaseBackend(this._pipeline.outboundEchoStream, this._databaseSnapshot, { snapshots: true });
|
|
110
|
+
this._database = new database_1.Database(this._modelFactory, databaseBackend, this._memberKey);
|
|
111
|
+
// Open pipeline and connect it to the database.
|
|
117
112
|
await this._database.initialize();
|
|
113
|
+
this._pipeline.setEchoProcessor(databaseBackend.echoProcessor);
|
|
114
|
+
await this._pipeline.open();
|
|
118
115
|
// TODO(burdon): Propagate errors.
|
|
119
116
|
this._subscriptions.push(this._pipeline.errors.on(err => console.error(err)));
|
|
120
117
|
if (this._options.snapshots) {
|
|
121
118
|
(0, snapshots_1.createAutomaticSnapshots)(this, // TODO(burdon): Don't pass `this`.
|
|
122
119
|
this._timeframeClock, this._snapshotStore, (_a = this._options.snapshotInterval) !== null && _a !== void 0 ? _a : DEFAULT_SNAPSHOT_INTERVAL);
|
|
123
120
|
}
|
|
121
|
+
if (targetTimeframe) {
|
|
122
|
+
await this._timeframeClock.waitUntilReached(targetTimeframe);
|
|
123
|
+
}
|
|
124
124
|
return this;
|
|
125
125
|
}
|
|
126
126
|
/**
|
|
@@ -140,11 +140,6 @@ class PartyCore {
|
|
|
140
140
|
this._subscriptions.unsubscribe();
|
|
141
141
|
return this;
|
|
142
142
|
}
|
|
143
|
-
writeCredentialsMessage(message) {
|
|
144
|
-
var _a;
|
|
145
|
-
(0, assert_1.default)(this._partyProcessor, 'Party not open');
|
|
146
|
-
return (_a = this._partyProcessor) === null || _a === void 0 ? void 0 : _a.writeHaloMessage(message);
|
|
147
|
-
}
|
|
148
143
|
/**
|
|
149
144
|
* Create a snapshot of the current state.
|
|
150
145
|
*/
|
|
@@ -163,7 +158,7 @@ class PartyCore {
|
|
|
163
158
|
(0, assert_1.default)(!this._partyProcessor, 'Party processor already exists.');
|
|
164
159
|
(0, assert_1.default)(snapshot.halo);
|
|
165
160
|
(0, assert_1.default)(snapshot.database);
|
|
166
|
-
this._partyProcessor = new
|
|
161
|
+
this._partyProcessor = new _1.PartyProcessor(this._partyKey);
|
|
167
162
|
await this._partyProcessor.restoreFromSnapshot(snapshot.halo);
|
|
168
163
|
this._databaseSnapshot = snapshot.database;
|
|
169
164
|
}
|
|
@@ -171,9 +166,10 @@ class PartyCore {
|
|
|
171
166
|
__decorate([
|
|
172
167
|
async_1.synchronized,
|
|
173
168
|
(0, debug_1.timed)(1000)
|
|
174
|
-
],
|
|
169
|
+
], PartyPipeline.prototype, "open", null);
|
|
175
170
|
__decorate([
|
|
176
171
|
async_1.synchronized
|
|
177
|
-
],
|
|
178
|
-
exports.
|
|
179
|
-
|
|
172
|
+
], PartyPipeline.prototype, "close", null);
|
|
173
|
+
exports.PartyPipeline = PartyPipeline;
|
|
174
|
+
const createFeedSelector = (partyProcessor, hints) => feed => hints.some(hint => hint.equals(feed.key)) || partyProcessor.isFeedAdmitted(feed.key);
|
|
175
|
+
//# sourceMappingURL=party-pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"party-pipeline.js","sourceRoot":"","sources":["../../../src/pipeline/party-pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"party-pipeline.test.d.ts","sourceRoot":"","sources":["../../../src/pipeline/party-pipeline.test.ts"],"names":[],"mappings":""}
|
|
@@ -11,6 +11,7 @@ const mocha_1 = require("mocha");
|
|
|
11
11
|
const async_1 = require("@dxos/async");
|
|
12
12
|
const credentials_1 = require("@dxos/credentials");
|
|
13
13
|
const crypto_1 = require("@dxos/crypto");
|
|
14
|
+
const debug_1 = require("@dxos/debug");
|
|
14
15
|
const echo_protocol_1 = require("@dxos/echo-protocol");
|
|
15
16
|
const feed_store_1 = require("@dxos/feed-store");
|
|
16
17
|
const mesh_protocol_1 = require("@dxos/mesh-protocol");
|
|
@@ -18,29 +19,29 @@ const model_factory_1 = require("@dxos/model-factory");
|
|
|
18
19
|
const object_model_1 = require("@dxos/object-model");
|
|
19
20
|
const random_access_multi_storage_1 = require("@dxos/random-access-multi-storage");
|
|
20
21
|
const testutils_1 = require("@dxos/testutils");
|
|
21
|
-
const
|
|
22
|
+
const _1 = require(".");
|
|
22
23
|
const replicator_plugin_1 = require("../protocol/replicator-plugin");
|
|
23
24
|
const snapshots_1 = require("../snapshots");
|
|
24
|
-
const
|
|
25
|
-
describe('
|
|
25
|
+
const party_pipeline_1 = require("./party-pipeline");
|
|
26
|
+
describe('PartyPipeline', () => {
|
|
26
27
|
const setup = async () => {
|
|
27
28
|
const storage = (0, random_access_multi_storage_1.createStorage)('', random_access_multi_storage_1.StorageType.RAM);
|
|
28
29
|
const feedStore = new feed_store_1.FeedStore(storage.directory('feed'), { valueEncoding: echo_protocol_1.codec });
|
|
29
30
|
(0, testutils_1.afterTest)(async () => feedStore.close());
|
|
30
31
|
const keyring = new credentials_1.Keyring();
|
|
31
|
-
const metadataStore = new
|
|
32
|
+
const metadataStore = new _1.MetadataStore(storage.directory('metadata'));
|
|
32
33
|
const modelFactory = new model_factory_1.ModelFactory().registerModel(object_model_1.ObjectModel);
|
|
33
34
|
const snapshotStore = new snapshots_1.SnapshotStore(storage.directory('snapshots'));
|
|
34
35
|
const partyKey = await keyring.createKeyRecord({ type: credentials_1.KeyType.PARTY });
|
|
35
|
-
const partyFeedProvider = new
|
|
36
|
-
const party = new
|
|
36
|
+
const partyFeedProvider = new _1.PartyFeedProvider(metadataStore, keyring, feedStore, partyKey.publicKey);
|
|
37
|
+
const party = new party_pipeline_1.PartyPipeline(partyKey.publicKey, partyFeedProvider, modelFactory, snapshotStore, crypto_1.PublicKey.random());
|
|
37
38
|
const feed = await partyFeedProvider.createOrOpenWritableFeed();
|
|
38
|
-
await party.open();
|
|
39
|
+
await party.open({ feedHints: [feed.key] });
|
|
39
40
|
(0, testutils_1.afterTest)(async () => party.close());
|
|
40
41
|
// PartyGenesis (self-signed by Party).
|
|
41
|
-
await party.
|
|
42
|
+
await party.credentialsWriter.write((0, credentials_1.createPartyGenesisMessage)(keyring, partyKey, feed.key, partyKey));
|
|
42
43
|
// FeedAdmit (signed by the Device KeyChain).
|
|
43
|
-
await party.
|
|
44
|
+
await party.credentialsWriter.write((0, credentials_1.createFeedAdmitMessage)(keyring, partyKey.publicKey, feed.key, [partyKey]));
|
|
44
45
|
return { party, feedKey: feed.key, feed, feedStore, partyKey, keyring, partyFeedProvider };
|
|
45
46
|
};
|
|
46
47
|
(0, mocha_1.it)('create & have the feed key admitted', async () => {
|
|
@@ -55,7 +56,7 @@ describe('PartyCore', () => {
|
|
|
55
56
|
(0, expect_1.default)(item.model.get('foo')).toEqual('bar');
|
|
56
57
|
});
|
|
57
58
|
(0, mocha_1.it)('create item with parent and then reload', async () => {
|
|
58
|
-
const { party } = await setup();
|
|
59
|
+
const { party, feedKey } = await setup();
|
|
59
60
|
{
|
|
60
61
|
const parent = await party.database.createItem({ model: object_model_1.ObjectModel, type: 'parent' });
|
|
61
62
|
const child = await party.database.createItem({
|
|
@@ -67,7 +68,7 @@ describe('PartyCore', () => {
|
|
|
67
68
|
(0, expect_1.default)(parent.children).toContain(child);
|
|
68
69
|
}
|
|
69
70
|
await party.close();
|
|
70
|
-
await party.open();
|
|
71
|
+
await party.open({ feedHints: [feedKey] });
|
|
71
72
|
{
|
|
72
73
|
await party.database.select().exec().update.waitFor(result => result.entities.length === 2);
|
|
73
74
|
const parent = party.database.select({ type: 'parent' }).exec().entities[0];
|
|
@@ -80,7 +81,7 @@ describe('PartyCore', () => {
|
|
|
80
81
|
const { party, partyKey, keyring, partyFeedProvider, feedStore } = await setup();
|
|
81
82
|
const feedKey = await keyring.createKeyRecord({ type: credentials_1.KeyType.FEED });
|
|
82
83
|
const eventFired = feedStore.feedOpenedEvent.waitForCount(1);
|
|
83
|
-
await party.
|
|
84
|
+
await party.credentialsWriter.write((0, credentials_1.createFeedAdmitMessage)(keyring, party.key, feedKey.publicKey, [partyKey]));
|
|
84
85
|
await (0, async_1.promiseTimeout)(eventFired, 1000, new Error('timeout'));
|
|
85
86
|
(0, expect_1.default)(partyFeedProvider.getFeeds().find(k => k.key.equals(feedKey.publicKey))).toBeTruthy();
|
|
86
87
|
});
|
|
@@ -89,16 +90,16 @@ describe('PartyCore', () => {
|
|
|
89
90
|
const feedStore = new feed_store_1.FeedStore(storage.directory('feed'), { valueEncoding: echo_protocol_1.codec });
|
|
90
91
|
(0, testutils_1.afterTest)(async () => feedStore.close());
|
|
91
92
|
const keyring = new credentials_1.Keyring();
|
|
92
|
-
const metadataStore = new
|
|
93
|
+
const metadataStore = new _1.MetadataStore(storage.directory('metadata'));
|
|
93
94
|
const modelFactory = new model_factory_1.ModelFactory().registerModel(object_model_1.ObjectModel);
|
|
94
95
|
const snapshotStore = new snapshots_1.SnapshotStore(storage.directory('snapshots'));
|
|
95
96
|
const partyKey = await keyring.createKeyRecord({ type: credentials_1.KeyType.PARTY });
|
|
96
|
-
const partyFeedProvider = new
|
|
97
|
+
const partyFeedProvider = new _1.PartyFeedProvider(metadataStore, keyring, feedStore, partyKey.publicKey);
|
|
97
98
|
const otherFeedKey = crypto_1.PublicKey.random();
|
|
98
|
-
const party = new
|
|
99
|
+
const party = new party_pipeline_1.PartyPipeline(partyKey.publicKey, partyFeedProvider, modelFactory, snapshotStore, crypto_1.PublicKey.random());
|
|
99
100
|
await partyFeedProvider.createOrOpenWritableFeed();
|
|
100
101
|
const feedOpened = feedStore.feedOpenedEvent.waitForCount(1);
|
|
101
|
-
await party.open(
|
|
102
|
+
await party.open({ feedHints: [otherFeedKey] });
|
|
102
103
|
(0, testutils_1.afterTest)(async () => party.close());
|
|
103
104
|
await feedOpened;
|
|
104
105
|
(0, expect_1.default)(partyFeedProvider.getFeeds().some(k => k.key.equals(otherFeedKey))).toEqual(true);
|
|
@@ -108,16 +109,16 @@ describe('PartyCore', () => {
|
|
|
108
109
|
await party.open();
|
|
109
110
|
const feed = await partyFeedProvider.createOrOpenWritableFeed();
|
|
110
111
|
const itemId = (0, crypto_1.createId)();
|
|
111
|
-
await feed.feed.append({
|
|
112
|
+
await feed.feed.append((0, debug_1.checkType)({
|
|
113
|
+
timeframe: new echo_protocol_1.Timeframe(),
|
|
112
114
|
echo: {
|
|
113
115
|
itemId,
|
|
114
116
|
genesis: {
|
|
115
117
|
itemType: 'dxos:example',
|
|
116
118
|
modelType: object_model_1.ObjectModel.meta.type
|
|
117
|
-
}
|
|
118
|
-
timeframe: new echo_protocol_1.Timeframe()
|
|
119
|
+
}
|
|
119
120
|
}
|
|
120
|
-
});
|
|
121
|
+
}));
|
|
121
122
|
await (0, async_1.promiseTimeout)(party.database.waitForItem({ id: itemId }), 1000, new Error('timeout'));
|
|
122
123
|
});
|
|
123
124
|
(0, mocha_1.it)('admit a second feed to the party', async () => {
|
|
@@ -126,18 +127,18 @@ describe('PartyCore', () => {
|
|
|
126
127
|
const feedKey = await keyring.createKeyRecord({ type: credentials_1.KeyType.FEED });
|
|
127
128
|
const fullKey = keyring.getFullKey(feedKey.publicKey);
|
|
128
129
|
const feed2 = await feedStore.openReadWriteFeed(fullKey.publicKey, fullKey.secretKey);
|
|
129
|
-
await party.
|
|
130
|
+
await party.credentialsWriter.write((0, credentials_1.createFeedAdmitMessage)(keyring, party.key, feed2.key, [partyKey]));
|
|
130
131
|
const itemId = (0, crypto_1.createId)();
|
|
131
|
-
await feed2.append({
|
|
132
|
+
await feed2.append((0, debug_1.checkType)({
|
|
133
|
+
timeframe: new echo_protocol_1.Timeframe(),
|
|
132
134
|
echo: {
|
|
133
135
|
itemId,
|
|
134
136
|
genesis: {
|
|
135
137
|
itemType: 'dxos:example',
|
|
136
138
|
modelType: object_model_1.ObjectModel.meta.type
|
|
137
|
-
}
|
|
138
|
-
timeframe: new echo_protocol_1.Timeframe()
|
|
139
|
+
}
|
|
139
140
|
}
|
|
140
|
-
});
|
|
141
|
+
}));
|
|
141
142
|
await (0, async_1.promiseTimeout)(party.database.waitForItem({ id: itemId }), 1000, new Error('timeout'));
|
|
142
143
|
});
|
|
143
144
|
(0, mocha_1.it)('admit feed and then open it', async () => {
|
|
@@ -145,41 +146,57 @@ describe('PartyCore', () => {
|
|
|
145
146
|
await party.open();
|
|
146
147
|
const feedKey = await keyring.createKeyRecord({ type: credentials_1.KeyType.FEED });
|
|
147
148
|
const fullKey = keyring.getFullKey(feedKey.publicKey);
|
|
148
|
-
await party.
|
|
149
|
+
await party.credentialsWriter.write((0, credentials_1.createFeedAdmitMessage)(keyring, party.key, feedKey.publicKey, [partyKey]));
|
|
149
150
|
const feed2 = await feedStore.openReadWriteFeed(fullKey.publicKey, fullKey.secretKey);
|
|
150
151
|
const itemId = (0, crypto_1.createId)();
|
|
151
|
-
await feed2.append({
|
|
152
|
+
await feed2.append((0, debug_1.checkType)({
|
|
153
|
+
timeframe: new echo_protocol_1.Timeframe(),
|
|
152
154
|
echo: {
|
|
153
155
|
itemId,
|
|
154
156
|
genesis: {
|
|
155
157
|
itemType: 'dxos:example',
|
|
156
158
|
modelType: object_model_1.ObjectModel.meta.type
|
|
157
|
-
}
|
|
158
|
-
timeframe: new echo_protocol_1.Timeframe()
|
|
159
|
+
}
|
|
159
160
|
}
|
|
160
|
-
});
|
|
161
|
+
}));
|
|
161
162
|
await (0, async_1.promiseTimeout)(party.database.waitForItem({ id: itemId }), 1000, new Error('timeout'));
|
|
162
163
|
});
|
|
164
|
+
(0, mocha_1.it)('wait to reach specific timeframe', async () => {
|
|
165
|
+
const { party, feedKey } = await setup();
|
|
166
|
+
{
|
|
167
|
+
const parent = await party.database.createItem({ model: object_model_1.ObjectModel, type: 'parent' });
|
|
168
|
+
const child = await party.database.createItem({
|
|
169
|
+
model: object_model_1.ObjectModel,
|
|
170
|
+
parent: parent.id,
|
|
171
|
+
type: 'child'
|
|
172
|
+
});
|
|
173
|
+
(0, expect_1.default)(child.parent).toEqual(parent);
|
|
174
|
+
(0, expect_1.default)(parent.children).toContain(child);
|
|
175
|
+
}
|
|
176
|
+
const timeframe = party.timeframe;
|
|
177
|
+
(0, expect_1.default)(timeframe.isEmpty()).toBeFalsy();
|
|
178
|
+
await party.close();
|
|
179
|
+
await party.open({ feedHints: [feedKey], targetTimeframe: timeframe });
|
|
180
|
+
});
|
|
163
181
|
(0, mocha_1.it)('two instances replicating', async () => {
|
|
164
182
|
const peer1 = await setup();
|
|
165
183
|
const storage = (0, random_access_multi_storage_1.createStorage)('', random_access_multi_storage_1.StorageType.RAM);
|
|
166
184
|
const feedStore = new feed_store_1.FeedStore(storage.directory('feed'), { valueEncoding: echo_protocol_1.codec });
|
|
167
185
|
(0, testutils_1.afterTest)(async () => feedStore.close());
|
|
168
|
-
const metadataStore = new
|
|
186
|
+
const metadataStore = new _1.MetadataStore(storage.directory('metadata'));
|
|
169
187
|
const modelFactory = new model_factory_1.ModelFactory().registerModel(object_model_1.ObjectModel);
|
|
170
188
|
const snapshotStore = new snapshots_1.SnapshotStore(storage.directory('snapshots'));
|
|
171
|
-
const partyFeedProvider = new
|
|
172
|
-
const party2 = new
|
|
189
|
+
const partyFeedProvider = new _1.PartyFeedProvider(metadataStore, peer1.keyring, feedStore, peer1.party.key);
|
|
190
|
+
const party2 = new party_pipeline_1.PartyPipeline(peer1.party.key, partyFeedProvider, modelFactory, snapshotStore, crypto_1.PublicKey.random());
|
|
173
191
|
const feed2 = await partyFeedProvider.createOrOpenWritableFeed();
|
|
174
|
-
await peer1.party.
|
|
175
|
-
await party2.open(
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
}]);
|
|
192
|
+
await peer1.party.credentialsWriter.write((0, credentials_1.createFeedAdmitMessage)(peer1.keyring, peer1.party.key, feed2.key, [peer1.partyKey]));
|
|
193
|
+
await party2.open({
|
|
194
|
+
feedHints: [peer1.feedKey]
|
|
195
|
+
});
|
|
179
196
|
(0, testutils_1.afterTest)(async () => party2.close());
|
|
180
197
|
(0, mesh_protocol_1.createTestProtocolPair)([(0, replicator_plugin_1.createReplicatorPlugin)(peer1.partyFeedProvider).createExtension()], [(0, replicator_plugin_1.createReplicatorPlugin)(partyFeedProvider).createExtension()]);
|
|
181
198
|
const item1 = await peer1.party.database.createItem();
|
|
182
199
|
await (0, async_1.promiseTimeout)(party2.database.waitForItem({ id: item1.id }), 1000, new Error('timeout'));
|
|
183
200
|
});
|
|
184
201
|
});
|
|
185
|
-
//# sourceMappingURL=party-
|
|
202
|
+
//# sourceMappingURL=party-pipeline.test.js.map
|