@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
|
@@ -8,7 +8,6 @@ import { BTree } from "@tylerbu/sorted-btree-es6";
|
|
|
8
8
|
|
|
9
9
|
import type { ICodecFamily } from "../../codec/index.js";
|
|
10
10
|
import {
|
|
11
|
-
type ChangeAtomIdMap,
|
|
12
11
|
type ChangeEncodingContext,
|
|
13
12
|
type ChangeFamily,
|
|
14
13
|
type ChangeFamilyEditor,
|
|
@@ -37,9 +36,7 @@ import {
|
|
|
37
36
|
mapCursorField,
|
|
38
37
|
replaceAtomRevisions,
|
|
39
38
|
revisionMetadataSourceFromInfo,
|
|
40
|
-
setInChangeAtomIdMap,
|
|
41
39
|
areEqualChangeAtomIds,
|
|
42
|
-
getFromChangeAtomIdMap,
|
|
43
40
|
type ChangeAtomId,
|
|
44
41
|
} from "../../core/index.js";
|
|
45
42
|
import {
|
|
@@ -47,19 +44,11 @@ import {
|
|
|
47
44
|
type IdAllocator,
|
|
48
45
|
type Mutable,
|
|
49
46
|
brand,
|
|
50
|
-
deleteFromNestedMap,
|
|
51
47
|
fail,
|
|
52
|
-
forEachInNestedMap,
|
|
53
|
-
getOrAddInMap,
|
|
54
48
|
idAllocatorFromMaxId,
|
|
55
49
|
idAllocatorFromState,
|
|
56
|
-
nestedMapFromFlatList,
|
|
57
|
-
nestedMapToFlatList,
|
|
58
|
-
populateNestedMap,
|
|
59
|
-
setInNestedMap,
|
|
60
|
-
tryGetFromNestedMap,
|
|
61
|
-
type NestedMap,
|
|
62
50
|
type RangeQueryResult,
|
|
51
|
+
getOrAddInMapLazy,
|
|
63
52
|
} from "../../util/index.js";
|
|
64
53
|
import {
|
|
65
54
|
type TreeChunk,
|
|
@@ -86,6 +75,7 @@ import { type FieldKindWithEditor, withEditor } from "./fieldKindWithEditor.js";
|
|
|
86
75
|
import { convertGenericChange, genericFieldKind } from "./genericFieldKind.js";
|
|
87
76
|
import type { GenericChangeset } from "./genericFieldKindTypes.js";
|
|
88
77
|
import type {
|
|
78
|
+
ChangeAtomIdBTree,
|
|
89
79
|
CrossFieldKeyRange,
|
|
90
80
|
CrossFieldKeyTable,
|
|
91
81
|
FieldChange,
|
|
@@ -215,27 +205,27 @@ export class ModularChangeFamily
|
|
|
215
205
|
return makeModularChangeset();
|
|
216
206
|
}
|
|
217
207
|
|
|
218
|
-
return changes
|
|
219
|
-
|
|
220
|
-
|
|
208
|
+
return changes
|
|
209
|
+
.map((change) => change.change)
|
|
210
|
+
.reduce((change1, change2) => this.composePair(change1, change2, revInfos, idState));
|
|
221
211
|
}
|
|
222
212
|
|
|
223
213
|
private composePair(
|
|
224
|
-
change1:
|
|
225
|
-
change2:
|
|
214
|
+
change1: ModularChangeset,
|
|
215
|
+
change2: ModularChangeset,
|
|
226
216
|
revInfos: RevisionInfo[],
|
|
227
217
|
idState: IdAllocationState,
|
|
228
218
|
): ModularChangeset {
|
|
229
219
|
const { fieldChanges, nodeChanges, nodeToParent, nodeAliases, crossFieldKeys } =
|
|
230
|
-
this.composeAllFields(change1
|
|
220
|
+
this.composeAllFields(change1, change2, revInfos, idState);
|
|
231
221
|
|
|
232
|
-
const { allBuilds, allDestroys, allRefreshers } = composeBuildsDestroysAndRefreshers(
|
|
222
|
+
const { allBuilds, allDestroys, allRefreshers } = composeBuildsDestroysAndRefreshers(
|
|
233
223
|
change1,
|
|
234
224
|
change2,
|
|
235
|
-
|
|
225
|
+
);
|
|
236
226
|
|
|
237
227
|
return makeModularChangeset(
|
|
238
|
-
|
|
228
|
+
fieldChanges,
|
|
239
229
|
nodeChanges,
|
|
240
230
|
nodeToParent,
|
|
241
231
|
nodeAliases,
|
|
@@ -258,10 +248,10 @@ export class ModularChangeFamily
|
|
|
258
248
|
if (hasConflicts(change1) && hasConflicts(change2)) {
|
|
259
249
|
return {
|
|
260
250
|
fieldChanges: new Map(),
|
|
261
|
-
nodeChanges:
|
|
262
|
-
nodeToParent:
|
|
263
|
-
nodeAliases:
|
|
264
|
-
crossFieldKeys:
|
|
251
|
+
nodeChanges: newTupleBTree(),
|
|
252
|
+
nodeToParent: newTupleBTree(),
|
|
253
|
+
nodeAliases: newTupleBTree(),
|
|
254
|
+
crossFieldKeys: newTupleBTree(),
|
|
265
255
|
};
|
|
266
256
|
} else if (hasConflicts(change1)) {
|
|
267
257
|
return change2;
|
|
@@ -276,21 +266,21 @@ export class ModularChangeFamily
|
|
|
276
266
|
|
|
277
267
|
// We merge nodeChanges, nodeToParent, and nodeAliases from the two changesets.
|
|
278
268
|
// The merged tables will have correct entries for all nodes which are only referenced in one of the input changesets.
|
|
279
|
-
// During composeFieldMaps and
|
|
269
|
+
// During composeFieldMaps and composeInvalidatedElements we will find all nodes referenced in both input changesets
|
|
280
270
|
// and adjust these tables as necessary.
|
|
281
271
|
// Note that when merging these tables we may encounter key collisions and will arbitrarily drop values in that case.
|
|
282
272
|
// A collision for a node ID means that that node is referenced in both changesets
|
|
283
273
|
// (since we assume that if two changesets use the same node ID they are referring to the same node),
|
|
284
274
|
// therefore all collisions will be addressed when processing the intersection of the changesets.
|
|
285
|
-
const composedNodeChanges:
|
|
286
|
-
change1.nodeChanges,
|
|
287
|
-
change2.nodeChanges,
|
|
275
|
+
const composedNodeChanges: ChangeAtomIdBTree<NodeChangeset> = brand(
|
|
276
|
+
mergeBTrees(change1.nodeChanges, change2.nodeChanges),
|
|
288
277
|
);
|
|
289
278
|
|
|
290
|
-
const composedNodeToParent =
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
279
|
+
const composedNodeToParent: ChangeAtomIdBTree<FieldId> = brand(
|
|
280
|
+
mergeBTrees(change1.nodeToParent, change2.nodeToParent),
|
|
281
|
+
);
|
|
282
|
+
const composedNodeAliases: ChangeAtomIdBTree<NodeId> = brand(
|
|
283
|
+
mergeBTrees(change1.nodeAliases, change2.nodeAliases),
|
|
294
284
|
);
|
|
295
285
|
|
|
296
286
|
const composedFields = this.composeFieldMaps(
|
|
@@ -301,7 +291,7 @@ export class ModularChangeFamily
|
|
|
301
291
|
revisionMetadata,
|
|
302
292
|
);
|
|
303
293
|
|
|
304
|
-
this.
|
|
294
|
+
this.composeInvalidatedElements(
|
|
305
295
|
crossFieldTable,
|
|
306
296
|
composedFields,
|
|
307
297
|
composedNodeChanges,
|
|
@@ -367,12 +357,12 @@ export class ModularChangeFamily
|
|
|
367
357
|
*
|
|
368
358
|
* Updating an element may invalidate further elements. This function runs until there is no more invalidation.
|
|
369
359
|
*/
|
|
370
|
-
private
|
|
360
|
+
private composeInvalidatedElements(
|
|
371
361
|
table: ComposeTable,
|
|
372
362
|
composedFields: FieldChangeMap,
|
|
373
|
-
composedNodes:
|
|
374
|
-
composedNodeToParent:
|
|
375
|
-
nodeAliases:
|
|
363
|
+
composedNodes: ChangeAtomIdBTree<NodeChangeset>,
|
|
364
|
+
composedNodeToParent: ChangeAtomIdBTree<FieldId>,
|
|
365
|
+
nodeAliases: ChangeAtomIdBTree<NodeId>,
|
|
376
366
|
genId: IdAllocator,
|
|
377
367
|
metadata: RevisionMetadataSource,
|
|
378
368
|
): void {
|
|
@@ -456,7 +446,7 @@ export class ModularChangeFamily
|
|
|
456
446
|
areBaseFields: boolean,
|
|
457
447
|
affectedFields: BTree<FieldIdKey, true>,
|
|
458
448
|
composedFields: FieldChangeMap,
|
|
459
|
-
composedNodes:
|
|
449
|
+
composedNodes: ChangeAtomIdBTree<NodeChangeset>,
|
|
460
450
|
genId: IdAllocator,
|
|
461
451
|
metadata: RevisionMetadataSource,
|
|
462
452
|
): void {
|
|
@@ -600,11 +590,11 @@ export class ModularChangeFamily
|
|
|
600
590
|
}
|
|
601
591
|
|
|
602
592
|
private composeNodesById(
|
|
603
|
-
nodeChanges1:
|
|
604
|
-
nodeChanges2:
|
|
605
|
-
composedNodes:
|
|
606
|
-
composedNodeToParent:
|
|
607
|
-
nodeAliases:
|
|
593
|
+
nodeChanges1: ChangeAtomIdBTree<NodeChangeset>,
|
|
594
|
+
nodeChanges2: ChangeAtomIdBTree<NodeChangeset>,
|
|
595
|
+
composedNodes: ChangeAtomIdBTree<NodeChangeset>,
|
|
596
|
+
composedNodeToParent: ChangeAtomIdBTree<FieldId>,
|
|
597
|
+
nodeAliases: ChangeAtomIdBTree<NodeId>,
|
|
608
598
|
id1: NodeId,
|
|
609
599
|
id2: NodeId,
|
|
610
600
|
idAllocator: IdAllocator,
|
|
@@ -624,12 +614,12 @@ export class ModularChangeFamily
|
|
|
624
614
|
setInChangeAtomIdMap(composedNodes, id1, composedNodeChangeset);
|
|
625
615
|
|
|
626
616
|
if (!areEqualChangeAtomIds(id1, id2)) {
|
|
627
|
-
|
|
628
|
-
|
|
617
|
+
composedNodes.delete([id2.revision, id2.localId]);
|
|
618
|
+
composedNodeToParent.delete([id2.revision, id2.localId]);
|
|
629
619
|
setInChangeAtomIdMap(nodeAliases, id2, id1);
|
|
630
620
|
|
|
631
621
|
// We need to delete id1 to avoid forming a cycle in case id1 already had an alias.
|
|
632
|
-
|
|
622
|
+
nodeAliases.delete([id1.revision, id1.localId]);
|
|
633
623
|
}
|
|
634
624
|
|
|
635
625
|
crossFieldTable.composedNodes.add(composedNodeChangeset);
|
|
@@ -675,9 +665,7 @@ export class ModularChangeFamily
|
|
|
675
665
|
isRollback: boolean,
|
|
676
666
|
): ModularChangeset {
|
|
677
667
|
// Rollback changesets destroy the nodes created by the change being rolled back.
|
|
678
|
-
const destroys = isRollback
|
|
679
|
-
? invertBuilds(change.change.builds, change.revision)
|
|
680
|
-
: undefined;
|
|
668
|
+
const destroys = isRollback ? invertBuilds(change.change.builds) : undefined;
|
|
681
669
|
|
|
682
670
|
// Destroys only occur in rollback changesets, which are never inverted.
|
|
683
671
|
assert(
|
|
@@ -701,12 +689,11 @@ export class ModularChangeFamily
|
|
|
701
689
|
}
|
|
702
690
|
|
|
703
691
|
const genId: IdAllocator = idAllocatorFromMaxId(change.change.maxId ?? -1);
|
|
704
|
-
const invertedNodeToParent = cloneNestedMap(change.change.nodeToParent);
|
|
705
692
|
|
|
706
693
|
const crossFieldTable: InvertTable = {
|
|
707
694
|
...newCrossFieldTable<FieldChange>(),
|
|
708
695
|
originalFieldToContext: new Map(),
|
|
709
|
-
invertedNodeToParent,
|
|
696
|
+
invertedNodeToParent: brand(change.change.nodeToParent.clone()),
|
|
710
697
|
};
|
|
711
698
|
|
|
712
699
|
const { revInfos } = getRevInfoFromTaggedChanges([change]);
|
|
@@ -721,12 +708,10 @@ export class ModularChangeFamily
|
|
|
721
708
|
revisionMetadata,
|
|
722
709
|
);
|
|
723
710
|
|
|
724
|
-
const invertedNodes:
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
revision,
|
|
729
|
-
localId,
|
|
711
|
+
const invertedNodes: ChangeAtomIdBTree<NodeChangeset> = newTupleBTree();
|
|
712
|
+
change.change.nodeChanges.forEachPair(([revision, localId], nodeChangeset) => {
|
|
713
|
+
invertedNodes.set(
|
|
714
|
+
[revision, localId],
|
|
730
715
|
this.invertNodeChange(
|
|
731
716
|
nodeChangeset,
|
|
732
717
|
{ revision, localId },
|
|
@@ -769,7 +754,7 @@ export class ModularChangeFamily
|
|
|
769
754
|
return makeModularChangeset(
|
|
770
755
|
invertedFields,
|
|
771
756
|
invertedNodes,
|
|
772
|
-
invertedNodeToParent,
|
|
757
|
+
crossFieldTable.invertedNodeToParent,
|
|
773
758
|
change.change.nodeAliases,
|
|
774
759
|
crossFieldKeys,
|
|
775
760
|
genId.getMaxId(),
|
|
@@ -852,15 +837,16 @@ export class ModularChangeFamily
|
|
|
852
837
|
newChange: change,
|
|
853
838
|
baseChange: over.change,
|
|
854
839
|
baseFieldToContext: new Map(),
|
|
855
|
-
baseToRebasedNodeId:
|
|
840
|
+
baseToRebasedNodeId: newTupleBTree(),
|
|
856
841
|
rebasedFields: new Set(),
|
|
857
|
-
rebasedNodeToParent:
|
|
842
|
+
rebasedNodeToParent: brand(change.nodeToParent.clone()),
|
|
858
843
|
rebasedCrossFieldKeys: brand(change.crossFieldKeys.clone()),
|
|
859
844
|
nodeIdPairs: [],
|
|
860
|
-
affectedBaseFields:
|
|
845
|
+
affectedBaseFields: newTupleBTree(),
|
|
846
|
+
fieldsWithUnattachedChild: new Set(),
|
|
861
847
|
};
|
|
862
848
|
|
|
863
|
-
|
|
849
|
+
const constraintState = newConstraintState(change.constraintViolationCount ?? 0);
|
|
864
850
|
|
|
865
851
|
const getBaseRevisions = (): RevisionTag[] =>
|
|
866
852
|
revisionInfoFromTaggedChange(over).map((info) => info.revision);
|
|
@@ -871,7 +857,7 @@ export class ModularChangeFamily
|
|
|
871
857
|
getBaseRevisions,
|
|
872
858
|
};
|
|
873
859
|
|
|
874
|
-
const rebasedNodes:
|
|
860
|
+
const rebasedNodes: ChangeAtomIdBTree<NodeChangeset> = brand(change.nodeChanges.clone());
|
|
875
861
|
|
|
876
862
|
const rebasedFields = this.rebaseIntersectingFields(
|
|
877
863
|
crossFieldTable,
|
|
@@ -881,64 +867,14 @@ export class ModularChangeFamily
|
|
|
881
867
|
rebaseMetadata,
|
|
882
868
|
);
|
|
883
869
|
|
|
884
|
-
this.
|
|
870
|
+
this.rebaseInvalidatedElements(
|
|
885
871
|
rebasedFields,
|
|
886
872
|
rebasedNodes,
|
|
887
873
|
crossFieldTable,
|
|
888
|
-
genId,
|
|
889
874
|
rebaseMetadata,
|
|
875
|
+
genId,
|
|
890
876
|
);
|
|
891
877
|
|
|
892
|
-
if (crossFieldTable.invalidatedFields.size > 0) {
|
|
893
|
-
const fieldsToUpdate = crossFieldTable.invalidatedFields;
|
|
894
|
-
crossFieldTable.invalidatedFields = new Set();
|
|
895
|
-
constraintState = newConstraintState(change.constraintViolationCount ?? 0);
|
|
896
|
-
for (const field of fieldsToUpdate) {
|
|
897
|
-
const context = crossFieldTable.baseFieldToContext.get(field);
|
|
898
|
-
assert(context !== undefined, 0x852 /* Every field should have a context */);
|
|
899
|
-
const {
|
|
900
|
-
changeHandler,
|
|
901
|
-
change1: fieldChangeset,
|
|
902
|
-
change2: baseChangeset,
|
|
903
|
-
} = this.normalizeFieldChanges(
|
|
904
|
-
context.newChange,
|
|
905
|
-
context.baseChange,
|
|
906
|
-
genId,
|
|
907
|
-
revisionMetadata,
|
|
908
|
-
);
|
|
909
|
-
|
|
910
|
-
const rebaseChild = (
|
|
911
|
-
curr: NodeId | undefined,
|
|
912
|
-
base: NodeId | undefined,
|
|
913
|
-
): NodeId | undefined => {
|
|
914
|
-
if (curr !== undefined) {
|
|
915
|
-
return curr;
|
|
916
|
-
}
|
|
917
|
-
|
|
918
|
-
if (base !== undefined) {
|
|
919
|
-
for (const id of context.baseNodeIds) {
|
|
920
|
-
if (areEqualChangeAtomIds(base, id)) {
|
|
921
|
-
return base;
|
|
922
|
-
}
|
|
923
|
-
}
|
|
924
|
-
}
|
|
925
|
-
|
|
926
|
-
return undefined;
|
|
927
|
-
};
|
|
928
|
-
|
|
929
|
-
context.rebasedChange.change = brand(
|
|
930
|
-
changeHandler.rebaser.rebase(
|
|
931
|
-
fieldChangeset,
|
|
932
|
-
baseChangeset,
|
|
933
|
-
rebaseChild,
|
|
934
|
-
genId,
|
|
935
|
-
new RebaseManager(crossFieldTable, field, context.fieldId),
|
|
936
|
-
rebaseMetadata,
|
|
937
|
-
),
|
|
938
|
-
);
|
|
939
|
-
}
|
|
940
|
-
}
|
|
941
|
-
|
|
942
878
|
this.updateConstraintsForFields(
|
|
943
879
|
rebasedFields,
|
|
944
880
|
NodeAttachState.Attached,
|
|
@@ -965,7 +901,7 @@ export class ModularChangeFamily
|
|
|
965
901
|
// TODO: Can we also handle additional passes in this method?
|
|
966
902
|
private rebaseIntersectingFields(
|
|
967
903
|
crossFieldTable: RebaseTable,
|
|
968
|
-
rebasedNodes:
|
|
904
|
+
rebasedNodes: ChangeAtomIdBTree<NodeChangeset>,
|
|
969
905
|
genId: IdAllocator,
|
|
970
906
|
constraintState: ConstraintState,
|
|
971
907
|
metadata: RebaseRevisionMetadata,
|
|
@@ -1002,7 +938,7 @@ export class ModularChangeFamily
|
|
|
1002
938
|
// This processes fields which have no new changes but have been invalidated by another field.
|
|
1003
939
|
private rebaseFieldsWithoutNewChanges(
|
|
1004
940
|
rebasedFields: FieldChangeMap,
|
|
1005
|
-
rebasedNodes:
|
|
941
|
+
rebasedNodes: ChangeAtomIdBTree<NodeChangeset>,
|
|
1006
942
|
crossFieldTable: RebaseTable,
|
|
1007
943
|
genId: IdAllocator,
|
|
1008
944
|
metadata: RebaseRevisionMetadata,
|
|
@@ -1088,9 +1024,102 @@ export class ModularChangeFamily
|
|
|
1088
1024
|
}
|
|
1089
1025
|
}
|
|
1090
1026
|
|
|
1027
|
+
private rebaseInvalidatedElements(
|
|
1028
|
+
rebasedFields: FieldChangeMap,
|
|
1029
|
+
rebasedNodes: ChangeAtomIdBTree<NodeChangeset>,
|
|
1030
|
+
table: RebaseTable,
|
|
1031
|
+
metadata: RebaseRevisionMetadata,
|
|
1032
|
+
idAllocator: IdAllocator,
|
|
1033
|
+
): void {
|
|
1034
|
+
this.rebaseFieldsWithoutNewChanges(
|
|
1035
|
+
rebasedFields,
|
|
1036
|
+
rebasedNodes,
|
|
1037
|
+
table,
|
|
1038
|
+
idAllocator,
|
|
1039
|
+
metadata,
|
|
1040
|
+
);
|
|
1041
|
+
|
|
1042
|
+
this.rebaseFieldsWithUnattachedChild(table, metadata, idAllocator);
|
|
1043
|
+
this.rebaseInvalidatedFields(table, metadata, idAllocator);
|
|
1044
|
+
}
|
|
1045
|
+
|
|
1046
|
+
private rebaseInvalidatedFields(
|
|
1047
|
+
crossFieldTable: RebaseTable,
|
|
1048
|
+
rebaseMetadata: RebaseRevisionMetadata,
|
|
1049
|
+
genId: IdAllocator,
|
|
1050
|
+
): void {
|
|
1051
|
+
const fieldsToUpdate = crossFieldTable.invalidatedFields;
|
|
1052
|
+
crossFieldTable.invalidatedFields = new Set();
|
|
1053
|
+
for (const field of fieldsToUpdate) {
|
|
1054
|
+
this.rebaseInvalidatedField(field, crossFieldTable, rebaseMetadata, genId);
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
private rebaseFieldsWithUnattachedChild(
|
|
1059
|
+
table: RebaseTable,
|
|
1060
|
+
metadata: RebaseRevisionMetadata,
|
|
1061
|
+
idAllocator: IdAllocator,
|
|
1062
|
+
): void {
|
|
1063
|
+
for (const field of table.fieldsWithUnattachedChild) {
|
|
1064
|
+
table.invalidatedFields.delete(field);
|
|
1065
|
+
this.rebaseInvalidatedField(field, table, metadata, idAllocator, true);
|
|
1066
|
+
}
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
private rebaseInvalidatedField(
|
|
1070
|
+
baseField: FieldChange,
|
|
1071
|
+
crossFieldTable: RebaseTable,
|
|
1072
|
+
rebaseMetadata: RebaseRevisionMetadata,
|
|
1073
|
+
genId: IdAllocator,
|
|
1074
|
+
allowInval = false,
|
|
1075
|
+
): void {
|
|
1076
|
+
const context = crossFieldTable.baseFieldToContext.get(baseField);
|
|
1077
|
+
assert(context !== undefined, 0x852 /* Every field should have a context */);
|
|
1078
|
+
const {
|
|
1079
|
+
changeHandler,
|
|
1080
|
+
change1: fieldChangeset,
|
|
1081
|
+
change2: baseChangeset,
|
|
1082
|
+
} = this.normalizeFieldChanges(
|
|
1083
|
+
context.newChange,
|
|
1084
|
+
context.baseChange,
|
|
1085
|
+
genId,
|
|
1086
|
+
rebaseMetadata,
|
|
1087
|
+
);
|
|
1088
|
+
|
|
1089
|
+
const rebaseChild = (
|
|
1090
|
+
curr: NodeId | undefined,
|
|
1091
|
+
base: NodeId | undefined,
|
|
1092
|
+
): NodeId | undefined => {
|
|
1093
|
+
if (curr !== undefined) {
|
|
1094
|
+
return curr;
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
if (base !== undefined) {
|
|
1098
|
+
for (const id of context.baseNodeIds) {
|
|
1099
|
+
if (areEqualChangeAtomIds(base, id)) {
|
|
1100
|
+
return base;
|
|
1101
|
+
}
|
|
1102
|
+
}
|
|
1103
|
+
}
|
|
1104
|
+
|
|
1105
|
+
return undefined;
|
|
1106
|
+
};
|
|
1107
|
+
|
|
1108
|
+
context.rebasedChange.change = brand(
|
|
1109
|
+
changeHandler.rebaser.rebase(
|
|
1110
|
+
fieldChangeset,
|
|
1111
|
+
baseChangeset,
|
|
1112
|
+
rebaseChild,
|
|
1113
|
+
genId,
|
|
1114
|
+
new RebaseManager(crossFieldTable, baseField, context.fieldId, allowInval),
|
|
1115
|
+
rebaseMetadata,
|
|
1116
|
+
),
|
|
1117
|
+
);
|
|
1118
|
+
}
|
|
1119
|
+
|
|
1091
1120
|
private attachRebasedField(
|
|
1092
1121
|
rebasedFields: FieldChangeMap,
|
|
1093
|
-
rebasedNodes:
|
|
1122
|
+
rebasedNodes: ChangeAtomIdBTree<NodeChangeset>,
|
|
1094
1123
|
table: RebaseTable,
|
|
1095
1124
|
rebasedField: FieldChange,
|
|
1096
1125
|
{ nodeId, field: fieldKey }: FieldId,
|
|
@@ -1135,7 +1164,7 @@ export class ModularChangeFamily
|
|
|
1135
1164
|
|
|
1136
1165
|
private attachRebasedNode(
|
|
1137
1166
|
rebasedFields: FieldChangeMap,
|
|
1138
|
-
rebasedNodes:
|
|
1167
|
+
rebasedNodes: ChangeAtomIdBTree<NodeChangeset>,
|
|
1139
1168
|
table: RebaseTable,
|
|
1140
1169
|
baseNodeId: NodeId,
|
|
1141
1170
|
parentFieldIdBase: FieldId,
|
|
@@ -1154,9 +1183,9 @@ export class ModularChangeFamily
|
|
|
1154
1183
|
const context = table.baseFieldToContext.get(baseFieldChange);
|
|
1155
1184
|
if (context !== undefined) {
|
|
1156
1185
|
// We've already processed this field.
|
|
1157
|
-
// The new child node
|
|
1186
|
+
// The new child node will be attached in rebaseFieldsWithUnattachedChild.
|
|
1158
1187
|
context.baseNodeIds.push(baseNodeId);
|
|
1159
|
-
table.
|
|
1188
|
+
table.fieldsWithUnattachedChild.add(baseFieldChange);
|
|
1160
1189
|
return;
|
|
1161
1190
|
}
|
|
1162
1191
|
|
|
@@ -1310,7 +1339,7 @@ export class ModularChangeFamily
|
|
|
1310
1339
|
fields: FieldChangeMap,
|
|
1311
1340
|
parentAttachState: NodeAttachState,
|
|
1312
1341
|
constraintState: ConstraintState,
|
|
1313
|
-
nodes:
|
|
1342
|
+
nodes: ChangeAtomIdBTree<NodeChangeset>,
|
|
1314
1343
|
): void {
|
|
1315
1344
|
for (const field of fields.values()) {
|
|
1316
1345
|
const handler = getChangeHandler(this.fieldKinds, field.fieldKind);
|
|
@@ -1329,11 +1358,9 @@ export class ModularChangeFamily
|
|
|
1329
1358
|
nodeId: NodeId,
|
|
1330
1359
|
attachState: NodeAttachState,
|
|
1331
1360
|
constraintState: ConstraintState,
|
|
1332
|
-
nodes:
|
|
1361
|
+
nodes: ChangeAtomIdBTree<NodeChangeset>,
|
|
1333
1362
|
): void {
|
|
1334
|
-
const node =
|
|
1335
|
-
tryGetFromNestedMap(nodes, nodeId.revision, nodeId.localId) ?? fail("Unknown node ID");
|
|
1336
|
-
|
|
1363
|
+
const node = nodes.get([nodeId.revision, nodeId.localId]) ?? fail("Unknown node ID");
|
|
1337
1364
|
if (node.nodeExistsConstraint !== undefined) {
|
|
1338
1365
|
const isNowViolated = attachState === NodeAttachState.Detached;
|
|
1339
1366
|
if (node.nodeExistsConstraint.violated !== isNowViolated) {
|
|
@@ -1352,7 +1379,7 @@ export class ModularChangeFamily
|
|
|
1352
1379
|
|
|
1353
1380
|
private pruneFieldMap(
|
|
1354
1381
|
changeset: FieldChangeMap | undefined,
|
|
1355
|
-
nodeMap:
|
|
1382
|
+
nodeMap: ChangeAtomIdBTree<NodeChangeset>,
|
|
1356
1383
|
): FieldChangeMap | undefined {
|
|
1357
1384
|
if (changeset === undefined) {
|
|
1358
1385
|
return undefined;
|
|
@@ -1376,7 +1403,7 @@ export class ModularChangeFamily
|
|
|
1376
1403
|
|
|
1377
1404
|
private pruneNodeChange(
|
|
1378
1405
|
nodeId: NodeId,
|
|
1379
|
-
nodeMap:
|
|
1406
|
+
nodeMap: ChangeAtomIdBTree<NodeChangeset>,
|
|
1380
1407
|
): NodeId | undefined {
|
|
1381
1408
|
const changeset = nodeChangeFromId(nodeMap, nodeId);
|
|
1382
1409
|
const prunedFields =
|
|
@@ -1390,7 +1417,7 @@ export class ModularChangeFamily
|
|
|
1390
1417
|
}
|
|
1391
1418
|
|
|
1392
1419
|
if (isEmptyNodeChangeset(prunedChange)) {
|
|
1393
|
-
|
|
1420
|
+
nodeMap.delete([nodeId.revision, nodeId.localId]);
|
|
1394
1421
|
return undefined;
|
|
1395
1422
|
} else {
|
|
1396
1423
|
setInChangeAtomIdMap(nodeMap, nodeId, prunedChange);
|
|
@@ -1414,25 +1441,25 @@ export class ModularChangeFamily
|
|
|
1414
1441
|
newRevision,
|
|
1415
1442
|
);
|
|
1416
1443
|
|
|
1417
|
-
const updatedNodes:
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
id,
|
|
1444
|
+
const updatedNodes: ChangeAtomIdBTree<NodeChangeset> = newTupleBTree();
|
|
1445
|
+
for (const [[revision, id], nodeChangeset] of change.nodeChanges.entries()) {
|
|
1446
|
+
updatedNodes.set(
|
|
1447
|
+
[replaceRevision(revision, oldRevisions, newRevision), id],
|
|
1421
1448
|
this.replaceNodeChangesetRevisions(nodeChangeset, oldRevisions, newRevision),
|
|
1422
|
-
|
|
1423
|
-
|
|
1449
|
+
);
|
|
1450
|
+
}
|
|
1424
1451
|
|
|
1425
|
-
const updatedNodeToParent:
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
id,
|
|
1452
|
+
const updatedNodeToParent: ChangeAtomIdBTree<FieldId> = newTupleBTree();
|
|
1453
|
+
for (const [[revision, id], fieldId] of change.nodeToParent.entries()) {
|
|
1454
|
+
updatedNodeToParent.set(
|
|
1455
|
+
[replaceRevision(revision, oldRevisions, newRevision), id],
|
|
1429
1456
|
replaceFieldIdRevision(
|
|
1430
1457
|
normalizeFieldId(fieldId, change.nodeAliases),
|
|
1431
1458
|
oldRevisions,
|
|
1432
1459
|
newRevision,
|
|
1433
1460
|
),
|
|
1434
|
-
|
|
1435
|
-
|
|
1461
|
+
);
|
|
1462
|
+
}
|
|
1436
1463
|
|
|
1437
1464
|
const updated: Mutable<ModularChangeset> = {
|
|
1438
1465
|
...change,
|
|
@@ -1441,7 +1468,7 @@ export class ModularChangeFamily
|
|
|
1441
1468
|
nodeToParent: updatedNodeToParent,
|
|
1442
1469
|
|
|
1443
1470
|
// We've updated all references to old node IDs, so we no longer need an alias table.
|
|
1444
|
-
nodeAliases:
|
|
1471
|
+
nodeAliases: newTupleBTree(),
|
|
1445
1472
|
crossFieldKeys: replaceCrossFieldKeyTableRevisions(
|
|
1446
1473
|
change.crossFieldKeys,
|
|
1447
1474
|
oldRevisions,
|
|
@@ -1513,11 +1540,11 @@ export class ModularChangeFamily
|
|
|
1513
1540
|
|
|
1514
1541
|
private makeCrossFieldKeyTable(
|
|
1515
1542
|
fields: FieldChangeMap,
|
|
1516
|
-
nodes:
|
|
1543
|
+
nodes: ChangeAtomIdBTree<NodeChangeset>,
|
|
1517
1544
|
): CrossFieldKeyTable {
|
|
1518
1545
|
const keys: CrossFieldKeyTable = newCrossFieldKeyTable();
|
|
1519
1546
|
this.populateCrossFieldKeyTableForFieldMap(keys, fields, undefined);
|
|
1520
|
-
|
|
1547
|
+
nodes.forEachPair(([revision, localId], node) => {
|
|
1521
1548
|
if (node.fieldChanges !== undefined) {
|
|
1522
1549
|
this.populateCrossFieldKeyTableForFieldMap(keys, node.fieldChanges, {
|
|
1523
1550
|
revision,
|
|
@@ -1558,9 +1585,9 @@ function replaceCrossFieldKeyTableRevisions(
|
|
|
1558
1585
|
table: CrossFieldKeyTable,
|
|
1559
1586
|
oldRevisions: Set<RevisionTag | undefined>,
|
|
1560
1587
|
newRevision: RevisionTag | undefined,
|
|
1561
|
-
nodeAliases:
|
|
1588
|
+
nodeAliases: ChangeAtomIdBTree<NodeId>,
|
|
1562
1589
|
): CrossFieldKeyTable {
|
|
1563
|
-
const updated: CrossFieldKeyTable =
|
|
1590
|
+
const updated: CrossFieldKeyTable = newTupleBTree();
|
|
1564
1591
|
table.forEachPair(([target, revision, id, count], field) => {
|
|
1565
1592
|
const updatedKey: CrossFieldKeyRange = [
|
|
1566
1593
|
target,
|
|
@@ -1595,122 +1622,92 @@ function replaceRevision(
|
|
|
1595
1622
|
}
|
|
1596
1623
|
|
|
1597
1624
|
function replaceIdMapRevisions<T>(
|
|
1598
|
-
map:
|
|
1625
|
+
map: ChangeAtomIdBTree<T>,
|
|
1599
1626
|
oldRevisions: Set<RevisionTag | undefined>,
|
|
1600
1627
|
newRevision: RevisionTag | undefined,
|
|
1601
|
-
):
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
);
|
|
1628
|
+
): ChangeAtomIdBTree<T> {
|
|
1629
|
+
const updated: ChangeAtomIdBTree<T> = newTupleBTree();
|
|
1630
|
+
for (const [[revision, id], value] of map.entries()) {
|
|
1631
|
+
updated.set([replaceRevision(revision, oldRevisions, newRevision), id], value);
|
|
1632
|
+
}
|
|
1633
|
+
|
|
1634
|
+
return updated;
|
|
1609
1635
|
}
|
|
1610
1636
|
|
|
1611
1637
|
interface BuildsDestroysAndRefreshers {
|
|
1612
|
-
readonly allBuilds:
|
|
1613
|
-
readonly allDestroys:
|
|
1614
|
-
readonly allRefreshers:
|
|
1638
|
+
readonly allBuilds: ChangeAtomIdBTree<TreeChunk>;
|
|
1639
|
+
readonly allDestroys: ChangeAtomIdBTree<number>;
|
|
1640
|
+
readonly allRefreshers: ChangeAtomIdBTree<TreeChunk>;
|
|
1615
1641
|
}
|
|
1616
1642
|
|
|
1617
1643
|
function composeBuildsDestroysAndRefreshers(
|
|
1618
|
-
|
|
1644
|
+
change1: ModularChangeset,
|
|
1645
|
+
change2: ModularChangeset,
|
|
1619
1646
|
): BuildsDestroysAndRefreshers {
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1647
|
+
// Duplicate builds can happen in compositions of commits that needed to include detached tree refreshers (e.g., undos):
|
|
1648
|
+
// In that case, it's possible for the refreshers to contain different trees because the latter
|
|
1649
|
+
// refresher may already reflect the changes made by the commit that includes the earlier
|
|
1650
|
+
// refresher. This composition includes the changes made by the commit that includes the
|
|
1651
|
+
// earlier refresher, so we need to include the build for the earlier refresher, otherwise
|
|
1652
|
+
// the produced changeset will build a tree one which those changes have already been applied
|
|
1653
|
+
// and also try to apply the changes again, effectively applying them twice.
|
|
1654
|
+
// Note that it would in principle be possible to adopt the later build and exclude from the
|
|
1655
|
+
// composition all the changes already reflected on the tree, but that is not something we
|
|
1656
|
+
// care to support at this time.
|
|
1657
|
+
const allBuilds: ChangeAtomIdBTree<TreeChunk> = brand(
|
|
1658
|
+
mergeBTrees(change1.builds ?? newTupleBTree(), change2.builds ?? newTupleBTree(), true),
|
|
1659
|
+
);
|
|
1660
|
+
|
|
1661
|
+
const allDestroys: ChangeAtomIdBTree<number> = brand(
|
|
1662
|
+
mergeBTrees(change1.destroys ?? newTupleBTree(), change2.destroys ?? newTupleBTree()),
|
|
1663
|
+
);
|
|
1664
|
+
|
|
1665
|
+
const allRefreshers: ChangeAtomIdBTree<TreeChunk> = brand(
|
|
1666
|
+
mergeBTrees(
|
|
1667
|
+
change1.refreshers ?? newTupleBTree(),
|
|
1668
|
+
change2.refreshers ?? newTupleBTree(),
|
|
1669
|
+
true,
|
|
1670
|
+
),
|
|
1671
|
+
);
|
|
1672
|
+
|
|
1673
|
+
if (change1.destroys !== undefined && change2.builds !== undefined) {
|
|
1674
|
+
for (const [key, chunk] of change2.builds.entries()) {
|
|
1675
|
+
const destroyCount = change1.destroys.get(key);
|
|
1676
|
+
if (destroyCount !== undefined) {
|
|
1677
|
+
assert(
|
|
1678
|
+
destroyCount === chunk.topLevelLength,
|
|
1679
|
+
0x89b /* Expected build and destroy to have the same length */,
|
|
1633
1680
|
);
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
// In that case, it's possible for the refreshers to contain different trees because the latter
|
|
1638
|
-
// refresher may already reflect the changes made by the commit that includes the earlier
|
|
1639
|
-
// refresher. This composition includes the changes made by the commit that includes the
|
|
1640
|
-
// earlier refresher, so we need to include the build for the earlier refresher, otherwise
|
|
1641
|
-
// the produced changeset will build a tree one which those changes have already been applied
|
|
1642
|
-
// and also try to apply the changes again, effectively applying them twice.
|
|
1643
|
-
// Note that it would in principle be possible to adopt the later build and exclude from the
|
|
1644
|
-
// composition all the changes already reflected on the tree, but that is not something we
|
|
1645
|
-
// care to support at this time.
|
|
1646
|
-
if (!innerDstMap.has(id)) {
|
|
1647
|
-
// Check for earlier destroys that this build might cancel-out with.
|
|
1648
|
-
const destroyCount = tryGetFromNestedMap(allDestroys, setRevisionKey, id);
|
|
1649
|
-
if (destroyCount === undefined) {
|
|
1650
|
-
innerDstMap.set(id, chunk);
|
|
1651
|
-
} else {
|
|
1652
|
-
assert(
|
|
1653
|
-
destroyCount === chunk.topLevelLength,
|
|
1654
|
-
0x89b /* Expected build and destroy to have the same length */,
|
|
1655
|
-
);
|
|
1656
|
-
deleteFromNestedMap(allDestroys, setRevisionKey, id);
|
|
1657
|
-
}
|
|
1658
|
-
}
|
|
1659
|
-
}
|
|
1660
|
-
if (innerDstMap.size === 0) {
|
|
1661
|
-
allBuilds.delete(setRevisionKey);
|
|
1662
|
-
}
|
|
1681
|
+
|
|
1682
|
+
allBuilds.delete(key);
|
|
1683
|
+
allDestroys.delete(key);
|
|
1663
1684
|
}
|
|
1664
1685
|
}
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1671
|
-
|
|
1686
|
+
}
|
|
1687
|
+
|
|
1688
|
+
if (change1.builds !== undefined && change2.destroys !== undefined) {
|
|
1689
|
+
for (const [key, chunk] of change1.builds.entries()) {
|
|
1690
|
+
const destroyCount = change2.destroys.get(key);
|
|
1691
|
+
if (destroyCount !== undefined) {
|
|
1692
|
+
assert(
|
|
1693
|
+
destroyCount === chunk.topLevelLength,
|
|
1694
|
+
0x9f0 /* Expected build and destroy to have the same length */,
|
|
1672
1695
|
);
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
if (chunk === undefined) {
|
|
1677
|
-
innerDstMap.set(id, count);
|
|
1678
|
-
} else {
|
|
1679
|
-
assert(
|
|
1680
|
-
count === chunk.topLevelLength,
|
|
1681
|
-
0x89c /* Expected build and destroy to have the same length */,
|
|
1682
|
-
);
|
|
1683
|
-
deleteFromNestedMap(allBuilds, setRevisionKey, id);
|
|
1684
|
-
}
|
|
1685
|
-
}
|
|
1686
|
-
if (innerDstMap.size === 0) {
|
|
1687
|
-
allDestroys.delete(setRevisionKey);
|
|
1688
|
-
}
|
|
1696
|
+
|
|
1697
|
+
allBuilds.delete(key);
|
|
1698
|
+
allDestroys.delete(key);
|
|
1689
1699
|
}
|
|
1690
1700
|
}
|
|
1691
|
-
// add all refreshers while preferring earlier ones
|
|
1692
|
-
if (change.refreshers) {
|
|
1693
|
-
populateNestedMap(change.refreshers, allRefreshers, false);
|
|
1694
|
-
}
|
|
1695
1701
|
}
|
|
1702
|
+
|
|
1696
1703
|
return { allBuilds, allDestroys, allRefreshers };
|
|
1697
1704
|
}
|
|
1698
1705
|
|
|
1699
1706
|
function invertBuilds(
|
|
1700
|
-
builds:
|
|
1701
|
-
|
|
1702
|
-
): ChangeAtomIdMap<number> | undefined {
|
|
1707
|
+
builds: ChangeAtomIdBTree<TreeChunk> | undefined,
|
|
1708
|
+
): ChangeAtomIdBTree<number> | undefined {
|
|
1703
1709
|
if (builds !== undefined) {
|
|
1704
|
-
|
|
1705
|
-
for (const [revision, innerBuildMap] of builds) {
|
|
1706
|
-
const initializedRevision = revision ?? fallbackRevision;
|
|
1707
|
-
const innerDestroyMap: Map<ChangesetLocalId, number> = new Map();
|
|
1708
|
-
for (const [id, chunk] of innerBuildMap) {
|
|
1709
|
-
innerDestroyMap.set(id, chunk.topLevelLength);
|
|
1710
|
-
}
|
|
1711
|
-
destroys.set(initializedRevision, innerDestroyMap);
|
|
1712
|
-
}
|
|
1713
|
-
return destroys;
|
|
1710
|
+
return brand(builds.mapValues((chunk) => chunk.topLevelLength));
|
|
1714
1711
|
}
|
|
1715
1712
|
return undefined;
|
|
1716
1713
|
}
|
|
@@ -1739,7 +1736,7 @@ export function* relevantRemovedRoots(
|
|
|
1739
1736
|
|
|
1740
1737
|
function* relevantRemovedRootsFromFields(
|
|
1741
1738
|
change: FieldChangeMap,
|
|
1742
|
-
nodeChanges:
|
|
1739
|
+
nodeChanges: ChangeAtomIdBTree<NodeChangeset>,
|
|
1743
1740
|
fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,
|
|
1744
1741
|
): Iterable<DeltaDetachedNodeId> {
|
|
1745
1742
|
for (const [_, fieldChange] of change) {
|
|
@@ -1775,15 +1772,13 @@ export function updateRefreshers(
|
|
|
1775
1772
|
removedRoots: Iterable<DeltaDetachedNodeId>,
|
|
1776
1773
|
requireRefreshers: boolean = true,
|
|
1777
1774
|
): ModularChangeset {
|
|
1778
|
-
const refreshers:
|
|
1775
|
+
const refreshers: ChangeAtomIdBTree<TreeChunk> = newTupleBTree();
|
|
1779
1776
|
const chunkLengths: Map<RevisionTag | undefined, BTree<number, number>> = new Map();
|
|
1780
1777
|
|
|
1781
1778
|
if (change.builds !== undefined) {
|
|
1782
|
-
for (const [
|
|
1783
|
-
const lengthTree =
|
|
1784
|
-
|
|
1785
|
-
lengthTree.set(id, chunk.topLevelLength);
|
|
1786
|
-
}
|
|
1779
|
+
for (const [[revision, id], chunk] of change.builds.entries()) {
|
|
1780
|
+
const lengthTree = getOrAddInMapLazy(chunkLengths, revision, () => new BTree());
|
|
1781
|
+
lengthTree.set(id, chunk.topLevelLength);
|
|
1787
1782
|
}
|
|
1788
1783
|
}
|
|
1789
1784
|
|
|
@@ -1809,7 +1804,7 @@ export function updateRefreshers(
|
|
|
1809
1804
|
if (node === undefined) {
|
|
1810
1805
|
assert(!requireRefreshers, 0x8cd /* detached node should exist */);
|
|
1811
1806
|
} else {
|
|
1812
|
-
|
|
1807
|
+
refreshers.set([root.major, brand(root.minor)], node);
|
|
1813
1808
|
}
|
|
1814
1809
|
}
|
|
1815
1810
|
|
|
@@ -1869,12 +1864,12 @@ export function intoDelta(
|
|
|
1869
1864
|
}
|
|
1870
1865
|
if (change.destroys !== undefined && change.destroys.size > 0) {
|
|
1871
1866
|
const destroys: DeltaDetachedNodeDestruction[] = [];
|
|
1872
|
-
|
|
1867
|
+
for (const [[major, minor], count] of change.destroys.entries()) {
|
|
1873
1868
|
destroys.push({
|
|
1874
1869
|
id: makeDetachedNodeId(major, minor),
|
|
1875
1870
|
count,
|
|
1876
1871
|
});
|
|
1877
|
-
}
|
|
1872
|
+
}
|
|
1878
1873
|
rootDelta.destroy = destroys;
|
|
1879
1874
|
}
|
|
1880
1875
|
if (change.refreshers && change.refreshers.size > 0) {
|
|
@@ -1884,10 +1879,10 @@ export function intoDelta(
|
|
|
1884
1879
|
}
|
|
1885
1880
|
|
|
1886
1881
|
function copyDetachedNodes(
|
|
1887
|
-
detachedNodes:
|
|
1882
|
+
detachedNodes: ChangeAtomIdBTree<TreeChunk>,
|
|
1888
1883
|
): DeltaDetachedNodeBuild[] | undefined {
|
|
1889
1884
|
const copiedDetachedNodes: DeltaDetachedNodeBuild[] = [];
|
|
1890
|
-
|
|
1885
|
+
for (const [[major, minor], chunk] of detachedNodes.entries()) {
|
|
1891
1886
|
if (chunk.topLevelLength > 0) {
|
|
1892
1887
|
const trees = mapCursorField(chunk.cursor(), (c) =>
|
|
1893
1888
|
cursorForMapTreeNode(mapTreeFromCursor(c)),
|
|
@@ -1897,7 +1892,7 @@ function copyDetachedNodes(
|
|
|
1897
1892
|
trees,
|
|
1898
1893
|
});
|
|
1899
1894
|
}
|
|
1900
|
-
}
|
|
1895
|
+
}
|
|
1901
1896
|
return copiedDetachedNodes.length > 0 ? copiedDetachedNodes : undefined;
|
|
1902
1897
|
}
|
|
1903
1898
|
|
|
@@ -1906,7 +1901,7 @@ function copyDetachedNodes(
|
|
|
1906
1901
|
*/
|
|
1907
1902
|
function intoDeltaImpl(
|
|
1908
1903
|
change: FieldChangeMap,
|
|
1909
|
-
nodeChanges:
|
|
1904
|
+
nodeChanges: ChangeAtomIdBTree<NodeChangeset>,
|
|
1910
1905
|
idAllocator: MemoizedIdRangeAllocator,
|
|
1911
1906
|
fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,
|
|
1912
1907
|
): Map<FieldKey, DeltaFieldChanges> {
|
|
@@ -1929,7 +1924,7 @@ function intoDeltaImpl(
|
|
|
1929
1924
|
|
|
1930
1925
|
function deltaFromNodeChange(
|
|
1931
1926
|
change: NodeChangeset,
|
|
1932
|
-
nodeChanges:
|
|
1927
|
+
nodeChanges: ChangeAtomIdBTree<NodeChangeset>,
|
|
1933
1928
|
idAllocator: MemoizedIdRangeAllocator,
|
|
1934
1929
|
fieldKinds: ReadonlyMap<FieldKindIdentifier, FieldKindWithEditor>,
|
|
1935
1930
|
): DeltaFieldMap {
|
|
@@ -1941,7 +1936,6 @@ function deltaFromNodeChange(
|
|
|
1941
1936
|
}
|
|
1942
1937
|
|
|
1943
1938
|
/**
|
|
1944
|
-
* @internal
|
|
1945
1939
|
* @param revInfos - This should describe the revision being rebased and all revisions in the rebase path,
|
|
1946
1940
|
* even if not part of the current base changeset.
|
|
1947
1941
|
* For example, when rebasing change B from a local branch [A, B, C] over a branch [X, Y], the `revInfos` must include
|
|
@@ -2008,7 +2002,7 @@ interface CrossFieldTable<TFieldData> {
|
|
|
2008
2002
|
|
|
2009
2003
|
interface InvertTable extends CrossFieldTable<FieldChange> {
|
|
2010
2004
|
originalFieldToContext: Map<FieldChange, InvertContext>;
|
|
2011
|
-
invertedNodeToParent:
|
|
2005
|
+
invertedNodeToParent: ChangeAtomIdBTree<FieldId>;
|
|
2012
2006
|
}
|
|
2013
2007
|
|
|
2014
2008
|
interface InvertContext {
|
|
@@ -2025,9 +2019,9 @@ interface RebaseTable extends CrossFieldTable<FieldChange> {
|
|
|
2025
2019
|
* to the context for the field.
|
|
2026
2020
|
*/
|
|
2027
2021
|
readonly baseFieldToContext: Map<FieldChange, RebaseFieldContext>;
|
|
2028
|
-
readonly baseToRebasedNodeId:
|
|
2022
|
+
readonly baseToRebasedNodeId: ChangeAtomIdBTree<NodeId>;
|
|
2029
2023
|
readonly rebasedFields: Set<FieldChange>;
|
|
2030
|
-
readonly rebasedNodeToParent:
|
|
2024
|
+
readonly rebasedNodeToParent: ChangeAtomIdBTree<FieldId>;
|
|
2031
2025
|
readonly rebasedCrossFieldKeys: CrossFieldKeyTable;
|
|
2032
2026
|
|
|
2033
2027
|
/**
|
|
@@ -2035,6 +2029,11 @@ interface RebaseTable extends CrossFieldTable<FieldChange> {
|
|
|
2035
2029
|
*/
|
|
2036
2030
|
readonly nodeIdPairs: [NodeId, NodeId, NodeAttachState | undefined][];
|
|
2037
2031
|
readonly affectedBaseFields: TupleBTree<FieldIdKey, boolean>;
|
|
2032
|
+
|
|
2033
|
+
/**
|
|
2034
|
+
* Set of base fields which contain a node which needs to be attached in the rebased changeset.
|
|
2035
|
+
*/
|
|
2036
|
+
readonly fieldsWithUnattachedChild: Set<FieldChange>;
|
|
2038
2037
|
}
|
|
2039
2038
|
|
|
2040
2039
|
type FieldIdKey = [RevisionTag | undefined, ChangesetLocalId | undefined, FieldKey];
|
|
@@ -2062,12 +2061,12 @@ function newComposeTable(
|
|
|
2062
2061
|
newChange,
|
|
2063
2062
|
fieldToContext: new Map(),
|
|
2064
2063
|
newFieldToBaseField: new Map(),
|
|
2065
|
-
newToBaseNodeId:
|
|
2064
|
+
newToBaseNodeId: newTupleBTree(),
|
|
2066
2065
|
composedNodes: new Set(),
|
|
2067
2066
|
pendingCompositions: {
|
|
2068
2067
|
nodeIdsToCompose: [],
|
|
2069
|
-
affectedBaseFields:
|
|
2070
|
-
affectedNewFields:
|
|
2068
|
+
affectedBaseFields: newTupleBTree(),
|
|
2069
|
+
affectedNewFields: newTupleBTree(),
|
|
2071
2070
|
},
|
|
2072
2071
|
};
|
|
2073
2072
|
}
|
|
@@ -2081,7 +2080,7 @@ interface ComposeTable extends CrossFieldTable<FieldChange> {
|
|
|
2081
2080
|
*/
|
|
2082
2081
|
readonly fieldToContext: Map<FieldChange, ComposeFieldContext>;
|
|
2083
2082
|
readonly newFieldToBaseField: Map<FieldChange, FieldChange>;
|
|
2084
|
-
readonly newToBaseNodeId:
|
|
2083
|
+
readonly newToBaseNodeId: ChangeAtomIdBTree<NodeId>;
|
|
2085
2084
|
readonly composedNodes: Set<NodeChangeset>;
|
|
2086
2085
|
readonly pendingCompositions: PendingCompositions;
|
|
2087
2086
|
}
|
|
@@ -2121,7 +2120,6 @@ function newCrossFieldTable<T>(): CrossFieldTable<T> {
|
|
|
2121
2120
|
}
|
|
2122
2121
|
|
|
2123
2122
|
/**
|
|
2124
|
-
* @internal
|
|
2125
2123
|
*/
|
|
2126
2124
|
interface ConstraintState {
|
|
2127
2125
|
violationCount: number;
|
|
@@ -2392,22 +2390,22 @@ class ComposeManager extends CrossFieldManagerI<FieldChange> {
|
|
|
2392
2390
|
|
|
2393
2391
|
function makeModularChangeset(
|
|
2394
2392
|
fieldChanges: FieldChangeMap | undefined = undefined,
|
|
2395
|
-
nodeChanges:
|
|
2396
|
-
nodeToParent:
|
|
2397
|
-
nodeAliases:
|
|
2393
|
+
nodeChanges: ChangeAtomIdBTree<NodeChangeset> | undefined = undefined,
|
|
2394
|
+
nodeToParent: ChangeAtomIdBTree<FieldId> | undefined = undefined,
|
|
2395
|
+
nodeAliases: ChangeAtomIdBTree<NodeId> | undefined = undefined,
|
|
2398
2396
|
crossFieldKeys: CrossFieldKeyTable | undefined = undefined,
|
|
2399
2397
|
maxId: number = -1,
|
|
2400
2398
|
revisions: readonly RevisionInfo[] | undefined = undefined,
|
|
2401
2399
|
constraintViolationCount: number | undefined = undefined,
|
|
2402
|
-
builds?:
|
|
2403
|
-
destroys?:
|
|
2404
|
-
refreshers?:
|
|
2400
|
+
builds?: ChangeAtomIdBTree<TreeChunk>,
|
|
2401
|
+
destroys?: ChangeAtomIdBTree<number>,
|
|
2402
|
+
refreshers?: ChangeAtomIdBTree<TreeChunk>,
|
|
2405
2403
|
): ModularChangeset {
|
|
2406
2404
|
const changeset: Mutable<ModularChangeset> = {
|
|
2407
2405
|
fieldChanges: fieldChanges ?? new Map(),
|
|
2408
|
-
nodeChanges: nodeChanges ??
|
|
2409
|
-
nodeToParent: nodeToParent ??
|
|
2410
|
-
nodeAliases: nodeAliases ??
|
|
2406
|
+
nodeChanges: nodeChanges ?? newTupleBTree(),
|
|
2407
|
+
nodeToParent: nodeToParent ?? newTupleBTree(),
|
|
2408
|
+
nodeAliases: nodeAliases ?? newTupleBTree(),
|
|
2411
2409
|
crossFieldKeys: crossFieldKeys ?? newCrossFieldKeyTable(),
|
|
2412
2410
|
};
|
|
2413
2411
|
|
|
@@ -2472,14 +2470,12 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
|
|
|
2472
2470
|
if (content.mode === CursorLocationType.Fields && content.getFieldLength() === 0) {
|
|
2473
2471
|
return { type: "global" };
|
|
2474
2472
|
}
|
|
2475
|
-
const builds:
|
|
2476
|
-
const innerMap = new Map();
|
|
2477
|
-
builds.set(undefined, innerMap);
|
|
2473
|
+
const builds: ChangeAtomIdBTree<TreeChunk> = newTupleBTree();
|
|
2478
2474
|
const chunk =
|
|
2479
2475
|
content.mode === CursorLocationType.Fields
|
|
2480
2476
|
? chunkFieldSingle(content, defaultChunkPolicy)
|
|
2481
2477
|
: chunkTree(content, defaultChunkPolicy);
|
|
2482
|
-
|
|
2478
|
+
builds.set([undefined, firstId], chunk);
|
|
2483
2479
|
|
|
2484
2480
|
return {
|
|
2485
2481
|
type: "global",
|
|
@@ -2506,8 +2502,8 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
|
|
|
2506
2502
|
const modularChange = buildModularChangesetFromField(
|
|
2507
2503
|
field,
|
|
2508
2504
|
{ fieldKind, change },
|
|
2509
|
-
|
|
2510
|
-
|
|
2505
|
+
newTupleBTree(),
|
|
2506
|
+
newTupleBTree(),
|
|
2511
2507
|
newCrossFieldKeyTable(),
|
|
2512
2508
|
this.idAllocator,
|
|
2513
2509
|
crossFieldKeys,
|
|
@@ -2541,8 +2537,8 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
|
|
|
2541
2537
|
fieldKind: change.fieldKind,
|
|
2542
2538
|
change: change.change,
|
|
2543
2539
|
},
|
|
2544
|
-
|
|
2545
|
-
|
|
2540
|
+
newTupleBTree(),
|
|
2541
|
+
newTupleBTree(),
|
|
2546
2542
|
newCrossFieldKeyTable(),
|
|
2547
2543
|
this.idAllocator,
|
|
2548
2544
|
getChangeHandler(this.fieldKinds, change.fieldKind).getCrossFieldKeys(
|
|
@@ -2574,8 +2570,8 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
|
|
|
2574
2570
|
buildModularChangesetFromNode(
|
|
2575
2571
|
path,
|
|
2576
2572
|
nodeChange,
|
|
2577
|
-
|
|
2578
|
-
|
|
2573
|
+
newTupleBTree(),
|
|
2574
|
+
newTupleBTree(),
|
|
2579
2575
|
newCrossFieldKeyTable(),
|
|
2580
2576
|
this.idAllocator,
|
|
2581
2577
|
),
|
|
@@ -2586,8 +2582,8 @@ export class ModularEditBuilder extends EditBuilder<ModularChangeset> {
|
|
|
2586
2582
|
function buildModularChangesetFromField(
|
|
2587
2583
|
path: FieldUpPath,
|
|
2588
2584
|
fieldChange: FieldChange,
|
|
2589
|
-
nodeChanges:
|
|
2590
|
-
nodeToParent:
|
|
2585
|
+
nodeChanges: ChangeAtomIdBTree<NodeChangeset>,
|
|
2586
|
+
nodeToParent: ChangeAtomIdBTree<FieldId>,
|
|
2591
2587
|
crossFieldKeys: CrossFieldKeyTable,
|
|
2592
2588
|
idAllocator: IdAllocator = idAllocatorFromMaxId(),
|
|
2593
2589
|
localCrossFieldKeys: CrossFieldKeyRange[] = [],
|
|
@@ -2648,8 +2644,8 @@ function buildModularChangesetFromField(
|
|
|
2648
2644
|
function buildModularChangesetFromNode(
|
|
2649
2645
|
path: UpPath,
|
|
2650
2646
|
nodeChange: NodeChangeset,
|
|
2651
|
-
nodeChanges:
|
|
2652
|
-
nodeToParent:
|
|
2647
|
+
nodeChanges: ChangeAtomIdBTree<NodeChangeset>,
|
|
2648
|
+
nodeToParent: ChangeAtomIdBTree<FieldId>,
|
|
2653
2649
|
crossFieldKeys: CrossFieldKeyTable,
|
|
2654
2650
|
idAllocator: IdAllocator,
|
|
2655
2651
|
nodeId: NodeId = { localId: brand(idAllocator.allocate()) },
|
|
@@ -2678,7 +2674,6 @@ function buildModularChangesetFromNode(
|
|
|
2678
2674
|
}
|
|
2679
2675
|
|
|
2680
2676
|
/**
|
|
2681
|
-
* @internal
|
|
2682
2677
|
*/
|
|
2683
2678
|
export interface FieldEditDescription {
|
|
2684
2679
|
type: "field";
|
|
@@ -2688,15 +2683,13 @@ export interface FieldEditDescription {
|
|
|
2688
2683
|
}
|
|
2689
2684
|
|
|
2690
2685
|
/**
|
|
2691
|
-
* @internal
|
|
2692
2686
|
*/
|
|
2693
2687
|
export interface GlobalEditDescription {
|
|
2694
2688
|
type: "global";
|
|
2695
|
-
builds?:
|
|
2689
|
+
builds?: ChangeAtomIdBTree<TreeChunk>;
|
|
2696
2690
|
}
|
|
2697
2691
|
|
|
2698
2692
|
/**
|
|
2699
|
-
* @internal
|
|
2700
2693
|
*/
|
|
2701
2694
|
export type EditDescription = FieldEditDescription | GlobalEditDescription;
|
|
2702
2695
|
|
|
@@ -2747,43 +2740,30 @@ function revisionInfoFromTaggedChange(
|
|
|
2747
2740
|
return revInfos;
|
|
2748
2741
|
}
|
|
2749
2742
|
|
|
2750
|
-
function
|
|
2751
|
-
|
|
2752
|
-
|
|
2753
|
-
|
|
2754
|
-
|
|
2743
|
+
function mergeBTrees<K extends readonly unknown[], V>(
|
|
2744
|
+
tree1: TupleBTree<K, V> | undefined,
|
|
2745
|
+
tree2: TupleBTree<K, V> | undefined,
|
|
2746
|
+
preferLeft = true,
|
|
2747
|
+
): TupleBTree<K, V> {
|
|
2748
|
+
if (tree1 === undefined) {
|
|
2749
|
+
return tree2 !== undefined ? brand(tree2.clone()) : newTupleBTree<K, V>();
|
|
2750
|
+
}
|
|
2755
2751
|
|
|
2756
|
-
|
|
2757
|
-
|
|
2758
|
-
|
|
2759
|
-
if (revInfos === undefined || revInfos.length !== 1) {
|
|
2760
|
-
return undefined;
|
|
2752
|
+
const result: TupleBTree<K, V> = brand(tree1.clone());
|
|
2753
|
+
if (tree2 === undefined) {
|
|
2754
|
+
return result;
|
|
2761
2755
|
}
|
|
2762
|
-
return revInfos[0].revision;
|
|
2763
|
-
}
|
|
2764
2756
|
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
result.set(k, v);
|
|
2769
|
-
});
|
|
2757
|
+
for (const [key, value] of tree2.entries()) {
|
|
2758
|
+
result.set(key, value, !preferLeft);
|
|
2759
|
+
}
|
|
2770
2760
|
|
|
2771
2761
|
return result;
|
|
2772
2762
|
}
|
|
2773
2763
|
|
|
2774
|
-
function mergeNestedMaps<K1, K2, V>(
|
|
2775
|
-
map1: NestedMap<K1, K2, V>,
|
|
2776
|
-
map2: NestedMap<K1, K2, V>,
|
|
2777
|
-
): NestedMap<K1, K2, V> {
|
|
2778
|
-
const merged: NestedMap<K1, K2, V> = new Map();
|
|
2779
|
-
populateNestedMap(map1, merged, true);
|
|
2780
|
-
populateNestedMap(map2, merged, true);
|
|
2781
|
-
return merged;
|
|
2782
|
-
}
|
|
2783
|
-
|
|
2784
2764
|
function fieldChangeFromId(
|
|
2785
2765
|
fields: FieldChangeMap,
|
|
2786
|
-
nodes:
|
|
2766
|
+
nodes: ChangeAtomIdBTree<NodeChangeset>,
|
|
2787
2767
|
id: FieldId,
|
|
2788
2768
|
): FieldChange {
|
|
2789
2769
|
const fieldMap = fieldMapFromNodeId(fields, nodes, id.nodeId);
|
|
@@ -2792,7 +2772,7 @@ function fieldChangeFromId(
|
|
|
2792
2772
|
|
|
2793
2773
|
function fieldMapFromNodeId(
|
|
2794
2774
|
rootFieldMap: FieldChangeMap,
|
|
2795
|
-
nodes:
|
|
2775
|
+
nodes: ChangeAtomIdBTree<NodeChangeset>,
|
|
2796
2776
|
nodeId: NodeId | undefined,
|
|
2797
2777
|
): FieldChangeMap {
|
|
2798
2778
|
if (nodeId === undefined) {
|
|
@@ -2816,7 +2796,7 @@ function rebasedNodeIdFromBaseNodeId(table: RebaseTable, baseId: NodeId): NodeId
|
|
|
2816
2796
|
return getFromChangeAtomIdMap(table.baseToRebasedNodeId, baseId) ?? baseId;
|
|
2817
2797
|
}
|
|
2818
2798
|
|
|
2819
|
-
function nodeChangeFromId(nodes:
|
|
2799
|
+
function nodeChangeFromId(nodes: ChangeAtomIdBTree<NodeChangeset>, id: NodeId): NodeChangeset {
|
|
2820
2800
|
const node = getFromChangeAtomIdMap(nodes, id);
|
|
2821
2801
|
assert(node !== undefined, 0x9ca /* Unknown node ID */);
|
|
2822
2802
|
return node;
|
|
@@ -2953,7 +2933,7 @@ function setInCrossFieldKeyTable(
|
|
|
2953
2933
|
table.set([target, revision, id, count], value);
|
|
2954
2934
|
}
|
|
2955
2935
|
|
|
2956
|
-
function normalizeFieldId(fieldId: FieldId, nodeAliases:
|
|
2936
|
+
function normalizeFieldId(fieldId: FieldId, nodeAliases: ChangeAtomIdBTree<NodeId>): FieldId {
|
|
2957
2937
|
return fieldId.nodeId !== undefined
|
|
2958
2938
|
? { ...fieldId, nodeId: normalizeNodeId(fieldId.nodeId, nodeAliases) }
|
|
2959
2939
|
: fieldId;
|
|
@@ -2962,7 +2942,7 @@ function normalizeFieldId(fieldId: FieldId, nodeAliases: ChangeAtomIdMap<NodeId>
|
|
|
2962
2942
|
/**
|
|
2963
2943
|
* @returns The canonical form of nodeId, according to nodeAliases
|
|
2964
2944
|
*/
|
|
2965
|
-
function normalizeNodeId(nodeId: NodeId, nodeAliases:
|
|
2945
|
+
function normalizeNodeId(nodeId: NodeId, nodeAliases: ChangeAtomIdBTree<NodeId>): NodeId {
|
|
2966
2946
|
let currentId = nodeId;
|
|
2967
2947
|
|
|
2968
2948
|
// eslint-disable-next-line no-constant-condition
|
|
@@ -2981,11 +2961,13 @@ function hasConflicts(change: ModularChangeset): boolean {
|
|
|
2981
2961
|
}
|
|
2982
2962
|
|
|
2983
2963
|
export function newCrossFieldKeyTable(): CrossFieldKeyTable {
|
|
2984
|
-
return
|
|
2964
|
+
return newTupleBTree();
|
|
2985
2965
|
}
|
|
2986
2966
|
|
|
2987
|
-
function
|
|
2988
|
-
|
|
2967
|
+
export function newTupleBTree<K extends readonly unknown[], V>(
|
|
2968
|
+
entries?: [K, V][],
|
|
2969
|
+
): TupleBTree<K, V> {
|
|
2970
|
+
return brand(new BTree<K, V>(entries, compareTuples));
|
|
2989
2971
|
}
|
|
2990
2972
|
|
|
2991
2973
|
// This assumes that the arrays are the same length.
|
|
@@ -2995,7 +2977,14 @@ function compareTuples(arrayA: readonly unknown[], arrayB: readonly unknown[]):
|
|
|
2995
2977
|
const a = arrayA[i] as any;
|
|
2996
2978
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2997
2979
|
const b = arrayB[i] as any;
|
|
2998
|
-
|
|
2980
|
+
|
|
2981
|
+
// Less-than and greater-than always return false if either value is undefined,
|
|
2982
|
+
// so we handle undefined separately, treating it as less than all other values.
|
|
2983
|
+
if (a === undefined && b !== undefined) {
|
|
2984
|
+
return -1;
|
|
2985
|
+
} else if (b === undefined && a !== undefined) {
|
|
2986
|
+
return 1;
|
|
2987
|
+
} else if (a < b) {
|
|
2999
2988
|
return -1;
|
|
3000
2989
|
} else if (a > b) {
|
|
3001
2990
|
return 1;
|
|
@@ -3007,14 +2996,19 @@ function compareTuples(arrayA: readonly unknown[], arrayB: readonly unknown[]):
|
|
|
3007
2996
|
|
|
3008
2997
|
interface ModularChangesetContent {
|
|
3009
2998
|
fieldChanges: FieldChangeMap;
|
|
3010
|
-
nodeChanges:
|
|
3011
|
-
nodeToParent:
|
|
3012
|
-
nodeAliases:
|
|
2999
|
+
nodeChanges: ChangeAtomIdBTree<NodeChangeset>;
|
|
3000
|
+
nodeToParent: ChangeAtomIdBTree<FieldId>;
|
|
3001
|
+
nodeAliases: ChangeAtomIdBTree<NodeId>;
|
|
3013
3002
|
crossFieldKeys: CrossFieldKeyTable;
|
|
3014
3003
|
}
|
|
3015
3004
|
|
|
3016
|
-
function
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3005
|
+
function getFromChangeAtomIdMap<T>(
|
|
3006
|
+
map: ChangeAtomIdBTree<T>,
|
|
3007
|
+
id: ChangeAtomId,
|
|
3008
|
+
): T | undefined {
|
|
3009
|
+
return map.get([id.revision, id.localId]);
|
|
3010
|
+
}
|
|
3011
|
+
|
|
3012
|
+
function setInChangeAtomIdMap<T>(map: ChangeAtomIdBTree<T>, id: ChangeAtomId, value: T): void {
|
|
3013
|
+
map.set([id.revision, id.localId], value);
|
|
3020
3014
|
}
|