@fluidframework/tree 2.22.1 → 2.23.0-325054
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/extensions.json +1 -0
- package/.vscode/settings.json +1 -0
- package/CHANGELOG.md +47 -0
- package/api-report/tree.alpha.api.md +169 -10
- package/api-report/tree.beta.api.md +101 -9
- package/api-report/tree.legacy.alpha.api.md +101 -9
- package/api-report/tree.legacy.public.api.md +101 -9
- package/api-report/tree.public.api.md +101 -9
- package/dist/alpha.d.ts +20 -0
- package/dist/beta.d.ts +15 -0
- package/dist/codec/codec.js +3 -3
- package/dist/codec/codec.js.map +1 -1
- package/dist/codec/discriminatedUnions.d.ts.map +1 -1
- package/dist/codec/discriminatedUnions.js +1 -1
- package/dist/codec/discriminatedUnions.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js +3 -3
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +18 -13
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/core/tree/treeTextFormat.js +1 -1
- package/dist/core/tree/treeTextFormat.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/basicChunk.js +11 -8
- package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js +2 -2
- package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js +3 -3
- package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +2 -2
- package/dist/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js +4 -3
- package/dist/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.js +2 -2
- package/dist/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js +3 -3
- package/dist/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/emptyChunk.js +14 -14
- package/dist/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.js +6 -4
- package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.js +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +4 -3
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.js +5 -4
- package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/dist/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
- package/dist/feature-libraries/indexing/anchorTreeIndex.js +1 -1
- package/dist/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/comparison.js +6 -4
- package/dist/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/isNeverTree.js +4 -4
- package/dist/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +4 -4
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +10 -11
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/node-key/mockNodeKeyManager.js +1 -1
- package/dist/feature-libraries/node-key/mockNodeKeyManager.js.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/dist/feature-libraries/schema-index/codec.js +1 -1
- package/dist/feature-libraries/schema-index/codec.js.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.js +1 -1
- package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.js +1 -1
- package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.js +1 -1
- package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
- package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
- package/dist/feature-libraries/treeCursorUtils.js +6 -4
- package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/dist/jsonDomainSchema.d.ts +113 -0
- package/dist/jsonDomainSchema.d.ts.map +1 -0
- package/dist/jsonDomainSchema.js +101 -0
- package/dist/jsonDomainSchema.js.map +1 -0
- package/dist/legacy.d.ts +15 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +15 -0
- package/dist/serializableDomainSchema.d.ts +108 -0
- package/dist/serializableDomainSchema.d.ts.map +1 -0
- package/dist/serializableDomainSchema.js +90 -0
- package/dist/serializableDomainSchema.js.map +1 -0
- package/dist/shared-tree/index.d.ts +1 -1
- package/dist/shared-tree/index.d.ts.map +1 -1
- package/dist/shared-tree/index.js.map +1 -1
- package/dist/shared-tree/schematizeTree.js +1 -1
- package/dist/shared-tree/schematizeTree.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +37 -20
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +17 -17
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/dist/shared-tree/treeApiAlpha.d.ts.map +1 -1
- package/dist/shared-tree/treeApiAlpha.js +4 -4
- package/dist/shared-tree/treeApiAlpha.js.map +1 -1
- package/dist/shared-tree/treeCheckout.js +1 -1
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree-core/editManager.d.ts +11 -2
- package/dist/shared-tree-core/editManager.d.ts.map +1 -1
- package/dist/shared-tree-core/editManager.js +70 -34
- package/dist/shared-tree-core/editManager.js.map +1 -1
- package/dist/shared-tree-core/resubmitMachine.d.ts +2 -0
- package/dist/shared-tree-core/resubmitMachine.d.ts.map +1 -1
- package/dist/shared-tree-core/resubmitMachine.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts +10 -3
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +42 -7
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/simple-tree/api/component.d.ts +30 -0
- package/dist/simple-tree/api/component.d.ts.map +1 -0
- package/dist/simple-tree/api/component.js +26 -0
- package/dist/simple-tree/api/component.js.map +1 -0
- package/dist/simple-tree/api/customTree.js +3 -3
- package/dist/simple-tree/api/customTree.js.map +1 -1
- package/dist/simple-tree/api/index.d.ts +2 -1
- package/dist/simple-tree/api/index.d.ts.map +1 -1
- package/dist/simple-tree/api/index.js +3 -1
- package/dist/simple-tree/api/index.js.map +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.js +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/dist/simple-tree/api/schemaFactory.d.ts +0 -8
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/dist/simple-tree/api/schemaFactory.js +4 -25
- package/dist/simple-tree/api/schemaFactory.js.map +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/dist/simple-tree/api/simpleTreeIndex.js +3 -3
- package/dist/simple-tree/api/simpleTreeIndex.js.map +1 -1
- package/dist/simple-tree/api/tree.d.ts.map +1 -1
- package/dist/simple-tree/api/tree.js +2 -3
- 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 +7 -18
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -1
- package/dist/simple-tree/api/typesUnsafe.d.ts +127 -19
- package/dist/simple-tree/api/typesUnsafe.d.ts.map +1 -1
- package/dist/simple-tree/api/typesUnsafe.js +17 -0
- package/dist/simple-tree/api/typesUnsafe.js.map +1 -1
- package/dist/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/dist/simple-tree/api/verboseTree.js +5 -4
- package/dist/simple-tree/api/verboseTree.js.map +1 -1
- package/dist/simple-tree/api/view.js +1 -1
- package/dist/simple-tree/api/view.js.map +1 -1
- package/dist/simple-tree/arrayNode.d.ts +1 -1
- package/dist/simple-tree/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/arrayNode.js +2 -2
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
- package/dist/simple-tree/core/getOrCreateNode.js +1 -1
- package/dist/simple-tree/core/getOrCreateNode.js.map +1 -1
- package/dist/simple-tree/core/schemaCaching.js +1 -1
- package/dist/simple-tree/core/schemaCaching.js.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/dist/simple-tree/core/treeNodeKernel.js +6 -6
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/dist/simple-tree/core/unhydratedFlexTree.js +5 -5
- package/dist/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/dist/simple-tree/flexList.d.ts +4 -5
- package/dist/simple-tree/flexList.d.ts.map +1 -1
- package/dist/simple-tree/flexList.js +1 -14
- package/dist/simple-tree/flexList.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 +6 -2
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/objectNode.d.ts +25 -2
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js +4 -2
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/proxies.js +1 -1
- package/dist/simple-tree/proxies.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +211 -9
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js +83 -2
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/toMapTree.js +3 -3
- package/dist/simple-tree/toMapTree.js.map +1 -1
- package/dist/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/dist/simple-tree/toStoredSchema.js +3 -6
- package/dist/simple-tree/toStoredSchema.js.map +1 -1
- package/dist/simple-tree/treeNodeValid.d.ts +7 -1
- package/dist/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/dist/simple-tree/treeNodeValid.js +18 -7
- package/dist/simple-tree/treeNodeValid.js.map +1 -1
- package/dist/util/idAllocator.js +1 -1
- package/dist/util/idAllocator.js.map +1 -1
- package/dist/util/index.d.ts +2 -2
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +5 -4
- package/dist/util/index.js.map +1 -1
- package/dist/util/nestedMap.d.ts +2 -10
- package/dist/util/nestedMap.d.ts.map +1 -1
- package/dist/util/nestedMap.js +9 -28
- package/dist/util/nestedMap.js.map +1 -1
- package/dist/util/utils.d.ts +23 -6
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js +46 -13
- package/dist/util/utils.js.map +1 -1
- package/lib/alpha.d.ts +20 -0
- package/lib/beta.d.ts +15 -0
- package/lib/codec/codec.js +3 -3
- package/lib/codec/codec.js.map +1 -1
- package/lib/codec/discriminatedUnions.d.ts.map +1 -1
- package/lib/codec/discriminatedUnions.js +1 -1
- package/lib/codec/discriminatedUnions.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js +3 -3
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +19 -14
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/core/tree/treeTextFormat.js +1 -1
- package/lib/core/tree/treeTextFormat.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.js +11 -8
- package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js +2 -2
- package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.js +3 -3
- package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js +2 -2
- package/lib/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js +4 -3
- package/lib/feature-libraries/chunked-forest/codec/compressedEncode.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.js +2 -2
- package/lib/feature-libraries/chunked-forest/codec/nodeShape.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js +3 -3
- package/lib/feature-libraries/chunked-forest/codec/schemaBasedEncoding.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/emptyChunk.js +14 -14
- package/lib/feature-libraries/chunked-forest/emptyChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/uniformChunk.js +6 -4
- package/lib/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.js +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +4 -3
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js +5 -4
- package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/lib/feature-libraries/indexing/anchorTreeIndex.d.ts.map +1 -1
- package/lib/feature-libraries/indexing/anchorTreeIndex.js +1 -1
- package/lib/feature-libraries/indexing/anchorTreeIndex.js.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/comparison.js +6 -4
- package/lib/feature-libraries/modular-schema/comparison.js.map +1 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/isNeverTree.js +4 -4
- package/lib/feature-libraries/modular-schema/isNeverTree.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +4 -4
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +11 -12
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/node-key/mockNodeKeyManager.js +1 -1
- package/lib/feature-libraries/node-key/mockNodeKeyManager.js.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/lib/feature-libraries/schema-index/codec.js +1 -1
- package/lib/feature-libraries/schema-index/codec.js.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.js +1 -1
- package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.js +1 -1
- package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.js +1 -1
- package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
- package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
- package/lib/feature-libraries/treeCursorUtils.js +6 -4
- package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
- package/lib/index.d.ts +4 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/jsonDomainSchema.d.ts +113 -0
- package/lib/jsonDomainSchema.d.ts.map +1 -0
- package/lib/jsonDomainSchema.js +98 -0
- package/lib/jsonDomainSchema.js.map +1 -0
- package/lib/legacy.d.ts +15 -0
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +15 -0
- package/lib/serializableDomainSchema.d.ts +108 -0
- package/lib/serializableDomainSchema.d.ts.map +1 -0
- package/lib/serializableDomainSchema.js +87 -0
- package/lib/serializableDomainSchema.js.map +1 -0
- package/lib/shared-tree/index.d.ts +1 -1
- package/lib/shared-tree/index.d.ts.map +1 -1
- package/lib/shared-tree/index.js.map +1 -1
- package/lib/shared-tree/schematizeTree.js +1 -1
- package/lib/shared-tree/schematizeTree.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +37 -20
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +18 -18
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/lib/shared-tree/treeApiAlpha.d.ts.map +1 -1
- package/lib/shared-tree/treeApiAlpha.js +4 -4
- package/lib/shared-tree/treeApiAlpha.js.map +1 -1
- package/lib/shared-tree/treeCheckout.js +1 -1
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree-core/editManager.d.ts +11 -2
- package/lib/shared-tree-core/editManager.d.ts.map +1 -1
- package/lib/shared-tree-core/editManager.js +70 -34
- package/lib/shared-tree-core/editManager.js.map +1 -1
- package/lib/shared-tree-core/resubmitMachine.d.ts +2 -0
- package/lib/shared-tree-core/resubmitMachine.d.ts.map +1 -1
- package/lib/shared-tree-core/resubmitMachine.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts +10 -3
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +42 -7
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/simple-tree/api/component.d.ts +30 -0
- package/lib/simple-tree/api/component.d.ts.map +1 -0
- package/lib/simple-tree/api/component.js +23 -0
- package/lib/simple-tree/api/component.js.map +1 -0
- package/lib/simple-tree/api/customTree.js +3 -3
- package/lib/simple-tree/api/customTree.js.map +1 -1
- package/lib/simple-tree/api/index.d.ts +2 -1
- 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.js +1 -1
- package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -1
- package/lib/simple-tree/api/schemaFactory.d.ts +0 -8
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -1
- package/lib/simple-tree/api/schemaFactory.js +2 -22
- package/lib/simple-tree/api/schemaFactory.js.map +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -1
- package/lib/simple-tree/api/simpleTreeIndex.js +3 -3
- package/lib/simple-tree/api/simpleTreeIndex.js.map +1 -1
- package/lib/simple-tree/api/tree.d.ts.map +1 -1
- package/lib/simple-tree/api/tree.js +3 -4
- 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 +9 -20
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -1
- package/lib/simple-tree/api/typesUnsafe.d.ts +127 -19
- package/lib/simple-tree/api/typesUnsafe.d.ts.map +1 -1
- package/lib/simple-tree/api/typesUnsafe.js +15 -1
- package/lib/simple-tree/api/typesUnsafe.js.map +1 -1
- package/lib/simple-tree/api/verboseTree.d.ts.map +1 -1
- package/lib/simple-tree/api/verboseTree.js +5 -4
- package/lib/simple-tree/api/verboseTree.js.map +1 -1
- package/lib/simple-tree/api/view.js +1 -1
- package/lib/simple-tree/api/view.js.map +1 -1
- package/lib/simple-tree/arrayNode.d.ts +1 -1
- package/lib/simple-tree/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/arrayNode.js +2 -2
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/core/getOrCreateNode.d.ts.map +1 -1
- package/lib/simple-tree/core/getOrCreateNode.js +1 -1
- package/lib/simple-tree/core/getOrCreateNode.js.map +1 -1
- package/lib/simple-tree/core/schemaCaching.js +1 -1
- package/lib/simple-tree/core/schemaCaching.js.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -1
- package/lib/simple-tree/core/treeNodeKernel.js +6 -6
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.d.ts.map +1 -1
- package/lib/simple-tree/core/unhydratedFlexTree.js +5 -5
- package/lib/simple-tree/core/unhydratedFlexTree.js.map +1 -1
- package/lib/simple-tree/flexList.d.ts +4 -5
- package/lib/simple-tree/flexList.d.ts.map +1 -1
- package/lib/simple-tree/flexList.js +0 -12
- package/lib/simple-tree/flexList.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/objectNode.d.ts +25 -2
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js +4 -2
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/proxies.js +1 -1
- package/lib/simple-tree/proxies.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +211 -9
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js +81 -3
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/toMapTree.js +3 -3
- package/lib/simple-tree/toMapTree.js.map +1 -1
- package/lib/simple-tree/toStoredSchema.d.ts.map +1 -1
- package/lib/simple-tree/toStoredSchema.js +5 -8
- package/lib/simple-tree/toStoredSchema.js.map +1 -1
- package/lib/simple-tree/treeNodeValid.d.ts +7 -1
- package/lib/simple-tree/treeNodeValid.d.ts.map +1 -1
- package/lib/simple-tree/treeNodeValid.js +18 -7
- package/lib/simple-tree/treeNodeValid.js.map +1 -1
- package/lib/util/idAllocator.js +1 -1
- package/lib/util/idAllocator.js.map +1 -1
- package/lib/util/index.d.ts +2 -2
- package/lib/util/index.d.ts.map +1 -1
- package/lib/util/index.js +2 -2
- package/lib/util/index.js.map +1 -1
- package/lib/util/nestedMap.d.ts +2 -10
- package/lib/util/nestedMap.d.ts.map +1 -1
- package/lib/util/nestedMap.js +5 -23
- package/lib/util/nestedMap.js.map +1 -1
- package/lib/util/utils.d.ts +23 -6
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js +42 -11
- package/lib/util/utils.js.map +1 -1
- package/package.json +27 -23
- package/src/codec/codec.ts +3 -3
- package/src/codec/discriminatedUnions.ts +2 -1
- package/src/core/schema-stored/schema.ts +5 -3
- package/src/core/tree/anchorSet.ts +37 -26
- package/src/core/tree/treeTextFormat.ts +1 -1
- package/src/feature-libraries/chunked-forest/basicChunk.ts +11 -8
- package/src/feature-libraries/chunked-forest/chunkTree.ts +2 -2
- package/src/feature-libraries/chunked-forest/chunkedForest.ts +3 -3
- package/src/feature-libraries/chunked-forest/codec/chunkEncodingGeneric.ts +2 -2
- package/src/feature-libraries/chunked-forest/codec/compressedEncode.ts +4 -3
- package/src/feature-libraries/chunked-forest/codec/nodeShape.ts +2 -2
- package/src/feature-libraries/chunked-forest/codec/schemaBasedEncoding.ts +4 -3
- package/src/feature-libraries/chunked-forest/emptyChunk.ts +14 -14
- package/src/feature-libraries/chunked-forest/uniformChunk.ts +6 -4
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +1 -1
- package/src/feature-libraries/default-schema/schemaChecker.ts +1 -1
- package/src/feature-libraries/flex-tree/lazyField.ts +6 -8
- package/src/feature-libraries/flex-tree/lazyNode.ts +6 -4
- package/src/feature-libraries/indexing/anchorTreeIndex.ts +2 -1
- package/src/feature-libraries/modular-schema/comparison.ts +7 -5
- package/src/feature-libraries/modular-schema/isNeverTree.ts +6 -4
- package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +4 -4
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +16 -12
- package/src/feature-libraries/node-key/mockNodeKeyManager.ts +1 -1
- package/src/feature-libraries/object-forest/objectForest.ts +1 -1
- package/src/feature-libraries/schema-index/codec.ts +1 -1
- package/src/feature-libraries/sequence-field/compose.ts +1 -1
- package/src/feature-libraries/sequence-field/invert.ts +1 -1
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV1.ts +1 -1
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +1 -1
- package/src/feature-libraries/sequence-field/utils.ts +1 -1
- package/src/feature-libraries/treeCursorUtils.ts +6 -4
- package/src/index.ts +22 -1
- package/src/jsonDomainSchema.ts +129 -0
- package/src/packageVersion.ts +1 -1
- package/src/serializableDomainSchema.ts +121 -0
- package/src/shared-tree/index.ts +0 -1
- package/src/shared-tree/schematizeTree.ts +1 -1
- package/src/shared-tree/sharedTree.ts +31 -41
- package/src/shared-tree/sharedTreeChangeFamily.ts +1 -1
- package/src/shared-tree/treeApiAlpha.ts +12 -4
- package/src/shared-tree/treeCheckout.ts +1 -1
- package/src/shared-tree-core/editManager.ts +85 -47
- package/src/shared-tree-core/resubmitMachine.ts +2 -0
- package/src/shared-tree-core/sharedTreeCore.ts +62 -14
- package/src/simple-tree/api/component.ts +42 -0
- package/src/simple-tree/api/customTree.ts +3 -3
- package/src/simple-tree/api/index.ts +7 -0
- package/src/simple-tree/api/schemaCreationUtilities.ts +1 -1
- package/src/simple-tree/api/schemaFactory.ts +1 -28
- package/src/simple-tree/api/schemaFactoryRecursive.ts +1 -1
- package/src/simple-tree/api/simpleTreeIndex.ts +3 -3
- package/src/simple-tree/api/tree.ts +3 -3
- package/src/simple-tree/api/treeNodeApi.ts +10 -18
- package/src/simple-tree/api/typesUnsafe.ts +193 -18
- package/src/simple-tree/api/verboseTree.ts +8 -4
- package/src/simple-tree/api/view.ts +1 -1
- package/src/simple-tree/arrayNode.ts +2 -2
- package/src/simple-tree/core/getOrCreateNode.ts +2 -1
- package/src/simple-tree/core/schemaCaching.ts +1 -1
- package/src/simple-tree/core/treeNodeKernel.ts +9 -6
- package/src/simple-tree/core/unhydratedFlexTree.ts +7 -5
- package/src/simple-tree/flexList.ts +4 -14
- package/src/simple-tree/index.ts +25 -1
- package/src/simple-tree/objectNode.ts +50 -5
- package/src/simple-tree/proxies.ts +1 -1
- package/src/simple-tree/schemaTypes.ts +322 -23
- package/src/simple-tree/toMapTree.ts +3 -3
- package/src/simple-tree/toStoredSchema.ts +5 -7
- package/src/simple-tree/treeNodeValid.ts +21 -7
- package/src/util/idAllocator.ts +1 -1
- package/src/util/index.ts +3 -2
- package/src/util/nestedMap.ts +9 -33
- package/src/util/utils.ts +52 -12
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import {
|
|
7
|
+
SchemaFactory,
|
|
8
|
+
type AllowedTypes,
|
|
9
|
+
type FixRecursiveArraySchema,
|
|
10
|
+
type TreeNodeFromImplicitAllowedTypes,
|
|
11
|
+
type ValidateRecursiveSchema,
|
|
12
|
+
} from "./simple-tree/index.js";
|
|
13
|
+
|
|
14
|
+
const sf = new SchemaFactory("com.fluidframework.json");
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Utilities for storing JSON data in {@link TreeNode}s.
|
|
18
|
+
* @remarks
|
|
19
|
+
* Schema which replicate the JSON data model with {@link TreeNode}s.
|
|
20
|
+
*
|
|
21
|
+
* This allows JSON to be losslessly round-tripped through a tree with the following limitations:
|
|
22
|
+
*
|
|
23
|
+
* 1. Only information that would be preserved by JSON.parse is preserved. This means (among other things) that numbers are limited to JavasScript's numeric precision.
|
|
24
|
+
*
|
|
25
|
+
* 2. The order of fields on an object is not preserved. The resulting order is arbitrary.
|
|
26
|
+
*
|
|
27
|
+
* JSON data can be imported from JSON into this format using `JSON.parse` then {@link TreeAlpha.importConcise} with the {@link JsonAsTree.(Tree:variable)} schema.
|
|
28
|
+
*
|
|
29
|
+
* @alpha
|
|
30
|
+
*/
|
|
31
|
+
export namespace JsonAsTree {
|
|
32
|
+
/**
|
|
33
|
+
* {@link AllowedTypes} for primitives types allowed in JSON.
|
|
34
|
+
* @alpha
|
|
35
|
+
*/
|
|
36
|
+
export const Primitive = [
|
|
37
|
+
sf.null,
|
|
38
|
+
sf.boolean,
|
|
39
|
+
sf.number,
|
|
40
|
+
sf.string,
|
|
41
|
+
] as const satisfies AllowedTypes;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* @alpha
|
|
45
|
+
*/
|
|
46
|
+
export type Primitive = TreeNodeFromImplicitAllowedTypes<typeof Primitive>;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* {@link AllowedTypes} for any content allowed in the {@link JsonAsTree} domain.
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const tree = TreeAlpha.importConcise(JsonAsTree.Union, { example: { nested: true }, value: 5 });
|
|
53
|
+
* ```
|
|
54
|
+
* @alpha
|
|
55
|
+
*/
|
|
56
|
+
export const Tree = [() => JsonObject, () => Array, ...Primitive] as const;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* @alpha
|
|
60
|
+
*/
|
|
61
|
+
export type Tree = TreeNodeFromImplicitAllowedTypes<typeof Tree>;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Do not use. Exists only as a workaround for {@link https://github.com/microsoft/TypeScript/issues/59550} and {@link https://github.com/microsoft/rushstack/issues/4429}.
|
|
65
|
+
* @system @alpha
|
|
66
|
+
*/
|
|
67
|
+
export const _APIExtractorWorkaroundObjectBase = sf.mapRecursive("object", Tree);
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Arbitrary JSON object as a {@link TreeNode}.
|
|
71
|
+
* @remarks
|
|
72
|
+
* API of the tree node is more aligned with an es6 map than a JS object using its properties like a map.
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* // Due to TypeScript restrictions on recursive types, the constructor and be somewhat limiting.
|
|
76
|
+
* const fromArray = new JsonAsTreeObject([["a", 0]]);
|
|
77
|
+
* // Using `importConcise` can work better for JSON data:
|
|
78
|
+
* const imported = TreeAlpha.importConcise(JsonAsTree.Object, { a: 0 });
|
|
79
|
+
* // Node API is like a Map:
|
|
80
|
+
* const value = imported.get("a");
|
|
81
|
+
* ```
|
|
82
|
+
* @privateRemarks
|
|
83
|
+
* Due to https://github.com/microsoft/TypeScript/issues/61270 this can't be named `Object`.
|
|
84
|
+
* @sealed @alpha
|
|
85
|
+
*/
|
|
86
|
+
export class JsonObject extends _APIExtractorWorkaroundObjectBase {}
|
|
87
|
+
{
|
|
88
|
+
type _check = ValidateRecursiveSchema<typeof JsonObject>;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* D.ts bug workaround, see {@link FixRecursiveArraySchema}.
|
|
93
|
+
* @privateRemarks
|
|
94
|
+
* In the past this this had to reference the base type (_APIExtractorWorkaroundArrayBase).
|
|
95
|
+
* Testing for this in examples/utils/import-testing now shows it has to reference JsonAsTree.Array instead.
|
|
96
|
+
* @system @alpha
|
|
97
|
+
*/
|
|
98
|
+
export declare type _RecursiveArrayWorkaroundJsonArray = FixRecursiveArraySchema<
|
|
99
|
+
typeof Array
|
|
100
|
+
>;
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Do not use. Exists only as a workaround for {@link https://github.com/microsoft/TypeScript/issues/59550} and {@link https://github.com/microsoft/rushstack/issues/4429}.
|
|
104
|
+
* @system @alpha
|
|
105
|
+
*/
|
|
106
|
+
export const _APIExtractorWorkaroundArrayBase = sf.arrayRecursive("array", Tree);
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Arbitrary JSON array as a {@link TreeNode}.
|
|
110
|
+
* @remarks
|
|
111
|
+
* This can be imported using {@link TreeAlpha.importConcise}.
|
|
112
|
+
* @example
|
|
113
|
+
* ```typescript
|
|
114
|
+
* // Due to TypeScript restrictions on recursive types, the constructor can be somewhat limiting.
|
|
115
|
+
* const usingConstructor = new JsonAsTree.Array(["a", 0, new JsonAsTree.Array([1])]);
|
|
116
|
+
* // Using `importConcise` can work better for JSON data:
|
|
117
|
+
* const imported = TreeAlpha.importConcise(JsonAsTree.Array, ["a", 0, [1]]);
|
|
118
|
+
* // Node API is like an Array:
|
|
119
|
+
* const inner: JsonAsTree.Tree = imported[2];
|
|
120
|
+
* assert(Tree.is(inner, JsonAsTree.Array));
|
|
121
|
+
* const leaf = inner[0];
|
|
122
|
+
* ```
|
|
123
|
+
* @sealed @alpha
|
|
124
|
+
*/
|
|
125
|
+
export class Array extends _APIExtractorWorkaroundArrayBase {}
|
|
126
|
+
{
|
|
127
|
+
type _check = ValidateRecursiveSchema<typeof Array>;
|
|
128
|
+
}
|
|
129
|
+
}
|
package/src/packageVersion.ts
CHANGED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { IFluidHandle } from "@fluidframework/core-interfaces";
|
|
7
|
+
import {
|
|
8
|
+
SchemaFactory,
|
|
9
|
+
type FixRecursiveArraySchema,
|
|
10
|
+
type TreeNodeFromImplicitAllowedTypes,
|
|
11
|
+
type ValidateRecursiveSchema,
|
|
12
|
+
} from "./simple-tree/index.js";
|
|
13
|
+
import type { JsonCompatible } from "./util/index.js";
|
|
14
|
+
|
|
15
|
+
const sf = new SchemaFactory("com.fluidframework.serializable");
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Utilities for storing {@link FluidSerializableAsTree.Data|Fluid Serializable data} in {@link TreeNode}s.
|
|
19
|
+
*
|
|
20
|
+
* Same as {@link JsonAsTree} except allows {@link @fluidframework/core-interfaces#(IFluidHandle:interface)}s.
|
|
21
|
+
* @remarks
|
|
22
|
+
* Schema which replicate the Fluid Serializable data model with {@link TreeNode}s.
|
|
23
|
+
*
|
|
24
|
+
* Fluid Serializable data can be imported from the {@link FluidSerializableAsTree.Data|Fluid Serializable format} into this format using {@link TreeAlpha.importConcise} with the {@link FluidSerializableAsTree.(Tree:variable)} schema.
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
export namespace FluidSerializableAsTree {
|
|
28
|
+
/**
|
|
29
|
+
* Data which can be serialized by Fluid.
|
|
30
|
+
* @remarks
|
|
31
|
+
* Can be encoded as a {@link FluidSerializableAsTree.(Tree:type)} using {@link TreeAlpha.importConcise}.
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
export type Data = JsonCompatible<IFluidHandle>;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* {@link AllowedTypes} for any content allowed in the {@link FluidSerializableAsTree} domain.
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const tree = TreeAlpha.importConcise(FluidSerializableAsTree.Tree, { example: { nested: true }, value: 5 });
|
|
41
|
+
* ```
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
44
|
+
export const Tree = [
|
|
45
|
+
() => FluidSerializableObject,
|
|
46
|
+
() => Array,
|
|
47
|
+
...SchemaFactory.leaves,
|
|
48
|
+
] as const;
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* @internal
|
|
52
|
+
*/
|
|
53
|
+
export type Tree = TreeNodeFromImplicitAllowedTypes<typeof Tree>;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Do not use. Exists only as a workaround for {@link https://github.com/microsoft/TypeScript/issues/59550} and {@link https://github.com/microsoft/rushstack/issues/4429}.
|
|
57
|
+
* @system @internal
|
|
58
|
+
*/
|
|
59
|
+
export const _APIExtractorWorkaroundObjectBase = sf.mapRecursive("object", Tree);
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Arbitrary Fluid Serializable object as a {@link TreeNode}.
|
|
63
|
+
* @remarks
|
|
64
|
+
* API of the tree node is more aligned with an es6 map than a JS object using its properties like a map.
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* // Due to TypeScript restrictions on recursive types, the constructor and be somewhat limiting.
|
|
68
|
+
* const fromArray = new JsonAsTreeObject([["a", 0]]);
|
|
69
|
+
* // Using `importConcise` can work better for Fluid Serializable data:
|
|
70
|
+
* const imported = TreeAlpha.importConcise(FluidSerializableAsTree.Object, { a: 0 });
|
|
71
|
+
* // Node API is like a Map:
|
|
72
|
+
* const value = imported.get("a");
|
|
73
|
+
* ```
|
|
74
|
+
* @privateRemarks
|
|
75
|
+
* Due to https://github.com/microsoft/TypeScript/issues/61270 this can't be named `Object`.
|
|
76
|
+
* @sealed @internal
|
|
77
|
+
*/
|
|
78
|
+
export class FluidSerializableObject extends _APIExtractorWorkaroundObjectBase {}
|
|
79
|
+
{
|
|
80
|
+
type _check = ValidateRecursiveSchema<typeof FluidSerializableObject>;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* D.ts bug workaround, see {@link FixRecursiveArraySchema}.
|
|
85
|
+
* @privateRemarks
|
|
86
|
+
* In the past this this had to reference the base type (_APIExtractorWorkaroundArrayBase).
|
|
87
|
+
* Testing for this in examples/utils/import-testing now shows it has to reference FluidSerializableAsTree.Array instead.
|
|
88
|
+
* @system @internal
|
|
89
|
+
*/
|
|
90
|
+
export declare type _RecursiveArrayWorkaroundJsonArray = FixRecursiveArraySchema<
|
|
91
|
+
typeof Array
|
|
92
|
+
>;
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Do not use. Exists only as a workaround for {@link https://github.com/microsoft/TypeScript/issues/59550} and {@link https://github.com/microsoft/rushstack/issues/4429}.
|
|
96
|
+
* @system @internal
|
|
97
|
+
*/
|
|
98
|
+
export const _APIExtractorWorkaroundArrayBase = sf.arrayRecursive("array", Tree);
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Arbitrary Fluid Serializable array as a {@link TreeNode}.
|
|
102
|
+
* @remarks
|
|
103
|
+
* This can be imported using {@link TreeAlpha.importConcise}.
|
|
104
|
+
* @example
|
|
105
|
+
* ```typescript
|
|
106
|
+
* // Due to TypeScript restrictions on recursive types, the constructor can be somewhat limiting.
|
|
107
|
+
* const usingConstructor = new FluidSerializableAsTree.Array(["a", 0, new FluidSerializableAsTree.Array([1])]);
|
|
108
|
+
* // Using `importConcise` can work better for Fluid Serializable data:
|
|
109
|
+
* const imported = TreeAlpha.importConcise(FluidSerializableAsTree.Array, ["a", 0, [1]]);
|
|
110
|
+
* // Node API is like an Array:
|
|
111
|
+
* const inner: FluidSerializableAsTree.Tree = imported[2];
|
|
112
|
+
* assert(Tree.is(inner, FluidSerializableAsTree.Array));
|
|
113
|
+
* const leaf = inner[0];
|
|
114
|
+
* ```
|
|
115
|
+
* @sealed @internal
|
|
116
|
+
*/
|
|
117
|
+
export class Array extends _APIExtractorWorkaroundArrayBase {}
|
|
118
|
+
{
|
|
119
|
+
type _check = ValidateRecursiveSchema<typeof Array>;
|
|
120
|
+
}
|
|
121
|
+
}
|
package/src/shared-tree/index.ts
CHANGED
|
@@ -198,7 +198,7 @@ export function initialize(checkout: ITreeCheckout, treeContent: TreeStoredConte
|
|
|
198
198
|
break;
|
|
199
199
|
}
|
|
200
200
|
default: {
|
|
201
|
-
fail(
|
|
201
|
+
fail(0xac7 /* unexpected root field kind during initialize */);
|
|
202
202
|
}
|
|
203
203
|
}
|
|
204
204
|
});
|
|
@@ -13,10 +13,10 @@ import type {
|
|
|
13
13
|
IChannelAttributes,
|
|
14
14
|
IFluidDataStoreRuntime,
|
|
15
15
|
IChannelStorageService,
|
|
16
|
-
IChannel,
|
|
17
16
|
} from "@fluidframework/datastore-definitions/internal";
|
|
18
17
|
import {
|
|
19
18
|
SharedObject,
|
|
19
|
+
type IChannelView,
|
|
20
20
|
type IFluidSerializer,
|
|
21
21
|
type ISharedObject,
|
|
22
22
|
} from "@fluidframework/shared-object-base/internal";
|
|
@@ -29,6 +29,7 @@ import type {
|
|
|
29
29
|
ITelemetryContext,
|
|
30
30
|
IExperimentalIncrementalSummaryContext,
|
|
31
31
|
ISummaryTreeWithStats,
|
|
32
|
+
IRuntimeMessageCollection,
|
|
32
33
|
} from "@fluidframework/runtime-definitions/internal";
|
|
33
34
|
import type { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
34
35
|
|
|
@@ -100,13 +101,7 @@ import { SharedTreeChangeFamily } from "./sharedTreeChangeFamily.js";
|
|
|
100
101
|
import type { SharedTreeChange } from "./sharedTreeChangeTypes.js";
|
|
101
102
|
import type { SharedTreeEditBuilder } from "./sharedTreeEditBuilder.js";
|
|
102
103
|
import { type TreeCheckout, type BranchableTree, createTreeCheckout } from "./treeCheckout.js";
|
|
103
|
-
import {
|
|
104
|
-
Breakable,
|
|
105
|
-
breakingClass,
|
|
106
|
-
fail,
|
|
107
|
-
throwIfBroken,
|
|
108
|
-
type WithBreakable,
|
|
109
|
-
} from "../util/index.js";
|
|
104
|
+
import { Breakable, breakingClass, fail, throwIfBroken } from "../util/index.js";
|
|
110
105
|
|
|
111
106
|
/**
|
|
112
107
|
* Copy of data from an {@link ITreePrivate} at some point in time.
|
|
@@ -132,14 +127,6 @@ export interface SharedTreeContentSnapshot {
|
|
|
132
127
|
readonly removed: [string | number | undefined, number, JsonableTree][];
|
|
133
128
|
}
|
|
134
129
|
|
|
135
|
-
/**
|
|
136
|
-
* Information about a Fluid channel.
|
|
137
|
-
* @privateRemarks
|
|
138
|
-
* This is distinct from {@link IChannel} as it omits the APIs used by the runtime to manage the channel and instead only has things which are useful (and safe) to expose to users of the channel.
|
|
139
|
-
* @internal
|
|
140
|
-
*/
|
|
141
|
-
export type IChannelView = Pick<IChannel, "id" | "attributes" | "isAttached">;
|
|
142
|
-
|
|
143
130
|
/**
|
|
144
131
|
* {@link ITree} extended with some non-public APIs.
|
|
145
132
|
* @internal
|
|
@@ -161,6 +148,11 @@ export interface ITreePrivate extends ITreeInternal {
|
|
|
161
148
|
* This does not include everything that is included in a tree summary, since information about how to merge future edits is omitted.
|
|
162
149
|
*/
|
|
163
150
|
contentSnapshot(): SharedTreeContentSnapshot;
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Access to internals for testing.
|
|
154
|
+
*/
|
|
155
|
+
readonly kernel: SharedTreeKernel;
|
|
164
156
|
}
|
|
165
157
|
|
|
166
158
|
/**
|
|
@@ -215,17 +207,10 @@ function getCodecVersions(formatVersion: number): ExplicitCodecVersions {
|
|
|
215
207
|
/**
|
|
216
208
|
* Shared object wrapping {@link SharedTreeKernel}.
|
|
217
209
|
*/
|
|
218
|
-
export class SharedTree extends SharedObject implements ISharedTree
|
|
219
|
-
|
|
210
|
+
export class SharedTree extends SharedObject implements ISharedTree {
|
|
211
|
+
private readonly breaker: Breakable = new Breakable("Shared Tree");
|
|
220
212
|
|
|
221
|
-
public
|
|
222
|
-
return this.kernel.checkout;
|
|
223
|
-
}
|
|
224
|
-
public get storedSchema(): TreeStoredSchemaRepository {
|
|
225
|
-
return this.checkout.storedSchema;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
private readonly kernel: SharedTreeKernel;
|
|
213
|
+
public readonly kernel: SharedTreeKernel;
|
|
229
214
|
|
|
230
215
|
public constructor(
|
|
231
216
|
id: string,
|
|
@@ -250,10 +235,6 @@ export class SharedTree extends SharedObject implements ISharedTree, WithBreakab
|
|
|
250
235
|
);
|
|
251
236
|
}
|
|
252
237
|
|
|
253
|
-
public get editor(): SharedTreeEditBuilder {
|
|
254
|
-
return this.kernel.getEditor();
|
|
255
|
-
}
|
|
256
|
-
|
|
257
238
|
public summarizeCore(
|
|
258
239
|
serializer: IFluidSerializer,
|
|
259
240
|
telemetryContext?: ITelemetryContext,
|
|
@@ -270,7 +251,13 @@ export class SharedTree extends SharedObject implements ISharedTree, WithBreakab
|
|
|
270
251
|
this.kernel.processCore(message, local, localOpMetadata);
|
|
271
252
|
}
|
|
272
253
|
|
|
273
|
-
protected
|
|
254
|
+
protected override processMessagesCore(messagesCollection: IRuntimeMessageCollection): void {
|
|
255
|
+
this.kernel.processMessagesCore(messagesCollection);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
protected onDisconnect(): void {
|
|
259
|
+
this.kernel.onDisconnect();
|
|
260
|
+
}
|
|
274
261
|
|
|
275
262
|
public exportVerbose(): VerboseTree | undefined {
|
|
276
263
|
return this.kernel.exportVerbose();
|
|
@@ -483,7 +470,7 @@ class SharedTreeKernel extends SharedTreeCore<SharedTreeEditBuilder, SharedTreeC
|
|
|
483
470
|
cursor.enterNode(0);
|
|
484
471
|
return verboseFromCursor(cursor, this.storedSchema.nodeSchema);
|
|
485
472
|
} else {
|
|
486
|
-
fail(
|
|
473
|
+
fail(0xac8 /* Invalid document root length */);
|
|
487
474
|
}
|
|
488
475
|
} finally {
|
|
489
476
|
cursor.free();
|
|
@@ -581,6 +568,8 @@ class SharedTreeKernel extends SharedTreeCore<SharedTreeEditBuilder, SharedTreeC
|
|
|
581
568
|
super.submitCommit(commit, schemaAndPolicy, isResubmit),
|
|
582
569
|
);
|
|
583
570
|
}
|
|
571
|
+
|
|
572
|
+
public onDisconnect(): void {}
|
|
584
573
|
}
|
|
585
574
|
|
|
586
575
|
/**
|
|
@@ -607,13 +596,13 @@ export function getBranch<T extends ImplicitFieldSchema | UnsafeUnknownSchema>(
|
|
|
607
596
|
export function getBranch<T extends ImplicitFieldSchema | UnsafeUnknownSchema>(
|
|
608
597
|
treeOrView: ITree | TreeViewAlpha<T>,
|
|
609
598
|
): BranchableTree {
|
|
610
|
-
|
|
611
|
-
treeOrView
|
|
612
|
-
|
|
613
|
-
);
|
|
614
|
-
|
|
599
|
+
if (treeOrView instanceof SchematizingSimpleTreeView) {
|
|
600
|
+
return treeOrView.checkout as unknown as BranchableTree;
|
|
601
|
+
}
|
|
602
|
+
const kernel = (treeOrView as ITree as ITreePrivate).kernel;
|
|
603
|
+
assert(kernel instanceof SharedTreeKernel, 0xb56 /* Invalid ITree */);
|
|
615
604
|
// This cast is safe so long as TreeCheckout supports all the operations on the branch interface.
|
|
616
|
-
return checkout as unknown as BranchableTree;
|
|
605
|
+
return kernel.checkout as unknown as BranchableTree;
|
|
617
606
|
}
|
|
618
607
|
|
|
619
608
|
/**
|
|
@@ -778,7 +767,8 @@ function verboseFromCursor(
|
|
|
778
767
|
schema: ReadonlyMap<TreeNodeSchemaIdentifier, TreeNodeStoredSchema>,
|
|
779
768
|
): VerboseTree {
|
|
780
769
|
const fields = customFromCursorStored(reader, schema, verboseFromCursor);
|
|
781
|
-
const nodeSchema =
|
|
770
|
+
const nodeSchema =
|
|
771
|
+
schema.get(reader.type) ?? fail(0xac9 /* missing schema for type in cursor */);
|
|
782
772
|
if (nodeSchema instanceof LeafNodeStoredSchema) {
|
|
783
773
|
return fields as CustomTreeValue<IFluidHandle>;
|
|
784
774
|
}
|
|
@@ -806,7 +796,7 @@ function exportSimpleFieldSchemaStored(schema: TreeFieldStoredSchema): SimpleFie
|
|
|
806
796
|
assert(schema.types.size === 0, 0xa94 /* invalid forbidden field */);
|
|
807
797
|
break;
|
|
808
798
|
default:
|
|
809
|
-
fail(
|
|
799
|
+
fail(0xaca /* invalid field kind */);
|
|
810
800
|
}
|
|
811
801
|
return { kind, allowedTypes: schema.types };
|
|
812
802
|
}
|
|
@@ -833,5 +823,5 @@ function exportSimpleNodeSchemaStored(schema: TreeNodeStoredSchema): SimpleNodeS
|
|
|
833
823
|
if (schema instanceof LeafNodeStoredSchema) {
|
|
834
824
|
return { kind: NodeKind.Leaf, leafKind: schema.leafValue };
|
|
835
825
|
}
|
|
836
|
-
fail(
|
|
826
|
+
fail(0xacb /* invalid schema kind */);
|
|
837
827
|
}
|
|
@@ -310,7 +310,11 @@ export const TreeAlpha: {
|
|
|
310
310
|
};
|
|
311
311
|
|
|
312
312
|
const cursor = borrowCursorFromTreeNodeOrValue(node);
|
|
313
|
-
return conciseFromCursor(
|
|
313
|
+
return conciseFromCursor(
|
|
314
|
+
cursor,
|
|
315
|
+
tryGetSchema(node) ?? fail(0xacd /* invalid input */),
|
|
316
|
+
config,
|
|
317
|
+
);
|
|
314
318
|
},
|
|
315
319
|
|
|
316
320
|
exportVerbose<T>(
|
|
@@ -325,7 +329,11 @@ export const TreeAlpha: {
|
|
|
325
329
|
};
|
|
326
330
|
|
|
327
331
|
const cursor = borrowCursorFromTreeNodeOrValue(node);
|
|
328
|
-
return verboseFromCursor(
|
|
332
|
+
return verboseFromCursor(
|
|
333
|
+
cursor,
|
|
334
|
+
tryGetSchema(node) ?? fail(0xace /* invalid input */),
|
|
335
|
+
config,
|
|
336
|
+
);
|
|
329
337
|
},
|
|
330
338
|
|
|
331
339
|
exportCompressed(
|
|
@@ -335,7 +343,7 @@ export const TreeAlpha: {
|
|
|
335
343
|
idCompressor?: IIdCompressor;
|
|
336
344
|
},
|
|
337
345
|
): JsonCompatible<IFluidHandle> {
|
|
338
|
-
const schema = tryGetSchema(node) ?? fail(
|
|
346
|
+
const schema = tryGetSchema(node) ?? fail(0xacf /* invalid input */);
|
|
339
347
|
const format = versionToFormat[options.oldestCompatibleClient];
|
|
340
348
|
const codec = makeFieldBatchCodec({ jsonValidator: noopValidator }, format);
|
|
341
349
|
const cursor = borrowFieldCursorFromTreeNodeOrValue(node);
|
|
@@ -375,7 +383,7 @@ function borrowCursorFromTreeNodeOrValue(
|
|
|
375
383
|
): ITreeCursorSynchronous {
|
|
376
384
|
if (isTreeValue(node)) {
|
|
377
385
|
return cursorFromInsertable<UnsafeUnknownSchema>(
|
|
378
|
-
tryGetSchema(node) ?? fail(
|
|
386
|
+
tryGetSchema(node) ?? fail(0xad0 /* missing schema */),
|
|
379
387
|
node,
|
|
380
388
|
);
|
|
381
389
|
}
|
|
@@ -524,7 +524,7 @@ export class TreeCheckout implements ITreeCheckoutFork {
|
|
|
524
524
|
// original (reinstated) schema.
|
|
525
525
|
this.storedSchema.apply(change.innerChange.schema.new);
|
|
526
526
|
} else {
|
|
527
|
-
fail(
|
|
527
|
+
fail(0xad1 /* Unknown Shared Tree change type. */);
|
|
528
528
|
}
|
|
529
529
|
}
|
|
530
530
|
}
|