@fluidframework/tree 2.4.0-297027 → 2.4.0-299374
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/.dependency-cruiser-known-violations.json +0 -14
- package/.vscode/settings.json +9 -1
- package/api-report/tree.alpha.api.md +178 -21
- package/api-report/tree.beta.api.md +46 -21
- package/api-report/tree.legacy.alpha.api.md +46 -21
- package/api-report/tree.legacy.public.api.md +46 -21
- package/api-report/tree.public.api.md +46 -21
- package/dist/alpha.d.ts +29 -1
- package/dist/beta.d.ts +2 -0
- package/dist/codec/codec.d.ts +4 -4
- package/dist/codec/codec.js.map +1 -1
- package/dist/codec/noopValidator.d.ts +1 -1
- package/dist/codec/noopValidator.js +1 -1
- package/dist/codec/noopValidator.js.map +1 -1
- package/dist/core/change-family/changeFamily.d.ts +2 -2
- package/dist/core/change-family/changeFamily.d.ts.map +1 -1
- package/dist/core/change-family/changeFamily.js.map +1 -1
- package/dist/core/change-family/editBuilder.d.ts +3 -2
- package/dist/core/change-family/editBuilder.d.ts.map +1 -1
- package/dist/core/change-family/editBuilder.js.map +1 -1
- package/dist/core/rebase/changeRebaser.d.ts +2 -1
- package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
- package/dist/core/rebase/changeRebaser.js.map +1 -1
- package/dist/core/rebase/utils.js +1 -1
- package/dist/core/rebase/utils.js.map +1 -1
- package/dist/core/tree/anchorSet.d.ts +159 -2
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +54 -12
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/external-utilities/typeboxValidator.d.ts +1 -1
- package/dist/external-utilities/typeboxValidator.js +1 -1
- package/dist/external-utilities/typeboxValidator.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +4 -3
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js +41 -30
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +4 -6
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts +4 -0
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +38 -6
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +0 -1
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +46 -49
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/mitigatedChangeFamily.js +4 -4
- package/dist/feature-libraries/mitigatedChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +1 -1
- 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/modularChangeFamily.d.ts +12 -8
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +179 -60
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.d.ts +10 -9
- package/dist/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalField.js +9 -7
- package/dist/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts +3 -10
- package/dist/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/schema-index/schemaSummarizer.js +1 -8
- package/dist/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.js +32 -20
- package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.d.ts +6 -1
- package/dist/feature-libraries/sequence-field/invert.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.js +25 -9
- package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +17 -16
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js +19 -11
- package/dist/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
- package/dist/feature-libraries/treeCompressionUtils.d.ts +1 -1
- package/dist/feature-libraries/treeCompressionUtils.js +1 -1
- package/dist/feature-libraries/treeCompressionUtils.js.map +1 -1
- package/dist/index.d.ts +6 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/internalTypes.d.ts +2 -2
- package/dist/internalTypes.d.ts.map +1 -1
- package/dist/internalTypes.js.map +1 -1
- package/dist/legacy.d.ts +2 -0
- 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 +2 -0
- package/dist/shared-tree/index.d.ts +2 -1
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js +5 -1
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +1 -14
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +24 -9
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +21 -9
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
- package/dist/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js +4 -4
- package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts +2 -2
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.js +15 -11
- package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/dist/shared-tree/treeApi.d.ts +6 -6
- package/dist/shared-tree/treeApi.d.ts.map +1 -1
- package/dist/shared-tree/treeApi.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +4 -3
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts +2 -3
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +10 -11
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/defaultResubmitMachine.d.ts +5 -5
- package/dist/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
- package/dist/shared-tree-core/defaultResubmitMachine.js +4 -4
- package/dist/shared-tree-core/defaultResubmitMachine.js.map +1 -1
- package/dist/shared-tree-core/editManager.d.ts.map +1 -1
- package/dist/shared-tree-core/editManager.js +1 -1
- package/dist/shared-tree-core/editManager.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +2 -2
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/simple-tree/api/conciseTree.d.ts +29 -0
- package/dist/simple-tree/api/conciseTree.d.ts.map +1 -0
- package/dist/simple-tree/api/conciseTree.js +25 -0
- package/dist/simple-tree/api/conciseTree.js.map +1 -0
- package/dist/simple-tree/api/customTree.d.ts +44 -0
- package/dist/simple-tree/api/customTree.d.ts.map +1 -0
- package/dist/simple-tree/api/customTree.js +63 -0
- package/dist/simple-tree/api/customTree.js.map +1 -0
- package/dist/simple-tree/api/index.d.ts +7 -2
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +5 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.d.ts +41 -26
- package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.js +43 -15
- package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +1 -2
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +8 -8
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +1 -2
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/dist/simple-tree/api/storedSchema.d.ts +78 -0
- package/dist/simple-tree/api/storedSchema.d.ts.map +1 -0
- package/dist/simple-tree/api/storedSchema.js +107 -0
- package/dist/simple-tree/api/storedSchema.js.map +1 -0
- package/dist/simple-tree/api/testRecursiveDomain.d.ts +10 -10
- package/dist/simple-tree/api/tree.d.ts +12 -3
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +5 -5
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/{typesUnsafe.d.ts → api/typesUnsafe.d.ts} +58 -10
- package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -0
- package/dist/simple-tree/api/typesUnsafe.js.map +1 -0
- package/dist/simple-tree/api/verboseTree.d.ts +6 -20
- package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/verboseTree.js +10 -48
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/dist/simple-tree/arrayNode.d.ts +14 -3
- package/dist/simple-tree/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/arrayNode.js +1 -2
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +1 -1
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +2 -1
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts +9 -0
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +14 -1
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +6 -5
- 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/unhydratedFlexTree.d.ts.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js +3 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/simple-tree/core/withType.d.ts +3 -1
- package/dist/simple-tree/core/withType.d.ts.map +1 -1
- package/dist/simple-tree/core/withType.js.map +1 -1
- package/dist/simple-tree/flexList.d.ts.map +1 -0
- package/dist/simple-tree/flexList.js.map +1 -0
- package/dist/simple-tree/index.d.ts +6 -7
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +5 -3
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/mapNode.js +2 -3
- package/dist/simple-tree/mapNode.js.map +1 -1
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js +3 -4
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +60 -7
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js +11 -6
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/dist/simple-tree/toFlexSchema.js +13 -15
- package/dist/simple-tree/toFlexSchema.js.map +1 -1
- package/dist/simple-tree/toMapTree.d.ts +4 -2
- package/dist/simple-tree/toMapTree.d.ts.map +1 -1
- package/dist/simple-tree/toMapTree.js +3 -3
- package/dist/simple-tree/toMapTree.js.map +1 -1
- package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/dist/simple-tree/treeNodeValid.js +2 -1
- package/dist/simple-tree/treeNodeValid.js.map +1 -1
- package/dist/treeFactory.d.ts +1 -0
- package/dist/treeFactory.d.ts.map +1 -1
- package/dist/treeFactory.js +1 -0
- package/dist/treeFactory.js.map +1 -1
- package/dist/util/utils.d.ts +10 -8
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js.map +1 -1
- package/docs/main/detached-trees.md +8 -8
- package/lib/alpha.d.ts +29 -1
- package/lib/beta.d.ts +2 -0
- package/lib/codec/codec.d.ts +4 -4
- package/lib/codec/codec.js.map +1 -1
- package/lib/codec/noopValidator.d.ts +1 -1
- package/lib/codec/noopValidator.js +1 -1
- package/lib/codec/noopValidator.js.map +1 -1
- package/lib/core/change-family/changeFamily.d.ts +2 -2
- package/lib/core/change-family/changeFamily.d.ts.map +1 -1
- package/lib/core/change-family/changeFamily.js.map +1 -1
- package/lib/core/change-family/editBuilder.d.ts +3 -2
- package/lib/core/change-family/editBuilder.d.ts.map +1 -1
- package/lib/core/change-family/editBuilder.js.map +1 -1
- package/lib/core/rebase/changeRebaser.d.ts +2 -1
- package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
- package/lib/core/rebase/changeRebaser.js.map +1 -1
- package/lib/core/rebase/utils.js +1 -1
- package/lib/core/rebase/utils.js.map +1 -1
- package/lib/core/tree/anchorSet.d.ts +159 -2
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +54 -12
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/external-utilities/typeboxValidator.d.ts +1 -1
- package/lib/external-utilities/typeboxValidator.js +1 -1
- package/lib/external-utilities/typeboxValidator.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts +4 -3
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js +41 -30
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +4 -6
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts +4 -0
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +36 -5
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +0 -1
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +0 -1
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/mitigatedChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/mitigatedChangeFamily.js +4 -4
- package/lib/feature-libraries/mitigatedChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +1 -1
- 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/modularChangeFamily.d.ts +12 -8
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +180 -61
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.d.ts +10 -9
- package/lib/feature-libraries/optional-field/optionalField.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalField.js +9 -7
- package/lib/feature-libraries/optional-field/optionalField.js.map +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts +3 -10
- package/lib/feature-libraries/schema-index/schemaSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/schema-index/schemaSummarizer.js +1 -8
- package/lib/feature-libraries/schema-index/schemaSummarizer.js.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.js +32 -20
- package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.d.ts +6 -1
- package/lib/feature-libraries/sequence-field/invert.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.js +25 -9
- package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts +17 -16
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js +19 -11
- package/lib/feature-libraries/sequence-field/sequenceFieldEditor.js.map +1 -1
- package/lib/feature-libraries/treeCompressionUtils.d.ts +1 -1
- package/lib/feature-libraries/treeCompressionUtils.js +1 -1
- package/lib/feature-libraries/treeCompressionUtils.js.map +1 -1
- package/lib/index.d.ts +6 -5
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -3
- package/lib/index.js.map +1 -1
- package/lib/internalTypes.d.ts +2 -2
- package/lib/internalTypes.d.ts.map +1 -1
- package/lib/internalTypes.js.map +1 -1
- package/lib/legacy.d.ts +2 -0
- 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 +2 -0
- package/lib/shared-tree/index.d.ts +2 -1
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js +2 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +2 -15
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +24 -9
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +20 -9
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts +2 -2
- package/lib/shared-tree/sharedTreeChangeFamily.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js +4 -4
- package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts +2 -2
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.js +15 -11
- package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/lib/shared-tree/treeApi.d.ts +6 -6
- package/lib/shared-tree/treeApi.d.ts.map +1 -1
- package/lib/shared-tree/treeApi.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +5 -4
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts +2 -3
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +11 -12
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/defaultResubmitMachine.d.ts +5 -5
- package/lib/shared-tree-core/defaultResubmitMachine.d.ts.map +1 -1
- package/lib/shared-tree-core/defaultResubmitMachine.js +4 -4
- package/lib/shared-tree-core/defaultResubmitMachine.js.map +1 -1
- package/lib/shared-tree-core/editManager.d.ts.map +1 -1
- package/lib/shared-tree-core/editManager.js +2 -2
- package/lib/shared-tree-core/editManager.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +2 -2
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/simple-tree/api/conciseTree.d.ts +29 -0
- package/lib/simple-tree/api/conciseTree.d.ts.map +1 -0
- package/lib/simple-tree/api/conciseTree.js +21 -0
- package/lib/simple-tree/api/conciseTree.js.map +1 -0
- package/lib/simple-tree/api/customTree.d.ts +44 -0
- package/lib/simple-tree/api/customTree.d.ts.map +1 -0
- package/lib/simple-tree/api/customTree.js +59 -0
- package/lib/simple-tree/api/customTree.js.map +1 -0
- package/lib/simple-tree/api/index.d.ts +7 -2
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -0
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaCreationUtilities.d.ts +41 -26
- package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaCreationUtilities.js +43 -15
- package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +1 -2
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +1 -1
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +1 -2
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/lib/simple-tree/api/storedSchema.d.ts +78 -0
- package/lib/simple-tree/api/storedSchema.d.ts.map +1 -0
- package/lib/simple-tree/api/storedSchema.js +101 -0
- package/lib/simple-tree/api/storedSchema.js.map +1 -0
- package/lib/simple-tree/api/testRecursiveDomain.d.ts +10 -10
- package/lib/simple-tree/api/tree.d.ts +12 -3
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +3 -3
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/{typesUnsafe.d.ts → api/typesUnsafe.d.ts} +58 -10
- package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -0
- package/lib/simple-tree/api/typesUnsafe.js.map +1 -0
- package/lib/simple-tree/api/verboseTree.d.ts +6 -20
- package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/verboseTree.js +11 -49
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/lib/simple-tree/arrayNode.d.ts +14 -3
- package/lib/simple-tree/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/arrayNode.js +1 -2
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +1 -1
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +1 -1
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts +9 -0
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +12 -0
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +6 -5
- 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/unhydratedFlexTree.d.ts.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js +3 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/simple-tree/core/withType.d.ts +3 -1
- package/lib/simple-tree/core/withType.d.ts.map +1 -1
- package/lib/simple-tree/core/withType.js.map +1 -1
- package/lib/simple-tree/flexList.d.ts.map +1 -0
- package/lib/simple-tree/flexList.js.map +1 -0
- package/lib/simple-tree/index.d.ts +6 -7
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +3 -4
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/mapNode.js +1 -2
- package/lib/simple-tree/mapNode.js.map +1 -1
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js +1 -2
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +60 -7
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js +6 -1
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/lib/simple-tree/toFlexSchema.js +1 -3
- package/lib/simple-tree/toFlexSchema.js.map +1 -1
- package/lib/simple-tree/toMapTree.d.ts +4 -2
- package/lib/simple-tree/toMapTree.d.ts.map +1 -1
- package/lib/simple-tree/toMapTree.js +3 -3
- package/lib/simple-tree/toMapTree.js.map +1 -1
- package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/lib/simple-tree/treeNodeValid.js +2 -1
- package/lib/simple-tree/treeNodeValid.js.map +1 -1
- package/lib/treeFactory.d.ts +1 -0
- package/lib/treeFactory.d.ts.map +1 -1
- package/lib/treeFactory.js +1 -0
- package/lib/treeFactory.js.map +1 -1
- package/lib/util/utils.d.ts +10 -8
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js.map +1 -1
- package/package.json +44 -27
- package/src/codec/codec.ts +4 -4
- package/src/codec/noopValidator.ts +1 -1
- package/src/core/change-family/changeFamily.ts +5 -2
- package/src/core/change-family/editBuilder.ts +3 -2
- package/src/core/rebase/changeRebaser.ts +6 -1
- package/src/core/rebase/utils.ts +1 -1
- package/src/core/tree/anchorSet.ts +63 -13
- package/src/external-utilities/typeboxValidator.ts +1 -1
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +92 -47
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +7 -7
- package/src/feature-libraries/flex-tree/lazyField.ts +44 -7
- package/src/feature-libraries/index.ts +0 -10
- package/src/feature-libraries/mitigatedChangeFamily.ts +11 -4
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +1 -0
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +218 -175
- package/src/feature-libraries/optional-field/optionalField.ts +21 -17
- package/src/feature-libraries/schema-index/schemaSummarizer.ts +2 -10
- package/src/feature-libraries/sequence-field/compose.ts +67 -58
- package/src/feature-libraries/sequence-field/invert.ts +30 -6
- package/src/feature-libraries/sequence-field/sequenceFieldEditor.ts +65 -19
- package/src/feature-libraries/treeCompressionUtils.ts +1 -1
- package/src/index.ts +26 -6
- package/src/internalTypes.ts +4 -1
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/index.ts +5 -0
- package/src/shared-tree/schematizingTreeView.ts +7 -16
- package/src/shared-tree/sharedTree.ts +55 -23
- package/src/shared-tree/sharedTreeChangeFamily.ts +5 -1
- package/src/shared-tree/sharedTreeEditBuilder.ts +23 -12
- package/src/shared-tree/treeApi.ts +19 -9
- package/src/shared-tree/treeCheckout.ts +7 -6
- package/src/shared-tree-core/branch.ts +11 -14
- package/src/shared-tree-core/defaultResubmitMachine.ts +4 -4
- package/src/shared-tree-core/editManager.ts +2 -1
- package/src/shared-tree-core/sharedTreeCore.ts +4 -2
- package/src/simple-tree/api/conciseTree.ts +58 -0
- package/src/simple-tree/api/customTree.ts +119 -0
- package/src/simple-tree/api/index.ts +39 -1
- package/src/simple-tree/api/schemaCreationUtilities.ts +55 -36
- package/src/simple-tree/api/schemaFactory.ts +4 -6
- package/src/simple-tree/api/schemaFactoryRecursive.ts +1 -2
- package/src/simple-tree/api/storedSchema.ts +126 -0
- package/src/simple-tree/api/tree.ts +24 -2
- package/src/simple-tree/api/treeNodeApi.ts +3 -8
- package/src/simple-tree/{typesUnsafe.ts → api/typesUnsafe.ts} +95 -21
- package/src/simple-tree/api/verboseTree.ts +21 -76
- package/src/simple-tree/arrayNode.ts +35 -15
- package/src/simple-tree/core/index.ts +1 -0
- package/src/simple-tree/core/treeNodeKernel.ts +13 -0
- package/src/simple-tree/core/treeNodeSchema.ts +7 -5
- package/src/simple-tree/core/unhydratedFlexTree.ts +6 -1
- package/src/simple-tree/core/withType.ts +10 -1
- package/src/simple-tree/index.ts +41 -21
- package/src/simple-tree/mapNode.ts +1 -1
- package/src/simple-tree/objectNode.ts +1 -1
- package/src/simple-tree/schemaTypes.ts +70 -11
- package/src/simple-tree/toFlexSchema.ts +1 -3
- package/src/simple-tree/toMapTree.ts +7 -4
- package/src/simple-tree/treeNodeValid.ts +2 -1
- package/src/treeFactory.ts +1 -0
- package/src/util/utils.ts +10 -8
- package/dist/feature-libraries/flex-tree/unboxed.d.ts +0 -12
- package/dist/feature-libraries/flex-tree/unboxed.d.ts.map +0 -1
- package/dist/feature-libraries/flex-tree/unboxed.js +0 -20
- package/dist/feature-libraries/flex-tree/unboxed.js.map +0 -1
- package/dist/feature-libraries/typed-schema/flexList.d.ts.map +0 -1
- package/dist/feature-libraries/typed-schema/flexList.js.map +0 -1
- package/dist/feature-libraries/typed-schema/index.d.ts +0 -7
- package/dist/feature-libraries/typed-schema/index.d.ts.map +0 -1
- package/dist/feature-libraries/typed-schema/index.js +0 -12
- package/dist/feature-libraries/typed-schema/index.js.map +0 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -14
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +0 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js +0 -7
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +0 -1
- package/dist/simple-tree/proxyBinding.d.ts +0 -15
- package/dist/simple-tree/proxyBinding.d.ts.map +0 -1
- package/dist/simple-tree/proxyBinding.js +0 -22
- package/dist/simple-tree/proxyBinding.js.map +0 -1
- package/dist/simple-tree/typesUnsafe.d.ts.map +0 -1
- package/dist/simple-tree/typesUnsafe.js.map +0 -1
- package/lib/feature-libraries/flex-tree/unboxed.d.ts +0 -12
- package/lib/feature-libraries/flex-tree/unboxed.d.ts.map +0 -1
- package/lib/feature-libraries/flex-tree/unboxed.js +0 -16
- package/lib/feature-libraries/flex-tree/unboxed.js.map +0 -1
- package/lib/feature-libraries/typed-schema/flexList.d.ts.map +0 -1
- package/lib/feature-libraries/typed-schema/flexList.js.map +0 -1
- package/lib/feature-libraries/typed-schema/index.d.ts +0 -7
- package/lib/feature-libraries/typed-schema/index.d.ts.map +0 -1
- package/lib/feature-libraries/typed-schema/index.js +0 -6
- package/lib/feature-libraries/typed-schema/index.js.map +0 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +0 -14
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +0 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js +0 -6
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +0 -1
- package/lib/simple-tree/proxyBinding.d.ts +0 -15
- package/lib/simple-tree/proxyBinding.d.ts.map +0 -1
- package/lib/simple-tree/proxyBinding.js +0 -18
- package/lib/simple-tree/proxyBinding.js.map +0 -1
- package/lib/simple-tree/typesUnsafe.d.ts.map +0 -1
- package/lib/simple-tree/typesUnsafe.js.map +0 -1
- package/src/feature-libraries/flex-tree/unboxed.ts +0 -24
- package/src/feature-libraries/typed-schema/README.md +0 -6
- package/src/feature-libraries/typed-schema/index.ts +0 -16
- package/src/feature-libraries/typed-schema/typedTreeSchema.ts +0 -14
- package/src/simple-tree/proxyBinding.ts +0 -20
- /package/dist/simple-tree/{typesUnsafe.js → api/typesUnsafe.js} +0 -0
- /package/dist/{feature-libraries/typed-schema → simple-tree}/flexList.d.ts +0 -0
- /package/dist/{feature-libraries/typed-schema → simple-tree}/flexList.js +0 -0
- /package/lib/simple-tree/{typesUnsafe.js → api/typesUnsafe.js} +0 -0
- /package/lib/{feature-libraries/typed-schema → simple-tree}/flexList.d.ts +0 -0
- /package/lib/{feature-libraries/typed-schema → simple-tree}/flexList.js +0 -0
- /package/src/simple-tree/{ProxyBinding.md → core/TreeNodeBinding.md} +0 -0
- /package/src/{feature-libraries/typed-schema → simple-tree}/flexList.ts +0 -0
|
@@ -3,27 +3,27 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type {
|
|
7
|
-
import type { RestrictiveStringRecord, _InlineTrick } from "../util/index.js";
|
|
6
|
+
import type { RestrictiveStringRecord, _InlineTrick } from "../../util/index.js";
|
|
8
7
|
|
|
9
8
|
import type {
|
|
10
|
-
AllowedTypes,
|
|
11
9
|
ApplyKind,
|
|
12
10
|
FieldKind,
|
|
13
11
|
FieldSchema,
|
|
14
12
|
ImplicitAllowedTypes,
|
|
15
13
|
ImplicitFieldSchema,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
} from "./schemaTypes.js";
|
|
14
|
+
TreeLeafValue,
|
|
15
|
+
} from "../schemaTypes.js";
|
|
19
16
|
import type {
|
|
20
17
|
NodeKind,
|
|
21
|
-
TreeNodeSchema,
|
|
22
18
|
WithType,
|
|
23
19
|
TreeNode,
|
|
24
20
|
Unhydrated,
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
InternalTreeNode,
|
|
22
|
+
TreeNodeSchema,
|
|
23
|
+
TreeNodeSchemaCore,
|
|
24
|
+
} from "../core/index.js";
|
|
25
|
+
import type { TreeArrayNodeBase } from "../arrayNode.js";
|
|
26
|
+
import type { FlexListToUnion, LazyItem } from "../flexList.js";
|
|
27
27
|
|
|
28
28
|
/*
|
|
29
29
|
* TODO:
|
|
@@ -37,6 +37,16 @@ import type { TreeArrayNodeBase, TreeArrayNode } from "./arrayNode.js";
|
|
|
37
37
|
*/
|
|
38
38
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
39
39
|
|
|
40
|
+
/**
|
|
41
|
+
* A placeholder to use in {@link https://www.typescriptlang.org/docs/handbook/2/generics.html#generic-constraints | extends constraints} when using the real type breaks compilation of some recursive types due to {@link https://github.com/microsoft/TypeScript/issues/55758 | a design limitation of TypeScript}.
|
|
42
|
+
*
|
|
43
|
+
* These extends constraints only serve as documentation:
|
|
44
|
+
* to avoid breaking compilation, this type has to not actually enforce anything, and thus is just `unknown`.
|
|
45
|
+
* Therefore the type safety is the responsibility of the user of the API.
|
|
46
|
+
* @public
|
|
47
|
+
*/
|
|
48
|
+
export type Unenforced<_DesiredExtendsConstraint> = unknown;
|
|
49
|
+
|
|
40
50
|
/**
|
|
41
51
|
* {@link Unenforced} version of `ObjectFromSchemaRecord`.
|
|
42
52
|
* @remarks
|
|
@@ -49,6 +59,65 @@ export type ObjectFromSchemaRecordUnsafe<
|
|
|
49
59
|
-readonly [Property in keyof T]: TreeFieldFromImplicitFieldUnsafe<T[Property]>;
|
|
50
60
|
};
|
|
51
61
|
|
|
62
|
+
/**
|
|
63
|
+
* {@link Unenforced} version of {@link TreeNodeSchema}.
|
|
64
|
+
* @remarks
|
|
65
|
+
* Do note use this type directly: its only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
66
|
+
* @system @public
|
|
67
|
+
*/
|
|
68
|
+
export type TreeNodeSchemaUnsafe<
|
|
69
|
+
Name extends string = string,
|
|
70
|
+
Kind extends NodeKind = NodeKind,
|
|
71
|
+
TNode extends Unenforced<TreeNode | TreeLeafValue> = unknown,
|
|
72
|
+
TBuild = never,
|
|
73
|
+
ImplicitlyConstructable extends boolean = boolean,
|
|
74
|
+
Info = unknown,
|
|
75
|
+
> =
|
|
76
|
+
| TreeNodeSchemaClassUnsafe<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info>
|
|
77
|
+
| TreeNodeSchemaNonClassUnsafe<Name, Kind, TNode, TBuild, ImplicitlyConstructable, Info>;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* {@link Unenforced} version of {@link TreeNodeSchemaClass}.
|
|
81
|
+
* @remarks
|
|
82
|
+
* Do note use this type directly: its only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
83
|
+
* @system @public
|
|
84
|
+
*/
|
|
85
|
+
export interface TreeNodeSchemaClassUnsafe<
|
|
86
|
+
out Name extends string,
|
|
87
|
+
out Kind extends NodeKind,
|
|
88
|
+
// TODO: maybe this can be more specific (exclude leaves)
|
|
89
|
+
out TNode extends Unenforced<TreeNode | TreeLeafValue>,
|
|
90
|
+
in TInsertable = never,
|
|
91
|
+
out ImplicitlyConstructable extends boolean = boolean,
|
|
92
|
+
out Info = unknown,
|
|
93
|
+
> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
|
|
94
|
+
/**
|
|
95
|
+
* Constructs an {@link Unhydrated} node with this schema.
|
|
96
|
+
* @remarks
|
|
97
|
+
* This constructor is also used internally to construct hydrated nodes with a different parameter type.
|
|
98
|
+
* Therefore, overriding this constructor with different argument types is not type-safe and is not supported.
|
|
99
|
+
* @sealed
|
|
100
|
+
*/
|
|
101
|
+
new (data: TInsertable | InternalTreeNode): Unhydrated<TNode>;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* {@link Unenforced} version of {@link TreeNodeSchemaNonClass}.
|
|
106
|
+
* @remarks
|
|
107
|
+
* Do note use this type directly: its only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
108
|
+
* @system @public
|
|
109
|
+
*/
|
|
110
|
+
export interface TreeNodeSchemaNonClassUnsafe<
|
|
111
|
+
out Name extends string,
|
|
112
|
+
out Kind extends NodeKind,
|
|
113
|
+
out TNode extends Unenforced<TreeNode | TreeLeafValue>,
|
|
114
|
+
in TInsertable = never,
|
|
115
|
+
out ImplicitlyConstructable extends boolean = boolean,
|
|
116
|
+
out Info = unknown,
|
|
117
|
+
> extends TreeNodeSchemaCore<Name, Kind, ImplicitlyConstructable, Info> {
|
|
118
|
+
create(data: TInsertable): TNode;
|
|
119
|
+
}
|
|
120
|
+
|
|
52
121
|
/**
|
|
53
122
|
* {@link Unenforced} version of {@link TreeObjectNode}.
|
|
54
123
|
* @remarks
|
|
@@ -73,6 +142,14 @@ export type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<Implicit
|
|
|
73
142
|
? TreeNodeFromImplicitAllowedTypesUnsafe<TSchema>
|
|
74
143
|
: unknown;
|
|
75
144
|
|
|
145
|
+
/**
|
|
146
|
+
* {@link Unenforced} version of {@link AllowedTypes}.
|
|
147
|
+
* @remarks
|
|
148
|
+
* Do note use this type directly: its only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
149
|
+
* @system @public
|
|
150
|
+
*/
|
|
151
|
+
export type AllowedTypesUnsafe = readonly LazyItem<TreeNodeSchemaUnsafe>[];
|
|
152
|
+
|
|
76
153
|
/**
|
|
77
154
|
* {@link Unenforced} version of {@link TreeNodeFromImplicitAllowedTypes}.
|
|
78
155
|
* @remarks
|
|
@@ -81,13 +158,11 @@ export type TreeFieldFromImplicitFieldUnsafe<TSchema extends Unenforced<Implicit
|
|
|
81
158
|
*/
|
|
82
159
|
export type TreeNodeFromImplicitAllowedTypesUnsafe<
|
|
83
160
|
TSchema extends Unenforced<ImplicitAllowedTypes>,
|
|
84
|
-
> = TSchema extends
|
|
85
|
-
?
|
|
86
|
-
: TSchema extends
|
|
87
|
-
?
|
|
88
|
-
:
|
|
89
|
-
? NodeFromSchema<FlexListToUnion<TSchema>>
|
|
90
|
-
: unknown;
|
|
161
|
+
> = TSchema extends TreeNodeSchemaUnsafe
|
|
162
|
+
? NodeFromSchemaUnsafe<TSchema>
|
|
163
|
+
: TSchema extends AllowedTypesUnsafe
|
|
164
|
+
? NodeFromSchemaUnsafe<FlexListToUnion<TSchema>>
|
|
165
|
+
: unknown;
|
|
91
166
|
|
|
92
167
|
/**
|
|
93
168
|
* {@link Unenforced} version of {@link InsertableTreeNodeFromImplicitAllowedTypes}.
|
|
@@ -97,7 +172,7 @@ export type TreeNodeFromImplicitAllowedTypesUnsafe<
|
|
|
97
172
|
*/
|
|
98
173
|
export type InsertableTreeNodeFromImplicitAllowedTypesUnsafe<
|
|
99
174
|
TSchema extends Unenforced<ImplicitAllowedTypes>,
|
|
100
|
-
> = TSchema extends
|
|
175
|
+
> = TSchema extends AllowedTypesUnsafe
|
|
101
176
|
? InsertableTypedNodeUnsafe<FlexListToUnion<TSchema>>
|
|
102
177
|
: InsertableTypedNodeUnsafe<TSchema>;
|
|
103
178
|
|
|
@@ -119,7 +194,7 @@ export type InsertableTypedNodeUnsafe<T extends Unenforced<TreeNodeSchema>> = [
|
|
|
119
194
|
* @system @public
|
|
120
195
|
*/
|
|
121
196
|
export type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> =
|
|
122
|
-
T extends
|
|
197
|
+
T extends TreeNodeSchemaUnsafe<string, NodeKind, infer TNode> ? TNode : never;
|
|
123
198
|
|
|
124
199
|
/**
|
|
125
200
|
* {@link Unenforced} version of {@link InsertableTreeNodeFromImplicitAllowedTypes}.
|
|
@@ -128,7 +203,7 @@ export type NodeFromSchemaUnsafe<T extends Unenforced<TreeNodeSchema>> =
|
|
|
128
203
|
* @system @public
|
|
129
204
|
*/
|
|
130
205
|
export type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> =
|
|
131
|
-
T extends
|
|
206
|
+
T extends TreeNodeSchemaUnsafe<string, NodeKind, unknown, infer TBuild> ? TBuild : never;
|
|
132
207
|
|
|
133
208
|
/**
|
|
134
209
|
* {@link Unenforced} version of {@link (TreeArrayNode:interface)}.
|
|
@@ -139,8 +214,7 @@ export type NodeBuilderDataUnsafe<T extends Unenforced<TreeNodeSchema>> =
|
|
|
139
214
|
export interface TreeArrayNodeUnsafe<TAllowedTypes extends Unenforced<ImplicitAllowedTypes>>
|
|
140
215
|
extends TreeArrayNodeBase<
|
|
141
216
|
TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>,
|
|
142
|
-
InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes
|
|
143
|
-
TreeArrayNode
|
|
217
|
+
InsertableTreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>
|
|
144
218
|
> {}
|
|
145
219
|
|
|
146
220
|
/**
|
|
@@ -10,10 +10,7 @@ import { assert } from "@fluidframework/core-utils/internal";
|
|
|
10
10
|
import {
|
|
11
11
|
aboveRootPlaceholder,
|
|
12
12
|
EmptyKey,
|
|
13
|
-
forEachField,
|
|
14
|
-
inCursorField,
|
|
15
13
|
keyAsDetachedField,
|
|
16
|
-
mapCursorField,
|
|
17
14
|
type FieldKey,
|
|
18
15
|
type ITreeCursor,
|
|
19
16
|
type ITreeCursorSynchronous,
|
|
@@ -40,16 +37,22 @@ import {
|
|
|
40
37
|
stringSchema,
|
|
41
38
|
} from "../leafNodeSchema.js";
|
|
42
39
|
import { isObjectNodeSchema } from "../objectNodeTypes.js";
|
|
43
|
-
import {
|
|
40
|
+
import {
|
|
41
|
+
customFromCursorInner,
|
|
42
|
+
type CustomTreeNode,
|
|
43
|
+
type CustomTreeValue,
|
|
44
|
+
type EncodeOptions,
|
|
45
|
+
} from "./customTree.js";
|
|
44
46
|
import { getUnhydratedContext } from "../createContext.js";
|
|
45
47
|
|
|
46
48
|
/**
|
|
47
|
-
* Verbose encoding of a {@link TreeNode} or {@link
|
|
49
|
+
* Verbose encoding of a {@link TreeNode} or {@link TreeLeafValue}.
|
|
48
50
|
* @remarks
|
|
49
51
|
* This is verbose meaning that every {@link TreeNode} is a {@link VerboseTreeNode}.
|
|
50
52
|
* Any IFluidHandle values have been replaced by `THandle`.
|
|
51
53
|
* @privateRemarks
|
|
52
|
-
* This can store all possible simple trees,
|
|
54
|
+
* This can store all possible simple trees,
|
|
55
|
+
* but it can not store all possible trees representable by our internal representations like FlexTree and JsonableTree.
|
|
53
56
|
*/
|
|
54
57
|
export type VerboseTree<THandle = IFluidHandle> =
|
|
55
58
|
| VerboseTreeNode<THandle>
|
|
@@ -77,7 +80,8 @@ export type VerboseTree<THandle = IFluidHandle> =
|
|
|
77
80
|
* This format allows for all simple-tree compatible trees to be represented.
|
|
78
81
|
*
|
|
79
82
|
* Unlike `JsonableTree`, leaf nodes are not boxed into node objects, and instead have their schema inferred from the value.
|
|
80
|
-
* Additionally, sequence fields can only occur on a node that has a single sequence field (with the empty key)
|
|
83
|
+
* Additionally, sequence fields can only occur on a node that has a single sequence field (with the empty key)
|
|
84
|
+
* replicating the behavior of simple-tree ArrayNodes.
|
|
81
85
|
*/
|
|
82
86
|
export interface VerboseTreeNode<THandle = IFluidHandle> {
|
|
83
87
|
/**
|
|
@@ -144,24 +148,6 @@ export interface SchemalessParseOptions<TCustom> {
|
|
|
144
148
|
};
|
|
145
149
|
}
|
|
146
150
|
|
|
147
|
-
/**
|
|
148
|
-
* Options for how to interpret a `VerboseTree<TCustom>` without relying on schema.
|
|
149
|
-
*/
|
|
150
|
-
export interface EncodeOptions<TCustom> {
|
|
151
|
-
/**
|
|
152
|
-
* Fixup custom input formats.
|
|
153
|
-
* @remarks
|
|
154
|
-
* See note on {@link ParseOptions.valueConverter}.
|
|
155
|
-
*/
|
|
156
|
-
valueConverter(data: IFluidHandle): TCustom;
|
|
157
|
-
/**
|
|
158
|
-
* If true, interpret the input keys of object nodes as stored keys.
|
|
159
|
-
* If false, interpret them as property keys.
|
|
160
|
-
* @defaultValue false.
|
|
161
|
-
*/
|
|
162
|
-
readonly useStoredKeys?: boolean;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
151
|
/**
|
|
166
152
|
* Use info from `schema` to convert `options` to {@link SchemalessParseOptions}.
|
|
167
153
|
*/
|
|
@@ -345,12 +331,7 @@ export function verboseFromCursor<TCustom>(
|
|
|
345
331
|
...options,
|
|
346
332
|
};
|
|
347
333
|
|
|
348
|
-
const schemaMap =
|
|
349
|
-
walkFieldSchema(rootSchema, {
|
|
350
|
-
node(schema) {
|
|
351
|
-
schemaMap.set(schema.identifier, schema);
|
|
352
|
-
},
|
|
353
|
-
});
|
|
334
|
+
const schemaMap = getUnhydratedContext(rootSchema).schema;
|
|
354
335
|
|
|
355
336
|
return verboseFromCursorInner(reader, config, schemaMap);
|
|
356
337
|
}
|
|
@@ -360,50 +341,14 @@ function verboseFromCursorInner<TCustom>(
|
|
|
360
341
|
options: Required<EncodeOptions<TCustom>>,
|
|
361
342
|
schema: ReadonlyMap<string, TreeNodeSchema>,
|
|
362
343
|
): VerboseTree<TCustom> {
|
|
363
|
-
const
|
|
364
|
-
const nodeSchema = schema.get(type) ?? fail("missing schema for type in cursor");
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
case numberSchema.identifier:
|
|
368
|
-
case booleanSchema.identifier:
|
|
369
|
-
case nullSchema.identifier:
|
|
370
|
-
case stringSchema.identifier:
|
|
371
|
-
assert(reader.value !== undefined, 0xa14 /* out of schema: missing value */);
|
|
372
|
-
assert(!isFluidHandle(reader.value), 0xa15 /* out of schema: unexpected FluidHandle */);
|
|
373
|
-
return reader.value;
|
|
374
|
-
case handleSchema.identifier:
|
|
375
|
-
assert(reader.value !== undefined, 0xa16 /* out of schema: missing value */);
|
|
376
|
-
assert(isFluidHandle(reader.value), 0xa17 /* out of schema: unexpected FluidHandle */);
|
|
377
|
-
return options.valueConverter(reader.value);
|
|
378
|
-
default: {
|
|
379
|
-
assert(reader.value === undefined, 0xa18 /* out of schema: unexpected value */);
|
|
380
|
-
if (nodeSchema.kind === NodeKind.Array) {
|
|
381
|
-
const fields = inCursorField(reader, EmptyKey, () =>
|
|
382
|
-
mapCursorField(reader, () => verboseFromCursorInner(reader, options, schema)),
|
|
383
|
-
);
|
|
384
|
-
return { type, fields };
|
|
385
|
-
} else {
|
|
386
|
-
const fields: Record<string, VerboseTree<TCustom>> = {};
|
|
387
|
-
forEachField(reader, () => {
|
|
388
|
-
const children = mapCursorField(reader, () =>
|
|
389
|
-
verboseFromCursorInner(reader, options, schema),
|
|
390
|
-
);
|
|
391
|
-
if (children.length === 1) {
|
|
392
|
-
const storedKey = reader.getFieldKey();
|
|
393
|
-
const key =
|
|
394
|
-
isObjectNodeSchema(nodeSchema) && !options.useStoredKeys
|
|
395
|
-
? nodeSchema.storedKeyToPropertyKey.get(storedKey) ??
|
|
396
|
-
fail("missing property key")
|
|
397
|
-
: storedKey;
|
|
398
|
-
// Length is checked above.
|
|
399
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
400
|
-
fields[key] = children[0]!;
|
|
401
|
-
} else {
|
|
402
|
-
assert(children.length === 0, 0xa19 /* invalid children number */);
|
|
403
|
-
}
|
|
404
|
-
});
|
|
405
|
-
return { type, fields };
|
|
406
|
-
}
|
|
407
|
-
}
|
|
344
|
+
const fields = customFromCursorInner(reader, options, schema, verboseFromCursorInner);
|
|
345
|
+
const nodeSchema = schema.get(reader.type) ?? fail("missing schema for type in cursor");
|
|
346
|
+
if (nodeSchema.kind === NodeKind.Leaf) {
|
|
347
|
+
return fields as CustomTreeValue<TCustom>;
|
|
408
348
|
}
|
|
349
|
+
|
|
350
|
+
return {
|
|
351
|
+
type: reader.type,
|
|
352
|
+
fields: fields as CustomTreeNode<TCustom>,
|
|
353
|
+
};
|
|
409
354
|
}
|
|
@@ -14,11 +14,11 @@ import {
|
|
|
14
14
|
isFlexTreeNode,
|
|
15
15
|
} from "../feature-libraries/index.js";
|
|
16
16
|
import { prepareContentForHydration } from "./proxies.js";
|
|
17
|
-
import { getOrCreateInnerNode } from "./proxyBinding.js";
|
|
18
17
|
import {
|
|
19
18
|
normalizeAllowedTypes,
|
|
20
19
|
type ImplicitAllowedTypes,
|
|
21
20
|
type InsertableTreeNodeFromImplicitAllowedTypes,
|
|
21
|
+
type TreeLeafValue,
|
|
22
22
|
type TreeNodeFromImplicitAllowedTypes,
|
|
23
23
|
} from "./schemaTypes.js";
|
|
24
24
|
import {
|
|
@@ -34,6 +34,8 @@ import {
|
|
|
34
34
|
getOrCreateNodeFromInnerNode,
|
|
35
35
|
type TreeNodeSchemaBoth,
|
|
36
36
|
getSimpleNodeSchemaFromInnerNode,
|
|
37
|
+
getOrCreateInnerNode,
|
|
38
|
+
type TreeNodeSchemaClass,
|
|
37
39
|
} from "./core/index.js";
|
|
38
40
|
import { type InsertableContent, mapTreeFromNodeData } from "./toMapTree.js";
|
|
39
41
|
import { fail } from "../util/index.js";
|
|
@@ -45,6 +47,19 @@ import {
|
|
|
45
47
|
import { TreeNodeValid, type MostDerivedData } from "./treeNodeValid.js";
|
|
46
48
|
import { getUnhydratedContext } from "./createContext.js";
|
|
47
49
|
|
|
50
|
+
/**
|
|
51
|
+
* A covariant base type for {@link (TreeArrayNode:interface)}.
|
|
52
|
+
*
|
|
53
|
+
* This provides the readonly subset of TreeArrayNode functionality, and is used as the source interface for moves since that needs to be covariant.
|
|
54
|
+
* @privateRemarks
|
|
55
|
+
* Ideally this would just include `TreeNode, WithType<string, NodeKind.Array>` in the extends list but https://github.com/microsoft/TypeScript/issues/16936 prevents that from compiling.
|
|
56
|
+
* As a workaround around for this TypeScript limitation, the conflicting type intersection is wrapped in `Awaited` (which has no effect on the type in this case) which allows it to compile.
|
|
57
|
+
* @system @sealed @public
|
|
58
|
+
*/
|
|
59
|
+
export interface ReadonlyArrayNode<out T = TreeNode | TreeLeafValue>
|
|
60
|
+
extends ReadonlyArray<T>,
|
|
61
|
+
Awaited<TreeNode & WithType<string, NodeKind.Array>> {}
|
|
62
|
+
|
|
48
63
|
/**
|
|
49
64
|
* A generic array type, used to defined types like {@link (TreeArrayNode:interface)}.
|
|
50
65
|
*
|
|
@@ -53,9 +68,8 @@ import { getUnhydratedContext } from "./createContext.js";
|
|
|
53
68
|
*
|
|
54
69
|
* @system @sealed @public
|
|
55
70
|
*/
|
|
56
|
-
export interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom>
|
|
57
|
-
extends
|
|
58
|
-
TreeNode {
|
|
71
|
+
export interface TreeArrayNodeBase<out T, in TNew, in TMoveFrom = ReadonlyArrayNode>
|
|
72
|
+
extends ReadonlyArrayNode<T> {
|
|
59
73
|
/**
|
|
60
74
|
* Inserts new item(s) at a specified location.
|
|
61
75
|
* @param index - The index at which to insert `value`.
|
|
@@ -366,8 +380,7 @@ export interface TreeArrayNode<
|
|
|
366
380
|
TAllowedTypes extends ImplicitAllowedTypes = ImplicitAllowedTypes,
|
|
367
381
|
> extends TreeArrayNodeBase<
|
|
368
382
|
TreeNodeFromImplicitAllowedTypes<TAllowedTypes>,
|
|
369
|
-
InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes
|
|
370
|
-
TreeArrayNode
|
|
383
|
+
InsertableTreeNodeFromImplicitAllowedTypes<TAllowedTypes>
|
|
371
384
|
> {}
|
|
372
385
|
|
|
373
386
|
/**
|
|
@@ -417,9 +430,7 @@ export class IterableTreeArrayContent<T> implements Iterable<T> {
|
|
|
417
430
|
/**
|
|
418
431
|
* Given a array node proxy, returns its underlying LazySequence field.
|
|
419
432
|
*/
|
|
420
|
-
function getSequenceField
|
|
421
|
-
arrayNode: TreeArrayNode<TSimpleType>,
|
|
422
|
-
): FlexTreeSequenceField {
|
|
433
|
+
function getSequenceField(arrayNode: ReadonlyArrayNode): FlexTreeSequenceField {
|
|
423
434
|
return getOrCreateInnerNode(arrayNode).getBoxed(EmptyKey) as FlexTreeSequenceField;
|
|
424
435
|
}
|
|
425
436
|
|
|
@@ -799,6 +810,11 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
799
810
|
protected abstract get simpleSchema(): T;
|
|
800
811
|
protected abstract get allowedTypes(): ReadonlySet<TreeNodeSchema>;
|
|
801
812
|
|
|
813
|
+
public abstract override get [typeSchemaSymbol](): TreeNodeSchemaClass<
|
|
814
|
+
string,
|
|
815
|
+
NodeKind.Array
|
|
816
|
+
>;
|
|
817
|
+
|
|
802
818
|
public constructor(
|
|
803
819
|
input: Iterable<InsertableTreeNodeFromImplicitAllowedTypes<T>> | InternalTreeNode,
|
|
804
820
|
) {
|
|
@@ -901,13 +917,13 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
901
917
|
}
|
|
902
918
|
field.editor.remove(removeStart, removeEnd - removeStart);
|
|
903
919
|
}
|
|
904
|
-
public moveToStart(sourceIndex: number, source?:
|
|
920
|
+
public moveToStart(sourceIndex: number, source?: ReadonlyArrayNode): void {
|
|
905
921
|
const sourceArray = source ?? this;
|
|
906
922
|
const sourceField = getSequenceField(sourceArray);
|
|
907
923
|
validateIndex(sourceIndex, sourceField, "moveToStart");
|
|
908
924
|
this.moveRangeToIndex(0, sourceIndex, sourceIndex + 1, source);
|
|
909
925
|
}
|
|
910
|
-
public moveToEnd(sourceIndex: number, source?:
|
|
926
|
+
public moveToEnd(sourceIndex: number, source?: ReadonlyArrayNode): void {
|
|
911
927
|
const sourceArray = source ?? this;
|
|
912
928
|
const sourceField = getSequenceField(sourceArray);
|
|
913
929
|
validateIndex(sourceIndex, sourceField, "moveToEnd");
|
|
@@ -916,7 +932,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
916
932
|
public moveToIndex(
|
|
917
933
|
destinationGap: number,
|
|
918
934
|
sourceIndex: number,
|
|
919
|
-
source?:
|
|
935
|
+
source?: ReadonlyArrayNode,
|
|
920
936
|
): void {
|
|
921
937
|
const sourceArray = source ?? this;
|
|
922
938
|
const sourceField = getSequenceField(sourceArray);
|
|
@@ -928,7 +944,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
928
944
|
public moveRangeToStart(
|
|
929
945
|
sourceStart: number,
|
|
930
946
|
sourceEnd: number,
|
|
931
|
-
source?:
|
|
947
|
+
source?: ReadonlyArrayNode,
|
|
932
948
|
): void {
|
|
933
949
|
validateIndexRange(
|
|
934
950
|
sourceStart,
|
|
@@ -938,7 +954,11 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
938
954
|
);
|
|
939
955
|
this.moveRangeToIndex(0, sourceStart, sourceEnd, source);
|
|
940
956
|
}
|
|
941
|
-
public moveRangeToEnd(
|
|
957
|
+
public moveRangeToEnd(
|
|
958
|
+
sourceStart: number,
|
|
959
|
+
sourceEnd: number,
|
|
960
|
+
source?: ReadonlyArrayNode,
|
|
961
|
+
): void {
|
|
942
962
|
validateIndexRange(
|
|
943
963
|
sourceStart,
|
|
944
964
|
sourceEnd,
|
|
@@ -951,7 +971,7 @@ abstract class CustomArrayNodeBase<const T extends ImplicitAllowedTypes>
|
|
|
951
971
|
destinationGap: number,
|
|
952
972
|
sourceStart: number,
|
|
953
973
|
sourceEnd: number,
|
|
954
|
-
source?:
|
|
974
|
+
source?: ReadonlyArrayNode,
|
|
955
975
|
): void {
|
|
956
976
|
const destinationField = getSequenceField(this);
|
|
957
977
|
const destinationSchema = this.allowedTypes;
|
|
@@ -430,3 +430,16 @@ export function getTreeNodeSchemaFromHydratedFlexNode(flexNode: FlexTreeNode): T
|
|
|
430
430
|
|
|
431
431
|
return context.schema.get(flexNode.schema) ?? fail("Missing schema");
|
|
432
432
|
}
|
|
433
|
+
|
|
434
|
+
/**
|
|
435
|
+
* Retrieves the flex node associated with the given target via {@link setInnerNode}.
|
|
436
|
+
* @remarks
|
|
437
|
+
* For {@link Unhydrated} nodes, this returns the MapTreeNode.
|
|
438
|
+
*
|
|
439
|
+
* For hydrated nodes it returns a FlexTreeNode backed by the forest.
|
|
440
|
+
* Note that for "marinated" nodes, this FlexTreeNode exists and returns it: it does not return the MapTreeNode which is the current InnerNode.
|
|
441
|
+
*/
|
|
442
|
+
export function getOrCreateInnerNode(treeNode: TreeNode, allowFreed = false): InnerNode {
|
|
443
|
+
const kernel = getKernel(treeNode);
|
|
444
|
+
return kernel.getOrCreateInnerNode(allowFreed);
|
|
445
|
+
}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type {
|
|
6
|
+
import type { TreeLeafValue } from "../schemaTypes.js";
|
|
7
|
+
import type { InternalTreeNode, TreeNode, Unhydrated } from "./types.js";
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Schema for a tree node.
|
|
@@ -19,7 +20,7 @@ import type { InternalTreeNode, Unhydrated } from "./types.js";
|
|
|
19
20
|
export type TreeNodeSchema<
|
|
20
21
|
Name extends string = string,
|
|
21
22
|
Kind extends NodeKind = NodeKind,
|
|
22
|
-
TNode =
|
|
23
|
+
TNode extends TreeNode | TreeLeafValue = TreeNode | TreeLeafValue,
|
|
23
24
|
TBuild = never,
|
|
24
25
|
ImplicitlyConstructable extends boolean = boolean,
|
|
25
26
|
Info = unknown,
|
|
@@ -38,7 +39,7 @@ export type TreeNodeSchema<
|
|
|
38
39
|
export interface TreeNodeSchemaNonClass<
|
|
39
40
|
out Name extends string = string,
|
|
40
41
|
out Kind extends NodeKind = NodeKind,
|
|
41
|
-
out TNode =
|
|
42
|
+
out TNode extends TreeNode | TreeLeafValue = TreeNode | TreeLeafValue,
|
|
42
43
|
in TInsertable = never,
|
|
43
44
|
out ImplicitlyConstructable extends boolean = boolean,
|
|
44
45
|
out Info = unknown,
|
|
@@ -94,7 +95,8 @@ export interface TreeNodeSchemaNonClass<
|
|
|
94
95
|
export interface TreeNodeSchemaClass<
|
|
95
96
|
out Name extends string = string,
|
|
96
97
|
out Kind extends NodeKind = NodeKind,
|
|
97
|
-
|
|
98
|
+
// TODO: maybe this can be more specific (exclude leaves)
|
|
99
|
+
out TNode extends TreeNode | TreeLeafValue = TreeNode | TreeLeafValue,
|
|
98
100
|
in TInsertable = never,
|
|
99
101
|
out ImplicitlyConstructable extends boolean = boolean,
|
|
100
102
|
out Info = unknown,
|
|
@@ -115,7 +117,7 @@ export interface TreeNodeSchemaClass<
|
|
|
115
117
|
export type TreeNodeSchemaBoth<
|
|
116
118
|
Name extends string = string,
|
|
117
119
|
Kind extends NodeKind = NodeKind,
|
|
118
|
-
TNode =
|
|
120
|
+
TNode extends TreeNode = TreeNode,
|
|
119
121
|
TInsertable = never,
|
|
120
122
|
ImplicitlyConstructable extends boolean = boolean,
|
|
121
123
|
Info = unknown,
|
|
@@ -442,7 +442,12 @@ class EagerMapTreeRequiredField
|
|
|
442
442
|
implements FlexTreeRequiredField
|
|
443
443
|
{
|
|
444
444
|
public override get content(): FlexTreeUnknownUnboxed {
|
|
445
|
-
|
|
445
|
+
// This cannot use ?? since null is a legal value here.
|
|
446
|
+
assert(
|
|
447
|
+
super.content !== undefined,
|
|
448
|
+
"Expected EagerMapTree required field to have a value",
|
|
449
|
+
);
|
|
450
|
+
return super.content;
|
|
446
451
|
}
|
|
447
452
|
}
|
|
448
453
|
|
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import type { TreeLeafValue } from "../schemaTypes.js";
|
|
6
7
|
import type { NodeKind, TreeNodeSchemaClass } from "./treeNodeSchema.js";
|
|
8
|
+
import type { TreeNode } from "./types.js";
|
|
7
9
|
|
|
8
10
|
/**
|
|
9
11
|
* The type of a {@link TreeNode}.
|
|
@@ -87,5 +89,12 @@ export interface WithType<
|
|
|
87
89
|
/**
|
|
88
90
|
* Type symbol, marking a type in a way to increase type safety via strong type checking.
|
|
89
91
|
*/
|
|
90
|
-
get [typeSchemaSymbol](): TreeNodeSchemaClass<
|
|
92
|
+
get [typeSchemaSymbol](): TreeNodeSchemaClass<
|
|
93
|
+
TName,
|
|
94
|
+
TKind,
|
|
95
|
+
TreeNode | TreeLeafValue,
|
|
96
|
+
never,
|
|
97
|
+
boolean,
|
|
98
|
+
TInfo
|
|
99
|
+
>;
|
|
91
100
|
}
|