document-model 4.1.0-dev.1 → 4.1.0-dev.100
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/README.md +24 -24
- package/dist/src/core/actions.d.ts +79 -0
- package/dist/src/core/actions.d.ts.map +1 -0
- package/dist/src/core/actions.js +183 -0
- package/dist/src/core/actions.js.map +1 -0
- package/dist/src/core/crypto.d.ts +17 -0
- package/dist/src/core/crypto.d.ts.map +1 -0
- package/dist/src/core/crypto.js +87 -0
- package/dist/src/core/crypto.js.map +1 -0
- package/dist/src/core/documents.d.ts +128 -0
- package/dist/src/core/documents.d.ts.map +1 -0
- package/dist/src/{document/utils/document-helpers.js → core/documents.js} +364 -26
- package/dist/src/core/documents.js.map +1 -0
- package/dist/src/core/errors.d.ts +21 -0
- package/dist/src/core/errors.d.ts.map +1 -0
- package/dist/src/core/errors.js +47 -0
- package/dist/src/core/errors.js.map +1 -0
- package/dist/src/core/files.d.ts +14 -0
- package/dist/src/core/files.d.ts.map +1 -0
- package/dist/src/core/files.js +74 -0
- package/dist/src/core/files.js.map +1 -0
- package/dist/src/{document/utils → core}/header.d.ts +3 -35
- package/dist/src/core/header.d.ts.map +1 -0
- package/dist/src/{document/utils → core}/header.js +6 -19
- package/dist/src/core/header.js.map +1 -0
- package/dist/src/core/index.d.ts +12 -0
- package/dist/src/core/index.d.ts.map +1 -0
- package/dist/src/core/index.js +12 -0
- package/dist/src/core/index.js.map +1 -0
- package/dist/src/{document/utils/file.d.ts → core/node.d.ts} +40 -29
- package/dist/src/core/node.d.ts.map +1 -0
- package/dist/src/core/node.js +149 -0
- package/dist/src/core/node.js.map +1 -0
- package/dist/src/core/operations.d.ts +32 -0
- package/dist/src/core/operations.d.ts.map +1 -0
- package/dist/src/{document/actions → core}/operations.js +11 -59
- package/dist/src/core/operations.js.map +1 -0
- package/dist/src/core/ph-types.d.ts +259 -0
- package/dist/src/core/ph-types.d.ts.map +1 -0
- package/dist/src/core/ph-types.js +15 -0
- package/dist/src/core/ph-types.js.map +1 -0
- package/dist/src/core/reducer.d.ts +61 -0
- package/dist/src/core/reducer.d.ts.map +1 -0
- package/dist/src/core/reducer.js +416 -0
- package/dist/src/core/reducer.js.map +1 -0
- package/dist/src/{document/schema/zod.d.ts → core/schemas.d.ts} +50 -24
- package/dist/src/core/schemas.d.ts.map +1 -0
- package/dist/src/{document/schema/zod.js → core/schemas.js} +24 -27
- package/dist/src/core/schemas.js.map +1 -0
- package/dist/src/core/state.d.ts +26 -0
- package/dist/src/core/state.d.ts.map +1 -0
- package/dist/src/core/state.js +56 -0
- package/dist/src/core/state.js.map +1 -0
- package/dist/src/core/types.d.ts +500 -0
- package/dist/src/core/types.d.ts.map +1 -0
- package/dist/src/{document → core}/types.js.map +1 -1
- package/dist/src/core/validation.d.ts +4 -0
- package/dist/src/core/validation.d.ts.map +1 -0
- package/dist/src/{document/utils → core}/validation.js +6 -2
- package/dist/src/core/validation.js.map +1 -0
- package/dist/src/document-model/actions.d.ts +158 -0
- package/dist/src/document-model/actions.d.ts.map +1 -0
- package/dist/src/document-model/actions.js +109 -0
- package/dist/src/document-model/actions.js.map +1 -0
- package/dist/src/document-model/constants.d.ts +7 -0
- package/dist/src/document-model/constants.d.ts.map +1 -0
- package/dist/src/document-model/{gen/document-model.js → constants.js} +171 -139
- package/dist/src/document-model/constants.js.map +1 -0
- package/dist/src/document-model/files.d.ts +5 -0
- package/dist/src/document-model/files.d.ts.map +1 -0
- package/dist/src/document-model/files.js +9 -0
- package/dist/src/document-model/files.js.map +1 -0
- package/dist/src/document-model/index.d.ts +9 -0
- package/dist/src/document-model/index.d.ts.map +1 -0
- package/dist/src/document-model/index.js +9 -0
- package/dist/src/document-model/index.js.map +1 -0
- package/dist/src/document-model/module.d.ts +1 -1
- package/dist/src/document-model/module.d.ts.map +1 -1
- package/dist/src/document-model/module.js +17 -10
- package/dist/src/document-model/module.js.map +1 -1
- package/dist/src/document-model/reducers.d.ts +11 -0
- package/dist/src/document-model/reducers.d.ts.map +1 -0
- package/dist/src/document-model/reducers.js +588 -0
- package/dist/src/document-model/reducers.js.map +1 -0
- package/dist/src/document-model/schemas.d.ts +449 -0
- package/dist/src/document-model/schemas.d.ts.map +1 -0
- package/dist/src/document-model/{gen/schema/zod.js → schemas.js} +9 -15
- package/dist/src/document-model/schemas.js.map +1 -0
- package/dist/src/document-model/state.d.ts +11 -0
- package/dist/src/document-model/state.d.ts.map +1 -0
- package/dist/src/document-model/state.js +61 -0
- package/dist/src/document-model/state.js.map +1 -0
- package/dist/src/document-model/types.d.ts +671 -3
- package/dist/src/document-model/types.d.ts.map +1 -1
- package/dist/src/document-model/validation.d.ts +7 -0
- package/dist/src/document-model/validation.d.ts.map +1 -0
- package/dist/src/document-model/{custom/utils.js → validation.js} +1 -1
- package/dist/src/document-model/validation.js.map +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -0
- package/dist/test/document/crypto.test.js +39 -61
- package/dist/test/document/crypto.test.js.map +1 -1
- package/dist/test/document/event-vs-command.test.js +81 -51
- package/dist/test/document/event-vs-command.test.js.map +1 -1
- package/dist/test/document/local.test.js +27 -45
- package/dist/test/document/local.test.js.map +1 -1
- package/dist/test/document/operation-id.test.js +4 -7
- package/dist/test/document/operation-id.test.js.map +1 -1
- package/dist/test/document/prune.test.js +23 -36
- package/dist/test/document/prune.test.js.map +1 -1
- package/dist/test/document/reducer.test.js +101 -81
- package/dist/test/document/reducer.test.js.map +1 -1
- package/dist/test/document/skip-operations.test.js +67 -87
- package/dist/test/document/skip-operations.test.js.map +1 -1
- package/dist/test/document/undo-redo.test.js +64 -40
- package/dist/test/document/undo-redo.test.js.map +1 -1
- package/dist/test/document/utils.test.js +51 -41
- package/dist/test/document/utils.test.js.map +1 -1
- package/dist/test/document-helpers/addUndo.test.js +2 -2
- package/dist/test/document-helpers/addUndo.test.js.map +1 -1
- package/dist/test/document-helpers/attachBranch.test.js +21 -21
- package/dist/test/document-helpers/attachBranch.test.js.map +1 -1
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js +1 -1
- package/dist/test/document-helpers/checkCleanedOperationsIntegrity.test.js.map +1 -1
- package/dist/test/document-helpers/conflictResolution.test.js +11 -11
- package/dist/test/document-helpers/conflictResolution.test.js.map +1 -1
- package/dist/test/document-helpers/filterDuplicatedOperations.test.js +1 -1
- package/dist/test/document-helpers/filterDuplicatedOperations.test.js.map +1 -1
- package/dist/test/document-helpers/garbageCollect.test.js +1 -1
- package/dist/test/document-helpers/garbageCollect.test.js.map +1 -1
- package/dist/test/document-helpers/groupOperationsByScope.test.js +71 -71
- package/dist/test/document-helpers/groupOperationsByScope.test.js.map +1 -1
- package/dist/test/document-helpers/merge.test.js +126 -126
- package/dist/test/document-helpers/merge.test.js.map +1 -1
- package/dist/test/document-helpers/nextSkipNumber.test.js +1 -1
- package/dist/test/document-helpers/nextSkipNumber.test.js.map +1 -1
- package/dist/test/document-helpers/prepareOperations.test.js +1 -1
- package/dist/test/document-helpers/prepareOperations.test.js.map +1 -1
- package/dist/test/document-helpers/removeExistingOperations.test.js +38 -26
- package/dist/test/document-helpers/removeExistingOperations.test.js.map +1 -1
- package/dist/test/document-helpers/reshuffleByTimestamp.test.js +16 -16
- package/dist/test/document-helpers/reshuffleByTimestamp.test.js.map +1 -1
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js +22 -22
- package/dist/test/document-helpers/reshuffleByTimestampAndIndex.test.js.map +1 -1
- package/dist/test/document-helpers/skipHeaderOperations.test.js +34 -41
- package/dist/test/document-helpers/skipHeaderOperations.test.js.map +1 -1
- package/dist/test/document-helpers/sortOperations.test.js +1 -1
- package/dist/test/document-helpers/sortOperations.test.js.map +1 -1
- package/dist/test/document-helpers/split.test.js +3 -3
- package/dist/test/document-helpers/split.test.js.map +1 -1
- package/dist/test/document-helpers/utils.d.ts +2 -1
- package/dist/test/document-helpers/utils.d.ts.map +1 -1
- package/dist/test/document-helpers/utils.js +13 -8
- package/dist/test/document-helpers/utils.js.map +1 -1
- package/dist/test/document-model/replay.test.js +21 -25
- package/dist/test/document-model/replay.test.js.map +1 -1
- package/dist/test/document-model/skip-operations.test.js +93 -96
- package/dist/test/document-model/skip-operations.test.js.map +1 -1
- package/dist/test/document-model/validation.test.js +10 -13
- package/dist/test/document-model/validation.test.js.map +1 -1
- package/dist/test/document-model/zip.test.js +20 -21
- package/dist/test/document-model/zip.test.js.map +1 -1
- package/dist/test/helpers.d.ts +59 -13
- package/dist/test/helpers.d.ts.map +1 -1
- package/dist/test/helpers.js +58 -11
- package/dist/test/helpers.js.map +1 -1
- package/dist/test/index.d.ts +4 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +3 -0
- package/dist/test/index.js.map +1 -0
- package/dist/test/types.d.ts +6 -0
- package/dist/test/types.d.ts.map +1 -0
- package/dist/{src/document/schema → test}/types.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/vitest.config.d.ts +1 -1
- package/dist/vitest.config.d.ts.map +1 -1
- package/dist/vitest.config.js +2 -8
- package/dist/vitest.config.js.map +1 -1
- package/package.json +27 -21
- package/dist/index.d.ts +0 -20
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -14
- package/dist/index.js.map +0 -1
- package/dist/src/document/actions/creators.d.ts +0 -51
- package/dist/src/document/actions/creators.d.ts.map +0 -1
- package/dist/src/document/actions/creators.js +0 -57
- package/dist/src/document/actions/creators.js.map +0 -1
- package/dist/src/document/actions/operations.d.ts +0 -36
- package/dist/src/document/actions/operations.d.ts.map +0 -1
- package/dist/src/document/actions/operations.js.map +0 -1
- package/dist/src/document/actions/types.d.ts +0 -16
- package/dist/src/document/actions/types.d.ts.map +0 -1
- package/dist/src/document/actions/types.js +0 -7
- package/dist/src/document/actions/types.js.map +0 -1
- package/dist/src/document/object.d.ts +0 -124
- package/dist/src/document/object.d.ts.map +0 -1
- package/dist/src/document/object.js +0 -183
- package/dist/src/document/object.js.map +0 -1
- package/dist/src/document/ph-types.d.ts +0 -68
- package/dist/src/document/ph-types.d.ts.map +0 -1
- package/dist/src/document/ph-types.js +0 -2
- package/dist/src/document/ph-types.js.map +0 -1
- package/dist/src/document/reducer.d.ts +0 -49
- package/dist/src/document/reducer.d.ts.map +0 -1
- package/dist/src/document/reducer.js +0 -346
- package/dist/src/document/reducer.js.map +0 -1
- package/dist/src/document/schema/types.d.ts +0 -177
- package/dist/src/document/schema/types.d.ts.map +0 -1
- package/dist/src/document/schema/types.js +0 -2
- package/dist/src/document/schema/zod.d.ts.map +0 -1
- package/dist/src/document/schema/zod.js.map +0 -1
- package/dist/src/document/signal.d.ts +0 -36
- package/dist/src/document/signal.d.ts.map +0 -1
- package/dist/src/document/signal.js +0 -2
- package/dist/src/document/signal.js.map +0 -1
- package/dist/src/document/types.d.ts +0 -336
- package/dist/src/document/types.d.ts.map +0 -1
- package/dist/src/document/types.js +0 -2
- package/dist/src/document/utils/base.d.ts +0 -88
- package/dist/src/document/utils/base.d.ts.map +0 -1
- package/dist/src/document/utils/base.js +0 -335
- package/dist/src/document/utils/base.js.map +0 -1
- package/dist/src/document/utils/browser.d.ts +0 -18
- package/dist/src/document/utils/browser.d.ts.map +0 -1
- package/dist/src/document/utils/browser.js +0 -54
- package/dist/src/document/utils/browser.js.map +0 -1
- package/dist/src/document/utils/crypto.d.ts +0 -11
- package/dist/src/document/utils/crypto.d.ts.map +0 -1
- package/dist/src/document/utils/crypto.js +0 -80
- package/dist/src/document/utils/crypto.js.map +0 -1
- package/dist/src/document/utils/document-helpers.d.ts +0 -78
- package/dist/src/document/utils/document-helpers.d.ts.map +0 -1
- package/dist/src/document/utils/document-helpers.js.map +0 -1
- package/dist/src/document/utils/errors.d.ts +0 -10
- package/dist/src/document/utils/errors.d.ts.map +0 -1
- package/dist/src/document/utils/errors.js +0 -19
- package/dist/src/document/utils/errors.js.map +0 -1
- package/dist/src/document/utils/file.d.ts.map +0 -1
- package/dist/src/document/utils/file.js +0 -152
- package/dist/src/document/utils/file.js.map +0 -1
- package/dist/src/document/utils/header.d.ts.map +0 -1
- package/dist/src/document/utils/header.js.map +0 -1
- package/dist/src/document/utils/node.d.ts +0 -18
- package/dist/src/document/utils/node.d.ts.map +0 -1
- package/dist/src/document/utils/node.js +0 -62
- package/dist/src/document/utils/node.js.map +0 -1
- package/dist/src/document/utils/validation.d.ts +0 -3
- package/dist/src/document/utils/validation.d.ts.map +0 -1
- package/dist/src/document/utils/validation.js.map +0 -1
- package/dist/src/document-model/custom/reducers/header.d.ts +0 -3
- package/dist/src/document-model/custom/reducers/header.d.ts.map +0 -1
- package/dist/src/document-model/custom/reducers/header.js +0 -23
- package/dist/src/document-model/custom/reducers/header.js.map +0 -1
- package/dist/src/document-model/custom/reducers/module.d.ts +0 -3
- package/dist/src/document-model/custom/reducers/module.d.ts.map +0 -1
- package/dist/src/document-model/custom/reducers/module.js +0 -41
- package/dist/src/document-model/custom/reducers/module.js.map +0 -1
- package/dist/src/document-model/custom/reducers/operation-error.d.ts +0 -3
- package/dist/src/document-model/custom/reducers/operation-error.d.ts.map +0 -1
- package/dist/src/document-model/custom/reducers/operation-error.js +0 -94
- package/dist/src/document-model/custom/reducers/operation-error.js.map +0 -1
- package/dist/src/document-model/custom/reducers/operation-example.d.ts +0 -3
- package/dist/src/document-model/custom/reducers/operation-example.d.ts.map +0 -1
- package/dist/src/document-model/custom/reducers/operation-example.js +0 -53
- package/dist/src/document-model/custom/reducers/operation-example.js.map +0 -1
- package/dist/src/document-model/custom/reducers/operation.d.ts +0 -3
- package/dist/src/document-model/custom/reducers/operation.d.ts.map +0 -1
- package/dist/src/document-model/custom/reducers/operation.js +0 -125
- package/dist/src/document-model/custom/reducers/operation.js.map +0 -1
- package/dist/src/document-model/custom/reducers/state.d.ts +0 -3
- package/dist/src/document-model/custom/reducers/state.d.ts.map +0 -1
- package/dist/src/document-model/custom/reducers/state.js +0 -71
- package/dist/src/document-model/custom/reducers/state.js.map +0 -1
- package/dist/src/document-model/custom/reducers/versioning.d.ts +0 -8
- package/dist/src/document-model/custom/reducers/versioning.d.ts.map +0 -1
- package/dist/src/document-model/custom/reducers/versioning.js +0 -23
- package/dist/src/document-model/custom/reducers/versioning.js.map +0 -1
- package/dist/src/document-model/custom/utils.d.ts +0 -8
- package/dist/src/document-model/custom/utils.d.ts.map +0 -1
- package/dist/src/document-model/custom/utils.js.map +0 -1
- package/dist/src/document-model/gen/actions.d.ts +0 -16
- package/dist/src/document-model/gen/actions.d.ts.map +0 -1
- package/dist/src/document-model/gen/actions.js +0 -8
- package/dist/src/document-model/gen/actions.js.map +0 -1
- package/dist/src/document-model/gen/constants.d.ts +0 -7
- package/dist/src/document-model/gen/constants.d.ts.map +0 -1
- package/dist/src/document-model/gen/constants.js +0 -34
- package/dist/src/document-model/gen/constants.js.map +0 -1
- package/dist/src/document-model/gen/creators.d.ts +0 -8
- package/dist/src/document-model/gen/creators.d.ts.map +0 -1
- package/dist/src/document-model/gen/creators.js +0 -8
- package/dist/src/document-model/gen/creators.js.map +0 -1
- package/dist/src/document-model/gen/document-model.d.ts +0 -3
- package/dist/src/document-model/gen/document-model.d.ts.map +0 -1
- package/dist/src/document-model/gen/document-model.js.map +0 -1
- package/dist/src/document-model/gen/header/actions.d.ts +0 -10
- package/dist/src/document-model/gen/header/actions.d.ts.map +0 -1
- package/dist/src/document-model/gen/header/actions.js +0 -2
- package/dist/src/document-model/gen/header/actions.js.map +0 -1
- package/dist/src/document-model/gen/header/creators.d.ts +0 -9
- package/dist/src/document-model/gen/header/creators.d.ts.map +0 -1
- package/dist/src/document-model/gen/header/creators.js +0 -10
- package/dist/src/document-model/gen/header/creators.js.map +0 -1
- package/dist/src/document-model/gen/header/object.d.ts +0 -13
- package/dist/src/document-model/gen/header/object.d.ts.map +0 -1
- package/dist/src/document-model/gen/header/object.js +0 -23
- package/dist/src/document-model/gen/header/object.js.map +0 -1
- package/dist/src/document-model/gen/header/operations.d.ts +0 -11
- package/dist/src/document-model/gen/header/operations.d.ts.map +0 -1
- package/dist/src/document-model/gen/header/operations.js +0 -2
- package/dist/src/document-model/gen/header/operations.js.map +0 -1
- package/dist/src/document-model/gen/module/actions.d.ts +0 -9
- package/dist/src/document-model/gen/module/actions.d.ts.map +0 -1
- package/dist/src/document-model/gen/module/actions.js +0 -2
- package/dist/src/document-model/gen/module/actions.js.map +0 -1
- package/dist/src/document-model/gen/module/creators.d.ts +0 -8
- package/dist/src/document-model/gen/module/creators.d.ts.map +0 -1
- package/dist/src/document-model/gen/module/creators.js +0 -9
- package/dist/src/document-model/gen/module/creators.js.map +0 -1
- package/dist/src/document-model/gen/module/object.d.ts +0 -12
- package/dist/src/document-model/gen/module/object.d.ts.map +0 -1
- package/dist/src/document-model/gen/module/object.js +0 -20
- package/dist/src/document-model/gen/module/object.js.map +0 -1
- package/dist/src/document-model/gen/module/operations.d.ts +0 -10
- package/dist/src/document-model/gen/module/operations.d.ts.map +0 -1
- package/dist/src/document-model/gen/module/operations.js +0 -2
- package/dist/src/document-model/gen/module/operations.js.map +0 -1
- package/dist/src/document-model/gen/object.d.ts +0 -29
- package/dist/src/document-model/gen/object.d.ts.map +0 -1
- package/dist/src/document-model/gen/object.js +0 -46
- package/dist/src/document-model/gen/object.js.map +0 -1
- package/dist/src/document-model/gen/operation/actions.d.ts +0 -14
- package/dist/src/document-model/gen/operation/actions.d.ts.map +0 -1
- package/dist/src/document-model/gen/operation/actions.js +0 -2
- package/dist/src/document-model/gen/operation/actions.js.map +0 -1
- package/dist/src/document-model/gen/operation/creators.d.ts +0 -13
- package/dist/src/document-model/gen/operation/creators.d.ts.map +0 -1
- package/dist/src/document-model/gen/operation/creators.js +0 -20
- package/dist/src/document-model/gen/operation/creators.js.map +0 -1
- package/dist/src/document-model/gen/operation/object.d.ts +0 -18
- package/dist/src/document-model/gen/operation/object.d.ts.map +0 -1
- package/dist/src/document-model/gen/operation/object.js +0 -35
- package/dist/src/document-model/gen/operation/object.js.map +0 -1
- package/dist/src/document-model/gen/operation/operations.d.ts +0 -15
- package/dist/src/document-model/gen/operation/operations.d.ts.map +0 -1
- package/dist/src/document-model/gen/operation/operations.js +0 -2
- package/dist/src/document-model/gen/operation/operations.js.map +0 -1
- package/dist/src/document-model/gen/operation-error/actions.d.ts +0 -11
- package/dist/src/document-model/gen/operation-error/actions.d.ts.map +0 -1
- package/dist/src/document-model/gen/operation-error/actions.js +0 -2
- package/dist/src/document-model/gen/operation-error/actions.js.map +0 -1
- package/dist/src/document-model/gen/operation-error/creators.d.ts +0 -10
- package/dist/src/document-model/gen/operation-error/creators.d.ts.map +0 -1
- package/dist/src/document-model/gen/operation-error/creators.js +0 -17
- package/dist/src/document-model/gen/operation-error/creators.js.map +0 -1
- package/dist/src/document-model/gen/operation-error/object.d.ts +0 -15
- package/dist/src/document-model/gen/operation-error/object.d.ts.map +0 -1
- package/dist/src/document-model/gen/operation-error/object.js +0 -26
- package/dist/src/document-model/gen/operation-error/object.js.map +0 -1
- package/dist/src/document-model/gen/operation-error/operations.d.ts +0 -12
- package/dist/src/document-model/gen/operation-error/operations.d.ts.map +0 -1
- package/dist/src/document-model/gen/operation-error/operations.js +0 -2
- package/dist/src/document-model/gen/operation-error/operations.js.map +0 -1
- package/dist/src/document-model/gen/operation-example/actions.d.ts +0 -8
- package/dist/src/document-model/gen/operation-example/actions.d.ts.map +0 -1
- package/dist/src/document-model/gen/operation-example/actions.js +0 -2
- package/dist/src/document-model/gen/operation-example/actions.js.map +0 -1
- package/dist/src/document-model/gen/operation-example/creators.d.ts +0 -7
- package/dist/src/document-model/gen/operation-example/creators.d.ts.map +0 -1
- package/dist/src/document-model/gen/operation-example/creators.js +0 -14
- package/dist/src/document-model/gen/operation-example/creators.js.map +0 -1
- package/dist/src/document-model/gen/operation-example/object.d.ts +0 -12
- package/dist/src/document-model/gen/operation-example/object.d.ts.map +0 -1
- package/dist/src/document-model/gen/operation-example/object.js +0 -17
- package/dist/src/document-model/gen/operation-example/object.js.map +0 -1
- package/dist/src/document-model/gen/operation-example/operations.d.ts +0 -9
- package/dist/src/document-model/gen/operation-example/operations.d.ts.map +0 -1
- package/dist/src/document-model/gen/operation-example/operations.js +0 -2
- package/dist/src/document-model/gen/operation-example/operations.js.map +0 -1
- package/dist/src/document-model/gen/reducer.d.ts +0 -5
- package/dist/src/document-model/gen/reducer.d.ts.map +0 -1
- package/dist/src/document-model/gen/reducer.js +0 -193
- package/dist/src/document-model/gen/reducer.js.map +0 -1
- package/dist/src/document-model/gen/schema/types.d.ts +0 -458
- package/dist/src/document-model/gen/schema/types.d.ts.map +0 -1
- package/dist/src/document-model/gen/schema/types.js.map +0 -1
- package/dist/src/document-model/gen/schema/zod.d.ts +0 -454
- package/dist/src/document-model/gen/schema/zod.d.ts.map +0 -1
- package/dist/src/document-model/gen/schema/zod.js.map +0 -1
- package/dist/src/document-model/gen/state/actions.d.ts +0 -10
- package/dist/src/document-model/gen/state/actions.d.ts.map +0 -1
- package/dist/src/document-model/gen/state/actions.js +0 -2
- package/dist/src/document-model/gen/state/actions.js.map +0 -1
- package/dist/src/document-model/gen/state/creators.d.ts +0 -9
- package/dist/src/document-model/gen/state/creators.d.ts.map +0 -1
- package/dist/src/document-model/gen/state/creators.js +0 -10
- package/dist/src/document-model/gen/state/creators.js.map +0 -1
- package/dist/src/document-model/gen/state/object.d.ts +0 -13
- package/dist/src/document-model/gen/state/object.d.ts.map +0 -1
- package/dist/src/document-model/gen/state/object.js +0 -23
- package/dist/src/document-model/gen/state/object.js.map +0 -1
- package/dist/src/document-model/gen/state/operations.d.ts +0 -11
- package/dist/src/document-model/gen/state/operations.d.ts.map +0 -1
- package/dist/src/document-model/gen/state/operations.js +0 -2
- package/dist/src/document-model/gen/state/operations.js.map +0 -1
- package/dist/src/document-model/gen/types.d.ts +0 -7
- package/dist/src/document-model/gen/types.d.ts.map +0 -1
- package/dist/src/document-model/gen/types.js.map +0 -1
- package/dist/src/document-model/gen/utils.d.ts +0 -11
- package/dist/src/document-model/gen/utils.d.ts.map +0 -1
- package/dist/src/document-model/gen/utils.js +0 -33
- package/dist/src/document-model/gen/utils.js.map +0 -1
- package/dist/src/document-model/gen/versioning/actions.d.ts +0 -9
- package/dist/src/document-model/gen/versioning/actions.d.ts.map +0 -1
- package/dist/src/document-model/gen/versioning/actions.js +0 -2
- package/dist/src/document-model/gen/versioning/actions.js.map +0 -1
- package/dist/src/document-model/gen/versioning/creators.d.ts +0 -8
- package/dist/src/document-model/gen/versioning/creators.d.ts.map +0 -1
- package/dist/src/document-model/gen/versioning/creators.js +0 -13
- package/dist/src/document-model/gen/versioning/creators.js.map +0 -1
- package/dist/src/document-model/gen/versioning/object.d.ts +0 -13
- package/dist/src/document-model/gen/versioning/object.d.ts.map +0 -1
- package/dist/src/document-model/gen/versioning/object.js +0 -20
- package/dist/src/document-model/gen/versioning/object.js.map +0 -1
- package/dist/src/document-model/gen/versioning/operations.d.ts +0 -10
- package/dist/src/document-model/gen/versioning/operations.d.ts.map +0 -1
- package/dist/src/document-model/gen/versioning/operations.js +0 -2
- package/dist/src/document-model/gen/versioning/operations.js.map +0 -1
- package/dist/test/document/object.test.d.ts +0 -2
- package/dist/test/document/object.test.d.ts.map +0 -1
- package/dist/test/document/object.test.js +0 -13
- package/dist/test/document/object.test.js.map +0 -1
- package/dist/test/document-model/object.test.d.ts +0 -2
- package/dist/test/document-model/object.test.d.ts.map +0 -1
- package/dist/test/document-model/object.test.js +0 -243
- package/dist/test/document-model/object.test.js.map +0 -1
- /package/dist/src/{document-model/gen/schema → core}/types.js +0 -0
- /package/dist/{src/document-model/gen → test}/types.js +0 -0
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
import { castDraft, create, unsafe } from "mutative";
|
|
2
|
+
import { actionFromAction, loadState, operationFromAction, operationFromOperation, } from "./actions.js";
|
|
3
|
+
import { diffOperations, garbageCollect, garbageCollectDocumentOperations, hashDocumentStateForScope, isDocumentAction, isUndo, isUndoRedo, parseResultingState, replayDocument, skipHeaderOperations, sortOperations, updateHeaderRevision, } from "./documents.js";
|
|
4
|
+
import { loadStateOperation, redoOperation, setNameOperation, undoOperation, } from "./operations.js";
|
|
5
|
+
import { DocumentActionSchema } from "./schemas.js";
|
|
6
|
+
// This rebuilds the document according to the provided actions.
|
|
7
|
+
export function replayOperations(initialState, clearedOperations, stateReducer, dispatch, header, documentReducer = baseReducer, skipHeaderOperations = {}, options) {
|
|
8
|
+
// wraps the provided custom reducer with the
|
|
9
|
+
// base document reducer
|
|
10
|
+
const wrappedReducer = createReducer(stateReducer, documentReducer);
|
|
11
|
+
return replayDocument(initialState, clearedOperations, wrappedReducer, dispatch, header, skipHeaderOperations, options);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Updates the operations history of the document based on the provided action.
|
|
15
|
+
*
|
|
16
|
+
* @param state The current state of the document.
|
|
17
|
+
* @param action The action being applied to the document.
|
|
18
|
+
* @param index The index of the operation to update.
|
|
19
|
+
* @param skip The number of operations to skip before applying the action.
|
|
20
|
+
* @param reuseLastOperationIndex Whether to reuse the last operation index (used when a an UNDO operation is performed after an existing one).
|
|
21
|
+
* @returns The updated document state.
|
|
22
|
+
*/
|
|
23
|
+
function updateOperationsForAction(document, action, reuseLastOperationIndex = false, skip = 0) {
|
|
24
|
+
// UNDO, REDO and PRUNE are meta operations
|
|
25
|
+
// that alter the operations history themselves
|
|
26
|
+
if (["UNDO", "REDO", "PRUNE"].includes(action.type)) {
|
|
27
|
+
return document;
|
|
28
|
+
}
|
|
29
|
+
const scope = action.scope;
|
|
30
|
+
let operations = [];
|
|
31
|
+
if (document.operations[scope]) {
|
|
32
|
+
operations = document.operations[scope].slice();
|
|
33
|
+
}
|
|
34
|
+
const latestOperation = operations.sort((a, b) => a.index - b.index).at(-1);
|
|
35
|
+
const lastOperationIndex = latestOperation?.index ?? -1;
|
|
36
|
+
const index = reuseLastOperationIndex
|
|
37
|
+
? lastOperationIndex
|
|
38
|
+
: lastOperationIndex + 1;
|
|
39
|
+
const newOperation = operationFromAction(action, index, skip);
|
|
40
|
+
operations.push(newOperation);
|
|
41
|
+
// adds the action to the operations history with
|
|
42
|
+
// the latest index and current timestamp
|
|
43
|
+
return {
|
|
44
|
+
...document,
|
|
45
|
+
operations: { ...document.operations, [scope]: operations },
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function updateOperationsForOperation(document, operation, reuseLastOperationIndex = false, skip = 0) {
|
|
49
|
+
const scope = operation.action.scope;
|
|
50
|
+
const scopeOperations = document.operations[scope];
|
|
51
|
+
const operations = scopeOperations
|
|
52
|
+
? scopeOperations.slice()
|
|
53
|
+
: [];
|
|
54
|
+
const latestOperation = operations.sort((a, b) => a.index - b.index).at(-1);
|
|
55
|
+
const lastOperationIndex = latestOperation?.index ?? -1;
|
|
56
|
+
const nextIndex = reuseLastOperationIndex
|
|
57
|
+
? lastOperationIndex
|
|
58
|
+
: lastOperationIndex + 1;
|
|
59
|
+
if (operation.index - skip > nextIndex) {
|
|
60
|
+
throw new Error(`Missing operations: expected ${nextIndex} with skip 0 or equivalent, got index ${operation.index} with skip ${skip}`);
|
|
61
|
+
}
|
|
62
|
+
const newOperation = operationFromOperation(operation, skip);
|
|
63
|
+
operations.push(newOperation);
|
|
64
|
+
// adds the action to the operations history with
|
|
65
|
+
// the latest index and current timestamp
|
|
66
|
+
return {
|
|
67
|
+
...document,
|
|
68
|
+
operations: { ...document.operations, [scope]: operations },
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Updates the document state based on the provided action.
|
|
73
|
+
*
|
|
74
|
+
* @param state The current state of the document.
|
|
75
|
+
* @param action The action being applied to the document.
|
|
76
|
+
* @param skip The number of operations to skip before applying the action.
|
|
77
|
+
* @param reuseLastOperationIndex Whether to reuse the last operation index (used when a an UNDO operation is performed after an existing one).
|
|
78
|
+
* @returns The updated document state.
|
|
79
|
+
*/
|
|
80
|
+
export function updateDocument(document, action, reuseLastOperationIndex = false, skip = 0, operation) {
|
|
81
|
+
let newDocument;
|
|
82
|
+
if (operation) {
|
|
83
|
+
// operation
|
|
84
|
+
newDocument = updateOperationsForOperation(document, operation, reuseLastOperationIndex, skip);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// action
|
|
88
|
+
newDocument = updateOperationsForAction(document, action, reuseLastOperationIndex, skip);
|
|
89
|
+
}
|
|
90
|
+
newDocument = updateHeaderRevision(newDocument, action.scope);
|
|
91
|
+
return newDocument;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* The base document reducer function that wraps a custom reducer function.
|
|
95
|
+
*
|
|
96
|
+
* @param state The current state of the document.
|
|
97
|
+
* @param action The action being applied to the document.
|
|
98
|
+
* @param wrappedReducer The custom reducer function being wrapped by the base reducer.
|
|
99
|
+
* @returns The updated document state.
|
|
100
|
+
*/
|
|
101
|
+
function _baseReducer(document, action, wrappedReducer) {
|
|
102
|
+
// throws if action is not valid base action
|
|
103
|
+
const parsedAction = DocumentActionSchema().parse(action);
|
|
104
|
+
switch (parsedAction.type) {
|
|
105
|
+
case "SET_NAME":
|
|
106
|
+
return setNameOperation(document, parsedAction.input);
|
|
107
|
+
case "PRUNE":
|
|
108
|
+
return pruneOperation(document, parsedAction.input, wrappedReducer);
|
|
109
|
+
case "LOAD_STATE":
|
|
110
|
+
return loadStateOperation(document, parsedAction.input);
|
|
111
|
+
default:
|
|
112
|
+
return document;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Processes an UNDO or REDO action.
|
|
117
|
+
*
|
|
118
|
+
* @param document The current state of the document.
|
|
119
|
+
* @param action The action being applied to the document.
|
|
120
|
+
* @param skip The number of operations to skip before applying the action.
|
|
121
|
+
* @returns The updated document, calculated skip value and transformed action (if applied).
|
|
122
|
+
*/
|
|
123
|
+
export function processUndoRedo(document, action, skip) {
|
|
124
|
+
switch (action.type) {
|
|
125
|
+
case "UNDO":
|
|
126
|
+
return undoOperation(document, action, skip);
|
|
127
|
+
case "REDO":
|
|
128
|
+
return redoOperation(document, action, skip);
|
|
129
|
+
default:
|
|
130
|
+
return { document, action, skip, reuseLastOperationIndex: false };
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function processSkipOperation(document, action, customReducer, skipValue, reuseOperationResultingState = false, resultingStateParser = parseResultingState) {
|
|
134
|
+
const scope = action.scope;
|
|
135
|
+
const scopeOperations = document.operations[scope];
|
|
136
|
+
if (!scopeOperations) {
|
|
137
|
+
return document;
|
|
138
|
+
}
|
|
139
|
+
const latestOperation = scopeOperations.at(-1);
|
|
140
|
+
if (!latestOperation)
|
|
141
|
+
return document;
|
|
142
|
+
const documentOperations = garbageCollectDocumentOperations({
|
|
143
|
+
...document.operations,
|
|
144
|
+
[scope]: skipHeaderOperations(scopeOperations, latestOperation),
|
|
145
|
+
});
|
|
146
|
+
let scopeState = undefined;
|
|
147
|
+
const documentScopeOps = documentOperations[scope];
|
|
148
|
+
const lastRemainingOperation = documentScopeOps?.at(-1);
|
|
149
|
+
// if the last operation has the resulting state and
|
|
150
|
+
// reuseOperationResultingState is true then reuses it
|
|
151
|
+
// instead of replaying the operations from the beginning
|
|
152
|
+
if (reuseOperationResultingState && lastRemainingOperation?.resultingState) {
|
|
153
|
+
scopeState = resultingStateParser(lastRemainingOperation.resultingState);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
const { state } = replayOperations(document.initialState, documentOperations, customReducer, undefined, undefined, undefined, undefined, {
|
|
157
|
+
reuseOperationResultingState,
|
|
158
|
+
operationResultingStateParser: resultingStateParser,
|
|
159
|
+
});
|
|
160
|
+
scopeState = state[scope];
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
...document,
|
|
164
|
+
state: {
|
|
165
|
+
...document.state,
|
|
166
|
+
[scope]: scopeState,
|
|
167
|
+
},
|
|
168
|
+
operations: garbageCollectDocumentOperations({
|
|
169
|
+
...document.operations,
|
|
170
|
+
}),
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
function processUndoOperation(document, scope, customReducer, reuseOperationResultingState = false, resultingStateParser = parseResultingState) {
|
|
174
|
+
const scopeOperations = document.operations[scope];
|
|
175
|
+
if (!scopeOperations) {
|
|
176
|
+
return document;
|
|
177
|
+
}
|
|
178
|
+
const operations = [...scopeOperations];
|
|
179
|
+
const sortedOperations = sortOperations(operations);
|
|
180
|
+
sortedOperations.pop();
|
|
181
|
+
const documentOperations = garbageCollectDocumentOperations({
|
|
182
|
+
...document.operations,
|
|
183
|
+
});
|
|
184
|
+
const documentScopeOps = documentOperations[scope];
|
|
185
|
+
if (!documentScopeOps) {
|
|
186
|
+
return document;
|
|
187
|
+
}
|
|
188
|
+
const clearedOperations = [...documentScopeOps];
|
|
189
|
+
const diff = diffOperations(garbageCollect(sortedOperations), clearedOperations);
|
|
190
|
+
const doc = replayOperations(document.initialState, documentOperations, customReducer, undefined, undefined, undefined, undefined, {
|
|
191
|
+
reuseOperationResultingState,
|
|
192
|
+
operationResultingStateParser: resultingStateParser,
|
|
193
|
+
});
|
|
194
|
+
const clipboard = sortOperations([...document.clipboard, ...diff].filter((op) => op.action.type !== "NOOP")).reverse();
|
|
195
|
+
return { ...doc, clipboard };
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Base document reducer that wraps a custom document reducer and handles
|
|
199
|
+
* document-level actions such as undo, redo, prune, and set name.
|
|
200
|
+
*
|
|
201
|
+
* @template TGlobalState - The type of the state of the custom reducer.
|
|
202
|
+
* @template TAction - The type of the actions of the custom reducer.
|
|
203
|
+
* @param state - The current state of the document.
|
|
204
|
+
* @param action - The action object to apply to the state.
|
|
205
|
+
* @param customReducer - The custom reducer that implements the application logic
|
|
206
|
+
* specific to the document's state.
|
|
207
|
+
* @returns The new state of the document.
|
|
208
|
+
*/
|
|
209
|
+
export function baseReducer(document, action, customReducer, dispatch, options = {}) {
|
|
210
|
+
const { skip, ignoreSkipOperations = false, reuseOperationResultingState = false, operationResultingStateParser, pruneOnSkip = true, } = options;
|
|
211
|
+
let _action = actionFromAction(action);
|
|
212
|
+
let skipValue = skip ?? options.replayOptions?.operation.skip ?? 0;
|
|
213
|
+
let newDocument = {
|
|
214
|
+
...document,
|
|
215
|
+
};
|
|
216
|
+
let reuseLastOperationIndex = false;
|
|
217
|
+
const shouldProcessSkipOperation = !ignoreSkipOperations && skipValue > 0;
|
|
218
|
+
if (isUndoRedo(_action)) {
|
|
219
|
+
const { skip: calculatedSkip, action: transformedAction, document: processedDocument, reuseLastOperationIndex: reuseIndex, } = processUndoRedo(document, _action, skipValue);
|
|
220
|
+
_action = transformedAction;
|
|
221
|
+
skipValue = calculatedSkip;
|
|
222
|
+
newDocument = processedDocument;
|
|
223
|
+
reuseLastOperationIndex = reuseIndex;
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
newDocument = {
|
|
227
|
+
...newDocument,
|
|
228
|
+
clipboard: [],
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
// if the action is one the base document actions (SET_NAME, UNDO, REDO, PRUNE)
|
|
232
|
+
// then runs the base reducer first
|
|
233
|
+
if (isDocumentAction(_action)) {
|
|
234
|
+
newDocument = _baseReducer(newDocument, _action, customReducer);
|
|
235
|
+
}
|
|
236
|
+
// updates the document revision number, last modified date
|
|
237
|
+
// and operation history
|
|
238
|
+
newDocument = updateDocument(newDocument, _action, reuseLastOperationIndex, skipValue, options.replayOptions?.operation);
|
|
239
|
+
// Only process undo for actual UNDO actions, not for NOOP operations
|
|
240
|
+
// NOOP operations with skip > 0 will have their clipboard populated server-side
|
|
241
|
+
if (isUndo(action)) {
|
|
242
|
+
const result = processUndoOperation(newDocument, action.scope, customReducer);
|
|
243
|
+
return result;
|
|
244
|
+
}
|
|
245
|
+
if (shouldProcessSkipOperation) {
|
|
246
|
+
const processed = processSkipOperation(newDocument, _action, customReducer, skipValue, reuseOperationResultingState, operationResultingStateParser);
|
|
247
|
+
// Preserve operations when pruneOnSkip is false
|
|
248
|
+
if (!pruneOnSkip) {
|
|
249
|
+
newDocument = {
|
|
250
|
+
...processed,
|
|
251
|
+
operations: newDocument.operations,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
newDocument = processed;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// wraps the custom reducer with Mutative to avoid
|
|
259
|
+
// mutation bugs and allow writing reducers with
|
|
260
|
+
// mutating code
|
|
261
|
+
newDocument = create(newDocument, (draft) => {
|
|
262
|
+
// the reducer runs on a immutable version of
|
|
263
|
+
// provided state
|
|
264
|
+
try {
|
|
265
|
+
const newState = customReducer(draft.state, _action, dispatch);
|
|
266
|
+
// const clipboardValue = isUndoRedo(action) ? [...clipboard] : [];
|
|
267
|
+
// if the reducer creates a new state object instead
|
|
268
|
+
// of mutating the draft then returns the new state
|
|
269
|
+
if (newState) {
|
|
270
|
+
// Object.assign(draft.state, newState);
|
|
271
|
+
unsafe(() => {
|
|
272
|
+
// casts new state as draft to comply with typescript
|
|
273
|
+
draft.state = castDraft(newState);
|
|
274
|
+
// clipboard: [...clipboardValue],
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
// unsafe(() => {
|
|
279
|
+
// draft.clipboard = castDraft([...clipboardValue]);
|
|
280
|
+
// });
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
catch (error) {
|
|
284
|
+
// if the reducer throws an error then we should keep the previous state (before replayOperations)
|
|
285
|
+
// and remove skip number from action/operation
|
|
286
|
+
const actionScopeOps = newDocument.operations[_action.scope];
|
|
287
|
+
if (!actionScopeOps) {
|
|
288
|
+
throw new Error(`No operations found for scope: ${_action.scope}`);
|
|
289
|
+
}
|
|
290
|
+
const lastOperationIndex = actionScopeOps.length - 1;
|
|
291
|
+
const draftScopeOps = draft.operations[_action.scope];
|
|
292
|
+
if (!draftScopeOps) {
|
|
293
|
+
throw new Error(`No operations found in draft for scope: ${_action.scope}`);
|
|
294
|
+
}
|
|
295
|
+
draftScopeOps[lastOperationIndex].error = error.message;
|
|
296
|
+
draftScopeOps[lastOperationIndex].skip = 0;
|
|
297
|
+
if (shouldProcessSkipOperation) {
|
|
298
|
+
draft.state = castDraft({
|
|
299
|
+
...document.state,
|
|
300
|
+
});
|
|
301
|
+
const documentScopeOps = document.operations[_action.scope];
|
|
302
|
+
if (!documentScopeOps) {
|
|
303
|
+
throw new Error(`No operations found for scope: ${_action.scope}`);
|
|
304
|
+
}
|
|
305
|
+
draft.operations = castDraft({
|
|
306
|
+
...document.operations,
|
|
307
|
+
[_action.scope]: [
|
|
308
|
+
...documentScopeOps,
|
|
309
|
+
{
|
|
310
|
+
...draftScopeOps[lastOperationIndex],
|
|
311
|
+
},
|
|
312
|
+
],
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
});
|
|
317
|
+
// updates the document history
|
|
318
|
+
// meta operations are not added to the operations history
|
|
319
|
+
if (["UNDO", "REDO", "PRUNE"].includes(_action.type)) {
|
|
320
|
+
return newDocument;
|
|
321
|
+
}
|
|
322
|
+
// if reuseHash is true, checks if the action has
|
|
323
|
+
// an hash and uses it instead of generating it
|
|
324
|
+
const scope = _action.scope || "global";
|
|
325
|
+
let hash = hashDocumentStateForScope(newDocument, scope);
|
|
326
|
+
if (options.replayOptions?.operation.hash &&
|
|
327
|
+
options.replayOptions.operation.hash !== "") {
|
|
328
|
+
hash = options.replayOptions.operation.hash;
|
|
329
|
+
}
|
|
330
|
+
// updates the last operation with the hash of the resulting state
|
|
331
|
+
const scopeOperations = newDocument.operations[scope];
|
|
332
|
+
const lastOperation = scopeOperations?.at(-1);
|
|
333
|
+
if (lastOperation) {
|
|
334
|
+
lastOperation.hash = hash;
|
|
335
|
+
if (reuseOperationResultingState) {
|
|
336
|
+
lastOperation.resultingState = JSON.stringify(newDocument.state[scope]);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return newDocument;
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Helper function to create a document model reducer.
|
|
343
|
+
*
|
|
344
|
+
* @remarks
|
|
345
|
+
* This function creates a new reducer that wraps the provided `reducer` with
|
|
346
|
+
* `documentReducer`, adding support for document actions:
|
|
347
|
+
* - `SET_NAME`
|
|
348
|
+
* - `UNDO`
|
|
349
|
+
* - `REDO`
|
|
350
|
+
* - `PRUNE`
|
|
351
|
+
*
|
|
352
|
+
* It also updates the document-related attributes on every operation.
|
|
353
|
+
*
|
|
354
|
+
* @param reducer - The custom reducer to wrap.
|
|
355
|
+
* @param documentReducer - The document reducer to use.
|
|
356
|
+
*
|
|
357
|
+
* @returns The new reducer.
|
|
358
|
+
*/
|
|
359
|
+
export function createReducer(stateReducer, documentReducer = baseReducer) {
|
|
360
|
+
const reducer = (document, action, dispatch, options) => {
|
|
361
|
+
return documentReducer(document, action, stateReducer, dispatch, options);
|
|
362
|
+
};
|
|
363
|
+
return reducer;
|
|
364
|
+
}
|
|
365
|
+
export function pruneOperation(document, input, wrappedReducer) {
|
|
366
|
+
const operations = document.operations.global;
|
|
367
|
+
if (!operations) {
|
|
368
|
+
throw new Error("No global operations found");
|
|
369
|
+
}
|
|
370
|
+
let { start, end } = input;
|
|
371
|
+
start = start || 0;
|
|
372
|
+
end = end || operations.length;
|
|
373
|
+
const actionsToPrune = operations.slice(start, end);
|
|
374
|
+
const actionsToKeepStart = operations.slice(0, start);
|
|
375
|
+
const actionsToKeepEnd = operations.slice(end);
|
|
376
|
+
// runs all operations from the initial state to
|
|
377
|
+
// the end of prune to get name and data
|
|
378
|
+
const newDocument = replayOperations(document.initialState, {
|
|
379
|
+
...document.operations,
|
|
380
|
+
global: actionsToKeepStart.concat(actionsToPrune),
|
|
381
|
+
}, wrappedReducer);
|
|
382
|
+
const newState = newDocument.state;
|
|
383
|
+
const name = newDocument.header.name;
|
|
384
|
+
// the new operation has the index of the first pruned operation
|
|
385
|
+
const loadStateIndex = actionsToKeepStart.length;
|
|
386
|
+
// if and operation is pruned then reuses the timestamp of the last operation
|
|
387
|
+
// if not then assigns the timestamp of the following unpruned operation
|
|
388
|
+
const loadStateTimestamp = actionsToKeepStart.length
|
|
389
|
+
? actionsToKeepStart[actionsToKeepStart.length - 1].timestampUtcMs
|
|
390
|
+
: actionsToKeepEnd.length
|
|
391
|
+
? actionsToKeepEnd[0].timestampUtcMs
|
|
392
|
+
: new Date().toISOString();
|
|
393
|
+
const action = loadState({ name, ...newState }, actionsToPrune.length);
|
|
394
|
+
// replaces pruned operations with LOAD_STATE
|
|
395
|
+
return replayOperations(document.initialState, {
|
|
396
|
+
...document.operations,
|
|
397
|
+
global: [
|
|
398
|
+
...actionsToKeepStart,
|
|
399
|
+
{
|
|
400
|
+
skip: 0,
|
|
401
|
+
...action,
|
|
402
|
+
action,
|
|
403
|
+
timestampUtcMs: loadStateTimestamp,
|
|
404
|
+
index: loadStateIndex,
|
|
405
|
+
hash: hashDocumentStateForScope({ state: newState }, "global"),
|
|
406
|
+
},
|
|
407
|
+
...actionsToKeepEnd
|
|
408
|
+
// updates the index for all the following operations
|
|
409
|
+
.map((action, index) => ({
|
|
410
|
+
...action,
|
|
411
|
+
index: loadStateIndex + index + 1,
|
|
412
|
+
})),
|
|
413
|
+
],
|
|
414
|
+
}, wrappedReducer);
|
|
415
|
+
}
|
|
416
|
+
//# sourceMappingURL=reducer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reducer.js","sourceRoot":"","sources":["../../../src/core/reducer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
3
|
-
import { type Action, type DocumentFile, type LoadStateAction, type LoadStateActionInput, type LoadStateActionStateInput, type Operation, type PruneAction, type PruneActionInput, type RedoAction, type SetNameAction, type SetNameOperation, type UndoAction } from "./types.js";
|
|
2
|
+
import type { DocumentFile, LoadStateActionInput, LoadStateActionStateInput, PruneActionInput, SchemaLoadStateAction, SchemaPruneAction, SchemaRedoAction, SchemaSetNameAction, SchemaUndoAction } from "./types.js";
|
|
4
3
|
type Properties<T> = Required<{
|
|
5
4
|
[K in keyof T]: z.ZodType<T[K], any, T[K]>;
|
|
6
5
|
}>;
|
|
@@ -12,88 +11,115 @@ export declare const PruneSchema: z.ZodEnum<["PRUNE"]>;
|
|
|
12
11
|
export declare const RedoSchema: z.ZodEnum<["REDO"]>;
|
|
13
12
|
export declare const Set_NameSchema: z.ZodEnum<["SET_NAME"]>;
|
|
14
13
|
export declare const UndoSchema: z.ZodEnum<["UNDO"]>;
|
|
15
|
-
export declare function
|
|
16
|
-
export declare function OperationScopeSchema(): z.ZodType<OperationScope>;
|
|
14
|
+
export declare function OperationScopeSchema(): z.ZodString;
|
|
17
15
|
export declare function DocumentActionSchema(): z.ZodUnion<[z.ZodObject<Required<{
|
|
16
|
+
id: z.ZodType<string, any, string>;
|
|
17
|
+
timestampUtcMs: z.ZodType<string, any, string>;
|
|
18
18
|
input: z.ZodType<LoadStateActionInput, any, LoadStateActionInput>;
|
|
19
19
|
type: z.ZodType<"LOAD_STATE", any, "LOAD_STATE">;
|
|
20
|
-
scope: z.ZodType<
|
|
20
|
+
scope: z.ZodType<string, any, string>;
|
|
21
21
|
}>, z.UnknownKeysParam, z.ZodTypeAny, {
|
|
22
|
+
id: import("./types.js").Scalars["String"]["output"];
|
|
23
|
+
timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
|
|
22
24
|
input: LoadStateActionInput;
|
|
23
25
|
type: import("./types.js").Load_State;
|
|
24
|
-
scope:
|
|
26
|
+
scope: string;
|
|
25
27
|
}, {
|
|
28
|
+
id: import("./types.js").Scalars["String"]["output"];
|
|
29
|
+
timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
|
|
26
30
|
input: LoadStateActionInput;
|
|
27
31
|
type: import("./types.js").Load_State;
|
|
28
|
-
scope:
|
|
32
|
+
scope: string;
|
|
29
33
|
}>, z.ZodObject<Required<{
|
|
34
|
+
id: z.ZodType<string, any, string>;
|
|
35
|
+
timestampUtcMs: z.ZodType<string, any, string>;
|
|
30
36
|
input: z.ZodType<PruneActionInput, any, PruneActionInput>;
|
|
31
37
|
type: z.ZodType<"PRUNE", any, "PRUNE">;
|
|
32
|
-
scope: z.ZodType<
|
|
38
|
+
scope: z.ZodType<string, any, string>;
|
|
33
39
|
}>, z.UnknownKeysParam, z.ZodTypeAny, {
|
|
40
|
+
id: import("./types.js").Scalars["String"]["output"];
|
|
41
|
+
timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
|
|
34
42
|
input: PruneActionInput;
|
|
35
43
|
type: import("./types.js").Prune;
|
|
36
|
-
scope:
|
|
44
|
+
scope: string;
|
|
37
45
|
}, {
|
|
46
|
+
id: import("./types.js").Scalars["String"]["output"];
|
|
47
|
+
timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
|
|
38
48
|
input: PruneActionInput;
|
|
39
49
|
type: import("./types.js").Prune;
|
|
40
|
-
scope:
|
|
50
|
+
scope: string;
|
|
41
51
|
}>, z.ZodObject<Required<{
|
|
52
|
+
id: z.ZodType<string, any, string>;
|
|
53
|
+
timestampUtcMs: z.ZodType<string, any, string>;
|
|
42
54
|
input: z.ZodType<number, any, number>;
|
|
43
55
|
type: z.ZodType<"REDO", any, "REDO">;
|
|
44
|
-
scope: z.ZodType<
|
|
56
|
+
scope: z.ZodType<string, any, string>;
|
|
45
57
|
}>, z.UnknownKeysParam, z.ZodTypeAny, {
|
|
58
|
+
id: import("./types.js").Scalars["String"]["output"];
|
|
59
|
+
timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
|
|
46
60
|
input: import("./types.js").Scalars["Int"]["input"];
|
|
47
61
|
type: import("./types.js").Redo;
|
|
48
|
-
scope:
|
|
62
|
+
scope: string;
|
|
49
63
|
}, {
|
|
64
|
+
id: import("./types.js").Scalars["String"]["output"];
|
|
65
|
+
timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
|
|
50
66
|
input: import("./types.js").Scalars["Int"]["input"];
|
|
51
67
|
type: import("./types.js").Redo;
|
|
52
|
-
scope:
|
|
68
|
+
scope: string;
|
|
53
69
|
}>, z.ZodObject<Required<{
|
|
70
|
+
id: z.ZodType<string, any, string>;
|
|
71
|
+
timestampUtcMs: z.ZodType<string, any, string>;
|
|
54
72
|
input: z.ZodType<string, any, string>;
|
|
55
73
|
type: z.ZodType<"SET_NAME", any, "SET_NAME">;
|
|
56
74
|
scope: z.ZodType<"global", any, "global">;
|
|
57
75
|
}>, z.UnknownKeysParam, z.ZodTypeAny, {
|
|
76
|
+
id: import("./types.js").Scalars["String"]["output"];
|
|
77
|
+
timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
|
|
58
78
|
input: import("./types.js").Scalars["String"]["input"];
|
|
59
79
|
type: import("./types.js").Set_Name;
|
|
60
80
|
scope: "global";
|
|
61
81
|
}, {
|
|
82
|
+
id: import("./types.js").Scalars["String"]["output"];
|
|
83
|
+
timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
|
|
62
84
|
input: import("./types.js").Scalars["String"]["input"];
|
|
63
85
|
type: import("./types.js").Set_Name;
|
|
64
86
|
scope: "global";
|
|
65
87
|
}>, z.ZodObject<Required<{
|
|
88
|
+
id: z.ZodType<string, any, string>;
|
|
89
|
+
timestampUtcMs: z.ZodType<string, any, string>;
|
|
66
90
|
input: z.ZodType<number, any, number>;
|
|
67
91
|
type: z.ZodType<"UNDO", any, "UNDO">;
|
|
68
|
-
scope: z.ZodType<
|
|
92
|
+
scope: z.ZodType<string, any, string>;
|
|
69
93
|
}>, z.UnknownKeysParam, z.ZodTypeAny, {
|
|
94
|
+
id: import("./types.js").Scalars["String"]["output"];
|
|
95
|
+
timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
|
|
70
96
|
input: import("./types.js").Scalars["Int"]["input"];
|
|
71
97
|
type: import("./types.js").Undo;
|
|
72
|
-
scope:
|
|
98
|
+
scope: string;
|
|
73
99
|
}, {
|
|
100
|
+
id: import("./types.js").Scalars["String"]["output"];
|
|
101
|
+
timestampUtcMs: import("./types.js").Scalars["DateTime"]["output"];
|
|
74
102
|
input: import("./types.js").Scalars["Int"]["input"];
|
|
75
103
|
type: import("./types.js").Undo;
|
|
76
|
-
scope:
|
|
104
|
+
scope: string;
|
|
77
105
|
}>]>;
|
|
78
106
|
export declare function DocumentFileSchema(): z.ZodObject<Properties<DocumentFile>>;
|
|
79
|
-
export declare function LoadStateActionSchema(): z.ZodObject<Properties<
|
|
107
|
+
export declare function LoadStateActionSchema(): z.ZodObject<Properties<SchemaLoadStateAction>>;
|
|
80
108
|
export declare function LoadStateActionInputSchema(): z.ZodObject<Properties<LoadStateActionInput>>;
|
|
81
109
|
export declare function LoadStateActionStateInputSchema(): z.ZodObject<Properties<LoadStateActionStateInput>>;
|
|
82
|
-
export declare function
|
|
83
|
-
export declare function PruneActionSchema(): z.ZodObject<Properties<PruneAction>>;
|
|
110
|
+
export declare function PruneActionSchema(): z.ZodObject<Properties<SchemaPruneAction>>;
|
|
84
111
|
export declare function PruneActionInputSchema(): z.ZodObject<Properties<PruneActionInput>>;
|
|
85
112
|
export declare const RedoActionInputSchema: (params?: z.RawCreateParams & {
|
|
86
113
|
coerce?: boolean;
|
|
87
114
|
}) => z.ZodNumber;
|
|
88
|
-
export declare function RedoActionSchema(): z.ZodObject<Properties<
|
|
115
|
+
export declare function RedoActionSchema(): z.ZodObject<Properties<SchemaRedoAction>>;
|
|
89
116
|
export declare const SetNameActionInputSchema: (params?: z.RawCreateParams & {
|
|
90
117
|
coerce?: true;
|
|
91
118
|
}) => z.ZodString;
|
|
92
|
-
export declare function SetNameActionSchema(): z.ZodObject<Properties<
|
|
93
|
-
export declare function SetNameOperationSchema(): z.ZodObject<Properties<SetNameOperation>>;
|
|
119
|
+
export declare function SetNameActionSchema(): z.ZodObject<Properties<SchemaSetNameAction>>;
|
|
94
120
|
export declare const UndoActionInputSchema: (params?: z.RawCreateParams & {
|
|
95
121
|
coerce?: boolean;
|
|
96
122
|
}) => z.ZodNumber;
|
|
97
|
-
export declare function UndoActionSchema(): z.ZodObject<Properties<
|
|
123
|
+
export declare function UndoActionSchema(): z.ZodObject<Properties<SchemaUndoAction>>;
|
|
98
124
|
export {};
|
|
99
|
-
//# sourceMappingURL=
|
|
125
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/core/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,KAAK,UAAU,CAAC,CAAC,IAAI,QAAQ,CAAC;KAC3B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CAC3C,CAAC,CAAC;AAEH,KAAK,iBAAiB,GAAG,EAAE,CAAC;AAE5B,eAAO,MAAM,mBAAmB,GAAI,GAAG,GAAG,KAAG,CAAC,IAAI,iBACnB,CAAC;AAEhC,eAAO,MAAM,uBAAuB,gDAEI,CAAC;AAEzC,eAAO,MAAM,gBAAgB,2BAAyB,CAAC;AAEvD,eAAO,MAAM,WAAW,sBAAoB,CAAC;AAE7C,eAAO,MAAM,UAAU,qBAAmB,CAAC;AAE3C,eAAO,MAAM,cAAc,yBAAuB,CAAC;AAEnD,eAAO,MAAM,UAAU,qBAAmB,CAAC;AAE3C,wBAAgB,oBAAoB,IAAI,CAAC,CAAC,SAAS,CAElD;AAED,wBAAgB,oBAAoB;;;;;;;QA+DjC,sCAAkB;oBAEN,wCACA;;;;;QAHZ,sCAAkB;oBAEN,wCACA;;;;;;;;;;;QA+BuB,sCAAkB;oBAC7B,wCAErB;;;;;QAHgC,sCAAkB;oBAC7B,wCAErB;;;;;;;;;;;QAYuD,sCAAkB;oBAEvE,wCACA;WAAoB,mCAC5B;;;;QAJ6D,sCAAkB;oBAEvE,wCACA;WAAoB,mCAC5B;;;;;;;;;;QAKsB,sCAAkB;oBAA6B,wCAAoB;WAAoB,sCAAkB;;;;QAAzG,sCAAkB;oBAA6B,wCAAoB;WAAoB,sCAAkB;;;;;;;;;;QAA0Y,sCAAkB;oBAA6B,wCAAoB;WAAoB,mCAAe;;;;QAAtG,sCAAkB;oBAA6B,wCAAoB;WAAoB,mCAAe;;;KAjH9mB;AAED,wBAAgB,kBAAkB,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAQ1E;AAED,wBAAgB,qBAAqB,IAAI,CAAC,CAAC,SAAS,CAClD,UAAU,CAAC,qBAAqB,CAAC,CAClC,CAQA;AAED,wBAAgB,0BAA0B,IAAI,CAAC,CAAC,SAAS,CACvD,UAAU,CAAC,oBAAoB,CAAC,CACjC,CAKA;AAED,wBAAgB,+BAA+B,IAAI,CAAC,CAAC,SAAS,CAC5D,UAAU,CAAC,yBAAyB,CAAC,CACtC,CAKA;AAED,wBAAgB,iBAAiB,IAAI,CAAC,CAAC,SAAS,CAC9C,UAAU,CAAC,iBAAiB,CAAC,CAC9B,CAQA;AAED,wBAAgB,sBAAsB,IAAI,CAAC,CAAC,SAAS,CACnD,UAAU,CAAC,gBAAgB,CAAC,CAC7B,CAKA;AAED,eAAO,MAAM,qBAAqB;UAkD8v0C,CAAC;iBAlDpv0C,CAAC;AAE9C,wBAAgB,gBAAgB,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAQ5E;AAED,eAAO,MAAM,wBAAwB;UAsC+p0C,CAAC;iBAtCrp0C,CAAC;AAEjD,wBAAgB,mBAAmB,IAAI,CAAC,CAAC,SAAS,CAChD,UAAU,CAAC,mBAAmB,CAAC,CAChC,CAQA;AAeD,eAAO,MAAM,qBAAqB;UAW8v0C,CAAC;iBAXpv0C,CAAC;AAE9C,wBAAgB,gBAAgB,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAQ5E"}
|