@fluidframework/tree 2.1.0 → 2.3.0-288113
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 +158 -28
- package/api-report/tree.beta.api.md +59 -28
- package/api-report/tree.public.api.md +59 -28
- package/dist/beta.d.ts +4 -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 +4 -16
- package/dist/core/tree/anchorSet.d.ts.map +1 -1
- package/dist/core/tree/anchorSet.js +12 -5
- 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 +7 -5
- package/dist/events/events.d.ts.map +1 -1
- package/dist/events/events.js +5 -3
- 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 -51
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-map-tree/mapTreeNode.js +171 -180
- 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 -373
- package/dist/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js +1 -34
- package/dist/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/dist/feature-libraries/flex-tree/index.d.ts +2 -2
- package/dist/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/index.js +1 -3
- package/dist/feature-libraries/flex-tree/index.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.d.ts +9 -27
- package/dist/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyField.js +26 -102
- package/dist/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts +3 -18
- package/dist/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/dist/feature-libraries/flex-tree/lazyNode.js +2 -126
- 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 -20
- 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 +36 -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.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/public.d.ts +4 -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} +7 -6
- package/dist/simple-tree/api/treeNodeApi.d.ts.map +1 -0
- package/dist/simple-tree/{treeNodeApi.js → api/treeNodeApi.js} +57 -21
- 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 +72 -85
- 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 +70 -0
- package/dist/simple-tree/core/treeNodeKernel.d.ts.map +1 -0
- package/dist/simple-tree/core/treeNodeKernel.js +164 -0
- 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/{lib/simple-tree → dist/simple-tree/core}/types.d.ts +50 -79
- 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 +4 -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 +4 -16
- package/lib/core/tree/anchorSet.d.ts.map +1 -1
- package/lib/core/tree/anchorSet.js +12 -5
- 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 +7 -5
- package/lib/events/events.d.ts.map +1 -1
- package/lib/events/events.js +5 -3
- 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 -51
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-map-tree/mapTreeNode.js +172 -180
- 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 -373
- package/lib/feature-libraries/flex-tree/flexTreeTypes.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js +0 -33
- package/lib/feature-libraries/flex-tree/flexTreeTypes.js.map +1 -1
- package/lib/feature-libraries/flex-tree/index.d.ts +2 -2
- package/lib/feature-libraries/flex-tree/index.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/index.js +1 -1
- package/lib/feature-libraries/flex-tree/index.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.d.ts +9 -27
- package/lib/feature-libraries/flex-tree/lazyField.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyField.js +28 -104
- package/lib/feature-libraries/flex-tree/lazyField.js.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts +3 -18
- package/lib/feature-libraries/flex-tree/lazyNode.d.ts.map +1 -1
- package/lib/feature-libraries/flex-tree/lazyNode.js +5 -126
- 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 +6 -7
- 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 +8 -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.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/public.d.ts +4 -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} +7 -6
- package/lib/simple-tree/api/treeNodeApi.d.ts.map +1 -0
- package/lib/simple-tree/{treeNodeApi.js → api/treeNodeApi.js} +55 -19
- 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 +59 -70
- 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 +70 -0
- package/lib/simple-tree/core/treeNodeKernel.d.ts.map +1 -0
- package/lib/simple-tree/core/treeNodeKernel.js +157 -0
- 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/{dist/simple-tree → lib/simple-tree/core}/types.d.ts +50 -79
- 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 +27 -26
- 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 +10 -6
- 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 -288
- package/src/feature-libraries/flex-tree/context.ts +0 -1
- package/src/feature-libraries/flex-tree/flexTreeTypes.ts +27 -524
- package/src/feature-libraries/flex-tree/index.ts +1 -18
- package/src/feature-libraries/flex-tree/lazyField.ts +38 -214
- package/src/feature-libraries/flex-tree/lazyNode.ts +3 -215
- 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 -49
- 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 +32 -242
- 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} +84 -41
- package/src/simple-tree/api/verboseTree.ts +415 -0
- package/src/simple-tree/arrayNode.ts +103 -110
- package/src/simple-tree/core/README.md +11 -0
- package/src/simple-tree/core/index.ts +34 -0
- package/src/simple-tree/{schemaCaching.ts → core/schemaCaching.ts} +3 -37
- package/src/simple-tree/core/treeNodeKernel.ts +200 -0
- package/src/simple-tree/core/treeNodeSchema.ts +184 -0
- package/src/simple-tree/core/types.ts +281 -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 +59 -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 +0 -83
- 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 +0 -79
- 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/src/simple-tree/treeNodeKernel.ts +0 -91
- /package/dist/simple-tree/{testRecursiveDomain.js → api/testRecursiveDomain.js} +0 -0
- /package/lib/simple-tree/{testRecursiveDomain.js → api/testRecursiveDomain.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editableTreeBinder.js","sourceRoot":"","sources":["../../src/feature-libraries/editableTreeBinder.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from \"@fluidframework/core-utils/internal\";\n\nimport {\n\ttype DetachedPlaceUpPath,\n\ttype DetachedRangeUpPath,\n\ttype FieldKey,\n\ttype PathVisitor,\n\ttype PlaceUpPath,\n\ttype ProtoNodes,\n\ttype RangeUpPath,\n\ttype UpPath,\n\ttopDownPath,\n} from \"../core/index.js\";\nimport type { Listeners, Listenable } from \"../events/index.js\";\nimport { brand, getOrCreate } from \"../util/index.js\";\n\nimport type { FlexTreeNode } from \"./flex-tree/index.js\";\n\n// TODO:\n// Tests for this file were removed along with the old editable-tree implementation in the commit that includes this note.\n// They were a bit heavily tied to the testing patterns specific to the old editable-tree and will need significant changes to be restored.\n\n/**\n * Binder events reflecting atomic data operations\n * @internal\n */\nexport interface OperationBinderEvents {\n\tremove(context: RemoveBindingContext): void;\n\tinsert(context: InsertBindingContext): void;\n\tbatch(context: BatchBindingContext): void;\n}\n\n/**\n * Binder events signaling state invalidation\n * @internal\n */\nexport interface InvalidationBinderEvents {\n\tinvalidation(context: InvalidationBindingContext): void;\n}\n\n/**\n * Compare function, generic.\n *\n * @internal\n */\nexport type CompareFunction<T> = (a: T, b: T) => number;\n\n/**\n * Compare function for binder events.\n *\n * @internal\n */\nexport type BinderEventsCompare = CompareFunction<VisitorBindingContext>;\n\n/**\n * Compare function for anchors.\n *\n * @internal\n */\nexport type AnchorsCompare = CompareFunction<UpPath>;\n\n/**\n * Options to configure binder behavior.\n *\n * TODO: add more options:\n * `filterFn?: (context: BindingContext) => boolean;`\n * `pathPolicy?: \"relative\" | \"absolute\";`\n * @internal\n */\nexport interface BinderOptions {\n\tsortFn?: BinderEventsCompare;\n}\n\n/**\n * Specialized binder options for flushable binders.\n *\n * @internal\n */\nexport interface FlushableBinderOptions<E extends Listeners<E>> extends BinderOptions {\n\tautoFlush: boolean;\n\tautoFlushPolicy: keyof Listeners<E>;\n\tsortAnchorsFn?: AnchorsCompare;\n}\n\n/**\n * Match policy for binding: subtree or path.\n *\n * - `subtree` match policy means that path filtering would return events matching the exact path and its subpaths,\n * ie. changes to (nested) children would be allowed to bubble up to parent listeners.\n * - {@link SubtreePolicy} match policy is equivalent with `subtree` match policy, while allowing to specify a maximum\n * depth for the subtree.\n * - `path` match policy means that path filtering would return events matching the _exact_ path only. In this case\n * _exact_ semantics include interpreting an `undefined` _index_ field in the {@link PathStep} as a wildcard.\n *\n *\n * @internal\n */\nexport type MatchPolicy = SubtreePolicy | \"subtree\" | \"path\";\n\n/**\n * Subtree match policy where max depth can be specified.\n *\n * @internal\n */\nexport interface SubtreePolicy {\n\tmaxDepth: number;\n}\n\n/**\n * The data binder interface\n *\n * @internal\n */\nexport interface DataBinder<B extends OperationBinderEvents | InvalidationBinderEvents> {\n\t/**\n\t * Register an event listener\n\t *\n\t * @param anchor - The anchor to register the listener on\n\t * @param eventType - The {@link BindingType} to listen for.\n\t * @param eventTrees - The {@link BindPolicy}s to filter on.\n\t * @param listener - The listener to register\n\t */\n\tregister<K extends keyof Listeners<B>>(\n\t\tanchor: FlexTreeNode,\n\t\teventType: K,\n\t\teventTrees: BindPolicy[],\n\t\tlistener?: B[K],\n\t): void;\n\n\t/**\n\t * Unregister all listeners.\n\t */\n\tunregisterAll(): void;\n}\n\n/**\n * An interface describing the ability to flush.\n *\n * @internal\n */\nexport interface Flushable<T> {\n\tflush(): T;\n}\n\n/**\n * An interface describing a flushable data binder.\n *\n * @internal\n */\nexport interface FlushableDataBinder<\n\tB extends OperationBinderEvents | InvalidationBinderEvents,\n> extends DataBinder<B>,\n\t\tFlushable<FlushableDataBinder<B>> {}\n\n/**\n * A step in a bind path\n *\n * @internal\n */\nexport interface PathStep {\n\t/**\n\t * The field being traversed\n\t */\n\treadonly field: FieldKey;\n\n\t/**\n\t * The index of the element being navigated to\n\t */\n\treadonly index?: number;\n}\n\n/**\n * The default type for a bind tree\n *\n * @internal\n */\nexport type BindTreeDefault = BindTree;\n\n/**\n * A bind tree is a compact representation of related {@link BindPath}s.\n *\n * @internal\n */\nexport interface BindTree<T = BindTreeDefault> extends PathStep {\n\treadonly children: Map<FieldKey, T>;\n}\n\n/**\n * A bind policy is a combination of a {@link BindTree} and a {@link MatchPolicy}.\n *\n * @internal\n */\nexport interface BindPolicy {\n\treadonly bindTree: BindTree;\n\treadonly matchPolicy: MatchPolicy;\n}\n\n/**\n * Index symbol for syntax tree\n *\n * @internal\n */\nexport const indexSymbol = Symbol(\"flex-tree-binder:index\");\n\n/**\n * A syntax node for the bind language\n *\n * The bind language is a compact representation of related {@link BindPath}s. It can be used to\n * simplify usage and construction of {@link BindTree}s.\n *\n * see {@link BindTree}\n * see {@link compileSyntaxTree}\n *\n * @internal\n */\nexport interface BindSyntaxTree {\n\treadonly [indexSymbol]?: number;\n\treadonly [key: string]: true | BindSyntaxTree;\n}\n\n/**\n * A top down path in a bind or path tree is a collection of {@link PathStep}s\n *\n * see {@link BindTree}\n * see {@link UpPath}\n *\n * @internal\n */\nexport type DownPath = PathStep[];\n\n/**\n * A bind path is a top down path in a bind tree\n *\n * @internal\n */\nexport type BindPath = DownPath;\n\n/**\n * A binding context specialized for {@link PathVisitor} triggered binding events.\n *\n * @internal\n */\nexport type VisitorBindingContext = RemoveBindingContext | InsertBindingContext;\n\n/**\n * Enumeration of binding categories\n *\n * @internal\n */\nexport const BindingType = {\n\tRemove: \"remove\",\n\tInsert: \"insert\",\n\tInvalidation: \"invalidation\",\n\tBatch: \"batch\",\n} as const;\n\n/**\n * The type of a binding context\n *\n * @internal\n */\nexport type BindingContextType = (typeof BindingType)[keyof typeof BindingType];\n\n/**\n * The binding context attribution common to all binding events\n *\n * @internal\n */\nexport interface BindingContext {\n\treadonly type: BindingContextType;\n}\n\n/**\n * The binding context for a remove event\n *\n * @internal\n */\nexport interface RemoveBindingContext extends BindingContext {\n\treadonly type: typeof BindingType.Remove;\n\treadonly path: UpPath;\n\treadonly count: number;\n}\n\n/**\n * The binding context for an insert event\n *\n * @internal\n */\nexport interface InsertBindingContext extends BindingContext {\n\treadonly type: typeof BindingType.Insert;\n\treadonly path: UpPath;\n\treadonly content: ProtoNodes;\n}\n\n/**\n * The binding context for an invalidation event\n *\n * @internal\n */\nexport interface InvalidationBindingContext extends BindingContext {\n\treadonly type: typeof BindingType.Invalidation;\n}\n\n/**\n * The binding context for a batch event\n *\n * @internal\n */\nexport interface BatchBindingContext extends BindingContext {\n\treadonly type: typeof BindingType.Batch;\n\treadonly events: VisitorBindingContext[];\n}\n\n/**\n * The listener interface. Internal.\n *\n * @internal\n */\ntype Listener = (...args: unknown[]) => void;\n\n/**\n * A call tree is a {@link BindTree} augmented with listeners. Internal.\n *\n * @internal\n */\ntype CallTree = BindTree<CallTree> & { listeners: Set<Listener>; matchPolicy?: MatchPolicy };\n\n/**\n * A generic implementation of a {@link PathVisitor} enabling the registration of listeners\n * categorized by {@link BindingContextType} and {@link BindPolicy}.\n */\nabstract class AbstractPathVisitor implements PathVisitor {\n\tprotected readonly registeredListeners: Map<BindingContextType, Map<FieldKey, CallTree>> =\n\t\tnew Map();\n\tpublic constructor(protected readonly options: BinderOptions) {}\n\n\t// TODO: make these methods abstract and make AbstractPathVisitor implementations implement them\n\tpublic afterCreate(content: DetachedRangeUpPath): void {}\n\tpublic beforeDestroy(content: DetachedRangeUpPath): void {}\n\tpublic beforeAttach(source: DetachedRangeUpPath, destination: PlaceUpPath): void {}\n\tpublic afterAttach(source: DetachedPlaceUpPath, destination: RangeUpPath): void {\n\t\tthis.onInsert(\n\t\t\t{\n\t\t\t\tparent: destination.parent,\n\t\t\t\tparentField: destination.field,\n\t\t\t\tparentIndex: destination.start,\n\t\t\t},\n\t\t\tthis.getContent(destination),\n\t\t);\n\t}\n\tpublic beforeDetach(source: RangeUpPath, destination: DetachedPlaceUpPath): void {}\n\tpublic afterDetach(source: PlaceUpPath, destination: DetachedRangeUpPath): void {\n\t\tthis.onRemove(\n\t\t\t{\n\t\t\t\tparent: source.parent,\n\t\t\t\tparentField: source.field,\n\t\t\t\tparentIndex: source.index,\n\t\t\t},\n\t\t\tdestination.end - destination.start,\n\t\t);\n\t}\n\tpublic beforeReplace(\n\t\tnewContent: DetachedRangeUpPath,\n\t\toldContent: RangeUpPath,\n\t\toldContentDestination: DetachedPlaceUpPath,\n\t): void {}\n\tpublic afterReplace(\n\t\tnewContentSource: DetachedPlaceUpPath,\n\t\tnewContent: RangeUpPath,\n\t\toldContent: DetachedRangeUpPath,\n\t): void {\n\t\tthis.onRemove(\n\t\t\t{\n\t\t\t\tparent: newContent.parent,\n\t\t\t\tparentField: newContent.field,\n\t\t\t\tparentIndex: newContent.start,\n\t\t\t},\n\t\t\toldContent.end - oldContent.start,\n\t\t);\n\t\tthis.onInsert(\n\t\t\t{\n\t\t\t\tparent: newContent.parent,\n\t\t\t\tparentField: newContent.field,\n\t\t\t\tparentIndex: newContent.start,\n\t\t\t},\n\t\t\tthis.getContent(newContent),\n\t\t);\n\t}\n\tprotected getContent(range: RangeUpPath): ProtoNodes {\n\t\t// TODO: either lookup the content in the forest or stop providing the content in the events\n\t\treturn [];\n\t}\n\n\tpublic abstract onRemove(path: UpPath, count: number): void;\n\tpublic abstract onInsert(path: UpPath, content: ProtoNodes): void;\n\tpublic registerListener(\n\t\tcontextType: BindingContextType,\n\t\tpolicies: BindPolicy[],\n\t\tlistener: Listener,\n\t): () => void {\n\t\tconst contextRoots = getOrCreate(this.registeredListeners, contextType, () => new Map());\n\t\tpolicies.forEach((policy) => {\n\t\t\tconst tree = policy.bindTree;\n\t\t\tconst currentRoot = this.findRoot(contextType, tree.field);\n\t\t\tif (currentRoot === undefined) {\n\t\t\t\tconst newRoot: CallTree = {\n\t\t\t\t\tfield: tree.field,\n\t\t\t\t\tindex: tree.index,\n\t\t\t\t\tlisteners: new Set(),\n\t\t\t\t\tchildren: new Map(),\n\t\t\t\t\tmatchPolicy: policy.matchPolicy,\n\t\t\t\t};\n\t\t\t\tassert(contextRoots !== undefined, 0x6da /* expected contextRoots to be defined */);\n\t\t\t\tcontextRoots.set(tree.field, newRoot);\n\t\t\t\tthis.bindTree(contextType, tree, listener, newRoot);\n\t\t\t} else {\n\t\t\t\tthis.bindTree(contextType, tree, listener, currentRoot);\n\t\t\t}\n\t\t});\n\t\treturn () => {\n\t\t\tpolicies.forEach((policy) =>\n\t\t\t\tthis.unregisterListener(contextType, policy.bindTree, listener),\n\t\t\t);\n\t\t};\n\t}\n\n\tprivate bindTree(\n\t\tcontextType: BindingContextType,\n\t\ttree: BindTree,\n\t\tlistener: Listener,\n\t\tcallTree: CallTree,\n\t): void {\n\t\tif (tree.children.size === 0) {\n\t\t\tcallTree.listeners.add(listener);\n\t\t} else {\n\t\t\ttree.children.forEach((childTree, fieldKey) => {\n\t\t\t\tconst childCallTree = getOrCreate(callTree.children, fieldKey, () => {\n\t\t\t\t\tconst newChildCallTree: CallTree = {\n\t\t\t\t\t\tfield: fieldKey,\n\t\t\t\t\t\tindex: childTree.index,\n\t\t\t\t\t\tlisteners: new Set(),\n\t\t\t\t\t\tchildren: new Map(),\n\t\t\t\t\t};\n\t\t\t\t\tcallTree.children.set(fieldKey, newChildCallTree);\n\t\t\t\t\treturn newChildCallTree;\n\t\t\t\t});\n\t\t\t\tthis.bindTree(contextType, childTree, listener, childCallTree);\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate findRoot(contextType: BindingContextType, field: FieldKey): CallTree | undefined {\n\t\treturn this.registeredListeners.get(contextType)?.get(field);\n\t}\n\n\tprivate unregisterListener(\n\t\tcontextType: BindingContextType,\n\t\ttree: BindTree,\n\t\tlistener: Listener,\n\t\tcallTree?: CallTree,\n\t): void {\n\t\tconst foundTree = callTree ?? this.findRoot(contextType, tree.field);\n\t\tif (foundTree !== undefined) {\n\t\t\tif (tree.children.size === 0) {\n\t\t\t\tfoundTree.listeners.delete(listener);\n\t\t\t} else {\n\t\t\t\ttree.children.forEach((childTree, fieldKey) => {\n\t\t\t\t\tassert(foundTree !== undefined, 0x6db /* expected foundTree to be defined */);\n\t\t\t\t\tconst childCallTree = foundTree.children.get(fieldKey);\n\t\t\t\t\tif (childCallTree !== undefined) {\n\t\t\t\t\t\tthis.unregisterListener(contextType, childTree, listener, childCallTree);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected getListeners(\n\t\tcontextType: BindingContextType,\n\t\tdownPath: DownPath,\n\t): Set<Listener> | undefined {\n\t\tconst foundRoot = this.findRoot(contextType, downPath[0].field);\n\t\tif (foundRoot === undefined) {\n\t\t\treturn undefined;\n\t\t} else {\n\t\t\tconst subtreeMatch = (\n\t\t\t\tsubtreePolicy: SubtreePolicy | undefined,\n\t\t\t\tdepth: number,\n\t\t\t): boolean => {\n\t\t\t\tif (subtreePolicy?.maxDepth !== undefined && depth > subtreePolicy.maxDepth) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t};\n\t\t\tconst accumulateMatching = (\n\t\t\t\ttreeNode: CallTree,\n\t\t\t\tindex: number,\n\t\t\t\tonMatch: (index: number, treeNode: CallTree) => void,\n\t\t\t): void => {\n\t\t\t\tconst step = downPath[index];\n\t\t\t\tif (\n\t\t\t\t\tstep === undefined ||\n\t\t\t\t\ttreeNode.field !== step.field ||\n\t\t\t\t\t(treeNode.index !== undefined && step.index !== treeNode.index)\n\t\t\t\t) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tfor (const child of treeNode.children.values()) {\n\t\t\t\t\taccumulateMatching(child, index + 1, onMatch);\n\t\t\t\t}\n\t\t\t\tonMatch(index, treeNode);\n\t\t\t};\n\t\t\tconst matchedNodes: Set<Listener> = new Set();\n\t\t\tif (foundRoot.matchPolicy === \"path\") {\n\t\t\t\taccumulateMatching(foundRoot, 0, (index: number, treeNode: CallTree): void => {\n\t\t\t\t\tif (index === downPath.length - 1) {\n\t\t\t\t\t\ttreeNode.listeners.forEach((listener) => matchedNodes.add(listener));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (foundRoot.matchPolicy === \"subtree\") {\n\t\t\t\taccumulateMatching(foundRoot, 0, (index: number, treeNode: CallTree): void => {\n\t\t\t\t\ttreeNode.listeners.forEach((listener) => matchedNodes.add(listener));\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst matchPolicy: SubtreePolicy | undefined = foundRoot.matchPolicy;\n\t\t\t\taccumulateMatching(foundRoot, 0, (index: number, treeNode: CallTree): void => {\n\t\t\t\t\tif (subtreeMatch(matchPolicy, downPath.length - 1)) {\n\t\t\t\t\t\ttreeNode.listeners.forEach((listener) => matchedNodes.add(listener));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn matchedNodes.size > 0 ? matchedNodes : undefined;\n\t\t}\n\t}\n\n\tpublic hasRegisteredContextType(contextType: BindingContextType): boolean {\n\t\treturn this.registeredListeners.has(contextType);\n\t}\n\n\tpublic dispose(): void {\n\t\tthis.registeredListeners.clear();\n\t}\n}\n\n/**\n * A visitor that invokes listeners immediately when a path is traversed.\n */\nclass DirectPathVisitor extends AbstractPathVisitor {\n\tprivate processListeners(path: UpPath, listeners: Set<Listener>, otherArgs: object): void {\n\t\tfor (const listener of listeners) {\n\t\t\tlistener({\n\t\t\t\tpath,\n\t\t\t\t...otherArgs,\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate processRegisteredPaths(\n\t\tpath: UpPath,\n\t\ttype: BindingContextType,\n\t\totherArgs: object,\n\t): void {\n\t\tconst current = toDownPath(path);\n\t\tconst listeners = this.getListeners(type, current);\n\t\tif (listeners !== undefined) {\n\t\t\tthis.processListeners(path, listeners, otherArgs);\n\t\t}\n\t}\n\n\tpublic onRemove(path: UpPath, count: number): void {\n\t\tthis.processRegisteredPaths(path, BindingType.Remove, {\n\t\t\tcount,\n\t\t\ttype: BindingType.Remove,\n\t\t});\n\t}\n\n\tpublic onInsert(path: UpPath, content: ProtoNodes): void {\n\t\tthis.processRegisteredPaths(path, BindingType.Insert, {\n\t\t\tcontent,\n\t\t\ttype: BindingType.Insert,\n\t\t});\n\t}\n}\n\n/**\n * A visitor that invokes listeners only once when flushed if any modifications detected on the registered paths.\n */\nclass InvalidatingPathVisitor\n\textends AbstractPathVisitor\n\timplements Flushable<InvalidatingPathVisitor>\n{\n\tprivate readonly listeners: Set<Listener> = new Set();\n\n\tprivate processRegisteredPaths(path: UpPath): void {\n\t\tconst current = toDownPath(path);\n\t\tconst listeners = this.getListeners(BindingType.Invalidation, current);\n\t\tif (listeners !== undefined) {\n\t\t\tfor (const listener of listeners) {\n\t\t\t\tthis.listeners.add(listener);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic onRemove(path: UpPath, count: number): void {\n\t\tthis.processRegisteredPaths(path);\n\t}\n\n\tpublic onInsert(path: UpPath, content: ProtoNodes): void {\n\t\tthis.processRegisteredPaths(path);\n\t}\n\n\tpublic flush(): InvalidatingPathVisitor {\n\t\tfor (const listener of this.listeners) {\n\t\t\tlistener({\n\t\t\t\ttype: BindingType.Invalidation,\n\t\t\t});\n\t\t}\n\t\tthis.listeners.clear();\n\t\treturn this;\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis.flush();\n\t\tsuper.dispose();\n\t}\n}\n\ntype CallableBindingContext = VisitorBindingContext & {\n\tlisteners: Set<Listener>;\n};\n\n/**\n * A visitor that buffers all events which match the registered event categories and corresponding paths.\n * Listeners are invoked when flushed. Flushing has also the ability to sort and batch the events.\n */\nclass BufferingPathVisitor\n\textends AbstractPathVisitor\n\timplements Flushable<BufferingPathVisitor>\n{\n\tprivate readonly eventQueue: CallableBindingContext[] = [];\n\n\tpublic onRemove(path: UpPath, count: number): void {\n\t\tconst current = toDownPath(path);\n\t\tconst listeners = this.getListeners(BindingType.Remove, current);\n\t\tif (listeners !== undefined) {\n\t\t\tthis.eventQueue.push({\n\t\t\t\tpath,\n\t\t\t\tcount,\n\t\t\t\ttype: BindingType.Remove,\n\t\t\t\tlisteners,\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic onInsert(path: UpPath, content: ProtoNodes): void {\n\t\tconst current = toDownPath(path);\n\t\tconst listeners = this.getListeners(BindingType.Insert, current);\n\t\tif (listeners !== undefined) {\n\t\t\tthis.eventQueue.push({\n\t\t\t\tpath,\n\t\t\t\tcontent,\n\t\t\t\ttype: BindingType.Insert,\n\t\t\t\tlisteners,\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic flush(): BufferingPathVisitor {\n\t\tconst sortedQueue: CallableBindingContext[] = nativeSort(\n\t\t\tthis.eventQueue,\n\t\t\tthis.options.sortFn ?? (() => 0),\n\t\t);\n\t\tconst batchEventIndices = new Set<number>();\n\t\tconst batchEvents: CallableBindingContext[] = [];\n\t\tconst collected = new Set<Listener>();\n\t\tif (this.hasRegisteredContextType(BindingType.Batch)) {\n\t\t\tfor (let i = 0; i < sortedQueue.length; i++) {\n\t\t\t\tconst event = sortedQueue[i];\n\t\t\t\tconst current = toDownPath(event.path);\n\t\t\t\tconst listeners = this.getListeners(BindingType.Batch, current);\n\t\t\t\tif (listeners !== undefined && listeners.size > 0) {\n\t\t\t\t\tfor (const listener of listeners) {\n\t\t\t\t\t\tcollected.add(listener);\n\t\t\t\t\t}\n\t\t\t\t\tbatchEvents.push(event);\n\t\t\t\t\tbatchEventIndices.add(i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (const listener of collected) {\n\t\t\tlistener({\n\t\t\t\ttype: BindingType.Batch,\n\t\t\t\tevents: batchEvents,\n\t\t\t});\n\t\t}\n\t\tfor (let i = 0; i < sortedQueue.length; i++) {\n\t\t\tif (batchEventIndices.has(i)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst { listeners, ...context } = sortedQueue[i];\n\t\t\tfor (const listener of listeners) {\n\t\t\t\tlistener({ ...context });\n\t\t\t}\n\t\t}\n\t\tthis.eventQueue.length = 0;\n\t\treturn this;\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis.flush();\n\t\tsuper.dispose();\n\t}\n}\n\nclass AbstractDataBinder<\n\tB extends OperationBinderEvents | InvalidationBinderEvents,\n\tV extends AbstractPathVisitor,\n\tO extends BinderOptions,\n> implements DataBinder<B>\n{\n\tprotected readonly visitors = new Map<FlexTreeNode, V>();\n\tprotected readonly visitorLocations = new Map<V, UpPath>();\n\tprotected readonly unregisterHandles = new Set<() => void>();\n\tpublic constructor(\n\t\tprotected readonly options: O,\n\t\tprotected readonly visitorFactory: (anchor: FlexTreeNode) => V,\n\t) {}\n\n\tpublic register<K extends keyof Listeners<B>>(\n\t\tanchor: FlexTreeNode,\n\t\teventType: K,\n\t\teventTrees: BindPolicy[],\n\t\tlistener: B[K],\n\t): void {\n\t\t// TODO: validate BindPath semantics against the schema\n\t\tconst visitor = getOrCreate(this.visitors, anchor, () => {\n\t\t\tconst newVisitor = this.visitorFactory(anchor);\n\t\t\tthis.unregisterHandles.add(\n\t\t\t\tanchor.anchorNode.on(\"subtreeChanging\", (upPath: UpPath) => {\n\t\t\t\t\tassert(newVisitor !== undefined, 0x6dc /* visitor expected to be defined */);\n\t\t\t\t\tif (!this.visitorLocations.has(newVisitor)) {\n\t\t\t\t\t\tthis.visitorLocations.set(newVisitor, upPath);\n\t\t\t\t\t}\n\t\t\t\t\treturn newVisitor;\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn newVisitor;\n\t\t});\n\t\tconst contextType: BindingContextType = eventType as BindingContextType;\n\t\tthis.unregisterHandles.add(\n\t\t\tvisitor.registerListener(contextType, eventTrees, listener as unknown as Listener),\n\t\t);\n\t}\n\tpublic unregisterAll(): void {\n\t\tthis.unregisterHandles.forEach((h) => h());\n\t\tthis.unregisterHandles.clear();\n\t\tthis.visitors.forEach((v) => v.dispose());\n\t\tthis.visitors.clear();\n\t}\n\n\tpublic extractBindPaths(root: BindTree): BindPath[] {\n\t\tconst result: BindPath[] = [];\n\t\tconst depthFirst = (node: BindTree, path: PathStep[] = [root]): void => {\n\t\t\tif (node.children.size === 0) {\n\t\t\t\tresult.push(path);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (const [field, childNode] of node.children.entries()) {\n\t\t\t\tdepthFirst(childNode, [...path, { field, index: childNode.index }]);\n\t\t\t}\n\t\t};\n\t\tdepthFirst(root);\n\t\treturn result;\n\t}\n}\n\nclass BufferingDataBinder<E extends Listeners<E>>\n\textends AbstractDataBinder<\n\t\tOperationBinderEvents,\n\t\tBufferingPathVisitor,\n\t\tFlushableBinderOptions<E>\n\t>\n\timplements FlushableDataBinder<OperationBinderEvents>\n{\n\tprotected readonly view: Listenable<E>;\n\tprotected readonly autoFlushPolicy: keyof Listeners<E>;\n\tpublic constructor(view: Listenable<E>, options: FlushableBinderOptions<E>) {\n\t\tsuper(options, (anchor: FlexTreeNode) => new BufferingPathVisitor(options));\n\t\tthis.view = view;\n\t\tthis.autoFlushPolicy = options.autoFlushPolicy;\n\t\tif (options.autoFlush) {\n\t\t\tthis.enableAutoFlush();\n\t\t}\n\t}\n\n\tpublic flush(): FlushableDataBinder<OperationBinderEvents> {\n\t\tconst unsortedVisitors: BufferingPathVisitor[] = Array.from(this.visitorLocations.keys());\n\t\tconst sortFn = this.options.sortAnchorsFn ?? (() => 0);\n\t\tconst compareFn = (a: BufferingPathVisitor, b: BufferingPathVisitor): number => {\n\t\t\tconst pathA = this.visitorLocations.get(a);\n\t\t\tconst pathB = this.visitorLocations.get(b);\n\t\t\tassert(pathA !== undefined, 0x6dd /* pathA expected to be defined */);\n\t\t\tassert(pathB !== undefined, 0x6de /* pathB expected to be defined */);\n\t\t\treturn sortFn(pathA, pathB);\n\t\t};\n\t\tconst sortedVisitors: BufferingPathVisitor[] = nativeSort(unsortedVisitors, compareFn);\n\t\tfor (const visitor of sortedVisitors) {\n\t\t\tvisitor.flush();\n\t\t}\n\t\treturn this;\n\t}\n\n\tprivate enableAutoFlush(): FlushableDataBinder<OperationBinderEvents> {\n\t\tconst callbackFn = (() => {\n\t\t\tthis.flush();\n\t\t}) as E[keyof Listeners<E>];\n\t\tconst unregisterFlushing = this.view.on(this.autoFlushPolicy, callbackFn);\n\t\tthis.unregisterHandles.add(unregisterFlushing);\n\t\treturn this;\n\t}\n}\n\nclass DirectDataBinder<E extends Listeners<E>> extends AbstractDataBinder<\n\tOperationBinderEvents,\n\tDirectPathVisitor,\n\tBinderOptions\n> {\n\tpublic constructor(view: Listenable<E>, options: BinderOptions) {\n\t\tsuper(options, (anchor: FlexTreeNode) => new DirectPathVisitor(options));\n\t}\n}\n\nclass InvalidateDataBinder<E extends Listeners<E>>\n\textends AbstractDataBinder<\n\t\tInvalidationBinderEvents,\n\t\tInvalidatingPathVisitor,\n\t\tFlushableBinderOptions<E>\n\t>\n\timplements FlushableDataBinder<InvalidationBinderEvents>\n{\n\tprotected readonly view: Listenable<E>;\n\tprotected readonly autoFlushPolicy: keyof Listeners<E>;\n\tpublic constructor(view: Listenable<E>, options: FlushableBinderOptions<E>) {\n\t\tsuper(options, (anchor: FlexTreeNode) => new InvalidatingPathVisitor(options));\n\t\tthis.view = view;\n\t\tthis.autoFlushPolicy = options.autoFlushPolicy;\n\t\tif (options.autoFlush) {\n\t\t\tthis.enableAutoFlush();\n\t\t}\n\t}\n\tpublic flush(): FlushableDataBinder<InvalidationBinderEvents> {\n\t\tfor (const visitor of this.visitors.values()) {\n\t\t\tvisitor.flush();\n\t\t}\n\t\treturn this;\n\t}\n\tprivate enableAutoFlush(): FlushableDataBinder<InvalidationBinderEvents> {\n\t\tconst callbackFn = (() => {\n\t\t\tthis.flush();\n\t\t}) as E[keyof Listeners<E>];\n\t\tconst unregisterFlushing = this.view.on(this.autoFlushPolicy, callbackFn);\n\t\tthis.unregisterHandles.add(unregisterFlushing);\n\t\treturn this;\n\t}\n}\n\n/**\n * Compute a top-town {@link DownPath} from an {@link UpPath}.\n *\n * @internal\n */\nexport function toDownPath(upPath: UpPath): DownPath {\n\tconst downPath: UpPath[] = topDownPath(upPath);\n\tconst stepDownPath: PathStep[] = downPath.map((u) => {\n\t\treturn { field: u.parentField, index: u.parentIndex };\n\t});\n\tstepDownPath.shift(); // remove last step to the root node\n\treturn stepDownPath;\n}\n\n/**\n * Create a buffering data binder.\n *\n * @internal\n */\nexport function createDataBinderBuffering<E extends Listeners<E>>(\n\tview: Listenable<E>,\n\toptions: FlushableBinderOptions<E>,\n): FlushableDataBinder<OperationBinderEvents> {\n\treturn new BufferingDataBinder(view, options);\n}\n\n/**\n * Create a direct data binder.\n *\n * @internal\n */\nexport function createDataBinderDirect<E extends Listeners<E>>(\n\tview: Listenable<E>,\n\toptions: BinderOptions,\n): DataBinder<OperationBinderEvents> {\n\treturn new DirectDataBinder(view, options);\n}\n\n/**\n * Create an invalidating data binder.\n *\n * @internal\n */\nexport function createDataBinderInvalidating<E extends Listeners<E>>(\n\tview: Listenable<E>,\n\toptions: FlushableBinderOptions<E>,\n): FlushableDataBinder<InvalidationBinderEvents> {\n\treturn new InvalidateDataBinder(view, options);\n}\n\n/**\n * Create binder options. If not specified, the default values are:\n * - sortFn: no sorting\n *\n * @internal\n */\nexport function createBinderOptions({\n\tsortFn,\n}: { sortFn?: BinderEventsCompare }): BinderOptions {\n\treturn { sortFn };\n}\n\n/**\n * Create flushable binder options. If not specified, the default values are:\n * - sortFn: no sorting\n * - sortAnchorsFn: no sorting\n * - autoFlush: true\n *\n * @internal\n */\nexport function createFlushableBinderOptions<E extends Listeners<E>>({\n\tsortFn,\n\tsortAnchorsFn,\n\tautoFlush = true,\n\tautoFlushPolicy,\n}: {\n\tsortFn?: BinderEventsCompare;\n\tsortAnchorsFn?: AnchorsCompare;\n\tautoFlush?: boolean;\n\tautoFlushPolicy: keyof Listeners<E>;\n}): FlushableBinderOptions<E> {\n\treturn {\n\t\tsortFn,\n\t\tsortAnchorsFn,\n\t\tautoFlush,\n\t\tautoFlushPolicy,\n\t};\n}\n\n/**\n * Utility to create a compare function from a list of compare functions.\n *\n * @param fns - a list of compare functions\n * @returns a compare function that can be used for sorting\n * @internal\n */\nexport function comparePipeline<T>(...fns: CompareFunction<T>[]): CompareFunction<T> {\n\treturn (a: T, b: T): number => {\n\t\tfor (const fn of fns) {\n\t\t\tconst result = fn(a, b);\n\t\t\tif (result !== 0) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t};\n}\n\n/**\n * Native sorting algorithm.\n *\n * @param arr - the array to sort\n * @param compareFn - the compare function\n * @returns the sorted array\n */\nfunction nativeSort<T>(arr: T[], compareFn: CompareFunction<T>): T[] {\n\treturn [...arr].sort(compareFn);\n}\n\n/**\n * Compiles a (user friendly) syntax tree into the internal binding structure.\n * The syntax tree is a compact representation of related {@link BindPath}s.\n * The match policy can be specified. If not specified, the default value is \"path\".\n * @returns a {@link BindPolicy} object\n * @internal\n */\nexport function compileSyntaxTree(\n\tsyntaxTree: BindSyntaxTree,\n\tmatchPolicy?: MatchPolicy,\n): BindPolicy {\n\tconst entries = Object.entries(syntaxTree);\n\tif (entries.length === 1) {\n\t\tconst [fieldName, childNode] = entries[0];\n\t\tconst fieldKey: FieldKey = brand(fieldName);\n\t\tconst bindTree = compileSyntaxTreeNode(childNode as BindSyntaxTree, fieldKey);\n\t\treturn { matchPolicy: matchPolicy ?? \"path\", bindTree };\n\t} else throw new Error(\"Invalid BindSyntaxTree structure\");\n}\n\nfunction compileSyntaxTreeNode(node: BindSyntaxTree | true, parentField: FieldKey): BindTree {\n\tif (node === true) return { field: parentField, children: new Map() };\n\tconst pathStep: PathStep = {\n\t\tfield: parentField,\n\t\tindex: node[indexSymbol],\n\t};\n\tconst children = new Map<FieldKey, BindTree>();\n\tfor (const [key, value] of Object.entries(node)) {\n\t\tconst fieldKey: FieldKey = brand(key);\n\t\tchildren.set(fieldKey, compileSyntaxTreeNode(value, fieldKey));\n\t}\n\treturn {\n\t\t...pathStep,\n\t\tchildren,\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"editableTreeBinder.js","sourceRoot":"","sources":["../../src/feature-libraries/editableTreeBinder.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert, oob } from \"@fluidframework/core-utils/internal\";\n\nimport {\n\ttype DetachedPlaceUpPath,\n\ttype DetachedRangeUpPath,\n\ttype FieldKey,\n\ttype PathVisitor,\n\ttype PlaceUpPath,\n\ttype ProtoNodes,\n\ttype RangeUpPath,\n\ttype UpPath,\n\ttopDownPath,\n} from \"../core/index.js\";\nimport type { Listeners, Listenable } from \"../events/index.js\";\nimport { brand, getOrCreate } from \"../util/index.js\";\n\nimport type { FlexTreeNode } from \"./flex-tree/index.js\";\n\n// TODO:\n// Tests for this file were removed along with the old editable-tree implementation in the commit that includes this note.\n// They were a bit heavily tied to the testing patterns specific to the old editable-tree and will need significant changes to be restored.\n\n/**\n * Binder events reflecting atomic data operations\n */\nexport interface OperationBinderEvents {\n\tremove(context: RemoveBindingContext): void;\n\tinsert(context: InsertBindingContext): void;\n\tbatch(context: BatchBindingContext): void;\n}\n\n/**\n * Binder events signaling state invalidation\n */\nexport interface InvalidationBinderEvents {\n\tinvalidation(context: InvalidationBindingContext): void;\n}\n\n/**\n * Compare function, generic.\n */\nexport type CompareFunction<T> = (a: T, b: T) => number;\n\n/**\n * Compare function for binder events.\n */\nexport type BinderEventsCompare = CompareFunction<VisitorBindingContext>;\n\n/**\n * Compare function for anchors.\n */\nexport type AnchorsCompare = CompareFunction<UpPath>;\n\n/**\n * Options to configure binder behavior.\n *\n * TODO: add more options:\n * `filterFn?: (context: BindingContext) => boolean;`\n * `pathPolicy?: \"relative\" | \"absolute\";`\n */\nexport interface BinderOptions {\n\tsortFn?: BinderEventsCompare;\n}\n\n/**\n * Specialized binder options for flushable binders.\n */\nexport interface FlushableBinderOptions<E extends Listeners<E>> extends BinderOptions {\n\tautoFlush: boolean;\n\tautoFlushPolicy: keyof Listeners<E>;\n\tsortAnchorsFn?: AnchorsCompare;\n}\n\n/**\n * Match policy for binding: subtree or path.\n *\n * - `subtree` match policy means that path filtering would return events matching the exact path and its subpaths,\n * ie. changes to (nested) children would be allowed to bubble up to parent listeners.\n * - {@link SubtreePolicy} match policy is equivalent with `subtree` match policy, while allowing to specify a maximum\n * depth for the subtree.\n * - `path` match policy means that path filtering would return events matching the _exact_ path only. In this case\n * _exact_ semantics include interpreting an `undefined` _index_ field in the {@link PathStep} as a wildcard.\n *\n */\nexport type MatchPolicy = SubtreePolicy | \"subtree\" | \"path\";\n\n/**\n * Subtree match policy where max depth can be specified.\n */\nexport interface SubtreePolicy {\n\tmaxDepth: number;\n}\n\n/**\n * The data binder interface\n */\nexport interface DataBinder<B extends OperationBinderEvents | InvalidationBinderEvents> {\n\t/**\n\t * Register an event listener\n\t *\n\t * @param anchor - The anchor to register the listener on\n\t * @param eventType - The {@link BindingType} to listen for.\n\t * @param eventTrees - The {@link BindPolicy}s to filter on.\n\t * @param listener - The listener to register\n\t */\n\tregister<K extends keyof Listeners<B>>(\n\t\tanchor: FlexTreeNode,\n\t\teventType: K,\n\t\teventTrees: BindPolicy[],\n\t\tlistener?: B[K],\n\t): void;\n\n\t/**\n\t * Unregister all listeners.\n\t */\n\tunregisterAll(): void;\n}\n\n/**\n * An interface describing the ability to flush.\n */\nexport interface Flushable<T> {\n\tflush(): T;\n}\n\n/**\n * An interface describing a flushable data binder.\n */\nexport interface FlushableDataBinder<\n\tB extends OperationBinderEvents | InvalidationBinderEvents,\n> extends DataBinder<B>,\n\t\tFlushable<FlushableDataBinder<B>> {}\n\n/**\n * A step in a bind path\n */\nexport interface PathStep {\n\t/**\n\t * The field being traversed\n\t */\n\treadonly field: FieldKey;\n\n\t/**\n\t * The index of the element being navigated to\n\t */\n\treadonly index?: number;\n}\n\n/**\n * The default type for a bind tree\n */\nexport type BindTreeDefault = BindTree;\n\n/**\n * A bind tree is a compact representation of related {@link BindPath}s.\n */\nexport interface BindTree<T = BindTreeDefault> extends PathStep {\n\treadonly children: Map<FieldKey, T>;\n}\n\n/**\n * A bind policy is a combination of a {@link BindTree} and a {@link MatchPolicy}.\n */\nexport interface BindPolicy {\n\treadonly bindTree: BindTree;\n\treadonly matchPolicy: MatchPolicy;\n}\n\n/**\n * Index symbol for syntax tree\n */\nexport const indexSymbol = Symbol(\"flex-tree-binder:index\");\n\n/**\n * A syntax node for the bind language\n *\n * The bind language is a compact representation of related {@link BindPath}s. It can be used to\n * simplify usage and construction of {@link BindTree}s.\n *\n * see {@link BindTree}\n * see {@link compileSyntaxTree}\n */\nexport interface BindSyntaxTree {\n\treadonly [indexSymbol]?: number;\n\treadonly [key: string]: true | BindSyntaxTree;\n}\n\n/**\n * A top down path in a bind or path tree is a collection of {@link PathStep}s\n *\n * see {@link BindTree}\n * see {@link UpPath}\n */\nexport type DownPath = PathStep[];\n\n/**\n * A bind path is a top down path in a bind tree\n */\nexport type BindPath = DownPath;\n\n/**\n * A binding context specialized for {@link PathVisitor} triggered binding events.\n */\nexport type VisitorBindingContext = RemoveBindingContext | InsertBindingContext;\n\n/**\n * Enumeration of binding categories\n */\nexport const BindingType = {\n\tRemove: \"remove\",\n\tInsert: \"insert\",\n\tInvalidation: \"invalidation\",\n\tBatch: \"batch\",\n} as const;\n\n/**\n * The type of a binding context\n */\nexport type BindingContextType = (typeof BindingType)[keyof typeof BindingType];\n\n/**\n * The binding context attribution common to all binding events\n */\nexport interface BindingContext {\n\treadonly type: BindingContextType;\n}\n\n/**\n * The binding context for a remove event\n */\nexport interface RemoveBindingContext extends BindingContext {\n\treadonly type: typeof BindingType.Remove;\n\treadonly path: UpPath;\n\treadonly count: number;\n}\n\n/**\n * The binding context for an insert event\n */\nexport interface InsertBindingContext extends BindingContext {\n\treadonly type: typeof BindingType.Insert;\n\treadonly path: UpPath;\n\treadonly content: ProtoNodes;\n}\n\n/**\n * The binding context for an invalidation event\n */\nexport interface InvalidationBindingContext extends BindingContext {\n\treadonly type: typeof BindingType.Invalidation;\n}\n\n/**\n * The binding context for a batch event\n */\nexport interface BatchBindingContext extends BindingContext {\n\treadonly type: typeof BindingType.Batch;\n\treadonly events: VisitorBindingContext[];\n}\n\n/**\n * The listener interface. Internal.\n */\ntype Listener = (...args: unknown[]) => void;\n\n/**\n * A call tree is a {@link BindTree} augmented with listeners. Internal.\n */\ntype CallTree = BindTree<CallTree> & { listeners: Set<Listener>; matchPolicy?: MatchPolicy };\n\n/**\n * A generic implementation of a {@link PathVisitor} enabling the registration of listeners\n * categorized by {@link BindingContextType} and {@link BindPolicy}.\n */\nabstract class AbstractPathVisitor implements PathVisitor {\n\tprotected readonly registeredListeners: Map<BindingContextType, Map<FieldKey, CallTree>> =\n\t\tnew Map();\n\tpublic constructor(protected readonly options: BinderOptions) {}\n\n\t// TODO: make these methods abstract and make AbstractPathVisitor implementations implement them\n\tpublic afterCreate(content: DetachedRangeUpPath): void {}\n\tpublic beforeDestroy(content: DetachedRangeUpPath): void {}\n\tpublic beforeAttach(source: DetachedRangeUpPath, destination: PlaceUpPath): void {}\n\tpublic afterAttach(source: DetachedPlaceUpPath, destination: RangeUpPath): void {\n\t\tthis.onInsert(\n\t\t\t{\n\t\t\t\tparent: destination.parent,\n\t\t\t\tparentField: destination.field,\n\t\t\t\tparentIndex: destination.start,\n\t\t\t},\n\t\t\tthis.getContent(destination),\n\t\t);\n\t}\n\tpublic beforeDetach(source: RangeUpPath, destination: DetachedPlaceUpPath): void {}\n\tpublic afterDetach(source: PlaceUpPath, destination: DetachedRangeUpPath): void {\n\t\tthis.onRemove(\n\t\t\t{\n\t\t\t\tparent: source.parent,\n\t\t\t\tparentField: source.field,\n\t\t\t\tparentIndex: source.index,\n\t\t\t},\n\t\t\tdestination.end - destination.start,\n\t\t);\n\t}\n\tpublic beforeReplace(\n\t\tnewContent: DetachedRangeUpPath,\n\t\toldContent: RangeUpPath,\n\t\toldContentDestination: DetachedPlaceUpPath,\n\t): void {}\n\tpublic afterReplace(\n\t\tnewContentSource: DetachedPlaceUpPath,\n\t\tnewContent: RangeUpPath,\n\t\toldContent: DetachedRangeUpPath,\n\t): void {\n\t\tthis.onRemove(\n\t\t\t{\n\t\t\t\tparent: newContent.parent,\n\t\t\t\tparentField: newContent.field,\n\t\t\t\tparentIndex: newContent.start,\n\t\t\t},\n\t\t\toldContent.end - oldContent.start,\n\t\t);\n\t\tthis.onInsert(\n\t\t\t{\n\t\t\t\tparent: newContent.parent,\n\t\t\t\tparentField: newContent.field,\n\t\t\t\tparentIndex: newContent.start,\n\t\t\t},\n\t\t\tthis.getContent(newContent),\n\t\t);\n\t}\n\tprotected getContent(range: RangeUpPath): ProtoNodes {\n\t\t// TODO: either lookup the content in the forest or stop providing the content in the events\n\t\treturn [];\n\t}\n\n\tpublic abstract onRemove(path: UpPath, count: number): void;\n\tpublic abstract onInsert(path: UpPath, content: ProtoNodes): void;\n\tpublic registerListener(\n\t\tcontextType: BindingContextType,\n\t\tpolicies: BindPolicy[],\n\t\tlistener: Listener,\n\t): () => void {\n\t\tconst contextRoots = getOrCreate(this.registeredListeners, contextType, () => new Map());\n\t\tpolicies.forEach((policy) => {\n\t\t\tconst tree = policy.bindTree;\n\t\t\tconst currentRoot = this.findRoot(contextType, tree.field);\n\t\t\tif (currentRoot === undefined) {\n\t\t\t\tconst newRoot: CallTree = {\n\t\t\t\t\tfield: tree.field,\n\t\t\t\t\tindex: tree.index,\n\t\t\t\t\tlisteners: new Set(),\n\t\t\t\t\tchildren: new Map(),\n\t\t\t\t\tmatchPolicy: policy.matchPolicy,\n\t\t\t\t};\n\t\t\t\tassert(contextRoots !== undefined, 0x6da /* expected contextRoots to be defined */);\n\t\t\t\tcontextRoots.set(tree.field, newRoot);\n\t\t\t\tthis.bindTree(contextType, tree, listener, newRoot);\n\t\t\t} else {\n\t\t\t\tthis.bindTree(contextType, tree, listener, currentRoot);\n\t\t\t}\n\t\t});\n\t\treturn () => {\n\t\t\tpolicies.forEach((policy) =>\n\t\t\t\tthis.unregisterListener(contextType, policy.bindTree, listener),\n\t\t\t);\n\t\t};\n\t}\n\n\tprivate bindTree(\n\t\tcontextType: BindingContextType,\n\t\ttree: BindTree,\n\t\tlistener: Listener,\n\t\tcallTree: CallTree,\n\t): void {\n\t\tif (tree.children.size === 0) {\n\t\t\tcallTree.listeners.add(listener);\n\t\t} else {\n\t\t\ttree.children.forEach((childTree, fieldKey) => {\n\t\t\t\tconst childCallTree = getOrCreate(callTree.children, fieldKey, () => {\n\t\t\t\t\tconst newChildCallTree: CallTree = {\n\t\t\t\t\t\tfield: fieldKey,\n\t\t\t\t\t\tindex: childTree.index,\n\t\t\t\t\t\tlisteners: new Set(),\n\t\t\t\t\t\tchildren: new Map(),\n\t\t\t\t\t};\n\t\t\t\t\tcallTree.children.set(fieldKey, newChildCallTree);\n\t\t\t\t\treturn newChildCallTree;\n\t\t\t\t});\n\t\t\t\tthis.bindTree(contextType, childTree, listener, childCallTree);\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate findRoot(contextType: BindingContextType, field: FieldKey): CallTree | undefined {\n\t\treturn this.registeredListeners.get(contextType)?.get(field);\n\t}\n\n\tprivate unregisterListener(\n\t\tcontextType: BindingContextType,\n\t\ttree: BindTree,\n\t\tlistener: Listener,\n\t\tcallTree?: CallTree,\n\t): void {\n\t\tconst foundTree = callTree ?? this.findRoot(contextType, tree.field);\n\t\tif (foundTree !== undefined) {\n\t\t\tif (tree.children.size === 0) {\n\t\t\t\tfoundTree.listeners.delete(listener);\n\t\t\t} else {\n\t\t\t\ttree.children.forEach((childTree, fieldKey) => {\n\t\t\t\t\tassert(foundTree !== undefined, 0x6db /* expected foundTree to be defined */);\n\t\t\t\t\tconst childCallTree = foundTree.children.get(fieldKey);\n\t\t\t\t\tif (childCallTree !== undefined) {\n\t\t\t\t\t\tthis.unregisterListener(contextType, childTree, listener, childCallTree);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected getListeners(\n\t\tcontextType: BindingContextType,\n\t\tdownPath: DownPath,\n\t): Set<Listener> | undefined {\n\t\tconst firstDownPath = downPath[0] ?? oob();\n\t\tconst foundRoot = this.findRoot(contextType, firstDownPath.field);\n\t\tif (foundRoot === undefined) {\n\t\t\treturn undefined;\n\t\t} else {\n\t\t\tconst subtreeMatch = (\n\t\t\t\tsubtreePolicy: SubtreePolicy | undefined,\n\t\t\t\tdepth: number,\n\t\t\t): boolean => {\n\t\t\t\tif (subtreePolicy?.maxDepth !== undefined && depth > subtreePolicy.maxDepth) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t};\n\t\t\tconst accumulateMatching = (\n\t\t\t\ttreeNode: CallTree,\n\t\t\t\tindex: number,\n\t\t\t\tonMatch: (index: number, treeNode: CallTree) => void,\n\t\t\t): void => {\n\t\t\t\tconst step = downPath[index];\n\t\t\t\tif (\n\t\t\t\t\tstep === undefined ||\n\t\t\t\t\ttreeNode.field !== step.field ||\n\t\t\t\t\t(treeNode.index !== undefined && step.index !== treeNode.index)\n\t\t\t\t) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tfor (const child of treeNode.children.values()) {\n\t\t\t\t\taccumulateMatching(child, index + 1, onMatch);\n\t\t\t\t}\n\t\t\t\tonMatch(index, treeNode);\n\t\t\t};\n\t\t\tconst matchedNodes: Set<Listener> = new Set();\n\t\t\tif (foundRoot.matchPolicy === \"path\") {\n\t\t\t\taccumulateMatching(foundRoot, 0, (index: number, treeNode: CallTree): void => {\n\t\t\t\t\tif (index === downPath.length - 1) {\n\t\t\t\t\t\ttreeNode.listeners.forEach((listener) => matchedNodes.add(listener));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (foundRoot.matchPolicy === \"subtree\") {\n\t\t\t\taccumulateMatching(foundRoot, 0, (index: number, treeNode: CallTree): void => {\n\t\t\t\t\ttreeNode.listeners.forEach((listener) => matchedNodes.add(listener));\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst matchPolicy: SubtreePolicy | undefined = foundRoot.matchPolicy;\n\t\t\t\taccumulateMatching(foundRoot, 0, (index: number, treeNode: CallTree): void => {\n\t\t\t\t\tif (subtreeMatch(matchPolicy, downPath.length - 1)) {\n\t\t\t\t\t\ttreeNode.listeners.forEach((listener) => matchedNodes.add(listener));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn matchedNodes.size > 0 ? matchedNodes : undefined;\n\t\t}\n\t}\n\n\tpublic hasRegisteredContextType(contextType: BindingContextType): boolean {\n\t\treturn this.registeredListeners.has(contextType);\n\t}\n\n\tpublic dispose(): void {\n\t\tthis.registeredListeners.clear();\n\t}\n}\n\n/**\n * A visitor that invokes listeners immediately when a path is traversed.\n */\nclass DirectPathVisitor extends AbstractPathVisitor {\n\tprivate processListeners(path: UpPath, listeners: Set<Listener>, otherArgs: object): void {\n\t\tfor (const listener of listeners) {\n\t\t\tlistener({\n\t\t\t\tpath,\n\t\t\t\t...otherArgs,\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate processRegisteredPaths(\n\t\tpath: UpPath,\n\t\ttype: BindingContextType,\n\t\totherArgs: object,\n\t): void {\n\t\tconst current = toDownPath(path);\n\t\tconst listeners = this.getListeners(type, current);\n\t\tif (listeners !== undefined) {\n\t\t\tthis.processListeners(path, listeners, otherArgs);\n\t\t}\n\t}\n\n\tpublic onRemove(path: UpPath, count: number): void {\n\t\tthis.processRegisteredPaths(path, BindingType.Remove, {\n\t\t\tcount,\n\t\t\ttype: BindingType.Remove,\n\t\t});\n\t}\n\n\tpublic onInsert(path: UpPath, content: ProtoNodes): void {\n\t\tthis.processRegisteredPaths(path, BindingType.Insert, {\n\t\t\tcontent,\n\t\t\ttype: BindingType.Insert,\n\t\t});\n\t}\n}\n\n/**\n * A visitor that invokes listeners only once when flushed if any modifications detected on the registered paths.\n */\nclass InvalidatingPathVisitor\n\textends AbstractPathVisitor\n\timplements Flushable<InvalidatingPathVisitor>\n{\n\tprivate readonly listeners: Set<Listener> = new Set();\n\n\tprivate processRegisteredPaths(path: UpPath): void {\n\t\tconst current = toDownPath(path);\n\t\tconst listeners = this.getListeners(BindingType.Invalidation, current);\n\t\tif (listeners !== undefined) {\n\t\t\tfor (const listener of listeners) {\n\t\t\t\tthis.listeners.add(listener);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic onRemove(path: UpPath, count: number): void {\n\t\tthis.processRegisteredPaths(path);\n\t}\n\n\tpublic onInsert(path: UpPath, content: ProtoNodes): void {\n\t\tthis.processRegisteredPaths(path);\n\t}\n\n\tpublic flush(): InvalidatingPathVisitor {\n\t\tfor (const listener of this.listeners) {\n\t\t\tlistener({\n\t\t\t\ttype: BindingType.Invalidation,\n\t\t\t});\n\t\t}\n\t\tthis.listeners.clear();\n\t\treturn this;\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis.flush();\n\t\tsuper.dispose();\n\t}\n}\n\ntype CallableBindingContext = VisitorBindingContext & {\n\tlisteners: Set<Listener>;\n};\n\n/**\n * A visitor that buffers all events which match the registered event categories and corresponding paths.\n * Listeners are invoked when flushed. Flushing has also the ability to sort and batch the events.\n */\nclass BufferingPathVisitor\n\textends AbstractPathVisitor\n\timplements Flushable<BufferingPathVisitor>\n{\n\tprivate readonly eventQueue: CallableBindingContext[] = [];\n\n\tpublic onRemove(path: UpPath, count: number): void {\n\t\tconst current = toDownPath(path);\n\t\tconst listeners = this.getListeners(BindingType.Remove, current);\n\t\tif (listeners !== undefined) {\n\t\t\tthis.eventQueue.push({\n\t\t\t\tpath,\n\t\t\t\tcount,\n\t\t\t\ttype: BindingType.Remove,\n\t\t\t\tlisteners,\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic onInsert(path: UpPath, content: ProtoNodes): void {\n\t\tconst current = toDownPath(path);\n\t\tconst listeners = this.getListeners(BindingType.Insert, current);\n\t\tif (listeners !== undefined) {\n\t\t\tthis.eventQueue.push({\n\t\t\t\tpath,\n\t\t\t\tcontent,\n\t\t\t\ttype: BindingType.Insert,\n\t\t\t\tlisteners,\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic flush(): BufferingPathVisitor {\n\t\tconst sortedQueue: CallableBindingContext[] = nativeSort(\n\t\t\tthis.eventQueue,\n\t\t\tthis.options.sortFn ?? (() => 0),\n\t\t);\n\t\tconst batchEventIndices = new Set<number>();\n\t\tconst batchEvents: CallableBindingContext[] = [];\n\t\tconst collected = new Set<Listener>();\n\t\tif (this.hasRegisteredContextType(BindingType.Batch)) {\n\t\t\tfor (const [i, event] of sortedQueue.entries()) {\n\t\t\t\tconst current = toDownPath(event.path);\n\t\t\t\tconst listeners = this.getListeners(BindingType.Batch, current);\n\t\t\t\tif (listeners !== undefined && listeners.size > 0) {\n\t\t\t\t\tfor (const listener of listeners) {\n\t\t\t\t\t\tcollected.add(listener);\n\t\t\t\t\t}\n\t\t\t\t\tbatchEvents.push(event);\n\t\t\t\t\tbatchEventIndices.add(i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (const listener of collected) {\n\t\t\tlistener({\n\t\t\t\ttype: BindingType.Batch,\n\t\t\t\tevents: batchEvents,\n\t\t\t});\n\t\t}\n\t\tfor (const [i, { listeners, ...context }] of sortedQueue.entries()) {\n\t\t\tif (batchEventIndices.has(i)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfor (const listener of listeners) {\n\t\t\t\tlistener({ ...context });\n\t\t\t}\n\t\t}\n\t\tthis.eventQueue.length = 0;\n\t\treturn this;\n\t}\n\n\tpublic override dispose(): void {\n\t\tthis.flush();\n\t\tsuper.dispose();\n\t}\n}\n\nclass AbstractDataBinder<\n\tB extends OperationBinderEvents | InvalidationBinderEvents,\n\tV extends AbstractPathVisitor,\n\tO extends BinderOptions,\n> implements DataBinder<B>\n{\n\tprotected readonly visitors = new Map<FlexTreeNode, V>();\n\tprotected readonly visitorLocations = new Map<V, UpPath>();\n\tprotected readonly unregisterHandles = new Set<() => void>();\n\tpublic constructor(\n\t\tprotected readonly options: O,\n\t\tprotected readonly visitorFactory: (anchor: FlexTreeNode) => V,\n\t) {}\n\n\tpublic register<K extends keyof Listeners<B>>(\n\t\tanchor: FlexTreeNode,\n\t\teventType: K,\n\t\teventTrees: BindPolicy[],\n\t\tlistener: B[K],\n\t): void {\n\t\t// TODO: validate BindPath semantics against the schema\n\t\tconst visitor = getOrCreate(this.visitors, anchor, () => {\n\t\t\tconst newVisitor = this.visitorFactory(anchor);\n\t\t\tthis.unregisterHandles.add(\n\t\t\t\tanchor.anchorNode.on(\"subtreeChanging\", (upPath: UpPath) => {\n\t\t\t\t\tassert(newVisitor !== undefined, 0x6dc /* visitor expected to be defined */);\n\t\t\t\t\tif (!this.visitorLocations.has(newVisitor)) {\n\t\t\t\t\t\tthis.visitorLocations.set(newVisitor, upPath);\n\t\t\t\t\t}\n\t\t\t\t\treturn newVisitor;\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn newVisitor;\n\t\t});\n\t\tconst contextType: BindingContextType = eventType as BindingContextType;\n\t\tthis.unregisterHandles.add(\n\t\t\tvisitor.registerListener(contextType, eventTrees, listener as unknown as Listener),\n\t\t);\n\t}\n\tpublic unregisterAll(): void {\n\t\tthis.unregisterHandles.forEach((h) => h());\n\t\tthis.unregisterHandles.clear();\n\t\tthis.visitors.forEach((v) => v.dispose());\n\t\tthis.visitors.clear();\n\t}\n\n\tpublic extractBindPaths(root: BindTree): BindPath[] {\n\t\tconst result: BindPath[] = [];\n\t\tconst depthFirst = (node: BindTree, path: PathStep[] = [root]): void => {\n\t\t\tif (node.children.size === 0) {\n\t\t\t\tresult.push(path);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tfor (const [field, childNode] of node.children.entries()) {\n\t\t\t\tdepthFirst(childNode, [...path, { field, index: childNode.index }]);\n\t\t\t}\n\t\t};\n\t\tdepthFirst(root);\n\t\treturn result;\n\t}\n}\n\nclass BufferingDataBinder<E extends Listeners<E>>\n\textends AbstractDataBinder<\n\t\tOperationBinderEvents,\n\t\tBufferingPathVisitor,\n\t\tFlushableBinderOptions<E>\n\t>\n\timplements FlushableDataBinder<OperationBinderEvents>\n{\n\tprotected readonly view: Listenable<E>;\n\tprotected readonly autoFlushPolicy: keyof Listeners<E>;\n\tpublic constructor(view: Listenable<E>, options: FlushableBinderOptions<E>) {\n\t\tsuper(options, (anchor: FlexTreeNode) => new BufferingPathVisitor(options));\n\t\tthis.view = view;\n\t\tthis.autoFlushPolicy = options.autoFlushPolicy;\n\t\tif (options.autoFlush) {\n\t\t\tthis.enableAutoFlush();\n\t\t}\n\t}\n\n\tpublic flush(): FlushableDataBinder<OperationBinderEvents> {\n\t\tconst unsortedVisitors: BufferingPathVisitor[] = Array.from(this.visitorLocations.keys());\n\t\tconst sortFn = this.options.sortAnchorsFn ?? (() => 0);\n\t\tconst compareFn = (a: BufferingPathVisitor, b: BufferingPathVisitor): number => {\n\t\t\tconst pathA = this.visitorLocations.get(a);\n\t\t\tconst pathB = this.visitorLocations.get(b);\n\t\t\tassert(pathA !== undefined, 0x6dd /* pathA expected to be defined */);\n\t\t\tassert(pathB !== undefined, 0x6de /* pathB expected to be defined */);\n\t\t\treturn sortFn(pathA, pathB);\n\t\t};\n\t\tconst sortedVisitors: BufferingPathVisitor[] = nativeSort(unsortedVisitors, compareFn);\n\t\tfor (const visitor of sortedVisitors) {\n\t\t\tvisitor.flush();\n\t\t}\n\t\treturn this;\n\t}\n\n\tprivate enableAutoFlush(): FlushableDataBinder<OperationBinderEvents> {\n\t\tconst callbackFn = (() => {\n\t\t\tthis.flush();\n\t\t}) as E[keyof Listeners<E>];\n\t\tconst unregisterFlushing = this.view.on(this.autoFlushPolicy, callbackFn);\n\t\tthis.unregisterHandles.add(unregisterFlushing);\n\t\treturn this;\n\t}\n}\n\nclass DirectDataBinder<E extends Listeners<E>> extends AbstractDataBinder<\n\tOperationBinderEvents,\n\tDirectPathVisitor,\n\tBinderOptions\n> {\n\tpublic constructor(view: Listenable<E>, options: BinderOptions) {\n\t\tsuper(options, (anchor: FlexTreeNode) => new DirectPathVisitor(options));\n\t}\n}\n\nclass InvalidateDataBinder<E extends Listeners<E>>\n\textends AbstractDataBinder<\n\t\tInvalidationBinderEvents,\n\t\tInvalidatingPathVisitor,\n\t\tFlushableBinderOptions<E>\n\t>\n\timplements FlushableDataBinder<InvalidationBinderEvents>\n{\n\tprotected readonly view: Listenable<E>;\n\tprotected readonly autoFlushPolicy: keyof Listeners<E>;\n\tpublic constructor(view: Listenable<E>, options: FlushableBinderOptions<E>) {\n\t\tsuper(options, (anchor: FlexTreeNode) => new InvalidatingPathVisitor(options));\n\t\tthis.view = view;\n\t\tthis.autoFlushPolicy = options.autoFlushPolicy;\n\t\tif (options.autoFlush) {\n\t\t\tthis.enableAutoFlush();\n\t\t}\n\t}\n\tpublic flush(): FlushableDataBinder<InvalidationBinderEvents> {\n\t\tfor (const visitor of this.visitors.values()) {\n\t\t\tvisitor.flush();\n\t\t}\n\t\treturn this;\n\t}\n\tprivate enableAutoFlush(): FlushableDataBinder<InvalidationBinderEvents> {\n\t\tconst callbackFn = (() => {\n\t\t\tthis.flush();\n\t\t}) as E[keyof Listeners<E>];\n\t\tconst unregisterFlushing = this.view.on(this.autoFlushPolicy, callbackFn);\n\t\tthis.unregisterHandles.add(unregisterFlushing);\n\t\treturn this;\n\t}\n}\n\n/**\n * Compute a top-town {@link DownPath} from an {@link UpPath}.\n */\nexport function toDownPath(upPath: UpPath): DownPath {\n\tconst downPath: UpPath[] = topDownPath(upPath);\n\tconst stepDownPath: PathStep[] = downPath.map((u) => {\n\t\treturn { field: u.parentField, index: u.parentIndex };\n\t});\n\tstepDownPath.shift(); // remove last step to the root node\n\treturn stepDownPath;\n}\n\n/**\n * Create a buffering data binder.\n */\nexport function createDataBinderBuffering<E extends Listeners<E>>(\n\tview: Listenable<E>,\n\toptions: FlushableBinderOptions<E>,\n): FlushableDataBinder<OperationBinderEvents> {\n\treturn new BufferingDataBinder(view, options);\n}\n\n/**\n * Create a direct data binder.\n */\nexport function createDataBinderDirect<E extends Listeners<E>>(\n\tview: Listenable<E>,\n\toptions: BinderOptions,\n): DataBinder<OperationBinderEvents> {\n\treturn new DirectDataBinder(view, options);\n}\n\n/**\n * Create an invalidating data binder.\n */\nexport function createDataBinderInvalidating<E extends Listeners<E>>(\n\tview: Listenable<E>,\n\toptions: FlushableBinderOptions<E>,\n): FlushableDataBinder<InvalidationBinderEvents> {\n\treturn new InvalidateDataBinder(view, options);\n}\n\n/**\n * Create binder options. If not specified, the default values are:\n * - sortFn: no sorting\n */\nexport function createBinderOptions({\n\tsortFn,\n}: { sortFn?: BinderEventsCompare }): BinderOptions {\n\treturn { sortFn };\n}\n\n/**\n * Create flushable binder options. If not specified, the default values are:\n * - sortFn: no sorting\n * - sortAnchorsFn: no sorting\n * - autoFlush: true\n */\nexport function createFlushableBinderOptions<E extends Listeners<E>>({\n\tsortFn,\n\tsortAnchorsFn,\n\tautoFlush = true,\n\tautoFlushPolicy,\n}: {\n\tsortFn?: BinderEventsCompare;\n\tsortAnchorsFn?: AnchorsCompare;\n\tautoFlush?: boolean;\n\tautoFlushPolicy: keyof Listeners<E>;\n}): FlushableBinderOptions<E> {\n\treturn {\n\t\tsortFn,\n\t\tsortAnchorsFn,\n\t\tautoFlush,\n\t\tautoFlushPolicy,\n\t};\n}\n\n/**\n * Utility to create a compare function from a list of compare functions.\n *\n * @param fns - a list of compare functions\n * @returns a compare function that can be used for sorting\n */\nexport function comparePipeline<T>(...fns: CompareFunction<T>[]): CompareFunction<T> {\n\treturn (a: T, b: T): number => {\n\t\tfor (const fn of fns) {\n\t\t\tconst result = fn(a, b);\n\t\t\tif (result !== 0) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t};\n}\n\n/**\n * Native sorting algorithm.\n *\n * @param arr - the array to sort\n * @param compareFn - the compare function\n * @returns the sorted array\n */\nfunction nativeSort<T>(arr: T[], compareFn: CompareFunction<T>): T[] {\n\treturn [...arr].sort(compareFn);\n}\n\n/**\n * Compiles a (user friendly) syntax tree into the internal binding structure.\n * The syntax tree is a compact representation of related {@link BindPath}s.\n * The match policy can be specified. If not specified, the default value is \"path\".\n * @returns a {@link BindPolicy} object\n */\nexport function compileSyntaxTree(\n\tsyntaxTree: BindSyntaxTree,\n\tmatchPolicy?: MatchPolicy,\n): BindPolicy {\n\tconst entries = Object.entries(syntaxTree);\n\tif (entries.length === 1) {\n\t\tconst [fieldName, childNode] = entries[0] ?? oob();\n\t\tconst fieldKey: FieldKey = brand(fieldName);\n\t\tconst bindTree = compileSyntaxTreeNode(childNode as BindSyntaxTree, fieldKey);\n\t\treturn { matchPolicy: matchPolicy ?? \"path\", bindTree };\n\t} else throw new Error(\"Invalid BindSyntaxTree structure\");\n}\n\nfunction compileSyntaxTreeNode(node: BindSyntaxTree | true, parentField: FieldKey): BindTree {\n\tif (node === true) return { field: parentField, children: new Map() };\n\tconst pathStep: PathStep = {\n\t\tfield: parentField,\n\t\tindex: node[indexSymbol],\n\t};\n\tconst children = new Map<FieldKey, BindTree>();\n\tfor (const [key, value] of Object.entries(node)) {\n\t\tconst fieldKey: FieldKey = brand(key);\n\t\tchildren.set(fieldKey, compileSyntaxTreeNode(value, fieldKey));\n\t}\n\treturn {\n\t\t...pathStep,\n\t\tchildren,\n\t};\n}\n"]}
|
|
@@ -9,7 +9,6 @@ import type { FlexTreeSchema } from "./typed-schema/index.js";
|
|
|
9
9
|
* TODO:
|
|
10
10
|
* Currently being exposed at the package level which also requires us to export MapTree at the package level.
|
|
11
11
|
* Refactor the FieldGenerator to use JsonableTree instead of MapTree, and convert them internally.
|
|
12
|
-
* @internal
|
|
13
12
|
*/
|
|
14
13
|
export interface TreeDataContext {
|
|
15
14
|
/**
|
|
@@ -33,7 +32,6 @@ export interface TreeDataContext {
|
|
|
33
32
|
* TODO:
|
|
34
33
|
* Currently being exposed at the package level which also requires us to export MapTree at the package level.
|
|
35
34
|
* Refactor the FieldGenerator to use JsonableTree instead of MapTree, and convert them internally.
|
|
36
|
-
* @internal
|
|
37
35
|
*/
|
|
38
36
|
export type FieldGenerator = () => MapTree[];
|
|
39
37
|
/**
|
|
@@ -41,6 +39,5 @@ export type FieldGenerator = () => MapTree[];
|
|
|
41
39
|
* TODO:
|
|
42
40
|
* Currently being exposed at the package level which also requires us to export MapTree at the package level.
|
|
43
41
|
* Refactor the FieldGenerator to use JsonableTree instead of MapTree, and convert them internally.
|
|
44
|
-
* @internal
|
|
45
42
|
*/
|
|
46
43
|
//# sourceMappingURL=fieldGenerator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldGenerator.d.ts","sourceRoot":"","sources":["../../src/feature-libraries/fieldGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D
|
|
1
|
+
{"version":3,"file":"fieldGenerator.d.ts","sourceRoot":"","sources":["../../src/feature-libraries/fieldGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAEjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC/B;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAEhC;;;;;;;;;OASG;IACH,WAAW,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,qBAAqB,GAAG,SAAS,GAAG,cAAc,CAAC;CACvF;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,EAAE,CAAC;AAC7C;;;;;GAKG"}
|
|
@@ -9,6 +9,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
* TODO:
|
|
10
10
|
* Currently being exposed at the package level which also requires us to export MapTree at the package level.
|
|
11
11
|
* Refactor the FieldGenerator to use JsonableTree instead of MapTree, and convert them internally.
|
|
12
|
-
* @internal
|
|
13
12
|
*/
|
|
14
13
|
//# sourceMappingURL=fieldGenerator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldGenerator.js","sourceRoot":"","sources":["../../src/feature-libraries/fieldGenerator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;
|
|
1
|
+
{"version":3,"file":"fieldGenerator.js","sourceRoot":"","sources":["../../src/feature-libraries/fieldGenerator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAsCH;;;;;GAKG","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { FieldKey, MapTree, TreeFieldStoredSchema } from \"../core/index.js\";\n\nimport type { FlexTreeSchema } from \"./typed-schema/index.js\";\n\n/**\n * Information needed to interpret a subtree described by {@link ContextuallyTypedNodeData} and {@link ContextuallyTypedFieldData}.\n * TODO:\n * Currently being exposed at the package level which also requires us to export MapTree at the package level.\n * Refactor the FieldGenerator to use JsonableTree instead of MapTree, and convert them internally.\n */\nexport interface TreeDataContext {\n\t/**\n\t * Schema for the document which the tree will be used in.\n\t */\n\treadonly schema: FlexTreeSchema;\n\n\t/**\n\t * Procedural data generator for fields.\n\t * Fields which provide generators here can be omitted in the input contextually typed data.\n\t *\n\t * @remarks\n\t * TODO:\n\t * For implementers of this which are not pure (like identifier generation),\n\t * order of invocation should be made consistent and documented.\n\t * This will be important for identifier elision optimizations in tree encoding for session based identifier generation.\n\t */\n\tfieldSource?(key: FieldKey, schema: TreeFieldStoredSchema): undefined | FieldGenerator;\n}\n\n/**\n * Generates field content for a MapTree on demand.\n * TODO:\n * Currently being exposed at the package level which also requires us to export MapTree at the package level.\n * Refactor the FieldGenerator to use JsonableTree instead of MapTree, and convert them internally.\n */\nexport type FieldGenerator = () => MapTree[];\n/**\n * Information needed to interpret a subtree described by {@link ContextuallyTypedNodeData} and {@link ContextuallyTypedFieldData}.\n * TODO:\n * Currently being exposed at the package level which also requires us to export MapTree at the package level.\n * Refactor the FieldGenerator to use JsonableTree instead of MapTree, and convert them internally.\n */\n"]}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
export { type MapTreeNode, isMapTreeNode,
|
|
5
|
+
export { type MapTreeNode, type MapTreeSequenceField, isMapTreeNode, isMapTreeSequenceField, getOrCreateMapTreeNode, tryGetMapTreeNode, } from "./mapTreeNode.js";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/flex-map-tree/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,KAAK,WAAW,EAChB,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/flex-map-tree/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,GACjB,MAAM,kBAAkB,CAAC"}
|
|
@@ -4,10 +4,10 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.tryGetMapTreeNode = exports.getOrCreateMapTreeNode = exports.
|
|
7
|
+
exports.tryGetMapTreeNode = exports.getOrCreateMapTreeNode = exports.isMapTreeSequenceField = exports.isMapTreeNode = void 0;
|
|
8
8
|
var mapTreeNode_js_1 = require("./mapTreeNode.js");
|
|
9
9
|
Object.defineProperty(exports, "isMapTreeNode", { enumerable: true, get: function () { return mapTreeNode_js_1.isMapTreeNode; } });
|
|
10
|
-
Object.defineProperty(exports, "
|
|
10
|
+
Object.defineProperty(exports, "isMapTreeSequenceField", { enumerable: true, get: function () { return mapTreeNode_js_1.isMapTreeSequenceField; } });
|
|
11
11
|
Object.defineProperty(exports, "getOrCreateMapTreeNode", { enumerable: true, get: function () { return mapTreeNode_js_1.getOrCreateMapTreeNode; } });
|
|
12
12
|
Object.defineProperty(exports, "tryGetMapTreeNode", { enumerable: true, get: function () { return mapTreeNode_js_1.tryGetMapTreeNode; } });
|
|
13
13
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/feature-libraries/flex-map-tree/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/feature-libraries/flex-map-tree/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,mDAO0B;AAJzB,+GAAA,aAAa,OAAA;AACb,wHAAA,sBAAsB,OAAA;AACtB,wHAAA,sBAAsB,OAAA;AACtB,mHAAA,iBAAiB,OAAA","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nexport {\n\ttype MapTreeNode,\n\ttype MapTreeSequenceField,\n\tisMapTreeNode,\n\tisMapTreeSequenceField,\n\tgetOrCreateMapTreeNode,\n\ttryGetMapTreeNode,\n} from \"./mapTreeNode.js\";\n"]}
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import { type AnchorNode, type
|
|
6
|
-
import {
|
|
7
|
-
import { type FlexAllowedTypes,
|
|
5
|
+
import { type AnchorNode, type ExclusiveMapTree, type FieldKey, type MapTree, type TreeNodeSchemaIdentifier, type Value } from "../../core/index.js";
|
|
6
|
+
import { FlexTreeEntityKind, type FlexTreeField, type FlexTreeMapNode, type FlexTreeNode, type FlexTreeSequenceField, type FlexTreeTypedField, type FlexTreeTypedNode, type FlexTreeTypedNodeUnion, type FlexTreeUnboxField, flexTreeMarker } from "../flex-tree/index.js";
|
|
7
|
+
import { type FlexAllowedTypes, FlexFieldSchema, type FlexMapNodeSchema, type FlexTreeNodeSchema } from "../typed-schema/index.js";
|
|
8
8
|
import type { FlexFieldKind } from "../modular-schema/index.js";
|
|
9
|
+
import { type SequenceFieldEditBuilder } from "../default-schema/index.js";
|
|
9
10
|
/**
|
|
10
11
|
* A readonly {@link FlexTreeNode} which wraps a {@link MapTree}.
|
|
11
12
|
* @remarks Reading data from the MapTreeNode will read the corresponding data from the {@link MapTree}.
|
|
@@ -18,9 +19,29 @@ export interface MapTreeNode extends FlexTreeNode {
|
|
|
18
19
|
* Checks if the given {@link FlexTreeNode} is a {@link MapTreeNode}.
|
|
19
20
|
*/
|
|
20
21
|
export declare function isMapTreeNode(flexNode: FlexTreeNode): flexNode is MapTreeNode;
|
|
22
|
+
/**
|
|
23
|
+
* Checks if the given {@link FlexTreeField} is a {@link MapTreeSequenceField}.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isMapTreeSequenceField<T extends FlexAllowedTypes>(field: FlexTreeSequenceField<T> | FlexTreeField): field is MapTreeSequenceField<T>;
|
|
26
|
+
/**
|
|
27
|
+
* An unhydrated {@link FlexTreeSequenceField}, which has additional editing capabilities.
|
|
28
|
+
* @remarks When doing a removal edit, a {@link MapTreeSequenceField}'s `editor` returns ownership of the removed {@link ExclusiveMapTree}s to the caller.
|
|
29
|
+
*/
|
|
30
|
+
export interface MapTreeSequenceField<T extends FlexAllowedTypes> extends FlexTreeSequenceField<T> {
|
|
31
|
+
readonly editor: MapTreeSequenceFieldEditBuilder;
|
|
32
|
+
}
|
|
33
|
+
interface MapTreeSequenceFieldEditBuilder extends SequenceFieldEditBuilder<ExclusiveMapTree[]> {
|
|
34
|
+
/**
|
|
35
|
+
* Issues a change which removes `count` elements starting at the given `index`.
|
|
36
|
+
* @param index - The index of the first removed element.
|
|
37
|
+
* @param count - The number of elements to remove.
|
|
38
|
+
* @returns the MapTrees that were removed
|
|
39
|
+
*/
|
|
40
|
+
remove(index: number, count: number): ExclusiveMapTree[];
|
|
41
|
+
}
|
|
21
42
|
/** A node's parent field and its index in that field */
|
|
22
43
|
interface LocationInField {
|
|
23
|
-
readonly parent: MapTreeField
|
|
44
|
+
readonly parent: MapTreeField;
|
|
24
45
|
readonly index: number;
|
|
25
46
|
}
|
|
26
47
|
/**
|
|
@@ -33,7 +54,7 @@ interface LocationInField {
|
|
|
33
54
|
export declare class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implements MapTreeNode {
|
|
34
55
|
readonly schema: TSchema;
|
|
35
56
|
/** The underlying {@link MapTree} that this `MapTreeNode` reads its data from */
|
|
36
|
-
readonly mapTree:
|
|
57
|
+
readonly mapTree: ExclusiveMapTree;
|
|
37
58
|
private location;
|
|
38
59
|
readonly [flexTreeMarker]: FlexTreeEntityKind.Node;
|
|
39
60
|
/**
|
|
@@ -46,104 +67,89 @@ export declare class EagerMapTreeNode<TSchema extends FlexTreeNodeSchema> implem
|
|
|
46
67
|
*/
|
|
47
68
|
constructor(schema: TSchema,
|
|
48
69
|
/** The underlying {@link MapTree} that this `MapTreeNode` reads its data from */
|
|
49
|
-
mapTree:
|
|
70
|
+
mapTree: ExclusiveMapTree, location?: LocationInField);
|
|
50
71
|
get type(): TreeNodeSchemaIdentifier;
|
|
51
72
|
/**
|
|
52
73
|
* Set this node's parentage (see {@link FlexTreeNode.parentField}).
|
|
53
|
-
* @remarks
|
|
74
|
+
* @remarks The node may be given a parent if it has none, or may have its parent removed (by passing `undefined`).
|
|
75
|
+
* However, a node with a parent may not be directly re-assigned a different parent.
|
|
76
|
+
* That likely indicates either an attempted multi-parenting or an attempt to "move" the node, neither of which are supported.
|
|
77
|
+
* Removing a node's parent twice in a row is also not supported, as it likely indicates a bug.
|
|
54
78
|
*/
|
|
55
|
-
|
|
79
|
+
adoptBy(parent: undefined): void;
|
|
80
|
+
adoptBy(parent: MapTreeField, index: number): void;
|
|
56
81
|
/**
|
|
57
82
|
* The field this tree is in, and the index within that field.
|
|
58
|
-
* @remarks If this node is unparented, this method will return the special {@link
|
|
83
|
+
* @remarks If this node is unparented, this method will return the special {@link unparentedLocation} as the parent.
|
|
59
84
|
*/
|
|
60
85
|
get parentField(): LocationInField;
|
|
61
86
|
is<TSchemaInner extends FlexTreeNodeSchema>(schema: TSchemaInner): this is FlexTreeTypedNode<TSchemaInner>;
|
|
62
|
-
tryGetField(key: FieldKey):
|
|
87
|
+
tryGetField(key: FieldKey): EagerMapTreeField<FlexAllowedTypes> | undefined;
|
|
63
88
|
getBoxed(key: string): FlexTreeField;
|
|
64
89
|
boxedIterator(): IterableIterator<FlexTreeField>;
|
|
65
90
|
get value(): Value;
|
|
66
|
-
|
|
91
|
+
context: undefined;
|
|
67
92
|
get anchorNode(): AnchorNode;
|
|
68
93
|
private walkTree;
|
|
69
94
|
}
|
|
70
|
-
/**
|
|
71
|
-
* The implementation of a field node created by {@link getOrCreateNode}.
|
|
72
|
-
*/
|
|
73
|
-
export declare class EagerMapTreeFieldNode<TSchema extends FlexFieldNodeSchema> extends EagerMapTreeNode<TSchema> implements FlexTreeFieldNode<TSchema> {
|
|
74
|
-
get content(): FlexTreeUnboxField<TSchema["info"]>;
|
|
75
|
-
getBoxed(key: string): FlexTreeTypedField<TSchema["info"]>;
|
|
76
|
-
}
|
|
77
95
|
/**
|
|
78
96
|
* The implementation of a map node created by {@link getOrCreateNode}.
|
|
79
97
|
*/
|
|
80
98
|
export declare class EagerMapTreeMapNode<TSchema extends FlexMapNodeSchema> extends EagerMapTreeNode<TSchema> implements FlexTreeMapNode<TSchema> {
|
|
81
|
-
get size(): number;
|
|
82
|
-
has(key: string): boolean;
|
|
83
|
-
get(key: string): FlexTreeUnboxField<TSchema["info"]>;
|
|
84
99
|
keys(): IterableIterator<FieldKey>;
|
|
85
100
|
values(): IterableIterator<FlexTreeUnboxField<TSchema["info"], "notEmpty">>;
|
|
86
101
|
entries(): IterableIterator<[
|
|
87
102
|
FieldKey,
|
|
88
103
|
FlexTreeUnboxField<TSchema["info"], "notEmpty">
|
|
89
104
|
]>;
|
|
90
|
-
forEach(callbackFn: (value: FlexTreeUnboxField<TSchema["info"], "notEmpty">, key: FieldKey, map: FlexTreeMapNode<TSchema>) => void, thisArg?: unknown): void;
|
|
91
105
|
getBoxed(key: string): FlexTreeTypedField<TSchema["info"]>;
|
|
92
|
-
set(key: string, value: FlexibleFieldContent<TSchema["info"]> | undefined): void;
|
|
93
|
-
delete(key: string): void;
|
|
94
106
|
[Symbol.iterator](): IterableIterator<[
|
|
95
107
|
FieldKey,
|
|
96
108
|
FlexTreeUnboxField<TSchema["info"], "notEmpty">
|
|
97
109
|
]>;
|
|
98
|
-
boxedIterator(): IterableIterator<FlexTreeTypedField<TSchema["info"]>>;
|
|
99
|
-
}
|
|
100
|
-
declare class EagerMapTreeLeafNode<TSchema extends LeafNodeSchema> extends EagerMapTreeNode<TSchema> implements FlexTreeLeafNode<TSchema> {
|
|
101
|
-
get value(): TreeValue<TSchema["info"]>;
|
|
102
110
|
}
|
|
103
111
|
/**
|
|
104
|
-
* A
|
|
105
|
-
* @remarks
|
|
106
|
-
*
|
|
107
|
-
* However, this field cannot be used in any practical way because it is empty, i.e. it does not actually contain the children that claim to be parented under it.
|
|
108
|
-
* It has the "empty" schema and it will always contain zero children if queried.
|
|
112
|
+
* A readonly {@link FlexTreeField} which wraps an array of {@link MapTrees}.
|
|
113
|
+
* @remarks Reading data from the MapTreeField will read the corresponding data from the {@link MapTree}s.
|
|
114
|
+
* Create a `MapTreeField` by calling {@link getOrCreateField}.
|
|
109
115
|
*/
|
|
110
|
-
|
|
111
|
-
|
|
116
|
+
interface MapTreeField extends FlexTreeField {
|
|
117
|
+
readonly mapTrees: readonly MapTree[];
|
|
118
|
+
}
|
|
119
|
+
declare class EagerMapTreeField<T extends FlexAllowedTypes> implements MapTreeField {
|
|
112
120
|
readonly schema: FlexFieldSchema<FlexFieldKind, T>;
|
|
113
121
|
readonly key: FieldKey;
|
|
114
|
-
readonly parent:
|
|
115
|
-
readonly mapTrees: readonly MapTree[];
|
|
122
|
+
readonly parent: EagerMapTreeNode<FlexTreeNodeSchema>;
|
|
116
123
|
[flexTreeMarker]: FlexTreeEntityKind.Field;
|
|
117
|
-
constructor(schema: FlexFieldSchema<FlexFieldKind, T>, key: FieldKey, parent:
|
|
124
|
+
constructor(schema: FlexFieldSchema<FlexFieldKind, T>, key: FieldKey, parent: EagerMapTreeNode<FlexTreeNodeSchema>);
|
|
125
|
+
get mapTrees(): readonly ExclusiveMapTree[];
|
|
118
126
|
get length(): number;
|
|
119
127
|
is<TSchemaInner extends FlexFieldSchema>(schema: TSchemaInner): this is FlexTreeTypedField<TSchemaInner>;
|
|
120
128
|
boxedIterator(): IterableIterator<FlexTreeTypedNodeUnion<T>>;
|
|
121
129
|
boxedAt(index: number): FlexTreeTypedNodeUnion<T> | undefined;
|
|
122
|
-
|
|
130
|
+
context: undefined;
|
|
131
|
+
/**
|
|
132
|
+
* Mutate this field.
|
|
133
|
+
* @param edit - A function which receives the current `MapTree`s that comprise the contents of the field so that it may be mutated.
|
|
134
|
+
* The function may mutate the array in place or return a new array.
|
|
135
|
+
* If a new array is returned then it will be used as the new contents of the field, otherwise the original array will be continue to be used.
|
|
136
|
+
* @remarks All edits to the field (i.e. mutations of the field's MapTrees) should be directed through this function.
|
|
137
|
+
* This function ensures that the parent MapTree has no empty fields (which is an invariant of `MapTree`) after the mutation.
|
|
138
|
+
*/
|
|
139
|
+
protected edit(edit: (mapTrees: ExclusiveMapTree[]) => void | ExclusiveMapTree[]): void;
|
|
123
140
|
}
|
|
124
141
|
/**
|
|
125
142
|
* If there exists a {@link EagerMapTreeNode} for the given {@link MapTree}, returns it, otherwise returns `undefined`.
|
|
126
143
|
* @remarks {@link EagerMapTreeNode | MapTreeNodes} are created via {@link getOrCreateNode}.
|
|
127
144
|
*/
|
|
128
145
|
export declare function tryGetMapTreeNode(mapTree: MapTree): MapTreeNode | undefined;
|
|
129
|
-
/**
|
|
130
|
-
* Create a {@link MapTreeNode} that wraps the given {@link MapTree}, or get the node that already exists for that {@link MapTree} if there is one.
|
|
131
|
-
* @param nodeSchema - the {@link FlexTreeNodeSchema | schema} that the node conforms to
|
|
132
|
-
* @param mapTree - the {@link MapTree} containing the data for this node.
|
|
133
|
-
* @remarks It must conform to the `nodeSchema`.
|
|
134
|
-
*/
|
|
135
|
-
export declare function getOrCreateMapTreeNode(nodeSchema: FlexTreeNodeSchema, mapTree: MapTree): MapTreeNode;
|
|
136
146
|
/**
|
|
137
147
|
* Create a {@link EagerMapTreeNode} that wraps the given {@link MapTree}, or get the node that already exists for that {@link MapTree} if there is one.
|
|
138
148
|
* @param nodeSchema - the {@link FlexTreeNodeSchema | schema} that the node conforms to
|
|
139
149
|
* @param mapTree - the {@link MapTree} containing the data for this node.
|
|
140
150
|
* @remarks It must conform to the `nodeSchema`.
|
|
141
|
-
* This function is exported for the purposes of unit testing.
|
|
142
151
|
*/
|
|
143
|
-
export declare function
|
|
144
|
-
export declare function getOrCreateNode<TSchema extends FlexMapNodeSchema>(nodeSchema: TSchema, mapTree: MapTree): EagerMapTreeMapNode<TSchema>;
|
|
145
|
-
export declare function getOrCreateNode<TSchema extends FlexFieldNodeSchema>(nodeSchema: TSchema, mapTree: MapTree): EagerMapTreeFieldNode<TSchema>;
|
|
146
|
-
export declare function getOrCreateNode<TSchema extends FlexTreeNodeSchema>(nodeSchema: TSchema, mapTree: MapTree): EagerMapTreeNode<TSchema>;
|
|
152
|
+
export declare function getOrCreateMapTreeNode(nodeSchema: FlexTreeNodeSchema, mapTree: ExclusiveMapTree): EagerMapTreeNode<FlexTreeNodeSchema>;
|
|
147
153
|
export declare function unsupportedUsageError(message?: string): Error;
|
|
148
154
|
export {};
|
|
149
155
|
//# sourceMappingURL=mapTreeNode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapTreeNode.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/flex-map-tree/mapTreeNode.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACN,KAAK,UAAU,EAEf,KAAK,QAAQ,EAEb,KAAK,OAAO,EACZ,KAAK,wBAAwB,
|
|
1
|
+
{"version":3,"file":"mapTreeNode.d.ts","sourceRoot":"","sources":["../../../src/feature-libraries/flex-map-tree/mapTreeNode.ts"],"names":[],"mappings":"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"}
|