@fluidframework/tree 2.1.1 → 2.2.1
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.customBenchmarks.cjs +33 -0
- package/CHANGELOG.md +297 -0
- package/README.md +34 -4
- package/api-extractor.json +17 -0
- package/api-report/tree.alpha.api.md +119 -25
- package/api-report/tree.beta.api.md +51 -25
- package/api-report/tree.public.api.md +51 -25
- package/dist/beta.d.ts +3 -1
- package/dist/codec/discriminatedUnions.d.ts +11 -5
- package/dist/codec/discriminatedUnions.d.ts.map +1 -1
- package/dist/codec/discriminatedUnions.js.map +1 -1
- package/dist/codec/index.d.ts +1 -1
- package/dist/codec/index.d.ts.map +1 -1
- package/dist/codec/index.js.map +1 -1
- package/dist/core/forest/editableForest.d.ts +1 -5
- package/dist/core/forest/editableForest.d.ts.map +1 -1
- package/dist/core/forest/editableForest.js.map +1 -1
- package/dist/core/forest/forest.d.ts +0 -6
- package/dist/core/forest/forest.d.ts.map +1 -1
- package/dist/core/forest/forest.js +0 -2
- package/dist/core/forest/forest.js.map +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -4
- package/dist/core/index.js.map +1 -1
- package/dist/core/rebase/changeRebaser.d.ts +0 -4
- package/dist/core/rebase/changeRebaser.d.ts.map +1 -1
- package/dist/core/rebase/changeRebaser.js.map +1 -1
- package/dist/core/rebase/index.d.ts +1 -1
- package/dist/core/rebase/index.d.ts.map +1 -1
- package/dist/core/rebase/index.js +1 -3
- package/dist/core/rebase/index.js.map +1 -1
- package/dist/core/rebase/types.d.ts +1 -8
- package/dist/core/rebase/types.d.ts.map +1 -1
- package/dist/core/rebase/types.js +1 -9
- package/dist/core/rebase/types.js.map +1 -1
- package/dist/core/rebase/utils.d.ts +0 -1
- package/dist/core/rebase/utils.d.ts.map +1 -1
- package/dist/core/rebase/utils.js +12 -7
- package/dist/core/rebase/utils.js.map +1 -1
- package/dist/core/schema-stored/multiplicity.d.ts +0 -1
- package/dist/core/schema-stored/multiplicity.d.ts.map +1 -1
- package/dist/core/schema-stored/multiplicity.js +0 -1
- package/dist/core/schema-stored/multiplicity.js.map +1 -1
- package/dist/core/schema-stored/schema.d.ts +0 -7
- package/dist/core/schema-stored/schema.d.ts.map +1 -1
- package/dist/core/schema-stored/schema.js +0 -4
- package/dist/core/schema-stored/schema.js.map +1 -1
- package/dist/core/schema-stored/storedSchemaRepository.d.ts +0 -3
- package/dist/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
- package/dist/core/schema-stored/storedSchemaRepository.js.map +1 -1
- package/dist/core/schema-view/view.d.ts +0 -3
- package/dist/core/schema-view/view.d.ts.map +1 -1
- package/dist/core/schema-view/view.js +0 -1
- package/dist/core/schema-view/view.js.map +1 -1
- package/dist/core/tree/anchorSet.d.ts +0 -10
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +1 -4
- package/dist/core/tree/anchorSet.js.map +1 -1
- package/dist/core/tree/cursor.d.ts +1 -6
- package/dist/core/tree/cursor.d.ts.map +1 -1
- package/dist/core/tree/cursor.js +0 -2
- package/dist/core/tree/cursor.js.map +1 -1
- package/dist/core/tree/delta.d.ts +0 -11
- package/dist/core/tree/delta.d.ts.map +1 -1
- package/dist/core/tree/delta.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexCodec.js +3 -2
- package/dist/core/tree/detachedFieldIndexCodec.js.map +1 -1
- package/dist/core/tree/detachedFieldIndexTypes.d.ts +0 -1
- package/dist/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
- package/dist/core/tree/detachedFieldIndexTypes.js.map +1 -1
- package/dist/core/tree/index.d.ts +1 -1
- package/dist/core/tree/index.d.ts.map +1 -1
- package/dist/core/tree/index.js +3 -1
- package/dist/core/tree/index.js.map +1 -1
- package/dist/core/tree/mapTree.d.ts +20 -4
- package/dist/core/tree/mapTree.d.ts.map +1 -1
- package/dist/core/tree/mapTree.js +29 -0
- package/dist/core/tree/mapTree.js.map +1 -1
- package/dist/core/tree/pathTree.d.ts +0 -11
- package/dist/core/tree/pathTree.d.ts.map +1 -1
- package/dist/core/tree/pathTree.js.map +1 -1
- package/dist/core/tree/treeTextFormat.d.ts.map +1 -1
- package/dist/core/tree/treeTextFormat.js +3 -2
- package/dist/core/tree/treeTextFormat.js.map +1 -1
- package/dist/core/tree/types.d.ts +0 -11
- package/dist/core/tree/types.d.ts.map +1 -1
- package/dist/core/tree/types.js +0 -4
- package/dist/core/tree/types.js.map +1 -1
- package/dist/core/tree/visitDelta.d.ts +0 -1
- package/dist/core/tree/visitDelta.d.ts.map +1 -1
- package/dist/core/tree/visitDelta.js +2 -2
- package/dist/core/tree/visitDelta.js.map +1 -1
- package/dist/core/tree/visitPath.d.ts +0 -2
- package/dist/core/tree/visitPath.d.ts.map +1 -1
- package/dist/core/tree/visitPath.js.map +1 -1
- package/dist/core/tree/visitorUtils.d.ts +0 -1
- package/dist/core/tree/visitorUtils.d.ts.map +1 -1
- package/dist/core/tree/visitorUtils.js.map +1 -1
- package/dist/domains/index.d.ts +1 -1
- package/dist/domains/index.d.ts.map +1 -1
- package/dist/domains/index.js +2 -1
- package/dist/domains/index.js.map +1 -1
- package/dist/domains/json/index.d.ts +1 -1
- package/dist/domains/json/index.d.ts.map +1 -1
- package/dist/domains/json/index.js +2 -1
- package/dist/domains/json/index.js.map +1 -1
- package/dist/domains/json/jsonCursor.d.ts +36 -2
- package/dist/domains/json/jsonCursor.d.ts.map +1 -1
- package/dist/domains/json/jsonCursor.js +76 -5
- package/dist/domains/json/jsonCursor.js.map +1 -1
- package/dist/domains/json/jsonDomainSchema.d.ts +13 -3
- package/dist/domains/json/jsonDomainSchema.d.ts.map +1 -1
- package/dist/domains/json/jsonDomainSchema.js +12 -4
- package/dist/domains/json/jsonDomainSchema.js.map +1 -1
- package/dist/domains/leafDomain.d.ts +0 -1
- package/dist/domains/leafDomain.d.ts.map +1 -1
- package/dist/domains/leafDomain.js +0 -1
- package/dist/domains/leafDomain.js.map +1 -1
- package/dist/domains/schemaBuilder.d.ts +1 -7
- package/dist/domains/schemaBuilder.d.ts.map +1 -1
- package/dist/domains/schemaBuilder.js +0 -10
- package/dist/domains/schemaBuilder.js.map +1 -1
- package/dist/events/events.d.ts +0 -4
- package/dist/events/events.d.ts.map +1 -1
- package/dist/events/events.js +0 -1
- package/dist/events/events.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/basicChunk.js +8 -3
- package/dist/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunk.d.ts +1 -1
- package/dist/feature-libraries/chunked-forest/chunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunk.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkTree.js +3 -3
- package/dist/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/chunkedForest.js +7 -5
- package/dist/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js +8 -5
- package/dist/feature-libraries/chunked-forest/codec/chunkDecoding.js.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.d.ts.map +1 -1
- package/dist/feature-libraries/chunked-forest/uniformChunk.js +5 -3
- package/dist/feature-libraries/chunked-forest/uniformChunk.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts +12 -24
- package/dist/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js +9 -19
- package/dist/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts +0 -6
- package/dist/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js +11 -1
- package/dist/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/dist/feature-libraries/default-schema/defaultSchema.d.ts +0 -1
- package/dist/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/defaultSchema.js +0 -1
- package/dist/feature-libraries/default-schema/defaultSchema.js.map +1 -1
- package/dist/feature-libraries/default-schema/index.d.ts +1 -1
- package/dist/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/index.js +2 -1
- package/dist/feature-libraries/default-schema/index.js.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.d.ts +6 -0
- package/dist/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/dist/feature-libraries/default-schema/schemaChecker.js +6 -0
- package/dist/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/dist/feature-libraries/editableTreeBinder.d.ts +0 -67
- package/dist/feature-libraries/editableTreeBinder.d.ts.map +1 -1
- package/dist/feature-libraries/editableTreeBinder.js +5 -24
- package/dist/feature-libraries/editableTreeBinder.js.map +1 -1
- package/dist/feature-libraries/fieldGenerator.d.ts +0 -3
- package/dist/feature-libraries/fieldGenerator.d.ts.map +1 -1
- package/dist/feature-libraries/fieldGenerator.js +0 -1
- package/dist/feature-libraries/fieldGenerator.js.map +1 -1
- package/dist/feature-libraries/flex-map-tree/index.d.ts +1 -1
- package/dist/feature-libraries/flex-map-tree/index.d.ts.map +1 -1
- package/dist/feature-libraries/flex-map-tree/index.js +2 -2
- package/dist/feature-libraries/flex-map-tree/index.js.map +1 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts +57 -49
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.js +171 -168
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
- package/dist/feature-libraries/flex-tree/context.d.ts +0 -1
- package/dist/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/context.js.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts +17 -282
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js +0 -4
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/dist/feature-libraries/flex-tree/index.d.ts +1 -1
- package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/index.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts +9 -26
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +26 -99
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts +2 -10
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.js +3 -42
- package/dist/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/dist/feature-libraries/flex-tree/treeEvents.d.ts +0 -2
- package/dist/feature-libraries/flex-tree/treeEvents.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/treeEvents.js.map +1 -1
- package/dist/feature-libraries/flex-tree/utilities.d.ts +2 -1
- package/dist/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/utilities.js +4 -0
- package/dist/feature-libraries/flex-tree/utilities.js.map +1 -1
- package/dist/feature-libraries/forest-summary/codec.js +2 -2
- package/dist/feature-libraries/forest-summary/codec.js.map +1 -1
- package/dist/feature-libraries/index.d.ts +6 -8
- package/dist/feature-libraries/index.d.ts.map +1 -1
- package/dist/feature-libraries/index.js +7 -18
- package/dist/feature-libraries/index.js.map +1 -1
- package/dist/feature-libraries/mapTreeCursor.d.ts +6 -2
- package/dist/feature-libraries/mapTreeCursor.d.ts.map +1 -1
- package/dist/feature-libraries/mapTreeCursor.js +9 -1
- package/dist/feature-libraries/mapTreeCursor.js.map +1 -1
- package/dist/feature-libraries/memoizedIdRangeAllocator.d.ts +0 -4
- package/dist/feature-libraries/memoizedIdRangeAllocator.d.ts.map +1 -1
- package/dist/feature-libraries/memoizedIdRangeAllocator.js +0 -1
- package/dist/feature-libraries/memoizedIdRangeAllocator.js.map +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts +0 -2
- package/dist/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.js +0 -1
- package/dist/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/dist/feature-libraries/modular-schema/discrepancies.d.ts +18 -0
- package/dist/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/discrepancies.js +105 -2
- package/dist/feature-libraries/modular-schema/discrepancies.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts +0 -8
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.js +0 -1
- package/dist/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldKind.d.ts +1 -3
- package/dist/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/fieldKind.js +1 -2
- package/dist/feature-libraries/modular-schema/fieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts +1 -2
- package/dist/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKind.js +57 -85
- package/dist/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js +5 -8
- package/dist/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKindTypes.d.ts +3 -14
- package/dist/feature-libraries/modular-schema/genericFieldKindTypes.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/genericFieldKindTypes.js +6 -0
- package/dist/feature-libraries/modular-schema/genericFieldKindTypes.js.map +1 -1
- package/dist/feature-libraries/modular-schema/index.d.ts +2 -2
- package/dist/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/index.js +2 -1
- package/dist/feature-libraries/modular-schema/index.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js +39 -22
- package/dist/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts +9 -8
- package/dist/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js +192 -228
- package/dist/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts +8 -14
- package/dist/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/dist/feature-libraries/node-key/nodeKey.d.ts +0 -4
- package/dist/feature-libraries/node-key/nodeKey.d.ts.map +1 -1
- package/dist/feature-libraries/node-key/nodeKey.js +0 -2
- package/dist/feature-libraries/node-key/nodeKey.js.map +1 -1
- package/dist/feature-libraries/node-key/nodeKeyManager.d.ts +0 -1
- package/dist/feature-libraries/node-key/nodeKeyManager.d.ts.map +1 -1
- package/dist/feature-libraries/node-key/nodeKeyManager.js.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/dist/feature-libraries/object-forest/objectForest.js +1 -10
- package/dist/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts +6 -6
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -1
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +7 -7
- package/dist/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -1
- package/dist/feature-libraries/schemaBuilderBase.d.ts +2 -28
- package/dist/feature-libraries/schemaBuilderBase.d.ts.map +1 -1
- package/dist/feature-libraries/schemaBuilderBase.js +1 -27
- package/dist/feature-libraries/schemaBuilderBase.js.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/compose.js +24 -21
- package/dist/feature-libraries/sequence-field/compose.js.map +1 -1
- package/dist/feature-libraries/sequence-field/formatV2.d.ts +3 -3
- package/dist/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/formatV2.js +7 -6
- package/dist/feature-libraries/sequence-field/formatV2.js.map +1 -1
- package/dist/feature-libraries/sequence-field/formatV3.d.ts +195 -0
- package/dist/feature-libraries/sequence-field/formatV3.d.ts.map +1 -0
- package/dist/feature-libraries/sequence-field/formatV3.js +23 -0
- package/dist/feature-libraries/sequence-field/formatV3.js.map +1 -0
- package/dist/feature-libraries/sequence-field/helperTypes.d.ts +11 -0
- package/dist/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/helperTypes.js.map +1 -1
- package/dist/feature-libraries/sequence-field/index.d.ts +1 -1
- package/dist/feature-libraries/sequence-field/index.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/index.js.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/invert.js +21 -13
- package/dist/feature-libraries/sequence-field/invert.js.map +1 -1
- package/dist/feature-libraries/sequence-field/markQueue.js +1 -1
- package/dist/feature-libraries/sequence-field/markQueue.js.map +1 -1
- package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts +2 -2
- package/dist/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
- package/dist/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/rebase.js +24 -6
- package/dist/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/dist/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/replaceRevisions.js +16 -3
- package/dist/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js +38 -4
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +4 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js +54 -9
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts +11 -0
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -0
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js +85 -0
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -0
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js +2 -0
- package/dist/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js +4 -1
- package/dist/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/dist/feature-libraries/sequence-field/types.d.ts +23 -4
- package/dist/feature-libraries/sequence-field/types.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/types.js.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.d.ts +5 -4
- package/dist/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/dist/feature-libraries/sequence-field/utils.js +70 -42
- package/dist/feature-libraries/sequence-field/utils.js.map +1 -1
- package/dist/feature-libraries/storedToViewSchema.d.ts +0 -1
- package/dist/feature-libraries/storedToViewSchema.d.ts.map +1 -1
- package/dist/feature-libraries/storedToViewSchema.js +0 -1
- package/dist/feature-libraries/storedToViewSchema.js.map +1 -1
- package/dist/feature-libraries/treeCursorUtils.d.ts +0 -6
- package/dist/feature-libraries/treeCursorUtils.d.ts.map +1 -1
- package/dist/feature-libraries/treeCursorUtils.js +8 -6
- package/dist/feature-libraries/treeCursorUtils.js.map +1 -1
- package/dist/feature-libraries/treeTextCursor.d.ts +0 -2
- package/dist/feature-libraries/treeTextCursor.d.ts.map +1 -1
- package/dist/feature-libraries/treeTextCursor.js +0 -2
- package/dist/feature-libraries/treeTextCursor.js.map +1 -1
- package/dist/feature-libraries/typed-schema/flexList.d.ts +0 -3
- package/dist/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/flexList.js.map +1 -1
- package/dist/feature-libraries/typed-schema/index.d.ts +1 -1
- package/dist/feature-libraries/typed-schema/index.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/index.js +1 -3
- package/dist/feature-libraries/typed-schema/index.js.map +1 -1
- package/dist/feature-libraries/typed-schema/schemaCollection.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/schemaCollection.js +0 -4
- package/dist/feature-libraries/typed-schema/schemaCollection.js.map +1 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts +2 -41
- package/dist/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js +1 -40
- package/dist/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
- package/dist/feature-libraries/typed-schema/view.d.ts +0 -1
- package/dist/feature-libraries/typed-schema/view.d.ts.map +1 -1
- package/dist/feature-libraries/typed-schema/view.js.map +1 -1
- package/dist/index.d.ts +8 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -90
- package/dist/index.js.map +1 -1
- package/dist/internalTypes.d.ts +1 -1
- package/dist/internalTypes.d.ts.map +1 -1
- package/dist/internalTypes.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +3 -1
- package/dist/shared-tree/schematizeTree.d.ts +2 -11
- package/dist/shared-tree/schematizeTree.d.ts.map +1 -1
- package/dist/shared-tree/schematizeTree.js +13 -2
- package/dist/shared-tree/schematizeTree.js.map +1 -1
- package/dist/shared-tree/schematizingTreeView.d.ts +4 -4
- package/dist/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/dist/shared-tree/schematizingTreeView.js +2 -2
- package/dist/shared-tree/schematizingTreeView.js.map +1 -1
- package/dist/shared-tree/sharedTree.d.ts +4 -17
- package/dist/shared-tree/sharedTree.d.ts.map +1 -1
- package/dist/shared-tree/sharedTree.js +4 -8
- package/dist/shared-tree/sharedTree.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeChangeCodecs.js +4 -0
- package/dist/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/dist/shared-tree/sharedTreeChangeFamily.js +2 -2
- package/dist/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts +0 -2
- package/dist/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/dist/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/dist/shared-tree/treeApi.js +2 -2
- package/dist/shared-tree/treeApi.js.map +1 -1
- package/dist/shared-tree/treeCheckout.d.ts +0 -5
- package/dist/shared-tree/treeCheckout.d.ts.map +1 -1
- package/dist/shared-tree/treeCheckout.js +5 -3
- package/dist/shared-tree/treeCheckout.js.map +1 -1
- package/dist/shared-tree/treeView.d.ts +3 -6
- package/dist/shared-tree/treeView.d.ts.map +1 -1
- package/dist/shared-tree/treeView.js.map +1 -1
- package/dist/shared-tree-core/branch.d.ts.map +1 -1
- package/dist/shared-tree-core/branch.js +11 -6
- package/dist/shared-tree-core/branch.js.map +1 -1
- package/dist/shared-tree-core/defaultResubmitMachine.js +3 -3
- package/dist/shared-tree-core/defaultResubmitMachine.js.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerCodecs.js +1 -0
- package/dist/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/dist/shared-tree-core/editManagerFormat.d.ts +2 -2
- package/dist/shared-tree-core/editManagerFormat.d.ts.map +1 -1
- package/dist/shared-tree-core/editManagerFormat.js +6 -1
- package/dist/shared-tree-core/editManagerFormat.js.map +1 -1
- package/dist/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/dist/shared-tree-core/messageCodecs.js +1 -0
- package/dist/shared-tree-core/messageCodecs.js.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/dist/shared-tree-core/sharedTreeCore.js +3 -1
- package/dist/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/dist/simple-tree/api/create.d.ts +54 -0
- package/dist/simple-tree/api/create.d.ts.map +1 -0
- package/dist/simple-tree/api/create.js +99 -0
- package/dist/simple-tree/api/create.js.map +1 -0
- package/dist/simple-tree/api/index.d.ts +12 -0
- package/dist/simple-tree/api/index.d.ts.map +1 -0
- package/dist/simple-tree/api/index.js +28 -0
- package/dist/simple-tree/api/index.js.map +1 -0
- package/{lib/simple-tree → dist/simple-tree/api}/schemaCreationUtilities.d.ts +7 -4
- package/dist/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -0
- package/dist/simple-tree/{schemaCreationUtilities.js → api/schemaCreationUtilities.js} +1 -1
- package/dist/simple-tree/api/schemaCreationUtilities.js.map +1 -0
- package/dist/simple-tree/{schemaFactory.d.ts → api/schemaFactory.d.ts} +15 -14
- package/dist/simple-tree/api/schemaFactory.d.ts.map +1 -0
- package/dist/simple-tree/{schemaFactory.js → api/schemaFactory.js} +10 -9
- package/dist/simple-tree/api/schemaFactory.js.map +1 -0
- package/{lib/simple-tree → dist/simple-tree/api}/schemaFactoryRecursive.d.ts +40 -7
- package/dist/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -0
- package/dist/simple-tree/{schemaFactoryRecursive.js → api/schemaFactoryRecursive.js} +1 -1
- package/dist/simple-tree/api/schemaFactoryRecursive.js.map +1 -0
- package/dist/simple-tree/api/testRecursiveDomain.d.ts +62 -0
- package/dist/simple-tree/api/testRecursiveDomain.d.ts.map +1 -0
- package/dist/simple-tree/api/testRecursiveDomain.js.map +1 -0
- package/{lib/simple-tree → dist/simple-tree/api}/tree.d.ts +111 -20
- package/dist/simple-tree/api/tree.d.ts.map +1 -0
- package/dist/simple-tree/api/tree.js +173 -0
- package/dist/simple-tree/api/tree.js.map +1 -0
- package/dist/simple-tree/{treeNodeApi.d.ts → api/treeNodeApi.d.ts} +6 -5
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -0
- package/dist/simple-tree/{treeNodeApi.js → api/treeNodeApi.js} +28 -20
- package/dist/simple-tree/api/treeNodeApi.js.map +1 -0
- package/dist/simple-tree/api/verboseTree.d.ts +136 -0
- package/dist/simple-tree/api/verboseTree.d.ts.map +1 -0
- package/dist/simple-tree/api/verboseTree.js +220 -0
- package/dist/simple-tree/api/verboseTree.js.map +1 -0
- package/dist/simple-tree/arrayNode.d.ts +3 -3
- package/dist/simple-tree/arrayNode.d.ts.map +1 -1
- package/dist/simple-tree/arrayNode.js +70 -69
- package/dist/simple-tree/arrayNode.js.map +1 -1
- package/dist/simple-tree/core/index.d.ts +10 -0
- package/dist/simple-tree/core/index.d.ts.map +1 -0
- package/dist/simple-tree/core/index.js +27 -0
- package/dist/simple-tree/core/index.js.map +1 -0
- package/{lib/simple-tree → dist/simple-tree/core}/schemaCaching.d.ts +2 -9
- package/dist/simple-tree/core/schemaCaching.d.ts.map +1 -0
- package/dist/simple-tree/{schemaCaching.js → core/schemaCaching.js} +2 -23
- package/dist/simple-tree/core/schemaCaching.js.map +1 -0
- package/dist/simple-tree/core/treeNodeKernel.d.ts +57 -0
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -0
- package/dist/simple-tree/{treeNodeKernel.js → core/treeNodeKernel.js} +49 -4
- package/dist/simple-tree/core/treeNodeKernel.js.map +1 -0
- package/dist/simple-tree/core/treeNodeSchema.d.ts +149 -0
- package/dist/simple-tree/core/treeNodeSchema.d.ts.map +1 -0
- package/dist/simple-tree/core/treeNodeSchema.js +35 -0
- package/dist/simple-tree/core/treeNodeSchema.js.map +1 -0
- package/dist/simple-tree/{types.d.ts → core/types.d.ts} +23 -70
- package/dist/simple-tree/core/types.d.ts.map +1 -0
- package/dist/simple-tree/core/types.js +117 -0
- package/dist/simple-tree/core/types.js.map +1 -0
- package/dist/simple-tree/core/withType.d.ts +82 -0
- package/dist/simple-tree/core/withType.d.ts.map +1 -0
- package/dist/simple-tree/core/withType.js +39 -0
- package/dist/simple-tree/core/withType.js.map +1 -0
- package/dist/simple-tree/getJsonSchema.d.ts +55 -0
- package/dist/simple-tree/getJsonSchema.d.ts.map +1 -0
- package/dist/simple-tree/getJsonSchema.js +69 -0
- package/dist/simple-tree/getJsonSchema.js.map +1 -0
- package/dist/simple-tree/getSimpleFieldSchema.d.ts +14 -0
- package/dist/simple-tree/getSimpleFieldSchema.d.ts.map +1 -0
- package/dist/simple-tree/getSimpleFieldSchema.js +29 -0
- package/dist/simple-tree/getSimpleFieldSchema.js.map +1 -0
- package/dist/simple-tree/getSimpleSchema.d.ts +58 -0
- package/dist/simple-tree/getSimpleSchema.d.ts.map +1 -0
- package/dist/simple-tree/getSimpleSchema.js +68 -0
- package/dist/simple-tree/getSimpleSchema.js.map +1 -0
- package/dist/simple-tree/index.d.ts +12 -13
- package/dist/simple-tree/index.d.ts.map +1 -1
- package/dist/simple-tree/index.js +26 -23
- package/dist/simple-tree/index.js.map +1 -1
- package/dist/simple-tree/jsonSchema.d.ts +206 -0
- package/dist/simple-tree/jsonSchema.d.ts.map +1 -0
- package/dist/{feature-libraries/schema-aware/index.js → simple-tree/jsonSchema.js} +1 -1
- package/dist/simple-tree/jsonSchema.js.map +1 -0
- package/dist/simple-tree/leafNodeSchema.d.ts +1 -1
- package/dist/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/dist/simple-tree/leafNodeSchema.js +3 -4
- package/dist/simple-tree/leafNodeSchema.js.map +1 -1
- package/dist/simple-tree/mapNode.d.ts +9 -3
- package/dist/simple-tree/mapNode.d.ts.map +1 -1
- package/dist/simple-tree/mapNode.js +33 -35
- package/dist/simple-tree/mapNode.js.map +1 -1
- package/dist/simple-tree/objectNode.d.ts +18 -16
- package/dist/simple-tree/objectNode.d.ts.map +1 -1
- package/dist/simple-tree/objectNode.js +43 -44
- package/dist/simple-tree/objectNode.js.map +1 -1
- package/dist/simple-tree/objectNodeTypes.d.ts +38 -0
- package/dist/simple-tree/objectNodeTypes.d.ts.map +1 -0
- package/dist/simple-tree/objectNodeTypes.js +19 -0
- package/dist/simple-tree/objectNodeTypes.js.map +1 -0
- package/dist/simple-tree/proxies.d.ts +6 -25
- package/dist/simple-tree/proxies.d.ts.map +1 -1
- package/dist/simple-tree/proxies.js +50 -63
- package/dist/simple-tree/proxies.js.map +1 -1
- package/dist/simple-tree/proxyBinding.d.ts +45 -22
- package/dist/simple-tree/proxyBinding.d.ts.map +1 -1
- package/dist/simple-tree/proxyBinding.js +94 -59
- package/dist/simple-tree/proxyBinding.js.map +1 -1
- package/dist/simple-tree/schemaTypes.d.ts +10 -159
- package/dist/simple-tree/schemaTypes.d.ts.map +1 -1
- package/dist/simple-tree/schemaTypes.js +11 -42
- package/dist/simple-tree/schemaTypes.js.map +1 -1
- package/dist/simple-tree/simpleSchema.d.ts +124 -0
- package/dist/simple-tree/simpleSchema.d.ts.map +1 -0
- package/dist/{feature-libraries/schema-aware/schemaAware.js → simple-tree/simpleSchema.js} +1 -1
- package/dist/simple-tree/simpleSchema.js.map +1 -0
- package/dist/simple-tree/simpleSchemaToJsonSchema.d.ts +12 -0
- package/dist/simple-tree/simpleSchemaToJsonSchema.d.ts.map +1 -0
- package/dist/simple-tree/simpleSchemaToJsonSchema.js +146 -0
- package/dist/simple-tree/simpleSchemaToJsonSchema.js.map +1 -0
- package/dist/simple-tree/toFlexSchema.d.ts +4 -12
- package/dist/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/dist/simple-tree/toFlexSchema.js +42 -52
- package/dist/simple-tree/toFlexSchema.js.map +1 -1
- package/dist/simple-tree/toMapTree.d.ts +39 -39
- package/dist/simple-tree/toMapTree.d.ts.map +1 -1
- package/dist/simple-tree/toMapTree.js +227 -171
- package/dist/simple-tree/toMapTree.js.map +1 -1
- package/dist/simple-tree/treeNodeValid.d.ts +74 -0
- package/dist/simple-tree/treeNodeValid.d.ts.map +1 -0
- package/dist/simple-tree/{types.js → treeNodeValid.js} +18 -111
- package/dist/simple-tree/treeNodeValid.js.map +1 -0
- package/dist/simple-tree/typesUnsafe.d.ts +35 -4
- package/dist/simple-tree/typesUnsafe.d.ts.map +1 -1
- package/dist/simple-tree/typesUnsafe.js.map +1 -1
- package/dist/simple-tree/viewSchemaToSimpleSchema.d.ts +11 -0
- package/dist/simple-tree/viewSchemaToSimpleSchema.d.ts.map +1 -0
- package/dist/simple-tree/viewSchemaToSimpleSchema.js +171 -0
- package/dist/simple-tree/viewSchemaToSimpleSchema.js.map +1 -0
- package/dist/util/brand.d.ts +0 -3
- package/dist/util/brand.d.ts.map +1 -1
- package/dist/util/brand.js +1 -2
- package/dist/util/brand.js.map +1 -1
- package/dist/util/brandedMap.d.ts +0 -5
- package/dist/util/brandedMap.d.ts.map +1 -1
- package/dist/util/brandedMap.js +0 -1
- package/dist/util/brandedMap.js.map +1 -1
- package/dist/util/idAllocator.d.ts +0 -2
- package/dist/util/idAllocator.d.ts.map +1 -1
- package/dist/util/idAllocator.js +0 -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 +4 -2
- package/dist/util/index.js.map +1 -1
- package/dist/util/nestedMap.d.ts +5 -19
- package/dist/util/nestedMap.d.ts.map +1 -1
- package/dist/util/nestedMap.js +17 -17
- package/dist/util/nestedMap.js.map +1 -1
- package/dist/util/opaque.d.ts +0 -4
- package/dist/util/opaque.d.ts.map +1 -1
- package/dist/util/opaque.js +0 -2
- package/dist/util/opaque.js.map +1 -1
- package/dist/util/rangeMap.d.ts +0 -2
- package/dist/util/rangeMap.d.ts.map +1 -1
- package/dist/util/rangeMap.js +4 -3
- package/dist/util/rangeMap.js.map +1 -1
- package/dist/util/transactionResult.d.ts +0 -1
- package/dist/util/transactionResult.d.ts.map +1 -1
- package/dist/util/transactionResult.js +0 -1
- package/dist/util/transactionResult.js.map +1 -1
- package/dist/util/typeCheck.d.ts +2 -20
- package/dist/util/typeCheck.d.ts.map +1 -1
- package/dist/util/typeCheck.js.map +1 -1
- package/dist/util/typeCheckTests.d.ts +4 -4
- package/dist/util/typeCheckTests.d.ts.map +1 -1
- package/dist/util/typeCheckTests.js.map +1 -1
- package/dist/util/typeUtils.d.ts +0 -7
- package/dist/util/typeUtils.d.ts.map +1 -1
- package/dist/util/typeUtils.js.map +1 -1
- package/dist/util/utils.d.ts +6 -8
- package/dist/util/utils.d.ts.map +1 -1
- package/dist/util/utils.js +14 -5
- package/dist/util/utils.js.map +1 -1
- package/lib/beta.d.ts +3 -1
- package/lib/codec/discriminatedUnions.d.ts +11 -5
- package/lib/codec/discriminatedUnions.d.ts.map +1 -1
- package/lib/codec/discriminatedUnions.js.map +1 -1
- package/lib/codec/index.d.ts +1 -1
- package/lib/codec/index.d.ts.map +1 -1
- package/lib/codec/index.js +1 -1
- package/lib/codec/index.js.map +1 -1
- package/lib/core/forest/editableForest.d.ts +1 -5
- package/lib/core/forest/editableForest.d.ts.map +1 -1
- package/lib/core/forest/editableForest.js.map +1 -1
- package/lib/core/forest/forest.d.ts +0 -6
- package/lib/core/forest/forest.d.ts.map +1 -1
- package/lib/core/forest/forest.js +0 -2
- package/lib/core/forest/forest.js.map +1 -1
- package/lib/core/index.d.ts +2 -2
- package/lib/core/index.d.ts.map +1 -1
- package/lib/core/index.js +2 -2
- package/lib/core/index.js.map +1 -1
- package/lib/core/rebase/changeRebaser.d.ts +0 -4
- package/lib/core/rebase/changeRebaser.d.ts.map +1 -1
- package/lib/core/rebase/changeRebaser.js.map +1 -1
- package/lib/core/rebase/index.d.ts +1 -1
- package/lib/core/rebase/index.d.ts.map +1 -1
- package/lib/core/rebase/index.js +1 -1
- package/lib/core/rebase/index.js.map +1 -1
- package/lib/core/rebase/types.d.ts +1 -8
- package/lib/core/rebase/types.d.ts.map +1 -1
- package/lib/core/rebase/types.js +1 -7
- package/lib/core/rebase/types.js.map +1 -1
- package/lib/core/rebase/utils.d.ts +0 -1
- package/lib/core/rebase/utils.d.ts.map +1 -1
- package/lib/core/rebase/utils.js +13 -8
- package/lib/core/rebase/utils.js.map +1 -1
- package/lib/core/schema-stored/multiplicity.d.ts +0 -1
- package/lib/core/schema-stored/multiplicity.d.ts.map +1 -1
- package/lib/core/schema-stored/multiplicity.js +0 -1
- package/lib/core/schema-stored/multiplicity.js.map +1 -1
- package/lib/core/schema-stored/schema.d.ts +0 -7
- package/lib/core/schema-stored/schema.d.ts.map +1 -1
- package/lib/core/schema-stored/schema.js +0 -4
- package/lib/core/schema-stored/schema.js.map +1 -1
- package/lib/core/schema-stored/storedSchemaRepository.d.ts +0 -3
- package/lib/core/schema-stored/storedSchemaRepository.d.ts.map +1 -1
- package/lib/core/schema-stored/storedSchemaRepository.js.map +1 -1
- package/lib/core/schema-view/view.d.ts +0 -3
- package/lib/core/schema-view/view.d.ts.map +1 -1
- package/lib/core/schema-view/view.js +0 -1
- package/lib/core/schema-view/view.js.map +1 -1
- package/lib/core/tree/anchorSet.d.ts +0 -10
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +1 -4
- package/lib/core/tree/anchorSet.js.map +1 -1
- package/lib/core/tree/cursor.d.ts +1 -6
- package/lib/core/tree/cursor.d.ts.map +1 -1
- package/lib/core/tree/cursor.js +0 -2
- package/lib/core/tree/cursor.js.map +1 -1
- package/lib/core/tree/delta.d.ts +0 -11
- package/lib/core/tree/delta.d.ts.map +1 -1
- package/lib/core/tree/delta.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodec.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexCodec.js +4 -3
- package/lib/core/tree/detachedFieldIndexCodec.js.map +1 -1
- package/lib/core/tree/detachedFieldIndexTypes.d.ts +0 -1
- package/lib/core/tree/detachedFieldIndexTypes.d.ts.map +1 -1
- package/lib/core/tree/detachedFieldIndexTypes.js.map +1 -1
- package/lib/core/tree/index.d.ts +1 -1
- package/lib/core/tree/index.d.ts.map +1 -1
- package/lib/core/tree/index.js +1 -0
- package/lib/core/tree/index.js.map +1 -1
- package/lib/core/tree/mapTree.d.ts +20 -4
- package/lib/core/tree/mapTree.d.ts.map +1 -1
- package/lib/core/tree/mapTree.js +27 -1
- package/lib/core/tree/mapTree.js.map +1 -1
- package/lib/core/tree/pathTree.d.ts +0 -11
- package/lib/core/tree/pathTree.d.ts.map +1 -1
- package/lib/core/tree/pathTree.js.map +1 -1
- package/lib/core/tree/treeTextFormat.d.ts.map +1 -1
- package/lib/core/tree/treeTextFormat.js +3 -2
- package/lib/core/tree/treeTextFormat.js.map +1 -1
- package/lib/core/tree/types.d.ts +0 -11
- package/lib/core/tree/types.d.ts.map +1 -1
- package/lib/core/tree/types.js +0 -4
- package/lib/core/tree/types.js.map +1 -1
- package/lib/core/tree/visitDelta.d.ts +0 -1
- package/lib/core/tree/visitDelta.d.ts.map +1 -1
- package/lib/core/tree/visitDelta.js +2 -2
- package/lib/core/tree/visitDelta.js.map +1 -1
- package/lib/core/tree/visitPath.d.ts +0 -2
- package/lib/core/tree/visitPath.d.ts.map +1 -1
- package/lib/core/tree/visitPath.js.map +1 -1
- package/lib/core/tree/visitorUtils.d.ts +0 -1
- package/lib/core/tree/visitorUtils.d.ts.map +1 -1
- package/lib/core/tree/visitorUtils.js.map +1 -1
- package/lib/domains/index.d.ts +1 -1
- package/lib/domains/index.d.ts.map +1 -1
- package/lib/domains/index.js +1 -1
- package/lib/domains/index.js.map +1 -1
- package/lib/domains/json/index.d.ts +1 -1
- package/lib/domains/json/index.d.ts.map +1 -1
- package/lib/domains/json/index.js +1 -1
- package/lib/domains/json/index.js.map +1 -1
- package/lib/domains/json/jsonCursor.d.ts +36 -2
- package/lib/domains/json/jsonCursor.d.ts.map +1 -1
- package/lib/domains/json/jsonCursor.js +76 -5
- package/lib/domains/json/jsonCursor.js.map +1 -1
- package/lib/domains/json/jsonDomainSchema.d.ts +13 -3
- package/lib/domains/json/jsonDomainSchema.d.ts.map +1 -1
- package/lib/domains/json/jsonDomainSchema.js +9 -1
- package/lib/domains/json/jsonDomainSchema.js.map +1 -1
- package/lib/domains/leafDomain.d.ts +0 -1
- package/lib/domains/leafDomain.d.ts.map +1 -1
- package/lib/domains/leafDomain.js +0 -1
- package/lib/domains/leafDomain.js.map +1 -1
- package/lib/domains/schemaBuilder.d.ts +1 -7
- package/lib/domains/schemaBuilder.d.ts.map +1 -1
- package/lib/domains/schemaBuilder.js +1 -11
- package/lib/domains/schemaBuilder.js.map +1 -1
- package/lib/events/events.d.ts +0 -4
- package/lib/events/events.d.ts.map +1 -1
- package/lib/events/events.js +0 -1
- package/lib/events/events.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/basicChunk.js +9 -4
- package/lib/feature-libraries/chunked-forest/basicChunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunk.d.ts +1 -1
- package/lib/feature-libraries/chunked-forest/chunk.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunk.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkTree.js +4 -4
- package/lib/feature-libraries/chunked-forest/chunkTree.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/chunkedForest.js +8 -6
- package/lib/feature-libraries/chunked-forest/chunkedForest.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js +2 -2
- package/lib/feature-libraries/chunked-forest/codec/chunkCodecUtilities.js.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.d.ts.map +1 -1
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.js +9 -6
- package/lib/feature-libraries/chunked-forest/codec/chunkDecoding.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/defaultEditBuilder.d.ts +12 -24
- package/lib/feature-libraries/default-schema/defaultEditBuilder.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js +6 -16
- package/lib/feature-libraries/default-schema/defaultEditBuilder.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts +0 -6
- package/lib/feature-libraries/default-schema/defaultFieldKinds.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js +11 -1
- package/lib/feature-libraries/default-schema/defaultFieldKinds.js.map +1 -1
- package/lib/feature-libraries/default-schema/defaultSchema.d.ts +0 -1
- package/lib/feature-libraries/default-schema/defaultSchema.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/defaultSchema.js +0 -1
- package/lib/feature-libraries/default-schema/defaultSchema.js.map +1 -1
- package/lib/feature-libraries/default-schema/index.d.ts +1 -1
- package/lib/feature-libraries/default-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/index.js +1 -1
- package/lib/feature-libraries/default-schema/index.js.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.d.ts +6 -0
- package/lib/feature-libraries/default-schema/schemaChecker.d.ts.map +1 -1
- package/lib/feature-libraries/default-schema/schemaChecker.js +6 -0
- package/lib/feature-libraries/default-schema/schemaChecker.js.map +1 -1
- package/lib/feature-libraries/editableTreeBinder.d.ts +0 -67
- package/lib/feature-libraries/editableTreeBinder.d.ts.map +1 -1
- package/lib/feature-libraries/editableTreeBinder.js +6 -25
- package/lib/feature-libraries/editableTreeBinder.js.map +1 -1
- package/lib/feature-libraries/fieldGenerator.d.ts +0 -3
- package/lib/feature-libraries/fieldGenerator.d.ts.map +1 -1
- package/lib/feature-libraries/fieldGenerator.js +0 -1
- package/lib/feature-libraries/fieldGenerator.js.map +1 -1
- package/lib/feature-libraries/flex-map-tree/index.d.ts +1 -1
- package/lib/feature-libraries/flex-map-tree/index.d.ts.map +1 -1
- package/lib/feature-libraries/flex-map-tree/index.js +1 -1
- package/lib/feature-libraries/flex-map-tree/index.js.map +1 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts +57 -49
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.js +172 -168
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.js.map +1 -1
- package/lib/feature-libraries/flex-tree/context.d.ts +0 -1
- package/lib/feature-libraries/flex-tree/context.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/context.js.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts +17 -282
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js +0 -4
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/lib/feature-libraries/flex-tree/index.d.ts +1 -1
- package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/index.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts +9 -26
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +28 -101
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts +2 -10
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js +4 -42
- package/lib/feature-libraries/flex-tree/lazyNode.js.map +1 -1
- package/lib/feature-libraries/flex-tree/treeEvents.d.ts +0 -2
- package/lib/feature-libraries/flex-tree/treeEvents.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/treeEvents.js.map +1 -1
- package/lib/feature-libraries/flex-tree/utilities.d.ts +2 -1
- package/lib/feature-libraries/flex-tree/utilities.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/utilities.js +4 -0
- package/lib/feature-libraries/flex-tree/utilities.js.map +1 -1
- package/lib/feature-libraries/forest-summary/codec.js +3 -3
- package/lib/feature-libraries/forest-summary/codec.js.map +1 -1
- package/lib/feature-libraries/index.d.ts +6 -8
- package/lib/feature-libraries/index.d.ts.map +1 -1
- package/lib/feature-libraries/index.js +5 -6
- package/lib/feature-libraries/index.js.map +1 -1
- package/lib/feature-libraries/mapTreeCursor.d.ts +6 -2
- package/lib/feature-libraries/mapTreeCursor.d.ts.map +1 -1
- package/lib/feature-libraries/mapTreeCursor.js +7 -0
- package/lib/feature-libraries/mapTreeCursor.js.map +1 -1
- package/lib/feature-libraries/memoizedIdRangeAllocator.d.ts +0 -4
- package/lib/feature-libraries/memoizedIdRangeAllocator.d.ts.map +1 -1
- package/lib/feature-libraries/memoizedIdRangeAllocator.js +0 -1
- package/lib/feature-libraries/memoizedIdRangeAllocator.js.map +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts +0 -2
- package/lib/feature-libraries/modular-schema/crossFieldQueries.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.js +0 -1
- package/lib/feature-libraries/modular-schema/crossFieldQueries.js.map +1 -1
- package/lib/feature-libraries/modular-schema/discrepancies.d.ts +18 -0
- package/lib/feature-libraries/modular-schema/discrepancies.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/discrepancies.js +103 -1
- package/lib/feature-libraries/modular-schema/discrepancies.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts +0 -8
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.js +0 -1
- package/lib/feature-libraries/modular-schema/fieldChangeHandler.js.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldKind.d.ts +1 -3
- package/lib/feature-libraries/modular-schema/fieldKind.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/fieldKind.js +1 -2
- package/lib/feature-libraries/modular-schema/fieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts +1 -2
- package/lib/feature-libraries/modular-schema/genericFieldKind.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKind.js +56 -83
- package/lib/feature-libraries/modular-schema/genericFieldKind.js.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js +6 -9
- package/lib/feature-libraries/modular-schema/genericFieldKindCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKindTypes.d.ts +3 -14
- package/lib/feature-libraries/modular-schema/genericFieldKindTypes.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/genericFieldKindTypes.js +4 -1
- package/lib/feature-libraries/modular-schema/genericFieldKindTypes.js.map +1 -1
- package/lib/feature-libraries/modular-schema/index.d.ts +2 -2
- package/lib/feature-libraries/modular-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/index.js +1 -1
- package/lib/feature-libraries/modular-schema/index.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js +42 -25
- package/lib/feature-libraries/modular-schema/modularChangeCodecs.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts +9 -8
- package/lib/feature-libraries/modular-schema/modularChangeFamily.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js +169 -206
- package/lib/feature-libraries/modular-schema/modularChangeFamily.js.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts +8 -14
- package/lib/feature-libraries/modular-schema/modularChangeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/modular-schema/modularChangeTypes.js.map +1 -1
- package/lib/feature-libraries/node-key/nodeKey.d.ts +0 -4
- package/lib/feature-libraries/node-key/nodeKey.d.ts.map +1 -1
- package/lib/feature-libraries/node-key/nodeKey.js +0 -2
- package/lib/feature-libraries/node-key/nodeKey.js.map +1 -1
- package/lib/feature-libraries/node-key/nodeKeyManager.d.ts +0 -1
- package/lib/feature-libraries/node-key/nodeKeyManager.d.ts.map +1 -1
- package/lib/feature-libraries/node-key/nodeKeyManager.js.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.d.ts.map +1 -1
- package/lib/feature-libraries/object-forest/objectForest.js +2 -11
- package/lib/feature-libraries/object-forest/objectForest.js.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts +6 -6
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV1.d.ts.map +1 -1
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts +7 -7
- package/lib/feature-libraries/optional-field/optionalFieldChangeFormatV2.d.ts.map +1 -1
- package/lib/feature-libraries/schemaBuilderBase.d.ts +2 -28
- package/lib/feature-libraries/schemaBuilderBase.d.ts.map +1 -1
- package/lib/feature-libraries/schemaBuilderBase.js +2 -28
- package/lib/feature-libraries/schemaBuilderBase.js.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/compose.js +25 -22
- package/lib/feature-libraries/sequence-field/compose.js.map +1 -1
- package/lib/feature-libraries/sequence-field/formatV2.d.ts +3 -3
- package/lib/feature-libraries/sequence-field/formatV2.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/formatV2.js +3 -3
- package/lib/feature-libraries/sequence-field/formatV2.js.map +1 -1
- package/lib/feature-libraries/sequence-field/formatV3.d.ts +195 -0
- package/lib/feature-libraries/sequence-field/formatV3.d.ts.map +1 -0
- package/lib/feature-libraries/sequence-field/formatV3.js +19 -0
- package/lib/feature-libraries/sequence-field/formatV3.js.map +1 -0
- package/lib/feature-libraries/sequence-field/helperTypes.d.ts +11 -0
- package/lib/feature-libraries/sequence-field/helperTypes.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/helperTypes.js.map +1 -1
- package/lib/feature-libraries/sequence-field/index.d.ts +1 -1
- package/lib/feature-libraries/sequence-field/index.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/index.js.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/invert.js +22 -14
- package/lib/feature-libraries/sequence-field/invert.js.map +1 -1
- package/lib/feature-libraries/sequence-field/markQueue.js +2 -2
- package/lib/feature-libraries/sequence-field/markQueue.js.map +1 -1
- package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts +2 -2
- package/lib/feature-libraries/sequence-field/moveEffectTable.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/moveEffectTable.js.map +1 -1
- package/lib/feature-libraries/sequence-field/rebase.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/rebase.js +25 -7
- package/lib/feature-libraries/sequence-field/rebase.js.map +1 -1
- package/lib/feature-libraries/sequence-field/replaceRevisions.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/replaceRevisions.js +16 -3
- package/lib/feature-libraries/sequence-field/replaceRevisions.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js +40 -6
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV1.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts +4 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js +55 -11
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV2.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts +11 -0
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.d.ts.map +1 -0
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js +81 -0
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecV3.js.map +1 -0
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js +2 -0
- package/lib/feature-libraries/sequence-field/sequenceFieldCodecs.js.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js +5 -2
- package/lib/feature-libraries/sequence-field/sequenceFieldToDelta.js.map +1 -1
- package/lib/feature-libraries/sequence-field/types.d.ts +23 -4
- package/lib/feature-libraries/sequence-field/types.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/types.js.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.d.ts +5 -4
- package/lib/feature-libraries/sequence-field/utils.d.ts.map +1 -1
- package/lib/feature-libraries/sequence-field/utils.js +67 -41
- package/lib/feature-libraries/sequence-field/utils.js.map +1 -1
- package/lib/feature-libraries/storedToViewSchema.d.ts +0 -1
- package/lib/feature-libraries/storedToViewSchema.d.ts.map +1 -1
- package/lib/feature-libraries/storedToViewSchema.js +0 -1
- package/lib/feature-libraries/storedToViewSchema.js.map +1 -1
- package/lib/feature-libraries/treeCursorUtils.d.ts +0 -6
- package/lib/feature-libraries/treeCursorUtils.d.ts.map +1 -1
- package/lib/feature-libraries/treeCursorUtils.js +9 -7
- package/lib/feature-libraries/treeCursorUtils.js.map +1 -1
- package/lib/feature-libraries/treeTextCursor.d.ts +0 -2
- package/lib/feature-libraries/treeTextCursor.d.ts.map +1 -1
- package/lib/feature-libraries/treeTextCursor.js +0 -2
- package/lib/feature-libraries/treeTextCursor.js.map +1 -1
- package/lib/feature-libraries/typed-schema/flexList.d.ts +0 -3
- package/lib/feature-libraries/typed-schema/flexList.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/flexList.js.map +1 -1
- package/lib/feature-libraries/typed-schema/index.d.ts +1 -1
- package/lib/feature-libraries/typed-schema/index.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/index.js +1 -1
- package/lib/feature-libraries/typed-schema/index.js.map +1 -1
- package/lib/feature-libraries/typed-schema/schemaCollection.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/schemaCollection.js +1 -5
- package/lib/feature-libraries/typed-schema/schemaCollection.js.map +1 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts +2 -41
- package/lib/feature-libraries/typed-schema/typedTreeSchema.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js +1 -38
- package/lib/feature-libraries/typed-schema/typedTreeSchema.js.map +1 -1
- package/lib/feature-libraries/typed-schema/view.d.ts +0 -1
- package/lib/feature-libraries/typed-schema/view.d.ts.map +1 -1
- package/lib/feature-libraries/typed-schema/view.js.map +1 -1
- package/lib/index.d.ts +8 -9
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -9
- package/lib/index.js.map +1 -1
- package/lib/internalTypes.d.ts +1 -1
- package/lib/internalTypes.d.ts.map +1 -1
- package/lib/internalTypes.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +3 -1
- package/lib/shared-tree/schematizeTree.d.ts +2 -11
- package/lib/shared-tree/schematizeTree.d.ts.map +1 -1
- package/lib/shared-tree/schematizeTree.js +15 -4
- package/lib/shared-tree/schematizeTree.js.map +1 -1
- package/lib/shared-tree/schematizingTreeView.d.ts +4 -4
- package/lib/shared-tree/schematizingTreeView.d.ts.map +1 -1
- package/lib/shared-tree/schematizingTreeView.js +3 -3
- package/lib/shared-tree/schematizingTreeView.js.map +1 -1
- package/lib/shared-tree/sharedTree.d.ts +4 -17
- package/lib/shared-tree/sharedTree.d.ts.map +1 -1
- package/lib/shared-tree/sharedTree.js +6 -10
- package/lib/shared-tree/sharedTree.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeChangeCodecs.js +4 -0
- package/lib/shared-tree/sharedTreeChangeCodecs.js.map +1 -1
- package/lib/shared-tree/sharedTreeChangeFamily.js +3 -3
- package/lib/shared-tree/sharedTreeChangeFamily.js.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts +0 -2
- package/lib/shared-tree/sharedTreeEditBuilder.d.ts.map +1 -1
- package/lib/shared-tree/sharedTreeEditBuilder.js.map +1 -1
- package/lib/shared-tree/treeApi.js +3 -3
- package/lib/shared-tree/treeApi.js.map +1 -1
- package/lib/shared-tree/treeCheckout.d.ts +0 -5
- package/lib/shared-tree/treeCheckout.d.ts.map +1 -1
- package/lib/shared-tree/treeCheckout.js +6 -4
- package/lib/shared-tree/treeCheckout.js.map +1 -1
- package/lib/shared-tree/treeView.d.ts +3 -6
- package/lib/shared-tree/treeView.d.ts.map +1 -1
- package/lib/shared-tree/treeView.js.map +1 -1
- package/lib/shared-tree-core/branch.d.ts.map +1 -1
- package/lib/shared-tree-core/branch.js +12 -7
- package/lib/shared-tree-core/branch.js.map +1 -1
- package/lib/shared-tree-core/defaultResubmitMachine.js +4 -4
- package/lib/shared-tree-core/defaultResubmitMachine.js.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerCodecs.js +1 -0
- package/lib/shared-tree-core/editManagerCodecs.js.map +1 -1
- package/lib/shared-tree-core/editManagerFormat.d.ts +2 -2
- package/lib/shared-tree-core/editManagerFormat.d.ts.map +1 -1
- package/lib/shared-tree-core/editManagerFormat.js +6 -1
- package/lib/shared-tree-core/editManagerFormat.js.map +1 -1
- package/lib/shared-tree-core/messageCodecs.d.ts.map +1 -1
- package/lib/shared-tree-core/messageCodecs.js +1 -0
- package/lib/shared-tree-core/messageCodecs.js.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.d.ts.map +1 -1
- package/lib/shared-tree-core/sharedTreeCore.js +4 -2
- package/lib/shared-tree-core/sharedTreeCore.js.map +1 -1
- package/lib/simple-tree/api/create.d.ts +54 -0
- package/lib/simple-tree/api/create.d.ts.map +1 -0
- package/lib/simple-tree/api/create.js +92 -0
- package/lib/simple-tree/api/create.js.map +1 -0
- package/lib/simple-tree/api/index.d.ts +12 -0
- package/lib/simple-tree/api/index.d.ts.map +1 -0
- package/lib/simple-tree/api/index.js +13 -0
- package/lib/simple-tree/api/index.js.map +1 -0
- package/{dist/simple-tree → lib/simple-tree/api}/schemaCreationUtilities.d.ts +7 -4
- package/lib/simple-tree/api/schemaCreationUtilities.d.ts.map +1 -0
- package/lib/simple-tree/{schemaCreationUtilities.js → api/schemaCreationUtilities.js} +1 -1
- package/lib/simple-tree/api/schemaCreationUtilities.js.map +1 -0
- package/lib/simple-tree/{schemaFactory.d.ts → api/schemaFactory.d.ts} +15 -14
- package/lib/simple-tree/api/schemaFactory.d.ts.map +1 -0
- package/lib/simple-tree/{schemaFactory.js → api/schemaFactory.js} +9 -8
- package/lib/simple-tree/api/schemaFactory.js.map +1 -0
- package/{dist/simple-tree → lib/simple-tree/api}/schemaFactoryRecursive.d.ts +40 -7
- package/lib/simple-tree/api/schemaFactoryRecursive.d.ts.map +1 -0
- package/lib/simple-tree/{schemaFactoryRecursive.js → api/schemaFactoryRecursive.js} +1 -1
- package/lib/simple-tree/api/schemaFactoryRecursive.js.map +1 -0
- package/lib/simple-tree/api/testRecursiveDomain.d.ts +62 -0
- package/lib/simple-tree/api/testRecursiveDomain.d.ts.map +1 -0
- package/lib/simple-tree/api/testRecursiveDomain.js.map +1 -0
- package/{dist/simple-tree → lib/simple-tree/api}/tree.d.ts +111 -20
- package/lib/simple-tree/api/tree.d.ts.map +1 -0
- package/lib/simple-tree/api/tree.js +165 -0
- package/lib/simple-tree/api/tree.js.map +1 -0
- package/lib/simple-tree/{treeNodeApi.d.ts → api/treeNodeApi.d.ts} +6 -5
- package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -0
- package/lib/simple-tree/{treeNodeApi.js → api/treeNodeApi.js} +25 -17
- package/lib/simple-tree/api/treeNodeApi.js.map +1 -0
- package/lib/simple-tree/api/verboseTree.d.ts +136 -0
- package/lib/simple-tree/api/verboseTree.d.ts.map +1 -0
- package/lib/simple-tree/api/verboseTree.js +213 -0
- package/lib/simple-tree/api/verboseTree.js.map +1 -0
- package/lib/simple-tree/arrayNode.d.ts +3 -3
- package/lib/simple-tree/arrayNode.d.ts.map +1 -1
- package/lib/simple-tree/arrayNode.js +56 -53
- package/lib/simple-tree/arrayNode.js.map +1 -1
- package/lib/simple-tree/core/index.d.ts +10 -0
- package/lib/simple-tree/core/index.d.ts.map +1 -0
- package/lib/simple-tree/core/index.js +10 -0
- package/lib/simple-tree/core/index.js.map +1 -0
- package/{dist/simple-tree → lib/simple-tree/core}/schemaCaching.d.ts +2 -9
- package/lib/simple-tree/core/schemaCaching.d.ts.map +1 -0
- package/lib/simple-tree/{schemaCaching.js → core/schemaCaching.js} +1 -21
- package/lib/simple-tree/core/schemaCaching.js.map +1 -0
- package/lib/simple-tree/core/treeNodeKernel.d.ts +57 -0
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -0
- package/lib/simple-tree/{treeNodeKernel.js → core/treeNodeKernel.js} +45 -3
- package/lib/simple-tree/core/treeNodeKernel.js.map +1 -0
- package/lib/simple-tree/core/treeNodeSchema.d.ts +149 -0
- package/lib/simple-tree/core/treeNodeSchema.d.ts.map +1 -0
- package/lib/simple-tree/core/treeNodeSchema.js +32 -0
- package/lib/simple-tree/core/treeNodeSchema.js.map +1 -0
- package/lib/simple-tree/{types.d.ts → core/types.d.ts} +23 -70
- package/lib/simple-tree/core/types.d.ts.map +1 -0
- package/lib/simple-tree/core/types.js +111 -0
- package/lib/simple-tree/core/types.js.map +1 -0
- package/lib/simple-tree/core/withType.d.ts +82 -0
- package/lib/simple-tree/core/withType.d.ts.map +1 -0
- package/lib/simple-tree/core/withType.js +36 -0
- package/lib/simple-tree/core/withType.js.map +1 -0
- package/lib/simple-tree/getJsonSchema.d.ts +55 -0
- package/lib/simple-tree/getJsonSchema.d.ts.map +1 -0
- package/lib/simple-tree/getJsonSchema.js +65 -0
- package/lib/simple-tree/getJsonSchema.js.map +1 -0
- package/lib/simple-tree/getSimpleFieldSchema.d.ts +14 -0
- package/lib/simple-tree/getSimpleFieldSchema.d.ts.map +1 -0
- package/lib/simple-tree/getSimpleFieldSchema.js +25 -0
- package/lib/simple-tree/getSimpleFieldSchema.js.map +1 -0
- package/lib/simple-tree/getSimpleSchema.d.ts +58 -0
- package/lib/simple-tree/getSimpleSchema.d.ts.map +1 -0
- package/lib/simple-tree/getSimpleSchema.js +64 -0
- package/lib/simple-tree/getSimpleSchema.js.map +1 -0
- package/lib/simple-tree/index.d.ts +12 -13
- package/lib/simple-tree/index.d.ts.map +1 -1
- package/lib/simple-tree/index.js +8 -11
- package/lib/simple-tree/index.js.map +1 -1
- package/lib/simple-tree/jsonSchema.d.ts +206 -0
- package/lib/simple-tree/jsonSchema.d.ts.map +1 -0
- package/lib/simple-tree/{nodeKeys.js → jsonSchema.js} +1 -1
- package/lib/simple-tree/jsonSchema.js.map +1 -0
- package/lib/simple-tree/leafNodeSchema.d.ts +1 -1
- package/lib/simple-tree/leafNodeSchema.d.ts.map +1 -1
- package/lib/simple-tree/leafNodeSchema.js +1 -2
- package/lib/simple-tree/leafNodeSchema.js.map +1 -1
- package/lib/simple-tree/mapNode.d.ts +9 -3
- package/lib/simple-tree/mapNode.d.ts.map +1 -1
- package/lib/simple-tree/mapNode.js +36 -36
- package/lib/simple-tree/mapNode.js.map +1 -1
- package/lib/simple-tree/objectNode.d.ts +18 -16
- package/lib/simple-tree/objectNode.d.ts.map +1 -1
- package/lib/simple-tree/objectNode.js +36 -34
- package/lib/simple-tree/objectNode.js.map +1 -1
- package/lib/simple-tree/objectNodeTypes.d.ts +38 -0
- package/lib/simple-tree/objectNodeTypes.d.ts.map +1 -0
- package/lib/simple-tree/objectNodeTypes.js +15 -0
- package/lib/simple-tree/objectNodeTypes.js.map +1 -0
- package/lib/simple-tree/proxies.d.ts +6 -25
- package/lib/simple-tree/proxies.d.ts.map +1 -1
- package/lib/simple-tree/proxies.js +46 -57
- package/lib/simple-tree/proxies.js.map +1 -1
- package/lib/simple-tree/proxyBinding.d.ts +45 -22
- package/lib/simple-tree/proxyBinding.d.ts.map +1 -1
- package/lib/simple-tree/proxyBinding.js +89 -52
- package/lib/simple-tree/proxyBinding.js.map +1 -1
- package/lib/simple-tree/schemaTypes.d.ts +10 -159
- package/lib/simple-tree/schemaTypes.d.ts.map +1 -1
- package/lib/simple-tree/schemaTypes.js +9 -41
- package/lib/simple-tree/schemaTypes.js.map +1 -1
- package/lib/simple-tree/simpleSchema.d.ts +124 -0
- package/lib/simple-tree/simpleSchema.d.ts.map +1 -0
- package/lib/{feature-libraries/schema-aware/schemaAware.js → simple-tree/simpleSchema.js} +1 -1
- package/lib/simple-tree/simpleSchema.js.map +1 -0
- package/lib/simple-tree/simpleSchemaToJsonSchema.d.ts +12 -0
- package/lib/simple-tree/simpleSchemaToJsonSchema.d.ts.map +1 -0
- package/lib/simple-tree/simpleSchemaToJsonSchema.js +142 -0
- package/lib/simple-tree/simpleSchemaToJsonSchema.js.map +1 -0
- package/lib/simple-tree/toFlexSchema.d.ts +4 -12
- package/lib/simple-tree/toFlexSchema.d.ts.map +1 -1
- package/lib/simple-tree/toFlexSchema.js +9 -18
- package/lib/simple-tree/toFlexSchema.js.map +1 -1
- package/lib/simple-tree/toMapTree.d.ts +39 -39
- package/lib/simple-tree/toMapTree.d.ts.map +1 -1
- package/lib/simple-tree/toMapTree.js +214 -158
- package/lib/simple-tree/toMapTree.js.map +1 -1
- package/lib/simple-tree/treeNodeValid.d.ts +74 -0
- package/lib/simple-tree/treeNodeValid.d.ts.map +1 -0
- package/lib/simple-tree/{types.js → treeNodeValid.js} +8 -98
- package/lib/simple-tree/treeNodeValid.js.map +1 -0
- package/lib/simple-tree/typesUnsafe.d.ts +35 -4
- package/lib/simple-tree/typesUnsafe.d.ts.map +1 -1
- package/lib/simple-tree/typesUnsafe.js.map +1 -1
- package/lib/simple-tree/viewSchemaToSimpleSchema.d.ts +11 -0
- package/lib/simple-tree/viewSchemaToSimpleSchema.d.ts.map +1 -0
- package/lib/simple-tree/viewSchemaToSimpleSchema.js +167 -0
- package/lib/simple-tree/viewSchemaToSimpleSchema.js.map +1 -0
- package/lib/util/brand.d.ts +0 -3
- package/lib/util/brand.d.ts.map +1 -1
- package/lib/util/brand.js +1 -2
- package/lib/util/brand.js.map +1 -1
- package/lib/util/brandedMap.d.ts +0 -5
- package/lib/util/brandedMap.d.ts.map +1 -1
- package/lib/util/brandedMap.js +0 -1
- package/lib/util/brandedMap.js.map +1 -1
- package/lib/util/idAllocator.d.ts +0 -2
- package/lib/util/idAllocator.d.ts.map +1 -1
- package/lib/util/idAllocator.js +0 -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 +5 -19
- package/lib/util/nestedMap.d.ts.map +1 -1
- package/lib/util/nestedMap.js +15 -16
- package/lib/util/nestedMap.js.map +1 -1
- package/lib/util/opaque.d.ts +0 -4
- package/lib/util/opaque.d.ts.map +1 -1
- package/lib/util/opaque.js +0 -2
- package/lib/util/opaque.js.map +1 -1
- package/lib/util/rangeMap.d.ts +0 -2
- package/lib/util/rangeMap.d.ts.map +1 -1
- package/lib/util/rangeMap.js +4 -3
- package/lib/util/rangeMap.js.map +1 -1
- package/lib/util/transactionResult.d.ts +0 -1
- package/lib/util/transactionResult.d.ts.map +1 -1
- package/lib/util/transactionResult.js +0 -1
- package/lib/util/transactionResult.js.map +1 -1
- package/lib/util/typeCheck.d.ts +2 -20
- package/lib/util/typeCheck.d.ts.map +1 -1
- package/lib/util/typeCheck.js.map +1 -1
- package/lib/util/typeCheckTests.d.ts +4 -4
- package/lib/util/typeCheckTests.d.ts.map +1 -1
- package/lib/util/typeCheckTests.js.map +1 -1
- package/lib/util/typeUtils.d.ts +0 -7
- package/lib/util/typeUtils.d.ts.map +1 -1
- package/lib/util/typeUtils.js.map +1 -1
- package/lib/util/utils.d.ts +6 -8
- package/lib/util/utils.d.ts.map +1 -1
- package/lib/util/utils.js +12 -4
- package/lib/util/utils.js.map +1 -1
- package/package.json +25 -24
- package/src/codec/discriminatedUnions.ts +20 -10
- package/src/codec/index.ts +5 -1
- package/src/core/forest/README.md +4 -2
- package/src/core/forest/editableForest.ts +1 -6
- package/src/core/forest/forest.ts +0 -6
- package/src/core/index.ts +2 -2
- package/src/core/rebase/changeRebaser.ts +0 -4
- package/src/core/rebase/index.ts +0 -2
- package/src/core/rebase/types.ts +1 -23
- package/src/core/rebase/utils.ts +13 -11
- package/src/core/schema-stored/multiplicity.ts +0 -1
- package/src/core/schema-stored/schema.ts +0 -7
- package/src/core/schema-stored/storedSchemaRepository.ts +0 -3
- package/src/core/schema-view/view.ts +0 -3
- package/src/core/tree/anchorSet.ts +7 -17
- package/src/core/tree/cursor.ts +1 -6
- package/src/core/tree/delta.ts +0 -11
- package/src/core/tree/detachedFieldIndexCodec.ts +4 -3
- package/src/core/tree/detachedFieldIndexTypes.ts +0 -1
- package/src/core/tree/index.ts +1 -1
- package/src/core/tree/mapTree.ts +45 -4
- package/src/core/tree/pathTree.ts +0 -11
- package/src/core/tree/treeTextFormat.ts +3 -2
- package/src/core/tree/types.ts +0 -11
- package/src/core/tree/visitDelta.ts +2 -3
- package/src/core/tree/visitPath.ts +0 -2
- package/src/core/tree/visitorUtils.ts +0 -1
- package/src/domains/index.ts +3 -0
- package/src/domains/json/index.ts +7 -1
- package/src/domains/json/jsonCursor.ts +113 -6
- package/src/domains/json/jsonDomainSchema.ts +4 -5
- package/src/domains/leafDomain.ts +0 -1
- package/src/domains/schemaBuilder.ts +0 -22
- package/src/events/events.ts +0 -4
- package/src/feature-libraries/chunked-forest/README.md +9 -1
- package/src/feature-libraries/chunked-forest/basicChunk.ts +14 -9
- package/src/feature-libraries/chunked-forest/chunk.ts +1 -1
- package/src/feature-libraries/chunked-forest/chunkTree.ts +4 -4
- package/src/feature-libraries/chunked-forest/chunkedForest.ts +8 -6
- package/src/feature-libraries/chunked-forest/codec/chunkCodecUtilities.ts +2 -2
- package/src/feature-libraries/chunked-forest/codec/chunkDecoding.ts +9 -6
- package/src/feature-libraries/chunked-forest/uniformChunk.ts +6 -4
- package/src/feature-libraries/default-schema/defaultEditBuilder.ts +18 -46
- package/src/feature-libraries/default-schema/defaultFieldKinds.ts +11 -6
- package/src/feature-libraries/default-schema/defaultSchema.ts +0 -1
- package/src/feature-libraries/default-schema/index.ts +1 -1
- package/src/feature-libraries/default-schema/schemaChecker.ts +6 -0
- package/src/feature-libraries/editableTreeBinder.ts +6 -78
- package/src/feature-libraries/fieldGenerator.ts +0 -3
- package/src/feature-libraries/flex-map-tree/index.ts +2 -1
- package/src/feature-libraries/flex-map-tree/mapTreeNode.ts +238 -267
- package/src/feature-libraries/flex-tree/context.ts +0 -1
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +27 -357
- package/src/feature-libraries/flex-tree/index.ts +0 -1
- package/src/feature-libraries/flex-tree/lazyField.ts +38 -208
- package/src/feature-libraries/flex-tree/lazyNode.ts +5 -66
- package/src/feature-libraries/flex-tree/treeEvents.ts +0 -2
- package/src/feature-libraries/flex-tree/utilities.ts +6 -1
- package/src/feature-libraries/forest-summary/codec.ts +3 -3
- package/src/feature-libraries/index.ts +5 -35
- package/src/feature-libraries/mapTreeCursor.ts +13 -4
- package/src/feature-libraries/memoizedIdRangeAllocator.ts +0 -4
- package/src/feature-libraries/modular-schema/crossFieldQueries.ts +0 -2
- package/src/feature-libraries/modular-schema/discrepancies.ts +117 -1
- package/src/feature-libraries/modular-schema/fieldChangeHandler.ts +0 -8
- package/src/feature-libraries/modular-schema/fieldKind.ts +1 -3
- package/src/feature-libraries/modular-schema/genericFieldKind.ts +69 -92
- package/src/feature-libraries/modular-schema/genericFieldKindCodecs.ts +7 -14
- package/src/feature-libraries/modular-schema/genericFieldKindTypes.ts +6 -15
- package/src/feature-libraries/modular-schema/index.ts +2 -2
- package/src/feature-libraries/modular-schema/modularChangeCodecs.ts +68 -34
- package/src/feature-libraries/modular-schema/modularChangeFamily.ts +330 -336
- package/src/feature-libraries/modular-schema/modularChangeTypes.ts +7 -14
- package/src/feature-libraries/node-key/nodeKey.ts +0 -4
- package/src/feature-libraries/node-key/nodeKeyManager.ts +0 -1
- package/src/feature-libraries/object-forest/objectForest.ts +1 -13
- package/src/feature-libraries/schemaBuilderBase.ts +1 -49
- package/src/feature-libraries/sequence-field/compose.ts +41 -20
- package/src/feature-libraries/sequence-field/formatV2.ts +3 -3
- package/src/feature-libraries/sequence-field/formatV3.ts +65 -0
- package/src/feature-libraries/sequence-field/helperTypes.ts +33 -0
- package/src/feature-libraries/sequence-field/index.ts +1 -0
- package/src/feature-libraries/sequence-field/invert.ts +28 -18
- package/src/feature-libraries/sequence-field/markQueue.ts +2 -2
- package/src/feature-libraries/sequence-field/moveEffectTable.ts +2 -2
- package/src/feature-libraries/sequence-field/rebase.ts +30 -13
- package/src/feature-libraries/sequence-field/replaceRevisions.ts +27 -3
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV1.ts +52 -7
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV2.ts +92 -19
- package/src/feature-libraries/sequence-field/sequenceFieldCodecV3.ts +134 -0
- package/src/feature-libraries/sequence-field/sequenceFieldCodecs.ts +2 -0
- package/src/feature-libraries/sequence-field/sequenceFieldToDelta.ts +8 -2
- package/src/feature-libraries/sequence-field/types.ts +24 -4
- package/src/feature-libraries/sequence-field/utils.ts +78 -50
- package/src/feature-libraries/storedToViewSchema.ts +0 -1
- package/src/feature-libraries/treeCursorUtils.ts +11 -11
- package/src/feature-libraries/treeTextCursor.ts +0 -2
- package/src/feature-libraries/typed-schema/flexList.ts +0 -3
- package/src/feature-libraries/typed-schema/index.ts +0 -2
- package/src/feature-libraries/typed-schema/schemaCollection.ts +0 -5
- package/src/feature-libraries/typed-schema/typedTreeSchema.ts +2 -68
- package/src/feature-libraries/typed-schema/view.ts +0 -1
- package/src/index.ts +27 -245
- package/src/internalTypes.ts +1 -0
- package/src/packageVersion.ts +1 -1
- package/src/shared-tree/schematizeTree.ts +25 -21
- package/src/shared-tree/schematizingTreeView.ts +6 -6
- package/src/shared-tree/sharedTree.ts +8 -39
- package/src/shared-tree/sharedTreeChangeCodecs.ts +8 -0
- package/src/shared-tree/sharedTreeChangeFamily.ts +3 -3
- package/src/shared-tree/sharedTreeEditBuilder.ts +0 -2
- package/src/shared-tree/treeApi.ts +3 -3
- package/src/shared-tree/treeCheckout.ts +6 -8
- package/src/shared-tree/treeView.ts +3 -6
- package/src/shared-tree-core/branch.ts +20 -8
- package/src/shared-tree-core/defaultResubmitMachine.ts +4 -4
- package/src/shared-tree-core/editManagerCodecs.ts +1 -0
- package/src/shared-tree-core/editManagerFormat.ts +7 -2
- package/src/shared-tree-core/messageCodecs.ts +2 -1
- package/src/shared-tree-core/sharedTreeCore.ts +5 -3
- package/src/simple-tree/ProxyBinding.md +2 -0
- package/src/simple-tree/api/README.md +7 -0
- package/src/simple-tree/api/create.ts +179 -0
- package/src/simple-tree/api/index.ts +36 -0
- package/src/simple-tree/{schemaCreationUtilities.ts → api/schemaCreationUtilities.ts} +13 -5
- package/src/simple-tree/{schemaFactory.ts → api/schemaFactory.ts} +36 -34
- package/src/simple-tree/{schemaFactoryRecursive.ts → api/schemaFactoryRecursive.ts} +47 -10
- package/src/simple-tree/{testRecursiveDomain.ts → api/testRecursiveDomain.ts} +3 -1
- package/src/simple-tree/{tree.ts → api/tree.ts} +246 -34
- package/src/simple-tree/{treeNodeApi.ts → api/treeNodeApi.ts} +47 -36
- package/src/simple-tree/api/verboseTree.ts +415 -0
- package/src/simple-tree/arrayNode.ts +100 -98
- package/src/simple-tree/core/README.md +11 -0
- package/src/simple-tree/core/index.ts +33 -0
- package/src/simple-tree/{schemaCaching.ts → core/schemaCaching.ts} +3 -37
- package/src/simple-tree/{treeNodeKernel.ts → core/treeNodeKernel.ts} +55 -5
- package/src/simple-tree/core/treeNodeSchema.ts +184 -0
- package/src/simple-tree/core/types.ts +255 -0
- package/src/simple-tree/core/withType.ts +89 -0
- package/src/simple-tree/getJsonSchema.ts +70 -0
- package/src/simple-tree/getSimpleFieldSchema.ts +36 -0
- package/src/simple-tree/getSimpleSchema.ts +69 -0
- package/src/simple-tree/index.ts +58 -33
- package/src/simple-tree/jsonSchema.ts +230 -0
- package/src/simple-tree/leafNodeSchema.ts +6 -3
- package/src/simple-tree/mapNode.ts +56 -55
- package/src/simple-tree/objectNode.ts +66 -90
- package/src/simple-tree/objectNodeTypes.ts +68 -0
- package/src/simple-tree/proxies.ts +52 -68
- package/src/simple-tree/proxyBinding.ts +127 -72
- package/src/simple-tree/schemaTypes.ts +29 -194
- package/src/simple-tree/simpleSchema.ts +138 -0
- package/src/simple-tree/simpleSchemaToJsonSchema.ts +178 -0
- package/src/simple-tree/toFlexSchema.ts +9 -42
- package/src/simple-tree/toMapTree.ts +270 -296
- package/src/simple-tree/{types.ts → treeNodeValid.ts} +16 -232
- package/src/simple-tree/typesUnsafe.ts +51 -5
- package/src/simple-tree/viewSchemaToSimpleSchema.ts +209 -0
- package/src/util/brand.ts +1 -4
- package/src/util/brandedMap.ts +0 -5
- package/src/util/idAllocator.ts +0 -2
- package/src/util/index.ts +2 -0
- package/src/util/nestedMap.ts +23 -20
- package/src/util/opaque.ts +0 -4
- package/src/util/rangeMap.ts +5 -5
- package/src/util/transactionResult.ts +0 -1
- package/src/util/typeCheck.ts +2 -20
- package/src/util/typeCheckTests.ts +4 -4
- package/src/util/typeUtils.ts +0 -7
- package/src/util/utils.ts +13 -8
- package/tsconfig.json +0 -1
- package/dist/feature-libraries/contextuallyTyped.d.ts +0 -209
- package/dist/feature-libraries/contextuallyTyped.d.ts.map +0 -1
- package/dist/feature-libraries/contextuallyTyped.js +0 -328
- package/dist/feature-libraries/contextuallyTyped.js.map +0 -1
- package/dist/feature-libraries/schema-aware/index.d.ts +0 -6
- package/dist/feature-libraries/schema-aware/index.d.ts.map +0 -1
- package/dist/feature-libraries/schema-aware/index.js.map +0 -1
- package/dist/feature-libraries/schema-aware/schemaAware.d.ts +0 -76
- package/dist/feature-libraries/schema-aware/schemaAware.d.ts.map +0 -1
- package/dist/feature-libraries/schema-aware/schemaAware.js.map +0 -1
- package/dist/simple-tree/nodeKeys.d.ts +0 -41
- package/dist/simple-tree/nodeKeys.d.ts.map +0 -1
- package/dist/simple-tree/nodeKeys.js +0 -7
- package/dist/simple-tree/nodeKeys.js.map +0 -1
- package/dist/simple-tree/schemaCaching.d.ts.map +0 -1
- package/dist/simple-tree/schemaCaching.js.map +0 -1
- package/dist/simple-tree/schemaCreationUtilities.d.ts.map +0 -1
- package/dist/simple-tree/schemaCreationUtilities.js.map +0 -1
- package/dist/simple-tree/schemaFactory.d.ts.map +0 -1
- package/dist/simple-tree/schemaFactory.js.map +0 -1
- package/dist/simple-tree/schemaFactoryRecursive.d.ts.map +0 -1
- package/dist/simple-tree/schemaFactoryRecursive.js.map +0 -1
- package/dist/simple-tree/testRecursiveDomain.d.ts +0 -61
- package/dist/simple-tree/testRecursiveDomain.d.ts.map +0 -1
- package/dist/simple-tree/testRecursiveDomain.js.map +0 -1
- package/dist/simple-tree/tree.d.ts.map +0 -1
- package/dist/simple-tree/tree.js +0 -73
- package/dist/simple-tree/tree.js.map +0 -1
- package/dist/simple-tree/treeNodeApi.d.ts.map +0 -1
- package/dist/simple-tree/treeNodeApi.js.map +0 -1
- package/dist/simple-tree/treeNodeKernel.d.ts +0 -26
- package/dist/simple-tree/treeNodeKernel.d.ts.map +0 -1
- package/dist/simple-tree/treeNodeKernel.js.map +0 -1
- package/dist/simple-tree/types.d.ts.map +0 -1
- package/dist/simple-tree/types.js.map +0 -1
- package/lib/feature-libraries/contextuallyTyped.d.ts +0 -209
- package/lib/feature-libraries/contextuallyTyped.d.ts.map +0 -1
- package/lib/feature-libraries/contextuallyTyped.js +0 -311
- package/lib/feature-libraries/contextuallyTyped.js.map +0 -1
- package/lib/feature-libraries/schema-aware/index.d.ts +0 -6
- package/lib/feature-libraries/schema-aware/index.d.ts.map +0 -1
- package/lib/feature-libraries/schema-aware/index.js +0 -6
- package/lib/feature-libraries/schema-aware/index.js.map +0 -1
- package/lib/feature-libraries/schema-aware/schemaAware.d.ts +0 -76
- package/lib/feature-libraries/schema-aware/schemaAware.d.ts.map +0 -1
- package/lib/feature-libraries/schema-aware/schemaAware.js.map +0 -1
- package/lib/simple-tree/nodeKeys.d.ts +0 -41
- package/lib/simple-tree/nodeKeys.d.ts.map +0 -1
- package/lib/simple-tree/nodeKeys.js.map +0 -1
- package/lib/simple-tree/schemaCaching.d.ts.map +0 -1
- package/lib/simple-tree/schemaCaching.js.map +0 -1
- package/lib/simple-tree/schemaCreationUtilities.d.ts.map +0 -1
- package/lib/simple-tree/schemaCreationUtilities.js.map +0 -1
- package/lib/simple-tree/schemaFactory.d.ts.map +0 -1
- package/lib/simple-tree/schemaFactory.js.map +0 -1
- package/lib/simple-tree/schemaFactoryRecursive.d.ts.map +0 -1
- package/lib/simple-tree/schemaFactoryRecursive.js.map +0 -1
- package/lib/simple-tree/testRecursiveDomain.d.ts +0 -61
- package/lib/simple-tree/testRecursiveDomain.d.ts.map +0 -1
- package/lib/simple-tree/testRecursiveDomain.js.map +0 -1
- package/lib/simple-tree/tree.d.ts.map +0 -1
- package/lib/simple-tree/tree.js +0 -66
- package/lib/simple-tree/tree.js.map +0 -1
- package/lib/simple-tree/treeNodeApi.d.ts.map +0 -1
- package/lib/simple-tree/treeNodeApi.js.map +0 -1
- package/lib/simple-tree/treeNodeKernel.d.ts +0 -26
- package/lib/simple-tree/treeNodeKernel.d.ts.map +0 -1
- package/lib/simple-tree/treeNodeKernel.js.map +0 -1
- package/lib/simple-tree/types.d.ts.map +0 -1
- package/lib/simple-tree/types.js.map +0 -1
- package/src/feature-libraries/contextuallyTyped.ts +0 -582
- package/src/feature-libraries/schema-aware/README.md +0 -19
- package/src/feature-libraries/schema-aware/index.ts +0 -16
- package/src/feature-libraries/schema-aware/schemaAware.ts +0 -135
- package/src/simple-tree/nodeKeys.ts +0 -42
- /package/dist/simple-tree/{testRecursiveDomain.js → api/testRecursiveDomain.js} +0 -0
- /package/lib/simple-tree/{testRecursiveDomain.js → api/testRecursiveDomain.js} +0 -0
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { assert } from "@fluidframework/core-utils/internal";
|
|
6
|
+
import { assert, oob } from "@fluidframework/core-utils/internal";
|
|
7
7
|
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
8
|
+
import { isFluidHandle } from "@fluidframework/runtime-utils/internal";
|
|
8
9
|
|
|
9
10
|
import {
|
|
10
11
|
EmptyKey,
|
|
@@ -13,13 +14,10 @@ import {
|
|
|
13
14
|
type TreeValue,
|
|
14
15
|
type ValueSchema,
|
|
15
16
|
type SchemaAndPolicy,
|
|
17
|
+
type ExclusiveMapTree,
|
|
16
18
|
} from "../core/index.js";
|
|
17
19
|
import {
|
|
18
|
-
type CursorWithNode,
|
|
19
|
-
cursorForMapTreeField,
|
|
20
|
-
cursorForMapTreeNode,
|
|
21
20
|
isTreeValue,
|
|
22
|
-
typeNameSymbol,
|
|
23
21
|
valueSchemaAllows,
|
|
24
22
|
type NodeKeyManager,
|
|
25
23
|
isMapTreeNode,
|
|
@@ -29,21 +27,21 @@ import { brand, fail, isReadonlyArray, find } from "../util/index.js";
|
|
|
29
27
|
import { nullSchema } from "./leafNodeSchema.js";
|
|
30
28
|
import type { InsertableContent } from "./proxies.js";
|
|
31
29
|
import {
|
|
32
|
-
|
|
33
|
-
FieldSchema,
|
|
30
|
+
type FieldSchema,
|
|
34
31
|
type ImplicitAllowedTypes,
|
|
35
|
-
type ImplicitFieldSchema,
|
|
36
|
-
NodeKind,
|
|
37
|
-
type TreeNodeSchema,
|
|
38
32
|
normalizeAllowedTypes,
|
|
39
|
-
normalizeFieldSchema,
|
|
40
|
-
getStoredKey,
|
|
41
33
|
extractFieldProvider,
|
|
42
34
|
isConstant,
|
|
43
35
|
type FieldProvider,
|
|
36
|
+
type ImplicitFieldSchema,
|
|
37
|
+
normalizeFieldSchema,
|
|
38
|
+
FieldKind,
|
|
39
|
+
type TreeLeafValue,
|
|
44
40
|
} from "./schemaTypes.js";
|
|
41
|
+
import { NodeKind, tryGetSimpleNodeSchema, type TreeNodeSchema } from "./core/index.js";
|
|
45
42
|
import { SchemaValidationErrors, isNodeInSchema } from "../feature-libraries/index.js";
|
|
46
|
-
import {
|
|
43
|
+
import { tryGetInnerNode } from "./proxyBinding.js";
|
|
44
|
+
import { isObjectNodeSchema } from "./objectNodeTypes.js";
|
|
47
45
|
|
|
48
46
|
/**
|
|
49
47
|
* Module notes:
|
|
@@ -56,93 +54,6 @@ import { tryGetFlexNode } from "./proxyBinding.js";
|
|
|
56
54
|
* schema than on the input data.
|
|
57
55
|
*/
|
|
58
56
|
|
|
59
|
-
/**
|
|
60
|
-
* Transforms an input {@link TypedNode} tree to a {@link MapTree}, and wraps the tree in a {@link CursorWithNode}.
|
|
61
|
-
* @param data - The input tree to be converted.
|
|
62
|
-
* @param allowedTypes - The set of types allowed by the parent context. Used to validate the input tree.
|
|
63
|
-
* @param context - An optional context which, if present, will allow defaults to be created by {@link ContextualFieldProvider}s.
|
|
64
|
-
* If absent, only defaults from {@link ConstantFieldProvider}s will be created.
|
|
65
|
-
* @param schemaValidationPolicy - The stored schema and policy to be used for validation, if the policy says schema
|
|
66
|
-
* validation should happen. If it does, the input tree will be validated against this schema + policy, and an error will
|
|
67
|
-
* be thrown if the tree does not conform to the schema. If undefined, no validation against the stored schema is done.
|
|
68
|
-
*
|
|
69
|
-
* @returns A cursor (in nodes mode) for the mapped tree if the input data was defined. Otherwise, returns `undefined`.
|
|
70
|
-
* @remarks The resulting tree will be populated with any defaults from {@link FieldProvider}s in the schema.
|
|
71
|
-
*/
|
|
72
|
-
export function cursorFromNodeData(
|
|
73
|
-
data: InsertableContent,
|
|
74
|
-
allowedTypes: ImplicitAllowedTypes,
|
|
75
|
-
context?: NodeKeyManager,
|
|
76
|
-
schemaValidationPolicy?: SchemaAndPolicy,
|
|
77
|
-
): CursorWithNode<MapTree>;
|
|
78
|
-
export function cursorFromNodeData(
|
|
79
|
-
data: InsertableContent | undefined,
|
|
80
|
-
allowedTypes: ImplicitAllowedTypes,
|
|
81
|
-
context?: NodeKeyManager,
|
|
82
|
-
schemaValidationPolicy?: SchemaAndPolicy,
|
|
83
|
-
): CursorWithNode<MapTree> | undefined;
|
|
84
|
-
export function cursorFromNodeData(
|
|
85
|
-
data: InsertableContent | undefined,
|
|
86
|
-
allowedTypes: ImplicitAllowedTypes,
|
|
87
|
-
context?: NodeKeyManager,
|
|
88
|
-
schemaValidationPolicy?: SchemaAndPolicy,
|
|
89
|
-
): CursorWithNode<MapTree> | undefined {
|
|
90
|
-
if (data === undefined) {
|
|
91
|
-
return undefined;
|
|
92
|
-
}
|
|
93
|
-
const mappedContent = nodeDataToMapTree(
|
|
94
|
-
data,
|
|
95
|
-
normalizeAllowedTypes(allowedTypes),
|
|
96
|
-
schemaValidationPolicy,
|
|
97
|
-
);
|
|
98
|
-
addDefaultsToMapTree(mappedContent, allowedTypes, context);
|
|
99
|
-
return cursorForMapTreeNode(mappedContent);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Transforms an input {@link InsertableContent} tree to an array of {@link MapTree}s, and wraps the tree in a {@link CursorWithNode}.
|
|
104
|
-
* @param data - The input tree to be converted.
|
|
105
|
-
* @param schema - Schema of the field with which the input `data` is associated.
|
|
106
|
-
* @param context - An optional context which, if present, will allow defaults to be created by {@link ContextualFieldProvider}s.
|
|
107
|
-
* If absent, only defaults from {@link ConstantFieldProvider}s will be created.
|
|
108
|
-
* @param schemaValidationPolicy - The stored schema and policy to be used for validation, if the policy says schema
|
|
109
|
-
* validation should happen. If it does, the input tree will be validated against this schema + policy, and an error will
|
|
110
|
-
* be thrown if the tree does not conform to the schema. If undefined, no validation against the stored schema is done.
|
|
111
|
-
* @remarks The resulting tree will be populated with any defaults from {@link FieldProvider}s in the schema.
|
|
112
|
-
*/
|
|
113
|
-
export function cursorFromFieldData(
|
|
114
|
-
data: InsertableContent,
|
|
115
|
-
schema: FieldSchema,
|
|
116
|
-
context?: NodeKeyManager,
|
|
117
|
-
schemaValidationPolicy?: SchemaAndPolicy,
|
|
118
|
-
): CursorWithNode<MapTree>;
|
|
119
|
-
export function cursorFromFieldData(
|
|
120
|
-
data: InsertableContent | undefined,
|
|
121
|
-
schema: FieldSchema,
|
|
122
|
-
context?: NodeKeyManager,
|
|
123
|
-
schemaValidationPolicy?: SchemaAndPolicy,
|
|
124
|
-
): CursorWithNode<MapTree> | undefined;
|
|
125
|
-
export function cursorFromFieldData(
|
|
126
|
-
data: InsertableContent | undefined,
|
|
127
|
-
schema: FieldSchema,
|
|
128
|
-
context?: NodeKeyManager,
|
|
129
|
-
schemaValidationPolicy?: SchemaAndPolicy,
|
|
130
|
-
): CursorWithNode<MapTree> | undefined {
|
|
131
|
-
if (data === undefined) {
|
|
132
|
-
return undefined;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
// TODO: array node content should not go through here since sequence fields don't exist at this abstraction layer.
|
|
136
|
-
const mappedContent = Array.isArray(data)
|
|
137
|
-
? arrayToMapTreeFields(data, schema.allowedTypeSet, schemaValidationPolicy)
|
|
138
|
-
: [nodeDataToMapTree(data, schema.allowedTypeSet, schemaValidationPolicy)];
|
|
139
|
-
|
|
140
|
-
for (const content of mappedContent) {
|
|
141
|
-
addDefaultsToMapTree(content, schema.allowedTypes, context);
|
|
142
|
-
}
|
|
143
|
-
return cursorForMapTreeField(mappedContent);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
57
|
/**
|
|
147
58
|
* Transforms an input {@link TypedNode} tree to a {@link MapTree}.
|
|
148
59
|
* @param data - The input tree to be converted.
|
|
@@ -157,70 +68,100 @@ export function cursorFromFieldData(
|
|
|
157
68
|
*
|
|
158
69
|
* * `-0` =\> `+0`
|
|
159
70
|
*
|
|
71
|
+
* For fields with a default value, the field may be omitted.
|
|
72
|
+
* If `context` is not provided, defaults which require a context will be left empty which can be out of schema.
|
|
73
|
+
*
|
|
160
74
|
* @param allowedTypes - The set of types allowed by the parent context. Used to validate the input tree.
|
|
161
75
|
* @param context - An optional context which, if present, will allow defaults to be created by {@link ContextualFieldProvider}s.
|
|
162
76
|
* If absent, only defaults from {@link ConstantFieldProvider}s will be created.
|
|
163
77
|
* @param schemaValidationPolicy - The stored schema and policy to be used for validation, if the policy says schema
|
|
164
78
|
* validation should happen. If it does, the input tree will be validated against this schema + policy, and an error will
|
|
165
79
|
* be thrown if the tree does not conform to the schema. If undefined, no validation against the stored schema is done.
|
|
80
|
+
*
|
|
81
|
+
* TODO:BUG: AB#9131
|
|
82
|
+
* This schema validation is done before defaults are provided.
|
|
83
|
+
* This can not easily be fixed by reordering things within this implementation since even at the end of this function defaults requiring a context may not have been filled.
|
|
84
|
+
* This means schema validation reject required fields getting their value from a default like identifier fields.
|
|
85
|
+
*
|
|
166
86
|
* @remarks The resulting tree will be populated with any defaults from {@link FieldProvider}s in the schema.
|
|
87
|
+
*
|
|
88
|
+
* @privateRemarks
|
|
89
|
+
* TODO: AB#9126 AB#9131
|
|
90
|
+
* When an app wants schema validation, we should ensure data is validated. Doing the validation here is not robust (since many callers to this don't have a context and thus can't opt into validation).
|
|
91
|
+
* Additionally the validation here does not correctly handle default values, and introduces a second schema representation which is a bit odd API wise as its typically derivable from the view schema.
|
|
92
|
+
* It may make more sense to validate when hydrating the MapTreeNode when the context is known and the defaults are available.
|
|
93
|
+
* Applying the "parse don't validate" idiom here could help ensuring we capture when the validation optionally happens in the type system to avoid missing or redundant validation,
|
|
94
|
+
* as well as ensuring validation happens after defaulting (or can handle validating data missing defaults)
|
|
167
95
|
*/
|
|
168
96
|
export function mapTreeFromNodeData(
|
|
169
97
|
data: InsertableContent,
|
|
170
98
|
allowedTypes: ImplicitAllowedTypes,
|
|
171
99
|
context?: NodeKeyManager,
|
|
172
100
|
schemaValidationPolicy?: SchemaAndPolicy,
|
|
173
|
-
):
|
|
101
|
+
): ExclusiveMapTree;
|
|
174
102
|
export function mapTreeFromNodeData(
|
|
175
103
|
data: InsertableContent | undefined,
|
|
176
|
-
allowedTypes:
|
|
104
|
+
allowedTypes: ImplicitFieldSchema,
|
|
177
105
|
context?: NodeKeyManager,
|
|
178
106
|
schemaValidationPolicy?: SchemaAndPolicy,
|
|
179
|
-
):
|
|
107
|
+
): ExclusiveMapTree | undefined;
|
|
180
108
|
export function mapTreeFromNodeData(
|
|
181
109
|
data: InsertableContent | undefined,
|
|
182
|
-
allowedTypes:
|
|
110
|
+
allowedTypes: ImplicitFieldSchema,
|
|
183
111
|
context?: NodeKeyManager,
|
|
184
112
|
schemaValidationPolicy?: SchemaAndPolicy,
|
|
185
|
-
):
|
|
113
|
+
): ExclusiveMapTree | undefined {
|
|
114
|
+
const normalizedFieldSchema = normalizeFieldSchema(allowedTypes);
|
|
115
|
+
|
|
186
116
|
if (data === undefined) {
|
|
117
|
+
// TODO: this code-path should support defaults
|
|
118
|
+
if (normalizedFieldSchema.kind !== FieldKind.Optional) {
|
|
119
|
+
throw new UsageError("Got undefined for non-optional field.");
|
|
120
|
+
}
|
|
187
121
|
return undefined;
|
|
188
122
|
}
|
|
189
123
|
|
|
190
|
-
const mapTree = nodeDataToMapTree(
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
124
|
+
const mapTree = nodeDataToMapTree(data, normalizedFieldSchema.allowedTypeSet);
|
|
125
|
+
// Add what defaults can be provided. If no `context` is providing, some defaults may still be missing.
|
|
126
|
+
addDefaultsToMapTree(mapTree, normalizedFieldSchema.allowedTypes, context);
|
|
127
|
+
|
|
128
|
+
// TODO:
|
|
129
|
+
// Since some defaults may still be missing, this can give false positives when context is undefined but schemaValidationPolicy is provided.
|
|
130
|
+
if (schemaValidationPolicy?.policy.validateSchema === true) {
|
|
131
|
+
const maybeError = isNodeInSchema(mapTree, schemaValidationPolicy);
|
|
132
|
+
inSchemaOrThrow(maybeError);
|
|
133
|
+
}
|
|
134
|
+
|
|
196
135
|
return mapTree;
|
|
197
136
|
}
|
|
198
137
|
|
|
138
|
+
/**
|
|
139
|
+
* Copy content from `data` into a MapTree.
|
|
140
|
+
* Does NOT generate and default values for fields.
|
|
141
|
+
* Often throws UsageErrors for invalid data, but may miss some cases.
|
|
142
|
+
* @remarks
|
|
143
|
+
* Output is likely out of schema even for valid input due to missing defaults.
|
|
144
|
+
*/
|
|
199
145
|
function nodeDataToMapTree(
|
|
200
146
|
data: InsertableContent,
|
|
201
147
|
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
202
|
-
|
|
203
|
-
): MapTree;
|
|
204
|
-
function nodeDataToMapTree(
|
|
205
|
-
data: InsertableContent | undefined,
|
|
206
|
-
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
207
|
-
schemaValidationPolicy: SchemaAndPolicy | undefined,
|
|
208
|
-
): MapTree | undefined;
|
|
209
|
-
function nodeDataToMapTree(
|
|
210
|
-
data: InsertableContent | undefined,
|
|
211
|
-
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
212
|
-
schemaValidationPolicy: SchemaAndPolicy | undefined,
|
|
213
|
-
): MapTree | undefined {
|
|
214
|
-
if (data === undefined) {
|
|
215
|
-
return undefined;
|
|
216
|
-
}
|
|
217
|
-
|
|
148
|
+
): ExclusiveMapTree {
|
|
218
149
|
// A special cache path for processing unhydrated nodes.
|
|
219
150
|
// They already have the mapTree, so there is no need to recompute it.
|
|
220
|
-
const flexNode =
|
|
151
|
+
const flexNode = tryGetInnerNode(data);
|
|
221
152
|
if (flexNode !== undefined) {
|
|
222
153
|
if (isMapTreeNode(flexNode)) {
|
|
223
|
-
|
|
154
|
+
if (
|
|
155
|
+
!allowedTypes.has(tryGetSimpleNodeSchema(flexNode.schema) ?? fail("missing schema"))
|
|
156
|
+
) {
|
|
157
|
+
throw new UsageError("Invalid schema for this context.");
|
|
158
|
+
}
|
|
159
|
+
// TODO: mapTreeFromNodeData modifies the trees it gets to add defaults.
|
|
160
|
+
// Using a cached value here can result in this tree having defaults applied to it more than once.
|
|
161
|
+
// This is unnecessary and inefficient, but should be a no-op if all calls provide the same context (which they might not).
|
|
162
|
+
// A cleaner design (avoiding this cast) might be to apply defaults eagerly if they don't need a context, and lazily (when hydrating) if they do.
|
|
163
|
+
// This could avoid having to mutate the map tree to apply defaults, removing the need for this cast.
|
|
164
|
+
return flexNode.mapTree as ExclusiveMapTree;
|
|
224
165
|
} else {
|
|
225
166
|
// The node is already hydrated, meaning that it already got inserted into the tree previously
|
|
226
167
|
throw new UsageError("A node may not be inserted into the tree more than once");
|
|
@@ -229,7 +170,7 @@ function nodeDataToMapTree(
|
|
|
229
170
|
|
|
230
171
|
const schema = getType(data, allowedTypes);
|
|
231
172
|
|
|
232
|
-
let result:
|
|
173
|
+
let result: ExclusiveMapTree;
|
|
233
174
|
switch (schema.kind) {
|
|
234
175
|
case NodeKind.Leaf:
|
|
235
176
|
result = leafToMapTree(data, schema, allowedTypes);
|
|
@@ -247,16 +188,18 @@ function nodeDataToMapTree(
|
|
|
247
188
|
fail(`Unrecognized schema kind: ${schema.kind}.`);
|
|
248
189
|
}
|
|
249
190
|
|
|
250
|
-
if (schemaValidationPolicy?.policy.validateSchema === true) {
|
|
251
|
-
const maybeError = isNodeInSchema(result, schemaValidationPolicy);
|
|
252
|
-
if (maybeError !== SchemaValidationErrors.NoError) {
|
|
253
|
-
throw new UsageError("Tree does not conform to schema.");
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
|
|
257
191
|
return result;
|
|
258
192
|
}
|
|
259
193
|
|
|
194
|
+
/**
|
|
195
|
+
* Throws a UsageError if maybeError indicates a tree is out of schema.
|
|
196
|
+
*/
|
|
197
|
+
export function inSchemaOrThrow(maybeError: SchemaValidationErrors): void {
|
|
198
|
+
if (maybeError !== SchemaValidationErrors.NoError) {
|
|
199
|
+
throw new UsageError("Tree does not conform to schema.");
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
260
203
|
/**
|
|
261
204
|
* Transforms data under a Leaf schema.
|
|
262
205
|
* @param data - The tree data to be transformed. Must be a {@link TreeValue}.
|
|
@@ -268,7 +211,7 @@ function leafToMapTree(
|
|
|
268
211
|
data: InsertableContent,
|
|
269
212
|
schema: TreeNodeSchema,
|
|
270
213
|
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
271
|
-
):
|
|
214
|
+
): ExclusiveMapTree {
|
|
272
215
|
assert(schema.kind === NodeKind.Leaf, 0x921 /* Expected a leaf schema. */);
|
|
273
216
|
if (!isTreeValue(data)) {
|
|
274
217
|
// This rule exists to protect against useless `toString` output like `[object Object]`.
|
|
@@ -293,13 +236,13 @@ function leafToMapTree(
|
|
|
293
236
|
}
|
|
294
237
|
|
|
295
238
|
/**
|
|
296
|
-
* Checks an incoming
|
|
239
|
+
* Checks an incoming {@link TreeLeafValue} to ensure it is compatible with its requirements.
|
|
297
240
|
* For unsupported values with a schema-compatible replacement, return the replacement value.
|
|
298
241
|
* For unsupported values without a schema-compatible replacement, throw.
|
|
299
242
|
* For supported values, return the input.
|
|
300
243
|
*/
|
|
301
244
|
function mapValueWithFallbacks(
|
|
302
|
-
value:
|
|
245
|
+
value: TreeLeafValue,
|
|
303
246
|
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
304
247
|
): TreeValue {
|
|
305
248
|
switch (typeof value) {
|
|
@@ -321,8 +264,19 @@ function mapValueWithFallbacks(
|
|
|
321
264
|
return value;
|
|
322
265
|
}
|
|
323
266
|
}
|
|
324
|
-
|
|
267
|
+
case "string":
|
|
268
|
+
// TODO:
|
|
269
|
+
// This should detect invalid strings. Something like @stdlib/regexp-utf16-unpaired-surrogate could be used to do this.
|
|
270
|
+
// See SchemaFactory.string for details.
|
|
271
|
+
case "boolean":
|
|
325
272
|
return value;
|
|
273
|
+
case "object": {
|
|
274
|
+
if (value === null || isFluidHandle(value)) {
|
|
275
|
+
return value;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
default:
|
|
279
|
+
throw new TypeError(`Received unsupported leaf value: ${value}.`);
|
|
326
280
|
}
|
|
327
281
|
}
|
|
328
282
|
|
|
@@ -330,90 +284,88 @@ function mapValueWithFallbacks(
|
|
|
330
284
|
* Transforms data under an Array schema.
|
|
331
285
|
* @param data - The tree data to be transformed.
|
|
332
286
|
* @param allowedTypes - The set of types allowed by the parent context. Used to validate the input tree.
|
|
333
|
-
* @param schemaValidationPolicy - The stored schema and policy to be used for validation, if the policy says schema
|
|
334
|
-
* validation should happen. If it does, the input tree will be validated against this schema + policy, and an error will
|
|
335
|
-
* be thrown if the tree does not conform to the schema. If undefined, no validation against the stored schema is done.
|
|
336
287
|
*/
|
|
337
|
-
function
|
|
338
|
-
|
|
288
|
+
function arrayChildToMapTree(
|
|
289
|
+
child: InsertableContent,
|
|
339
290
|
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
childWithFallback = null;
|
|
350
|
-
} else {
|
|
351
|
-
throw new TypeError(`Received unsupported array entry value: ${child}.`);
|
|
352
|
-
}
|
|
291
|
+
): ExclusiveMapTree {
|
|
292
|
+
// We do not support undefined sequence entries.
|
|
293
|
+
// If we encounter an undefined entry, use null instead if supported by the schema, otherwise throw.
|
|
294
|
+
let childWithFallback = child;
|
|
295
|
+
if (child === undefined) {
|
|
296
|
+
if (allowedTypes.has(nullSchema)) {
|
|
297
|
+
childWithFallback = null;
|
|
298
|
+
} else {
|
|
299
|
+
throw new TypeError(`Received unsupported array entry value: ${child}.`);
|
|
353
300
|
}
|
|
354
|
-
const mappedChild = nodeDataToMapTree(
|
|
355
|
-
childWithFallback,
|
|
356
|
-
allowedTypes,
|
|
357
|
-
schemaValidationPolicy,
|
|
358
|
-
);
|
|
359
|
-
mappedData.push(mappedChild);
|
|
360
301
|
}
|
|
361
|
-
|
|
362
|
-
return mappedData;
|
|
302
|
+
return nodeDataToMapTree(childWithFallback, allowedTypes);
|
|
363
303
|
}
|
|
364
304
|
|
|
365
305
|
/**
|
|
366
306
|
* Transforms data under an Array schema.
|
|
367
|
-
* @param data - The tree data to be transformed. Must be an
|
|
307
|
+
* @param data - The tree data to be transformed. Must be an iterable.
|
|
368
308
|
* @param schema - The schema associated with the value.
|
|
369
309
|
* @param schemaValidationPolicy - The stored schema and policy to be used for validation, if the policy says schema
|
|
370
310
|
* validation should happen. If it does, the input tree will be validated against this schema + policy, and an error will
|
|
371
311
|
* be thrown if the tree does not conform to the schema. If undefined, no validation against the stored schema is done.
|
|
372
312
|
*/
|
|
373
|
-
function arrayToMapTree(data: InsertableContent, schema: TreeNodeSchema):
|
|
313
|
+
function arrayToMapTree(data: InsertableContent, schema: TreeNodeSchema): ExclusiveMapTree {
|
|
374
314
|
assert(schema.kind === NodeKind.Array, 0x922 /* Expected an array schema. */);
|
|
375
|
-
if (!
|
|
315
|
+
if (!(typeof data === "object" && data !== null && Symbol.iterator in data)) {
|
|
376
316
|
throw new UsageError(`Input data is incompatible with Array schema: ${data}`);
|
|
377
317
|
}
|
|
378
318
|
|
|
379
319
|
const allowedChildTypes = normalizeAllowedTypes(schema.info as ImplicitAllowedTypes);
|
|
380
320
|
|
|
381
|
-
const mappedData =
|
|
321
|
+
const mappedData = Array.from(data, (child) =>
|
|
322
|
+
arrayChildToMapTree(child, allowedChildTypes),
|
|
323
|
+
);
|
|
382
324
|
|
|
383
|
-
// Array
|
|
384
|
-
const fieldsEntries: [
|
|
385
|
-
mappedData.length === 0 ? [] : [[EmptyKey, mappedData]];
|
|
386
|
-
const fields = new Map<FieldKey, MapTree[]>(fieldsEntries);
|
|
325
|
+
// Array nodes have a single `EmptyKey` field:
|
|
326
|
+
const fieldsEntries = mappedData.length === 0 ? [] : ([[EmptyKey, mappedData]] as const);
|
|
387
327
|
|
|
388
328
|
return {
|
|
389
329
|
type: brand(schema.identifier),
|
|
390
|
-
fields,
|
|
330
|
+
fields: new Map(fieldsEntries),
|
|
391
331
|
};
|
|
392
332
|
}
|
|
393
333
|
|
|
394
334
|
/**
|
|
395
335
|
* Transforms data under a Map schema.
|
|
396
|
-
* @param data - The tree data to be transformed. Must be
|
|
336
|
+
* @param data - The tree data to be transformed. Must be an iterable.
|
|
397
337
|
* @param schema - The schema associated with the value.
|
|
398
338
|
* @param schemaValidationPolicy - The stored schema and policy to be used for validation, if the policy says schema
|
|
399
339
|
* validation should happen. If it does, the input tree will be validated against this schema + policy, and an error will
|
|
400
340
|
* be thrown if the tree does not conform to the schema. If undefined, no validation against the stored schema is done.
|
|
401
341
|
*/
|
|
402
|
-
function mapToMapTree(data: InsertableContent, schema: TreeNodeSchema):
|
|
342
|
+
function mapToMapTree(data: InsertableContent, schema: TreeNodeSchema): ExclusiveMapTree {
|
|
403
343
|
assert(schema.kind === NodeKind.Map, 0x923 /* Expected a Map schema. */);
|
|
404
|
-
if (!(data
|
|
344
|
+
if (!(typeof data === "object" && data !== null)) {
|
|
405
345
|
throw new UsageError(`Input data is incompatible with Map schema: ${data}`);
|
|
406
346
|
}
|
|
407
347
|
|
|
408
348
|
const allowedChildTypes = normalizeAllowedTypes(schema.info as ImplicitAllowedTypes);
|
|
409
349
|
|
|
410
|
-
const
|
|
411
|
-
|
|
350
|
+
const fieldsIterator = (
|
|
351
|
+
Symbol.iterator in data
|
|
352
|
+
? // Support iterables of key value pairs (including Map objects)
|
|
353
|
+
data
|
|
354
|
+
: // Support record objects for JSON style Map data
|
|
355
|
+
Object.entries(data)
|
|
356
|
+
) as Iterable<readonly [string, InsertableContent]>;
|
|
357
|
+
|
|
358
|
+
const transformedFields = new Map<FieldKey, ExclusiveMapTree[]>();
|
|
359
|
+
for (const item of fieldsIterator) {
|
|
360
|
+
if (!isReadonlyArray(item) || item.length !== 2 || typeof item[0] !== "string") {
|
|
361
|
+
throw new UsageError(`Input data is incompatible with map entry: ${item}`);
|
|
362
|
+
}
|
|
363
|
+
const [key, value] = item;
|
|
412
364
|
assert(!transformedFields.has(brand(key)), 0x84c /* Keys should not be duplicated */);
|
|
413
365
|
|
|
414
366
|
// Omit undefined values - an entry with an undefined value is equivalent to one that has been removed or omitted
|
|
415
367
|
if (value !== undefined) {
|
|
416
|
-
const mappedField = nodeDataToMapTree(value, allowedChildTypes
|
|
368
|
+
const mappedField = nodeDataToMapTree(value, allowedChildTypes);
|
|
417
369
|
transformedFields.set(brand(key), [mappedField]);
|
|
418
370
|
}
|
|
419
371
|
}
|
|
@@ -429,19 +381,20 @@ function mapToMapTree(data: InsertableContent, schema: TreeNodeSchema): MapTree
|
|
|
429
381
|
* @param data - The tree data to be transformed. Must be a Record-like object.
|
|
430
382
|
* @param schema - The schema associated with the value.
|
|
431
383
|
*/
|
|
432
|
-
function objectToMapTree(data: InsertableContent, schema: TreeNodeSchema):
|
|
433
|
-
assert(schema
|
|
384
|
+
function objectToMapTree(data: InsertableContent, schema: TreeNodeSchema): ExclusiveMapTree {
|
|
385
|
+
assert(isObjectNodeSchema(schema), 0x924 /* Expected an Object schema. */);
|
|
434
386
|
if (typeof data !== "object" || data === null) {
|
|
435
387
|
throw new UsageError(`Input data is incompatible with Object schema: ${data}`);
|
|
436
388
|
}
|
|
437
389
|
|
|
438
|
-
const fields = new Map<FieldKey,
|
|
390
|
+
const fields = new Map<FieldKey, ExclusiveMapTree[]>();
|
|
439
391
|
|
|
440
|
-
// Loop through field keys without data
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
if (
|
|
444
|
-
|
|
392
|
+
// Loop through field keys without data.
|
|
393
|
+
// This does NOT apply defaults.
|
|
394
|
+
for (const [key, fieldInfo] of schema.flexKeyMap) {
|
|
395
|
+
if (Object.hasOwnProperty.call(data, key)) {
|
|
396
|
+
const value = (data as Record<string, InsertableContent>)[key as string];
|
|
397
|
+
setFieldValue(fields, value, fieldInfo.schema, fieldInfo.storedKey);
|
|
445
398
|
}
|
|
446
399
|
}
|
|
447
400
|
|
|
@@ -455,31 +408,16 @@ function setFieldValue(
|
|
|
455
408
|
fields: Map<FieldKey, readonly MapTree[]>,
|
|
456
409
|
fieldValue: InsertableContent | undefined,
|
|
457
410
|
fieldSchema: FieldSchema,
|
|
458
|
-
|
|
411
|
+
flexKey: FieldKey,
|
|
459
412
|
): void {
|
|
460
413
|
if (fieldValue !== undefined) {
|
|
461
|
-
const mappedChildTree = nodeDataToMapTree(
|
|
462
|
-
fieldValue,
|
|
463
|
-
fieldSchema.allowedTypeSet,
|
|
464
|
-
undefined,
|
|
465
|
-
);
|
|
466
|
-
const flexKey: FieldKey = brand(getStoredKey(key, fieldSchema));
|
|
414
|
+
const mappedChildTree = nodeDataToMapTree(fieldValue, fieldSchema.allowedTypeSet);
|
|
467
415
|
|
|
468
416
|
assert(!fields.has(flexKey), 0x956 /* Keys must not be duplicated */);
|
|
469
417
|
fields.set(flexKey, [mappedChildTree]);
|
|
470
418
|
}
|
|
471
419
|
}
|
|
472
420
|
|
|
473
|
-
function getObjectFieldSchema(schema: TreeNodeSchema, key: string): FieldSchema {
|
|
474
|
-
assert(schema.kind === NodeKind.Object, 0x926 /* Expected an Object schema. */);
|
|
475
|
-
const fields = schema.info as Record<string, ImplicitFieldSchema>;
|
|
476
|
-
if (fields[key] === undefined) {
|
|
477
|
-
fail(`Field "${key}" not found in schema "${schema.identifier}".`);
|
|
478
|
-
} else {
|
|
479
|
-
return normalizeFieldSchema(fields[key]);
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
|
|
483
421
|
function getType(
|
|
484
422
|
data: InsertableContent,
|
|
485
423
|
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
@@ -496,31 +434,17 @@ function getType(
|
|
|
496
434
|
possibleTypes.length !== 0,
|
|
497
435
|
0x84e /* data is incompatible with all types allowed by the schema */,
|
|
498
436
|
);
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
() =>
|
|
437
|
+
if (possibleTypes.length !== 1) {
|
|
438
|
+
throw new UsageError(
|
|
502
439
|
`The provided data is compatible with more than one type allowed by the schema.
|
|
503
440
|
The set of possible types is ${JSON.stringify([
|
|
504
441
|
...possibleTypes.map((schema) => schema.identifier),
|
|
505
442
|
])}.
|
|
506
443
|
Explicitly construct an unhydrated node of the desired type to disambiguate.
|
|
507
444
|
For class-based schema, this can be done by replacing an expression like "{foo: 1}" with "new MySchema({foo: 1})".`,
|
|
508
|
-
|
|
509
|
-
return possibleTypes[0];
|
|
510
|
-
}
|
|
511
|
-
|
|
512
|
-
/**
|
|
513
|
-
* An invalid tree has been provided, presumably by the user of this package.
|
|
514
|
-
* Throw and an error that properly preserves the message (unlike asserts which will get hard to read short codes intended for package internal logic errors).
|
|
515
|
-
*/
|
|
516
|
-
function invalidInput(message: string): never {
|
|
517
|
-
throw new UsageError(message);
|
|
518
|
-
}
|
|
519
|
-
|
|
520
|
-
function checkInput(condition: boolean, message: string | (() => string)): asserts condition {
|
|
521
|
-
if (!condition) {
|
|
522
|
-
invalidInput(typeof message === "string" ? message : message());
|
|
445
|
+
);
|
|
523
446
|
}
|
|
447
|
+
return possibleTypes[0] ?? oob();
|
|
524
448
|
}
|
|
525
449
|
|
|
526
450
|
/**
|
|
@@ -530,13 +454,41 @@ export function getPossibleTypes(
|
|
|
530
454
|
allowedTypes: ReadonlySet<TreeNodeSchema>,
|
|
531
455
|
data: ContextuallyTypedNodeData,
|
|
532
456
|
): TreeNodeSchema[] {
|
|
457
|
+
let best = CompatibilityLevel.None;
|
|
533
458
|
const possibleTypes: TreeNodeSchema[] = [];
|
|
534
459
|
for (const schema of allowedTypes) {
|
|
535
|
-
|
|
460
|
+
const level = shallowCompatibilityTest(schema, data);
|
|
461
|
+
if (level > best) {
|
|
462
|
+
possibleTypes.length = 0;
|
|
463
|
+
best = level;
|
|
464
|
+
}
|
|
465
|
+
if (best === level) {
|
|
536
466
|
possibleTypes.push(schema);
|
|
537
467
|
}
|
|
538
468
|
}
|
|
539
|
-
return possibleTypes;
|
|
469
|
+
return best === CompatibilityLevel.None ? [] : possibleTypes;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
/**
|
|
473
|
+
* Indicates a compatibility level for inferring a schema to apply to insertable data.
|
|
474
|
+
* @remarks
|
|
475
|
+
* Only the highest compatibility options are used.
|
|
476
|
+
* This approach allows adding new possible matching at a new lower compatibility level as a non breaking change,
|
|
477
|
+
* since that way they can't make a case that was compatible before ambiguous now.
|
|
478
|
+
*/
|
|
479
|
+
enum CompatibilityLevel {
|
|
480
|
+
/**
|
|
481
|
+
* Not compatible. Constructor typing indicates incompatibility.
|
|
482
|
+
*/
|
|
483
|
+
None = 0,
|
|
484
|
+
/**
|
|
485
|
+
* Additional compatibility cases added in Fluid Framework 2.2.
|
|
486
|
+
*/
|
|
487
|
+
Low = 1,
|
|
488
|
+
/**
|
|
489
|
+
* Compatible in Fluid Framework 2.0.
|
|
490
|
+
*/
|
|
491
|
+
Normal = 2,
|
|
540
492
|
}
|
|
541
493
|
|
|
542
494
|
/**
|
|
@@ -549,43 +501,69 @@ export function getPossibleTypes(
|
|
|
549
501
|
function shallowCompatibilityTest(
|
|
550
502
|
schema: TreeNodeSchema,
|
|
551
503
|
data: ContextuallyTypedNodeData,
|
|
552
|
-
):
|
|
504
|
+
): CompatibilityLevel {
|
|
553
505
|
assert(
|
|
554
506
|
data !== undefined,
|
|
555
507
|
0x889 /* undefined cannot be used as contextually typed data. Use ContextuallyTypedFieldData. */,
|
|
556
508
|
);
|
|
557
509
|
|
|
558
510
|
if (isTreeValue(data)) {
|
|
559
|
-
return allowsValue(schema, data);
|
|
511
|
+
return allowsValue(schema, data) ? CompatibilityLevel.Normal : CompatibilityLevel.None;
|
|
560
512
|
}
|
|
561
513
|
if (schema.kind === NodeKind.Leaf) {
|
|
562
|
-
return
|
|
514
|
+
return CompatibilityLevel.None;
|
|
563
515
|
}
|
|
564
516
|
|
|
565
|
-
|
|
566
|
-
|
|
517
|
+
// Typing (of schema based constructors and thus implicit node construction)
|
|
518
|
+
// allows iterables for constructing maps and arrays.
|
|
519
|
+
// Some users of this API may have unions of maps and arrays,
|
|
520
|
+
// and rely on Arrays ending up as array nodes and maps as Map nodes,
|
|
521
|
+
// despite both being iterable and thus compatible with both.
|
|
522
|
+
// This uses a priority based system where an array would be parsed as an array when unioned with a map,
|
|
523
|
+
// but if in a map only context, could still be used as a map.
|
|
524
|
+
|
|
525
|
+
if (data instanceof Map) {
|
|
526
|
+
switch (schema.kind) {
|
|
527
|
+
case NodeKind.Map:
|
|
528
|
+
return CompatibilityLevel.Normal;
|
|
529
|
+
case NodeKind.Array:
|
|
530
|
+
// Maps are iterable, so type checking does allow constructing an ArrayNode from a map if the array's type is an array that includes the key and value types of the map.
|
|
531
|
+
return CompatibilityLevel.Low;
|
|
532
|
+
default:
|
|
533
|
+
return CompatibilityLevel.None;
|
|
534
|
+
}
|
|
567
535
|
}
|
|
568
536
|
|
|
569
537
|
if (isReadonlyArray(data)) {
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
538
|
+
switch (schema.kind) {
|
|
539
|
+
case NodeKind.Array:
|
|
540
|
+
return CompatibilityLevel.Normal;
|
|
541
|
+
case NodeKind.Map:
|
|
542
|
+
// Arrays are iterable, so type checking does allow constructing an array from a MapNode from an if the array's type is key values pairs for the map.
|
|
543
|
+
return CompatibilityLevel.Low;
|
|
544
|
+
default:
|
|
545
|
+
return CompatibilityLevel.None;
|
|
546
|
+
}
|
|
574
547
|
}
|
|
575
548
|
|
|
576
|
-
|
|
577
|
-
|
|
549
|
+
const mapOrArray = schema.kind === NodeKind.Array || schema.kind === NodeKind.Map;
|
|
550
|
+
|
|
551
|
+
if (Symbol.iterator in data) {
|
|
552
|
+
return mapOrArray ? CompatibilityLevel.Normal : CompatibilityLevel.None;
|
|
578
553
|
}
|
|
579
|
-
|
|
580
|
-
|
|
554
|
+
|
|
555
|
+
// At this point, it is assumed data is a record-like object since all the other cases have been eliminated.
|
|
556
|
+
|
|
557
|
+
if (schema.kind === NodeKind.Array) {
|
|
558
|
+
return CompatibilityLevel.None;
|
|
581
559
|
}
|
|
582
560
|
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
return
|
|
561
|
+
if (schema.kind === NodeKind.Map) {
|
|
562
|
+
// When not unioned with an ObjectNode, allow objects to be used to create maps.
|
|
563
|
+
return CompatibilityLevel.Low;
|
|
586
564
|
}
|
|
587
565
|
|
|
588
|
-
|
|
566
|
+
assert(isObjectNodeSchema(schema), 0x9e6 /* unexpected schema kind */);
|
|
589
567
|
|
|
590
568
|
// TODO: Improve type inference by making this logic more thorough. Handle at least:
|
|
591
569
|
// * Types which are strict subsets of other types in the same polymorphic union
|
|
@@ -595,14 +573,13 @@ function shallowCompatibilityTest(
|
|
|
595
573
|
// TODO#7441: Consider allowing data to be inserted which has keys that are extraneous/unknown to the schema (those keys are ignored)
|
|
596
574
|
|
|
597
575
|
// If the schema has a required key which is not present in the input object, reject it.
|
|
598
|
-
for (const [fieldKey, fieldSchema] of
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
return false;
|
|
576
|
+
for (const [fieldKey, fieldSchema] of schema.fields) {
|
|
577
|
+
if (data[fieldKey] === undefined && fieldSchema.requiresValue) {
|
|
578
|
+
return CompatibilityLevel.None;
|
|
602
579
|
}
|
|
603
580
|
}
|
|
604
581
|
|
|
605
|
-
return
|
|
582
|
+
return CompatibilityLevel.Normal;
|
|
606
583
|
}
|
|
607
584
|
|
|
608
585
|
function allowsValue(schema: TreeNodeSchema, value: TreeValue): boolean {
|
|
@@ -626,7 +603,10 @@ export type ContextuallyTypedNodeData =
|
|
|
626
603
|
| boolean
|
|
627
604
|
// eslint-disable-next-line @rushstack/no-new-null
|
|
628
605
|
| null
|
|
629
|
-
| readonly ContextuallyTypedNodeData[]
|
|
606
|
+
| readonly ContextuallyTypedNodeData[]
|
|
607
|
+
| ReadonlyMap<string, ContextuallyTypedNodeData>
|
|
608
|
+
| Iterable<ContextuallyTypedNodeData>
|
|
609
|
+
| Iterable<[string, ContextuallyTypedNodeData]>;
|
|
630
610
|
|
|
631
611
|
/**
|
|
632
612
|
* Content of a field which needs external schema information to interpret.
|
|
@@ -641,12 +621,6 @@ export type ContextuallyTypedFieldData = ContextuallyTypedNodeData | undefined;
|
|
|
641
621
|
* Object case of {@link ContextuallyTypedNodeData}.
|
|
642
622
|
*/
|
|
643
623
|
export interface ContextuallyTypedNodeDataObject {
|
|
644
|
-
/**
|
|
645
|
-
* The type of the node.
|
|
646
|
-
* If this node is well-formed, it must follow this schema.
|
|
647
|
-
*/
|
|
648
|
-
readonly [typeNameSymbol]?: string;
|
|
649
|
-
|
|
650
624
|
/**
|
|
651
625
|
* Fields of this node, indexed by their field keys.
|
|
652
626
|
*
|
|
@@ -664,17 +638,16 @@ export interface ContextuallyTypedNodeDataObject {
|
|
|
664
638
|
}
|
|
665
639
|
|
|
666
640
|
/**
|
|
667
|
-
* Walk the given {@link
|
|
668
|
-
* @param mapTree - The tree to populate with defaults
|
|
641
|
+
* Walk the given {@link ExclusiveMapTree} and deeply provide any field defaults for fields that are missing in the tree but present in the schema.
|
|
642
|
+
* @param mapTree - The tree to populate with defaults. This is borrowed: no references to it are kept by this function.
|
|
669
643
|
* @param allowedTypes - Some {@link TreeNodeSchema}, at least one of which the input tree must conform to
|
|
670
644
|
* @param context - An optional context for generating defaults.
|
|
671
645
|
* If present, all applicable defaults will be provided.
|
|
672
646
|
* If absent, only defaults produced by a {@link ConstantFieldProvider} will be provided, and defaults produced by a {@link ContextualFieldProvider} will be ignored.
|
|
673
|
-
* @remarks This function mutates the input tree by adding new fields to the field maps where applicable.
|
|
674
|
-
* @privateRemarks TODO: Create a more established type for mutable MapTrees, and use where appropriate.
|
|
647
|
+
* @remarks This function mutates the input tree by deeply adding new fields to the field maps where applicable.
|
|
675
648
|
*/
|
|
676
|
-
function addDefaultsToMapTree(
|
|
677
|
-
mapTree:
|
|
649
|
+
export function addDefaultsToMapTree(
|
|
650
|
+
mapTree: ExclusiveMapTree,
|
|
678
651
|
allowedTypes: ImplicitAllowedTypes,
|
|
679
652
|
context: NodeKeyManager | undefined,
|
|
680
653
|
): void {
|
|
@@ -682,6 +655,32 @@ function addDefaultsToMapTree(
|
|
|
682
655
|
find(normalizeAllowedTypes(allowedTypes), (s) => s.identifier === mapTree.type) ??
|
|
683
656
|
fail("MapTree is incompatible with schema");
|
|
684
657
|
|
|
658
|
+
if (isObjectNodeSchema(schema)) {
|
|
659
|
+
for (const [_key, fieldInfo] of schema.flexKeyMap) {
|
|
660
|
+
const field = mapTree.fields.get(fieldInfo.storedKey);
|
|
661
|
+
if (field !== undefined) {
|
|
662
|
+
for (const child of field) {
|
|
663
|
+
addDefaultsToMapTree(child, fieldInfo.schema.allowedTypes, context);
|
|
664
|
+
}
|
|
665
|
+
} else {
|
|
666
|
+
const defaultProvider = fieldInfo.schema.props?.defaultProvider;
|
|
667
|
+
if (defaultProvider !== undefined) {
|
|
668
|
+
const fieldProvider = extractFieldProvider(defaultProvider);
|
|
669
|
+
const data = provideDefault(fieldProvider, context);
|
|
670
|
+
if (data !== undefined) {
|
|
671
|
+
setFieldValue(mapTree.fields, data, fieldInfo.schema, fieldInfo.storedKey);
|
|
672
|
+
// call addDefaultsToMapTree on newly inserted default values
|
|
673
|
+
for (const child of mapTree.fields.get(fieldInfo.storedKey) ??
|
|
674
|
+
fail("Expected field to be populated")) {
|
|
675
|
+
addDefaultsToMapTree(child, fieldInfo.schema.allowedTypes, context);
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
return;
|
|
682
|
+
}
|
|
683
|
+
|
|
685
684
|
switch (schema.kind) {
|
|
686
685
|
case NodeKind.Array:
|
|
687
686
|
case NodeKind.Map:
|
|
@@ -693,46 +692,18 @@ function addDefaultsToMapTree(
|
|
|
693
692
|
}
|
|
694
693
|
}
|
|
695
694
|
break;
|
|
696
|
-
case NodeKind.Object:
|
|
697
|
-
{
|
|
698
|
-
for (const [key, fieldSchema] of Object.entries(
|
|
699
|
-
schema.info as Record<FieldKey, ImplicitFieldSchema>,
|
|
700
|
-
) as [FieldKey, ImplicitFieldSchema][]) {
|
|
701
|
-
const field = mapTree.fields.get(key);
|
|
702
|
-
if (field !== undefined) {
|
|
703
|
-
for (const child of field) {
|
|
704
|
-
addDefaultsToMapTree(
|
|
705
|
-
child,
|
|
706
|
-
getObjectFieldSchema(schema, key).allowedTypes,
|
|
707
|
-
context,
|
|
708
|
-
);
|
|
709
|
-
}
|
|
710
|
-
} else if (fieldSchema instanceof FieldSchema) {
|
|
711
|
-
const defaultProvider = fieldSchema.props?.defaultProvider;
|
|
712
|
-
if (defaultProvider !== undefined) {
|
|
713
|
-
const fieldProvider = extractFieldProvider(defaultProvider);
|
|
714
|
-
const data = provideDefault(fieldProvider, context);
|
|
715
|
-
if (data !== undefined) {
|
|
716
|
-
const mutableMapTree = mapTree as typeof mapTree & {
|
|
717
|
-
fields: Map<FieldKey, readonly MapTree[]>;
|
|
718
|
-
};
|
|
719
|
-
setFieldValue(mutableMapTree.fields, data, fieldSchema, key);
|
|
720
|
-
for (const child of mutableMapTree.fields.get(key) ??
|
|
721
|
-
fail("Expected field to be populated")) {
|
|
722
|
-
addDefaultsToMapTree(child, fieldSchema.allowedTypes, context);
|
|
723
|
-
}
|
|
724
|
-
}
|
|
725
|
-
}
|
|
726
|
-
}
|
|
727
|
-
}
|
|
728
|
-
}
|
|
729
|
-
break;
|
|
730
695
|
default:
|
|
731
696
|
assert(schema.kind === NodeKind.Leaf, 0x989 /* Unrecognized schema kind */);
|
|
732
697
|
break;
|
|
733
698
|
}
|
|
734
699
|
}
|
|
735
700
|
|
|
701
|
+
/**
|
|
702
|
+
* Provides the default value (which can be undefined, for example with optional fields), or undefined if a context is required but not provided.
|
|
703
|
+
* @privateRemarks
|
|
704
|
+
* It is a bit concerning that there is no way for the caller to know when undefined is returned if that is the default value, or a context was required.
|
|
705
|
+
* TODO: maybe better formalize the two stage defaulting (without then with context), or rework this design we only do one stage.
|
|
706
|
+
*/
|
|
736
707
|
function provideDefault(
|
|
737
708
|
fieldProvider: FieldProvider,
|
|
738
709
|
context: NodeKeyManager | undefined,
|
|
@@ -742,6 +713,9 @@ function provideDefault(
|
|
|
742
713
|
} else {
|
|
743
714
|
if (isConstant(fieldProvider)) {
|
|
744
715
|
return fieldProvider();
|
|
716
|
+
} else {
|
|
717
|
+
// Leaving field empty despite it needing a default value since a context was required and non was provided.
|
|
718
|
+
// Caller better handle this case by providing the default at some other point in time when the context becomes known.
|
|
745
719
|
}
|
|
746
720
|
}
|
|
747
721
|
}
|