document-model 1.1.0-debug.1 → 1.1.0-debug.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/browser/cjs/document-model.js +15 -35
- package/dist/browser/cjs/document-model.js.map +1 -1
- package/dist/browser/cjs/document.js +10 -10
- package/dist/browser/cjs/index.js +11 -7
- package/dist/browser/cjs/index.js.map +1 -1
- package/dist/browser/cjs/internal/index-CaJbS06G.js +2339 -0
- package/dist/browser/cjs/internal/index-CaJbS06G.js.map +1 -0
- package/dist/browser/cjs/internal/index-kKIg6qNB.js +44 -0
- package/dist/browser/cjs/internal/index-kKIg6qNB.js.map +1 -0
- package/dist/browser/cjs/internal/object-B6dSDhtS.js +4109 -0
- package/dist/browser/cjs/internal/object-B6dSDhtS.js.map +1 -0
- package/dist/browser/es/document-model.js +16 -37
- package/dist/browser/es/document-model.js.map +1 -1
- package/dist/browser/es/document.js +12 -12
- package/dist/browser/es/index.js +11 -7
- package/dist/browser/es/index.js.map +1 -1
- package/dist/browser/es/internal/index-B1lQN59e.js +2340 -0
- package/dist/browser/es/internal/index-B1lQN59e.js.map +1 -0
- package/dist/browser/es/internal/index-Bu0CkmrW.js +45 -0
- package/dist/browser/es/internal/index-Bu0CkmrW.js.map +1 -0
- package/dist/browser/es/internal/object-9mR1JlXD.js +4110 -0
- package/dist/browser/es/internal/object-9mR1JlXD.js.map +1 -0
- package/dist/node/cjs/document-model.js +15 -33
- package/dist/node/cjs/document-model.js.map +1 -1
- package/dist/node/cjs/document.js +14 -10
- package/dist/node/cjs/document.js.map +1 -1
- package/dist/node/cjs/index.js +15 -7
- package/dist/node/cjs/index.js.map +1 -1
- package/dist/node/cjs/internal/index-AqiVmL0w.js +44 -0
- package/dist/node/cjs/internal/index-AqiVmL0w.js.map +1 -0
- package/dist/node/cjs/internal/index-ajqhOWQ1.js +2343 -0
- package/dist/node/cjs/internal/index-ajqhOWQ1.js.map +1 -0
- package/dist/node/cjs/internal/object-D_9h7jBN.js +2111 -0
- package/dist/node/cjs/internal/object-D_9h7jBN.js.map +1 -0
- package/dist/node/es/document-model.js +16 -35
- package/dist/node/es/document-model.js.map +1 -1
- package/dist/node/es/document.js +16 -12
- package/dist/node/es/document.js.map +1 -1
- package/dist/node/es/index.js +15 -7
- package/dist/node/es/index.js.map +1 -1
- package/dist/node/es/internal/index-Bh_09edy.js +2344 -0
- package/dist/node/es/internal/index-Bh_09edy.js.map +1 -0
- package/dist/node/es/internal/index-s6NFw7Kq.js +45 -0
- package/dist/node/es/internal/index-s6NFw7Kq.js.map +1 -0
- package/dist/node/es/internal/object-CbITi4iq.js +2112 -0
- package/dist/node/es/internal/object-CbITi4iq.js.map +1 -0
- package/dist/src/document/reducer.d.ts +13 -2
- package/dist/src/document/utils/base.d.ts +1 -1
- package/dist/src/document/utils/document-helpers.d.ts +53 -0
- package/dist/src/document/utils/index.d.ts +1 -0
- package/package.json +1 -1
- package/dist/browser/cjs/_virtual/_commonjsHelpers.js +0 -7
- package/dist/browser/cjs/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/browser/cjs/_virtual/browser.js +0 -35
- package/dist/browser/cjs/_virtual/browser.js.map +0 -1
- package/dist/browser/cjs/_virtual/index.js +0 -5
- package/dist/browser/cjs/_virtual/index.js.map +0 -1
- package/dist/browser/cjs/_virtual/index2.js +0 -5
- package/dist/browser/cjs/_virtual/index2.js.map +0 -1
- package/dist/browser/cjs/_virtual/index3.js +0 -5
- package/dist/browser/cjs/_virtual/index3.js.map +0 -1
- package/dist/browser/cjs/_virtual/index4.js +0 -5
- package/dist/browser/cjs/_virtual/index4.js.map +0 -1
- package/dist/browser/cjs/_virtual/index5.js +0 -5
- package/dist/browser/cjs/_virtual/index5.js.map +0 -1
- package/dist/browser/cjs/_virtual/inherits_browser.js +0 -5
- package/dist/browser/cjs/_virtual/inherits_browser.js.map +0 -1
- package/dist/browser/cjs/src/document/actions/creators.js +0 -46
- package/dist/browser/cjs/src/document/actions/creators.js.map +0 -1
- package/dist/browser/cjs/src/document/actions/index.js +0 -173
- package/dist/browser/cjs/src/document/actions/index.js.map +0 -1
- package/dist/browser/cjs/src/document/actions/types.js +0 -15
- package/dist/browser/cjs/src/document/actions/types.js.map +0 -1
- package/dist/browser/cjs/src/document/object.js +0 -190
- package/dist/browser/cjs/src/document/object.js.map +0 -1
- package/dist/browser/cjs/src/document/reducer.js +0 -192
- package/dist/browser/cjs/src/document/reducer.js.map +0 -1
- package/dist/browser/cjs/src/document/schema/zod.js +0 -137
- package/dist/browser/cjs/src/document/schema/zod.js.map +0 -1
- package/dist/browser/cjs/src/document/utils/base.js +0 -220
- package/dist/browser/cjs/src/document/utils/base.js.map +0 -1
- package/dist/browser/cjs/src/document/utils/document-helpers.js +0 -324
- package/dist/browser/cjs/src/document/utils/document-helpers.js.map +0 -1
- package/dist/browser/cjs/src/document/utils/file.js +0 -135
- package/dist/browser/cjs/src/document/utils/file.js.map +0 -1
- package/dist/browser/cjs/src/document/utils/index.js +0 -33
- package/dist/browser/cjs/src/document/utils/index.js.map +0 -1
- package/dist/browser/cjs/src/document/utils/validation.js +0 -24
- package/dist/browser/cjs/src/document/utils/validation.js.map +0 -1
- package/dist/browser/cjs/src/document-model/custom/reducers/header.js +0 -26
- package/dist/browser/cjs/src/document-model/custom/reducers/header.js.map +0 -1
- package/dist/browser/cjs/src/document-model/custom/reducers/module.js +0 -46
- package/dist/browser/cjs/src/document-model/custom/reducers/module.js.map +0 -1
- package/dist/browser/cjs/src/document-model/custom/reducers/operation-error.js +0 -95
- package/dist/browser/cjs/src/document-model/custom/reducers/operation-error.js.map +0 -1
- package/dist/browser/cjs/src/document-model/custom/reducers/operation-example.js +0 -58
- package/dist/browser/cjs/src/document-model/custom/reducers/operation-example.js.map +0 -1
- package/dist/browser/cjs/src/document-model/custom/reducers/operation.js +0 -123
- package/dist/browser/cjs/src/document-model/custom/reducers/operation.js.map +0 -1
- package/dist/browser/cjs/src/document-model/custom/reducers/state.js +0 -66
- package/dist/browser/cjs/src/document-model/custom/reducers/state.js.map +0 -1
- package/dist/browser/cjs/src/document-model/custom/reducers/versioning.js +0 -31
- package/dist/browser/cjs/src/document-model/custom/reducers/versioning.js.map +0 -1
- package/dist/browser/cjs/src/document-model/custom/utils.js +0 -117
- package/dist/browser/cjs/src/document-model/custom/utils.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/creators.js +0 -53
- package/dist/browser/cjs/src/document-model/gen/creators.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/document-model.js +0 -545
- package/dist/browser/cjs/src/document-model/gen/document-model.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/header/creators.js +0 -39
- package/dist/browser/cjs/src/document-model/gen/header/creators.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/header/object.js +0 -26
- package/dist/browser/cjs/src/document-model/gen/header/object.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/module/creators.js +0 -34
- package/dist/browser/cjs/src/document-model/gen/module/creators.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/module/object.js +0 -23
- package/dist/browser/cjs/src/document-model/gen/module/object.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/object.js +0 -47
- package/dist/browser/cjs/src/document-model/gen/object.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/operation/creators.js +0 -59
- package/dist/browser/cjs/src/document-model/gen/operation/creators.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/operation/object.js +0 -38
- package/dist/browser/cjs/src/document-model/gen/operation/object.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/operation-error/creators.js +0 -44
- package/dist/browser/cjs/src/document-model/gen/operation-error/creators.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/operation-error/object.js +0 -29
- package/dist/browser/cjs/src/document-model/gen/operation-error/object.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/operation-example/creators.js +0 -29
- package/dist/browser/cjs/src/document-model/gen/operation-example/creators.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/operation-example/object.js +0 -20
- package/dist/browser/cjs/src/document-model/gen/operation-example/object.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/reducer.js +0 -255
- package/dist/browser/cjs/src/document-model/gen/reducer.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/schema/zod.js +0 -449
- package/dist/browser/cjs/src/document-model/gen/schema/zod.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/state/creators.js +0 -39
- package/dist/browser/cjs/src/document-model/gen/state/creators.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/state/object.js +0 -26
- package/dist/browser/cjs/src/document-model/gen/state/object.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/utils.js +0 -75
- package/dist/browser/cjs/src/document-model/gen/utils.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/versioning/creators.js +0 -33
- package/dist/browser/cjs/src/document-model/gen/versioning/creators.js.map +0 -1
- package/dist/browser/cjs/src/document-model/gen/versioning/object.js +0 -23
- package/dist/browser/cjs/src/document-model/gen/versioning/object.js.map +0 -1
- package/dist/browser/es/_virtual/_commonjsHelpers.js +0 -7
- package/dist/browser/es/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/browser/es/_virtual/browser.js +0 -35
- package/dist/browser/es/_virtual/browser.js.map +0 -1
- package/dist/browser/es/_virtual/index.js +0 -5
- package/dist/browser/es/_virtual/index.js.map +0 -1
- package/dist/browser/es/_virtual/index2.js +0 -5
- package/dist/browser/es/_virtual/index2.js.map +0 -1
- package/dist/browser/es/_virtual/index3.js +0 -5
- package/dist/browser/es/_virtual/index3.js.map +0 -1
- package/dist/browser/es/_virtual/index4.js +0 -5
- package/dist/browser/es/_virtual/index4.js.map +0 -1
- package/dist/browser/es/_virtual/index5.js +0 -5
- package/dist/browser/es/_virtual/index5.js.map +0 -1
- package/dist/browser/es/_virtual/inherits_browser.js +0 -5
- package/dist/browser/es/_virtual/inherits_browser.js.map +0 -1
- package/dist/browser/es/src/document/actions/creators.js +0 -46
- package/dist/browser/es/src/document/actions/creators.js.map +0 -1
- package/dist/browser/es/src/document/actions/index.js +0 -174
- package/dist/browser/es/src/document/actions/index.js.map +0 -1
- package/dist/browser/es/src/document/actions/types.js +0 -15
- package/dist/browser/es/src/document/actions/types.js.map +0 -1
- package/dist/browser/es/src/document/object.js +0 -190
- package/dist/browser/es/src/document/object.js.map +0 -1
- package/dist/browser/es/src/document/reducer.js +0 -192
- package/dist/browser/es/src/document/reducer.js.map +0 -1
- package/dist/browser/es/src/document/schema/zod.js +0 -137
- package/dist/browser/es/src/document/schema/zod.js.map +0 -1
- package/dist/browser/es/src/document/utils/base.js +0 -220
- package/dist/browser/es/src/document/utils/base.js.map +0 -1
- package/dist/browser/es/src/document/utils/document-helpers.js +0 -324
- package/dist/browser/es/src/document/utils/document-helpers.js.map +0 -1
- package/dist/browser/es/src/document/utils/file.js +0 -135
- package/dist/browser/es/src/document/utils/file.js.map +0 -1
- package/dist/browser/es/src/document/utils/index.js +0 -33
- package/dist/browser/es/src/document/utils/index.js.map +0 -1
- package/dist/browser/es/src/document/utils/validation.js +0 -24
- package/dist/browser/es/src/document/utils/validation.js.map +0 -1
- package/dist/browser/es/src/document-model/custom/reducers/header.js +0 -26
- package/dist/browser/es/src/document-model/custom/reducers/header.js.map +0 -1
- package/dist/browser/es/src/document-model/custom/reducers/module.js +0 -46
- package/dist/browser/es/src/document-model/custom/reducers/module.js.map +0 -1
- package/dist/browser/es/src/document-model/custom/reducers/operation-error.js +0 -95
- package/dist/browser/es/src/document-model/custom/reducers/operation-error.js.map +0 -1
- package/dist/browser/es/src/document-model/custom/reducers/operation-example.js +0 -58
- package/dist/browser/es/src/document-model/custom/reducers/operation-example.js.map +0 -1
- package/dist/browser/es/src/document-model/custom/reducers/operation.js +0 -123
- package/dist/browser/es/src/document-model/custom/reducers/operation.js.map +0 -1
- package/dist/browser/es/src/document-model/custom/reducers/state.js +0 -66
- package/dist/browser/es/src/document-model/custom/reducers/state.js.map +0 -1
- package/dist/browser/es/src/document-model/custom/reducers/versioning.js +0 -31
- package/dist/browser/es/src/document-model/custom/reducers/versioning.js.map +0 -1
- package/dist/browser/es/src/document-model/custom/utils.js +0 -117
- package/dist/browser/es/src/document-model/custom/utils.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/creators.js +0 -53
- package/dist/browser/es/src/document-model/gen/creators.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/document-model.js +0 -545
- package/dist/browser/es/src/document-model/gen/document-model.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/header/creators.js +0 -39
- package/dist/browser/es/src/document-model/gen/header/creators.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/header/object.js +0 -26
- package/dist/browser/es/src/document-model/gen/header/object.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/module/creators.js +0 -34
- package/dist/browser/es/src/document-model/gen/module/creators.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/module/object.js +0 -23
- package/dist/browser/es/src/document-model/gen/module/object.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/object.js +0 -47
- package/dist/browser/es/src/document-model/gen/object.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/operation/creators.js +0 -59
- package/dist/browser/es/src/document-model/gen/operation/creators.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/operation/object.js +0 -38
- package/dist/browser/es/src/document-model/gen/operation/object.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/operation-error/creators.js +0 -44
- package/dist/browser/es/src/document-model/gen/operation-error/creators.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/operation-error/object.js +0 -29
- package/dist/browser/es/src/document-model/gen/operation-error/object.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/operation-example/creators.js +0 -29
- package/dist/browser/es/src/document-model/gen/operation-example/creators.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/operation-example/object.js +0 -20
- package/dist/browser/es/src/document-model/gen/operation-example/object.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/reducer.js +0 -255
- package/dist/browser/es/src/document-model/gen/reducer.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/schema/zod.js +0 -449
- package/dist/browser/es/src/document-model/gen/schema/zod.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/state/creators.js +0 -39
- package/dist/browser/es/src/document-model/gen/state/creators.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/state/object.js +0 -26
- package/dist/browser/es/src/document-model/gen/state/object.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/utils.js +0 -75
- package/dist/browser/es/src/document-model/gen/utils.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/versioning/creators.js +0 -33
- package/dist/browser/es/src/document-model/gen/versioning/creators.js.map +0 -1
- package/dist/browser/es/src/document-model/gen/versioning/object.js +0 -23
- package/dist/browser/es/src/document-model/gen/versioning/object.js.map +0 -1
- package/dist/node/cjs/_virtual/_commonjsHelpers.js +0 -7
- package/dist/node/cjs/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/node/cjs/_virtual/index.js +0 -5
- package/dist/node/cjs/_virtual/index.js.map +0 -1
- package/dist/node/cjs/src/document/actions/creators.js +0 -46
- package/dist/node/cjs/src/document/actions/creators.js.map +0 -1
- package/dist/node/cjs/src/document/actions/index.js +0 -173
- package/dist/node/cjs/src/document/actions/index.js.map +0 -1
- package/dist/node/cjs/src/document/actions/types.js +0 -15
- package/dist/node/cjs/src/document/actions/types.js.map +0 -1
- package/dist/node/cjs/src/document/object.js +0 -190
- package/dist/node/cjs/src/document/object.js.map +0 -1
- package/dist/node/cjs/src/document/reducer.js +0 -194
- package/dist/node/cjs/src/document/reducer.js.map +0 -1
- package/dist/node/cjs/src/document/schema/zod.js +0 -137
- package/dist/node/cjs/src/document/schema/zod.js.map +0 -1
- package/dist/node/cjs/src/document/utils/base.js +0 -220
- package/dist/node/cjs/src/document/utils/base.js.map +0 -1
- package/dist/node/cjs/src/document/utils/document-helpers.js +0 -324
- package/dist/node/cjs/src/document/utils/document-helpers.js.map +0 -1
- package/dist/node/cjs/src/document/utils/file.js +0 -136
- package/dist/node/cjs/src/document/utils/file.js.map +0 -1
- package/dist/node/cjs/src/document/utils/index.js +0 -33
- package/dist/node/cjs/src/document/utils/index.js.map +0 -1
- package/dist/node/cjs/src/document/utils/node.js +0 -54
- package/dist/node/cjs/src/document/utils/node.js.map +0 -1
- package/dist/node/cjs/src/document/utils/validation.js +0 -24
- package/dist/node/cjs/src/document/utils/validation.js.map +0 -1
- package/dist/node/cjs/src/document-model/custom/reducers/header.js +0 -26
- package/dist/node/cjs/src/document-model/custom/reducers/header.js.map +0 -1
- package/dist/node/cjs/src/document-model/custom/reducers/module.js +0 -46
- package/dist/node/cjs/src/document-model/custom/reducers/module.js.map +0 -1
- package/dist/node/cjs/src/document-model/custom/reducers/operation-error.js +0 -95
- package/dist/node/cjs/src/document-model/custom/reducers/operation-error.js.map +0 -1
- package/dist/node/cjs/src/document-model/custom/reducers/operation-example.js +0 -58
- package/dist/node/cjs/src/document-model/custom/reducers/operation-example.js.map +0 -1
- package/dist/node/cjs/src/document-model/custom/reducers/operation.js +0 -123
- package/dist/node/cjs/src/document-model/custom/reducers/operation.js.map +0 -1
- package/dist/node/cjs/src/document-model/custom/reducers/state.js +0 -66
- package/dist/node/cjs/src/document-model/custom/reducers/state.js.map +0 -1
- package/dist/node/cjs/src/document-model/custom/reducers/versioning.js +0 -31
- package/dist/node/cjs/src/document-model/custom/reducers/versioning.js.map +0 -1
- package/dist/node/cjs/src/document-model/custom/utils.js +0 -117
- package/dist/node/cjs/src/document-model/custom/utils.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/creators.js +0 -53
- package/dist/node/cjs/src/document-model/gen/creators.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/document-model.js +0 -545
- package/dist/node/cjs/src/document-model/gen/document-model.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/header/creators.js +0 -41
- package/dist/node/cjs/src/document-model/gen/header/creators.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/header/object.js +0 -26
- package/dist/node/cjs/src/document-model/gen/header/object.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/module/creators.js +0 -36
- package/dist/node/cjs/src/document-model/gen/module/creators.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/module/object.js +0 -23
- package/dist/node/cjs/src/document-model/gen/module/object.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/object.js +0 -47
- package/dist/node/cjs/src/document-model/gen/object.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/operation/creators.js +0 -61
- package/dist/node/cjs/src/document-model/gen/operation/creators.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/operation/object.js +0 -38
- package/dist/node/cjs/src/document-model/gen/operation/object.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/operation-error/creators.js +0 -46
- package/dist/node/cjs/src/document-model/gen/operation-error/creators.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/operation-error/object.js +0 -29
- package/dist/node/cjs/src/document-model/gen/operation-error/object.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/operation-example/creators.js +0 -31
- package/dist/node/cjs/src/document-model/gen/operation-example/creators.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/operation-example/object.js +0 -20
- package/dist/node/cjs/src/document-model/gen/operation-example/object.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/reducer.js +0 -257
- package/dist/node/cjs/src/document-model/gen/reducer.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/schema/zod.js +0 -449
- package/dist/node/cjs/src/document-model/gen/schema/zod.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/state/creators.js +0 -41
- package/dist/node/cjs/src/document-model/gen/state/creators.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/state/object.js +0 -26
- package/dist/node/cjs/src/document-model/gen/state/object.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/utils.js +0 -75
- package/dist/node/cjs/src/document-model/gen/utils.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/versioning/creators.js +0 -35
- package/dist/node/cjs/src/document-model/gen/versioning/creators.js.map +0 -1
- package/dist/node/cjs/src/document-model/gen/versioning/object.js +0 -23
- package/dist/node/cjs/src/document-model/gen/versioning/object.js.map +0 -1
- package/dist/node/es/_virtual/_commonjsHelpers.js +0 -7
- package/dist/node/es/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/node/es/_virtual/index.js +0 -5
- package/dist/node/es/_virtual/index.js.map +0 -1
- package/dist/node/es/src/document/actions/creators.js +0 -46
- package/dist/node/es/src/document/actions/creators.js.map +0 -1
- package/dist/node/es/src/document/actions/index.js +0 -174
- package/dist/node/es/src/document/actions/index.js.map +0 -1
- package/dist/node/es/src/document/actions/types.js +0 -15
- package/dist/node/es/src/document/actions/types.js.map +0 -1
- package/dist/node/es/src/document/object.js +0 -190
- package/dist/node/es/src/document/object.js.map +0 -1
- package/dist/node/es/src/document/reducer.js +0 -194
- package/dist/node/es/src/document/reducer.js.map +0 -1
- package/dist/node/es/src/document/schema/zod.js +0 -137
- package/dist/node/es/src/document/schema/zod.js.map +0 -1
- package/dist/node/es/src/document/utils/base.js +0 -220
- package/dist/node/es/src/document/utils/base.js.map +0 -1
- package/dist/node/es/src/document/utils/document-helpers.js +0 -324
- package/dist/node/es/src/document/utils/document-helpers.js.map +0 -1
- package/dist/node/es/src/document/utils/file.js +0 -136
- package/dist/node/es/src/document/utils/file.js.map +0 -1
- package/dist/node/es/src/document/utils/index.js +0 -33
- package/dist/node/es/src/document/utils/index.js.map +0 -1
- package/dist/node/es/src/document/utils/node.js +0 -54
- package/dist/node/es/src/document/utils/node.js.map +0 -1
- package/dist/node/es/src/document/utils/validation.js +0 -24
- package/dist/node/es/src/document/utils/validation.js.map +0 -1
- package/dist/node/es/src/document-model/custom/reducers/header.js +0 -26
- package/dist/node/es/src/document-model/custom/reducers/header.js.map +0 -1
- package/dist/node/es/src/document-model/custom/reducers/module.js +0 -46
- package/dist/node/es/src/document-model/custom/reducers/module.js.map +0 -1
- package/dist/node/es/src/document-model/custom/reducers/operation-error.js +0 -95
- package/dist/node/es/src/document-model/custom/reducers/operation-error.js.map +0 -1
- package/dist/node/es/src/document-model/custom/reducers/operation-example.js +0 -58
- package/dist/node/es/src/document-model/custom/reducers/operation-example.js.map +0 -1
- package/dist/node/es/src/document-model/custom/reducers/operation.js +0 -123
- package/dist/node/es/src/document-model/custom/reducers/operation.js.map +0 -1
- package/dist/node/es/src/document-model/custom/reducers/state.js +0 -66
- package/dist/node/es/src/document-model/custom/reducers/state.js.map +0 -1
- package/dist/node/es/src/document-model/custom/reducers/versioning.js +0 -31
- package/dist/node/es/src/document-model/custom/reducers/versioning.js.map +0 -1
- package/dist/node/es/src/document-model/custom/utils.js +0 -117
- package/dist/node/es/src/document-model/custom/utils.js.map +0 -1
- package/dist/node/es/src/document-model/gen/creators.js +0 -53
- package/dist/node/es/src/document-model/gen/creators.js.map +0 -1
- package/dist/node/es/src/document-model/gen/document-model.js +0 -545
- package/dist/node/es/src/document-model/gen/document-model.js.map +0 -1
- package/dist/node/es/src/document-model/gen/header/creators.js +0 -41
- package/dist/node/es/src/document-model/gen/header/creators.js.map +0 -1
- package/dist/node/es/src/document-model/gen/header/object.js +0 -26
- package/dist/node/es/src/document-model/gen/header/object.js.map +0 -1
- package/dist/node/es/src/document-model/gen/module/creators.js +0 -36
- package/dist/node/es/src/document-model/gen/module/creators.js.map +0 -1
- package/dist/node/es/src/document-model/gen/module/object.js +0 -23
- package/dist/node/es/src/document-model/gen/module/object.js.map +0 -1
- package/dist/node/es/src/document-model/gen/object.js +0 -47
- package/dist/node/es/src/document-model/gen/object.js.map +0 -1
- package/dist/node/es/src/document-model/gen/operation/creators.js +0 -61
- package/dist/node/es/src/document-model/gen/operation/creators.js.map +0 -1
- package/dist/node/es/src/document-model/gen/operation/object.js +0 -38
- package/dist/node/es/src/document-model/gen/operation/object.js.map +0 -1
- package/dist/node/es/src/document-model/gen/operation-error/creators.js +0 -46
- package/dist/node/es/src/document-model/gen/operation-error/creators.js.map +0 -1
- package/dist/node/es/src/document-model/gen/operation-error/object.js +0 -29
- package/dist/node/es/src/document-model/gen/operation-error/object.js.map +0 -1
- package/dist/node/es/src/document-model/gen/operation-example/creators.js +0 -31
- package/dist/node/es/src/document-model/gen/operation-example/creators.js.map +0 -1
- package/dist/node/es/src/document-model/gen/operation-example/object.js +0 -20
- package/dist/node/es/src/document-model/gen/operation-example/object.js.map +0 -1
- package/dist/node/es/src/document-model/gen/reducer.js +0 -257
- package/dist/node/es/src/document-model/gen/reducer.js.map +0 -1
- package/dist/node/es/src/document-model/gen/schema/zod.js +0 -449
- package/dist/node/es/src/document-model/gen/schema/zod.js.map +0 -1
- package/dist/node/es/src/document-model/gen/state/creators.js +0 -41
- package/dist/node/es/src/document-model/gen/state/creators.js.map +0 -1
- package/dist/node/es/src/document-model/gen/state/object.js +0 -26
- package/dist/node/es/src/document-model/gen/state/object.js.map +0 -1
- package/dist/node/es/src/document-model/gen/utils.js +0 -75
- package/dist/node/es/src/document-model/gen/utils.js.map +0 -1
- package/dist/node/es/src/document-model/gen/versioning/creators.js +0 -35
- package/dist/node/es/src/document-model/gen/versioning/creators.js.map +0 -1
- package/dist/node/es/src/document-model/gen/versioning/object.js +0 -23
- package/dist/node/es/src/document-model/gen/versioning/object.js.map +0 -1
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const immer = require("immer");
|
|
4
|
-
const index = require("./actions/index.js");
|
|
5
|
-
const types = require("./actions/types.js");
|
|
6
|
-
const zod = require("./schema/zod.js");
|
|
7
|
-
const base = require("./utils/base.js");
|
|
8
|
-
require("jszip");
|
|
9
|
-
require("../../node_modules/.pnpm/mime@4.0.1/node_modules/mime/dist/src/index_lite.js");
|
|
10
|
-
require("crypto");
|
|
11
|
-
require("fs");
|
|
12
|
-
require("https");
|
|
13
|
-
require("path");
|
|
14
|
-
const documentHelpers = require("./utils/document-helpers.js");
|
|
15
|
-
function getNextRevision(document, action) {
|
|
16
|
-
let latestOperation;
|
|
17
|
-
if ("index" in action) {
|
|
18
|
-
latestOperation = { ...action };
|
|
19
|
-
} else {
|
|
20
|
-
latestOperation = document.operations[action.scope].at(-1);
|
|
21
|
-
}
|
|
22
|
-
return ((latestOperation == null ? void 0 : latestOperation.index) ?? -1) + 1;
|
|
23
|
-
}
|
|
24
|
-
function updateHeader(document, action) {
|
|
25
|
-
return {
|
|
26
|
-
...document,
|
|
27
|
-
revision: {
|
|
28
|
-
...document.revision,
|
|
29
|
-
[action.scope]: getNextRevision(document, action)
|
|
30
|
-
},
|
|
31
|
-
lastModified: (/* @__PURE__ */ new Date()).toISOString()
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
function updateOperations(document, action, skip = 0) {
|
|
35
|
-
if ([types.UNDO, types.REDO, types.PRUNE].includes(action.type)) {
|
|
36
|
-
return document;
|
|
37
|
-
}
|
|
38
|
-
const { scope } = action;
|
|
39
|
-
const operations = document.operations[scope].slice(
|
|
40
|
-
0,
|
|
41
|
-
document.revision[scope]
|
|
42
|
-
);
|
|
43
|
-
const latestOperation = [...operations].pop();
|
|
44
|
-
let nextIndex = ((latestOperation == null ? void 0 : latestOperation.index) ?? -1) + 1;
|
|
45
|
-
if ("index" in action) {
|
|
46
|
-
if (action.index - skip > nextIndex) {
|
|
47
|
-
throw new Error(
|
|
48
|
-
`Missing operations: expected ${nextIndex} with skip 0 or equivalent, got index ${action.index} with skip ${skip}`
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
nextIndex = action.index;
|
|
52
|
-
}
|
|
53
|
-
operations.push({
|
|
54
|
-
...action,
|
|
55
|
-
index: nextIndex,
|
|
56
|
-
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
57
|
-
hash: "",
|
|
58
|
-
scope,
|
|
59
|
-
skip,
|
|
60
|
-
error: void 0
|
|
61
|
-
});
|
|
62
|
-
return {
|
|
63
|
-
...document,
|
|
64
|
-
operations: { ...document.operations, [scope]: operations }
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
function updateDocument(document, action, skip = 0) {
|
|
68
|
-
let newDocument = updateOperations(document, action, skip);
|
|
69
|
-
newDocument = updateHeader(newDocument, action);
|
|
70
|
-
return newDocument;
|
|
71
|
-
}
|
|
72
|
-
function _baseReducer(document, action, wrappedReducer) {
|
|
73
|
-
zod.BaseActionSchema().parse(action);
|
|
74
|
-
switch (action.type) {
|
|
75
|
-
case types.SET_NAME:
|
|
76
|
-
return index.setNameOperation(document, action.input);
|
|
77
|
-
case types.PRUNE:
|
|
78
|
-
return index.pruneOperation(document, action, wrappedReducer);
|
|
79
|
-
case types.LOAD_STATE:
|
|
80
|
-
return index.loadStateOperation(document, action.input.state);
|
|
81
|
-
default:
|
|
82
|
-
return document;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
function processUndoRedo(document, action, skip) {
|
|
86
|
-
switch (action.type) {
|
|
87
|
-
case types.UNDO:
|
|
88
|
-
return index.undoOperation(document, action, skip);
|
|
89
|
-
case types.REDO:
|
|
90
|
-
return index.redoOperation(document, action, skip);
|
|
91
|
-
default:
|
|
92
|
-
return { document, action, skip };
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
function processSkipOperation(document, action, customReducer, skipValue) {
|
|
96
|
-
const scope = action.scope;
|
|
97
|
-
const latestOperation = document.operations[scope].at(-1);
|
|
98
|
-
if (!latestOperation)
|
|
99
|
-
return document;
|
|
100
|
-
const documentOperations = documentHelpers.grabageCollectDocumentOperations(
|
|
101
|
-
{
|
|
102
|
-
...document.operations,
|
|
103
|
-
[scope]: documentHelpers.skipHeaderOperations(
|
|
104
|
-
document.operations[scope],
|
|
105
|
-
latestOperation
|
|
106
|
-
)
|
|
107
|
-
}
|
|
108
|
-
);
|
|
109
|
-
const { state } = base.replayOperations(
|
|
110
|
-
document.initialState,
|
|
111
|
-
documentOperations,
|
|
112
|
-
customReducer,
|
|
113
|
-
void 0,
|
|
114
|
-
void 0,
|
|
115
|
-
void 0
|
|
116
|
-
);
|
|
117
|
-
return {
|
|
118
|
-
...document,
|
|
119
|
-
state,
|
|
120
|
-
operations: documentHelpers.grabageCollectDocumentOperations({
|
|
121
|
-
...document.operations
|
|
122
|
-
})
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
function baseReducer(document, action, customReducer, dispatch, options = {}) {
|
|
126
|
-
const { skip, ignoreSkipOperations = false, reuseHash = false } = options;
|
|
127
|
-
const _action = { ...action };
|
|
128
|
-
const skipValue = skip || 0;
|
|
129
|
-
let newDocument = { ...document };
|
|
130
|
-
const shouldProcessSkipOperation = !ignoreSkipOperations && (skipValue > 0 || "index" in _action && _action.skip > 0);
|
|
131
|
-
if (base.isBaseAction(_action)) {
|
|
132
|
-
newDocument = _baseReducer(newDocument, _action, customReducer);
|
|
133
|
-
}
|
|
134
|
-
newDocument = updateDocument(newDocument, _action, skipValue);
|
|
135
|
-
if (shouldProcessSkipOperation) {
|
|
136
|
-
newDocument = processSkipOperation(
|
|
137
|
-
newDocument,
|
|
138
|
-
_action,
|
|
139
|
-
customReducer
|
|
140
|
-
);
|
|
141
|
-
}
|
|
142
|
-
newDocument = immer.produce(newDocument, (draft) => {
|
|
143
|
-
try {
|
|
144
|
-
const returnedDraft = customReducer(
|
|
145
|
-
draft.state,
|
|
146
|
-
_action,
|
|
147
|
-
dispatch
|
|
148
|
-
);
|
|
149
|
-
if (returnedDraft) {
|
|
150
|
-
return immer.castDraft({
|
|
151
|
-
...newDocument,
|
|
152
|
-
// clipboard: [...clipboardValue],
|
|
153
|
-
state: returnedDraft
|
|
154
|
-
});
|
|
155
|
-
} else {
|
|
156
|
-
}
|
|
157
|
-
} catch (error) {
|
|
158
|
-
const lastOperationIndex = newDocument.operations[_action.scope].length - 1;
|
|
159
|
-
draft.operations[_action.scope][lastOperationIndex].error = error.message;
|
|
160
|
-
draft.operations[_action.scope][lastOperationIndex].skip = 0;
|
|
161
|
-
if (shouldProcessSkipOperation) {
|
|
162
|
-
draft.state = immer.castDraft({ ...document.state });
|
|
163
|
-
draft.operations = immer.castDraft({
|
|
164
|
-
...document.operations,
|
|
165
|
-
[_action.scope]: [
|
|
166
|
-
...document.operations[_action.scope],
|
|
167
|
-
{
|
|
168
|
-
...draft.operations[_action.scope][lastOperationIndex]
|
|
169
|
-
}
|
|
170
|
-
]
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
return immer.produce(newDocument, (draft) => {
|
|
176
|
-
if ([types.UNDO, types.REDO, types.PRUNE].includes(_action.type)) {
|
|
177
|
-
return draft;
|
|
178
|
-
}
|
|
179
|
-
const scope = _action.scope || "global";
|
|
180
|
-
const hash = reuseHash && Object.prototype.hasOwnProperty.call(_action, "hash") ? _action.hash : base.hashDocument(draft, scope);
|
|
181
|
-
draft.operations[scope][draft.operations[scope].length - 1].hash = hash;
|
|
182
|
-
if (!base.isBaseAction(_action) && _action.attachments) {
|
|
183
|
-
_action.attachments.forEach((attachment) => {
|
|
184
|
-
const { hash: hash2, ...file } = attachment;
|
|
185
|
-
draft.attachments[hash2] = {
|
|
186
|
-
...file
|
|
187
|
-
};
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
exports.baseReducer = baseReducer;
|
|
193
|
-
exports.processUndoRedo = processUndoRedo;
|
|
194
|
-
//# sourceMappingURL=reducer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.js","sources":["../../../../../src/document/reducer.ts"],"sourcesContent":["import { castDraft, produce } from 'immer';\nimport {\n loadStateOperation,\n noopOperation,\n pruneOperation,\n redoOperation,\n setNameOperation,\n undoOperation,\n} from './actions';\nimport {\n BaseAction,\n LOAD_STATE,\n PRUNE,\n REDO,\n SET_NAME,\n UNDO,\n} from './actions/types';\nimport { UndoRedoAction, z } from './schema';\nimport {\n Action,\n Document,\n ImmutableStateReducer,\n Operation,\n ReducerOptions,\n State,\n} from './types';\nimport {\n isBaseAction,\n isUndoRedo,\n hashDocument,\n replayOperations,\n isNoopOperation,\n calculateSkipsLeft,\n} from './utils/base';\nimport { SignalDispatch } from './signal';\nimport { documentHelpers } from './utils';\nimport {\n OperationIndex,\n SkipHeaderOperationIndex,\n} from './utils/document-helpers';\n\n/**\n * Gets the next revision number based on the provided action.\n *\n * @param state The current state of the document.\n * @param action The action being applied to the document.\n * @returns The next revision number.\n */\nfunction getNextRevision(\n document: Document,\n action: Action | Operation,\n): number {\n let latestOperation: Operation | undefined;\n\n if ('index' in action) {\n latestOperation = { ...action };\n } else {\n latestOperation = document.operations[action.scope].at(-1);\n }\n\n return (latestOperation?.index ?? -1) + 1;\n}\n\n/**\n * Updates the document header with the latest revision number and\n * date of last modification.\n *\n * @param state The current state of the document.\n * @param action The action being applied to the document.\n * @returns The updated document state.\n */\nfunction updateHeader<T extends Document>(document: T, action: Action): T {\n return {\n ...document,\n revision: {\n ...document.revision,\n [action.scope]: getNextRevision(document, action),\n },\n lastModified: new Date().toISOString(),\n };\n}\n\n/**\n * Updates the operations history of the document based on the provided action.\n *\n * @param state The current state of the document.\n * @param action The action being applied to the document.\n * @returns The updated document state.\n */\nfunction updateOperations<T extends Document>(\n document: T,\n action: Action | Operation,\n skip = 0,\n): T {\n // UNDO, REDO and PRUNE are meta operations\n // that alter the operations history themselves\n if ([UNDO, REDO, PRUNE].includes(action.type)) {\n return document;\n }\n\n const { scope } = action;\n\n // removes undone operations from history if there\n // is a new operation after an UNDO\n const operations = document.operations[scope].slice(\n 0,\n document.revision[scope],\n );\n\n const latestOperation = [...operations].pop();\n let nextIndex = (latestOperation?.index ?? -1) + 1;\n\n if ('index' in action) {\n if (action.index - skip > nextIndex) {\n throw new Error(\n `Missing operations: expected ${nextIndex} with skip 0 or equivalent, got index ${action.index} with skip ${skip}`,\n );\n }\n\n nextIndex = action.index;\n }\n\n // adds the operation to its scope operations\n operations.push({\n ...action,\n index: nextIndex,\n timestamp: new Date().toISOString(),\n hash: '',\n scope,\n skip,\n error: undefined,\n });\n\n // adds the action to the operations history with\n // the latest index and current timestamp\n return {\n ...document,\n operations: { ...document.operations, [scope]: operations },\n };\n}\n\n/**\n * Updates the document state based on the provided action.\n *\n * @param state The current state of the document.\n * @param action The action being applied to the document.\n * @returns The updated document state.\n */\nfunction updateDocument<T extends Document>(\n document: T,\n action: Action,\n skip = 0,\n) {\n let newDocument = updateOperations(document, action, skip);\n newDocument = updateHeader(newDocument, action);\n return newDocument;\n}\n\n/**\n * The base document reducer function that wraps a custom reducer function.\n *\n * @param state The current state of the document.\n * @param action The action being applied to the document.\n * @param wrappedReducer The custom reducer function being wrapped by the base reducer.\n * @returns The updated document state.\n */\nfunction _baseReducer<T, A extends Action, L>(\n document: Document<T, A, L>,\n action: BaseAction,\n wrappedReducer: ImmutableStateReducer<T, A, L>,\n): Document<T, A, L> {\n // throws if action is not valid base action\n z.BaseActionSchema().parse(action);\n\n switch (action.type) {\n case SET_NAME:\n return setNameOperation(document, action.input);\n case PRUNE:\n return pruneOperation(document, action, wrappedReducer);\n case LOAD_STATE:\n return loadStateOperation(document, action.input.state);\n default:\n return document;\n }\n}\n\ntype UndoRedoProcessResult<T, A extends Action, L> = {\n document: Document<T, A, L>;\n action: A | BaseAction;\n skip: number;\n};\n\n/**\n * Processes an UNDO or REDO action.\n *\n * @param document The current state of the document.\n * @param action The action being applied to the document.\n * @param skip The number of operations to skip before applying the action.\n * @returns The updated document, calculated skip value and transformed action (if apply).\n */\nexport function processUndoRedo<T, A extends Action, L>(\n document: Document<T, A, L>,\n action: UndoRedoAction,\n skip: number,\n): UndoRedoProcessResult<T, A, L> {\n switch (action.type) {\n case UNDO:\n return undoOperation(document, action, skip);\n case REDO:\n return redoOperation(document, action, skip);\n default:\n return { document, action, skip };\n }\n}\n\n/**\n * Processes a skip operation on a document.\n *\n * @template T - The type of the document state.\n * @template A - The type of the document actions.\n * @template L - The type of the document labels.\n * @param {Document<T, A, L>} document - The document to process the skip operation on.\n * @param {A | BaseAction | Operation} action - The action or operation to process.\n * @param {ImmutableStateReducer<T, A, L>} customReducer - The custom reducer function for the document state.\n * @param {number} skipValue - The value to skip.\n * @returns {Document<T, A, L>} - The updated document after processing the skip operation.\n */\nfunction processSkipOperation<T, A extends Action, L>(\n document: Document<T, A, L>,\n action: A | BaseAction | Operation,\n customReducer: ImmutableStateReducer<T, A, L>,\n skipValue: number,\n): Document<T, A, L> {\n const scope = action.scope;\n\n const latestOperation = document.operations[scope].at(-1);\n\n if (!latestOperation) return document;\n\n const documentOperations = documentHelpers.grabageCollectDocumentOperations(\n {\n ...document.operations,\n [scope]: documentHelpers.skipHeaderOperations(\n document.operations[scope],\n latestOperation,\n ),\n },\n );\n\n const { state } = replayOperations(\n document.initialState,\n documentOperations,\n customReducer,\n undefined,\n undefined,\n undefined,\n );\n\n return {\n ...document,\n state,\n operations: documentHelpers.grabageCollectDocumentOperations({\n ...document.operations,\n }),\n };\n}\n\n/**\n * Base document reducer that wraps a custom document reducer and handles\n * document-level actions such as undo, redo, prune, and set name.\n *\n * @template T - The type of the state of the custom reducer.\n * @template A - The type of the actions of the custom reducer.\n * @param state - The current state of the document.\n * @param action - The action object to apply to the state.\n * @param customReducer - The custom reducer that implements the application logic\n * specific to the document's state.\n * @returns The new state of the document.\n */\nexport function baseReducer<T, A extends Action, L>(\n document: Document<T, A, L>,\n action: A | BaseAction | Operation,\n customReducer: ImmutableStateReducer<T, A, L>,\n dispatch?: SignalDispatch,\n options: ReducerOptions = {},\n) {\n const { skip, ignoreSkipOperations = false, reuseHash = false } = options;\n\n const _action = { ...action };\n const skipValue = skip || 0;\n let newDocument = { ...document };\n // let clipboard = [...document.clipboard];\n\n const shouldProcessSkipOperation =\n !ignoreSkipOperations &&\n (skipValue > 0 || ('index' in _action && _action.skip > 0));\n\n // ignore undo redo for now\n\n // if (isUndoRedo(_action)) {\n // const {\n // skip: calculatedSkip,\n // action: transformedAction,\n // document: processedDocument,\n // } = processUndoRedo(document, _action, skipValue);\n\n // _action = transformedAction;\n // skipValue = calculatedSkip;\n // newDocument = processedDocument;\n // clipboard = [...newDocument.clipboard];\n // }\n\n // if the action is one the base document actions (SET_NAME, UNDO, REDO, PRUNE)\n // then runs the base reducer first\n if (isBaseAction(_action)) {\n newDocument = _baseReducer(newDocument, _action, customReducer);\n }\n\n // updates the document revision number, last modified date\n // and operation history\n newDocument = updateDocument(newDocument, _action, skipValue);\n\n if (shouldProcessSkipOperation) {\n newDocument = processSkipOperation(\n newDocument,\n _action,\n customReducer,\n skipValue,\n );\n }\n\n // wraps the custom reducer with Immer to avoid\n // mutation bugs and allow writing reducers with\n // mutating code\n newDocument = produce(newDocument, draft => {\n // the reducer runs on a immutable version of\n // provided state\n try {\n const returnedDraft = customReducer(\n draft.state,\n _action as A,\n dispatch,\n );\n\n // const clipboardValue = isUndoRedo(action) ? [...clipboard] : [];\n\n // if the reducer creates a new state object instead\n // of mutating the draft then returns the new state\n if (returnedDraft) {\n // casts new state as draft to comply with typescript\n return castDraft<Document<T, A, L>>({\n ...newDocument,\n // clipboard: [...clipboardValue],\n state: returnedDraft,\n });\n } else {\n // draft.clipboard = castDraft([...clipboardValue]);\n }\n } catch (error) {\n // if the reducer throws an error then we should keep the previous state (before replayOperations)\n // and remove skip number from action/operation\n const lastOperationIndex =\n newDocument.operations[_action.scope].length - 1;\n draft.operations[_action.scope][lastOperationIndex].error = (\n error as Error\n ).message;\n\n draft.operations[_action.scope][lastOperationIndex].skip = 0;\n\n if (shouldProcessSkipOperation) {\n draft.state = castDraft<State<T, L>>({ ...document.state });\n draft.operations = castDraft({\n ...document.operations,\n [_action.scope]: [\n ...document.operations[_action.scope],\n {\n ...draft.operations[_action.scope][\n lastOperationIndex\n ],\n },\n ],\n });\n }\n }\n });\n\n // updates the document history\n return produce(newDocument, draft => {\n // meta operations are not added to the operations history\n if ([UNDO, REDO, PRUNE].includes(_action.type)) {\n return draft;\n }\n\n // if reuseHash is true, checks if the action has\n // an hash and uses it instead of generating it\n const scope = _action.scope || 'global';\n const hash =\n reuseHash && Object.prototype.hasOwnProperty.call(_action, 'hash')\n ? (_action as Operation).hash\n : hashDocument(draft, scope);\n\n // updates the last operation with the hash of the resulting state\n draft.operations[scope][draft.operations[scope].length - 1].hash = hash;\n\n // if the action has attachments then adds them to the document\n if (!isBaseAction(_action) && _action.attachments) {\n _action.attachments.forEach(attachment => {\n const { hash, ...file } = attachment;\n draft.attachments[hash] = {\n ...file,\n };\n });\n }\n });\n}\n"],"names":["UNDO","REDO","PRUNE","z.BaseActionSchema","SET_NAME","setNameOperation","pruneOperation","LOAD_STATE","loadStateOperation","undoOperation","redoOperation","documentHelpers.grabageCollectDocumentOperations","documentHelpers.skipHeaderOperations","replayOperations","isBaseAction","produce","castDraft","hashDocument","hash"],"mappings":"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"}
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const zod = require("zod");
|
|
4
|
-
const isDefinedNonNullAny = (v) => v !== void 0 && v !== null;
|
|
5
|
-
const definedNonNullAnySchema = zod.z.any().refine((v) => isDefinedNonNullAny(v));
|
|
6
|
-
const Load_StateSchema = zod.z.enum(["LOAD_STATE"]);
|
|
7
|
-
const PruneSchema = zod.z.enum(["PRUNE"]);
|
|
8
|
-
const RedoSchema = zod.z.enum(["REDO"]);
|
|
9
|
-
const Set_NameSchema = zod.z.enum(["SET_NAME"]);
|
|
10
|
-
const UndoSchema = zod.z.enum(["UNDO"]);
|
|
11
|
-
function ActionSchema() {
|
|
12
|
-
return zod.z.object({
|
|
13
|
-
__typename: zod.z.literal("Action").optional(),
|
|
14
|
-
type: zod.z.string()
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
function OperationScopeSchema() {
|
|
18
|
-
return zod.z.literal("global").or(zod.z.literal("local"));
|
|
19
|
-
}
|
|
20
|
-
function BaseActionSchema() {
|
|
21
|
-
return zod.z.union([
|
|
22
|
-
LoadStateActionSchema(),
|
|
23
|
-
PruneActionSchema(),
|
|
24
|
-
RedoActionSchema(),
|
|
25
|
-
SetNameActionSchema(),
|
|
26
|
-
UndoActionSchema()
|
|
27
|
-
]);
|
|
28
|
-
}
|
|
29
|
-
function DocumentFileSchema() {
|
|
30
|
-
return zod.z.object({
|
|
31
|
-
__typename: zod.z.literal("DocumentFile").optional(),
|
|
32
|
-
data: zod.z.string(),
|
|
33
|
-
extension: zod.z.string().nullable(),
|
|
34
|
-
fileName: zod.z.string().nullable(),
|
|
35
|
-
mimeType: zod.z.string()
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
function LoadStateActionSchema() {
|
|
39
|
-
return zod.z.object({
|
|
40
|
-
input: zod.z.lazy(() => LoadStateActionInputSchema()),
|
|
41
|
-
type: Load_StateSchema,
|
|
42
|
-
scope: OperationScopeSchema()
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
function LoadStateActionInputSchema() {
|
|
46
|
-
return zod.z.object({
|
|
47
|
-
operations: zod.z.number(),
|
|
48
|
-
state: zod.z.lazy(() => LoadStateActionStateInputSchema())
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
function LoadStateActionStateInputSchema() {
|
|
52
|
-
return zod.z.object({
|
|
53
|
-
data: zod.z.unknown().nullish(),
|
|
54
|
-
name: zod.z.string()
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
function OperationSchema() {
|
|
58
|
-
return zod.z.object({
|
|
59
|
-
__typename: zod.z.literal("Operation").optional(),
|
|
60
|
-
hash: zod.z.string(),
|
|
61
|
-
index: zod.z.number(),
|
|
62
|
-
timestamp: zod.z.string().datetime(),
|
|
63
|
-
type: zod.z.string()
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
function PruneActionSchema() {
|
|
67
|
-
return zod.z.object({
|
|
68
|
-
input: zod.z.lazy(() => PruneActionInputSchema()),
|
|
69
|
-
type: PruneSchema,
|
|
70
|
-
scope: OperationScopeSchema()
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
function PruneActionInputSchema() {
|
|
74
|
-
return zod.z.object({
|
|
75
|
-
end: zod.z.number().nullish(),
|
|
76
|
-
start: zod.z.number().nullish()
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
const RedoActionInputSchema = zod.z.number;
|
|
80
|
-
function RedoActionSchema() {
|
|
81
|
-
return zod.z.object({
|
|
82
|
-
input: RedoActionInputSchema(),
|
|
83
|
-
type: RedoSchema,
|
|
84
|
-
scope: OperationScopeSchema()
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
const SetNameActionInputSchema = zod.z.string;
|
|
88
|
-
function SetNameActionSchema() {
|
|
89
|
-
return zod.z.object({
|
|
90
|
-
input: SetNameActionInputSchema(),
|
|
91
|
-
type: Set_NameSchema,
|
|
92
|
-
scope: zod.z.literal("global")
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
function SetNameOperationSchema() {
|
|
96
|
-
return zod.z.object({
|
|
97
|
-
__typename: zod.z.literal("SetNameOperation").optional(),
|
|
98
|
-
hash: zod.z.string(),
|
|
99
|
-
index: zod.z.number(),
|
|
100
|
-
input: zod.z.string(),
|
|
101
|
-
timestamp: zod.z.string().datetime(),
|
|
102
|
-
type: zod.z.string()
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
const UndoActionInputSchema = zod.z.number;
|
|
106
|
-
function UndoActionSchema() {
|
|
107
|
-
return zod.z.object({
|
|
108
|
-
input: UndoActionInputSchema(),
|
|
109
|
-
type: UndoSchema,
|
|
110
|
-
scope: OperationScopeSchema()
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
exports.ActionSchema = ActionSchema;
|
|
114
|
-
exports.BaseActionSchema = BaseActionSchema;
|
|
115
|
-
exports.DocumentFileSchema = DocumentFileSchema;
|
|
116
|
-
exports.LoadStateActionInputSchema = LoadStateActionInputSchema;
|
|
117
|
-
exports.LoadStateActionSchema = LoadStateActionSchema;
|
|
118
|
-
exports.LoadStateActionStateInputSchema = LoadStateActionStateInputSchema;
|
|
119
|
-
exports.Load_StateSchema = Load_StateSchema;
|
|
120
|
-
exports.OperationSchema = OperationSchema;
|
|
121
|
-
exports.OperationScopeSchema = OperationScopeSchema;
|
|
122
|
-
exports.PruneActionInputSchema = PruneActionInputSchema;
|
|
123
|
-
exports.PruneActionSchema = PruneActionSchema;
|
|
124
|
-
exports.PruneSchema = PruneSchema;
|
|
125
|
-
exports.RedoActionInputSchema = RedoActionInputSchema;
|
|
126
|
-
exports.RedoActionSchema = RedoActionSchema;
|
|
127
|
-
exports.RedoSchema = RedoSchema;
|
|
128
|
-
exports.SetNameActionInputSchema = SetNameActionInputSchema;
|
|
129
|
-
exports.SetNameActionSchema = SetNameActionSchema;
|
|
130
|
-
exports.SetNameOperationSchema = SetNameOperationSchema;
|
|
131
|
-
exports.Set_NameSchema = Set_NameSchema;
|
|
132
|
-
exports.UndoActionInputSchema = UndoActionInputSchema;
|
|
133
|
-
exports.UndoActionSchema = UndoActionSchema;
|
|
134
|
-
exports.UndoSchema = UndoSchema;
|
|
135
|
-
exports.definedNonNullAnySchema = definedNonNullAnySchema;
|
|
136
|
-
exports.isDefinedNonNullAny = isDefinedNonNullAny;
|
|
137
|
-
//# sourceMappingURL=zod.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zod.js","sources":["../../../../../../src/document/schema/zod.ts"],"sourcesContent":["import { z } from 'zod';\nimport {\n Action,\n DocumentFile,\n Load_State,\n LoadStateAction,\n LoadStateActionInput,\n LoadStateActionStateInput,\n Operation,\n Prune,\n PruneAction,\n PruneActionInput,\n Redo,\n RedoAction,\n Set_Name,\n SetNameAction,\n SetNameOperation,\n Undo,\n UndoAction,\n} from '.';\nimport { OperationScope } from '../types';\n\ntype Properties<T> = Required<{\n [K in keyof T]: z.ZodType<T[K], any, T[K]>;\n}>;\n\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype definedNonNullAny = {};\n\nexport const isDefinedNonNullAny = (v: any): v is definedNonNullAny =>\n v !== undefined && v !== null;\n\nexport const definedNonNullAnySchema = z\n .any()\n .refine(v => isDefinedNonNullAny(v));\n\nexport const Load_StateSchema = z.enum(['LOAD_STATE']);\n\nexport const PruneSchema = z.enum(['PRUNE']);\n\nexport const RedoSchema = z.enum(['REDO']);\n\nexport const Set_NameSchema = z.enum(['SET_NAME']);\n\nexport const UndoSchema = z.enum(['UNDO']);\n\nexport function ActionSchema(): z.ZodObject<Properties<Action>> {\n return z.object({\n __typename: z.literal('Action').optional(),\n type: z.string(),\n });\n}\n\nexport function OperationScopeSchema(): z.ZodType<OperationScope> {\n return z.literal('global').or(z.literal('local'));\n}\n\nexport function BaseActionSchema() {\n return z.union([\n LoadStateActionSchema(),\n PruneActionSchema(),\n RedoActionSchema(),\n SetNameActionSchema(),\n UndoActionSchema(),\n ]);\n}\n\nexport function DocumentFileSchema(): z.ZodObject<Properties<DocumentFile>> {\n return z.object({\n __typename: z.literal('DocumentFile').optional(),\n data: z.string(),\n extension: z.string().nullable(),\n fileName: z.string().nullable(),\n mimeType: z.string(),\n });\n}\n\nexport function LoadStateActionSchema(): z.ZodObject<\n Properties<LoadStateAction>\n> {\n return z.object({\n input: z.lazy(() => LoadStateActionInputSchema()),\n type: Load_StateSchema,\n scope: OperationScopeSchema(),\n });\n}\n\nexport function LoadStateActionInputSchema(): z.ZodObject<\n Properties<LoadStateActionInput>\n> {\n return z.object({\n operations: z.number(),\n state: z.lazy(() => LoadStateActionStateInputSchema()),\n });\n}\n\nexport function LoadStateActionStateInputSchema(): z.ZodObject<\n Properties<LoadStateActionStateInput>\n> {\n return z.object({\n data: z.unknown().nullish(),\n name: z.string(),\n });\n}\n\nexport function OperationSchema(): z.ZodObject<Properties<Operation>> {\n return z.object({\n __typename: z.literal('Operation').optional(),\n hash: z.string(),\n index: z.number(),\n timestamp: z.string().datetime(),\n type: z.string(),\n });\n}\n\nexport function PruneActionSchema(): z.ZodObject<Properties<PruneAction>> {\n return z.object({\n input: z.lazy(() => PruneActionInputSchema()),\n type: PruneSchema,\n scope: OperationScopeSchema(),\n });\n}\n\nexport function PruneActionInputSchema(): z.ZodObject<\n Properties<PruneActionInput>\n> {\n return z.object({\n end: z.number().nullish(),\n start: z.number().nullish(),\n });\n}\n\nexport const RedoActionInputSchema = z.number;\n\nexport function RedoActionSchema(): z.ZodObject<Properties<RedoAction>> {\n return z.object({\n input: RedoActionInputSchema(),\n type: RedoSchema,\n scope: OperationScopeSchema(),\n });\n}\n\nexport const SetNameActionInputSchema = z.string;\n\nexport function SetNameActionSchema(): z.ZodObject<Properties<SetNameAction>> {\n return z.object({\n input: SetNameActionInputSchema(),\n type: Set_NameSchema,\n scope: z.literal('global'),\n });\n}\n\nexport function SetNameOperationSchema(): z.ZodObject<\n Properties<SetNameOperation>\n> {\n return z.object({\n __typename: z.literal('SetNameOperation').optional(),\n hash: z.string(),\n index: z.number(),\n input: z.string(),\n timestamp: z.string().datetime(),\n type: z.string(),\n });\n}\n\nexport const UndoActionInputSchema = z.number;\n\nexport function UndoActionSchema(): z.ZodObject<Properties<UndoAction>> {\n return z.object({\n input: UndoActionInputSchema(),\n type: UndoSchema,\n scope: OperationScopeSchema(),\n });\n}\n"],"names":["z"],"mappings":"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"}
|
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
require("../../../node_modules/.pnpm/safe-stable-stringify@2.4.3/node_modules/safe-stable-stringify/esm/wrapper.js");
|
|
4
|
-
const reducer = require("../reducer.js");
|
|
5
|
-
const node = require("./node.js");
|
|
6
|
-
const types = require("../actions/types.js");
|
|
7
|
-
const immer = require("immer");
|
|
8
|
-
const index = require("../../../node_modules/.pnpm/safe-stable-stringify@2.4.3/node_modules/safe-stable-stringify/index.js");
|
|
9
|
-
function isNoopOperation(op) {
|
|
10
|
-
return op.type === types.NOOP && op.skip !== void 0 && op.skip > 0 && op.hash !== void 0;
|
|
11
|
-
}
|
|
12
|
-
function isUndoRedo(action) {
|
|
13
|
-
return [types.UNDO, types.REDO].includes(action.type);
|
|
14
|
-
}
|
|
15
|
-
function isBaseAction(action) {
|
|
16
|
-
return [types.SET_NAME, types.UNDO, types.REDO, types.PRUNE, types.LOAD_STATE].includes(action.type);
|
|
17
|
-
}
|
|
18
|
-
function createAction(type, input, attachments, validator, scope = "global") {
|
|
19
|
-
if (!type) {
|
|
20
|
-
throw new Error("Empty action type");
|
|
21
|
-
}
|
|
22
|
-
if (typeof type !== "string") {
|
|
23
|
-
throw new Error(`Invalid action type: ${JSON.stringify(type)}`);
|
|
24
|
-
}
|
|
25
|
-
const action = { type, input, scope };
|
|
26
|
-
if (attachments) {
|
|
27
|
-
action.attachments = attachments;
|
|
28
|
-
}
|
|
29
|
-
try {
|
|
30
|
-
validator == null ? void 0 : validator().parse(action.input);
|
|
31
|
-
} catch (error) {
|
|
32
|
-
throw new Error(`Invalid action input: ${error}`);
|
|
33
|
-
}
|
|
34
|
-
return action;
|
|
35
|
-
}
|
|
36
|
-
function createReducer(reducer$1, documentReducer = reducer.baseReducer) {
|
|
37
|
-
return (document, action, dispatch, options) => {
|
|
38
|
-
return documentReducer(document, action, reducer$1, dispatch, options);
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
const createExtendedState = (initialState, createState) => {
|
|
42
|
-
return {
|
|
43
|
-
name: "",
|
|
44
|
-
documentType: "",
|
|
45
|
-
revision: {
|
|
46
|
-
global: 0,
|
|
47
|
-
local: 0
|
|
48
|
-
},
|
|
49
|
-
created: (/* @__PURE__ */ new Date()).toISOString(),
|
|
50
|
-
lastModified: (/* @__PURE__ */ new Date()).toISOString(),
|
|
51
|
-
attachments: {},
|
|
52
|
-
...initialState,
|
|
53
|
-
state: (createState == null ? void 0 : createState(initialState == null ? void 0 : initialState.state)) ?? ((initialState == null ? void 0 : initialState.state) ?? { global: {}, local: {} })
|
|
54
|
-
};
|
|
55
|
-
};
|
|
56
|
-
const createDocument = (initialState, createState) => {
|
|
57
|
-
const state = createExtendedState(
|
|
58
|
-
initialState,
|
|
59
|
-
createState
|
|
60
|
-
);
|
|
61
|
-
return {
|
|
62
|
-
...state,
|
|
63
|
-
initialState: state,
|
|
64
|
-
operations: { global: [], local: [] },
|
|
65
|
-
clipboard: []
|
|
66
|
-
};
|
|
67
|
-
};
|
|
68
|
-
const hashDocument = (document, scope = "global") => {
|
|
69
|
-
return node.hash(index.default(document.state[scope] || ""));
|
|
70
|
-
};
|
|
71
|
-
const hashKey = (date, randomLimit = 1e3) => {
|
|
72
|
-
const random = Math.random() * randomLimit;
|
|
73
|
-
return node.hash(`${(date ?? /* @__PURE__ */ new Date()).toISOString()}${random}`);
|
|
74
|
-
};
|
|
75
|
-
function readOnly(value) {
|
|
76
|
-
return immer.castImmutable(immer.freeze(value, true));
|
|
77
|
-
}
|
|
78
|
-
function mapSkippedOperations(operations, skippedHeadOperations) {
|
|
79
|
-
const ops = [...operations];
|
|
80
|
-
let skipped = skippedHeadOperations || 0;
|
|
81
|
-
let latestOpIndex = ops.length > 0 ? ops[ops.length - 1].index : 0;
|
|
82
|
-
const scopeOpsWithIgnore = [];
|
|
83
|
-
for (const operation of ops.reverse()) {
|
|
84
|
-
if (skipped > 0) {
|
|
85
|
-
const operationsDiff = latestOpIndex - operation.index;
|
|
86
|
-
skipped -= operationsDiff;
|
|
87
|
-
}
|
|
88
|
-
if (skipped < 0) {
|
|
89
|
-
throw new Error("Invalid operation index, missing operations");
|
|
90
|
-
}
|
|
91
|
-
const mappedOp = {
|
|
92
|
-
ignore: skipped > 0,
|
|
93
|
-
operation
|
|
94
|
-
};
|
|
95
|
-
const operationSkip = operation.skip > 0 ? operation.skip + 1 : 0;
|
|
96
|
-
if (operationSkip > 0 && operationSkip > skipped) {
|
|
97
|
-
const skipDiff = operationSkip - skipped;
|
|
98
|
-
skipped = skipped + skipDiff;
|
|
99
|
-
}
|
|
100
|
-
latestOpIndex = operation.index;
|
|
101
|
-
scopeOpsWithIgnore.push(mappedOp);
|
|
102
|
-
}
|
|
103
|
-
return scopeOpsWithIgnore.reverse();
|
|
104
|
-
}
|
|
105
|
-
function calculateSkipsLeft(operations, currentIndex, skip) {
|
|
106
|
-
const sortedOperations = operations.slice().sort((a, b) => a.skip - b.skip).sort((a, b) => a.index - b.index);
|
|
107
|
-
let skipsLeft = skip;
|
|
108
|
-
let skipsToPerform = 0;
|
|
109
|
-
let lastIndex = currentIndex;
|
|
110
|
-
for (const operation of sortedOperations.reverse()) {
|
|
111
|
-
const distance = lastIndex - operation.index;
|
|
112
|
-
skipsLeft = skipsLeft - distance;
|
|
113
|
-
if (skipsLeft > -1) {
|
|
114
|
-
skipsToPerform++;
|
|
115
|
-
lastIndex = operation.index;
|
|
116
|
-
} else {
|
|
117
|
-
break;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
return skipsToPerform;
|
|
121
|
-
}
|
|
122
|
-
function sortOperations(operations) {
|
|
123
|
-
return Object.values(operations).flatMap((array) => array).sort(
|
|
124
|
-
(a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime()
|
|
125
|
-
);
|
|
126
|
-
}
|
|
127
|
-
function sortMappedOperations(operations) {
|
|
128
|
-
return Object.values(operations).flatMap((array) => array).sort(
|
|
129
|
-
(a, b) => new Date(a.operation.timestamp).getTime() - new Date(b.operation.timestamp).getTime()
|
|
130
|
-
);
|
|
131
|
-
}
|
|
132
|
-
function replayOperations(initialState, clearedOperations, reducer$1, dispatch, header, documentReducer = reducer.baseReducer, skipHeaderOperations = {}, options) {
|
|
133
|
-
const wrappedReducer = createReducer(reducer$1, documentReducer);
|
|
134
|
-
return replayDocument(
|
|
135
|
-
initialState,
|
|
136
|
-
clearedOperations,
|
|
137
|
-
wrappedReducer,
|
|
138
|
-
dispatch,
|
|
139
|
-
header,
|
|
140
|
-
skipHeaderOperations,
|
|
141
|
-
options
|
|
142
|
-
);
|
|
143
|
-
}
|
|
144
|
-
function replayDocument(initialState, operations, reducer2, dispatch, header, skipHeaderOperations = {}, options) {
|
|
145
|
-
const checkHashes = (options == null ? void 0 : options.checkHashes) ?? true;
|
|
146
|
-
const document = createDocument(initialState);
|
|
147
|
-
const flatOperations = Object.values(operations).flat();
|
|
148
|
-
const result = flatOperations.reduce((document2, operation) => {
|
|
149
|
-
const doc = reducer2(document2, operation, dispatch, {
|
|
150
|
-
skip: operation.skip,
|
|
151
|
-
ignoreSkipOperations: true,
|
|
152
|
-
reuseHash: !checkHashes
|
|
153
|
-
});
|
|
154
|
-
return doc;
|
|
155
|
-
}, document);
|
|
156
|
-
if (!checkHashes) {
|
|
157
|
-
for (const scope of Object.keys(result.state)) {
|
|
158
|
-
for (let i = flatOperations.length - 1; i >= 0; i--) {
|
|
159
|
-
const operation = flatOperations[i];
|
|
160
|
-
if (operation.scope !== scope) {
|
|
161
|
-
continue;
|
|
162
|
-
}
|
|
163
|
-
if (operation.hash !== hashDocument(result, scope)) {
|
|
164
|
-
throw new Error(`Hash mismatch for scope ${scope}`);
|
|
165
|
-
} else {
|
|
166
|
-
break;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
const resultOperations = Object.keys(
|
|
172
|
-
result.operations
|
|
173
|
-
).reduce(
|
|
174
|
-
(acc, key) => {
|
|
175
|
-
const scope = key;
|
|
176
|
-
return {
|
|
177
|
-
...acc,
|
|
178
|
-
[scope]: [
|
|
179
|
-
...result.operations[scope].map((operation, index2) => {
|
|
180
|
-
var _a;
|
|
181
|
-
return {
|
|
182
|
-
...operation,
|
|
183
|
-
timestamp: ((_a = operations[scope][index2]) == null ? void 0 : _a.timestamp) ?? operation.timestamp
|
|
184
|
-
};
|
|
185
|
-
})
|
|
186
|
-
]
|
|
187
|
-
};
|
|
188
|
-
},
|
|
189
|
-
{ global: [], local: [] }
|
|
190
|
-
);
|
|
191
|
-
const lastModified = Object.values(resultOperations).reduce((acc, curr) => {
|
|
192
|
-
const operation = curr[curr.length - 1];
|
|
193
|
-
if ((operation == null ? void 0 : operation.timestamp) > acc) {
|
|
194
|
-
acc = operation.timestamp;
|
|
195
|
-
}
|
|
196
|
-
return acc;
|
|
197
|
-
}, initialState.lastModified);
|
|
198
|
-
return { ...result, operations: resultOperations, lastModified };
|
|
199
|
-
}
|
|
200
|
-
function isSameDocument(documentA, documentB) {
|
|
201
|
-
return index.default(documentA) === index.default(documentB);
|
|
202
|
-
}
|
|
203
|
-
exports.calculateSkipsLeft = calculateSkipsLeft;
|
|
204
|
-
exports.createAction = createAction;
|
|
205
|
-
exports.createDocument = createDocument;
|
|
206
|
-
exports.createExtendedState = createExtendedState;
|
|
207
|
-
exports.createReducer = createReducer;
|
|
208
|
-
exports.hashDocument = hashDocument;
|
|
209
|
-
exports.hashKey = hashKey;
|
|
210
|
-
exports.isBaseAction = isBaseAction;
|
|
211
|
-
exports.isNoopOperation = isNoopOperation;
|
|
212
|
-
exports.isSameDocument = isSameDocument;
|
|
213
|
-
exports.isUndoRedo = isUndoRedo;
|
|
214
|
-
exports.mapSkippedOperations = mapSkippedOperations;
|
|
215
|
-
exports.readOnly = readOnly;
|
|
216
|
-
exports.replayDocument = replayDocument;
|
|
217
|
-
exports.replayOperations = replayOperations;
|
|
218
|
-
exports.sortMappedOperations = sortMappedOperations;
|
|
219
|
-
exports.sortOperations = sortOperations;
|
|
220
|
-
//# sourceMappingURL=base.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sources":["../../../../../../src/document/utils/base.ts"],"sourcesContent":["import stringifyJson from 'safe-stable-stringify';\nimport { baseReducer } from '../reducer';\nimport {\n Action,\n BaseAction,\n UndoRedoAction,\n Document,\n ExtendedState,\n ImmutableStateReducer,\n Reducer,\n Immutable,\n OperationScope,\n State,\n CreateState,\n PartialState,\n DocumentOperations,\n DocumentHeader,\n DocumentOperationsIgnoreMap,\n Operation,\n MappedOperation,\n} from '../types';\nimport { hash } from './node';\nimport {\n LOAD_STATE,\n PRUNE,\n REDO,\n SET_NAME,\n UNDO,\n NOOP,\n} from '../actions/types';\nimport { castImmutable, freeze } from 'immer';\nimport { SignalDispatch } from '../signal';\n\nexport function isNoopOperation(op: Partial<Operation>): boolean {\n return (\n op.type === NOOP &&\n op.skip !== undefined &&\n op.skip > 0 &&\n op.hash !== undefined\n );\n}\n\nexport function isUndoRedo(action: Action): action is UndoRedoAction {\n return [UNDO, REDO].includes(action.type);\n}\n\nexport function isBaseAction(action: Action): action is BaseAction {\n return [SET_NAME, UNDO, REDO, PRUNE, LOAD_STATE].includes(action.type);\n}\n\n/**\n * Helper function to be used by action creators.\n *\n * @remarks\n * Creates an action with the given type and input properties. The input\n * properties default to an empty object.\n *\n * @typeParam A - Type of the action to be returned.\n *\n * @param type - The type of the action.\n * @param input - The input properties of the action.\n * @param attachments - The attachments included in the action.\n * @param validator - The validator to use for the input properties.\n * @param scope - The scope of the action, can either be 'global' or 'local'.\n * @param skip - The number of operations to skip before this new action is applied.\n *\n * @throws Error if the type is empty or not a string.\n *\n * @returns The new action.\n */\nexport function createAction<A extends Action>(\n type: A['type'],\n input?: A['input'],\n attachments?: Action['attachments'],\n validator?: () => { parse(v: unknown): A['input'] },\n scope: OperationScope = 'global',\n): A {\n if (!type) {\n throw new Error('Empty action type');\n }\n\n if (typeof type !== 'string') {\n throw new Error(`Invalid action type: ${JSON.stringify(type)}`);\n }\n\n const action: Action = { type, input, scope };\n\n if (attachments) {\n action.attachments = attachments;\n }\n\n try {\n validator?.().parse(action.input);\n } catch (error) {\n throw new Error(`Invalid action input: ${error}`);\n }\n\n return action as A;\n}\n\n/**\n * Helper function to create a document model reducer.\n *\n * @remarks\n * This function creates a new reducer that wraps the provided `reducer` with\n * `documentReducer`, adding support for document actions:\n * - `SET_NAME`\n * - `UNDO`\n * - `REDO`\n * - `PRUNE`\n *\n * It also updates the document-related attributes on every operation.\n *\n * @param reducer - The custom reducer to wrap.\n * @param documentReducer - The document reducer to use.\n *\n * @returns The new reducer.\n */\nexport function createReducer<\n S = unknown,\n A extends Action = Action,\n L = unknown,\n>(\n reducer: ImmutableStateReducer<S, A, L>,\n documentReducer = baseReducer,\n): Reducer<S, A, L> {\n return (document, action, dispatch, options) => {\n return documentReducer(document, action, reducer, dispatch, options);\n };\n}\n\nexport const createExtendedState = <S, L>(\n initialState?: Partial<ExtendedState<PartialState<S>, PartialState<L>>>,\n createState?: CreateState<S, L>,\n): ExtendedState<S, L> => {\n return {\n name: '',\n documentType: '',\n revision: {\n global: 0,\n local: 0,\n },\n created: new Date().toISOString(),\n lastModified: new Date().toISOString(),\n attachments: {},\n ...initialState,\n state:\n createState?.(initialState?.state) ??\n ((initialState?.state ?? { global: {}, local: {} }) as State<S, L>),\n };\n};\n\n/**\n * Builds the initial document state from the provided data.\n *\n * @typeParam T - The type of the data.\n * @typeParam A - The type of the actions.\n *\n * @param initialState - The initial state of the document. The `data` property\n * is required, but all other properties are optional.\n *\n * @returns The new document state.\n */\nexport const createDocument = <S, A extends Action, L = unknown>(\n initialState?: Partial<ExtendedState<PartialState<S>, PartialState<L>>>,\n createState?: (\n state?: Partial<State<PartialState<S>, PartialState<L>>>,\n ) => State<S, L>,\n): Document<S, A, L> => {\n const state: ExtendedState<S, L> = createExtendedState(\n initialState,\n createState,\n );\n return {\n ...state,\n initialState: state,\n operations: { global: [], local: [] },\n clipboard: [],\n };\n};\n\nexport const hashDocument = (\n document: Pick<Document, 'state'>,\n scope: OperationScope = 'global',\n) => {\n return hash(stringifyJson(document.state[scope] || ''));\n};\n\nexport const hashKey = (date?: Date, randomLimit = 1000) => {\n const random = Math.random() * randomLimit;\n return hash(`${(date ?? new Date()).toISOString()}${random}`);\n};\n\nexport function readOnly<T>(value: T): Immutable<T> {\n return castImmutable(freeze(value, true));\n}\n\n/**\n * Maps skipped operations in an array of operations.\n * Skipped operations are operations that are ignored during processing.\n * @param operations - The array of operations to map.\n * @param skippedHeadOperations - The number of operations to skip at the head of the array of operations.\n * @returns An array of mapped operations with ignore flag indicating if the operation is skipped.\n * @throws Error if the operation index is invalid and there are missing operations.\n */\nexport function mapSkippedOperations<A extends Action>(\n operations: Operation<BaseAction | A>[],\n skippedHeadOperations?: number,\n): MappedOperation<A>[] {\n const ops = [...operations];\n\n let skipped = skippedHeadOperations || 0;\n let latestOpIndex = ops.length > 0 ? ops[ops.length - 1].index : 0;\n\n const scopeOpsWithIgnore = [] as MappedOperation<A>[];\n\n for (const operation of ops.reverse()) {\n if (skipped > 0) {\n const operationsDiff = latestOpIndex - operation.index;\n skipped -= operationsDiff;\n }\n\n if (skipped < 0) {\n throw new Error('Invalid operation index, missing operations');\n }\n\n const mappedOp = {\n ignore: skipped > 0,\n operation,\n };\n\n // here we add 1 to the skip number because we want to get the number of\n // operations that we want to move the pointer back to get the latest valid operation\n // operation.skip = 1 means that we want to move the pointer back 2 operations to get to the latest valid operation\n const operationSkip = operation.skip > 0 ? operation.skip + 1 : 0;\n\n if (operationSkip > 0 && operationSkip > skipped) {\n const skipDiff = operationSkip - skipped;\n skipped = skipped + skipDiff;\n }\n\n latestOpIndex = operation.index;\n scopeOpsWithIgnore.push(mappedOp);\n }\n\n return scopeOpsWithIgnore.reverse();\n}\n\nexport function calculateSkipsLeft<A extends Action>(\n operations: Operation<BaseAction | A>[],\n currentIndex: number,\n skip: number,\n): number {\n const sortedOperations = operations\n .slice()\n .sort((a, b) => a.skip - b.skip)\n .sort((a, b) => a.index - b.index);\n\n let skipsLeft = skip;\n let skipsToPerform = 0;\n let lastIndex = currentIndex;\n\n for (const operation of sortedOperations.reverse()) {\n const distance = lastIndex - operation.index;\n\n skipsLeft = skipsLeft - distance;\n\n if (skipsLeft > -1) {\n skipsToPerform++;\n lastIndex = operation.index;\n } else {\n break;\n }\n }\n\n return skipsToPerform;\n}\n\n// Flattens the operations from all scopes into\n// a single array and sorts them by timestamp\nexport function sortOperations<A extends Action>(\n operations: DocumentOperations<A>,\n) {\n return Object.values(operations)\n .flatMap(array => array)\n .sort(\n (a, b) =>\n new Date(a.timestamp).getTime() -\n new Date(b.timestamp).getTime(),\n );\n}\n\n// Flattens the mapped operations (with ignore flag) from all scopes into\n// a single array and sorts them by timestamp\nexport function sortMappedOperations<A extends Action>(\n operations: DocumentOperationsIgnoreMap<A>,\n) {\n return Object.values(operations)\n .flatMap(array => array)\n .sort(\n (a, b) =>\n new Date(a.operation.timestamp).getTime() -\n new Date(b.operation.timestamp).getTime(),\n );\n}\n\n// Runs the operations on the initial data using the\n// provided reducer, wrapped with the document reducer.\n// This rebuilds the document according to the provided actions.\nexport function replayOperations<T, A extends Action, L>(\n initialState: ExtendedState<T, L>,\n clearedOperations: DocumentOperations<A>,\n reducer: ImmutableStateReducer<T, A, L>,\n dispatch?: SignalDispatch,\n header?: DocumentHeader,\n documentReducer = baseReducer,\n skipHeaderOperations: SkipHeaderOperations = {},\n options?: {\n checkHashes?: boolean;\n },\n): Document<T, A, L> {\n // wraps the provided custom reducer with the\n // base document reducer\n const wrappedReducer = createReducer(reducer, documentReducer);\n\n return replayDocument(\n initialState,\n clearedOperations,\n wrappedReducer,\n dispatch,\n header,\n skipHeaderOperations,\n options,\n );\n}\n\nexport type SkipHeaderOperations = Partial<Record<OperationScope, number>>;\n\nexport type ReplayDocumentOptions = {\n // if false then reuses the hash from the operations\n // and only checks the final hash of each scope\n checkHashes?: boolean;\n};\n\n// Runs the operations on the initial data using the\n// provided document reducer.\n// This rebuilds the document according to the provided actions.\nexport function replayDocument<T, A extends Action, L>(\n initialState: ExtendedState<T, L>,\n operations: DocumentOperations<A>,\n reducer: Reducer<T, A, L>,\n dispatch?: SignalDispatch,\n header?: DocumentHeader,\n skipHeaderOperations: SkipHeaderOperations = {},\n options?: ReplayDocumentOptions,\n): Document<T, A, L> {\n const checkHashes = options?.checkHashes ?? true;\n\n // builds a new document from the initial data\n const document = createDocument<T, A, L>(initialState);\n\n const flatOperations = Object.values(operations).flat();\n\n const result = flatOperations.reduce((document, operation) => {\n const doc = reducer(document, operation, dispatch, {\n skip: operation.skip,\n ignoreSkipOperations: true,\n reuseHash: !checkHashes,\n });\n\n return doc;\n }, document);\n\n // if hash generation was skipped then checks if the hash\n // of each scope matches the hash of last operation\n if (!checkHashes) {\n for (const scope of Object.keys(result.state)) {\n for (let i = flatOperations.length - 1; i >= 0; i--) {\n const operation = flatOperations[i];\n\n if (operation.scope !== scope) {\n continue;\n }\n if (operation.hash !== hashDocument(result, scope)) {\n throw new Error(`Hash mismatch for scope ${scope}`);\n } else {\n break;\n }\n }\n }\n }\n\n // reuses operation timestamp if provided\n const resultOperations: DocumentOperations<A> = Object.keys(\n result.operations,\n ).reduce(\n (acc, key) => {\n const scope = key as keyof DocumentOperations<A>;\n return {\n ...acc,\n [scope]: [\n ...result.operations[scope].map((operation, index) => {\n return {\n ...operation,\n timestamp:\n operations[scope][index]?.timestamp ??\n operation.timestamp,\n };\n }),\n ],\n };\n },\n { global: [], local: [] },\n );\n // gets the last modified timestamp from the latest operation\n const lastModified = Object.values(resultOperations).reduce((acc, curr) => {\n const operation = curr[curr.length - 1];\n if (operation?.timestamp > acc) {\n acc = operation.timestamp;\n }\n return acc;\n }, initialState.lastModified);\n\n return { ...result, operations: resultOperations, lastModified };\n}\n\nexport function isSameDocument(documentA: Document, documentB: Document) {\n return stringifyJson(documentA) === stringifyJson(documentB);\n}\n"],"names":["NOOP","UNDO","REDO","SET_NAME","PRUNE","LOAD_STATE","reducer","baseReducer","hash","stringifyJson","castImmutable","freeze","document","index"],"mappings":"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"}
|