@fluidframework/tree 2.63.0-359461 → 2.63.0-359962
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/.mocharc.cjs +9 -1
- package/api-report/tree.alpha.api.md +126 -96
- package/api-report/tree.beta.api.md +37 -2
- package/api-report/tree.legacy.beta.api.md +37 -2
- package/api-report/tree.legacy.public.api.md +9 -2
- package/api-report/tree.public.api.md +9 -2
- package/dist/alpha.d.ts +18 -13
- package/dist/beta.d.ts +5 -0
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts +67 -13
- package/dist/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js +70 -35
- package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts +5 -5
- package/dist/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts +23 -0
- package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.js +15 -0
- package/dist/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.js.map +1 -0
- package/dist/feature-libraries/chunked-forest/codec/index.d.ts +1 -0
- package/dist/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/index.js +3 -1
- package/dist/feature-libraries/chunked-forest/codec/index.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +3 -2
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/index.js +2 -1
- package/dist/feature-libraries/chunked-forest/index.js.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +1 -1
- 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/forest-summary/forestSummarizer.d.ts +3 -3
- package/dist/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/forestSummarizer.js +3 -3
- package/dist/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +4 -11
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js +2 -6
- package/dist/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +1 -1
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +2 -1
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
- package/dist/feature-libraries/treeCursorUtils.js +17 -15
- package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/jsonDomainSchema.d.ts +5 -5
- package/dist/jsonDomainSchema.js +5 -5
- package/dist/jsonDomainSchema.js.map +1 -1
- package/dist/legacy.d.ts +5 -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 +1 -0
- package/dist/serializableDomainSchema.d.ts +6 -6
- package/dist/serializableDomainSchema.js +5 -5
- package/dist/serializableDomainSchema.js.map +1 -1
- package/dist/shared-tree/independentView.d.ts.map +1 -1
- package/dist/shared-tree/independentView.js +2 -2
- package/dist/shared-tree/independentView.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +5 -0
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +38 -8
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +6 -8
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +6 -8
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/tree.js +1 -1
- package/dist/shared-tree/tree.js.map +1 -1
- package/dist/shared-tree/treeAlpha.d.ts +20 -28
- package/dist/shared-tree/treeAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeAlpha.js +6 -31
- package/dist/shared-tree/treeAlpha.js.map +1 -1
- package/dist/simple-tree/api/conciseTree.d.ts +1 -1
- package/dist/simple-tree/api/conciseTree.js.map +1 -1
- package/dist/simple-tree/api/configuration.d.ts +0 -3
- package/dist/simple-tree/api/configuration.d.ts.map +1 -1
- package/dist/simple-tree/api/configuration.js +1 -4
- package/dist/simple-tree/api/configuration.js.map +1 -1
- package/dist/simple-tree/api/customTree.d.ts +7 -7
- package/dist/simple-tree/api/customTree.js +5 -5
- package/dist/simple-tree/api/customTree.js.map +1 -1
- package/dist/simple-tree/api/discrepancies.js +2 -2
- package/dist/simple-tree/api/discrepancies.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +3 -3
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +4 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +12 -4
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +3 -8
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts +64 -28
- package/dist/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryAlpha.js +42 -11
- package/dist/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryBeta.d.ts +13 -2
- package/dist/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactoryBeta.js +14 -0
- package/dist/simple-tree/api/schemaFactoryBeta.js.map +1 -1
- package/dist/simple-tree/api/schemaStatics.d.ts +9 -14
- package/dist/simple-tree/api/schemaStatics.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaStatics.js +12 -12
- package/dist/simple-tree/api/schemaStatics.js.map +1 -1
- package/dist/simple-tree/api/storedSchema.d.ts +2 -2
- package/dist/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/dist/simple-tree/api/storedSchema.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts +3 -3
- package/dist/simple-tree/api/tree.js.map +1 -1
- package/dist/simple-tree/api/treeBeta.d.ts +52 -2
- package/dist/simple-tree/api/treeBeta.d.ts.map +1 -1
- package/dist/simple-tree/api/treeBeta.js +37 -2
- package/dist/simple-tree/api/treeBeta.js.map +1 -1
- package/dist/simple-tree/api/treeNodeApi.js +4 -4
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/api/typesUnsafe.d.ts +60 -1
- package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
- package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
- package/dist/simple-tree/core/allowedTypes.d.ts +120 -62
- package/dist/simple-tree/core/allowedTypes.d.ts.map +1 -1
- package/dist/simple-tree/core/allowedTypes.js +162 -84
- package/dist/simple-tree/core/allowedTypes.js.map +1 -1
- package/dist/simple-tree/core/context.d.ts +2 -2
- package/dist/simple-tree/core/context.d.ts.map +1 -1
- package/dist/simple-tree/core/context.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +3 -3
- package/dist/simple-tree/core/index.d.ts.map +1 -1
- package/dist/simple-tree/core/index.js +5 -4
- package/dist/simple-tree/core/index.js.map +1 -1
- package/dist/simple-tree/core/toStored.d.ts +3 -3
- package/dist/simple-tree/core/toStored.d.ts.map +1 -1
- package/dist/simple-tree/core/toStored.js +2 -2
- package/dist/simple-tree/core/toStored.js.map +1 -1
- package/dist/simple-tree/core/treeNode.d.ts +1 -1
- package/dist/simple-tree/core/treeNode.js +1 -1
- package/dist/simple-tree/core/treeNode.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts +7 -11
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +24 -47
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.d.ts +3 -3
- package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/dist/simple-tree/core/treeNodeValid.d.ts +2 -2
- package/dist/simple-tree/core/treeNodeValid.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeValid.js.map +1 -1
- package/dist/simple-tree/core/walkSchema.d.ts +3 -3
- package/dist/simple-tree/core/walkSchema.d.ts.map +1 -1
- package/dist/simple-tree/core/walkSchema.js +1 -1
- package/dist/simple-tree/core/walkSchema.js.map +1 -1
- package/dist/simple-tree/createContext.js +2 -2
- package/dist/simple-tree/createContext.js.map +1 -1
- package/dist/simple-tree/fieldSchema.d.ts +9 -32
- package/dist/simple-tree/fieldSchema.d.ts.map +1 -1
- package/dist/simple-tree/fieldSchema.js +12 -20
- package/dist/simple-tree/fieldSchema.js.map +1 -1
- package/dist/simple-tree/getTreeNodeForField.js +1 -1
- package/dist/simple-tree/getTreeNodeForField.js.map +1 -1
- package/dist/simple-tree/index.d.ts +4 -4
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +7 -3
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts +2 -2
- package/dist/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNode.js +7 -8
- package/dist/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNodeTypes.d.ts +3 -3
- package/dist/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/array/arrayNodeTypes.js.map +1 -1
- package/dist/simple-tree/node-kinds/common.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/common.js +2 -2
- package/dist/simple-tree/node-kinds/common.js.map +1 -1
- package/dist/simple-tree/node-kinds/index.d.ts +1 -1
- package/dist/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.d.ts +2 -2
- package/dist/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNode.js +5 -5
- package/dist/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNodeTypes.d.ts +3 -3
- package/dist/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/map/mapNodeTypes.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/index.d.ts +2 -2
- package/dist/simple-tree/node-kinds/object/index.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/index.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts +5 -18
- package/dist/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNode.js +8 -18
- package/dist/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNodeTypes.d.ts +4 -11
- package/dist/simple-tree/node-kinds/object/objectNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/object/objectNodeTypes.js.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.d.ts +3 -3
- package/dist/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNode.js +9 -9
- package/dist/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts +5 -5
- package/dist/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
- package/dist/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
- package/dist/simple-tree/prepareForInsertion.d.ts +39 -7
- package/dist/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/dist/simple-tree/prepareForInsertion.js +43 -15
- package/dist/simple-tree/prepareForInsertion.js.map +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts +8 -8
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +5 -5
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +2 -2
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/dist/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/dist/simple-tree/unsafeUnknownSchema.d.ts.map +1 -1
- package/dist/simple-tree/unsafeUnknownSchema.js.map +1 -1
- package/dist/simple-tree/walkFieldSchema.js +1 -1
- package/dist/simple-tree/walkFieldSchema.js.map +1 -1
- package/dist/tableSchema.d.ts +19 -19
- package/dist/tableSchema.d.ts.map +1 -1
- package/dist/tableSchema.js +2 -2
- package/dist/tableSchema.js.map +1 -1
- package/lib/alpha.d.ts +18 -13
- package/lib/beta.d.ts +5 -0
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts +67 -13
- package/lib/feature-libraries/chunked-forest/chunkTree.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js +68 -32
- package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts +5 -5
- package/lib/feature-libraries/chunked-forest/codec/codecs.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/codecs.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts +23 -0
- package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.d.ts.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.js +11 -0
- package/lib/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.js.map +1 -0
- package/lib/feature-libraries/chunked-forest/codec/index.d.ts +1 -0
- package/lib/feature-libraries/chunked-forest/codec/index.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/index.js +1 -0
- package/lib/feature-libraries/chunked-forest/codec/index.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js +3 -2
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/index.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/index.js +1 -1
- package/lib/feature-libraries/chunked-forest/index.js.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +1 -1
- 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/forest-summary/forestSummarizer.d.ts +3 -3
- package/lib/feature-libraries/forest-summary/forestSummarizer.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/forestSummarizer.js +3 -3
- package/lib/feature-libraries/forest-summary/forestSummarizer.js.map +1 -1
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts +4 -11
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js +2 -6
- package/lib/feature-libraries/forest-summary/incrementalSummaryBuilder.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +1 -1
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +1 -1
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
- package/lib/feature-libraries/treeCursorUtils.js +17 -15
- package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/jsonDomainSchema.d.ts +5 -5
- package/lib/jsonDomainSchema.js +5 -5
- package/lib/jsonDomainSchema.js.map +1 -1
- package/lib/legacy.d.ts +5 -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 +1 -0
- package/lib/serializableDomainSchema.d.ts +6 -6
- package/lib/serializableDomainSchema.js +5 -5
- package/lib/serializableDomainSchema.js.map +1 -1
- package/lib/shared-tree/independentView.d.ts.map +1 -1
- package/lib/shared-tree/independentView.js +3 -3
- package/lib/shared-tree/independentView.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +5 -0
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +41 -11
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +6 -8
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +7 -9
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/tree.js +2 -2
- package/lib/shared-tree/tree.js.map +1 -1
- package/lib/shared-tree/treeAlpha.d.ts +20 -28
- package/lib/shared-tree/treeAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeAlpha.js +5 -30
- package/lib/shared-tree/treeAlpha.js.map +1 -1
- package/lib/simple-tree/api/conciseTree.d.ts +1 -1
- package/lib/simple-tree/api/conciseTree.js.map +1 -1
- package/lib/simple-tree/api/configuration.d.ts +0 -3
- package/lib/simple-tree/api/configuration.d.ts.map +1 -1
- package/lib/simple-tree/api/configuration.js +2 -5
- package/lib/simple-tree/api/configuration.js.map +1 -1
- package/lib/simple-tree/api/customTree.d.ts +7 -7
- package/lib/simple-tree/api/customTree.js +5 -5
- package/lib/simple-tree/api/customTree.js.map +1 -1
- package/lib/simple-tree/api/discrepancies.js +3 -3
- package/lib/simple-tree/api/discrepancies.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +3 -3
- package/lib/simple-tree/api/index.d.ts.map +1 -1
- package/lib/simple-tree/api/index.js +1 -1
- package/lib/simple-tree/api/index.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +12 -4
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +3 -8
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts +64 -28
- package/lib/simple-tree/api/schemaFactoryAlpha.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryAlpha.js +43 -12
- package/lib/simple-tree/api/schemaFactoryAlpha.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryBeta.d.ts +13 -2
- package/lib/simple-tree/api/schemaFactoryBeta.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactoryBeta.js +16 -2
- package/lib/simple-tree/api/schemaFactoryBeta.js.map +1 -1
- package/lib/simple-tree/api/schemaStatics.d.ts +9 -14
- package/lib/simple-tree/api/schemaStatics.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaStatics.js +12 -12
- package/lib/simple-tree/api/schemaStatics.js.map +1 -1
- package/lib/simple-tree/api/storedSchema.d.ts +2 -2
- package/lib/simple-tree/api/storedSchema.d.ts.map +1 -1
- package/lib/simple-tree/api/storedSchema.js +1 -1
- package/lib/simple-tree/api/storedSchema.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts +3 -3
- package/lib/simple-tree/api/tree.js.map +1 -1
- package/lib/simple-tree/api/treeBeta.d.ts +52 -2
- package/lib/simple-tree/api/treeBeta.d.ts.map +1 -1
- package/lib/simple-tree/api/treeBeta.js +34 -2
- package/lib/simple-tree/api/treeBeta.js.map +1 -1
- package/lib/simple-tree/api/treeNodeApi.js +5 -5
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/api/typesUnsafe.d.ts +60 -1
- package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
- package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
- package/lib/simple-tree/core/allowedTypes.d.ts +120 -62
- package/lib/simple-tree/core/allowedTypes.d.ts.map +1 -1
- package/lib/simple-tree/core/allowedTypes.js +158 -80
- package/lib/simple-tree/core/allowedTypes.js.map +1 -1
- package/lib/simple-tree/core/context.d.ts +2 -2
- package/lib/simple-tree/core/context.d.ts.map +1 -1
- package/lib/simple-tree/core/context.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +3 -3
- package/lib/simple-tree/core/index.d.ts.map +1 -1
- package/lib/simple-tree/core/index.js +2 -2
- package/lib/simple-tree/core/index.js.map +1 -1
- package/lib/simple-tree/core/toStored.d.ts +3 -3
- package/lib/simple-tree/core/toStored.d.ts.map +1 -1
- package/lib/simple-tree/core/toStored.js +3 -3
- package/lib/simple-tree/core/toStored.js.map +1 -1
- package/lib/simple-tree/core/treeNode.d.ts +1 -1
- package/lib/simple-tree/core/treeNode.js +1 -1
- package/lib/simple-tree/core/treeNode.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts +7 -11
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +23 -46
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.d.ts +3 -3
- package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeSchema.js.map +1 -1
- package/lib/simple-tree/core/treeNodeValid.d.ts +2 -2
- package/lib/simple-tree/core/treeNodeValid.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeValid.js.map +1 -1
- package/lib/simple-tree/core/walkSchema.d.ts +3 -3
- package/lib/simple-tree/core/walkSchema.d.ts.map +1 -1
- package/lib/simple-tree/core/walkSchema.js +2 -2
- package/lib/simple-tree/core/walkSchema.js.map +1 -1
- package/lib/simple-tree/createContext.js +3 -3
- package/lib/simple-tree/createContext.js.map +1 -1
- package/lib/simple-tree/fieldSchema.d.ts +9 -32
- package/lib/simple-tree/fieldSchema.d.ts.map +1 -1
- package/lib/simple-tree/fieldSchema.js +13 -21
- package/lib/simple-tree/fieldSchema.js.map +1 -1
- package/lib/simple-tree/getTreeNodeForField.js +1 -1
- package/lib/simple-tree/getTreeNodeForField.js.map +1 -1
- package/lib/simple-tree/index.d.ts +4 -4
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +2 -2
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts +2 -2
- package/lib/simple-tree/node-kinds/array/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNode.js +8 -9
- package/lib/simple-tree/node-kinds/array/arrayNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNodeTypes.d.ts +3 -3
- package/lib/simple-tree/node-kinds/array/arrayNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/array/arrayNodeTypes.js.map +1 -1
- package/lib/simple-tree/node-kinds/common.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/common.js +3 -3
- package/lib/simple-tree/node-kinds/common.js.map +1 -1
- package/lib/simple-tree/node-kinds/index.d.ts +1 -1
- package/lib/simple-tree/node-kinds/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.d.ts +2 -2
- package/lib/simple-tree/node-kinds/map/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNode.js +6 -6
- package/lib/simple-tree/node-kinds/map/mapNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNodeTypes.d.ts +3 -3
- package/lib/simple-tree/node-kinds/map/mapNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/map/mapNodeTypes.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/index.d.ts +2 -2
- package/lib/simple-tree/node-kinds/object/index.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/index.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts +5 -18
- package/lib/simple-tree/node-kinds/object/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNode.js +9 -18
- package/lib/simple-tree/node-kinds/object/objectNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNodeTypes.d.ts +4 -11
- package/lib/simple-tree/node-kinds/object/objectNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/object/objectNodeTypes.js.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.d.ts +3 -3
- package/lib/simple-tree/node-kinds/record/recordNode.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNode.js +10 -10
- package/lib/simple-tree/node-kinds/record/recordNode.js.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts +5 -5
- package/lib/simple-tree/node-kinds/record/recordNodeTypes.d.ts.map +1 -1
- package/lib/simple-tree/node-kinds/record/recordNodeTypes.js.map +1 -1
- package/lib/simple-tree/prepareForInsertion.d.ts +39 -7
- package/lib/simple-tree/prepareForInsertion.d.ts.map +1 -1
- package/lib/simple-tree/prepareForInsertion.js +45 -17
- package/lib/simple-tree/prepareForInsertion.js.map +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts +8 -8
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +5 -5
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts +2 -2
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.d.ts.map +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js +1 -1
- package/lib/simple-tree/unhydratedFlexTreeFromInsertable.js.map +1 -1
- package/lib/simple-tree/unsafeUnknownSchema.d.ts.map +1 -1
- package/lib/simple-tree/unsafeUnknownSchema.js.map +1 -1
- package/lib/simple-tree/walkFieldSchema.js +1 -1
- package/lib/simple-tree/walkFieldSchema.js.map +1 -1
- package/lib/tableSchema.d.ts +19 -19
- package/lib/tableSchema.d.ts.map +1 -1
- package/lib/tableSchema.js +2 -2
- package/lib/tableSchema.js.map +1 -1
- package/package.json +23 -21
- package/src/feature-libraries/chunked-forest/chunkTree.ts +112 -45
- package/src/feature-libraries/chunked-forest/codec/codecs.ts +4 -9
- package/src/feature-libraries/chunked-forest/codec/incrementalEncodingPolicy.ts +33 -0
- package/src/feature-libraries/chunked-forest/codec/index.ts +4 -0
- package/src/feature-libraries/chunked-forest/codec/schemaBasedEncode.ts +4 -7
- package/src/feature-libraries/chunked-forest/index.ts +2 -0
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +1 -1
- package/src/feature-libraries/forest-summary/forestSummarizer.ts +8 -12
- package/src/feature-libraries/forest-summary/incrementalSummaryBuilder.ts +3 -12
- package/src/feature-libraries/index.ts +2 -0
- package/src/feature-libraries/treeCursorUtils.ts +34 -19
- package/src/index.ts +14 -10
- package/src/jsonDomainSchema.ts +5 -5
- package/src/packageVersion.ts +1 -1
- package/src/serializableDomainSchema.ts +6 -6
- package/src/shared-tree/independentView.ts +3 -0
- package/src/shared-tree/schematizingTreeView.ts +58 -9
- package/src/shared-tree/sharedTree.ts +33 -20
- package/src/shared-tree/tree.ts +2 -2
- package/src/shared-tree/treeAlpha.ts +35 -84
- package/src/simple-tree/api/conciseTree.ts +1 -1
- package/src/simple-tree/api/configuration.ts +3 -7
- package/src/simple-tree/api/customTree.ts +7 -7
- package/src/simple-tree/api/discrepancies.ts +3 -3
- package/src/simple-tree/api/index.ts +17 -2
- package/src/simple-tree/api/schemaFactory.ts +18 -73
- package/src/simple-tree/api/schemaFactoryAlpha.ts +118 -25
- package/src/simple-tree/api/schemaFactoryBeta.ts +76 -1
- package/src/simple-tree/api/schemaStatics.ts +19 -61
- package/src/simple-tree/api/storedSchema.ts +2 -6
- package/src/simple-tree/api/tree.ts +3 -3
- package/src/simple-tree/api/treeBeta.ts +137 -4
- package/src/simple-tree/api/treeNodeApi.ts +5 -5
- package/src/simple-tree/api/typesUnsafe.ts +81 -0
- package/src/simple-tree/core/TreeNodeBinding.md +14 -70
- package/src/simple-tree/core/allowedTypes.ts +355 -159
- package/src/simple-tree/core/context.ts +2 -2
- package/src/simple-tree/core/index.ts +11 -9
- package/src/simple-tree/core/toStored.ts +7 -5
- package/src/simple-tree/core/treeNode.ts +1 -1
- package/src/simple-tree/core/treeNodeKernel.ts +25 -59
- package/src/simple-tree/core/treeNodeSchema.ts +3 -6
- package/src/simple-tree/core/treeNodeValid.ts +2 -2
- package/src/simple-tree/core/walkSchema.ts +9 -5
- package/src/simple-tree/createContext.ts +3 -3
- package/src/simple-tree/fieldSchema.ts +24 -98
- package/src/simple-tree/getTreeNodeForField.ts +1 -1
- package/src/simple-tree/index.ts +19 -11
- package/src/simple-tree/node-kinds/array/arrayNode.ts +12 -17
- package/src/simple-tree/node-kinds/array/arrayNodeTypes.ts +7 -8
- package/src/simple-tree/node-kinds/common.ts +5 -3
- package/src/simple-tree/node-kinds/index.ts +0 -2
- package/src/simple-tree/node-kinds/map/mapNode.ts +8 -16
- package/src/simple-tree/node-kinds/map/mapNodeTypes.ts +7 -8
- package/src/simple-tree/node-kinds/object/index.ts +0 -2
- package/src/simple-tree/node-kinds/object/objectNode.ts +17 -55
- package/src/simple-tree/node-kinds/object/objectNodeTypes.ts +5 -19
- package/src/simple-tree/node-kinds/record/recordNode.ts +16 -23
- package/src/simple-tree/node-kinds/record/recordNodeTypes.ts +7 -11
- package/src/simple-tree/prepareForInsertion.ts +92 -30
- package/src/simple-tree/toStoredSchema.ts +8 -9
- package/src/simple-tree/unhydratedFlexTreeFromInsertable.ts +2 -6
- package/src/simple-tree/unsafeUnknownSchema.ts +2 -3
- package/src/simple-tree/walkFieldSchema.ts +1 -1
- package/src/tableSchema.ts +24 -37
|
@@ -3,8 +3,12 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import type { TreeFieldStoredSchema } from "../../core/index.js";
|
|
7
|
-
import {
|
|
6
|
+
import type { ITreeCursorSynchronous, TreeFieldStoredSchema } from "../../core/index.js";
|
|
7
|
+
import {
|
|
8
|
+
defaultSchemaPolicy,
|
|
9
|
+
FieldKinds,
|
|
10
|
+
isTreeValue,
|
|
11
|
+
} from "../../feature-libraries/index.js";
|
|
8
12
|
import { brand } from "../../util/index.js";
|
|
9
13
|
import {
|
|
10
14
|
Context,
|
|
@@ -13,6 +17,7 @@ import {
|
|
|
13
17
|
isTreeNode,
|
|
14
18
|
UnhydratedContext,
|
|
15
19
|
type NodeKind,
|
|
20
|
+
type TreeLeafValue,
|
|
16
21
|
type TreeNode,
|
|
17
22
|
type Unhydrated,
|
|
18
23
|
type WithType,
|
|
@@ -29,8 +34,12 @@ import {
|
|
|
29
34
|
} from "../unhydratedFlexTreeFromInsertable.js";
|
|
30
35
|
|
|
31
36
|
import { createFromCursor } from "./create.js";
|
|
37
|
+
import { conciseFromCursor, type ConciseTree } from "./conciseTree.js";
|
|
38
|
+
import type { TreeEncodingOptions } from "./customTree.js";
|
|
39
|
+
import { cursorFromVerbose } from "./verboseTree.js";
|
|
32
40
|
import type { TreeChangeEvents } from "./treeChangeEvents.js";
|
|
33
41
|
import { treeNodeApi } from "./treeNodeApi.js";
|
|
42
|
+
import type { InsertableField, UnsafeUnknownSchema } from "../unsafeUnknownSchema.js";
|
|
34
43
|
|
|
35
44
|
// Tests for this file are grouped with those for treeNodeApi.ts as that is where this functionality will eventually land,
|
|
36
45
|
// and where most of the actual implementation is for much of it.
|
|
@@ -128,6 +137,39 @@ export interface TreeBeta {
|
|
|
128
137
|
listener: NoInfer<TreeChangeEventsBeta<TNode>[K]>,
|
|
129
138
|
): () => void;
|
|
130
139
|
|
|
140
|
+
/**
|
|
141
|
+
* A less type-safe version of {@link (TreeAlpha:interface).create}, suitable for importing data.
|
|
142
|
+
* @remarks
|
|
143
|
+
* Due to {@link ConciseTree} relying on type inference from the data, its use is somewhat limited.
|
|
144
|
+
* This does not support {@link ConciseTree|ConciseTrees} with customized handle encodings or using persisted keys.
|
|
145
|
+
* Use "compressed" or "verbose" formats for more flexibility.
|
|
146
|
+
*
|
|
147
|
+
* When using this function,
|
|
148
|
+
* it is recommend to ensure your schema is unambiguous with {@link ITreeConfigurationOptions.preventAmbiguity}.
|
|
149
|
+
* If the schema is ambiguous, consider using {@link (TreeAlpha:interface).create} and {@link Unhydrated} nodes where needed,
|
|
150
|
+
* or using {@link (TreeAlpha:interface).(importVerbose:1)} and specify all types.
|
|
151
|
+
*
|
|
152
|
+
* Documented (and thus recoverable) error handling/reporting for this is not yet implemented,
|
|
153
|
+
* but for now most invalid inputs will throw a recoverable error.
|
|
154
|
+
*/
|
|
155
|
+
importConcise<const TSchema extends ImplicitFieldSchema>(
|
|
156
|
+
schema: TSchema,
|
|
157
|
+
data: ConciseTree | undefined,
|
|
158
|
+
): Unhydrated<TreeFieldFromImplicitField<TSchema>>;
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Copy a snapshot of the current version of a TreeNode into a {@link ConciseTree}.
|
|
162
|
+
*/
|
|
163
|
+
exportConcise(node: TreeNode | TreeLeafValue, options?: TreeEncodingOptions): ConciseTree;
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Copy a snapshot of the current version of a TreeNode into a {@link ConciseTree}, allowing undefined.
|
|
167
|
+
*/
|
|
168
|
+
exportConcise(
|
|
169
|
+
node: TreeNode | TreeLeafValue | undefined,
|
|
170
|
+
options?: TreeEncodingOptions,
|
|
171
|
+
): ConciseTree | undefined;
|
|
172
|
+
|
|
131
173
|
/**
|
|
132
174
|
* Clones the persisted data associated with a node.
|
|
133
175
|
*
|
|
@@ -143,7 +185,7 @@ export interface TreeBeta {
|
|
|
143
185
|
*
|
|
144
186
|
* - The identifiers in the node's subtree will be preserved, i.e., they are not replaced with new values.
|
|
145
187
|
*
|
|
146
|
-
* - If the node (or any node in its subtree) contains {@link
|
|
188
|
+
* - If the node (or any node in its subtree) contains {@link ObjectSchemaOptions.allowUnknownOptionalFields|unknown optional fields},
|
|
147
189
|
* those fields will be cloned just like the known fields.
|
|
148
190
|
*/
|
|
149
191
|
clone<const TSchema extends ImplicitFieldSchema>(
|
|
@@ -184,6 +226,93 @@ export interface TreeBeta {
|
|
|
184
226
|
): Unhydrated<TreeFieldFromImplicitField<TSchema>>;
|
|
185
227
|
}
|
|
186
228
|
|
|
229
|
+
/**
|
|
230
|
+
* Borrow a cursor from a node.
|
|
231
|
+
* @remarks
|
|
232
|
+
* The cursor must be put back to its original location before the node is used again.
|
|
233
|
+
*/
|
|
234
|
+
export function borrowCursorFromTreeNodeOrValue(
|
|
235
|
+
node: TreeNode | TreeLeafValue,
|
|
236
|
+
): ITreeCursorSynchronous {
|
|
237
|
+
if (isTreeValue(node)) {
|
|
238
|
+
return cursorFromVerbose(node, {});
|
|
239
|
+
}
|
|
240
|
+
const kernel = getKernel(node);
|
|
241
|
+
const cursor = kernel.getInnerNode().borrowCursor();
|
|
242
|
+
return cursor;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* {@inheritDoc (TreeBeta:interface).importConcise}
|
|
247
|
+
*/
|
|
248
|
+
export function importConcise<TSchema extends ImplicitFieldSchema>(
|
|
249
|
+
schema: TSchema & ImplicitFieldSchema,
|
|
250
|
+
data: ConciseTree | undefined,
|
|
251
|
+
): Unhydrated<TreeFieldFromImplicitField<TSchema>>;
|
|
252
|
+
/**
|
|
253
|
+
* {@inheritDoc (TreeAlpha:interface).importConcise}
|
|
254
|
+
*/
|
|
255
|
+
export function importConcise<TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema>(
|
|
256
|
+
schema: UnsafeUnknownSchema extends TSchema
|
|
257
|
+
? ImplicitFieldSchema
|
|
258
|
+
: TSchema & ImplicitFieldSchema,
|
|
259
|
+
data: ConciseTree | undefined,
|
|
260
|
+
): Unhydrated<
|
|
261
|
+
TSchema extends ImplicitFieldSchema
|
|
262
|
+
? TreeFieldFromImplicitField<TSchema>
|
|
263
|
+
: TreeNode | TreeLeafValue | undefined
|
|
264
|
+
>;
|
|
265
|
+
export function importConcise<TSchema extends ImplicitFieldSchema | UnsafeUnknownSchema>(
|
|
266
|
+
schema: UnsafeUnknownSchema extends TSchema
|
|
267
|
+
? ImplicitFieldSchema
|
|
268
|
+
: TSchema & ImplicitFieldSchema,
|
|
269
|
+
data: ConciseTree | undefined,
|
|
270
|
+
): Unhydrated<
|
|
271
|
+
TSchema extends ImplicitFieldSchema
|
|
272
|
+
? TreeFieldFromImplicitField<TSchema>
|
|
273
|
+
: TreeNode | TreeLeafValue | undefined
|
|
274
|
+
> {
|
|
275
|
+
// Create the tree content from insertable data
|
|
276
|
+
const mapTree = unhydratedFlexTreeFromInsertable(
|
|
277
|
+
data as InsertableField<UnsafeUnknownSchema>,
|
|
278
|
+
schema,
|
|
279
|
+
);
|
|
280
|
+
const result = mapTree === undefined ? undefined : getOrCreateNodeFromInnerNode(mapTree);
|
|
281
|
+
return result as Unhydrated<
|
|
282
|
+
TSchema extends ImplicitFieldSchema
|
|
283
|
+
? TreeFieldFromImplicitField<TSchema>
|
|
284
|
+
: TreeNode | TreeLeafValue | undefined
|
|
285
|
+
>;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* {@inheritDoc (TreeBeta:interface).(exportConcise:1)}
|
|
290
|
+
*/
|
|
291
|
+
export function exportConcise(
|
|
292
|
+
node: TreeNode | TreeLeafValue,
|
|
293
|
+
options?: TreeEncodingOptions,
|
|
294
|
+
): ConciseTree;
|
|
295
|
+
/**
|
|
296
|
+
* {@inheritDoc (TreeBeta:interface).(exportConcise:2)}
|
|
297
|
+
*/
|
|
298
|
+
export function exportConcise(
|
|
299
|
+
node: TreeNode | TreeLeafValue | undefined,
|
|
300
|
+
options?: TreeEncodingOptions,
|
|
301
|
+
): ConciseTree | undefined;
|
|
302
|
+
export function exportConcise(
|
|
303
|
+
node: TreeNode | TreeLeafValue | undefined,
|
|
304
|
+
options?: TreeEncodingOptions,
|
|
305
|
+
): ConciseTree | undefined {
|
|
306
|
+
if (!isTreeNode(node)) {
|
|
307
|
+
return node;
|
|
308
|
+
}
|
|
309
|
+
const config: TreeEncodingOptions = { ...options };
|
|
310
|
+
|
|
311
|
+
const kernel = getKernel(node);
|
|
312
|
+
const cursor = borrowCursorFromTreeNodeOrValue(node);
|
|
313
|
+
return conciseFromCursor(cursor, kernel.context, config);
|
|
314
|
+
}
|
|
315
|
+
|
|
187
316
|
/**
|
|
188
317
|
* Extensions to {@link (Tree:variable)} which are not yet stable.
|
|
189
318
|
* @see {@link (TreeBeta:interface)}.
|
|
@@ -197,6 +326,10 @@ export const TreeBeta: TreeBeta = {
|
|
|
197
326
|
): () => void {
|
|
198
327
|
return treeNodeApi.on(node, eventName, listener);
|
|
199
328
|
},
|
|
329
|
+
|
|
330
|
+
importConcise,
|
|
331
|
+
exportConcise,
|
|
332
|
+
|
|
200
333
|
clone<const TSchema extends ImplicitFieldSchema>(
|
|
201
334
|
node: TreeFieldFromImplicitField<TSchema>,
|
|
202
335
|
): Unhydrated<TreeFieldFromImplicitField<TSchema>> {
|
|
@@ -206,7 +339,7 @@ export const TreeBeta: TreeBeta = {
|
|
|
206
339
|
}
|
|
207
340
|
|
|
208
341
|
const kernel = getKernel(node);
|
|
209
|
-
const cursor = kernel.
|
|
342
|
+
const cursor = kernel.getInnerNode().borrowCursor();
|
|
210
343
|
|
|
211
344
|
// To handle when the node transitively contains unknown optional fields,
|
|
212
345
|
// derive the context from the source node's stored schema which has stored schema for any such fields and their contents.
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
tryGetTreeNodeSchema,
|
|
29
29
|
getOrCreateNodeFromInnerNode,
|
|
30
30
|
typeSchemaSymbol,
|
|
31
|
-
|
|
31
|
+
getInnerNode,
|
|
32
32
|
type TreeLeafValue,
|
|
33
33
|
type ImplicitAllowedTypes,
|
|
34
34
|
type TreeNodeFromImplicitAllowedTypes,
|
|
@@ -141,7 +141,7 @@ export interface TreeNodeApi {
|
|
|
141
141
|
*/
|
|
142
142
|
export const treeNodeApi: TreeNodeApi = {
|
|
143
143
|
parent(node: TreeNode): TreeNode | undefined {
|
|
144
|
-
const editNode =
|
|
144
|
+
const editNode = getInnerNode(node).parentField.parent.parent;
|
|
145
145
|
if (editNode === undefined) {
|
|
146
146
|
return undefined;
|
|
147
147
|
}
|
|
@@ -222,7 +222,7 @@ export const treeNodeApi: TreeNodeApi = {
|
|
|
222
222
|
if (actualSchema === undefined) {
|
|
223
223
|
return false;
|
|
224
224
|
}
|
|
225
|
-
return normalizeAllowedTypes(schema).has(actualSchema);
|
|
225
|
+
return normalizeAllowedTypes(schema).evaluateSet().has(actualSchema);
|
|
226
226
|
},
|
|
227
227
|
schema(node: TreeNode | TreeLeafValue): TreeNodeSchema {
|
|
228
228
|
return tryGetSchema(node) ?? fail(0xb37 /* Not a tree node */);
|
|
@@ -306,7 +306,7 @@ export function getIdentifierFromNode(
|
|
|
306
306
|
return undefined;
|
|
307
307
|
}
|
|
308
308
|
|
|
309
|
-
const flexNode =
|
|
309
|
+
const flexNode = getInnerNode(node);
|
|
310
310
|
const identifierFieldKeys = schema.identifierFieldKeys;
|
|
311
311
|
|
|
312
312
|
switch (identifierFieldKeys.length) {
|
|
@@ -361,7 +361,7 @@ export function getIdentifierFromNode(
|
|
|
361
361
|
export function getStoredKey(node: TreeNode): string | number {
|
|
362
362
|
// Note: the flex domain strictly works with "stored keys", and knows nothing about the developer-facing
|
|
363
363
|
// "property keys".
|
|
364
|
-
const parentField =
|
|
364
|
+
const parentField = getInnerNode(node).parentField;
|
|
365
365
|
if (parentField.parent.schema === FieldKinds.sequence.identifier) {
|
|
366
366
|
// The parent of `node` is an array node
|
|
367
367
|
assert(
|
|
@@ -29,6 +29,8 @@ import type {
|
|
|
29
29
|
TreeLeafValue,
|
|
30
30
|
FlexListToUnion,
|
|
31
31
|
LazyItem,
|
|
32
|
+
AnnotatedAllowedType,
|
|
33
|
+
AnnotatedAllowedTypes,
|
|
32
34
|
} from "../core/index.js";
|
|
33
35
|
import type { TreeArrayNode } from "../node-kinds/index.js";
|
|
34
36
|
import type { SimpleArrayNodeSchema, SimpleMapNodeSchema } from "../simpleSchema.js";
|
|
@@ -543,3 +545,82 @@ export interface TreeRecordNodeUnsafe<
|
|
|
543
545
|
[string, System_Unsafe.TreeNodeFromImplicitAllowedTypesUnsafe<TAllowedTypes>]
|
|
544
546
|
>;
|
|
545
547
|
}
|
|
548
|
+
|
|
549
|
+
/**
|
|
550
|
+
* {@link Unenforced} utility to remove {@link AnnotatedAllowedTypeUnsafe} wrappers.
|
|
551
|
+
* @remarks
|
|
552
|
+
* Do not use this type directly: it's only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
553
|
+
* @sealed
|
|
554
|
+
* @alpha
|
|
555
|
+
* @system
|
|
556
|
+
*/
|
|
557
|
+
export type UnannotateAllowedTypeUnsafe<
|
|
558
|
+
T extends Unenforced<
|
|
559
|
+
AnnotatedAllowedTypeUnsafe | LazyItem<System_Unsafe.TreeNodeSchemaUnsafe>
|
|
560
|
+
>,
|
|
561
|
+
> = T extends AnnotatedAllowedTypeUnsafe<infer X> ? X : T;
|
|
562
|
+
|
|
563
|
+
/**
|
|
564
|
+
* {@link Unenforced} version of {@link AnnotatedAllowedType}.
|
|
565
|
+
* @remarks
|
|
566
|
+
* Do not use this type directly: it's only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
567
|
+
* @system @sealed @alpha
|
|
568
|
+
*/
|
|
569
|
+
export interface AnnotatedAllowedTypeUnsafe<T = Unenforced<LazyItem<TreeNodeSchema>>>
|
|
570
|
+
extends AnnotatedAllowedType<T> {}
|
|
571
|
+
|
|
572
|
+
/**
|
|
573
|
+
* {@link Unenforced} version of {@link AnnotatedAllowedTypes}.
|
|
574
|
+
* @remarks
|
|
575
|
+
* Do not use this type directly: it's only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
576
|
+
* @system @sealed @alpha
|
|
577
|
+
*/
|
|
578
|
+
export interface AnnotatedAllowedTypesUnsafe
|
|
579
|
+
extends AnnotatedAllowedTypes<LazyItem<System_Unsafe.TreeNodeSchemaUnsafe>> {}
|
|
580
|
+
|
|
581
|
+
/**
|
|
582
|
+
* {@link Unenforced} version of {@link AllowedTypesFull}.
|
|
583
|
+
* @remarks
|
|
584
|
+
* Do not use this type directly: it's only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
585
|
+
* @system @sealed @alpha
|
|
586
|
+
*/
|
|
587
|
+
export type AllowedTypesFullUnsafe<
|
|
588
|
+
T extends readonly AnnotatedAllowedTypeUnsafe[] = readonly AnnotatedAllowedTypeUnsafe[],
|
|
589
|
+
> = AnnotatedAllowedTypes<T> & UnannotateAllowedTypesListUnsafe<T>;
|
|
590
|
+
|
|
591
|
+
/**
|
|
592
|
+
* {@link Unenforced} version of {@link AllowedTypesFullFromMixed}.
|
|
593
|
+
* @remarks
|
|
594
|
+
* Do not use this type directly: it's only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
595
|
+
* @system @sealed @alpha
|
|
596
|
+
*/
|
|
597
|
+
export type AllowedTypesFullFromMixedUnsafe<
|
|
598
|
+
T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[],
|
|
599
|
+
> = UnannotateAllowedTypesListUnsafe<T> &
|
|
600
|
+
AnnotatedAllowedTypes<AnnotateAllowedTypesListUnsafe<T>>;
|
|
601
|
+
|
|
602
|
+
/**
|
|
603
|
+
* {@link Unenforced} version of {@link UnannotateAllowedTypesList}.
|
|
604
|
+
* @remarks
|
|
605
|
+
* Do not use this type directly: it's only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
606
|
+
* @system @sealed @alpha
|
|
607
|
+
*/
|
|
608
|
+
export type UnannotateAllowedTypesListUnsafe<
|
|
609
|
+
T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[],
|
|
610
|
+
> = {
|
|
611
|
+
readonly [I in keyof T]: T[I] extends { type: infer X } ? X : T[I];
|
|
612
|
+
};
|
|
613
|
+
|
|
614
|
+
/**
|
|
615
|
+
* {@link Unenforced} version of {@link AnnotateAllowedTypesList}.
|
|
616
|
+
* @remarks
|
|
617
|
+
* Do not use this type directly: it's only needed in the implementation of generic logic which define recursive schema, not when using recursive schema.
|
|
618
|
+
* @system @sealed @alpha
|
|
619
|
+
*/
|
|
620
|
+
export type AnnotateAllowedTypesListUnsafe<
|
|
621
|
+
T extends readonly Unenforced<AnnotatedAllowedType | LazyItem<TreeNodeSchema>>[],
|
|
622
|
+
> = {
|
|
623
|
+
[I in keyof T]: T[I] extends AnnotatedAllowedTypeUnsafe
|
|
624
|
+
? T[I]
|
|
625
|
+
: AnnotatedAllowedTypeUnsafe<T[I]>;
|
|
626
|
+
};
|
|
@@ -8,9 +8,7 @@ Here is an example:
|
|
|
8
8
|
function addPoint(curve: Curve, x: number, y: number): Point {
|
|
9
9
|
const point = new Point({ x: 3, y: 3 });
|
|
10
10
|
curve.points.insertAtEnd(point);
|
|
11
|
-
//
|
|
12
|
-
assert(point.x === 3);
|
|
13
|
-
// In fact, `point` is the same simple-tree node object that you would get from reading it off of its new parent in the tree:
|
|
11
|
+
// `point` is the same simple-tree node object that you would get from reading it off of its new parent in the tree:
|
|
14
12
|
assert(point === curve.points[curve.points.length - 1]);
|
|
15
13
|
// So, to read the content that was just inserted, the original object can be used and there is no need to read via the parent:
|
|
16
14
|
return point;
|
|
@@ -22,83 +20,29 @@ function addPoint(curve: Curve, x: number, y: number): Point {
|
|
|
22
20
|
|
|
23
21
|
This feature is supported by doing some bookkeeping to ensure that the simple-tree objects,
|
|
24
22
|
flex tree nodes and anchor nodes in the tree get associated and disassociated at the right times.
|
|
25
|
-
There are three states that a node simple-tree node can be in: "
|
|
23
|
+
There are three states that a node simple-tree node can be in: "Unhydrated", "hydrating" and "Hydrated".
|
|
26
24
|
|
|
27
|
-
|
|
25
|
+
### Unhydrated Nodes
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
A newly created simple-tree node, a.k.a. a **raw** simple-tree node. A raw simple-tree node is produced by invoking the schema-provided constructor for a node:
|
|
32
|
-
|
|
33
|
-
```ts
|
|
34
|
-
const rawPoint = new Point({ x: 3, y: 3 });
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
Such a simple-tree node will be raw until it is inserted into the tree and becomes "marinated" (see below).
|
|
38
|
-
As raw nodes can be read or mutated.
|
|
39
|
-
|
|
40
|
-
### Marinated Proxies
|
|
41
|
-
|
|
42
|
-
Proxies become **marinated** as soon as they are inserted into the tree.
|
|
43
|
-
|
|
44
|
-
This happens whether proxies are inserted directly, as the root of the content subtree...
|
|
27
|
+
A newly created simple-tree node, a.k.a. an **unhydrated** simple-tree node. An unhydrated simple-tree node is produced by invoking the schema-provided constructor for a node:
|
|
45
28
|
|
|
46
29
|
```ts
|
|
47
|
-
|
|
48
|
-
app.graph.curves[0].insertAtEnd(rawPoint);
|
|
30
|
+
const unhydratedPoint = new Point({ x: 3, y: 3 });
|
|
49
31
|
```
|
|
50
32
|
|
|
51
|
-
|
|
33
|
+
Such a simple-tree node will be unhydrated until it is inserted into the tree and becomes "hydrated" (see below).
|
|
34
|
+
Unhydrated nodes can be read or mutated just like hydrated ones.
|
|
52
35
|
|
|
53
|
-
|
|
54
|
-
// Upon insertion, `rawPoint` transitions from "raw" to the next state, "marinated"
|
|
55
|
-
app.graph = {
|
|
56
|
-
curves: [
|
|
57
|
-
[new Point({ x: 10, y: 10 }), new Point({ x: 20, y: 20 })],
|
|
58
|
-
[new Point({ x: 2, y: 2 }), rawPoint, new Point({ x: 4, y: 4 })],
|
|
59
|
-
],
|
|
60
|
-
};
|
|
61
|
-
```
|
|
36
|
+
### Hydrating Nodes
|
|
62
37
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
The simple-tree node for that content will then be mapped to the `AnchorNode` (via its kernel) and the `AnchorNode` will be mapped to the simple-tree node.
|
|
66
|
-
Note that the `AnchorNode` may not yet have a `FlexTreeNode` associated with it - that happens when the node becomes "cooked" (see below).
|
|
38
|
+
Between insertion edit and the change callback which updates the node to "Hydrated" (see [prepareForInsertion.ts](../prepareForInsertion.ts)),
|
|
39
|
+
the node is in a poorly defined "hydrating" state and should not be interacted with.
|
|
67
40
|
|
|
68
|
-
###
|
|
41
|
+
### Hydrated Nodes
|
|
69
42
|
|
|
70
|
-
A simple-tree node is fully
|
|
71
|
-
This happens lazily on demand, if/when a marinated simple-tree node is read or mutated (by the local client).
|
|
43
|
+
A simple-tree node is fully hydrated when it is associated with a `HydratedFlexTreeNode`.
|
|
72
44
|
|
|
73
45
|
```ts
|
|
74
|
-
const point = new Point({ x: 3, y: 3 }); // `point` is
|
|
75
|
-
curves.points.insertAtEnd(point); // `point` becomes
|
|
76
|
-
const x = point.x; // `point` becomes cooked in order to support the read of `x`
|
|
46
|
+
const point = new Point({ x: 3, y: 3 }); // `point` is unhydrated
|
|
47
|
+
curves.points.insertAtEnd(point); // `point` becomes hydrated
|
|
77
48
|
```
|
|
78
|
-
|
|
79
|
-
This laziness prevents the simple-tree node tree from generating unnecessary `FlexTreeNodes`.
|
|
80
|
-
|
|
81
|
-
Cooking a marinated simple-tree node works as follows:
|
|
82
|
-
|
|
83
|
-
1. Get the `AnchorNode` associated with the marinated simple-tree node.
|
|
84
|
-
2. Get or create a `FlexTreeNode` for the anchor.
|
|
85
|
-
3. This will cause the `FlexTreeNode` to be generated which corresponds to the simple-tree node.
|
|
86
|
-
|
|
87
|
-
### Mappings
|
|
88
|
-
|
|
89
|
-
```mermaid
|
|
90
|
-
graph LR;
|
|
91
|
-
AnchorNode(AnchorNode)<-->|Cooked and sometimes when Marinated|FlexTreeNode(FlexTreeNode)
|
|
92
|
-
AnchorNode<--->|Marinated or Cooked|TreeNode(TreeNode)-.->|Raw|RawTreeNode(RawTreeNode)
|
|
93
|
-
linkStyle 0 stroke:#0f0
|
|
94
|
-
linkStyle 1 stroke:#00f
|
|
95
|
-
linkStyle 2 stroke:#f00
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
Note that it is possible for the `Cooked` mappings between an `AnchorNode` and a `FlexTreeNode` to exist regardless of whether there is also a simple-tree node yet created for that node.
|
|
99
|
-
In that case, when that simple-tree node is created it will immediately be given its `Marinated` mappings and therefore already be cooked.
|
|
100
|
-
|
|
101
|
-
`RawTreeNode`s, which implement the `FlexTreeNode` interface (or at least, as of 2024-03-21, pretend to), are substitutes for the true `FlexTreeNode`s that don't yet exist for a raw node.
|
|
102
|
-
The `Raw` mapping is removed when a simple-tree node is marinated, and the `RawTreeNode` is forgotten.
|
|
103
|
-
|
|
104
|
-
See [proxyBinding.ts](./proxyBinding.ts) for more details.
|