@fluidframework/tree 2.0.0-dev-rc.5.0.0.270401 → 2.0.0-dev-rc.5.0.0.271045
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/.eslintrc.cjs +4 -0
- package/README.md +13 -0
- package/api-report/tree.alpha.api.md +81 -20
- package/api-report/tree.beta.api.md +81 -20
- package/api-report/tree.public.api.md +81 -20
- package/biome.jsonc +4 -0
- package/dist/beta.d.ts +10 -4
- package/dist/codec/discriminatedUnions.d.ts +2 -2
- package/dist/codec/discriminatedUnions.d.ts.map +1 -1
- package/dist/codec/discriminatedUnions.js.map +1 -1
- package/dist/codec/index.d.ts +1 -1
- package/dist/codec/index.d.ts.map +1 -1
- package/dist/codec/index.js.map +1 -1
- package/dist/core/change-family/index.d.ts +1 -1
- package/dist/core/change-family/index.d.ts.map +1 -1
- package/dist/core/change-family/index.js.map +1 -1
- package/dist/core/forest/index.d.ts +2 -2
- package/dist/core/forest/index.d.ts.map +1 -1
- package/dist/core/forest/index.js.map +1 -1
- package/dist/core/index.d.ts +7 -7
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/index.d.ts +3 -3
- package/dist/core/rebase/index.d.ts.map +1 -1
- package/dist/core/rebase/index.js.map +1 -1
- package/dist/core/revertible/index.d.ts +1 -1
- package/dist/core/revertible/index.d.ts.map +1 -1
- package/dist/core/revertible/index.js.map +1 -1
- package/dist/core/schema-stored/index.d.ts +3 -3
- package/dist/core/schema-stored/index.d.ts.map +1 -1
- package/dist/core/schema-stored/index.js.map +1 -1
- package/dist/core/schema-view/index.d.ts +1 -1
- package/dist/core/schema-view/index.d.ts.map +1 -1
- package/dist/core/schema-view/index.js.map +1 -1
- package/dist/core/tree/index.d.ts +11 -11
- package/dist/core/tree/index.d.ts.map +1 -1
- package/dist/core/tree/index.js.map +1 -1
- package/dist/core/tree/types.d.ts +2 -2
- package/dist/core/tree/types.d.ts.map +1 -1
- package/dist/core/tree/types.js.map +1 -1
- package/dist/events/index.d.ts +1 -1
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/index.d.ts +2 -2
- package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.d.ts +3 -3
- package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js +12 -0
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js +1 -0
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/default-schema/index.d.ts +2 -2
- package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/index.js.map +1 -1
- package/dist/feature-libraries/flex-map-tree/index.d.ts +1 -1
- package/dist/feature-libraries/flex-map-tree/index.d.ts.map +1 -1
- package/dist/feature-libraries/flex-map-tree/index.js.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +5 -5
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/dist/feature-libraries/flex-tree/index.d.ts +4 -4
- package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/index.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +15 -15
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +3 -2
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +11 -0
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- 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 +4 -0
- package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +7 -7
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/node-key/index.d.ts +2 -2
- package/dist/feature-libraries/node-key/index.d.ts.map +1 -1
- package/dist/feature-libraries/node-key/index.js.map +1 -1
- package/dist/feature-libraries/optional-field/index.d.ts +2 -2
- package/dist/feature-libraries/optional-field/index.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/index.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js +7 -0
- package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/dist/feature-libraries/schema-aware/index.d.ts +1 -1
- package/dist/feature-libraries/schema-aware/index.d.ts.map +1 -1
- package/dist/feature-libraries/schema-aware/index.js.map +1 -1
- package/dist/feature-libraries/schema-aware/schemaAware.d.ts +9 -9
- package/dist/feature-libraries/schema-aware/schemaAware.d.ts.map +1 -1
- package/dist/feature-libraries/schema-aware/schemaAware.js.map +1 -1
- package/dist/feature-libraries/schema-edits/index.d.ts +1 -1
- package/dist/feature-libraries/schema-edits/index.d.ts.map +1 -1
- package/dist/feature-libraries/schema-edits/index.js.map +1 -1
- package/dist/feature-libraries/sequence-field/index.d.ts +6 -6
- package/dist/feature-libraries/sequence-field/index.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/index.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +1 -0
- package/dist/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.d.ts +1 -0
- package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.js +15 -1
- package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
- package/dist/feature-libraries/typed-schema/index.d.ts +5 -3
- package/dist/feature-libraries/typed-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/index.js +26 -1
- package/dist/feature-libraries/typed-schema/index.js.map +1 -1
- package/dist/feature-libraries/typed-schema/internalTypes.d.ts +6 -0
- package/dist/feature-libraries/typed-schema/internalTypes.d.ts.map +1 -0
- package/dist/feature-libraries/typed-schema/internalTypes.js +7 -0
- package/dist/feature-libraries/typed-schema/internalTypes.js.map +1 -0
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +10 -4
- package/dist/shared-tree/index.d.ts +6 -6
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizeTree.d.ts +9 -0
- package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
- package/dist/shared-tree/schematizeTree.js +40 -24
- package/dist/shared-tree/schematizeTree.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +31 -23
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +151 -105
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +3 -2
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +8 -3
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree-core/index.d.ts +6 -6
- package/dist/shared-tree-core/index.d.ts.map +1 -1
- package/dist/shared-tree-core/index.js.map +1 -1
- package/dist/simple-tree/index.d.ts +13 -11
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +28 -1
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/internalTypes.d.ts +6 -0
- package/dist/simple-tree/internalTypes.d.ts.map +1 -0
- package/dist/simple-tree/internalTypes.js +7 -0
- package/dist/simple-tree/internalTypes.js.map +1 -0
- package/dist/simple-tree/objectNode.d.ts +17 -5
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/schemaCreationUtilities.d.ts +4 -4
- package/dist/simple-tree/schemaCreationUtilities.d.ts.map +1 -1
- package/dist/simple-tree/schemaFactory.d.ts +2 -2
- package/dist/simple-tree/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/schemaFactory.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +3 -3
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/testRecursiveDomain.d.ts +25 -10
- package/dist/simple-tree/testRecursiveDomain.d.ts.map +1 -1
- package/dist/simple-tree/toFlexSchema.d.ts +13 -4
- package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/dist/simple-tree/toFlexSchema.js +13 -3
- package/dist/simple-tree/toFlexSchema.js.map +1 -1
- package/dist/simple-tree/tree.d.ts +173 -40
- package/dist/simple-tree/tree.d.ts.map +1 -1
- package/dist/simple-tree/tree.js +37 -4
- package/dist/simple-tree/tree.js.map +1 -1
- package/dist/simple-tree/typesUnsafe.d.ts +11 -4
- package/dist/simple-tree/typesUnsafe.d.ts.map +1 -1
- package/dist/simple-tree/typesUnsafe.js.map +1 -1
- package/dist/util/index.d.ts +19 -12
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +26 -1
- package/dist/util/index.js.map +1 -1
- package/dist/util/internalTypes.d.ts +6 -0
- package/dist/util/internalTypes.d.ts.map +1 -0
- package/dist/util/internalTypes.js +7 -0
- package/dist/util/internalTypes.js.map +1 -0
- package/dist/util/typeUtils.d.ts +2 -2
- package/dist/util/typeUtils.js.map +1 -1
- package/docs/user-facing/README.md +3 -0
- package/docs/user-facing/schema-evolution.md +309 -0
- package/lib/beta.d.ts +10 -4
- package/lib/codec/discriminatedUnions.d.ts +2 -2
- package/lib/codec/discriminatedUnions.d.ts.map +1 -1
- package/lib/codec/discriminatedUnions.js.map +1 -1
- package/lib/codec/index.d.ts +1 -1
- package/lib/codec/index.d.ts.map +1 -1
- package/lib/codec/index.js.map +1 -1
- package/lib/core/change-family/index.d.ts +1 -1
- package/lib/core/change-family/index.d.ts.map +1 -1
- package/lib/core/change-family/index.js.map +1 -1
- package/lib/core/forest/index.d.ts +2 -2
- package/lib/core/forest/index.d.ts.map +1 -1
- package/lib/core/forest/index.js.map +1 -1
- package/lib/core/index.d.ts +7 -7
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js.map +1 -1
- package/lib/core/rebase/index.d.ts +3 -3
- package/lib/core/rebase/index.d.ts.map +1 -1
- package/lib/core/rebase/index.js.map +1 -1
- package/lib/core/revertible/index.d.ts +1 -1
- package/lib/core/revertible/index.d.ts.map +1 -1
- package/lib/core/revertible/index.js.map +1 -1
- package/lib/core/schema-stored/index.d.ts +3 -3
- package/lib/core/schema-stored/index.d.ts.map +1 -1
- package/lib/core/schema-stored/index.js.map +1 -1
- package/lib/core/schema-view/index.d.ts +1 -1
- package/lib/core/schema-view/index.d.ts.map +1 -1
- package/lib/core/schema-view/index.js.map +1 -1
- package/lib/core/tree/index.d.ts +11 -11
- package/lib/core/tree/index.d.ts.map +1 -1
- package/lib/core/tree/index.js.map +1 -1
- package/lib/core/tree/types.d.ts +2 -2
- package/lib/core/tree/types.d.ts.map +1 -1
- package/lib/core/tree/types.js.map +1 -1
- package/lib/events/index.d.ts +1 -1
- package/lib/events/index.d.ts.map +1 -1
- package/lib/events/index.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.d.ts +2 -2
- package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.js +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.d.ts +3 -3
- package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js +12 -0
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js +1 -0
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/default-schema/index.d.ts +2 -2
- package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/index.js.map +1 -1
- package/lib/feature-libraries/flex-map-tree/index.d.ts +1 -1
- package/lib/feature-libraries/flex-map-tree/index.d.ts.map +1 -1
- package/lib/feature-libraries/flex-map-tree/index.js.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +5 -5
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/lib/feature-libraries/flex-tree/index.d.ts +4 -4
- package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/index.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +15 -15
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +2 -2
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +11 -0
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- 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 +4 -0
- package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +7 -7
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/node-key/index.d.ts +2 -2
- package/lib/feature-libraries/node-key/index.d.ts.map +1 -1
- package/lib/feature-libraries/node-key/index.js.map +1 -1
- package/lib/feature-libraries/optional-field/index.d.ts +2 -2
- package/lib/feature-libraries/optional-field/index.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/index.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js +7 -0
- package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/lib/feature-libraries/schema-aware/index.d.ts +1 -1
- package/lib/feature-libraries/schema-aware/index.d.ts.map +1 -1
- package/lib/feature-libraries/schema-aware/index.js.map +1 -1
- package/lib/feature-libraries/schema-aware/schemaAware.d.ts +9 -9
- package/lib/feature-libraries/schema-aware/schemaAware.d.ts.map +1 -1
- package/lib/feature-libraries/schema-aware/schemaAware.js.map +1 -1
- package/lib/feature-libraries/schema-edits/index.d.ts +1 -1
- package/lib/feature-libraries/schema-edits/index.d.ts.map +1 -1
- package/lib/feature-libraries/schema-edits/index.js.map +1 -1
- package/lib/feature-libraries/sequence-field/index.d.ts +6 -6
- package/lib/feature-libraries/sequence-field/index.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/index.js +2 -2
- package/lib/feature-libraries/sequence-field/index.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js +2 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldChangeHandler.js.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.d.ts +1 -0
- package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.js +13 -0
- package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
- package/lib/feature-libraries/typed-schema/index.d.ts +5 -3
- package/lib/feature-libraries/typed-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/index.js +2 -0
- package/lib/feature-libraries/typed-schema/index.js.map +1 -1
- package/lib/feature-libraries/typed-schema/internalTypes.d.ts +6 -0
- package/lib/feature-libraries/typed-schema/internalTypes.d.ts.map +1 -0
- package/lib/feature-libraries/typed-schema/internalTypes.js +6 -0
- package/lib/feature-libraries/typed-schema/internalTypes.js.map +1 -0
- package/lib/index.d.ts +8 -8
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +10 -4
- package/lib/shared-tree/index.d.ts +6 -6
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizeTree.d.ts +9 -0
- package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
- package/lib/shared-tree/schematizeTree.js +38 -23
- package/lib/shared-tree/schematizeTree.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +31 -23
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +153 -106
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +3 -2
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +8 -3
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree-core/index.d.ts +6 -6
- package/lib/shared-tree-core/index.d.ts.map +1 -1
- package/lib/shared-tree-core/index.js.map +1 -1
- package/lib/simple-tree/index.d.ts +13 -11
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +4 -2
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/internalTypes.d.ts +6 -0
- package/lib/simple-tree/internalTypes.d.ts.map +1 -0
- package/lib/simple-tree/internalTypes.js +6 -0
- package/lib/simple-tree/internalTypes.js.map +1 -0
- package/lib/simple-tree/objectNode.d.ts +17 -5
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/schemaCreationUtilities.d.ts +4 -4
- package/lib/simple-tree/schemaCreationUtilities.d.ts.map +1 -1
- package/lib/simple-tree/schemaFactory.d.ts +2 -2
- package/lib/simple-tree/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/schemaFactory.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +3 -3
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js +1 -1
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/testRecursiveDomain.d.ts +25 -10
- package/lib/simple-tree/testRecursiveDomain.d.ts.map +1 -1
- package/lib/simple-tree/toFlexSchema.d.ts +13 -4
- package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/lib/simple-tree/toFlexSchema.js +12 -3
- package/lib/simple-tree/toFlexSchema.js.map +1 -1
- package/lib/simple-tree/tree.d.ts +173 -40
- package/lib/simple-tree/tree.d.ts.map +1 -1
- package/lib/simple-tree/tree.js +35 -3
- package/lib/simple-tree/tree.js.map +1 -1
- package/lib/simple-tree/typesUnsafe.d.ts +11 -4
- package/lib/simple-tree/typesUnsafe.d.ts.map +1 -1
- package/lib/simple-tree/typesUnsafe.js.map +1 -1
- package/lib/util/index.d.ts +19 -12
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +8 -1
- package/lib/util/index.js.map +1 -1
- package/lib/util/internalTypes.d.ts +6 -0
- package/lib/util/internalTypes.d.ts.map +1 -0
- package/lib/util/internalTypes.js +6 -0
- package/lib/util/internalTypes.js.map +1 -0
- package/lib/util/typeUtils.d.ts +2 -2
- package/lib/util/typeUtils.js.map +1 -1
- package/package.json +26 -23
- package/src/codec/discriminatedUnions.ts +2 -2
- package/src/codec/index.ts +10 -10
- package/src/core/change-family/index.ts +1 -1
- package/src/core/forest/index.ts +8 -8
- package/src/core/index.ts +89 -89
- package/src/core/rebase/index.ts +14 -14
- package/src/core/revertible/index.ts +1 -1
- package/src/core/schema-stored/index.ts +12 -12
- package/src/core/schema-view/index.ts +2 -2
- package/src/core/tree/index.ts +37 -37
- package/src/core/tree/types.ts +2 -2
- package/src/events/index.ts +9 -9
- package/src/feature-libraries/chunked-forest/codec/index.ts +6 -2
- package/src/feature-libraries/chunked-forest/index.ts +5 -5
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +10 -0
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +1 -0
- package/src/feature-libraries/default-schema/index.ts +10 -10
- package/src/feature-libraries/flex-map-tree/index.ts +1 -1
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +32 -31
- package/src/feature-libraries/flex-tree/index.ts +27 -27
- package/src/feature-libraries/index.ts +140 -137
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +12 -0
- package/src/feature-libraries/modular-schema/genericFieldKind.ts +5 -0
- package/src/feature-libraries/modular-schema/index.ts +24 -21
- package/src/feature-libraries/node-key/index.ts +3 -3
- package/src/feature-libraries/optional-field/index.ts +2 -2
- package/src/feature-libraries/optional-field/optionalField.ts +9 -0
- package/src/feature-libraries/schema-aware/index.ts +1 -1
- package/src/feature-libraries/schema-aware/schemaAware.ts +9 -9
- package/src/feature-libraries/schema-edits/index.ts +1 -1
- package/src/feature-libraries/sequence-field/index.ts +14 -6
- package/src/feature-libraries/sequence-field/sequenceFieldChangeHandler.ts +2 -1
- package/src/feature-libraries/sequence-field/utils.ts +14 -0
- package/src/feature-libraries/typed-schema/index.ts +19 -18
- package/src/feature-libraries/typed-schema/internalTypes.ts +8 -0
- package/src/index.ts +251 -249
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/index.ts +19 -19
- package/src/shared-tree/schematizeTree.ts +45 -32
- package/src/shared-tree/schematizingTreeView.ts +186 -126
- package/src/shared-tree/sharedTree.ts +22 -4
- package/src/shared-tree-core/index.ts +11 -11
- package/src/simple-tree/index.ts +39 -34
- package/src/simple-tree/internalTypes.ts +8 -0
- package/src/simple-tree/objectNode.ts +27 -5
- package/src/simple-tree/schemaFactory.ts +9 -1
- package/src/simple-tree/schemaTypes.ts +8 -3
- package/src/simple-tree/toFlexSchema.ts +14 -4
- package/src/simple-tree/tree.ts +199 -41
- package/src/simple-tree/typesUnsafe.ts +25 -4
- package/src/util/index.ts +40 -27
- package/src/util/internalTypes.ts +8 -0
- package/src/util/typeUtils.ts +2 -2
package/.eslintrc.cjs
CHANGED
|
@@ -49,6 +49,10 @@ module.exports = {
|
|
|
49
49
|
|
|
50
50
|
// TODO: Remove these overrides once this config has been updated to extend the "strict" base config.
|
|
51
51
|
"@typescript-eslint/explicit-member-accessibility": "error",
|
|
52
|
+
"@typescript-eslint/consistent-type-exports": [
|
|
53
|
+
"error",
|
|
54
|
+
{ fixMixedExportsWithInlineTypeSpecifier: true },
|
|
55
|
+
],
|
|
52
56
|
},
|
|
53
57
|
overrides: [
|
|
54
58
|
{
|
package/README.md
CHANGED
|
@@ -284,6 +284,19 @@ graph LR;
|
|
|
284
284
|
Indexes--"delta (for apps that want deltas)"-->app
|
|
285
285
|
```
|
|
286
286
|
|
|
287
|
+
### Schema Evolvability
|
|
288
|
+
|
|
289
|
+
Over time, application authors may want to change the schema for their documents.
|
|
290
|
+
For example, they might want to add support for a new application feature or represent existing content in some new way.
|
|
291
|
+
|
|
292
|
+
Before doing so, application authors must consider compatibility constraints within their ecosystem.
|
|
293
|
+
Most ecosystems don't have a way to ensure all documents an application may open are using the new schema or even that all users within a collaborative session are using the same code version.
|
|
294
|
+
This can be problematic when two clients using code versions with different document schema attempt to collaborate.
|
|
295
|
+
|
|
296
|
+
As a result, applications must be forward-thinking about policies around when their code supports working with some particular document.
|
|
297
|
+
|
|
298
|
+
See [Schema Evolution](./docs/user-facing/schema-evolution.md) for a comprehensive treatment of this problem.
|
|
299
|
+
|
|
287
300
|
### Dependencies
|
|
288
301
|
|
|
289
302
|
`@fluidframework/tree` depends on the Fluid runtime (various packages in `@fluidframework/*`)
|
|
@@ -20,7 +20,7 @@ import type { TSchema } from '@sinclair/typebox';
|
|
|
20
20
|
export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
|
|
21
21
|
|
|
22
22
|
// @public
|
|
23
|
-
|
|
23
|
+
type ApplyKind<T, Kind extends FieldKind, DefaultsAreOptional extends boolean> = {
|
|
24
24
|
[FieldKind.Required]: T;
|
|
25
25
|
[FieldKind.Optional]: T | undefined;
|
|
26
26
|
[FieldKind.Identifier]: DefaultsAreOptional extends true ? T | undefined : T;
|
|
@@ -44,7 +44,13 @@ export interface DefaultProvider extends ErasedType<"@fluidframework/tree.FieldP
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
// @public
|
|
47
|
-
|
|
47
|
+
type ExtractItemType<Item extends LazyItem> = Item extends () => infer Result ? Result : Item;
|
|
48
|
+
|
|
49
|
+
// @public
|
|
50
|
+
export type FieldHasDefault<T extends ImplicitFieldSchema> = T extends FieldSchema<FieldKind.Optional | FieldKind.Identifier> ? true : false;
|
|
51
|
+
|
|
52
|
+
// @public
|
|
53
|
+
export type FieldHasDefaultUnsafe<T extends Unenforced<ImplicitFieldSchema>> = T extends FieldSchemaUnsafe<FieldKind.Optional | FieldKind.Identifier, Unenforced<ImplicitAllowedTypes>> ? true : false;
|
|
48
54
|
|
|
49
55
|
// @public
|
|
50
56
|
export enum FieldKind {
|
|
@@ -75,11 +81,16 @@ export interface FieldSchemaUnsafe<out Kind extends FieldKind, out Types extends
|
|
|
75
81
|
readonly kind: Kind;
|
|
76
82
|
}
|
|
77
83
|
|
|
84
|
+
// @public
|
|
85
|
+
type FlattenKeys<T> = [{
|
|
86
|
+
[Property in keyof T]: T[Property];
|
|
87
|
+
}][_InlineTrick];
|
|
88
|
+
|
|
78
89
|
// @public
|
|
79
90
|
export type FlexList<Item = unknown> = readonly LazyItem<Item>[];
|
|
80
91
|
|
|
81
92
|
// @public
|
|
82
|
-
|
|
93
|
+
type FlexListToUnion<TList extends FlexList> = ExtractItemType<TList[number]>;
|
|
83
94
|
|
|
84
95
|
// @public
|
|
85
96
|
export type ImplicitAllowedTypes = AllowedTypes | TreeNodeSchema;
|
|
@@ -88,13 +99,20 @@ export type ImplicitAllowedTypes = AllowedTypes | TreeNodeSchema;
|
|
|
88
99
|
export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
|
|
89
100
|
|
|
90
101
|
// @public
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
102
|
+
type _InlineTrick = 0;
|
|
103
|
+
|
|
104
|
+
// @public
|
|
105
|
+
export type InsertableObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = InternalUtilTypes.FlattenKeys<{
|
|
106
|
+
readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property]>;
|
|
107
|
+
} & {
|
|
108
|
+
readonly [Property in keyof T as FieldHasDefault<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property]>;
|
|
109
|
+
}>;
|
|
94
110
|
|
|
95
111
|
// @public
|
|
96
112
|
export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
|
|
97
|
-
readonly [Property in keyof T]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
113
|
+
readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
114
|
+
} & {
|
|
115
|
+
readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends true ? Property : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
98
116
|
};
|
|
99
117
|
|
|
100
118
|
// @public
|
|
@@ -104,10 +122,10 @@ export type InsertableTreeFieldFromImplicitField<TSchema extends ImplicitFieldSc
|
|
|
104
122
|
export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, true> : InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema>;
|
|
105
123
|
|
|
106
124
|
// @public
|
|
107
|
-
export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? InsertableTypedNode<TSchema> : TSchema extends AllowedTypes ? InsertableTypedNode<FlexListToUnion<TSchema>> : never;
|
|
125
|
+
export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? InsertableTypedNode<TSchema> : TSchema extends AllowedTypes ? InsertableTypedNode<InternalFlexListTypes.FlexListToUnion<TSchema>> : never;
|
|
108
126
|
|
|
109
127
|
// @public
|
|
110
|
-
export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypes ? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
|
|
128
|
+
export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypes ? InsertableTypedNodeUnsafe<InternalFlexListTypes.FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
|
|
111
129
|
|
|
112
130
|
// @public
|
|
113
131
|
export type InsertableTypedNode<T extends TreeNodeSchema> = (T extends {
|
|
@@ -119,10 +137,33 @@ export type InsertableTypedNodeUnsafe<T extends Unenforced<TreeNodeSchema>> = Un
|
|
|
119
137
|
implicitlyConstructable: true;
|
|
120
138
|
} ? NodeBuilderDataUnsafe<T> : never);
|
|
121
139
|
|
|
140
|
+
declare namespace InternalFlexListTypes {
|
|
141
|
+
export {
|
|
142
|
+
FlexListToUnion,
|
|
143
|
+
ExtractItemType
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
export { InternalFlexListTypes }
|
|
147
|
+
|
|
148
|
+
declare namespace InternalSimpleTreeTypes {
|
|
149
|
+
export {
|
|
150
|
+
ApplyKind
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
export { InternalSimpleTreeTypes }
|
|
154
|
+
|
|
122
155
|
// @public
|
|
123
156
|
export interface InternalTreeNode extends ErasedType<"@fluidframework/tree.InternalTreeNode"> {
|
|
124
157
|
}
|
|
125
158
|
|
|
159
|
+
declare namespace InternalUtilTypes {
|
|
160
|
+
export {
|
|
161
|
+
_InlineTrick,
|
|
162
|
+
FlattenKeys
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
export { InternalUtilTypes }
|
|
166
|
+
|
|
126
167
|
// @public
|
|
127
168
|
export type IsListener<TListener> = TListener extends (...args: any[]) => void ? true : false;
|
|
128
169
|
|
|
@@ -133,7 +174,9 @@ export class IterableTreeArrayContent<T> implements Iterable<T> {
|
|
|
133
174
|
|
|
134
175
|
// @public
|
|
135
176
|
export interface ITree extends IFluidLoadable {
|
|
177
|
+
// @deprecated
|
|
136
178
|
schematize<TRoot extends ImplicitFieldSchema>(config: TreeConfiguration<TRoot>): TreeView<TRoot>;
|
|
179
|
+
viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
|
|
137
180
|
}
|
|
138
181
|
|
|
139
182
|
// @public
|
|
@@ -141,6 +184,12 @@ export interface ITreeConfigurationOptions {
|
|
|
141
184
|
enableSchemaValidation?: boolean;
|
|
142
185
|
}
|
|
143
186
|
|
|
187
|
+
// @public
|
|
188
|
+
export interface ITreeViewConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> {
|
|
189
|
+
readonly enableSchemaValidation?: boolean;
|
|
190
|
+
readonly schema: TSchema;
|
|
191
|
+
}
|
|
192
|
+
|
|
144
193
|
// @public
|
|
145
194
|
export type LazyItem<Item = unknown> = Item | (() => Item);
|
|
146
195
|
|
|
@@ -245,6 +294,14 @@ export interface RunTransaction {
|
|
|
245
294
|
readonly rollback: typeof rollback;
|
|
246
295
|
}
|
|
247
296
|
|
|
297
|
+
// @public
|
|
298
|
+
export interface SchemaCompatibilityStatus {
|
|
299
|
+
readonly canInitialize: boolean;
|
|
300
|
+
readonly canUpgrade: boolean;
|
|
301
|
+
readonly canView: boolean;
|
|
302
|
+
readonly isEquivalent: boolean;
|
|
303
|
+
}
|
|
304
|
+
|
|
248
305
|
// @public @sealed
|
|
249
306
|
export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> {
|
|
250
307
|
constructor(scope: TScope);
|
|
@@ -267,7 +324,7 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
|
|
|
267
324
|
readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
|
|
268
325
|
readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
|
|
269
326
|
object<const Name extends TName, const T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
|
|
270
|
-
objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object &
|
|
327
|
+
objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & { readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>; } & { readonly [Property_1 in keyof T as FieldHasDefaultUnsafe<T[Property_1]> extends true ? Property_1 : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property_1]> | undefined; }, false, T>;
|
|
271
328
|
optional<const T extends ImplicitAllowedTypes>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchema<FieldKind.Optional, T>;
|
|
272
329
|
optionalRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Optional, T>;
|
|
273
330
|
required<const T extends ImplicitAllowedTypes>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchema<FieldKind.Required, T>;
|
|
@@ -277,11 +334,6 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
|
|
|
277
334
|
readonly string: TreeNodeSchema<"com.fluidframework.leaf.string", NodeKind.Leaf, string, string>;
|
|
278
335
|
}
|
|
279
336
|
|
|
280
|
-
// @public
|
|
281
|
-
export interface SchemaIncompatible {
|
|
282
|
-
readonly canUpgrade: boolean;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
337
|
// @public
|
|
286
338
|
export type ScopedSchemaName<TScope extends string | undefined, TName extends number | string> = TScope extends undefined ? `${TName}` : `${TScope}.${TName}`;
|
|
287
339
|
|
|
@@ -340,12 +392,12 @@ export interface TreeChangeEvents {
|
|
|
340
392
|
treeChanged(): void;
|
|
341
393
|
}
|
|
342
394
|
|
|
343
|
-
// @public
|
|
395
|
+
// @public @deprecated
|
|
344
396
|
export class TreeConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> {
|
|
345
397
|
constructor(schema: TSchema, initialTree: () => InsertableTreeFieldFromImplicitField<TSchema>, options?: ITreeConfigurationOptions);
|
|
398
|
+
readonly enableSchemaValidation: boolean;
|
|
346
399
|
// (undocumented)
|
|
347
400
|
readonly initialTree: () => InsertableTreeFieldFromImplicitField<TSchema>;
|
|
348
|
-
readonly options: Required<ITreeConfigurationOptions>;
|
|
349
401
|
// (undocumented)
|
|
350
402
|
readonly schema: TSchema;
|
|
351
403
|
}
|
|
@@ -393,10 +445,10 @@ export interface TreeNodeApi {
|
|
|
393
445
|
}
|
|
394
446
|
|
|
395
447
|
// @public
|
|
396
|
-
export type TreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
|
|
448
|
+
export type TreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<InternalFlexListTypes.FlexListToUnion<TSchema>> : unknown;
|
|
397
449
|
|
|
398
450
|
// @public
|
|
399
|
-
export type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
|
|
451
|
+
export type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<InternalFlexListTypes.FlexListToUnion<TSchema>> : unknown;
|
|
400
452
|
|
|
401
453
|
// @public
|
|
402
454
|
export type TreeNodeSchema<Name extends string = string, Kind extends NodeKind = NodeKind, TNode = unknown, TBuild = never, ImplicitlyConstructable extends boolean = boolean, Info = unknown> = TreeNodeSchemaClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info> | TreeNodeSchemaNonClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info>;
|
|
@@ -439,18 +491,27 @@ export enum TreeStatus {
|
|
|
439
491
|
|
|
440
492
|
// @public
|
|
441
493
|
export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposable_2 {
|
|
442
|
-
readonly
|
|
494
|
+
readonly compatibility: SchemaCompatibilityStatus;
|
|
443
495
|
readonly events: Listenable<TreeViewEvents>;
|
|
496
|
+
initialize(content: InsertableTreeFieldFromImplicitField<TSchema>): void;
|
|
444
497
|
get root(): TreeFieldFromImplicitField<TSchema>;
|
|
445
498
|
set root(newRoot: InsertableTreeFieldFromImplicitField<TSchema>);
|
|
446
499
|
upgradeSchema(): void;
|
|
447
500
|
}
|
|
448
501
|
|
|
502
|
+
// @public
|
|
503
|
+
export class TreeViewConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
|
|
504
|
+
constructor(props: ITreeViewConfiguration<TSchema>);
|
|
505
|
+
readonly enableSchemaValidation: boolean;
|
|
506
|
+
readonly schema: TSchema;
|
|
507
|
+
}
|
|
508
|
+
|
|
449
509
|
// @public
|
|
450
510
|
export interface TreeViewEvents {
|
|
451
511
|
afterBatch(): void;
|
|
452
512
|
commitApplied(data: CommitMetadata, getRevertible?: RevertibleFactory): void;
|
|
453
513
|
rootChanged(): void;
|
|
514
|
+
schemaChanged(): void;
|
|
454
515
|
}
|
|
455
516
|
|
|
456
517
|
// @public
|
|
@@ -20,7 +20,7 @@ import type { TSchema } from '@sinclair/typebox';
|
|
|
20
20
|
export type AllowedTypes = readonly LazyItem<TreeNodeSchema>[];
|
|
21
21
|
|
|
22
22
|
// @public
|
|
23
|
-
|
|
23
|
+
type ApplyKind<T, Kind extends FieldKind, DefaultsAreOptional extends boolean> = {
|
|
24
24
|
[FieldKind.Required]: T;
|
|
25
25
|
[FieldKind.Optional]: T | undefined;
|
|
26
26
|
[FieldKind.Identifier]: DefaultsAreOptional extends true ? T | undefined : T;
|
|
@@ -44,7 +44,13 @@ export interface DefaultProvider extends ErasedType<"@fluidframework/tree.FieldP
|
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
// @public
|
|
47
|
-
|
|
47
|
+
type ExtractItemType<Item extends LazyItem> = Item extends () => infer Result ? Result : Item;
|
|
48
|
+
|
|
49
|
+
// @public
|
|
50
|
+
export type FieldHasDefault<T extends ImplicitFieldSchema> = T extends FieldSchema<FieldKind.Optional | FieldKind.Identifier> ? true : false;
|
|
51
|
+
|
|
52
|
+
// @public
|
|
53
|
+
export type FieldHasDefaultUnsafe<T extends Unenforced<ImplicitFieldSchema>> = T extends FieldSchemaUnsafe<FieldKind.Optional | FieldKind.Identifier, Unenforced<ImplicitAllowedTypes>> ? true : false;
|
|
48
54
|
|
|
49
55
|
// @public
|
|
50
56
|
export enum FieldKind {
|
|
@@ -75,11 +81,16 @@ export interface FieldSchemaUnsafe<out Kind extends FieldKind, out Types extends
|
|
|
75
81
|
readonly kind: Kind;
|
|
76
82
|
}
|
|
77
83
|
|
|
84
|
+
// @public
|
|
85
|
+
type FlattenKeys<T> = [{
|
|
86
|
+
[Property in keyof T]: T[Property];
|
|
87
|
+
}][_InlineTrick];
|
|
88
|
+
|
|
78
89
|
// @public
|
|
79
90
|
export type FlexList<Item = unknown> = readonly LazyItem<Item>[];
|
|
80
91
|
|
|
81
92
|
// @public
|
|
82
|
-
|
|
93
|
+
type FlexListToUnion<TList extends FlexList> = ExtractItemType<TList[number]>;
|
|
83
94
|
|
|
84
95
|
// @public
|
|
85
96
|
export type ImplicitAllowedTypes = AllowedTypes | TreeNodeSchema;
|
|
@@ -88,13 +99,20 @@ export type ImplicitAllowedTypes = AllowedTypes | TreeNodeSchema;
|
|
|
88
99
|
export type ImplicitFieldSchema = FieldSchema | ImplicitAllowedTypes;
|
|
89
100
|
|
|
90
101
|
// @public
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
102
|
+
type _InlineTrick = 0;
|
|
103
|
+
|
|
104
|
+
// @public
|
|
105
|
+
export type InsertableObjectFromSchemaRecord<T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>> = InternalUtilTypes.FlattenKeys<{
|
|
106
|
+
readonly [Property in keyof T]?: InsertableTreeFieldFromImplicitField<T[Property]>;
|
|
107
|
+
} & {
|
|
108
|
+
readonly [Property in keyof T as FieldHasDefault<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitField<T[Property]>;
|
|
109
|
+
}>;
|
|
94
110
|
|
|
95
111
|
// @public
|
|
96
112
|
export type InsertableObjectFromSchemaRecordUnsafe<T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>> = {
|
|
97
|
-
readonly [Property in keyof T]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
113
|
+
readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
114
|
+
} & {
|
|
115
|
+
readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends true ? Property : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
98
116
|
};
|
|
99
117
|
|
|
100
118
|
// @public
|
|
@@ -104,10 +122,10 @@ export type InsertableTreeFieldFromImplicitField<TSchema extends ImplicitFieldSc
|
|
|
104
122
|
export type InsertableTreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<ImplicitFieldSchema>> = TSchema extends FieldSchemaUnsafe<infer Kind, infer Types> ? ApplyKind<InsertableTreeNodeFromImplicitAllowedTypesUnsafe<Types>, Kind, true> : InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema>;
|
|
105
123
|
|
|
106
124
|
// @public
|
|
107
|
-
export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? InsertableTypedNode<TSchema> : TSchema extends AllowedTypes ? InsertableTypedNode<FlexListToUnion<TSchema>> : never;
|
|
125
|
+
export type InsertableTreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? InsertableTypedNode<TSchema> : TSchema extends AllowedTypes ? InsertableTypedNode<InternalFlexListTypes.FlexListToUnion<TSchema>> : never;
|
|
108
126
|
|
|
109
127
|
// @public
|
|
110
|
-
export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypes ? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
|
|
128
|
+
export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends AllowedTypes ? InsertableTypedNodeUnsafe<InternalFlexListTypes.FlexListToUnion<TSchema>> : InsertableTypedNodeUnsafe<TSchema>;
|
|
111
129
|
|
|
112
130
|
// @public
|
|
113
131
|
export type InsertableTypedNode<T extends TreeNodeSchema> = (T extends {
|
|
@@ -119,10 +137,33 @@ export type InsertableTypedNodeUnsafe<T extends Unenforced<TreeNodeSchema>> = Un
|
|
|
119
137
|
implicitlyConstructable: true;
|
|
120
138
|
} ? NodeBuilderDataUnsafe<T> : never);
|
|
121
139
|
|
|
140
|
+
declare namespace InternalFlexListTypes {
|
|
141
|
+
export {
|
|
142
|
+
FlexListToUnion,
|
|
143
|
+
ExtractItemType
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
export { InternalFlexListTypes }
|
|
147
|
+
|
|
148
|
+
declare namespace InternalSimpleTreeTypes {
|
|
149
|
+
export {
|
|
150
|
+
ApplyKind
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
export { InternalSimpleTreeTypes }
|
|
154
|
+
|
|
122
155
|
// @public
|
|
123
156
|
export interface InternalTreeNode extends ErasedType<"@fluidframework/tree.InternalTreeNode"> {
|
|
124
157
|
}
|
|
125
158
|
|
|
159
|
+
declare namespace InternalUtilTypes {
|
|
160
|
+
export {
|
|
161
|
+
_InlineTrick,
|
|
162
|
+
FlattenKeys
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
export { InternalUtilTypes }
|
|
166
|
+
|
|
126
167
|
// @public
|
|
127
168
|
export type IsListener<TListener> = TListener extends (...args: any[]) => void ? true : false;
|
|
128
169
|
|
|
@@ -133,7 +174,9 @@ export class IterableTreeArrayContent<T> implements Iterable<T> {
|
|
|
133
174
|
|
|
134
175
|
// @public
|
|
135
176
|
export interface ITree extends IFluidLoadable {
|
|
177
|
+
// @deprecated
|
|
136
178
|
schematize<TRoot extends ImplicitFieldSchema>(config: TreeConfiguration<TRoot>): TreeView<TRoot>;
|
|
179
|
+
viewWith<TRoot extends ImplicitFieldSchema>(config: TreeViewConfiguration<TRoot>): TreeView<TRoot>;
|
|
137
180
|
}
|
|
138
181
|
|
|
139
182
|
// @public
|
|
@@ -141,6 +184,12 @@ export interface ITreeConfigurationOptions {
|
|
|
141
184
|
enableSchemaValidation?: boolean;
|
|
142
185
|
}
|
|
143
186
|
|
|
187
|
+
// @public
|
|
188
|
+
export interface ITreeViewConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> {
|
|
189
|
+
readonly enableSchemaValidation?: boolean;
|
|
190
|
+
readonly schema: TSchema;
|
|
191
|
+
}
|
|
192
|
+
|
|
144
193
|
// @public
|
|
145
194
|
export type LazyItem<Item = unknown> = Item | (() => Item);
|
|
146
195
|
|
|
@@ -245,6 +294,14 @@ export interface RunTransaction {
|
|
|
245
294
|
readonly rollback: typeof rollback;
|
|
246
295
|
}
|
|
247
296
|
|
|
297
|
+
// @public
|
|
298
|
+
export interface SchemaCompatibilityStatus {
|
|
299
|
+
readonly canInitialize: boolean;
|
|
300
|
+
readonly canUpgrade: boolean;
|
|
301
|
+
readonly canView: boolean;
|
|
302
|
+
readonly isEquivalent: boolean;
|
|
303
|
+
}
|
|
304
|
+
|
|
248
305
|
// @public @sealed
|
|
249
306
|
export class SchemaFactory<out TScope extends string | undefined = string | undefined, TName extends number | string = string> {
|
|
250
307
|
constructor(scope: TScope);
|
|
@@ -267,7 +324,7 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
|
|
|
267
324
|
readonly null: TreeNodeSchema<"com.fluidframework.leaf.null", NodeKind.Leaf, null, null>;
|
|
268
325
|
readonly number: TreeNodeSchema<"com.fluidframework.leaf.number", NodeKind.Leaf, number, number>;
|
|
269
326
|
object<const Name extends TName, const T extends RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>(name: Name, fields: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNode<T, ScopedSchemaName<TScope, Name>>, object & InsertableObjectFromSchemaRecord<T>, true, T>;
|
|
270
|
-
objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object &
|
|
327
|
+
objectRecursive<const Name extends TName, const T extends Unenforced<RestrictiveReadonlyRecord<string, ImplicitFieldSchema>>>(name: Name, t: T): TreeNodeSchemaClass<ScopedSchemaName<TScope, Name>, NodeKind.Object, TreeObjectNodeUnsafe<T, ScopedSchemaName<TScope, Name>>, object & { readonly [Property in keyof T as FieldHasDefaultUnsafe<T[Property]> extends false ? Property : never]: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property]>; } & { readonly [Property_1 in keyof T as FieldHasDefaultUnsafe<T[Property_1]> extends true ? Property_1 : never]?: InsertableTreeFieldFromImplicitFieldUnsafe<T[Property_1]> | undefined; }, false, T>;
|
|
271
328
|
optional<const T extends ImplicitAllowedTypes>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchema<FieldKind.Optional, T>;
|
|
272
329
|
optionalRecursive<const T extends Unenforced<ImplicitAllowedTypes>>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchemaUnsafe<FieldKind.Optional, T>;
|
|
273
330
|
required<const T extends ImplicitAllowedTypes>(t: T, props?: Omit<FieldProps, "defaultProvider">): FieldSchema<FieldKind.Required, T>;
|
|
@@ -277,11 +334,6 @@ export class SchemaFactory<out TScope extends string | undefined = string | unde
|
|
|
277
334
|
readonly string: TreeNodeSchema<"com.fluidframework.leaf.string", NodeKind.Leaf, string, string>;
|
|
278
335
|
}
|
|
279
336
|
|
|
280
|
-
// @public
|
|
281
|
-
export interface SchemaIncompatible {
|
|
282
|
-
readonly canUpgrade: boolean;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
337
|
// @public
|
|
286
338
|
export type ScopedSchemaName<TScope extends string | undefined, TName extends number | string> = TScope extends undefined ? `${TName}` : `${TScope}.${TName}`;
|
|
287
339
|
|
|
@@ -337,12 +389,12 @@ export interface TreeChangeEvents {
|
|
|
337
389
|
treeChanged(): void;
|
|
338
390
|
}
|
|
339
391
|
|
|
340
|
-
// @public
|
|
392
|
+
// @public @deprecated
|
|
341
393
|
export class TreeConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> {
|
|
342
394
|
constructor(schema: TSchema, initialTree: () => InsertableTreeFieldFromImplicitField<TSchema>, options?: ITreeConfigurationOptions);
|
|
395
|
+
readonly enableSchemaValidation: boolean;
|
|
343
396
|
// (undocumented)
|
|
344
397
|
readonly initialTree: () => InsertableTreeFieldFromImplicitField<TSchema>;
|
|
345
|
-
readonly options: Required<ITreeConfigurationOptions>;
|
|
346
398
|
// (undocumented)
|
|
347
399
|
readonly schema: TSchema;
|
|
348
400
|
}
|
|
@@ -390,10 +442,10 @@ export interface TreeNodeApi {
|
|
|
390
442
|
}
|
|
391
443
|
|
|
392
444
|
// @public
|
|
393
|
-
export type TreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
|
|
445
|
+
export type TreeNodeFromImplicitAllowedTypes<TSchema extends ImplicitAllowedTypes = TreeNodeSchema> = TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<InternalFlexListTypes.FlexListToUnion<TSchema>> : unknown;
|
|
394
446
|
|
|
395
447
|
// @public
|
|
396
|
-
export type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<FlexListToUnion<TSchema>> : unknown;
|
|
448
|
+
export type TreeNodeFromImplicitAllowedTypesUnsafe<TSchema extends Unenforced<ImplicitAllowedTypes>> = TSchema extends ImplicitAllowedTypes ? TreeNodeFromImplicitAllowedTypes<TSchema> : TSchema extends TreeNodeSchema ? NodeFromSchema<TSchema> : TSchema extends AllowedTypes ? NodeFromSchema<InternalFlexListTypes.FlexListToUnion<TSchema>> : unknown;
|
|
397
449
|
|
|
398
450
|
// @public
|
|
399
451
|
export type TreeNodeSchema<Name extends string = string, Kind extends NodeKind = NodeKind, TNode = unknown, TBuild = never, ImplicitlyConstructable extends boolean = boolean, Info = unknown> = TreeNodeSchemaClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info> | TreeNodeSchemaNonClass<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info>;
|
|
@@ -436,18 +488,27 @@ export enum TreeStatus {
|
|
|
436
488
|
|
|
437
489
|
// @public
|
|
438
490
|
export interface TreeView<TSchema extends ImplicitFieldSchema> extends IDisposable_2 {
|
|
439
|
-
readonly
|
|
491
|
+
readonly compatibility: SchemaCompatibilityStatus;
|
|
440
492
|
readonly events: Listenable<TreeViewEvents>;
|
|
493
|
+
initialize(content: InsertableTreeFieldFromImplicitField<TSchema>): void;
|
|
441
494
|
get root(): TreeFieldFromImplicitField<TSchema>;
|
|
442
495
|
set root(newRoot: InsertableTreeFieldFromImplicitField<TSchema>);
|
|
443
496
|
upgradeSchema(): void;
|
|
444
497
|
}
|
|
445
498
|
|
|
499
|
+
// @public
|
|
500
|
+
export class TreeViewConfiguration<TSchema extends ImplicitFieldSchema = ImplicitFieldSchema> implements Required<ITreeViewConfiguration<TSchema>> {
|
|
501
|
+
constructor(props: ITreeViewConfiguration<TSchema>);
|
|
502
|
+
readonly enableSchemaValidation: boolean;
|
|
503
|
+
readonly schema: TSchema;
|
|
504
|
+
}
|
|
505
|
+
|
|
446
506
|
// @public
|
|
447
507
|
export interface TreeViewEvents {
|
|
448
508
|
afterBatch(): void;
|
|
449
509
|
commitApplied(data: CommitMetadata, getRevertible?: RevertibleFactory): void;
|
|
450
510
|
rootChanged(): void;
|
|
511
|
+
schemaChanged(): void;
|
|
451
512
|
}
|
|
452
513
|
|
|
453
514
|
// @public
|