document-drive 5.0.0-staging.9 → 5.0.1-staging.2
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/index.d.ts +17 -32
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -20
- package/dist/index.js.map +1 -1
- package/dist/prisma/schema.prisma +1 -1
- package/dist/src/cache/index.d.ts +5 -0
- package/dist/src/cache/index.d.ts.map +1 -0
- package/dist/src/cache/index.js +5 -0
- package/dist/src/cache/index.js.map +1 -0
- package/dist/src/cache/lru.d.ts +2 -13
- package/dist/src/cache/lru.d.ts.map +1 -1
- package/dist/src/cache/lru.js +1 -2
- package/dist/src/cache/lru.js.map +1 -1
- package/dist/src/cache/memory.d.ts +3 -14
- package/dist/src/cache/memory.d.ts.map +1 -1
- package/dist/src/cache/memory.js +2 -3
- package/dist/src/cache/memory.js.map +1 -1
- package/dist/src/cache/redis.d.ts +3 -5
- package/dist/src/cache/redis.d.ts.map +1 -1
- package/dist/src/cache/redis.js +2 -4
- package/dist/src/cache/redis.js.map +1 -1
- package/dist/src/cache/types.d.ts +23 -2
- package/dist/src/cache/types.d.ts.map +1 -1
- package/dist/src/cache/util.d.ts +1 -1
- package/dist/src/cache/util.d.ts.map +1 -1
- package/dist/src/cache/util.js +11 -9
- package/dist/src/cache/util.js.map +1 -1
- package/dist/src/drive-document-model/constants.d.ts +2 -1
- package/dist/src/drive-document-model/constants.d.ts.map +1 -1
- package/dist/src/drive-document-model/constants.js +2 -2
- package/dist/src/drive-document-model/constants.js.map +1 -1
- package/dist/src/drive-document-model/gen/document-model.d.ts +2 -2
- package/dist/src/drive-document-model/gen/document-model.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/document-model.js +1 -1
- package/dist/src/drive-document-model/gen/document-model.js.map +1 -1
- package/dist/src/drive-document-model/gen/drive/actions.d.ts +12 -2
- package/dist/src/drive-document-model/gen/drive/actions.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/drive/creators.d.ts +2 -2
- package/dist/src/drive-document-model/gen/drive/creators.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/drive/creators.js +10 -10
- package/dist/src/drive-document-model/gen/drive/creators.js.map +1 -1
- package/dist/src/drive-document-model/gen/drive/index.d.ts +2 -0
- package/dist/src/drive-document-model/gen/drive/index.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/drive/index.js +2 -0
- package/dist/src/drive-document-model/gen/drive/index.js.map +1 -0
- package/dist/src/drive-document-model/gen/drive/types.d.ts +2 -0
- package/dist/src/drive-document-model/gen/drive/types.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/drive/types.js +2 -0
- package/dist/src/drive-document-model/gen/drive/types.js.map +1 -0
- package/dist/src/drive-document-model/gen/index.d.ts +7 -6
- package/dist/src/drive-document-model/gen/index.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/index.js +7 -5
- package/dist/src/drive-document-model/gen/index.js.map +1 -1
- package/dist/src/drive-document-model/gen/node/actions.d.ts +11 -2
- package/dist/src/drive-document-model/gen/node/actions.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/node/creators.d.ts +1 -2
- package/dist/src/drive-document-model/gen/node/creators.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/node/creators.js +9 -9
- package/dist/src/drive-document-model/gen/node/creators.js.map +1 -1
- package/dist/src/drive-document-model/gen/node/index.d.ts +2 -0
- package/dist/src/drive-document-model/gen/node/index.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/node/index.js +2 -0
- package/dist/src/drive-document-model/gen/node/index.js.map +1 -0
- package/dist/src/drive-document-model/gen/node/types.d.ts +2 -0
- package/dist/src/drive-document-model/gen/node/types.d.ts.map +1 -0
- package/dist/src/drive-document-model/gen/node/types.js +2 -0
- package/dist/src/drive-document-model/gen/node/types.js.map +1 -0
- package/dist/src/drive-document-model/gen/ph-factories.d.ts +5 -20
- package/dist/src/drive-document-model/gen/ph-factories.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/ph-factories.js +1 -13
- package/dist/src/drive-document-model/gen/ph-factories.js.map +1 -1
- package/dist/src/drive-document-model/gen/reducer.d.ts +3 -3
- package/dist/src/drive-document-model/gen/reducer.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/reducer.js +34 -36
- package/dist/src/drive-document-model/gen/reducer.js.map +1 -1
- package/dist/src/drive-document-model/gen/schema/index.d.ts +2 -2
- package/dist/src/drive-document-model/gen/schema/index.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/schema/index.js +2 -2
- package/dist/src/drive-document-model/gen/schema/index.js.map +1 -1
- package/dist/src/drive-document-model/gen/schema/types.d.ts +8 -3
- package/dist/src/drive-document-model/gen/schema/types.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/schema/zod.d.ts +28 -28
- package/dist/src/drive-document-model/gen/schema/zod.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/schema/zod.js.map +1 -1
- package/dist/src/drive-document-model/gen/types.d.ts +5 -6
- package/dist/src/drive-document-model/gen/types.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/types.js +3 -1
- package/dist/src/drive-document-model/gen/types.js.map +1 -1
- package/dist/src/drive-document-model/gen/utils.d.ts +7 -9
- package/dist/src/drive-document-model/gen/utils.d.ts.map +1 -1
- package/dist/src/drive-document-model/gen/utils.js +21 -34
- package/dist/src/drive-document-model/gen/utils.js.map +1 -1
- package/dist/src/drive-document-model/index.d.ts +4 -1
- package/dist/src/drive-document-model/index.d.ts.map +1 -1
- package/dist/src/drive-document-model/index.js +4 -1
- package/dist/src/drive-document-model/index.js.map +1 -1
- package/dist/src/drive-document-model/module.d.ts +2 -27
- package/dist/src/drive-document-model/module.d.ts.map +1 -1
- package/dist/src/drive-document-model/module.js +17 -16
- package/dist/src/drive-document-model/module.js.map +1 -1
- package/dist/src/drive-document-model/src/index.d.ts +3 -0
- package/dist/src/drive-document-model/src/index.d.ts.map +1 -0
- package/dist/src/drive-document-model/src/index.js +3 -0
- package/dist/src/drive-document-model/src/index.js.map +1 -0
- package/dist/src/drive-document-model/src/reducers/drive.d.ts +2 -2
- package/dist/src/drive-document-model/src/reducers/drive.d.ts.map +1 -1
- package/dist/src/drive-document-model/src/reducers/drive.js +1 -1
- package/dist/src/drive-document-model/src/reducers/drive.js.map +1 -1
- package/dist/src/drive-document-model/src/reducers/index.d.ts +3 -0
- package/dist/src/drive-document-model/src/reducers/index.d.ts.map +1 -0
- package/dist/src/drive-document-model/src/reducers/index.js +3 -0
- package/dist/src/drive-document-model/src/reducers/index.js.map +1 -0
- package/dist/src/drive-document-model/src/reducers/node.d.ts +2 -2
- package/dist/src/drive-document-model/src/reducers/node.d.ts.map +1 -1
- package/dist/src/drive-document-model/src/reducers/node.js +3 -4
- package/dist/src/drive-document-model/src/reducers/node.js.map +1 -1
- package/dist/src/drive-document-model/src/tests/actions.test.js +20 -22
- package/dist/src/drive-document-model/src/tests/actions.test.js.map +1 -1
- package/dist/src/drive-document-model/src/tests/base.test.js +12 -52
- package/dist/src/drive-document-model/src/tests/base.test.js.map +1 -1
- package/dist/src/drive-document-model/src/tests/document-model.test.js +3 -3
- package/dist/src/drive-document-model/src/tests/document-model.test.js.map +1 -1
- package/dist/src/drive-document-model/src/tests/drive.test.js +5 -8
- package/dist/src/drive-document-model/src/tests/drive.test.js.map +1 -1
- package/dist/src/drive-document-model/src/tests/generate-mock.d.ts +2 -1
- package/dist/src/drive-document-model/src/tests/generate-mock.d.ts.map +1 -1
- package/dist/src/drive-document-model/src/tests/node.test.js +32 -35
- package/dist/src/drive-document-model/src/tests/node.test.js.map +1 -1
- package/dist/src/drive-document-model/src/tests/test-factories.d.ts +1 -6
- package/dist/src/drive-document-model/src/tests/test-factories.d.ts.map +1 -1
- package/dist/src/drive-document-model/src/tests/test-factories.js +4 -11
- package/dist/src/drive-document-model/src/tests/test-factories.js.map +1 -1
- package/dist/src/drive-document-model/src/tests/utils.test.js +1 -1
- package/dist/src/drive-document-model/src/tests/utils.test.js.map +1 -1
- package/dist/src/drive-document-model/src/types.d.ts +8 -0
- package/dist/src/drive-document-model/src/types.d.ts.map +1 -0
- package/dist/src/drive-document-model/src/types.js +2 -0
- package/dist/src/drive-document-model/src/types.js.map +1 -0
- package/dist/src/drive-document-model/src/utils.d.ts +1 -7
- package/dist/src/drive-document-model/src/utils.d.ts.map +1 -1
- package/dist/src/drive-document-model/src/utils.js.map +1 -1
- package/dist/src/drive-document-model/types.d.ts +10 -0
- package/dist/src/drive-document-model/types.d.ts.map +1 -0
- package/dist/src/drive-document-model/types.js +3 -0
- package/dist/src/drive-document-model/types.js.map +1 -0
- package/dist/src/processors/index.d.ts +4 -0
- package/dist/src/processors/index.d.ts.map +1 -0
- package/dist/src/processors/index.js +4 -0
- package/dist/src/processors/index.js.map +1 -0
- package/dist/src/processors/processor-manager.d.ts +1 -2
- package/dist/src/processors/processor-manager.d.ts.map +1 -1
- package/dist/src/processors/processor-manager.js +3 -5
- package/dist/src/processors/processor-manager.js.map +1 -1
- package/dist/src/processors/relational.d.ts +3 -15
- package/dist/src/processors/relational.d.ts.map +1 -1
- package/dist/src/processors/relational.js +4 -7
- package/dist/src/processors/relational.js.map +1 -1
- package/dist/src/processors/types.d.ts +16 -7
- package/dist/src/processors/types.d.ts.map +1 -1
- package/dist/src/processors/utils.d.ts +1 -2
- package/dist/src/processors/utils.d.ts.map +1 -1
- package/dist/src/processors/utils.js +0 -2
- package/dist/src/processors/utils.js.map +1 -1
- package/dist/src/queue/base.d.ts +1 -1
- package/dist/src/queue/base.d.ts.map +1 -1
- package/dist/src/queue/event.d.ts +3 -4
- package/dist/src/queue/event.d.ts.map +1 -1
- package/dist/src/queue/event.js +2 -5
- package/dist/src/queue/event.js.map +1 -1
- package/dist/src/queue/index.d.ts +5 -0
- package/dist/src/queue/index.d.ts.map +1 -0
- package/dist/src/queue/index.js +5 -0
- package/dist/src/queue/index.js.map +1 -0
- package/dist/src/queue/redis.js +1 -1
- package/dist/src/queue/redis.js.map +1 -1
- package/dist/src/queue/types.d.ts +1 -4
- package/dist/src/queue/types.d.ts.map +1 -1
- package/dist/src/queue/types.js +1 -9
- package/dist/src/queue/types.js.map +1 -1
- package/dist/src/queue/utils.d.ts +5 -0
- package/dist/src/queue/utils.d.ts.map +1 -0
- package/dist/src/queue/utils.js +10 -0
- package/dist/src/queue/utils.js.map +1 -0
- package/dist/src/read-mode/index.d.ts +4 -0
- package/dist/src/read-mode/index.d.ts.map +1 -0
- package/dist/src/read-mode/index.js +4 -0
- package/dist/src/read-mode/index.js.map +1 -0
- package/dist/src/read-mode/server.d.ts +1 -2
- package/dist/src/read-mode/server.d.ts.map +1 -1
- package/dist/src/read-mode/server.js +1 -3
- package/dist/src/read-mode/server.js.map +1 -1
- package/dist/src/read-mode/service.d.ts +2 -3
- package/dist/src/read-mode/service.d.ts.map +1 -1
- package/dist/src/read-mode/service.js +1 -5
- package/dist/src/read-mode/service.js.map +1 -1
- package/dist/src/read-mode/types.d.ts +2 -6
- package/dist/src/read-mode/types.d.ts.map +1 -1
- package/dist/src/server/base-server.d.ts +17 -26
- package/dist/src/server/base-server.d.ts.map +1 -1
- package/dist/src/server/base-server.js +304 -36
- package/dist/src/server/base-server.js.map +1 -1
- package/dist/src/server/builder.d.ts +2 -5
- package/dist/src/server/builder.d.ts.map +1 -1
- package/dist/src/server/builder.js +8 -10
- package/dist/src/server/builder.js.map +1 -1
- package/dist/src/server/constants.d.ts +3 -0
- package/dist/src/server/constants.d.ts.map +1 -1
- package/dist/src/server/constants.js +3 -0
- package/dist/src/server/constants.js.map +1 -1
- package/dist/src/server/error.d.ts +1 -1
- package/dist/src/server/error.d.ts.map +1 -1
- package/dist/src/server/event-emitter.d.ts +2 -2
- package/dist/src/server/event-emitter.d.ts.map +1 -1
- package/dist/src/server/event-emitter.js.map +1 -1
- package/dist/src/server/index.d.ts +10 -0
- package/dist/src/server/index.d.ts.map +1 -0
- package/dist/src/server/index.js +10 -0
- package/dist/src/server/index.js.map +1 -0
- package/dist/src/server/listener/index.d.ts +2 -0
- package/dist/src/server/listener/index.d.ts.map +1 -1
- package/dist/src/server/listener/index.js +2 -0
- package/dist/src/server/listener/index.js.map +1 -1
- package/dist/src/server/listener/listener-manager.d.ts +4 -5
- package/dist/src/server/listener/listener-manager.d.ts.map +1 -1
- package/dist/src/server/listener/listener-manager.js +2 -5
- package/dist/src/server/listener/listener-manager.js.map +1 -1
- package/dist/src/server/listener/transmitter/factory.d.ts +3 -4
- package/dist/src/server/listener/transmitter/factory.d.ts.map +1 -1
- package/dist/src/server/listener/transmitter/factory.js +2 -3
- package/dist/src/server/listener/transmitter/factory.js.map +1 -1
- package/dist/src/server/listener/transmitter/index.d.ts +5 -0
- package/dist/src/server/listener/transmitter/index.d.ts.map +1 -0
- package/dist/src/server/listener/transmitter/index.js +5 -0
- package/dist/src/server/listener/transmitter/index.js.map +1 -0
- package/dist/src/server/listener/transmitter/internal.d.ts +3 -22
- package/dist/src/server/listener/transmitter/internal.d.ts.map +1 -1
- package/dist/src/server/listener/transmitter/internal.js +11 -16
- package/dist/src/server/listener/transmitter/internal.js.map +1 -1
- package/dist/src/server/listener/transmitter/pull-responder.d.ts +4 -22
- package/dist/src/server/listener/transmitter/pull-responder.d.ts.map +1 -1
- package/dist/src/server/listener/transmitter/pull-responder.js +3 -7
- package/dist/src/server/listener/transmitter/pull-responder.js.map +1 -1
- package/dist/src/server/listener/transmitter/switchboard-push.d.ts +1 -2
- package/dist/src/server/listener/transmitter/switchboard-push.d.ts.map +1 -1
- package/dist/src/server/listener/transmitter/switchboard-push.js +1 -3
- package/dist/src/server/listener/transmitter/switchboard-push.js.map +1 -1
- package/dist/src/server/listener/transmitter/types.d.ts +32 -2
- package/dist/src/server/listener/transmitter/types.d.ts.map +1 -1
- package/dist/src/server/listener/types.d.ts +2 -0
- package/dist/src/server/listener/types.d.ts.map +1 -0
- package/dist/src/server/listener/types.js +2 -0
- package/dist/src/server/listener/types.js.map +1 -0
- package/dist/src/server/sync-manager.d.ts +4 -7
- package/dist/src/server/sync-manager.d.ts.map +1 -1
- package/dist/src/server/sync-manager.js +4 -7
- package/dist/src/server/sync-manager.js.map +1 -1
- package/dist/src/server/sync-unit-map.d.ts +4 -25
- package/dist/src/server/sync-unit-map.d.ts.map +1 -1
- package/dist/src/server/sync-unit-map.js +0 -1
- package/dist/src/server/sync-unit-map.js.map +1 -1
- package/dist/src/server/types.d.ts +46 -32
- package/dist/src/server/types.d.ts.map +1 -1
- package/dist/src/server/types.js +10 -12
- package/dist/src/server/types.js.map +1 -1
- package/dist/src/server/utils.d.ts +1 -2
- package/dist/src/server/utils.d.ts.map +1 -1
- package/dist/src/server/utils.js +7 -5
- package/dist/src/server/utils.js.map +1 -1
- package/dist/src/storage/browser.d.ts +2 -2
- package/dist/src/storage/browser.d.ts.map +1 -1
- package/dist/src/storage/browser.js +5 -7
- package/dist/src/storage/browser.js.map +1 -1
- package/dist/src/storage/filesystem.d.ts +3 -3
- package/dist/src/storage/filesystem.d.ts.map +1 -1
- package/dist/src/storage/filesystem.js +27 -8
- package/dist/src/storage/filesystem.js.map +1 -1
- package/dist/src/storage/index.d.ts +4 -0
- package/dist/src/storage/index.d.ts.map +1 -0
- package/dist/src/storage/index.js +4 -0
- package/dist/src/storage/index.js.map +1 -0
- package/dist/src/storage/ipfs.d.ts +2 -3
- package/dist/src/storage/ipfs.d.ts.map +1 -1
- package/dist/src/storage/ipfs.js +5 -3
- package/dist/src/storage/ipfs.js.map +1 -1
- package/dist/src/storage/memory.d.ts +3 -3
- package/dist/src/storage/memory.d.ts.map +1 -1
- package/dist/src/storage/memory.js +30 -13
- package/dist/src/storage/memory.js.map +1 -1
- package/dist/src/storage/prisma/client/edge.js +11 -7
- package/dist/src/storage/prisma/client/index.js +17 -9
- package/dist/src/storage/prisma/client/libquery_engine-darwin-arm64.dylib.node +0 -0
- package/dist/src/storage/prisma/client/package.json +1 -1
- package/dist/src/storage/prisma/client/schema.prisma +1 -1
- package/dist/src/storage/prisma/factory.d.ts +3 -2
- package/dist/src/storage/prisma/factory.d.ts.map +1 -1
- package/dist/src/storage/prisma/factory.js +6 -2
- package/dist/src/storage/prisma/factory.js.map +1 -1
- package/dist/src/storage/prisma/prisma.d.ts +4 -5
- package/dist/src/storage/prisma/prisma.d.ts.map +1 -1
- package/dist/src/storage/prisma/prisma.js +27 -20
- package/dist/src/storage/prisma/prisma.js.map +1 -1
- package/dist/src/storage/types.d.ts +1 -2
- package/dist/src/storage/types.d.ts.map +1 -1
- package/dist/src/storage/utils.d.ts +1 -1
- package/dist/src/storage/utils.d.ts.map +1 -1
- package/dist/src/utils/default-drives-manager.d.ts +1 -12
- package/dist/src/utils/default-drives-manager.d.ts.map +1 -1
- package/dist/src/utils/default-drives-manager.js +1 -2
- package/dist/src/utils/default-drives-manager.js.map +1 -1
- package/dist/src/utils/gql-transformations.d.ts +13 -5
- package/dist/src/utils/gql-transformations.d.ts.map +1 -1
- package/dist/src/utils/gql-transformations.js +10 -3
- package/dist/src/utils/gql-transformations.js.map +1 -1
- package/dist/src/utils/graphql.d.ts +4 -30
- package/dist/src/utils/graphql.d.ts.map +1 -1
- package/dist/src/utils/graphql.js +3 -4
- package/dist/src/utils/graphql.js.map +1 -1
- package/dist/src/utils/index.d.ts +8 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +8 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/logger.d.ts +2 -8
- package/dist/src/utils/logger.d.ts.map +1 -1
- package/dist/src/utils/logger.js +6 -7
- package/dist/src/utils/logger.js.map +1 -1
- package/dist/src/utils/migrations.d.ts +1 -1
- package/dist/src/utils/migrations.d.ts.map +1 -1
- package/dist/src/utils/migrations.js +7 -2
- package/dist/src/utils/migrations.js.map +1 -1
- package/dist/src/utils/misc.d.ts +2 -6
- package/dist/src/utils/misc.d.ts.map +1 -1
- package/dist/src/utils/misc.js +3 -6
- package/dist/src/utils/misc.js.map +1 -1
- package/dist/src/utils/run-asap.d.ts +7 -11
- package/dist/src/utils/run-asap.d.ts.map +1 -1
- package/dist/src/utils/run-asap.js +110 -122
- package/dist/src/utils/run-asap.js.map +1 -1
- package/dist/src/utils/types.d.ts +50 -0
- package/dist/src/utils/types.d.ts.map +1 -0
- package/dist/src/utils/types.js +2 -0
- package/dist/src/utils/types.js.map +1 -0
- package/dist/test/benchmarks/getDrive.json +10 -0
- package/dist/test/benchmarks/processOperations.bench.d.ts +2 -0
- package/dist/test/benchmarks/processOperations.bench.d.ts.map +1 -0
- package/dist/test/benchmarks/processOperations.bench.js +148 -0
- package/dist/test/benchmarks/processOperations.bench.js.map +1 -0
- package/dist/test/benchmarks/queue.bench.d.ts +2 -0
- package/dist/test/benchmarks/queue.bench.d.ts.map +1 -0
- package/dist/test/benchmarks/queue.bench.js +51 -0
- package/dist/test/benchmarks/queue.bench.js.map +1 -0
- package/dist/test/benchmarks/strands.small.json +37085 -0
- package/dist/test/cache.test.d.ts +2 -0
- package/dist/test/cache.test.d.ts.map +1 -0
- package/dist/test/cache.test.js +275 -0
- package/dist/test/cache.test.js.map +1 -0
- package/dist/test/default-remote-drives.test.d.ts +2 -0
- package/dist/test/default-remote-drives.test.d.ts.map +1 -0
- package/dist/test/default-remote-drives.test.js +445 -0
- package/dist/test/default-remote-drives.test.js.map +1 -0
- package/dist/test/drive-operations.test.d.ts +2 -0
- package/dist/test/drive-operations.test.d.ts.map +1 -0
- package/dist/test/drive-operations.test.js +134 -0
- package/dist/test/drive-operations.test.js.map +1 -0
- package/dist/test/dual-action-create.test.d.ts +2 -0
- package/dist/test/dual-action-create.test.d.ts.map +1 -0
- package/dist/test/dual-action-create.test.js +187 -0
- package/dist/test/dual-action-create.test.js.map +1 -0
- package/dist/test/dual-action-migration.test.d.ts +2 -0
- package/dist/test/dual-action-migration.test.d.ts.map +1 -0
- package/dist/test/dual-action-migration.test.js +344 -0
- package/dist/test/dual-action-migration.test.js.map +1 -0
- package/dist/test/graphql.test.d.ts +2 -0
- package/dist/test/graphql.test.d.ts.map +1 -0
- package/dist/test/graphql.test.js +9 -0
- package/dist/test/graphql.test.js.map +1 -0
- package/dist/test/index.d.ts +2 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +2 -0
- package/dist/test/index.js.map +1 -0
- package/dist/test/internal-listener.test.d.ts +2 -0
- package/dist/test/internal-listener.test.d.ts.map +1 -0
- package/dist/test/internal-listener.test.js +243 -0
- package/dist/test/internal-listener.test.js.map +1 -0
- package/dist/test/queue.test.d.ts +2 -0
- package/dist/test/queue.test.d.ts.map +1 -0
- package/dist/test/queue.test.js +324 -0
- package/dist/test/queue.test.js.map +1 -0
- package/dist/test/reactor.test.d.ts +2 -0
- package/dist/test/reactor.test.d.ts.map +1 -0
- package/dist/test/reactor.test.js +32 -0
- package/dist/test/reactor.test.js.map +1 -0
- package/dist/test/read-mode.test.d.ts +2 -0
- package/dist/test/read-mode.test.d.ts.map +1 -0
- package/dist/test/read-mode.test.js +569 -0
- package/dist/test/read-mode.test.js.map +1 -0
- package/dist/test/server/driveOperationsConflictResolution.test.d.ts +2 -0
- package/dist/test/server/driveOperationsConflictResolution.test.d.ts.map +1 -0
- package/dist/test/server/driveOperationsConflictResolution.test.js +486 -0
- package/dist/test/server/driveOperationsConflictResolution.test.js.map +1 -0
- package/dist/test/server/mergeOperations.test.d.ts +2 -0
- package/dist/test/server/mergeOperations.test.d.ts.map +1 -0
- package/dist/test/server/mergeOperations.test.js +115 -0
- package/dist/test/server/mergeOperations.test.js.map +1 -0
- package/dist/test/server/processOperations.test.d.ts +2 -0
- package/dist/test/server/processOperations.test.d.ts.map +1 -0
- package/dist/test/server/processOperations.test.js +392 -0
- package/dist/test/server/processOperations.test.js.map +1 -0
- package/dist/test/server.test.d.ts +2 -0
- package/dist/test/server.test.d.ts.map +1 -0
- package/dist/test/server.test.js +957 -0
- package/dist/test/server.test.js.map +1 -0
- package/dist/test/signature-migration.test.d.ts +2 -0
- package/dist/test/signature-migration.test.d.ts.map +1 -0
- package/dist/test/signature-migration.test.js +241 -0
- package/dist/test/signature-migration.test.js.map +1 -0
- package/dist/test/storage.test.d.ts +2 -0
- package/dist/test/storage.test.d.ts.map +1 -0
- package/dist/test/storage.test.js +522 -0
- package/dist/test/storage.test.js.map +1 -0
- package/dist/test/switchboard-push-listener.test.d.ts +2 -0
- package/dist/test/switchboard-push-listener.test.d.ts.map +1 -0
- package/dist/test/switchboard-push-listener.test.js +133 -0
- package/dist/test/switchboard-push-listener.test.js.map +1 -0
- package/dist/test/sync-manager.test.d.ts +2 -0
- package/dist/test/sync-manager.test.d.ts.map +1 -0
- package/dist/test/sync-manager.test.js +349 -0
- package/dist/test/sync-manager.test.js.map +1 -0
- package/dist/test/utils.d.ts +62 -0
- package/dist/test/utils.d.ts.map +1 -0
- package/dist/test/utils.js +158 -0
- package/dist/test/utils.js.map +1 -0
- package/dist/test/utils.test.d.ts +2 -0
- package/dist/test/utils.test.d.ts.map +1 -0
- package/dist/test/utils.test.js +86 -0
- package/dist/test/utils.test.js.map +1 -0
- package/dist/test/vitest-setup.d.ts +2 -0
- package/dist/test/vitest-setup.d.ts.map +1 -0
- package/dist/test/vitest-setup.js +5 -0
- package/dist/test/vitest-setup.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +28 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +38 -26
- package/prisma/schema.prisma +93 -0
- package/src/storage/prisma/client/default.d.ts +1 -0
- package/src/storage/prisma/client/default.js +1 -0
- package/src/storage/prisma/client/edge.d.ts +1 -0
- package/src/storage/prisma/client/edge.js +263 -0
- package/src/storage/prisma/client/index-browser.js +246 -0
- package/src/storage/prisma/client/index.d.ts +10318 -0
- package/src/storage/prisma/client/index.js +292 -0
- package/src/storage/prisma/client/libquery_engine-darwin-arm64.dylib.node +0 -0
- package/src/storage/prisma/client/libquery_engine-debian-openssl-3.0.x.so.node +0 -0
- package/src/storage/prisma/client/libquery_engine-linux-musl.so.node +0 -0
- package/src/storage/prisma/client/package.json +84 -0
- package/src/storage/prisma/client/runtime/edge-esm.js +31 -0
- package/src/storage/prisma/client/runtime/edge.js +31 -0
- package/src/storage/prisma/client/runtime/index-browser.d.ts +365 -0
- package/src/storage/prisma/client/runtime/index-browser.js +13 -0
- package/src/storage/prisma/client/runtime/library.d.ts +3273 -0
- package/src/storage/prisma/client/runtime/library.js +143 -0
- package/src/storage/prisma/client/runtime/react-native.js +80 -0
- package/src/storage/prisma/client/runtime/wasm.js +32 -0
- package/src/storage/prisma/client/schema.prisma +93 -0
- package/src/storage/prisma/client/wasm.d.ts +1 -0
- package/src/storage/prisma/client/wasm.js +246 -0
- package/dist/src/drive-document-model/gen/actions.d.ts +0 -6
- package/dist/src/drive-document-model/gen/actions.d.ts.map +0 -1
- package/dist/src/drive-document-model/gen/actions.js +0 -3
- package/dist/src/drive-document-model/gen/actions.js.map +0 -1
- package/dist/src/drive-document-model/gen/drive/object.d.ts +0 -14
- package/dist/src/drive-document-model/gen/drive/object.d.ts.map +0 -1
- package/dist/src/drive-document-model/gen/drive/object.js +0 -29
- package/dist/src/drive-document-model/gen/drive/object.js.map +0 -1
- package/dist/src/drive-document-model/gen/drive/operations.d.ts +0 -14
- package/dist/src/drive-document-model/gen/drive/operations.d.ts.map +0 -1
- package/dist/src/drive-document-model/gen/drive/operations.js +0 -2
- package/dist/src/drive-document-model/gen/drive/operations.js.map +0 -1
- package/dist/src/drive-document-model/gen/node/object.d.ts +0 -13
- package/dist/src/drive-document-model/gen/node/object.d.ts.map +0 -1
- package/dist/src/drive-document-model/gen/node/object.js +0 -26
- package/dist/src/drive-document-model/gen/node/object.js.map +0 -1
- package/dist/src/drive-document-model/gen/node/operations.d.ts +0 -13
- package/dist/src/drive-document-model/gen/node/operations.d.ts.map +0 -1
- package/dist/src/drive-document-model/gen/node/operations.js +0 -2
- package/dist/src/drive-document-model/gen/node/operations.js.map +0 -1
- package/dist/src/drive-document-model/gen/object.d.ts +0 -17
- package/dist/src/drive-document-model/gen/object.d.ts.map +0 -1
- package/dist/src/drive-document-model/gen/object.js +0 -28
- package/dist/src/drive-document-model/gen/object.js.map +0 -1
- package/dist/tsconfig.lib.tsbuildinfo +0 -1
|
@@ -0,0 +1,957 @@
|
|
|
1
|
+
import { BrowserStorage, InMemoryCache, MemoryStorage, ReactorBuilder, SynchronizationManager, addFile, addFolder, baseDocumentModels, copyNode, deleteNode, driveDocumentModelModule, driveDocumentReducer, expectUUID, setDriveName, } from "document-drive";
|
|
2
|
+
import { FilesystemStorage } from "document-drive/storage/filesystem";
|
|
3
|
+
import { PrismaStorage } from "document-drive/storage/prisma";
|
|
4
|
+
import { PrismaClient } from "document-drive/storage/prisma/client";
|
|
5
|
+
import { documentModelCreateDocument, documentModelDocumentModelModule, setModelName, } from "document-model";
|
|
6
|
+
import { createPresignedHeader, generateId } from "document-model/core";
|
|
7
|
+
import fs from "node:fs/promises";
|
|
8
|
+
import path from "path";
|
|
9
|
+
import { afterEach, beforeEach, describe, it, vi } from "vitest";
|
|
10
|
+
const documentModels = baseDocumentModels;
|
|
11
|
+
const DocumentDriveUtils = { ...driveDocumentModelModule.utils };
|
|
12
|
+
const DocumentModelUtils = documentModelDocumentModelModule.utils;
|
|
13
|
+
const FileStorageDir = path.join(__dirname, "./file-storage");
|
|
14
|
+
const prismaClient = new PrismaClient();
|
|
15
|
+
const cache = new InMemoryCache();
|
|
16
|
+
const storageLayers = [
|
|
17
|
+
["MemoryStorage", async () => new MemoryStorage()],
|
|
18
|
+
["FilesystemStorage", async () => new FilesystemStorage(FileStorageDir)],
|
|
19
|
+
[
|
|
20
|
+
"BrowserStorage",
|
|
21
|
+
async () => {
|
|
22
|
+
const storage = new BrowserStorage();
|
|
23
|
+
await storage.clear();
|
|
24
|
+
return storage;
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
["PrismaStorage", async () => new PrismaStorage(prismaClient, cache)],
|
|
28
|
+
];
|
|
29
|
+
const file = undefined;
|
|
30
|
+
// TODO import RealWorldAssets
|
|
31
|
+
// try {
|
|
32
|
+
// file = await DocumentModelsLibs.RealWorldAssets.utils.loadFromFile(
|
|
33
|
+
// "./test/rwa-document.zip",
|
|
34
|
+
// );
|
|
35
|
+
// } catch {
|
|
36
|
+
// /* empty */
|
|
37
|
+
// }
|
|
38
|
+
describe.each(storageLayers)("%s", (storageName, buildStorage) => {
|
|
39
|
+
beforeEach(async () => {
|
|
40
|
+
vi.setSystemTime(new Date("2024-01-01"));
|
|
41
|
+
cache.clear();
|
|
42
|
+
if (storageName === "FilesystemStorage") {
|
|
43
|
+
return fs.rm(FileStorageDir, { recursive: true, force: true });
|
|
44
|
+
}
|
|
45
|
+
else if (storageName === "BrowserStorage") {
|
|
46
|
+
return (await buildStorage()).clear();
|
|
47
|
+
}
|
|
48
|
+
else if (storageName === "PrismaStorage") {
|
|
49
|
+
await prismaClient.$executeRawUnsafe('DELETE FROM "Attachment";');
|
|
50
|
+
await prismaClient.$executeRawUnsafe('DELETE FROM "Operation";');
|
|
51
|
+
await prismaClient.$executeRawUnsafe('DELETE FROM "DriveDocument";');
|
|
52
|
+
await prismaClient.$executeRawUnsafe('DELETE FROM "Document";');
|
|
53
|
+
await prismaClient.$executeRawUnsafe('DELETE FROM "Drive";');
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
afterEach(async () => {
|
|
57
|
+
vi.useRealTimers();
|
|
58
|
+
if (storageName === "FilesystemStorage") {
|
|
59
|
+
return fs.rm(FileStorageDir, { recursive: true, force: true });
|
|
60
|
+
}
|
|
61
|
+
else if (storageName === "BrowserStorage") {
|
|
62
|
+
return (await buildStorage()).clear();
|
|
63
|
+
}
|
|
64
|
+
else if (storageName === "PrismaStorage") {
|
|
65
|
+
//await prismaClient.$executeRawUnsafe('DELETE FROM "Attachment";');
|
|
66
|
+
//await prismaClient.$executeRawUnsafe('DELETE FROM "Operation";');
|
|
67
|
+
//await prismaClient.$executeRawUnsafe('DELETE FROM "Document";');
|
|
68
|
+
//await prismaClient.$executeRawUnsafe('DELETE FROM "Drive";');
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
function createDocumentModelWithId(id) {
|
|
72
|
+
return {
|
|
73
|
+
...documentModelCreateDocument(),
|
|
74
|
+
header: createPresignedHeader(id, documentModelDocumentModelModule.documentModel.global.id),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
it("adds drive to server", async ({ expect }) => {
|
|
78
|
+
const driveId = generateId();
|
|
79
|
+
const server = new ReactorBuilder(documentModels)
|
|
80
|
+
.withCache(cache)
|
|
81
|
+
.withStorage(await buildStorage())
|
|
82
|
+
.build();
|
|
83
|
+
await server.addDrive({
|
|
84
|
+
id: driveId,
|
|
85
|
+
global: {
|
|
86
|
+
name: "name",
|
|
87
|
+
icon: "icon",
|
|
88
|
+
},
|
|
89
|
+
local: {
|
|
90
|
+
availableOffline: false,
|
|
91
|
+
sharingType: "PUBLIC",
|
|
92
|
+
listeners: [],
|
|
93
|
+
triggers: [],
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
const drive = await server.getDrive(driveId);
|
|
97
|
+
expect(drive.state).toStrictEqual(DocumentDriveUtils.createState({
|
|
98
|
+
global: {
|
|
99
|
+
name: "name",
|
|
100
|
+
icon: "icon",
|
|
101
|
+
nodes: [],
|
|
102
|
+
},
|
|
103
|
+
local: {
|
|
104
|
+
availableOffline: false,
|
|
105
|
+
sharingType: "PUBLIC",
|
|
106
|
+
listeners: [],
|
|
107
|
+
triggers: [],
|
|
108
|
+
},
|
|
109
|
+
}));
|
|
110
|
+
const drives = await server.getDrives();
|
|
111
|
+
expect(drives.includes(driveId)).toBeTruthy();
|
|
112
|
+
});
|
|
113
|
+
it.skipIf(!file)("adds file to server", async ({ expect }) => {
|
|
114
|
+
const driveId = generateId();
|
|
115
|
+
const documentId = generateId();
|
|
116
|
+
const server = new ReactorBuilder(documentModels)
|
|
117
|
+
.withCache(cache)
|
|
118
|
+
.withStorage(await buildStorage())
|
|
119
|
+
.build();
|
|
120
|
+
await server.addDocument(createDocumentModelWithId(documentId));
|
|
121
|
+
await server.addDrive({
|
|
122
|
+
id: driveId,
|
|
123
|
+
slug: "slug",
|
|
124
|
+
global: {
|
|
125
|
+
name: "name",
|
|
126
|
+
icon: "icon",
|
|
127
|
+
},
|
|
128
|
+
local: {
|
|
129
|
+
availableOffline: false,
|
|
130
|
+
sharingType: "public",
|
|
131
|
+
listeners: [],
|
|
132
|
+
triggers: [],
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
let drive = await server.getDrive(driveId);
|
|
136
|
+
// performs ADD_FILE operation locally
|
|
137
|
+
drive = driveDocumentReducer(drive, addFile({
|
|
138
|
+
id: documentId,
|
|
139
|
+
name: "document 1",
|
|
140
|
+
documentType: "powerhouse/document-model",
|
|
141
|
+
}));
|
|
142
|
+
// dispatches operation to server
|
|
143
|
+
const operation = drive.operations.global[0];
|
|
144
|
+
const operationResult = await server.addOperation(driveId, operation);
|
|
145
|
+
expect(operationResult.status).toBe("SUCCESS");
|
|
146
|
+
drive = await server.getDrive(driveId);
|
|
147
|
+
expect(drive.state).toStrictEqual(operationResult.document?.state);
|
|
148
|
+
expect(drive.state.global.nodes[0]).toStrictEqual({
|
|
149
|
+
id: documentId,
|
|
150
|
+
kind: "file",
|
|
151
|
+
name: "document 1",
|
|
152
|
+
documentType: "powerhouse/document-model",
|
|
153
|
+
parentFolder: null,
|
|
154
|
+
synchronizationUnits: [
|
|
155
|
+
{
|
|
156
|
+
branch: "main",
|
|
157
|
+
scope: "global",
|
|
158
|
+
syncId: expectUUID(expect),
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
branch: "main",
|
|
162
|
+
scope: "local",
|
|
163
|
+
syncId: expectUUID(expect),
|
|
164
|
+
},
|
|
165
|
+
],
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
it("adds document as child when file is added to server", async ({ expect, }) => {
|
|
169
|
+
const driveId = generateId();
|
|
170
|
+
const documentId = generateId();
|
|
171
|
+
const storage = await buildStorage();
|
|
172
|
+
const server = new ReactorBuilder(documentModels)
|
|
173
|
+
.withCache(cache)
|
|
174
|
+
.withStorage(storage)
|
|
175
|
+
.build();
|
|
176
|
+
await server.addDrive({
|
|
177
|
+
id: driveId,
|
|
178
|
+
slug: "slug",
|
|
179
|
+
global: {
|
|
180
|
+
name: "name",
|
|
181
|
+
icon: "icon",
|
|
182
|
+
},
|
|
183
|
+
local: {
|
|
184
|
+
availableOffline: false,
|
|
185
|
+
sharingType: "public",
|
|
186
|
+
listeners: [],
|
|
187
|
+
triggers: [],
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
await server.addDocument(createDocumentModelWithId(documentId));
|
|
191
|
+
await expect(storage.getChildren(driveId)).resolves.toStrictEqual([]);
|
|
192
|
+
let drive = await server.getDrive(driveId);
|
|
193
|
+
drive = driveDocumentReducer(drive, addFile({
|
|
194
|
+
id: documentId,
|
|
195
|
+
name: "document 1",
|
|
196
|
+
documentType: "powerhouse/document-model",
|
|
197
|
+
}));
|
|
198
|
+
const operation = drive.operations.global[0];
|
|
199
|
+
const result = await server.addOperation(driveId, operation);
|
|
200
|
+
if (result.error) {
|
|
201
|
+
console.error(result.error);
|
|
202
|
+
throw result.error;
|
|
203
|
+
}
|
|
204
|
+
expect(result.status).toBe("SUCCESS");
|
|
205
|
+
await expect(storage.getChildren(driveId)).resolves.toStrictEqual([documentId]);
|
|
206
|
+
const document = await server.getDocument(documentId);
|
|
207
|
+
expect(document.header.documentType).toBe("powerhouse/document-model");
|
|
208
|
+
expect(document.state).toStrictEqual(DocumentModelUtils.createState());
|
|
209
|
+
const driveDocuments = await server.getDocuments(driveId);
|
|
210
|
+
expect(driveDocuments).toStrictEqual([documentId]);
|
|
211
|
+
});
|
|
212
|
+
it("adds document as child even if document is not previously added to server", async ({ expect, }) => {
|
|
213
|
+
const driveId = generateId();
|
|
214
|
+
const documentId = generateId();
|
|
215
|
+
const storage = await buildStorage();
|
|
216
|
+
const server = new ReactorBuilder(documentModels)
|
|
217
|
+
.withCache(cache)
|
|
218
|
+
.withStorage(storage)
|
|
219
|
+
.build();
|
|
220
|
+
await server.addDrive({
|
|
221
|
+
id: driveId,
|
|
222
|
+
slug: "slug",
|
|
223
|
+
global: {
|
|
224
|
+
name: "name",
|
|
225
|
+
icon: "icon",
|
|
226
|
+
},
|
|
227
|
+
local: {
|
|
228
|
+
availableOffline: false,
|
|
229
|
+
sharingType: "public",
|
|
230
|
+
listeners: [],
|
|
231
|
+
triggers: [],
|
|
232
|
+
},
|
|
233
|
+
});
|
|
234
|
+
await expect(storage.getChildren(driveId)).resolves.toStrictEqual([]);
|
|
235
|
+
let drive = await server.getDrive(driveId);
|
|
236
|
+
drive = driveDocumentReducer(drive, addFile({
|
|
237
|
+
id: documentId,
|
|
238
|
+
name: "document 1",
|
|
239
|
+
documentType: "powerhouse/document-model",
|
|
240
|
+
}));
|
|
241
|
+
const operation = drive.operations.global[0];
|
|
242
|
+
const result = await server.addOperation(driveId, operation);
|
|
243
|
+
if (result.error) {
|
|
244
|
+
console.error(result.error);
|
|
245
|
+
throw result.error;
|
|
246
|
+
}
|
|
247
|
+
expect(result.status).toBe("SUCCESS");
|
|
248
|
+
await expect(storage.getChildren(driveId)).resolves.toStrictEqual([documentId]);
|
|
249
|
+
// const document = await server.getDocument(documentId);
|
|
250
|
+
// expect(document.documentType).toBe("powerhouse/document-model");
|
|
251
|
+
// expect(document.state).toStrictEqual(DocumentModelUtils.createState());
|
|
252
|
+
// const driveDocuments = await server.getDocuments(driveId);
|
|
253
|
+
// expect(driveDocuments).toStrictEqual([documentId]);
|
|
254
|
+
});
|
|
255
|
+
it("removes file as child", async ({ expect }) => {
|
|
256
|
+
const driveId = generateId();
|
|
257
|
+
const documentId = generateId();
|
|
258
|
+
const storage = await buildStorage();
|
|
259
|
+
const server = new ReactorBuilder(documentModels)
|
|
260
|
+
.withCache(cache)
|
|
261
|
+
.withStorage(storage)
|
|
262
|
+
.build();
|
|
263
|
+
await server.addDocument(createDocumentModelWithId(documentId));
|
|
264
|
+
await server.addDrive({
|
|
265
|
+
id: driveId,
|
|
266
|
+
slug: "slug",
|
|
267
|
+
global: {
|
|
268
|
+
name: "name",
|
|
269
|
+
icon: "icon",
|
|
270
|
+
},
|
|
271
|
+
local: {
|
|
272
|
+
availableOffline: false,
|
|
273
|
+
sharingType: "public",
|
|
274
|
+
listeners: [],
|
|
275
|
+
triggers: [],
|
|
276
|
+
},
|
|
277
|
+
});
|
|
278
|
+
let drive = await server.getDrive(driveId);
|
|
279
|
+
// adds file
|
|
280
|
+
drive = driveDocumentReducer(drive, addFile({
|
|
281
|
+
id: documentId,
|
|
282
|
+
name: "document 1",
|
|
283
|
+
documentType: "powerhouse/document-model",
|
|
284
|
+
}));
|
|
285
|
+
let result = await server.addOperation(driveId, drive.operations.global[0]);
|
|
286
|
+
expect(result.status).toBe("SUCCESS");
|
|
287
|
+
await expect(storage.getChildren(driveId)).resolves.toStrictEqual([documentId]);
|
|
288
|
+
// removes file
|
|
289
|
+
drive = driveDocumentReducer(drive, deleteNode({
|
|
290
|
+
id: documentId,
|
|
291
|
+
}));
|
|
292
|
+
result = await server.addOperation(driveId, drive.operations.global[1]);
|
|
293
|
+
expect(result.status).toBe("SUCCESS");
|
|
294
|
+
await expect(storage.getChildren(driveId)).resolves.toStrictEqual([]);
|
|
295
|
+
const serverDrive = await server.getDrive(driveId);
|
|
296
|
+
expect(serverDrive.state.global.nodes).toStrictEqual([]);
|
|
297
|
+
});
|
|
298
|
+
it("deletes document node when file is removed from server", async ({ expect, }) => {
|
|
299
|
+
const driveId = generateId();
|
|
300
|
+
const documentId = generateId();
|
|
301
|
+
const server = new ReactorBuilder(documentModels)
|
|
302
|
+
.withCache(cache)
|
|
303
|
+
.withStorage(await buildStorage())
|
|
304
|
+
.build();
|
|
305
|
+
await server.addDrive({
|
|
306
|
+
id: driveId,
|
|
307
|
+
slug: "slug",
|
|
308
|
+
global: {
|
|
309
|
+
name: "name",
|
|
310
|
+
icon: "icon",
|
|
311
|
+
},
|
|
312
|
+
local: {
|
|
313
|
+
availableOffline: false,
|
|
314
|
+
sharingType: "public",
|
|
315
|
+
listeners: [],
|
|
316
|
+
triggers: [],
|
|
317
|
+
},
|
|
318
|
+
});
|
|
319
|
+
let drive = await server.getDrive(driveId);
|
|
320
|
+
drive = driveDocumentReducer(drive, addFile({
|
|
321
|
+
id: documentId,
|
|
322
|
+
name: "document 1",
|
|
323
|
+
documentType: "powerhouse/document-model",
|
|
324
|
+
}));
|
|
325
|
+
drive = driveDocumentReducer(drive, deleteNode({
|
|
326
|
+
id: documentId,
|
|
327
|
+
}));
|
|
328
|
+
const result = await server.addOperations(driveId, drive.operations.global);
|
|
329
|
+
expect(result.status).toBe("SUCCESS");
|
|
330
|
+
const documents = await server.getDocuments(driveId);
|
|
331
|
+
expect(documents).toStrictEqual([]);
|
|
332
|
+
await expect(server.getDocument(documentId)).rejects.toThrowError(`Document with id ${documentId} not found`);
|
|
333
|
+
});
|
|
334
|
+
it("removes documents as child when it is removed from inside a folder on a drive", async ({ expect, }) => {
|
|
335
|
+
const driveId = generateId();
|
|
336
|
+
const folderId = generateId();
|
|
337
|
+
const documentId = generateId();
|
|
338
|
+
const storage = await buildStorage();
|
|
339
|
+
const server = new ReactorBuilder(documentModels)
|
|
340
|
+
.withCache(cache)
|
|
341
|
+
.withStorage(storage)
|
|
342
|
+
.build();
|
|
343
|
+
await server.addDrive({
|
|
344
|
+
id: driveId,
|
|
345
|
+
slug: "slug",
|
|
346
|
+
global: {
|
|
347
|
+
name: "name",
|
|
348
|
+
icon: "icon",
|
|
349
|
+
},
|
|
350
|
+
local: {
|
|
351
|
+
availableOffline: false,
|
|
352
|
+
sharingType: "public",
|
|
353
|
+
listeners: [],
|
|
354
|
+
triggers: [],
|
|
355
|
+
},
|
|
356
|
+
});
|
|
357
|
+
let drive = await server.getDrive(driveId);
|
|
358
|
+
const document = createDocumentModelWithId(documentId);
|
|
359
|
+
await server.addDocument(document);
|
|
360
|
+
drive = driveDocumentReducer(drive, addFolder({
|
|
361
|
+
id: folderId,
|
|
362
|
+
name: "document 1",
|
|
363
|
+
}));
|
|
364
|
+
drive = driveDocumentReducer(drive, addFile({
|
|
365
|
+
id: documentId,
|
|
366
|
+
name: "document 1",
|
|
367
|
+
documentType: "powerhouse/document-model",
|
|
368
|
+
parentFolder: folderId,
|
|
369
|
+
}));
|
|
370
|
+
drive = driveDocumentReducer(drive, deleteNode({
|
|
371
|
+
id: folderId,
|
|
372
|
+
}));
|
|
373
|
+
const result = await server.addOperations(driveId, drive.operations.global);
|
|
374
|
+
expect(result.status).toBe("SUCCESS");
|
|
375
|
+
await expect(storage.getChildren(driveId)).resolves.toStrictEqual([]);
|
|
376
|
+
const documents = await server.getDocuments(driveId);
|
|
377
|
+
expect(documents).toStrictEqual([]);
|
|
378
|
+
await expect(server.getDocument(documentId)).resolves.toMatchObject(document);
|
|
379
|
+
});
|
|
380
|
+
it("deletes drive from server", async ({ expect }) => {
|
|
381
|
+
const driveId = generateId();
|
|
382
|
+
const server = new ReactorBuilder(documentModels)
|
|
383
|
+
.withCache(cache)
|
|
384
|
+
.withStorage(await buildStorage())
|
|
385
|
+
.build();
|
|
386
|
+
await server.addDrive({
|
|
387
|
+
id: driveId,
|
|
388
|
+
slug: "slug",
|
|
389
|
+
global: {
|
|
390
|
+
name: "name",
|
|
391
|
+
icon: "icon",
|
|
392
|
+
},
|
|
393
|
+
local: {
|
|
394
|
+
availableOffline: false,
|
|
395
|
+
sharingType: "public",
|
|
396
|
+
listeners: [],
|
|
397
|
+
triggers: [],
|
|
398
|
+
},
|
|
399
|
+
});
|
|
400
|
+
await server.deleteDrive(driveId);
|
|
401
|
+
const drives = await server.getDrives();
|
|
402
|
+
expect(drives).toStrictEqual([]);
|
|
403
|
+
});
|
|
404
|
+
it("deletes documents when drive is deleted from server", async ({ expect, }) => {
|
|
405
|
+
const driveId = generateId();
|
|
406
|
+
const documentId = generateId();
|
|
407
|
+
const server = new ReactorBuilder(documentModels)
|
|
408
|
+
.withCache(cache)
|
|
409
|
+
.withStorage(await buildStorage())
|
|
410
|
+
.build();
|
|
411
|
+
await server.addDrive({
|
|
412
|
+
id: driveId,
|
|
413
|
+
slug: "slug",
|
|
414
|
+
global: {
|
|
415
|
+
name: "name",
|
|
416
|
+
icon: "icon",
|
|
417
|
+
},
|
|
418
|
+
local: {
|
|
419
|
+
availableOffline: false,
|
|
420
|
+
sharingType: "public",
|
|
421
|
+
listeners: [],
|
|
422
|
+
triggers: [],
|
|
423
|
+
},
|
|
424
|
+
});
|
|
425
|
+
const document = createDocumentModelWithId(documentId);
|
|
426
|
+
await server.addDocument(document);
|
|
427
|
+
let drive = await server.getDrive(driveId);
|
|
428
|
+
drive = driveDocumentReducer(drive, addFile({
|
|
429
|
+
id: documentId,
|
|
430
|
+
name: "document 1",
|
|
431
|
+
documentType: "powerhouse/document-model",
|
|
432
|
+
}));
|
|
433
|
+
const result = await server.addOperation(driveId, drive.operations.global[0]);
|
|
434
|
+
expect(result.status).toBe("SUCCESS");
|
|
435
|
+
await server.deleteDrive(driveId);
|
|
436
|
+
const documents = await server.getDocuments(driveId);
|
|
437
|
+
expect(documents).toStrictEqual([]);
|
|
438
|
+
await expect(server.getDocument(documentId)).resolves.toMatchObject(document);
|
|
439
|
+
});
|
|
440
|
+
it("renames drive", async ({ expect }) => {
|
|
441
|
+
const driveId = generateId();
|
|
442
|
+
const server = new ReactorBuilder(documentModels)
|
|
443
|
+
.withCache(cache)
|
|
444
|
+
.withStorage(await buildStorage())
|
|
445
|
+
.build();
|
|
446
|
+
await server.addDrive({
|
|
447
|
+
id: driveId,
|
|
448
|
+
slug: "slug",
|
|
449
|
+
global: {
|
|
450
|
+
name: "name",
|
|
451
|
+
icon: "icon",
|
|
452
|
+
},
|
|
453
|
+
local: {
|
|
454
|
+
availableOffline: false,
|
|
455
|
+
sharingType: "public",
|
|
456
|
+
listeners: [],
|
|
457
|
+
triggers: [],
|
|
458
|
+
},
|
|
459
|
+
});
|
|
460
|
+
let drive = await server.getDrive(driveId);
|
|
461
|
+
drive = driveDocumentReducer(drive, setDriveName({
|
|
462
|
+
name: "new name",
|
|
463
|
+
}));
|
|
464
|
+
const result = await server.addOperation(driveId, drive.operations.global[0]);
|
|
465
|
+
expect(result.status).toBe("SUCCESS");
|
|
466
|
+
drive = await server.getDrive(driveId);
|
|
467
|
+
expect(drive.state.global.name).toBe("new name");
|
|
468
|
+
});
|
|
469
|
+
it("copies document when file is copied drive", async ({ expect }) => {
|
|
470
|
+
const driveId = generateId();
|
|
471
|
+
const folder1Id = generateId();
|
|
472
|
+
const folder2Id = generateId();
|
|
473
|
+
const document1Id = generateId();
|
|
474
|
+
const document2Id = generateId();
|
|
475
|
+
const server = new ReactorBuilder(documentModels)
|
|
476
|
+
.withCache(cache)
|
|
477
|
+
.withStorage(await buildStorage())
|
|
478
|
+
.build();
|
|
479
|
+
await server.addDocument(createDocumentModelWithId(document1Id));
|
|
480
|
+
await server.addDocument(createDocumentModelWithId(document2Id));
|
|
481
|
+
await server.addDrive({
|
|
482
|
+
id: driveId,
|
|
483
|
+
slug: "drive",
|
|
484
|
+
global: {
|
|
485
|
+
name: "name",
|
|
486
|
+
icon: "icon",
|
|
487
|
+
},
|
|
488
|
+
local: {
|
|
489
|
+
availableOffline: false,
|
|
490
|
+
sharingType: "public",
|
|
491
|
+
listeners: [],
|
|
492
|
+
triggers: [],
|
|
493
|
+
},
|
|
494
|
+
});
|
|
495
|
+
let drive = await server.getDrive(driveId);
|
|
496
|
+
drive = driveDocumentReducer(drive, addFolder({
|
|
497
|
+
id: folder1Id,
|
|
498
|
+
name: "1",
|
|
499
|
+
}));
|
|
500
|
+
drive = driveDocumentReducer(drive, addFolder({
|
|
501
|
+
id: folder2Id,
|
|
502
|
+
name: "2",
|
|
503
|
+
}));
|
|
504
|
+
drive = driveDocumentReducer(drive, addFile({
|
|
505
|
+
id: document1Id,
|
|
506
|
+
name: "1.1",
|
|
507
|
+
documentType: "powerhouse/document-model",
|
|
508
|
+
parentFolder: folder1Id,
|
|
509
|
+
}));
|
|
510
|
+
drive = driveDocumentReducer(drive, copyNode({
|
|
511
|
+
srcId: document1Id,
|
|
512
|
+
targetId: document2Id,
|
|
513
|
+
targetName: "2.2",
|
|
514
|
+
targetParentFolder: folder2Id,
|
|
515
|
+
}));
|
|
516
|
+
vi.useRealTimers();
|
|
517
|
+
const result = await server.addOperations(driveId, drive.operations.global);
|
|
518
|
+
expect(result.status).toBe("SUCCESS");
|
|
519
|
+
drive = await server.getDrive(driveId);
|
|
520
|
+
const document = await server.getDocument(document1Id);
|
|
521
|
+
const documentB = await server.getDocument(document2Id);
|
|
522
|
+
// slugs have to change, as they are unique
|
|
523
|
+
expect(document.header.slug).not.toBe(documentB.header.slug);
|
|
524
|
+
// compare everything but the slug + id (which are supposed to be different)
|
|
525
|
+
const { header: { slug, id, ...restHeader }, ...rest } = document;
|
|
526
|
+
const { header: { slug: slug2, id: id2, ...restHeader2 }, ...rest2 } = documentB;
|
|
527
|
+
expect(rest).toStrictEqual(rest2);
|
|
528
|
+
expect(restHeader).toStrictEqual(restHeader2);
|
|
529
|
+
expect(id).toBe(document1Id);
|
|
530
|
+
expect(slug).toBe(document1Id);
|
|
531
|
+
expect(id2).toBe(document2Id);
|
|
532
|
+
expect(slug2).toBe(document2Id);
|
|
533
|
+
});
|
|
534
|
+
it("adds document operation", async ({ expect }) => {
|
|
535
|
+
const driveId = generateId();
|
|
536
|
+
const documentId = generateId();
|
|
537
|
+
const server = new ReactorBuilder(documentModels)
|
|
538
|
+
.withCache(cache)
|
|
539
|
+
.withStorage(await buildStorage())
|
|
540
|
+
.build();
|
|
541
|
+
await server.addDrive({
|
|
542
|
+
id: driveId,
|
|
543
|
+
slug: "slug",
|
|
544
|
+
global: {
|
|
545
|
+
name: "name",
|
|
546
|
+
icon: "icon",
|
|
547
|
+
},
|
|
548
|
+
local: {
|
|
549
|
+
availableOffline: false,
|
|
550
|
+
sharingType: "public",
|
|
551
|
+
listeners: [],
|
|
552
|
+
triggers: [],
|
|
553
|
+
},
|
|
554
|
+
});
|
|
555
|
+
let drive = await server.getDrive(driveId);
|
|
556
|
+
await server.addDocument(createDocumentModelWithId(documentId));
|
|
557
|
+
// adds file
|
|
558
|
+
drive = driveDocumentReducer(drive, addFile({
|
|
559
|
+
id: documentId,
|
|
560
|
+
name: "document 1",
|
|
561
|
+
documentType: "powerhouse/document-model",
|
|
562
|
+
}));
|
|
563
|
+
await server.addOperation(driveId, drive.operations.global[0]);
|
|
564
|
+
let document = await server.getDocument(documentId);
|
|
565
|
+
document = documentModelDocumentModelModule.reducer(document, setModelName({ name: "Test" }));
|
|
566
|
+
const operation = document.operations.global[0];
|
|
567
|
+
const result = await server.addOperation(documentId, operation);
|
|
568
|
+
expect(result.error).toBeUndefined();
|
|
569
|
+
expect(result.status).toBe("SUCCESS");
|
|
570
|
+
expect(result.operations[0]).toStrictEqual(expect.objectContaining(operation));
|
|
571
|
+
const storedDocument = await server.getDocument(documentId);
|
|
572
|
+
expect(storedDocument.state).toStrictEqual(document.state);
|
|
573
|
+
expect(storedDocument.operations).toMatchObject(document.operations);
|
|
574
|
+
});
|
|
575
|
+
it("adds document operations", async ({ expect }) => {
|
|
576
|
+
const driveId = generateId();
|
|
577
|
+
const server = new ReactorBuilder(documentModels)
|
|
578
|
+
.withCache(cache)
|
|
579
|
+
.withStorage(await buildStorage())
|
|
580
|
+
.build();
|
|
581
|
+
let document = documentModelCreateDocument();
|
|
582
|
+
const documentId = document.header.id;
|
|
583
|
+
// adds document
|
|
584
|
+
await server.addDocument(document);
|
|
585
|
+
document = await server.getDocument(documentId);
|
|
586
|
+
document = documentModelDocumentModelModule.reducer(document, documentModelDocumentModelModule.actions.setModelName({ name: "Test" }));
|
|
587
|
+
document = documentModelDocumentModelModule.reducer(document, documentModelDocumentModelModule.actions.setStateSchema({
|
|
588
|
+
schema: 'type TestState {\n "Add your global state fields here"\n _placeholder: String\n}',
|
|
589
|
+
scope: "global",
|
|
590
|
+
}));
|
|
591
|
+
const operations = document.operations.global;
|
|
592
|
+
const result = await server.addOperations(documentId, operations);
|
|
593
|
+
expect(result.error).toBeUndefined();
|
|
594
|
+
expect(result.status).toBe("SUCCESS");
|
|
595
|
+
expect(result.operations).toStrictEqual(expect.objectContaining(operations));
|
|
596
|
+
const storedDocument = await server.getDocument(driveId, documentId);
|
|
597
|
+
expect(storedDocument.state).toStrictEqual(document.state);
|
|
598
|
+
expect(storedDocument.operations).toMatchObject(document.operations);
|
|
599
|
+
});
|
|
600
|
+
it("adds drive operations", async ({ expect }) => {
|
|
601
|
+
const driveId = generateId();
|
|
602
|
+
const server = new ReactorBuilder(documentModels)
|
|
603
|
+
.withCache(cache)
|
|
604
|
+
.withStorage(await buildStorage())
|
|
605
|
+
.build();
|
|
606
|
+
await server.addDrive({
|
|
607
|
+
id: driveId,
|
|
608
|
+
slug: "slug",
|
|
609
|
+
global: {
|
|
610
|
+
name: "name",
|
|
611
|
+
icon: "icon",
|
|
612
|
+
},
|
|
613
|
+
local: {
|
|
614
|
+
availableOffline: false,
|
|
615
|
+
sharingType: "public",
|
|
616
|
+
listeners: [],
|
|
617
|
+
triggers: [],
|
|
618
|
+
},
|
|
619
|
+
});
|
|
620
|
+
let drive = await server.getDrive(driveId);
|
|
621
|
+
drive = driveDocumentReducer(drive, addFolder({ id: generateId(), name: "folder 1" }));
|
|
622
|
+
drive = driveDocumentReducer(drive, addFolder({ id: generateId(), name: "folder 2" }));
|
|
623
|
+
const operations = drive.operations.global;
|
|
624
|
+
const result = await server.addDriveOperations(driveId, operations);
|
|
625
|
+
expect(result.status).toBe("SUCCESS");
|
|
626
|
+
expect(result.operations).toStrictEqual(expect.objectContaining(operations));
|
|
627
|
+
const storedDrive = await server.getDrive(driveId);
|
|
628
|
+
expect(storedDrive.state).toStrictEqual(drive.state);
|
|
629
|
+
expect(storedDrive.operations).toMatchObject(drive.operations);
|
|
630
|
+
});
|
|
631
|
+
it("saves operation context", async ({ expect }) => {
|
|
632
|
+
const driveId = generateId();
|
|
633
|
+
const documentId = generateId();
|
|
634
|
+
const server = new ReactorBuilder(documentModels)
|
|
635
|
+
.withCache(cache)
|
|
636
|
+
.withStorage(await buildStorage())
|
|
637
|
+
.build();
|
|
638
|
+
await server.addDrive({
|
|
639
|
+
id: driveId,
|
|
640
|
+
slug: "slug",
|
|
641
|
+
global: {
|
|
642
|
+
name: "name",
|
|
643
|
+
icon: "icon",
|
|
644
|
+
},
|
|
645
|
+
local: {
|
|
646
|
+
availableOffline: false,
|
|
647
|
+
sharingType: "public",
|
|
648
|
+
listeners: [],
|
|
649
|
+
triggers: [],
|
|
650
|
+
},
|
|
651
|
+
});
|
|
652
|
+
let drive = await server.getDrive(driveId);
|
|
653
|
+
const context = {
|
|
654
|
+
signer: {
|
|
655
|
+
user: {
|
|
656
|
+
address: "123",
|
|
657
|
+
networkId: "1",
|
|
658
|
+
chainId: 1,
|
|
659
|
+
},
|
|
660
|
+
app: {
|
|
661
|
+
name: "name",
|
|
662
|
+
key: "key",
|
|
663
|
+
},
|
|
664
|
+
signatures: ["test"],
|
|
665
|
+
},
|
|
666
|
+
};
|
|
667
|
+
drive = driveDocumentReducer(drive, {
|
|
668
|
+
...addFile({
|
|
669
|
+
id: documentId,
|
|
670
|
+
name: "document 1",
|
|
671
|
+
documentType: "powerhouse/document-model",
|
|
672
|
+
}),
|
|
673
|
+
context,
|
|
674
|
+
});
|
|
675
|
+
// dispatches operation to server
|
|
676
|
+
const operation = drive.operations.global[0];
|
|
677
|
+
const operationResult = await server.addOperation(driveId, operation);
|
|
678
|
+
expect(operationResult.status).toBe("SUCCESS");
|
|
679
|
+
drive = await server.getDrive(driveId);
|
|
680
|
+
expect(drive.operations.global[0]?.action?.context).toStrictEqual(context);
|
|
681
|
+
});
|
|
682
|
+
it("get drives by slug", async ({ expect }) => {
|
|
683
|
+
const driveId1 = generateId();
|
|
684
|
+
const driveId2 = generateId();
|
|
685
|
+
const driveId3 = generateId();
|
|
686
|
+
const driveId4 = generateId();
|
|
687
|
+
const server = new ReactorBuilder(documentModels)
|
|
688
|
+
.withCache(cache)
|
|
689
|
+
.withStorage(await buildStorage())
|
|
690
|
+
.build();
|
|
691
|
+
const addDrive = (driveId, slug) => server.addDrive({
|
|
692
|
+
id: driveId,
|
|
693
|
+
slug,
|
|
694
|
+
global: {
|
|
695
|
+
name: "name",
|
|
696
|
+
icon: "icon",
|
|
697
|
+
},
|
|
698
|
+
local: {
|
|
699
|
+
availableOffline: false,
|
|
700
|
+
sharingType: "public",
|
|
701
|
+
listeners: [],
|
|
702
|
+
triggers: [],
|
|
703
|
+
},
|
|
704
|
+
});
|
|
705
|
+
await addDrive(driveId1, "slug1");
|
|
706
|
+
await addDrive(driveId2, "slug2");
|
|
707
|
+
await addDrive(driveId3, "slug3");
|
|
708
|
+
// add drive with the same slug as the first drive, which should throw an error
|
|
709
|
+
try {
|
|
710
|
+
await addDrive(driveId4, "slug1");
|
|
711
|
+
throw new Error("created drive with duplicate slug");
|
|
712
|
+
}
|
|
713
|
+
catch (error) {
|
|
714
|
+
expect(error.documentId).toContain(driveId4);
|
|
715
|
+
}
|
|
716
|
+
let drive = await server.getDriveBySlug("slug1");
|
|
717
|
+
expect(drive.header.id).toBe(driveId1);
|
|
718
|
+
drive = await server.getDriveBySlug("slug2");
|
|
719
|
+
expect(drive.header.id).toBe(driveId2);
|
|
720
|
+
drive = await server.getDriveBySlug("slug3");
|
|
721
|
+
expect(drive.header.id).toBe(driveId3);
|
|
722
|
+
});
|
|
723
|
+
it.skipIf(!file)("import document from zip", async ({ expect }) => {
|
|
724
|
+
const driveId = generateId();
|
|
725
|
+
const storage = await buildStorage();
|
|
726
|
+
const server = new ReactorBuilder(documentModels)
|
|
727
|
+
.withCache(cache)
|
|
728
|
+
.withStorage(storage)
|
|
729
|
+
.build();
|
|
730
|
+
const drive = await server.addDrive({
|
|
731
|
+
id: driveId,
|
|
732
|
+
slug: "slug",
|
|
733
|
+
global: {
|
|
734
|
+
name: "name",
|
|
735
|
+
icon: "icon",
|
|
736
|
+
},
|
|
737
|
+
local: {
|
|
738
|
+
availableOffline: false,
|
|
739
|
+
sharingType: "public",
|
|
740
|
+
listeners: [],
|
|
741
|
+
triggers: [],
|
|
742
|
+
},
|
|
743
|
+
});
|
|
744
|
+
const documentId = generateId();
|
|
745
|
+
await server.addDocument({
|
|
746
|
+
...file,
|
|
747
|
+
header: createPresignedHeader(documentId, file.header.documentType),
|
|
748
|
+
});
|
|
749
|
+
const action = addFile({
|
|
750
|
+
id: documentId,
|
|
751
|
+
name: "name",
|
|
752
|
+
parentFolder: null,
|
|
753
|
+
documentType: file.header.documentType,
|
|
754
|
+
});
|
|
755
|
+
const result = await server.addAction(driveId, action);
|
|
756
|
+
expect(result.status).toBe("SUCCESS");
|
|
757
|
+
const document = await server.getDocument(documentId);
|
|
758
|
+
expect(document).toStrictEqual(file);
|
|
759
|
+
});
|
|
760
|
+
it("should get synchronization units revision", async ({ expect }) => {
|
|
761
|
+
const driveId = generateId();
|
|
762
|
+
const documentId = generateId();
|
|
763
|
+
const storage = await buildStorage();
|
|
764
|
+
const cache = new InMemoryCache();
|
|
765
|
+
const syncManager = new SynchronizationManager(storage, storage, cache, documentModels);
|
|
766
|
+
const server = new ReactorBuilder(documentModels)
|
|
767
|
+
.withCache(cache)
|
|
768
|
+
.withStorage(storage)
|
|
769
|
+
.withSynchronizationManager(syncManager)
|
|
770
|
+
.build();
|
|
771
|
+
await server.addDrive({
|
|
772
|
+
id: driveId,
|
|
773
|
+
slug: "slug",
|
|
774
|
+
global: {
|
|
775
|
+
name: "name",
|
|
776
|
+
icon: "icon",
|
|
777
|
+
},
|
|
778
|
+
local: {
|
|
779
|
+
availableOffline: false,
|
|
780
|
+
sharingType: "public",
|
|
781
|
+
listeners: [],
|
|
782
|
+
triggers: [],
|
|
783
|
+
},
|
|
784
|
+
});
|
|
785
|
+
let drive = await server.getDrive(driveId);
|
|
786
|
+
const syncUnitsInitial = await syncManager.getSynchronizationUnits(driveId, undefined, ["global"]);
|
|
787
|
+
expect(syncUnitsInitial).toStrictEqual([
|
|
788
|
+
{
|
|
789
|
+
documentId: drive.header.id,
|
|
790
|
+
documentType: "powerhouse/document-drive",
|
|
791
|
+
scope: "global",
|
|
792
|
+
branch: "main",
|
|
793
|
+
lastUpdated: "2024-01-01T00:00:00.000Z",
|
|
794
|
+
revision: 0,
|
|
795
|
+
},
|
|
796
|
+
]);
|
|
797
|
+
const storageUnitsInitial = await storage.findStorageUnitsBy({}, 10);
|
|
798
|
+
expect(storageUnitsInitial.units).toHaveLength(4);
|
|
799
|
+
await server.addDocument(createDocumentModelWithId(documentId));
|
|
800
|
+
// adds file
|
|
801
|
+
drive = driveDocumentReducer(drive, addFile({
|
|
802
|
+
id: documentId,
|
|
803
|
+
name: "document 1",
|
|
804
|
+
documentType: "powerhouse/document-model",
|
|
805
|
+
}));
|
|
806
|
+
await server.addOperation(driveId, drive.operations.global[0]);
|
|
807
|
+
let document = await server.getDocument(documentId);
|
|
808
|
+
document = documentModelDocumentModelModule.reducer(document, setModelName({ name: "Test" }));
|
|
809
|
+
const operation = document.operations.global[0];
|
|
810
|
+
await server.addOperation(documentId, operation);
|
|
811
|
+
await server.getDocument(documentId);
|
|
812
|
+
const syncUnits = await syncManager.getSynchronizationUnits(driveId, undefined, ["global"]);
|
|
813
|
+
expect(syncUnits).toStrictEqual([
|
|
814
|
+
{
|
|
815
|
+
documentId: drive.header.id,
|
|
816
|
+
documentType: "powerhouse/document-drive",
|
|
817
|
+
scope: "global",
|
|
818
|
+
branch: "main",
|
|
819
|
+
lastUpdated: "2024-01-01T00:00:00.000Z",
|
|
820
|
+
revision: 1,
|
|
821
|
+
},
|
|
822
|
+
{
|
|
823
|
+
documentId: documentId,
|
|
824
|
+
documentType: "powerhouse/document-model",
|
|
825
|
+
scope: "global",
|
|
826
|
+
branch: "main",
|
|
827
|
+
lastUpdated: "2024-01-01T00:00:00.000Z",
|
|
828
|
+
revision: 1,
|
|
829
|
+
},
|
|
830
|
+
]);
|
|
831
|
+
const storageUnits = await storage.findStorageUnitsBy({}, 10);
|
|
832
|
+
expect(storageUnits.units).toHaveLength(8);
|
|
833
|
+
});
|
|
834
|
+
it("should store all operation attributes", async ({ expect }) => {
|
|
835
|
+
const driveId = generateId();
|
|
836
|
+
const documentId = generateId();
|
|
837
|
+
const storage = await buildStorage();
|
|
838
|
+
const server = new ReactorBuilder(documentModels)
|
|
839
|
+
.withCache(cache)
|
|
840
|
+
.withStorage(storage)
|
|
841
|
+
.build();
|
|
842
|
+
await server.addDrive({
|
|
843
|
+
id: driveId,
|
|
844
|
+
slug: "slug",
|
|
845
|
+
global: {
|
|
846
|
+
name: "name",
|
|
847
|
+
icon: "icon",
|
|
848
|
+
},
|
|
849
|
+
local: {
|
|
850
|
+
availableOffline: false,
|
|
851
|
+
sharingType: "public",
|
|
852
|
+
listeners: [],
|
|
853
|
+
triggers: [],
|
|
854
|
+
},
|
|
855
|
+
});
|
|
856
|
+
let drive = await server.getDrive(driveId);
|
|
857
|
+
const context = {
|
|
858
|
+
signer: {
|
|
859
|
+
user: {
|
|
860
|
+
address: "123",
|
|
861
|
+
networkId: "1",
|
|
862
|
+
chainId: 1,
|
|
863
|
+
},
|
|
864
|
+
app: {
|
|
865
|
+
name: "name",
|
|
866
|
+
key: "key",
|
|
867
|
+
},
|
|
868
|
+
signatures: ["test"],
|
|
869
|
+
},
|
|
870
|
+
};
|
|
871
|
+
// adds file
|
|
872
|
+
drive = driveDocumentReducer(drive, {
|
|
873
|
+
...addFile({
|
|
874
|
+
id: documentId,
|
|
875
|
+
name: "document 1",
|
|
876
|
+
documentType: "powerhouse/document-model",
|
|
877
|
+
}),
|
|
878
|
+
context,
|
|
879
|
+
});
|
|
880
|
+
await server.addOperation(driveId, drive.operations.global[0]);
|
|
881
|
+
const storedDrive = await server.getDrive(driveId);
|
|
882
|
+
expect(storedDrive.operations.global[0]).toMatchObject(drive.operations.global[0]);
|
|
883
|
+
});
|
|
884
|
+
it("gets document at specific revision", async ({ expect }) => {
|
|
885
|
+
const driveId = generateId();
|
|
886
|
+
const documentId = generateId();
|
|
887
|
+
const server = new ReactorBuilder(documentModels)
|
|
888
|
+
.withCache(cache)
|
|
889
|
+
.withStorage(await buildStorage())
|
|
890
|
+
.build();
|
|
891
|
+
await server.addDrive({
|
|
892
|
+
id: driveId,
|
|
893
|
+
slug: "slug",
|
|
894
|
+
global: {
|
|
895
|
+
name: "name",
|
|
896
|
+
icon: "icon",
|
|
897
|
+
},
|
|
898
|
+
local: {
|
|
899
|
+
availableOffline: false,
|
|
900
|
+
sharingType: "public",
|
|
901
|
+
listeners: [],
|
|
902
|
+
triggers: [],
|
|
903
|
+
},
|
|
904
|
+
});
|
|
905
|
+
const drive = await server.getDrive(driveId);
|
|
906
|
+
// adds file
|
|
907
|
+
const newDrive = driveDocumentReducer(drive, addFile({
|
|
908
|
+
id: documentId,
|
|
909
|
+
name: "document 1",
|
|
910
|
+
documentType: "powerhouse/document-model",
|
|
911
|
+
}));
|
|
912
|
+
await server.addOperation(driveId, newDrive.operations.global[0]);
|
|
913
|
+
const drive0 = await server.getDrive(driveId, {
|
|
914
|
+
revisions: { global: -1 },
|
|
915
|
+
});
|
|
916
|
+
expect(drive0.operations.global.length).toBe(0);
|
|
917
|
+
expect(drive0).toStrictEqual(drive);
|
|
918
|
+
});
|
|
919
|
+
it("should allow removing a drive and then adding a new drive with the same id and slug", async ({ expect, }) => {
|
|
920
|
+
const server = new ReactorBuilder(documentModels)
|
|
921
|
+
.withCache(cache)
|
|
922
|
+
.withStorage(await buildStorage())
|
|
923
|
+
.build();
|
|
924
|
+
await server.addDrive({
|
|
925
|
+
id: "test-drive",
|
|
926
|
+
slug: "test-drive",
|
|
927
|
+
global: {
|
|
928
|
+
name: "test-drive",
|
|
929
|
+
icon: "icon",
|
|
930
|
+
},
|
|
931
|
+
local: {
|
|
932
|
+
availableOffline: false,
|
|
933
|
+
sharingType: "public",
|
|
934
|
+
listeners: [],
|
|
935
|
+
triggers: [],
|
|
936
|
+
},
|
|
937
|
+
});
|
|
938
|
+
await server.deleteDrive("test-drive");
|
|
939
|
+
await server.addDrive({
|
|
940
|
+
id: "test-drive",
|
|
941
|
+
slug: "test-drive",
|
|
942
|
+
global: {
|
|
943
|
+
name: "test-drive",
|
|
944
|
+
icon: "icon",
|
|
945
|
+
},
|
|
946
|
+
local: {
|
|
947
|
+
availableOffline: false,
|
|
948
|
+
sharingType: "public",
|
|
949
|
+
listeners: [],
|
|
950
|
+
triggers: [],
|
|
951
|
+
},
|
|
952
|
+
});
|
|
953
|
+
const drive = await server.getDriveBySlug("test-drive");
|
|
954
|
+
expect(drive.header.slug).toBe("test-drive");
|
|
955
|
+
});
|
|
956
|
+
});
|
|
957
|
+
//# sourceMappingURL=server.test.js.map
|