@fluidframework/tree 2.51.0 → 2.53.0-350190
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/.vscode/settings.json +0 -1
- package/CHANGELOG.md +43 -0
- package/api-report/tree.alpha.api.md +40 -30
- package/dist/alpha.d.ts +2 -1
- package/dist/codec/codec.d.ts +2 -1
- package/dist/codec/codec.d.ts.map +1 -1
- package/dist/codec/codec.js +4 -3
- package/dist/codec/codec.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/index.d.ts +1 -1
- package/dist/core/rebase/index.d.ts.map +1 -1
- package/dist/core/rebase/index.js +2 -1
- package/dist/core/rebase/index.js.map +1 -1
- package/dist/core/rebase/types.d.ts +3 -1
- package/dist/core/rebase/types.d.ts.map +1 -1
- package/dist/core/rebase/types.js +2 -1
- package/dist/core/rebase/types.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts +1 -23
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js +2 -2
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndex.js +2 -3
- package/dist/core/tree/detachedFieldIndex.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts +17 -0
- package/dist/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -0
- package/dist/core/tree/detachedFieldIndexCodecCommon.js +68 -0
- package/dist/core/tree/detachedFieldIndexCodecCommon.js.map +1 -0
- package/dist/core/tree/detachedFieldIndexCodecV1.d.ts +11 -0
- package/dist/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -0
- package/dist/core/tree/detachedFieldIndexCodecV1.js +55 -0
- package/dist/core/tree/detachedFieldIndexCodecV1.js.map +1 -0
- package/dist/core/tree/detachedFieldIndexCodecV2.d.ts +11 -0
- package/dist/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -0
- package/dist/core/tree/detachedFieldIndexCodecV2.js +49 -0
- package/dist/core/tree/detachedFieldIndexCodecV2.js.map +1 -0
- package/dist/core/tree/detachedFieldIndexCodecs.d.ts +11 -0
- package/dist/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -0
- package/dist/core/tree/detachedFieldIndexCodecs.js +26 -0
- package/dist/core/tree/detachedFieldIndexCodecs.js.map +1 -0
- package/dist/core/tree/detachedFieldIndexFormatCommon.d.ts +37 -0
- package/dist/core/tree/detachedFieldIndexFormatCommon.d.ts.map +1 -0
- package/dist/core/tree/{detachedFieldIndexFormat.js → detachedFieldIndexFormatCommon.js} +18 -13
- package/dist/core/tree/detachedFieldIndexFormatCommon.js.map +1 -0
- package/dist/core/tree/detachedFieldIndexFormatV1.d.ts +13 -0
- package/dist/core/tree/detachedFieldIndexFormatV1.d.ts.map +1 -0
- package/dist/core/tree/detachedFieldIndexFormatV1.js +12 -0
- package/dist/core/tree/detachedFieldIndexFormatV1.js.map +1 -0
- package/dist/core/tree/detachedFieldIndexFormatV2.d.ts +14 -0
- package/dist/core/tree/detachedFieldIndexFormatV2.d.ts.map +1 -0
- package/dist/core/tree/detachedFieldIndexFormatV2.js +14 -0
- package/dist/core/tree/detachedFieldIndexFormatV2.js.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +9 -9
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +21 -21
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +4 -2
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js +4 -4
- package/dist/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +50 -31
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +74 -61
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/format.d.ts +20 -14
- package/dist/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/format.js +18 -12
- package/dist/feature-libraries/chunked-forest/codec/format.js.map +1 -1
- package/{lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts → dist/feature-libraries/chunked-forest/codec/nodeEncoder.d.ts} +20 -14
- package/dist/feature-libraries/chunked-forest/codec/nodeEncoder.d.ts.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/{nodeShape.js → nodeEncoder.js} +23 -17
- package/dist/feature-libraries/chunked-forest/codec/nodeEncoder.js.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +7 -7
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +22 -22
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js +2 -2
- package/dist/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +5 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js +15 -2
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultSchema.js +0 -2
- package/dist/feature-libraries/default-schema/defaultSchema.js.map +1 -1
- package/dist/feature-libraries/default-schema/index.d.ts +1 -1
- package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/index.js +2 -2
- package/dist/feature-libraries/default-schema/index.js.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.d.ts +14 -4
- package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.js +31 -26
- package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +1 -2
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +2 -4
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.d.ts +5 -6
- package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.js +15 -16
- package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +7 -0
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.js +1 -0
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.js +1 -0
- package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +9 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +49 -20
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts +9 -3
- package/dist/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +2 -3
- package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js +3 -0
- package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldChangeRebaser.d.ts +1 -0
- package/dist/feature-libraries/sequence-field/sequenceFieldChangeRebaser.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldChangeRebaser.js +4 -0
- package/dist/feature-libraries/sequence-field/sequenceFieldChangeRebaser.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/jsonDomainSchema.d.ts +5 -3
- package/dist/jsonDomainSchema.d.ts.map +1 -1
- package/dist/jsonDomainSchema.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/shared-tree/independentView.d.ts +8 -0
- package/dist/shared-tree/independentView.d.ts.map +1 -1
- package/dist/shared-tree/independentView.js +23 -11
- package/dist/shared-tree/independentView.js.map +1 -1
- package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
- package/dist/shared-tree/schematizeTree.js +1 -1
- package/dist/shared-tree/schematizeTree.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +0 -1
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +9 -12
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +1 -29
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +20 -6
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js +18 -7
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +2 -1
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +32 -0
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +1 -1
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/simple-tree/api/conciseTree.d.ts +2 -2
- package/dist/simple-tree/api/conciseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/conciseTree.js +6 -6
- package/dist/simple-tree/api/conciseTree.js.map +1 -1
- package/dist/simple-tree/api/configuration.d.ts +11 -2
- package/dist/simple-tree/api/configuration.d.ts.map +1 -1
- package/dist/simple-tree/api/configuration.js +5 -1
- package/dist/simple-tree/api/configuration.js.map +1 -1
- package/dist/simple-tree/api/create.d.ts +8 -7
- package/dist/simple-tree/api/create.d.ts.map +1 -1
- package/dist/simple-tree/api/create.js +33 -23
- package/dist/simple-tree/api/create.js.map +1 -1
- package/dist/simple-tree/api/customTree.d.ts +25 -4
- package/dist/simple-tree/api/customTree.d.ts.map +1 -1
- package/dist/simple-tree/api/customTree.js +42 -16
- package/dist/simple-tree/api/customTree.js.map +1 -1
- package/dist/simple-tree/api/discrepancies.d.ts +94 -0
- package/dist/simple-tree/api/discrepancies.d.ts.map +1 -0
- package/dist/simple-tree/api/discrepancies.js +256 -0
- package/dist/simple-tree/api/discrepancies.js.map +1 -0
- package/dist/simple-tree/api/index.d.ts +3 -2
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +3 -2
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaCompatibilityTester.d.ts +9 -7
- package/dist/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaCompatibilityTester.js +17 -117
- package/dist/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +16 -159
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +4 -47
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +157 -16
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.js +33 -11
- package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +1 -3
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.js +1 -7
- package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/dist/simple-tree/api/schemaStatics.d.ts +158 -0
- package/dist/simple-tree/api/schemaStatics.d.ts.map +1 -0
- package/dist/simple-tree/api/schemaStatics.js +59 -0
- package/dist/simple-tree/api/schemaStatics.js.map +1 -0
- package/dist/simple-tree/api/storedSchema.d.ts +5 -3
- package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/storedSchema.js +9 -3
- package/dist/simple-tree/api/storedSchema.js.map +1 -1
- package/dist/simple-tree/api/treeBeta.d.ts +2 -2
- package/dist/simple-tree/api/treeBeta.d.ts.map +1 -1
- package/dist/simple-tree/api/treeBeta.js +16 -4
- package/dist/simple-tree/api/treeBeta.js.map +1 -1
- package/dist/simple-tree/api/verboseTree.d.ts +2 -2
- package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/verboseTree.js +15 -15
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/dist/simple-tree/core/allowedTypes.d.ts +43 -11
- package/dist/simple-tree/core/allowedTypes.d.ts.map +1 -1
- package/dist/simple-tree/core/allowedTypes.js +51 -11
- package/dist/simple-tree/core/allowedTypes.js.map +1 -1
- package/dist/simple-tree/core/context.d.ts +13 -2
- package/dist/simple-tree/core/context.d.ts.map +1 -1
- package/dist/simple-tree/core/context.js +22 -9
- package/dist/simple-tree/core/context.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +6 -4
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +8 -1
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/simpleNodeSchemaBase.d.ts +25 -0
- package/dist/simple-tree/core/simpleNodeSchemaBase.d.ts.map +1 -0
- package/dist/simple-tree/core/simpleNodeSchemaBase.js +7 -0
- package/dist/simple-tree/core/simpleNodeSchemaBase.js.map +1 -0
- package/dist/simple-tree/core/toStored.d.ts +32 -0
- package/dist/simple-tree/core/toStored.d.ts.map +1 -0
- package/dist/simple-tree/core/toStored.js +37 -0
- package/dist/simple-tree/core/toStored.js.map +1 -0
- package/dist/simple-tree/core/treeNodeKernel.d.ts +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +7 -2
- package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/dist/simple-tree/core/treeNodeValid.d.ts +7 -2
- package/dist/simple-tree/core/treeNodeValid.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeValid.js +19 -4
- package/dist/simple-tree/core/treeNodeValid.js.map +1 -1
- package/dist/simple-tree/core/walkSchema.d.ts +22 -5
- package/dist/simple-tree/core/walkSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/walkSchema.js +6 -2
- package/dist/simple-tree/core/walkSchema.js.map +1 -1
- package/dist/simple-tree/createContext.d.ts +2 -0
- package/dist/simple-tree/createContext.d.ts.map +1 -1
- package/dist/simple-tree/createContext.js +4 -2
- package/dist/simple-tree/createContext.js.map +1 -1
- package/dist/simple-tree/fieldSchema.d.ts +1 -0
- package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
- package/dist/simple-tree/fieldSchema.js +2 -1
- package/dist/simple-tree/fieldSchema.js.map +1 -1
- package/dist/simple-tree/index.d.ts +7 -7
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +13 -8
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +1 -0
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +18 -4
- package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/index.d.ts +1 -1
- package/dist/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/index.js +1 -2
- package/dist/simple-tree/node-kinds/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.js +9 -2
- package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/index.d.ts +1 -1
- package/dist/simple-tree/node-kinds/object/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/index.js +1 -2
- package/dist/simple-tree/node-kinds/object/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts +3 -8
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.js +41 -44
- package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.js +9 -2
- package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/dist/simple-tree/prepareForInsertion.d.ts +6 -6
- package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/dist/simple-tree/prepareForInsertion.js +19 -13
- package/dist/simple-tree/prepareForInsertion.js.map +1 -1
- package/dist/simple-tree/simpleSchema.d.ts +6 -21
- package/dist/simple-tree/simpleSchema.d.ts.map +1 -1
- package/dist/simple-tree/simpleSchema.js.map +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts +38 -11
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +71 -33
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +2 -2
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/dist/simple-tree/walkFieldSchema.d.ts +1 -0
- package/dist/simple-tree/walkFieldSchema.d.ts.map +1 -1
- package/dist/simple-tree/walkFieldSchema.js +1 -0
- package/dist/simple-tree/walkFieldSchema.js.map +1 -1
- package/lib/alpha.d.ts +2 -1
- package/lib/codec/codec.d.ts +2 -1
- package/lib/codec/codec.d.ts.map +1 -1
- package/lib/codec/codec.js +4 -3
- package/lib/codec/codec.js.map +1 -1
- package/lib/core/index.d.ts +1 -1
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +1 -1
- package/lib/core/index.js.map +1 -1
- package/lib/core/rebase/index.d.ts +1 -1
- package/lib/core/rebase/index.d.ts.map +1 -1
- package/lib/core/rebase/index.js +1 -1
- package/lib/core/rebase/index.js.map +1 -1
- package/lib/core/rebase/types.d.ts +3 -1
- package/lib/core/rebase/types.d.ts.map +1 -1
- package/lib/core/rebase/types.js +1 -0
- package/lib/core/rebase/types.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts +1 -23
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js +2 -2
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/tree/detachedFieldIndex.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndex.js +2 -3
- package/lib/core/tree/detachedFieldIndex.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts +17 -0
- package/lib/core/tree/detachedFieldIndexCodecCommon.d.ts.map +1 -0
- package/lib/core/tree/detachedFieldIndexCodecCommon.js +64 -0
- package/lib/core/tree/detachedFieldIndexCodecCommon.js.map +1 -0
- package/lib/core/tree/detachedFieldIndexCodecV1.d.ts +11 -0
- package/lib/core/tree/detachedFieldIndexCodecV1.d.ts.map +1 -0
- package/lib/core/tree/detachedFieldIndexCodecV1.js +51 -0
- package/lib/core/tree/detachedFieldIndexCodecV1.js.map +1 -0
- package/lib/core/tree/detachedFieldIndexCodecV2.d.ts +11 -0
- package/lib/core/tree/detachedFieldIndexCodecV2.d.ts.map +1 -0
- package/lib/core/tree/detachedFieldIndexCodecV2.js +45 -0
- package/lib/core/tree/detachedFieldIndexCodecV2.js.map +1 -0
- package/lib/core/tree/detachedFieldIndexCodecs.d.ts +11 -0
- package/lib/core/tree/detachedFieldIndexCodecs.d.ts.map +1 -0
- package/lib/core/tree/detachedFieldIndexCodecs.js +21 -0
- package/lib/core/tree/detachedFieldIndexCodecs.js.map +1 -0
- package/lib/core/tree/detachedFieldIndexFormatCommon.d.ts +37 -0
- package/lib/core/tree/detachedFieldIndexFormatCommon.d.ts.map +1 -0
- package/lib/core/tree/{detachedFieldIndexFormat.js → detachedFieldIndexFormatCommon.js} +13 -10
- package/lib/core/tree/detachedFieldIndexFormatCommon.js.map +1 -0
- package/lib/core/tree/detachedFieldIndexFormatV1.d.ts +13 -0
- package/lib/core/tree/detachedFieldIndexFormatV1.d.ts.map +1 -0
- package/lib/core/tree/detachedFieldIndexFormatV1.js +9 -0
- package/lib/core/tree/detachedFieldIndexFormatV1.js.map +1 -0
- package/lib/core/tree/detachedFieldIndexFormatV2.d.ts +14 -0
- package/lib/core/tree/detachedFieldIndexFormatV2.d.ts.map +1 -0
- package/lib/core/tree/detachedFieldIndexFormatV2.js +11 -0
- package/lib/core/tree/detachedFieldIndexFormatV2.js.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts +9 -9
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +19 -19
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts +4 -2
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js +4 -4
- package/lib/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts +50 -31
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +70 -57
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/format.d.ts +20 -14
- package/lib/feature-libraries/chunked-forest/codec/format.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/format.js +17 -11
- package/lib/feature-libraries/chunked-forest/codec/format.js.map +1 -1
- package/{dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts → lib/feature-libraries/chunked-forest/codec/nodeEncoder.d.ts} +20 -14
- package/lib/feature-libraries/chunked-forest/codec/nodeEncoder.d.ts.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/{nodeShape.js → nodeEncoder.js} +21 -15
- package/lib/feature-libraries/chunked-forest/codec/nodeEncoder.js.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts +7 -7
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +19 -19
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js +2 -2
- package/lib/feature-libraries/chunked-forest/codec/uncompressedEncode.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +5 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js +15 -2
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultSchema.js +0 -2
- package/lib/feature-libraries/default-schema/defaultSchema.js.map +1 -1
- package/lib/feature-libraries/default-schema/index.d.ts +1 -1
- package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/index.js +1 -1
- package/lib/feature-libraries/default-schema/index.js.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.d.ts +14 -4
- package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.js +29 -24
- package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +1 -2
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +1 -2
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.d.ts +5 -6
- package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.js +14 -14
- package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +7 -0
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.js +1 -0
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.js +1 -0
- package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +9 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +50 -21
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts +9 -3
- package/lib/feature-libraries/modular-schema/modularChangeFormat.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +3 -4
- package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js +3 -0
- package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldChangeRebaser.d.ts +1 -0
- package/lib/feature-libraries/sequence-field/sequenceFieldChangeRebaser.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldChangeRebaser.js +4 -0
- package/lib/feature-libraries/sequence-field/sequenceFieldChangeRebaser.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/jsonDomainSchema.d.ts +5 -3
- package/lib/jsonDomainSchema.d.ts.map +1 -1
- package/lib/jsonDomainSchema.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/shared-tree/independentView.d.ts +8 -0
- package/lib/shared-tree/independentView.d.ts.map +1 -1
- package/lib/shared-tree/independentView.js +21 -10
- package/lib/shared-tree/independentView.js.map +1 -1
- package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
- package/lib/shared-tree/schematizeTree.js +2 -2
- package/lib/shared-tree/schematizeTree.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +0 -1
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +10 -13
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +2 -30
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +20 -6
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js +19 -8
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +2 -1
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +33 -1
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +1 -1
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/simple-tree/api/conciseTree.d.ts +2 -2
- package/lib/simple-tree/api/conciseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/conciseTree.js +6 -6
- package/lib/simple-tree/api/conciseTree.js.map +1 -1
- package/lib/simple-tree/api/configuration.d.ts +11 -2
- package/lib/simple-tree/api/configuration.d.ts.map +1 -1
- package/lib/simple-tree/api/configuration.js +6 -2
- package/lib/simple-tree/api/configuration.js.map +1 -1
- package/lib/simple-tree/api/create.d.ts +8 -7
- package/lib/simple-tree/api/create.d.ts.map +1 -1
- package/lib/simple-tree/api/create.js +35 -25
- package/lib/simple-tree/api/create.js.map +1 -1
- package/lib/simple-tree/api/customTree.d.ts +25 -4
- package/lib/simple-tree/api/customTree.d.ts.map +1 -1
- package/lib/simple-tree/api/customTree.js +43 -17
- package/lib/simple-tree/api/customTree.js.map +1 -1
- package/lib/simple-tree/api/discrepancies.d.ts +94 -0
- package/lib/simple-tree/api/discrepancies.d.ts.map +1 -0
- package/lib/simple-tree/api/discrepancies.js +251 -0
- package/lib/simple-tree/api/discrepancies.js.map +1 -0
- package/lib/simple-tree/api/index.d.ts +3 -2
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +2 -1
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaCompatibilityTester.d.ts +9 -7
- package/lib/simple-tree/api/schemaCompatibilityTester.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaCompatibilityTester.js +19 -119
- package/lib/simple-tree/api/schemaCompatibilityTester.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +16 -159
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +2 -45
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +157 -16
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.js +23 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +1 -3
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.js +0 -5
- package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/lib/simple-tree/api/schemaStatics.d.ts +158 -0
- package/lib/simple-tree/api/schemaStatics.d.ts.map +1 -0
- package/lib/simple-tree/api/schemaStatics.js +56 -0
- package/lib/simple-tree/api/schemaStatics.js.map +1 -0
- package/lib/simple-tree/api/storedSchema.d.ts +5 -3
- package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/storedSchema.js +12 -6
- package/lib/simple-tree/api/storedSchema.js.map +1 -1
- package/lib/simple-tree/api/treeBeta.d.ts +2 -2
- package/lib/simple-tree/api/treeBeta.d.ts.map +1 -1
- package/lib/simple-tree/api/treeBeta.js +14 -2
- package/lib/simple-tree/api/treeBeta.js.map +1 -1
- package/lib/simple-tree/api/verboseTree.d.ts +2 -2
- package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/verboseTree.js +9 -9
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/lib/simple-tree/core/allowedTypes.d.ts +43 -11
- package/lib/simple-tree/core/allowedTypes.d.ts.map +1 -1
- package/lib/simple-tree/core/allowedTypes.js +52 -11
- package/lib/simple-tree/core/allowedTypes.js.map +1 -1
- package/lib/simple-tree/core/context.d.ts +13 -2
- package/lib/simple-tree/core/context.d.ts.map +1 -1
- package/lib/simple-tree/core/context.js +22 -9
- package/lib/simple-tree/core/context.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +6 -4
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +4 -3
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/simpleNodeSchemaBase.d.ts +25 -0
- package/lib/simple-tree/core/simpleNodeSchemaBase.d.ts.map +1 -0
- package/lib/simple-tree/core/simpleNodeSchemaBase.js +6 -0
- package/lib/simple-tree/core/simpleNodeSchemaBase.js.map +1 -0
- package/lib/simple-tree/core/toStored.d.ts +32 -0
- package/lib/simple-tree/core/toStored.d.ts.map +1 -0
- package/lib/simple-tree/core/toStored.js +32 -0
- package/lib/simple-tree/core/toStored.js.map +1 -0
- package/lib/simple-tree/core/treeNodeKernel.d.ts +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +7 -2
- package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/lib/simple-tree/core/treeNodeValid.d.ts +7 -2
- package/lib/simple-tree/core/treeNodeValid.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeValid.js +17 -3
- package/lib/simple-tree/core/treeNodeValid.js.map +1 -1
- package/lib/simple-tree/core/walkSchema.d.ts +22 -5
- package/lib/simple-tree/core/walkSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/walkSchema.js +6 -2
- package/lib/simple-tree/core/walkSchema.js.map +1 -1
- package/lib/simple-tree/createContext.d.ts +2 -0
- package/lib/simple-tree/createContext.d.ts.map +1 -1
- package/lib/simple-tree/createContext.js +5 -3
- package/lib/simple-tree/createContext.js.map +1 -1
- package/lib/simple-tree/fieldSchema.d.ts +1 -0
- package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
- package/lib/simple-tree/fieldSchema.js +2 -1
- package/lib/simple-tree/fieldSchema.js.map +1 -1
- package/lib/simple-tree/index.d.ts +7 -7
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +5 -5
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +2 -1
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +21 -7
- package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/index.d.ts +1 -1
- package/lib/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/index.js +1 -1
- package/lib/simple-tree/node-kinds/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.js +12 -5
- package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/index.d.ts +1 -1
- package/lib/simple-tree/node-kinds/object/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/index.js +1 -1
- package/lib/simple-tree/node-kinds/object/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts +3 -8
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.js +19 -21
- package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.js +12 -5
- package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/lib/simple-tree/prepareForInsertion.d.ts +6 -6
- package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/lib/simple-tree/prepareForInsertion.js +21 -15
- package/lib/simple-tree/prepareForInsertion.js.map +1 -1
- package/lib/simple-tree/simpleSchema.d.ts +6 -21
- package/lib/simple-tree/simpleSchema.d.ts.map +1 -1
- package/lib/simple-tree/simpleSchema.js.map +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts +38 -11
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +70 -34
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +2 -2
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/lib/simple-tree/walkFieldSchema.d.ts +1 -0
- package/lib/simple-tree/walkFieldSchema.d.ts.map +1 -1
- package/lib/simple-tree/walkFieldSchema.js +1 -0
- package/lib/simple-tree/walkFieldSchema.js.map +1 -1
- package/package.json +23 -23
- package/src/codec/codec.ts +4 -3
- package/src/core/index.ts +2 -0
- package/src/core/rebase/index.ts +2 -0
- package/src/core/rebase/types.ts +4 -0
- package/src/core/schema-stored/schema.ts +2 -26
- package/src/core/tree/detachedFieldIndex.ts +4 -6
- package/src/core/tree/detachedFieldIndexCodecCommon.ts +87 -0
- package/src/core/tree/{detachedFieldIndexCodec.ts → detachedFieldIndexCodecV1.ts} +22 -68
- package/src/core/tree/detachedFieldIndexCodecV2.ts +72 -0
- package/src/core/tree/detachedFieldIndexCodecs.ts +44 -0
- package/src/core/tree/{detachedFieldIndexFormat.ts → detachedFieldIndexFormatCommon.ts} +32 -23
- package/src/core/tree/detachedFieldIndexFormatV1.ts +15 -0
- package/src/core/tree/detachedFieldIndexFormatV2.ts +17 -0
- package/src/feature-libraries/chunked-forest/codec/README.md +1 -1
- package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +25 -25
- package/src/feature-libraries/chunked-forest/codec/chunkDecodingGeneric.ts +10 -6
- package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +96 -73
- package/src/feature-libraries/chunked-forest/codec/format.ts +20 -14
- package/src/feature-libraries/chunked-forest/codec/{nodeShape.ts → nodeEncoder.ts} +23 -17
- package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +34 -34
- package/src/feature-libraries/chunked-forest/codec/uncompressedEncode.ts +5 -5
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +11 -0
- package/src/feature-libraries/default-schema/defaultSchema.ts +0 -2
- package/src/feature-libraries/default-schema/index.ts +1 -1
- package/src/feature-libraries/default-schema/schemaChecker.ts +47 -30
- package/src/feature-libraries/index.ts +1 -3
- package/src/feature-libraries/modular-schema/comparison.ts +14 -29
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +9 -0
- package/src/feature-libraries/modular-schema/genericFieldKind.ts +1 -0
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +61 -19
- package/src/feature-libraries/object-forest/objectForest.ts +10 -6
- package/src/feature-libraries/optional-field/optionalField.ts +4 -0
- package/src/feature-libraries/sequence-field/sequenceFieldChangeRebaser.ts +4 -0
- package/src/index.ts +7 -1
- package/src/jsonDomainSchema.ts +4 -0
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/independentView.ts +45 -19
- package/src/shared-tree/schematizeTree.ts +2 -2
- package/src/shared-tree/schematizingTreeView.ts +24 -15
- package/src/shared-tree/sharedTree.ts +2 -42
- package/src/shared-tree/treeAlpha.ts +48 -22
- package/src/shared-tree/treeCheckout.ts +54 -10
- package/src/shared-tree-core/branch.ts +1 -6
- package/src/simple-tree/api/conciseTree.ts +9 -7
- package/src/simple-tree/api/configuration.ts +18 -4
- package/src/simple-tree/api/create.ts +44 -36
- package/src/simple-tree/api/customTree.ts +59 -20
- package/src/simple-tree/api/discrepancies.ts +474 -0
- package/src/simple-tree/api/index.ts +2 -3
- package/src/simple-tree/api/schemaCompatibilityTester.ts +23 -151
- package/src/simple-tree/api/schemaFactory.ts +13 -254
- package/src/simple-tree/api/schemaFactoryAlpha.ts +174 -1
- package/src/simple-tree/api/schemaFactoryRecursive.ts +1 -25
- package/src/simple-tree/api/schemaStatics.ts +291 -0
- package/src/simple-tree/api/storedSchema.ts +18 -14
- package/src/simple-tree/api/treeBeta.ts +24 -4
- package/src/simple-tree/api/verboseTree.ts +17 -8
- package/src/simple-tree/core/allowedTypes.ts +87 -34
- package/src/simple-tree/core/context.ts +24 -22
- package/src/simple-tree/core/index.ts +11 -2
- package/src/simple-tree/core/simpleNodeSchemaBase.ts +30 -0
- package/src/simple-tree/core/toStored.ts +58 -0
- package/src/simple-tree/core/treeNodeKernel.ts +1 -1
- package/src/simple-tree/core/treeNodeSchema.ts +8 -2
- package/src/simple-tree/core/treeNodeValid.ts +23 -4
- package/src/simple-tree/core/walkSchema.ts +26 -6
- package/src/simple-tree/createContext.ts +11 -3
- package/src/simple-tree/fieldSchema.ts +3 -1
- package/src/simple-tree/index.ts +19 -13
- package/src/simple-tree/leafNodeSchema.ts +2 -1
- package/src/simple-tree/node-kinds/array/arrayNode.ts +64 -23
- package/src/simple-tree/node-kinds/index.ts +0 -1
- package/src/simple-tree/node-kinds/map/mapNode.ts +23 -2
- package/src/simple-tree/node-kinds/object/index.ts +0 -1
- package/src/simple-tree/node-kinds/object/objectNode.ts +42 -30
- package/src/simple-tree/node-kinds/record/recordNode.ts +20 -2
- package/src/simple-tree/prepareForInsertion.ts +28 -15
- package/src/simple-tree/simpleSchema.ts +6 -26
- package/src/simple-tree/toStoredSchema.ts +110 -44
- package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +6 -2
- package/src/simple-tree/walkFieldSchema.ts +1 -0
- package/dist/core/tree/detachedFieldIndexCodec.d.ts +0 -11
- package/dist/core/tree/detachedFieldIndexCodec.d.ts.map +0 -1
- package/dist/core/tree/detachedFieldIndexCodec.js +0 -100
- package/dist/core/tree/detachedFieldIndexCodec.js.map +0 -1
- package/dist/core/tree/detachedFieldIndexFormat.d.ts +0 -33
- package/dist/core/tree/detachedFieldIndexFormat.d.ts.map +0 -1
- package/dist/core/tree/detachedFieldIndexFormat.js.map +0 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +0 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +0 -1
- package/dist/feature-libraries/initializeForest.d.ts +0 -18
- package/dist/feature-libraries/initializeForest.d.ts.map +0 -1
- package/dist/feature-libraries/initializeForest.js +0 -35
- package/dist/feature-libraries/initializeForest.js.map +0 -1
- package/dist/simple-tree/discrepancies.d.ts +0 -167
- package/dist/simple-tree/discrepancies.d.ts.map +0 -1
- package/dist/simple-tree/discrepancies.js +0 -382
- package/dist/simple-tree/discrepancies.js.map +0 -1
- package/lib/core/tree/detachedFieldIndexCodec.d.ts +0 -11
- package/lib/core/tree/detachedFieldIndexCodec.d.ts.map +0 -1
- package/lib/core/tree/detachedFieldIndexCodec.js +0 -96
- package/lib/core/tree/detachedFieldIndexCodec.js.map +0 -1
- package/lib/core/tree/detachedFieldIndexFormat.d.ts +0 -33
- package/lib/core/tree/detachedFieldIndexFormat.d.ts.map +0 -1
- package/lib/core/tree/detachedFieldIndexFormat.js.map +0 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.d.ts.map +0 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +0 -1
- package/lib/feature-libraries/initializeForest.d.ts +0 -18
- package/lib/feature-libraries/initializeForest.d.ts.map +0 -1
- package/lib/feature-libraries/initializeForest.js +0 -31
- package/lib/feature-libraries/initializeForest.js.map +0 -1
- package/lib/simple-tree/discrepancies.d.ts +0 -167
- package/lib/simple-tree/discrepancies.d.ts.map +0 -1
- package/lib/simple-tree/discrepancies.js +0 -376
- package/lib/simple-tree/discrepancies.js.map +0 -1
- package/src/feature-libraries/initializeForest.ts +0 -55
- package/src/simple-tree/discrepancies.ts +0 -648
|
@@ -20,18 +20,18 @@ import {
|
|
|
20
20
|
import type { FullSchemaPolicy } from "../../modular-schema/index.js";
|
|
21
21
|
|
|
22
22
|
import {
|
|
23
|
-
|
|
23
|
+
EncoderContext,
|
|
24
24
|
type FieldEncoder,
|
|
25
|
-
type
|
|
25
|
+
type FieldEncodeBuilder,
|
|
26
26
|
type KeyedFieldEncoder,
|
|
27
|
-
type
|
|
27
|
+
type NodeEncodeBuilder,
|
|
28
28
|
anyNodeEncoder,
|
|
29
29
|
asFieldEncoder,
|
|
30
30
|
compressedEncode,
|
|
31
31
|
} from "./compressedEncode.js";
|
|
32
32
|
import type { FieldBatch } from "./fieldBatch.js";
|
|
33
33
|
import { type EncodedFieldBatch, type EncodedValueShape, SpecialField } from "./format.js";
|
|
34
|
-
import {
|
|
34
|
+
import { NodeShapeBasedEncoder } from "./nodeEncoder.js";
|
|
35
35
|
|
|
36
36
|
/**
|
|
37
37
|
* Encode data from `fieldBatch` in into an `EncodedChunk`.
|
|
@@ -45,37 +45,38 @@ export function schemaCompressedEncode(
|
|
|
45
45
|
fieldBatch: FieldBatch,
|
|
46
46
|
idCompressor: IIdCompressor,
|
|
47
47
|
): EncodedFieldBatch {
|
|
48
|
-
return compressedEncode(fieldBatch,
|
|
48
|
+
return compressedEncode(fieldBatch, buildContext(schema, policy, idCompressor));
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
export function
|
|
52
|
-
|
|
51
|
+
export function buildContext(
|
|
52
|
+
storedSchema: StoredSchemaCollection,
|
|
53
53
|
policy: FullSchemaPolicy,
|
|
54
54
|
idCompressor: IIdCompressor,
|
|
55
|
-
):
|
|
56
|
-
const
|
|
57
|
-
(
|
|
58
|
-
|
|
59
|
-
(
|
|
60
|
-
|
|
55
|
+
): EncoderContext {
|
|
56
|
+
const context: EncoderContext = new EncoderContext(
|
|
57
|
+
(fieldBuilder: FieldEncodeBuilder, schemaName: TreeNodeSchemaIdentifier) =>
|
|
58
|
+
getNodeEncoder(fieldBuilder, storedSchema, schemaName),
|
|
59
|
+
(nodeBuilder: NodeEncodeBuilder, fieldSchema: TreeFieldStoredSchema) =>
|
|
60
|
+
getFieldEncoder(nodeBuilder, fieldSchema, context, storedSchema),
|
|
61
61
|
policy.fieldKinds,
|
|
62
62
|
idCompressor,
|
|
63
63
|
);
|
|
64
|
-
return
|
|
64
|
+
return context;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
/**
|
|
68
|
-
* Selects
|
|
68
|
+
* Selects an encoder to use to encode fields.
|
|
69
69
|
*/
|
|
70
|
-
export function
|
|
71
|
-
|
|
70
|
+
export function getFieldEncoder(
|
|
71
|
+
nodeBuilder: NodeEncodeBuilder,
|
|
72
72
|
field: TreeFieldStoredSchema,
|
|
73
|
-
|
|
73
|
+
context: EncoderContext,
|
|
74
74
|
storedSchema: StoredSchemaCollection,
|
|
75
75
|
): FieldEncoder {
|
|
76
|
-
const kind =
|
|
76
|
+
const kind = context.fieldShapes.get(field.kind) ?? fail(0xb52 /* missing FieldKind */);
|
|
77
77
|
const type = oneFromSet(field.types);
|
|
78
|
-
const nodeEncoder =
|
|
78
|
+
const nodeEncoder =
|
|
79
|
+
type !== undefined ? nodeBuilder.nodeEncoderFromSchema(type) : anyNodeEncoder;
|
|
79
80
|
if (kind.multiplicity === Multiplicity.Single) {
|
|
80
81
|
if (field.kind === identifierFieldKindIdentifier) {
|
|
81
82
|
assert(type !== undefined, 0x999 /* field type must be defined in identifier field */);
|
|
@@ -89,7 +90,7 @@ export function fieldShaper(
|
|
|
89
90
|
nodeSchema.leafValue === ValueSchema.String,
|
|
90
91
|
0x99c /* identifier field can only be type string */,
|
|
91
92
|
);
|
|
92
|
-
const identifierNodeEncoder = new
|
|
93
|
+
const identifierNodeEncoder = new NodeShapeBasedEncoder(
|
|
93
94
|
type,
|
|
94
95
|
SpecialField.Identifier,
|
|
95
96
|
[],
|
|
@@ -99,21 +100,20 @@ export function fieldShaper(
|
|
|
99
100
|
}
|
|
100
101
|
return asFieldEncoder(nodeEncoder);
|
|
101
102
|
} else {
|
|
102
|
-
return
|
|
103
|
+
return context.nestedArrayEncoder(nodeEncoder);
|
|
103
104
|
}
|
|
104
105
|
}
|
|
105
106
|
|
|
106
107
|
/**
|
|
107
|
-
* Selects
|
|
108
|
+
* Selects an encoder to use to encode nodes.
|
|
108
109
|
*/
|
|
109
|
-
export function
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
fieldHandler: FieldShaper,
|
|
110
|
+
export function getNodeEncoder(
|
|
111
|
+
fieldBuilder: FieldEncodeBuilder,
|
|
112
|
+
storedSchema: StoredSchemaCollection,
|
|
113
113
|
schemaName: TreeNodeSchemaIdentifier,
|
|
114
|
-
):
|
|
114
|
+
): NodeShapeBasedEncoder {
|
|
115
115
|
const schema =
|
|
116
|
-
|
|
116
|
+
storedSchema.nodeSchema.get(schemaName) ?? fail(0xb53 /* missing node schema */);
|
|
117
117
|
|
|
118
118
|
if (schema instanceof ObjectNodeStoredSchema) {
|
|
119
119
|
// TODO:Performance:
|
|
@@ -122,14 +122,14 @@ export function treeShaper(
|
|
|
122
122
|
|
|
123
123
|
const objectNodeFields: KeyedFieldEncoder[] = [];
|
|
124
124
|
for (const [key, field] of schema.objectNodeFields ?? []) {
|
|
125
|
-
objectNodeFields.push({ key, encoder:
|
|
125
|
+
objectNodeFields.push({ key, encoder: fieldBuilder.fieldEncoderFromSchema(field) });
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
const shape = new
|
|
128
|
+
const shape = new NodeShapeBasedEncoder(schemaName, false, objectNodeFields, undefined);
|
|
129
129
|
return shape;
|
|
130
130
|
}
|
|
131
131
|
if (schema instanceof LeafNodeStoredSchema) {
|
|
132
|
-
const shape = new
|
|
132
|
+
const shape = new NodeShapeBasedEncoder(
|
|
133
133
|
schemaName,
|
|
134
134
|
valueShapeFromSchema(schema.leafValue),
|
|
135
135
|
[],
|
|
@@ -138,11 +138,11 @@ export function treeShaper(
|
|
|
138
138
|
return shape;
|
|
139
139
|
}
|
|
140
140
|
if (schema instanceof MapNodeStoredSchema) {
|
|
141
|
-
const shape = new
|
|
141
|
+
const shape = new NodeShapeBasedEncoder(
|
|
142
142
|
schemaName,
|
|
143
143
|
false,
|
|
144
144
|
[],
|
|
145
|
-
|
|
145
|
+
fieldBuilder.fieldEncoderFromSchema(schema.mapFields),
|
|
146
146
|
);
|
|
147
147
|
return shape;
|
|
148
148
|
}
|
|
@@ -13,8 +13,8 @@ import type { FluidSerializableReadOnly } from "../../valueUtilities.js";
|
|
|
13
13
|
import type { FieldBatch } from "./fieldBatch.js";
|
|
14
14
|
import {
|
|
15
15
|
type EncodedFieldBatch,
|
|
16
|
-
type
|
|
17
|
-
type
|
|
16
|
+
type EncodedNestedArrayShape,
|
|
17
|
+
type EncodedNodeShape,
|
|
18
18
|
version,
|
|
19
19
|
} from "./format.js";
|
|
20
20
|
import type { ShapeIndex } from "./formatGeneric.js";
|
|
@@ -33,7 +33,7 @@ export function uncompressedEncode(batch: FieldBatch): EncodedFieldBatch {
|
|
|
33
33
|
version,
|
|
34
34
|
identifiers: [],
|
|
35
35
|
// A single shape used to encode all fields.
|
|
36
|
-
shapes: [{ c:
|
|
36
|
+
shapes: [{ c: anyNodeShape }, { a: anyArray }],
|
|
37
37
|
// Wrap up each field as an indicator to use the above shape, and its encoded data.
|
|
38
38
|
data: rootFields.map((data) => [arrayIndex, data]),
|
|
39
39
|
};
|
|
@@ -42,11 +42,11 @@ export function uncompressedEncode(batch: FieldBatch): EncodedFieldBatch {
|
|
|
42
42
|
const treeIndex: ShapeIndex = 0;
|
|
43
43
|
const arrayIndex: ShapeIndex = 1;
|
|
44
44
|
|
|
45
|
-
const
|
|
45
|
+
const anyNodeShape: EncodedNodeShape = {
|
|
46
46
|
extraFields: arrayIndex,
|
|
47
47
|
};
|
|
48
48
|
|
|
49
|
-
const anyArray:
|
|
49
|
+
const anyArray: EncodedNestedArrayShape = treeIndex;
|
|
50
50
|
|
|
51
51
|
/**
|
|
52
52
|
* Encode a field using the hard coded shape above.
|
|
@@ -41,6 +41,7 @@ export const noChangeHandler: FieldChangeHandler<0> = {
|
|
|
41
41
|
compose: (change1: 0, change2: 0) => 0,
|
|
42
42
|
invert: (changes: 0) => 0,
|
|
43
43
|
rebase: (change: 0, over: 0) => 0,
|
|
44
|
+
mute: (changes: 0) => 0,
|
|
44
45
|
}),
|
|
45
46
|
codecsFactory: () => noChangeCodecFamily,
|
|
46
47
|
editor: { buildChildChanges: () => fail(0xb0d /* Child changes not supported */) },
|
|
@@ -97,6 +98,11 @@ export const required = new FieldKindWithEditor(
|
|
|
97
98
|
Multiplicity.Single,
|
|
98
99
|
valueChangeHandler,
|
|
99
100
|
(types, other) =>
|
|
101
|
+
// By omitting Identifier here,
|
|
102
|
+
// this is making a policy choice that a schema upgrade cannot be done from required to identifier.
|
|
103
|
+
// Since an identifier can be upgraded into a required field,
|
|
104
|
+
// preventing the inverse helps ensure that schema upgrades are monotonic.
|
|
105
|
+
// Which direction is allowed is a subjective policy choice.
|
|
100
106
|
(other.kind === sequence.identifier ||
|
|
101
107
|
other.kind === requiredIdentifier ||
|
|
102
108
|
other.kind === optional.identifier ||
|
|
@@ -125,6 +131,10 @@ const nodeKeyIdentifier = "NodeKey";
|
|
|
125
131
|
|
|
126
132
|
/**
|
|
127
133
|
* Exactly one identifier.
|
|
134
|
+
*
|
|
135
|
+
* TODO: this is almost the same as identifier, but apparently unused.
|
|
136
|
+
* Confirm if this is truly unused since before the document format was stabilized, and remove if possible.
|
|
137
|
+
* @deprecated Superseded by {@link identifier}.
|
|
128
138
|
*/
|
|
129
139
|
export const nodeKey = new FieldKindWithEditor(
|
|
130
140
|
nodeKeyIdentifier,
|
|
@@ -149,6 +159,7 @@ export const identifier = new FieldKindWithEditor(
|
|
|
149
159
|
Multiplicity.Single,
|
|
150
160
|
noChangeHandler,
|
|
151
161
|
(types, other) =>
|
|
162
|
+
// Allows upgrading from identifier to required: which way this upgrade is allowed to go is a subjective policy choice.
|
|
152
163
|
(other.kind === sequence.identifier ||
|
|
153
164
|
other.kind === requiredIdentifier ||
|
|
154
165
|
other.kind === optional.identifier ||
|
|
@@ -32,66 +32,78 @@ export enum SchemaValidationError {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
|
-
* Throws a UsageError
|
|
35
|
+
* Throws a UsageError indicating a tree is out of schema.
|
|
36
36
|
*/
|
|
37
|
-
export function
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
);
|
|
42
|
-
}
|
|
37
|
+
export function throwOutOfSchema(maybeError: SchemaValidationError): never {
|
|
38
|
+
throw new UsageError(
|
|
39
|
+
`Tree does not conform to schema: ${SchemaValidationError[maybeError]}`,
|
|
40
|
+
);
|
|
43
41
|
}
|
|
44
42
|
|
|
43
|
+
type NotUndefined = number | string | boolean | bigint | symbol | object;
|
|
44
|
+
|
|
45
45
|
/**
|
|
46
46
|
* Deeply checks that the provided node complies with the schema based on its identifier.
|
|
47
|
+
*
|
|
48
|
+
* @param onError - Called with the first error (if any).
|
|
49
|
+
*
|
|
50
|
+
* @returns the return value from `onError` if the node or anything inside of it is out of schema, otherwise `undefined`.
|
|
47
51
|
*/
|
|
48
|
-
export function isNodeInSchema(
|
|
52
|
+
export function isNodeInSchema<T extends NotUndefined>(
|
|
49
53
|
node: MinimalMapTreeNodeView,
|
|
50
54
|
schemaAndPolicy: SchemaAndPolicy,
|
|
51
|
-
|
|
55
|
+
onError: (error: SchemaValidationError) => T,
|
|
56
|
+
): T | undefined {
|
|
52
57
|
// Validate the schema declared by the node exists
|
|
53
58
|
const schema = schemaAndPolicy.schema.nodeSchema.get(node.type);
|
|
54
59
|
if (schema === undefined) {
|
|
55
|
-
return SchemaValidationError.Node_MissingSchema;
|
|
60
|
+
return onError(SchemaValidationError.Node_MissingSchema);
|
|
56
61
|
}
|
|
57
62
|
|
|
58
63
|
// Validate the node is well formed according to its schema
|
|
59
64
|
|
|
60
65
|
if (schema instanceof LeafNodeStoredSchema) {
|
|
61
66
|
if (iterableHasSome(node.fields)) {
|
|
62
|
-
return SchemaValidationError.LeafNode_FieldsNotAllowed;
|
|
67
|
+
return onError(SchemaValidationError.LeafNode_FieldsNotAllowed);
|
|
63
68
|
}
|
|
64
69
|
if (!allowsValue(schema.leafValue, node.value)) {
|
|
65
|
-
return SchemaValidationError.LeafNode_InvalidValue;
|
|
70
|
+
return onError(SchemaValidationError.LeafNode_InvalidValue);
|
|
66
71
|
}
|
|
67
72
|
} else {
|
|
68
73
|
if (node.value !== undefined) {
|
|
69
|
-
return SchemaValidationError.NonLeafNode_ValueNotAllowed;
|
|
74
|
+
return onError(SchemaValidationError.NonLeafNode_ValueNotAllowed);
|
|
70
75
|
}
|
|
71
76
|
|
|
72
77
|
if (schema instanceof ObjectNodeStoredSchema) {
|
|
73
78
|
const uncheckedFieldsFromNode = new Set(mapIterable(node.fields, ([key, field]) => key));
|
|
74
79
|
for (const [fieldKey, fieldSchema] of schema.objectNodeFields) {
|
|
75
80
|
const nodeField = node.fields.get(fieldKey) ?? [];
|
|
76
|
-
const fieldInSchemaResult = isFieldInSchema(
|
|
81
|
+
const fieldInSchemaResult = isFieldInSchema(
|
|
82
|
+
nodeField,
|
|
83
|
+
fieldSchema,
|
|
84
|
+
schemaAndPolicy,
|
|
85
|
+
onError,
|
|
86
|
+
);
|
|
77
87
|
if (fieldInSchemaResult !== undefined) {
|
|
78
88
|
return fieldInSchemaResult;
|
|
79
89
|
}
|
|
80
90
|
uncheckedFieldsFromNode.delete(fieldKey);
|
|
81
91
|
}
|
|
82
|
-
// The node has fields that we did not check as part of looking at every field defined in the node's schema
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
!schemaAndPolicy.policy.allowUnknownOptionalFields(node.type)
|
|
89
|
-
) {
|
|
90
|
-
return SchemaValidationError.ObjectNode_FieldNotInSchema;
|
|
92
|
+
// The node has fields that we did not check as part of looking at every field defined in the node's schema.
|
|
93
|
+
// Since this is testing compatibility with a stored schema (not view schema), "allowUnknownOptionalFields" does not exist at this layer.
|
|
94
|
+
// Code using this with a stored schema derived from a view schema rather than the document can be problematic because it may be missing unknown fields that the actual document has.
|
|
95
|
+
// Other schema evolution features like "staged" allowed types will likely cause similar issues elsewhere in this checker.
|
|
96
|
+
if (uncheckedFieldsFromNode.size !== 0) {
|
|
97
|
+
return onError(SchemaValidationError.ObjectNode_FieldNotInSchema);
|
|
91
98
|
}
|
|
92
99
|
} else if (schema instanceof MapNodeStoredSchema) {
|
|
93
100
|
for (const [_key, field] of node.fields) {
|
|
94
|
-
const fieldInSchemaResult = isFieldInSchema(
|
|
101
|
+
const fieldInSchemaResult = isFieldInSchema(
|
|
102
|
+
field,
|
|
103
|
+
schema.mapFields,
|
|
104
|
+
schemaAndPolicy,
|
|
105
|
+
onError,
|
|
106
|
+
);
|
|
95
107
|
if (fieldInSchemaResult !== undefined) {
|
|
96
108
|
return fieldInSchemaResult;
|
|
97
109
|
}
|
|
@@ -106,34 +118,39 @@ export function isNodeInSchema(
|
|
|
106
118
|
|
|
107
119
|
/**
|
|
108
120
|
* Deeply checks that the nodes comply with the field schema and included schema.
|
|
121
|
+
*
|
|
122
|
+
* @param onError - Called with the first error (if any).
|
|
123
|
+
*
|
|
124
|
+
* @returns the return value from `onError` if the field or anything inside of it is out of schema, otherwise `undefined`.
|
|
109
125
|
*/
|
|
110
|
-
export function isFieldInSchema(
|
|
126
|
+
export function isFieldInSchema<T extends NotUndefined>(
|
|
111
127
|
childNodes: MapTreeFieldViewGeneric<MinimalMapTreeNodeView>,
|
|
112
128
|
schema: TreeFieldStoredSchema,
|
|
113
129
|
schemaAndPolicy: SchemaAndPolicy,
|
|
114
|
-
|
|
130
|
+
onError: (error: SchemaValidationError) => T,
|
|
131
|
+
): T | undefined {
|
|
115
132
|
// Validate that the field kind is handled by the schema policy
|
|
116
133
|
const kind = schemaAndPolicy.policy.fieldKinds.get(schema.kind);
|
|
117
134
|
if (kind === undefined) {
|
|
118
|
-
return SchemaValidationError.Field_KindNotInSchemaPolicy;
|
|
135
|
+
return onError(SchemaValidationError.Field_KindNotInSchemaPolicy);
|
|
119
136
|
}
|
|
120
137
|
|
|
121
138
|
// Validate that the field doesn't contain more nodes than its type supports
|
|
122
139
|
{
|
|
123
140
|
const multiplicityCheck = compliesWithMultiplicity(childNodes.length, kind.multiplicity);
|
|
124
141
|
if (multiplicityCheck !== undefined) {
|
|
125
|
-
return multiplicityCheck;
|
|
142
|
+
return onError(multiplicityCheck);
|
|
126
143
|
}
|
|
127
144
|
}
|
|
128
145
|
|
|
129
146
|
for (const node of childNodes) {
|
|
130
147
|
// Validate the type declared by the node is allowed in this field
|
|
131
148
|
if (schema.types !== undefined && !schema.types.has(node.type)) {
|
|
132
|
-
return SchemaValidationError.Field_NodeTypeNotAllowed;
|
|
149
|
+
return onError(SchemaValidationError.Field_NodeTypeNotAllowed);
|
|
133
150
|
}
|
|
134
151
|
|
|
135
152
|
// Validate the node complies with the type it declares to be.
|
|
136
|
-
const nodeInSchemaResult = isNodeInSchema(node, schemaAndPolicy);
|
|
153
|
+
const nodeInSchemaResult = isNodeInSchema(node, schemaAndPolicy, onError);
|
|
137
154
|
if (nodeInSchemaResult !== undefined) {
|
|
138
155
|
return nodeInSchemaResult;
|
|
139
156
|
}
|
|
@@ -136,7 +136,7 @@ export {
|
|
|
136
136
|
SchemaValidationError,
|
|
137
137
|
isNodeInSchema,
|
|
138
138
|
isFieldInSchema,
|
|
139
|
-
|
|
139
|
+
throwOutOfSchema,
|
|
140
140
|
} from "./default-schema/index.js";
|
|
141
141
|
|
|
142
142
|
export {
|
|
@@ -193,5 +193,3 @@ export {
|
|
|
193
193
|
type TreeIndexKey,
|
|
194
194
|
type TreeIndexNodes,
|
|
195
195
|
} from "./indexing/index.js";
|
|
196
|
-
|
|
197
|
-
export { initializeForest } from "./initializeForest.js";
|
|
@@ -23,7 +23,7 @@ import { withEditor } from "./fieldKindWithEditor.js";
|
|
|
23
23
|
import { isNeverTree } from "./isNeverTree.js";
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
26
|
+
* Returns true iff `superset` is a superset of `original`.
|
|
27
27
|
*
|
|
28
28
|
* This does not require a strict (aka proper) superset: equivalent schema will return true.
|
|
29
29
|
*
|
|
@@ -65,12 +65,7 @@ export function allowsTreeSuperset(
|
|
|
65
65
|
|
|
66
66
|
if (original instanceof MapNodeStoredSchema) {
|
|
67
67
|
if (superset instanceof MapNodeStoredSchema) {
|
|
68
|
-
return allowsFieldSuperset(
|
|
69
|
-
policy,
|
|
70
|
-
originalData,
|
|
71
|
-
normalizeField(original.mapFields),
|
|
72
|
-
normalizeField(superset.mapFields),
|
|
73
|
-
);
|
|
68
|
+
return allowsFieldSuperset(policy, originalData, original.mapFields, superset.mapFields);
|
|
74
69
|
}
|
|
75
70
|
return false;
|
|
76
71
|
}
|
|
@@ -78,14 +73,7 @@ export function allowsTreeSuperset(
|
|
|
78
73
|
assert(original instanceof ObjectNodeStoredSchema, 0x895 /* unsupported node kind */);
|
|
79
74
|
if (superset instanceof MapNodeStoredSchema) {
|
|
80
75
|
for (const [_key, field] of original.objectNodeFields) {
|
|
81
|
-
if (
|
|
82
|
-
!allowsFieldSuperset(
|
|
83
|
-
policy,
|
|
84
|
-
originalData,
|
|
85
|
-
normalizeField(field),
|
|
86
|
-
normalizeField(superset.mapFields),
|
|
87
|
-
)
|
|
88
|
-
) {
|
|
76
|
+
if (!allowsFieldSuperset(policy, originalData, field, superset.mapFields)) {
|
|
89
77
|
return false;
|
|
90
78
|
}
|
|
91
79
|
}
|
|
@@ -102,13 +90,13 @@ export function allowsTreeSuperset(
|
|
|
102
90
|
originalData,
|
|
103
91
|
original.objectNodeFields.get(originalField) ??
|
|
104
92
|
fail(0xb17 /* missing expected field */),
|
|
105
|
-
|
|
93
|
+
storedEmptyFieldSchema,
|
|
106
94
|
),
|
|
107
95
|
bExtra: (supersetField) =>
|
|
108
96
|
allowsFieldSuperset(
|
|
109
97
|
policy,
|
|
110
98
|
originalData,
|
|
111
|
-
|
|
99
|
+
storedEmptyFieldSchema,
|
|
112
100
|
superset.objectNodeFields.get(supersetField) ??
|
|
113
101
|
fail(0xb18 /* missing expected field */),
|
|
114
102
|
),
|
|
@@ -123,7 +111,7 @@ export function allowsTreeSuperset(
|
|
|
123
111
|
}
|
|
124
112
|
|
|
125
113
|
/**
|
|
126
|
-
*
|
|
114
|
+
* Returns true iff `superset` is a superset of `original`.
|
|
127
115
|
*
|
|
128
116
|
* This does not require a strict (aka proper) superset: equivalent schema will return true.
|
|
129
117
|
*/
|
|
@@ -135,7 +123,7 @@ export function allowsValueSuperset(
|
|
|
135
123
|
}
|
|
136
124
|
|
|
137
125
|
/**
|
|
138
|
-
*
|
|
126
|
+
* Returns true iff `superset` is a superset of `original`.
|
|
139
127
|
*
|
|
140
128
|
* This does not require a strict (aka proper) superset: equivalent schema will return true.
|
|
141
129
|
*/
|
|
@@ -151,7 +139,7 @@ export function allowsFieldSuperset(
|
|
|
151
139
|
}
|
|
152
140
|
|
|
153
141
|
/**
|
|
154
|
-
*
|
|
142
|
+
* Returns true iff `superset` is a superset of `original`.
|
|
155
143
|
*
|
|
156
144
|
* This does not require a strict (aka proper) superset: equivalent schema will return true.
|
|
157
145
|
*/
|
|
@@ -168,7 +156,7 @@ export function allowsTreeSchemaIdentifierSuperset(
|
|
|
168
156
|
}
|
|
169
157
|
|
|
170
158
|
/**
|
|
171
|
-
*
|
|
159
|
+
* Returns true iff `superset` is a superset of `original`.
|
|
172
160
|
*
|
|
173
161
|
* This does not require a strict (aka proper) superset: equivalent schema will return true.
|
|
174
162
|
*
|
|
@@ -182,7 +170,6 @@ export function allowsRepoSuperset(
|
|
|
182
170
|
superset: TreeStoredSchema,
|
|
183
171
|
): boolean {
|
|
184
172
|
{
|
|
185
|
-
// TODO: I think its ok to use the field from superset here, but I should confirm it is, and document why.
|
|
186
173
|
if (
|
|
187
174
|
!allowsFieldSuperset(
|
|
188
175
|
policy,
|
|
@@ -194,17 +181,15 @@ export function allowsRepoSuperset(
|
|
|
194
181
|
return false;
|
|
195
182
|
}
|
|
196
183
|
}
|
|
184
|
+
// Check if all schema in original are included in superset, and permit a superset of the node content.
|
|
185
|
+
// Note that any schema from `original.nodeSchema` can be used as the schema for a node at the root of a detached field,
|
|
186
|
+
// so we must check all of them, even if they are not reachable from the root field schema.
|
|
197
187
|
for (const [key, schema] of original.nodeSchema) {
|
|
198
|
-
// TODO: I think its ok to use the tree from superset here, but I should confirm it is, and document why.
|
|
199
188
|
if (!allowsTreeSuperset(policy, original, schema, superset.nodeSchema.get(key))) {
|
|
200
189
|
return false;
|
|
201
190
|
}
|
|
202
191
|
}
|
|
192
|
+
// Any schema in superset not in original are already known to be superset of original since they are "never" due to being missing.
|
|
193
|
+
// Therefore, we do not need to check them.
|
|
203
194
|
return true;
|
|
204
195
|
}
|
|
205
|
-
|
|
206
|
-
export function normalizeField(
|
|
207
|
-
schema: TreeFieldStoredSchema | undefined,
|
|
208
|
-
): TreeFieldStoredSchema {
|
|
209
|
-
return schema ?? storedEmptyFieldSchema;
|
|
210
|
-
}
|
|
@@ -169,6 +169,12 @@ export interface FieldChangeRebaser<TChangeset> {
|
|
|
169
169
|
oldRevisions: Set<RevisionTag | undefined>,
|
|
170
170
|
newRevisions: RevisionTag | undefined,
|
|
171
171
|
): TChangeset;
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Returns a copy of the given changeset with the same declarations (e.g., new cells) but no actual changes.
|
|
175
|
+
* This is a kludge. TODO: remove once AB#46104 is completed.
|
|
176
|
+
*/
|
|
177
|
+
mute(change: TChangeset): TChangeset;
|
|
172
178
|
}
|
|
173
179
|
|
|
174
180
|
/**
|
|
@@ -179,11 +185,13 @@ export function referenceFreeFieldChangeRebaser<TChangeset>(data: {
|
|
|
179
185
|
compose: (change1: TChangeset, change2: TChangeset) => TChangeset;
|
|
180
186
|
invert: (change: TChangeset) => TChangeset;
|
|
181
187
|
rebase: (change: TChangeset, over: TChangeset) => TChangeset;
|
|
188
|
+
mute: (change: TChangeset) => TChangeset;
|
|
182
189
|
}): FieldChangeRebaser<TChangeset> {
|
|
183
190
|
return isolatedFieldChangeRebaser({
|
|
184
191
|
compose: (change1, change2, _composeChild, _genId) => data.compose(change1, change2),
|
|
185
192
|
invert: (change, _invertChild, _genId) => data.invert(change),
|
|
186
193
|
rebase: (change, over, _rebaseChild, _genId) => data.rebase(change, over),
|
|
194
|
+
mute: (change) => data.mute(change),
|
|
187
195
|
});
|
|
188
196
|
}
|
|
189
197
|
|
|
@@ -191,6 +199,7 @@ export function isolatedFieldChangeRebaser<TChangeset>(data: {
|
|
|
191
199
|
compose: FieldChangeRebaser<TChangeset>["compose"];
|
|
192
200
|
invert: FieldChangeRebaser<TChangeset>["invert"];
|
|
193
201
|
rebase: FieldChangeRebaser<TChangeset>["rebase"];
|
|
202
|
+
mute: FieldChangeRebaser<TChangeset>["mute"];
|
|
194
203
|
}): FieldChangeRebaser<TChangeset> {
|
|
195
204
|
return {
|
|
196
205
|
...data,
|
|
@@ -39,6 +39,7 @@ export const genericChangeHandler: FieldChangeHandler<GenericChangeset> = {
|
|
|
39
39
|
rebase: rebaseGenericChange,
|
|
40
40
|
prune: pruneGenericChange,
|
|
41
41
|
replaceRevisions,
|
|
42
|
+
mute: (change: GenericChangeset): GenericChangeset => change,
|
|
42
43
|
},
|
|
43
44
|
codecsFactory: makeGenericChangeCodec,
|
|
44
45
|
editor: {
|