mobx-keystone 0.67.4 → 0.68.1-alpha
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/CHANGELOG.md +8 -0
- package/dist/_virtual/_tslib.mjs +12 -0
- package/dist/mobx-keystone.umd.js +5339 -5261
- package/dist/model/utils.d.ts +1 -1
- package/dist/node_modules/fast-deep-equal/es6/index.mjs +68 -0
- package/dist/node_modules/nanoid/non-secure/index.mjs +11 -0
- package/dist/snapshot/index.d.ts +0 -8
- package/dist/{dataModel/_BaseDataModel.d.ts → snapshot/registerDefaultReconcilers.d.ts} +0 -0
- package/dist/{model/_BaseModel.d.ts → snapshot/registerDefaultSnapshotters.d.ts} +0 -0
- package/dist/src/action/actionDecoratorUtils.mjs +25 -0
- package/dist/src/action/applyAction.mjs +54 -0
- package/dist/src/action/applyDelete.mjs +20 -0
- package/dist/src/action/applyMethodCall.mjs +19 -0
- package/dist/src/action/applySet.mjs +25 -0
- package/dist/src/action/builtInActions.mjs +15 -0
- package/dist/src/action/context.mjs +22 -0
- package/dist/src/action/hookActions.mjs +13 -0
- package/dist/src/action/isModelAction.mjs +6 -0
- package/dist/src/action/middleware.mjs +84 -0
- package/dist/src/action/modelAction.mjs +34 -0
- package/dist/src/action/modelFlow.mjs +251 -0
- package/dist/src/action/pendingActions.mjs +30 -0
- package/dist/src/action/protection.mjs +19 -0
- package/dist/src/action/runUnprotected.mjs +24 -0
- package/dist/src/action/wrapInAction.mjs +90 -0
- package/dist/src/actionMiddlewares/actionSerialization/actionSerialization.mjs +131 -0
- package/dist/src/actionMiddlewares/actionSerialization/applySerializedAction.mjs +110 -0
- package/dist/src/actionMiddlewares/actionSerialization/arraySerializer.mjs +15 -0
- package/dist/src/actionMiddlewares/actionSerialization/core.mjs +3 -0
- package/dist/src/actionMiddlewares/actionSerialization/dateSerializer.mjs +15 -0
- package/dist/src/actionMiddlewares/actionSerialization/mapSerializer.mjs +32 -0
- package/dist/src/actionMiddlewares/actionSerialization/objectPathSerializer.mjs +33 -0
- package/dist/src/actionMiddlewares/actionSerialization/objectSnapshotSerializer.mjs +18 -0
- package/dist/src/actionMiddlewares/actionSerialization/plainObjectSerializer.mjs +27 -0
- package/dist/src/actionMiddlewares/actionSerialization/primitiveSerializer.mjs +39 -0
- package/dist/src/actionMiddlewares/actionSerialization/setSerializer.mjs +29 -0
- package/dist/src/actionMiddlewares/actionTrackingMiddleware.mjs +239 -0
- package/dist/src/actionMiddlewares/onActionMiddleware.mjs +44 -0
- package/dist/src/actionMiddlewares/readonlyMiddleware.mjs +49 -0
- package/dist/src/actionMiddlewares/transactionMiddleware.mjs +69 -0
- package/dist/src/actionMiddlewares/undoMiddleware.mjs +472 -0
- package/dist/src/actionMiddlewares/utils.mjs +25 -0
- package/dist/src/computedTree/computedTree.mjs +63 -0
- package/dist/src/context/context.mjs +141 -0
- package/dist/src/dataModel/BaseDataModel.mjs +108 -0
- package/dist/src/dataModel/DataModel.mjs +32 -0
- package/dist/src/dataModel/actions.mjs +12 -0
- package/dist/src/dataModel/getDataModelMetadata.mjs +14 -0
- package/dist/src/dataModel/newDataModel.mjs +31 -0
- package/dist/src/dataModel/utils.mjs +29 -0
- package/dist/src/frozen/Frozen.mjs +68 -0
- package/dist/src/globalConfig/globalConfig.mjs +57 -0
- package/dist/src/index.mjs +97 -0
- package/dist/src/model/BaseModel.mjs +118 -0
- package/dist/src/model/Model.mjs +36 -0
- package/dist/src/model/getModelMetadata.mjs +19 -0
- package/dist/src/model/metadata.mjs +7 -0
- package/dist/src/model/newModel.mjs +95 -0
- package/dist/src/model/utils.mjs +33 -0
- package/dist/src/modelShared/BaseModelShared.mjs +9 -0
- package/dist/src/modelShared/Model.mjs +249 -0
- package/dist/src/modelShared/checkModelDecoratorArgs.mjs +21 -0
- package/dist/src/modelShared/modelClassInitializer.mjs +14 -0
- package/dist/src/modelShared/modelDecorator.mjs +117 -0
- package/dist/src/modelShared/modelInfo.mjs +7 -0
- package/dist/src/modelShared/modelPropsInfo.mjs +9 -0
- package/dist/src/modelShared/modelSymbols.mjs +5 -0
- package/dist/src/modelShared/newModel.mjs +13 -0
- package/dist/src/modelShared/prop.mjs +138 -0
- package/dist/src/modelShared/utils.mjs +10 -0
- package/dist/src/parent/core.mjs +34 -0
- package/dist/src/parent/coreObjectChildren.mjs +98 -0
- package/dist/src/parent/detach.mjs +32 -0
- package/dist/src/parent/findChildren.mjs +16 -0
- package/dist/src/parent/findParent.mjs +30 -0
- package/dist/src/parent/getChildrenObjects.mjs +12 -0
- package/dist/src/parent/onChildAttachedTo.mjs +101 -0
- package/dist/src/parent/path.mjs +149 -0
- package/dist/src/parent/path2.mjs +12 -0
- package/dist/src/parent/setParent.mjs +83 -0
- package/dist/src/parent/walkTree.mjs +104 -0
- package/dist/src/patch/applyPatches.mjs +118 -0
- package/dist/src/patch/emitPatch.mjs +100 -0
- package/dist/src/patch/jsonPatch.mjs +60 -0
- package/dist/src/patch/patchRecorder.mjs +75 -0
- package/dist/src/redux/connectReduxDevTools.mjs +153 -0
- package/dist/src/redux/redux.mjs +60 -0
- package/dist/src/ref/Ref.mjs +38 -0
- package/dist/src/ref/core.mjs +179 -0
- package/dist/src/ref/customRef.mjs +9 -0
- package/dist/src/ref/rootRef.mjs +34 -0
- package/dist/src/rootStore/attachDetach.mjs +53 -0
- package/dist/src/rootStore/rootStore.mjs +50 -0
- package/dist/src/snapshot/SnapshotterAndReconcilerPriority.mjs +9 -0
- package/dist/src/snapshot/applySnapshot.mjs +92 -0
- package/dist/src/snapshot/clone.mjs +29 -0
- package/dist/src/snapshot/fromArraySnapshot.mjs +23 -0
- package/dist/src/snapshot/fromFrozenSnapshot.mjs +13 -0
- package/dist/src/snapshot/fromModelSnapshot.mjs +38 -0
- package/dist/src/snapshot/fromPlainObjectSnapshot.mjs +26 -0
- package/dist/src/snapshot/fromSnapshot.mjs +91 -0
- package/dist/src/snapshot/getSnapshot.mjs +27 -0
- package/dist/src/snapshot/internal.mjs +97 -0
- package/dist/src/snapshot/onSnapshot.mjs +16 -0
- package/dist/src/snapshot/reconcileArraySnapshot.mjs +40 -0
- package/dist/src/snapshot/reconcileFrozenSnapshot.mjs +19 -0
- package/dist/src/snapshot/reconcileModelSnapshot.mjs +77 -0
- package/dist/src/snapshot/reconcilePlainObjectSnapshot.mjs +47 -0
- package/dist/src/snapshot/reconcileSnapshot.mjs +49 -0
- package/dist/src/snapshot/registerDefaultReconcilers.mjs +17 -0
- package/dist/src/snapshot/registerDefaultSnapshotters.mjs +17 -0
- package/dist/src/standardActions/actions.mjs +35 -0
- package/dist/src/standardActions/arrayActions.mjs +66 -0
- package/dist/src/standardActions/objectActions.mjs +36 -0
- package/dist/src/standardActions/standaloneActions.mjs +9 -0
- package/dist/src/transforms/ImmutableDate.mjs +51 -0
- package/dist/src/transforms/asMap.mjs +29 -0
- package/dist/src/transforms/asSet.mjs +12 -0
- package/dist/src/transforms/bigint.mjs +14 -0
- package/dist/src/transforms/date.mjs +27 -0
- package/dist/src/treeUtils/deepEquals.mjs +40 -0
- package/dist/src/treeUtils/draft.mjs +116 -0
- package/dist/src/treeUtils/sandbox.mjs +158 -0
- package/dist/src/tweaker/TweakerPriority.mjs +9 -0
- package/dist/src/tweaker/core.mjs +38 -0
- package/dist/src/tweaker/registerDefaultTweakers.mjs +17 -0
- package/dist/src/tweaker/tweak.mjs +109 -0
- package/dist/src/tweaker/tweakArray.mjs +272 -0
- package/dist/src/tweaker/tweakFrozen.mjs +28 -0
- package/dist/src/tweaker/tweakModel.mjs +26 -0
- package/dist/src/tweaker/tweakPlainObject.mjs +205 -0
- package/dist/src/tweaker/typeChecking.mjs +46 -0
- package/dist/src/tweaker/withoutTypeChecking.mjs +15 -0
- package/dist/src/types/TypeCheckError.mjs +31 -0
- package/dist/src/types/TypeChecker.mjs +165 -0
- package/dist/src/types/arrayBased/array.mjs +68 -0
- package/dist/src/types/arrayBased/tuple.mjs +71 -0
- package/dist/src/types/getTypeInfo.mjs +12 -0
- package/dist/src/types/objectBased/arraySet.mjs +83 -0
- package/dist/src/types/objectBased/dataModelData.mjs +95 -0
- package/dist/src/types/objectBased/model.mjs +133 -0
- package/dist/src/types/objectBased/object.mjs +119 -0
- package/dist/src/types/objectBased/objectMap.mjs +90 -0
- package/dist/src/types/objectBased/record.mjs +80 -0
- package/dist/src/types/objectBased/ref.mjs +62 -0
- package/dist/src/types/primitiveBased/enum.mjs +20 -0
- package/dist/src/types/primitiveBased/primitives.mjs +59 -0
- package/dist/src/types/primitiveBased/refinedPrimitives.mjs +6 -0
- package/dist/src/types/registerDefaultStandardTypeResolvers.mjs +13 -0
- package/dist/src/types/resolveTypeChecker.mjs +52 -0
- package/dist/src/types/tProp.mjs +53 -0
- package/dist/src/types/typeCheck.mjs +11 -0
- package/dist/src/types/types.mjs +69 -0
- package/dist/src/types/utility/maybe.mjs +10 -0
- package/dist/src/types/utility/or.mjs +99 -0
- package/dist/src/types/utility/refinement.mjs +52 -0
- package/dist/src/types/utility/unchecked.mjs +10 -0
- package/dist/src/utils/ModelPool.mjs +50 -0
- package/dist/src/utils/chainFns.mjs +15 -0
- package/dist/src/utils/index.mjs +228 -0
- package/dist/src/utils/mapUtils.mjs +10 -0
- package/dist/src/utils/tag.mjs +16 -0
- package/dist/src/wrappers/ArraySet.mjs +85 -0
- package/dist/src/wrappers/ObjectMap.mjs +96 -0
- package/dist/src/wrappers/asMap.mjs +181 -0
- package/dist/src/wrappers/asSet.mjs +97 -0
- package/dist/tweaker/index.d.ts +0 -4
- package/dist/tweaker/registerDefaultTweakers.d.ts +1 -0
- package/dist/types/registerDefaultStandardTypeResolvers.d.ts +1 -0
- package/package.json +12 -14
- package/src/actionMiddlewares/actionSerialization/actionSerialization.ts +24 -9
- package/src/dataModel/BaseDataModel.ts +0 -3
- package/src/dataModel/utils.ts +4 -4
- package/src/dist/action/actionDecoratorUtils.d.ts +5 -0
- package/src/dist/action/applyAction.d.ts +36 -0
- package/src/dist/action/applyDelete.d.ts +7 -0
- package/src/dist/action/applyMethodCall.d.ts +9 -0
- package/src/dist/action/applySet.d.ts +8 -0
- package/src/dist/action/builtInActions.d.ts +39 -0
- package/src/dist/action/context.d.ts +85 -0
- package/src/dist/action/hookActions.d.ts +32 -0
- package/src/dist/action/index.d.ts +12 -0
- package/src/dist/action/isModelAction.d.ts +7 -0
- package/src/dist/action/middleware.d.ts +34 -0
- package/src/dist/action/modelAction.d.ts +9 -0
- package/src/dist/action/modelFlow.d.ts +34 -0
- package/src/dist/action/pendingActions.d.ts +1 -0
- package/src/dist/action/protection.d.ts +1 -0
- package/src/dist/action/runUnprotected.d.ts +19 -0
- package/src/dist/action/wrapInAction.d.ts +1 -0
- package/src/dist/actionMiddlewares/actionSerialization/actionSerialization.d.ts +84 -0
- package/src/dist/actionMiddlewares/actionSerialization/applySerializedAction.d.ts +45 -0
- package/src/dist/actionMiddlewares/actionSerialization/arraySerializer.d.ts +3 -0
- package/src/dist/actionMiddlewares/actionSerialization/core.d.ts +28 -0
- package/src/dist/actionMiddlewares/actionSerialization/dateSerializer.d.ts +2 -0
- package/src/dist/actionMiddlewares/actionSerialization/index.d.ts +3 -0
- package/src/dist/actionMiddlewares/actionSerialization/mapSerializer.d.ts +6 -0
- package/src/dist/actionMiddlewares/actionSerialization/objectPathSerializer.d.ts +8 -0
- package/src/dist/actionMiddlewares/actionSerialization/objectSnapshotSerializer.d.ts +2 -0
- package/src/dist/actionMiddlewares/actionSerialization/plainObjectSerializer.d.ts +2 -0
- package/src/dist/actionMiddlewares/actionSerialization/primitiveSerializer.d.ts +2 -0
- package/src/dist/actionMiddlewares/actionSerialization/setSerializer.d.ts +3 -0
- package/src/dist/actionMiddlewares/actionTrackingMiddleware.d.ts +122 -0
- package/src/dist/actionMiddlewares/index.d.ts +6 -0
- package/src/dist/actionMiddlewares/onActionMiddleware.d.ts +26 -0
- package/src/dist/actionMiddlewares/readonlyMiddleware.d.ts +35 -0
- package/src/dist/actionMiddlewares/transactionMiddleware.d.ts +21 -0
- package/src/dist/actionMiddlewares/undoMiddleware.d.ts +283 -0
- package/src/dist/actionMiddlewares/utils.d.ts +1 -0
- package/src/dist/computedTree/computedTree.d.ts +16 -0
- package/src/dist/computedTree/index.d.ts +1 -0
- package/src/dist/context/context.d.ts +84 -0
- package/src/dist/context/index.d.ts +1 -0
- package/src/dist/dataModel/BaseDataModel.d.ts +52 -0
- package/src/dist/dataModel/DataModel.d.ts +47 -0
- package/src/dist/dataModel/DataModelConstructorOptions.d.ts +1 -0
- package/src/dist/dataModel/actions.d.ts +1 -0
- package/src/dist/dataModel/getDataModelMetadata.d.ts +19 -0
- package/src/dist/dataModel/index.d.ts +4 -0
- package/src/dist/dataModel/newDataModel.d.ts +1 -0
- package/src/dist/dataModel/utils.d.ts +8 -0
- package/src/dist/frozen/Frozen.d.ts +50 -0
- package/src/dist/frozen/index.d.ts +1 -0
- package/src/dist/globalConfig/globalConfig.d.ts +51 -0
- package/src/dist/globalConfig/index.d.ts +1 -0
- package/src/dist/index.d.ts +23 -0
- package/src/dist/mobx-keystone.umd.js +8201 -0
- package/src/dist/model/BaseModel.d.ts +125 -0
- package/src/dist/model/Model.d.ts +94 -0
- package/src/dist/model/ModelConstructorOptions.d.ts +1 -0
- package/src/dist/model/getModelMetadata.d.ts +27 -0
- package/src/dist/model/index.d.ts +5 -0
- package/src/dist/model/metadata.d.ts +8 -0
- package/src/dist/model/newModel.d.ts +1 -0
- package/src/dist/model/utils.d.ts +8 -0
- package/src/dist/modelShared/BaseModelShared.d.ts +76 -0
- package/src/dist/modelShared/Model.d.ts +15 -0
- package/src/dist/modelShared/checkModelDecoratorArgs.d.ts +1 -0
- package/src/dist/modelShared/index.d.ts +3 -0
- package/src/dist/modelShared/modelClassInitializer.d.ts +1 -0
- package/src/dist/modelShared/modelDecorator.d.ts +24 -0
- package/src/dist/modelShared/modelInfo.d.ts +1 -0
- package/src/dist/modelShared/modelPropsInfo.d.ts +1 -0
- package/src/dist/modelShared/modelSymbols.d.ts +3 -0
- package/src/dist/modelShared/newModel.d.ts +4 -0
- package/src/dist/modelShared/prop.d.ts +179 -0
- package/src/dist/modelShared/utils.d.ts +1 -0
- package/src/dist/parent/core.d.ts +1 -0
- package/src/dist/parent/coreObjectChildren.d.ts +1 -0
- package/src/dist/parent/detach.d.ts +9 -0
- package/src/dist/parent/findChildren.d.ts +13 -0
- package/src/dist/parent/findParent.d.ts +41 -0
- package/src/dist/parent/getChildrenObjects.d.ts +11 -0
- package/src/dist/parent/index.d.ts +9 -0
- package/src/dist/parent/onChildAttachedTo.d.ts +22 -0
- package/src/dist/parent/path.d.ts +107 -0
- package/src/dist/parent/path2.d.ts +16 -0
- package/src/dist/parent/pathTypes.d.ts +12 -0
- package/src/dist/parent/setParent.d.ts +1 -0
- package/src/dist/parent/walkTree.d.ts +25 -0
- package/src/dist/patch/Patch.d.ts +16 -0
- package/src/dist/patch/applyPatches.d.ts +9 -0
- package/src/dist/patch/emitPatch.d.ts +29 -0
- package/src/dist/patch/index.d.ts +5 -0
- package/src/dist/patch/jsonPatch.d.ts +45 -0
- package/src/dist/patch/patchRecorder.d.ts +70 -0
- package/src/dist/redux/connectReduxDevTools.d.ts +12 -0
- package/src/dist/redux/index.d.ts +2 -0
- package/src/dist/redux/redux.d.ts +47 -0
- package/src/dist/ref/Ref.d.ts +53 -0
- package/src/dist/ref/core.d.ts +46 -0
- package/src/dist/ref/customRef.d.ts +38 -0
- package/src/dist/ref/index.d.ts +4 -0
- package/src/dist/ref/rootRef.d.ts +33 -0
- package/src/dist/rootStore/attachDetach.d.ts +1 -0
- package/src/dist/rootStore/index.d.ts +1 -0
- package/src/dist/rootStore/rootStore.d.ts +33 -0
- package/src/dist/snapshot/SnapshotOf.d.ts +47 -0
- package/src/dist/snapshot/SnapshotterAndReconcilerPriority.d.ts +1 -0
- package/src/dist/snapshot/applySnapshot.d.ts +17 -0
- package/src/dist/snapshot/clone.d.ts +18 -0
- package/src/dist/snapshot/fromArraySnapshot.d.ts +1 -0
- package/src/dist/snapshot/fromFrozenSnapshot.d.ts +1 -0
- package/src/dist/snapshot/fromModelSnapshot.d.ts +1 -0
- package/src/dist/snapshot/fromPlainObjectSnapshot.d.ts +1 -0
- package/src/dist/snapshot/fromSnapshot.d.ts +36 -0
- package/src/dist/snapshot/getSnapshot.d.ts +22 -0
- package/src/dist/snapshot/index.d.ts +6 -0
- package/src/dist/snapshot/internal.d.ts +1 -0
- package/src/dist/snapshot/onSnapshot.d.ts +18 -0
- package/src/dist/snapshot/reconcileArraySnapshot.d.ts +1 -0
- package/src/dist/snapshot/reconcileFrozenSnapshot.d.ts +1 -0
- package/src/dist/snapshot/reconcileModelSnapshot.d.ts +1 -0
- package/src/dist/snapshot/reconcilePlainObjectSnapshot.d.ts +1 -0
- package/src/dist/snapshot/reconcileSnapshot.d.ts +1 -0
- package/src/dist/snapshot/registerDefaultReconcilers.d.ts +1 -0
- package/src/dist/snapshot/registerDefaultSnapshotters.d.ts +1 -0
- package/src/dist/standardActions/actions.d.ts +1 -0
- package/src/dist/standardActions/arrayActions.d.ts +18 -0
- package/src/dist/standardActions/index.d.ts +3 -0
- package/src/dist/standardActions/objectActions.d.ts +7 -0
- package/src/dist/standardActions/standaloneActions.d.ts +16 -0
- package/src/dist/transforms/ImmutableDate.d.ts +1 -0
- package/src/dist/transforms/asMap.d.ts +3 -0
- package/src/dist/transforms/asSet.d.ts +2 -0
- package/src/dist/transforms/bigint.d.ts +2 -0
- package/src/dist/transforms/date.d.ts +3 -0
- package/src/dist/transforms/index.d.ts +4 -0
- package/src/dist/treeUtils/deepEquals.d.ts +20 -0
- package/src/dist/treeUtils/draft.d.ts +70 -0
- package/src/dist/treeUtils/index.d.ts +3 -0
- package/src/dist/treeUtils/sandbox.d.ts +85 -0
- package/src/dist/tweaker/TweakerPriority.d.ts +1 -0
- package/src/dist/tweaker/core.d.ts +14 -0
- package/src/dist/tweaker/index.d.ts +2 -0
- package/src/dist/tweaker/registerDefaultTweakers.d.ts +1 -0
- package/src/dist/tweaker/tweak.d.ts +22 -0
- package/src/dist/tweaker/tweakArray.d.ts +1 -0
- package/src/dist/tweaker/tweakFrozen.d.ts +1 -0
- package/src/dist/tweaker/tweakModel.d.ts +1 -0
- package/src/dist/tweaker/tweakPlainObject.d.ts +1 -0
- package/src/dist/tweaker/typeChecking.d.ts +1 -0
- package/src/dist/tweaker/withoutTypeChecking.d.ts +2 -0
- package/src/dist/types/TypeCheckError.d.ts +22 -0
- package/src/dist/types/TypeChecker.d.ts +8 -0
- package/src/dist/types/arrayBased/array.d.ts +23 -0
- package/src/dist/types/arrayBased/tuple.d.ts +24 -0
- package/src/dist/types/getTypeInfo.d.ts +9 -0
- package/src/dist/types/index.d.ts +5 -0
- package/src/dist/types/objectBased/arraySet.d.ts +24 -0
- package/src/dist/types/objectBased/dataModelData.d.ts +44 -0
- package/src/dist/types/objectBased/model.d.ts +43 -0
- package/src/dist/types/objectBased/object.d.ts +63 -0
- package/src/dist/types/objectBased/objectMap.d.ts +24 -0
- package/src/dist/types/objectBased/record.d.ts +24 -0
- package/src/dist/types/objectBased/ref.d.ts +21 -0
- package/src/dist/types/primitiveBased/enum.d.ts +34 -0
- package/src/dist/types/primitiveBased/primitives.d.ts +81 -0
- package/src/dist/types/primitiveBased/refinedPrimitives.d.ts +18 -0
- package/src/dist/types/registerDefaultStandardTypeResolvers.d.ts +1 -0
- package/src/dist/types/resolveTypeChecker.d.ts +1 -0
- package/src/dist/types/schemas.d.ts +53 -0
- package/src/dist/types/tProp.d.ts +92 -0
- package/src/dist/types/typeCheck.d.ts +11 -0
- package/src/dist/types/types.d.ts +51 -0
- package/src/dist/types/utility/maybe.d.ts +29 -0
- package/src/dist/types/utility/or.d.ts +35 -0
- package/src/dist/types/utility/refinement.d.ts +45 -0
- package/src/dist/types/utility/unchecked.d.ts +22 -0
- package/src/dist/utils/ModelPool.d.ts +7 -0
- package/src/dist/utils/chainFns.d.ts +1 -0
- package/src/dist/utils/index.d.ts +6 -0
- package/src/dist/utils/mapUtils.d.ts +2 -0
- package/src/dist/utils/tag.d.ts +13 -0
- package/src/dist/utils/types.d.ts +39 -0
- package/src/dist/wrappers/ArraySet.d.ts +29 -0
- package/src/dist/wrappers/ObjectMap.d.ts +32 -0
- package/src/dist/wrappers/asMap.d.ts +29 -0
- package/src/dist/wrappers/asSet.d.ts +15 -0
- package/src/dist/wrappers/index.d.ts +4 -0
- package/src/model/BaseModel.ts +0 -3
- package/src/model/utils.ts +4 -5
- package/src/modelShared/checkModelDecoratorArgs.ts +6 -6
- package/src/parent/setParent.ts +2 -2
- package/src/rootStore/attachDetach.ts +2 -3
- package/src/snapshot/fromArraySnapshot.ts +11 -6
- package/src/snapshot/fromFrozenSnapshot.ts +11 -6
- package/src/snapshot/fromModelSnapshot.ts +11 -6
- package/src/snapshot/fromPlainObjectSnapshot.ts +11 -6
- package/src/snapshot/fromSnapshot.ts +3 -0
- package/src/snapshot/index.ts +0 -10
- package/src/snapshot/reconcileArraySnapshot.ts +11 -6
- package/src/snapshot/reconcileFrozenSnapshot.ts +11 -6
- package/src/snapshot/reconcileModelSnapshot.ts +11 -6
- package/src/snapshot/reconcilePlainObjectSnapshot.ts +11 -6
- package/src/snapshot/reconcileSnapshot.ts +3 -0
- package/src/snapshot/registerDefaultReconcilers.ts +21 -0
- package/src/snapshot/registerDefaultSnapshotters.ts +21 -0
- package/src/tweaker/index.ts +0 -6
- package/src/tweaker/registerDefaultTweakers.ts +21 -0
- package/src/tweaker/tweak.ts +3 -0
- package/src/tweaker/tweakArray.ts +406 -401
- package/src/tweaker/tweakFrozen.ts +11 -6
- package/src/tweaker/tweakModel.ts +11 -6
- package/src/tweaker/tweakPlainObject.ts +288 -283
- package/src/types/objectBased/model.ts +6 -1
- package/src/types/objectBased/ref.ts +1 -1
- package/src/types/primitiveBased/primitives.ts +177 -166
- package/src/types/registerDefaultStandardTypeResolvers.ts +17 -0
- package/src/types/resolveTypeChecker.ts +7 -1
- package/dist/mobx-keystone.es.js +0 -7856
- package/dist/mobx-keystone.es.mjs +0 -7856
- package/src/dataModel/_BaseDataModel.ts +0 -15
- package/src/model/_BaseModel.ts +0 -15
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { __decorate } from "../../_virtual/_tslib.mjs";
|
|
2
|
+
import { remove, get, has, set, keys, values, entries } from "mobx";
|
|
3
|
+
import { modelAction } from "../action/modelAction.mjs";
|
|
4
|
+
import { modelIdKey } from "../model/metadata.mjs";
|
|
5
|
+
import { Model } from "../model/Model.mjs";
|
|
6
|
+
import { model } from "../modelShared/modelDecorator.mjs";
|
|
7
|
+
import { idProp } from "../modelShared/prop.mjs";
|
|
8
|
+
import { typesRecord } from "../types/objectBased/record.mjs";
|
|
9
|
+
import { tProp } from "../types/tProp.mjs";
|
|
10
|
+
import { typesUnchecked } from "../types/utility/unchecked.mjs";
|
|
11
|
+
import { namespace } from "../utils/index.mjs";
|
|
12
|
+
let ObjectMap = class ObjectMap2 extends Model({
|
|
13
|
+
[modelIdKey]: idProp,
|
|
14
|
+
items: tProp(typesRecord(typesUnchecked()), () => ({}))
|
|
15
|
+
}) {
|
|
16
|
+
clear() {
|
|
17
|
+
const items = this.items;
|
|
18
|
+
const keys2 = Object.keys(items);
|
|
19
|
+
const len = keys2.length;
|
|
20
|
+
for (let i = 0; i < len; i++) {
|
|
21
|
+
const k = keys2[i];
|
|
22
|
+
remove(items, k);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
delete(key) {
|
|
26
|
+
const hasKey = this.has(key);
|
|
27
|
+
if (hasKey) {
|
|
28
|
+
remove(this.items, key);
|
|
29
|
+
return true;
|
|
30
|
+
} else {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
forEach(callbackfn, thisArg) {
|
|
35
|
+
const items = this.items;
|
|
36
|
+
const keys2 = Object.keys(items);
|
|
37
|
+
const len = keys2.length;
|
|
38
|
+
for (let i = 0; i < len; i++) {
|
|
39
|
+
const k = keys2[i];
|
|
40
|
+
callbackfn.call(thisArg, items[k], k, this);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
get(key) {
|
|
44
|
+
return get(this.items, key);
|
|
45
|
+
}
|
|
46
|
+
has(key) {
|
|
47
|
+
return has(this.items, key);
|
|
48
|
+
}
|
|
49
|
+
set(key, value) {
|
|
50
|
+
set(this.items, key, value);
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
get size() {
|
|
54
|
+
return keys(this.items).length;
|
|
55
|
+
}
|
|
56
|
+
keys() {
|
|
57
|
+
return keys(this.items)[Symbol.iterator]();
|
|
58
|
+
}
|
|
59
|
+
values() {
|
|
60
|
+
return values(this.items)[Symbol.iterator]();
|
|
61
|
+
}
|
|
62
|
+
entries() {
|
|
63
|
+
return entries(this.items)[Symbol.iterator]();
|
|
64
|
+
}
|
|
65
|
+
[Symbol.iterator]() {
|
|
66
|
+
return this.entries();
|
|
67
|
+
}
|
|
68
|
+
get [Symbol.toStringTag]() {
|
|
69
|
+
return "ObjectMap";
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
__decorate([
|
|
73
|
+
modelAction
|
|
74
|
+
], ObjectMap.prototype, "clear", null);
|
|
75
|
+
__decorate([
|
|
76
|
+
modelAction
|
|
77
|
+
], ObjectMap.prototype, "delete", null);
|
|
78
|
+
__decorate([
|
|
79
|
+
modelAction
|
|
80
|
+
], ObjectMap.prototype, "set", null);
|
|
81
|
+
ObjectMap = __decorate([
|
|
82
|
+
model(`${namespace}/ObjectMap`)
|
|
83
|
+
], ObjectMap);
|
|
84
|
+
function objectMap(entries2) {
|
|
85
|
+
const initialObj = {};
|
|
86
|
+
if (entries2) {
|
|
87
|
+
let len = entries2.length;
|
|
88
|
+
for (let i = 0; i < len; i++) {
|
|
89
|
+
const entry = entries2[i];
|
|
90
|
+
initialObj[entry[0]] = entry[1];
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return new ObjectMap({ items: initialObj });
|
|
94
|
+
}
|
|
95
|
+
export { ObjectMap, objectMap };
|
|
96
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2JqZWN0TWFwLm1qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3dyYXBwZXJzL09iamVjdE1hcC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbnRyaWVzLCBnZXQsIGhhcywga2V5cywgcmVtb3ZlLCBzZXQsIHZhbHVlcyB9IGZyb20gXCJtb2J4XCJcbmltcG9ydCB7IG1vZGVsQWN0aW9uIH0gZnJvbSBcIi4uL2FjdGlvbi9tb2RlbEFjdGlvblwiXG5pbXBvcnQgeyBtb2RlbElkS2V5IH0gZnJvbSBcIi4uL21vZGVsL21ldGFkYXRhXCJcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIi4uL21vZGVsL01vZGVsXCJcbmltcG9ydCB7IG1vZGVsIH0gZnJvbSBcIi4uL21vZGVsU2hhcmVkL21vZGVsRGVjb3JhdG9yXCJcbmltcG9ydCB7IGlkUHJvcCB9IGZyb20gXCIuLi9tb2RlbFNoYXJlZC9wcm9wXCJcbmltcG9ydCB7IHR5cGVzUmVjb3JkIH0gZnJvbSBcIi4uL3R5cGVzL29iamVjdEJhc2VkL3JlY29yZFwiXG5pbXBvcnQgeyB0UHJvcCB9IGZyb20gXCIuLi90eXBlcy90UHJvcFwiXG5pbXBvcnQgeyB0eXBlc1VuY2hlY2tlZCB9IGZyb20gXCIuLi90eXBlcy91dGlsaXR5L3VuY2hlY2tlZFwiXG5pbXBvcnQgeyBuYW1lc3BhY2UgfSBmcm9tIFwiLi4vdXRpbHNcIlxuXG4vKipcbiAqIEEgbWFwIHRoYXQgaXMgYmFja2VkIGJ5IGFuIG9iamVjdC1saWtlIG1hcC5cbiAqIFVzZSBgb2JqZWN0TWFwYCB0byBjcmVhdGUgaXQuXG4gKi9cbkBtb2RlbChgJHtuYW1lc3BhY2V9L09iamVjdE1hcGApXG5leHBvcnQgY2xhc3MgT2JqZWN0TWFwPFY+XG4gIGV4dGVuZHMgTW9kZWwoe1xuICAgIFttb2RlbElkS2V5XTogaWRQcm9wLFxuICAgIGl0ZW1zOiB0UHJvcCh0eXBlc1JlY29yZCh0eXBlc1VuY2hlY2tlZDxhbnk+KCkpLCAoKSA9PiAoe30pKSwgLy8gd2lsbCBiZSBwcm9wZXJseSBjaGVja2VkIGJ5IHR5cGVzLm9iamVjdE1hcChzdWJUeXBlKVxuICB9KVxuICBpbXBsZW1lbnRzIE1hcDxzdHJpbmcsIFY+XG57XG4gIEBtb2RlbEFjdGlvblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbXNcblxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhpdGVtcylcbiAgICBjb25zdCBsZW4gPSBrZXlzLmxlbmd0aFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IGsgPSBrZXlzW2ldXG4gICAgICByZW1vdmUoaXRlbXMsIGspXG4gICAgfVxuICB9XG5cbiAgQG1vZGVsQWN0aW9uXG4gIGRlbGV0ZShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGhhc0tleSA9IHRoaXMuaGFzKGtleSlcbiAgICBpZiAoaGFzS2V5KSB7XG4gICAgICByZW1vdmUodGhpcy5pdGVtcywga2V5KVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgZm9yRWFjaChjYWxsYmFja2ZuOiAodmFsdWU6IFYsIGtleTogc3RyaW5nLCBtYXA6IE1hcDxzdHJpbmcsIFY+KSA9PiB2b2lkLCB0aGlzQXJnPzogYW55KTogdm9pZCB7XG4gICAgLy8gd2UgY2Fubm90IHVzZSB0aGUgbWFwIGltcGxlbWVudGF0aW9uIHNpbmNlIHdlIG5lZWQgdG8gcGFzcyB0aGlzIGFzIG1hcFxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtc1xuXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGl0ZW1zKVxuICAgIGNvbnN0IGxlbiA9IGtleXMubGVuZ3RoXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY29uc3QgayA9IGtleXNbaV1cbiAgICAgIGNhbGxiYWNrZm4uY2FsbCh0aGlzQXJnLCBpdGVtc1trXSwgaywgdGhpcylcbiAgICB9XG4gIH1cblxuICBnZXQoa2V5OiBzdHJpbmcpOiBWIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gZ2V0KHRoaXMuaXRlbXMsIGtleSlcbiAgfVxuXG4gIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBoYXModGhpcy5pdGVtcywga2V5KVxuICB9XG5cbiAgQG1vZGVsQWN0aW9uXG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IFYpOiB0aGlzIHtcbiAgICBzZXQodGhpcy5pdGVtcywga2V5LCB2YWx1ZSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4ga2V5cyh0aGlzLml0ZW1zKS5sZW5ndGhcbiAgfVxuXG4gIGtleXMoKTogSXRlcmFibGVJdGVyYXRvcjxzdHJpbmc+IHtcbiAgICAvLyBUT0RPOiBzaG91bGQgdXNlIGFuIGFjdHVhbCBpdGVyYXRvclxuICAgIHJldHVybiBrZXlzKHRoaXMuaXRlbXMpW1N5bWJvbC5pdGVyYXRvcl0oKSBhcyBJdGVyYWJsZUl0ZXJhdG9yPHN0cmluZz5cbiAgfVxuXG4gIHZhbHVlcygpOiBJdGVyYWJsZUl0ZXJhdG9yPFY+IHtcbiAgICAvLyBUT0RPOiBzaG91bGQgdXNlIGFuIGFjdHVhbCBpdGVyYXRvclxuICAgIHJldHVybiB2YWx1ZXModGhpcy5pdGVtcylbU3ltYm9sLml0ZXJhdG9yXSgpXG4gIH1cblxuICBlbnRyaWVzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W3N0cmluZywgVl0+IHtcbiAgICAvLyBUT0RPOiBzaG91bGQgdXNlIGFuIGFjdHVhbCBpdGVyYXRvclxuICAgIHJldHVybiBlbnRyaWVzKHRoaXMuaXRlbXMpW1N5bWJvbC5pdGVyYXRvcl0oKVxuICB9XG5cbiAgW1N5bWJvbC5pdGVyYXRvcl0oKTogSXRlcmFibGVJdGVyYXRvcjxbc3RyaW5nLCBWXT4ge1xuICAgIHJldHVybiB0aGlzLmVudHJpZXMoKVxuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiT2JqZWN0TWFwXCJcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgT2JqZWN0TWFwIG1vZGVsIGluc3RhbmNlLlxuICpcbiAqIEB0eXBlcGFyYW0gViBWYWx1ZSB0eXBlLlxuICogQHBhcmFtIFtlbnRyaWVzXSBPcHRpb25hbCBpbml0aWFsIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdE1hcDxWPihlbnRyaWVzPzogUmVhZG9ubHlBcnJheTxyZWFkb25seSBbc3RyaW5nLCBWXT4gfCBudWxsKTogT2JqZWN0TWFwPFY+IHtcbiAgY29uc3QgaW5pdGlhbE9iajogeyBbazogc3RyaW5nXTogViB9ID0ge31cblxuICBpZiAoZW50cmllcykge1xuICAgIGxldCBsZW4gPSBlbnRyaWVzLmxlbmd0aFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1tpXVxuICAgICAgaW5pdGlhbE9ialtlbnRyeVswXV0gPSBlbnRyeVsxXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgT2JqZWN0TWFwKHsgaXRlbXM6IGluaXRpYWxPYmogfSlcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQWdCYSxZQUFiLE1BQWEsbUJBQ0gsTUFBTTtBQUFBLEdBQ1gsYUFBYTtBQUFBLEVBQ2QsT0FBTyxNQUFNLFlBQVksZ0JBQXFCLEdBQUcsVUFBVTtDQUM1RDtFQUlEO1VBQ1EsUUFBUSxLQUFLO1VBRWIsUUFBTyxPQUFPLEtBQUssS0FBSztVQUN4QixNQUFNLE1BQUs7YUFDUixJQUFJLEdBQUcsSUFBSSxLQUFLLEtBQUs7WUFDdEIsSUFBSSxNQUFLO2FBQ1IsT0FBTyxDQUFDO0FBQUE7O0VBS25CLE9BQU87VUFDQyxTQUFTLEtBQUssSUFBSSxHQUFHO1FBQ3ZCLFFBQVE7YUFDSCxLQUFLLE9BQU8sR0FBRzthQUNmO0FBQUEsV0FDRjthQUNFO0FBQUE7O0VBSVgsUUFBUSxZQUFrRTtVQUVsRSxRQUFRLEtBQUs7VUFFYixRQUFPLE9BQU8sS0FBSyxLQUFLO1VBQ3hCLE1BQU0sTUFBSzthQUNSLElBQUksR0FBRyxJQUFJLEtBQUssS0FBSztZQUN0QixJQUFJLE1BQUs7aUJBQ0osS0FBSyxTQUFTLE1BQU0sSUFBSSxHQUFHLElBQUk7QUFBQTs7RUFJOUMsSUFBSTtXQUNLLElBQUksS0FBSyxPQUFPLEdBQUc7QUFBQTtFQUc1QixJQUFJO1dBQ0ssSUFBSSxLQUFLLE9BQU8sR0FBRztBQUFBO0VBSTVCLElBQUksS0FBYTtRQUNYLEtBQUssT0FBTyxLQUFLLEtBQUs7V0FDbkI7QUFBQTtNQUdMO1dBQ0ssS0FBSyxLQUFLLEtBQUssRUFBRTtBQUFBO0VBRzFCO1dBRVMsS0FBSyxLQUFLLEtBQUssRUFBRSxPQUFPOztFQUdqQztXQUVTLE9BQU8sS0FBSyxLQUFLLEVBQUUsT0FBTzs7RUFHbkM7V0FFUyxRQUFRLEtBQUssS0FBSyxFQUFFLE9BQU87O0dBR25DLE9BQU87V0FDQyxLQUFLOztPQUdULE9BQU87V0FDSDtBQUFBOztBQXhFVDtFQURDOztBQWFEO0VBREM7O0FBZ0NEO0VBREM7O0FBbERVO0VBRFosTUFBTSxHQUFHLHFCQUFxQjtHQUNsQixTQUFTO21CQTBGTztRQUNyQixhQUFpQztNQUVuQyxVQUFTO1FBQ1AsTUFBTSxTQUFRO2FBQ1QsSUFBSSxHQUFHLElBQUksS0FBSyxLQUFLO1lBQ3RCLFFBQVEsU0FBUTtpQkFDWCxNQUFNLE1BQU0sTUFBTTtBQUFBOztTQUkxQixJQUFJLFVBQVUsRUFBRSxPQUFPLFlBQVk7QUFDNUM7OyJ9
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { action, observable, observe, intercept, remove, set } from "mobx";
|
|
2
|
+
import { getMobxVersion, failure, assertIsMap, isArray, assertIsObservableArray, assertIsObservableObject } from "../utils/index.mjs";
|
|
3
|
+
import { tag } from "../utils/tag.mjs";
|
|
4
|
+
const observableMapBackedByObservableObject = action((obj) => {
|
|
5
|
+
const map = observable.map();
|
|
6
|
+
map.dataObject = obj;
|
|
7
|
+
const keys = Object.keys(obj);
|
|
8
|
+
for (let i = 0; i < keys.length; i++) {
|
|
9
|
+
const k = keys[i];
|
|
10
|
+
map.set(k, obj[k]);
|
|
11
|
+
}
|
|
12
|
+
let mapAlreadyChanged = false;
|
|
13
|
+
let objectAlreadyChanged = false;
|
|
14
|
+
observe(obj, action((change) => {
|
|
15
|
+
if (mapAlreadyChanged) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
objectAlreadyChanged = true;
|
|
19
|
+
try {
|
|
20
|
+
switch (change.type) {
|
|
21
|
+
case "add":
|
|
22
|
+
case "update": {
|
|
23
|
+
map.set(change.name, change.newValue);
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
case "remove": {
|
|
27
|
+
map.delete(change.name);
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
} finally {
|
|
32
|
+
objectAlreadyChanged = false;
|
|
33
|
+
}
|
|
34
|
+
}));
|
|
35
|
+
intercept(map, action((change) => {
|
|
36
|
+
if (mapAlreadyChanged) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
if (objectAlreadyChanged) {
|
|
40
|
+
return change;
|
|
41
|
+
}
|
|
42
|
+
mapAlreadyChanged = true;
|
|
43
|
+
try {
|
|
44
|
+
switch (change.type) {
|
|
45
|
+
case "add":
|
|
46
|
+
case "update": {
|
|
47
|
+
set(obj, change.name, change.newValue);
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
case "delete": {
|
|
51
|
+
remove(obj, change.name);
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return change;
|
|
56
|
+
} finally {
|
|
57
|
+
mapAlreadyChanged = false;
|
|
58
|
+
}
|
|
59
|
+
}));
|
|
60
|
+
return map;
|
|
61
|
+
});
|
|
62
|
+
const observableMapBackedByObservableArray = action((array) => {
|
|
63
|
+
let map;
|
|
64
|
+
if (getMobxVersion() >= 6) {
|
|
65
|
+
map = observable.map(array);
|
|
66
|
+
} else {
|
|
67
|
+
map = observable.map();
|
|
68
|
+
array.forEach(([k, v]) => {
|
|
69
|
+
map.set(k, v);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
map.dataObject = array;
|
|
73
|
+
if (map.size !== array.length) {
|
|
74
|
+
throw failure("arrays backing a map cannot contain duplicate keys");
|
|
75
|
+
}
|
|
76
|
+
let mapAlreadyChanged = false;
|
|
77
|
+
let arrayAlreadyChanged = false;
|
|
78
|
+
observe(array, action((change) => {
|
|
79
|
+
if (mapAlreadyChanged) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
arrayAlreadyChanged = true;
|
|
83
|
+
try {
|
|
84
|
+
switch (change.type) {
|
|
85
|
+
case "splice": {
|
|
86
|
+
{
|
|
87
|
+
const removed = change.removed;
|
|
88
|
+
for (let i = 0; i < removed.length; i++) {
|
|
89
|
+
map.delete(removed[i][0]);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
{
|
|
93
|
+
const added = change.added;
|
|
94
|
+
for (let i = 0; i < added.length; i++) {
|
|
95
|
+
map.set(added[i][0], added[i][1]);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
case "update": {
|
|
101
|
+
map.delete(change.oldValue[0]);
|
|
102
|
+
map.set(change.newValue[0], change.newValue[1]);
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
} finally {
|
|
107
|
+
arrayAlreadyChanged = false;
|
|
108
|
+
}
|
|
109
|
+
}));
|
|
110
|
+
intercept(map, action((change) => {
|
|
111
|
+
if (mapAlreadyChanged) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
if (arrayAlreadyChanged) {
|
|
115
|
+
return change;
|
|
116
|
+
}
|
|
117
|
+
mapAlreadyChanged = true;
|
|
118
|
+
try {
|
|
119
|
+
switch (change.type) {
|
|
120
|
+
case "update": {
|
|
121
|
+
const i = array.findIndex((i2) => i2[0] === change.name);
|
|
122
|
+
array[i] = [change.name, change.newValue];
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
case "add": {
|
|
126
|
+
array.push([change.name, change.newValue]);
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
case "delete": {
|
|
130
|
+
const i = array.findIndex((i2) => i2[0] === change.name);
|
|
131
|
+
if (i >= 0) {
|
|
132
|
+
array.splice(i, 1);
|
|
133
|
+
}
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return change;
|
|
138
|
+
} finally {
|
|
139
|
+
mapAlreadyChanged = false;
|
|
140
|
+
}
|
|
141
|
+
}));
|
|
142
|
+
return map;
|
|
143
|
+
});
|
|
144
|
+
const asMapTag = tag((objOrArray) => {
|
|
145
|
+
if (isArray(objOrArray)) {
|
|
146
|
+
assertIsObservableArray(objOrArray, "objOrArray");
|
|
147
|
+
return observableMapBackedByObservableArray(objOrArray);
|
|
148
|
+
} else {
|
|
149
|
+
assertIsObservableObject(objOrArray, "objOrArray");
|
|
150
|
+
return observableMapBackedByObservableObject(objOrArray);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
function asMap(objOrArray) {
|
|
154
|
+
return asMapTag.for(objOrArray);
|
|
155
|
+
}
|
|
156
|
+
function mapToObject(map) {
|
|
157
|
+
assertIsMap(map, "map");
|
|
158
|
+
const dataObject = map.dataObject;
|
|
159
|
+
if (dataObject && !isArray(dataObject)) {
|
|
160
|
+
return dataObject;
|
|
161
|
+
}
|
|
162
|
+
const obj = {};
|
|
163
|
+
for (const k of map.keys()) {
|
|
164
|
+
obj[k] = map.get(k);
|
|
165
|
+
}
|
|
166
|
+
return obj;
|
|
167
|
+
}
|
|
168
|
+
function mapToArray(map) {
|
|
169
|
+
assertIsMap(map, "map");
|
|
170
|
+
const dataObject = map.dataObject;
|
|
171
|
+
if (dataObject && isArray(dataObject)) {
|
|
172
|
+
return dataObject;
|
|
173
|
+
}
|
|
174
|
+
const arr = [];
|
|
175
|
+
for (const k of map.keys()) {
|
|
176
|
+
arr.push([k, map.get(k)]);
|
|
177
|
+
}
|
|
178
|
+
return arr;
|
|
179
|
+
}
|
|
180
|
+
export { asMap, mapToArray, mapToObject };
|
|
181
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNNYXAubWpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd3JhcHBlcnMvYXNNYXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYWN0aW9uLFxuICBJTWFwV2lsbENoYW5nZSxcbiAgaW50ZXJjZXB0LFxuICBJT2JqZWN0RGlkQ2hhbmdlLFxuICBJT2JzZXJ2YWJsZUFycmF5LFxuICBpc09ic2VydmFibGVBcnJheSxcbiAgaXNPYnNlcnZhYmxlT2JqZWN0LFxuICBvYnNlcnZhYmxlLFxuICBPYnNlcnZhYmxlTWFwLFxuICBvYnNlcnZlLFxuICByZW1vdmUsXG4gIHNldCxcbn0gZnJvbSBcIm1vYnhcIlxuaW1wb3J0IHtcbiAgYXNzZXJ0SXNNYXAsXG4gIGFzc2VydElzT2JzZXJ2YWJsZUFycmF5LFxuICBhc3NlcnRJc09ic2VydmFibGVPYmplY3QsXG4gIGZhaWx1cmUsXG4gIGdldE1vYnhWZXJzaW9uLFxuICBpbkRldk1vZGUsXG4gIGlzQXJyYXksXG59IGZyb20gXCIuLi91dGlsc1wiXG5pbXBvcnQgeyB0YWcgfSBmcm9tIFwiLi4vdXRpbHMvdGFnXCJcblxuY29uc3Qgb2JzZXJ2YWJsZU1hcEJhY2tlZEJ5T2JzZXJ2YWJsZU9iamVjdCA9IGFjdGlvbihcbiAgPFQ+KFxuICAgIG9iajogb2JqZWN0XG4gICk6IE9ic2VydmFibGVNYXA8c3RyaW5nLCBUPiAmIHtcbiAgICBkYXRhT2JqZWN0OiB0eXBlb2Ygb2JqXG4gIH0gPT4ge1xuICAgIGlmIChpbkRldk1vZGUoKSkge1xuICAgICAgaWYgKCFpc09ic2VydmFibGVPYmplY3Qob2JqKSkge1xuICAgICAgICB0aHJvdyBmYWlsdXJlKFwiYXNzZXJ0aW9uIGZhaWxlZDogZXhwZWN0ZWQgYW4gb2JzZXJ2YWJsZSBvYmplY3RcIilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBtYXAgPSBvYnNlcnZhYmxlLm1hcCgpXG4gICAgOyhtYXAgYXMgYW55KS5kYXRhT2JqZWN0ID0gb2JqXG5cbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqKVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgayA9IGtleXNbaV1cbiAgICAgIG1hcC5zZXQoaywgKG9iaiBhcyBhbnkpW2tdKVxuICAgIH1cblxuICAgIGxldCBtYXBBbHJlYWR5Q2hhbmdlZCA9IGZhbHNlXG4gICAgbGV0IG9iamVjdEFscmVhZHlDaGFuZ2VkID0gZmFsc2VcblxuICAgIC8vIHdoZW4gdGhlIG9iamVjdCBjaGFuZ2VzIHRoZSBtYXAgY2hhbmdlc1xuICAgIG9ic2VydmUoXG4gICAgICBvYmosXG4gICAgICBhY3Rpb24oKGNoYW5nZTogSU9iamVjdERpZENoYW5nZSkgPT4ge1xuICAgICAgICBpZiAobWFwQWxyZWFkeUNoYW5nZWQpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIG9iamVjdEFscmVhZHlDaGFuZ2VkID0gdHJ1ZVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc3dpdGNoIChjaGFuZ2UudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcImFkZFwiOlxuICAgICAgICAgICAgY2FzZSBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICAgIG1hcC5zZXQoY2hhbmdlLm5hbWUsIGNoYW5nZS5uZXdWYWx1ZSlcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICAgIG1hcC5kZWxldGUoY2hhbmdlLm5hbWUpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIG9iamVjdEFscmVhZHlDaGFuZ2VkID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG5cbiAgICAvLyB3aGVuIHRoZSBtYXAgY2hhbmdlcyBhbHNvIGNoYW5nZSB0aGUgb2JqZWN0XG4gICAgaW50ZXJjZXB0KFxuICAgICAgbWFwLFxuICAgICAgYWN0aW9uKChjaGFuZ2U6IElNYXBXaWxsQ2hhbmdlPHN0cmluZywgVD4pID0+IHtcbiAgICAgICAgaWYgKG1hcEFscmVhZHlDaGFuZ2VkKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvYmplY3RBbHJlYWR5Q2hhbmdlZCkge1xuICAgICAgICAgIHJldHVybiBjaGFuZ2VcbiAgICAgICAgfVxuXG4gICAgICAgIG1hcEFscmVhZHlDaGFuZ2VkID0gdHJ1ZVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc3dpdGNoIChjaGFuZ2UudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcImFkZFwiOlxuICAgICAgICAgICAgY2FzZSBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICAgIHNldChvYmosIGNoYW5nZS5uYW1lLCBjaGFuZ2UubmV3VmFsdWUpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgXCJkZWxldGVcIjoge1xuICAgICAgICAgICAgICByZW1vdmUob2JqLCBjaGFuZ2UubmFtZSlcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY2hhbmdlXG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgbWFwQWxyZWFkeUNoYW5nZWQgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcblxuICAgIHJldHVybiBtYXAgYXMgYW55XG4gIH1cbilcblxuY29uc3Qgb2JzZXJ2YWJsZU1hcEJhY2tlZEJ5T2JzZXJ2YWJsZUFycmF5ID0gYWN0aW9uKFxuICA8VD4oXG4gICAgYXJyYXk6IElPYnNlcnZhYmxlQXJyYXk8W3N0cmluZywgVF0+XG4gICk6IE9ic2VydmFibGVNYXA8c3RyaW5nLCBUPiAmIHsgZGF0YU9iamVjdDogdHlwZW9mIGFycmF5IH0gPT4ge1xuICAgIGlmIChpbkRldk1vZGUoKSkge1xuICAgICAgaWYgKCFpc09ic2VydmFibGVBcnJheShhcnJheSkpIHtcbiAgICAgICAgdGhyb3cgZmFpbHVyZShcImFzc2VydGlvbiBmYWlsZWQ6IGV4cGVjdGVkIGFuIG9ic2VydmFibGUgYXJyYXlcIilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbWFwOiBPYnNlcnZhYmxlTWFwPHN0cmluZywgVD5cbiAgICBpZiAoZ2V0TW9ieFZlcnNpb24oKSA+PSA2KSB7XG4gICAgICBtYXAgPSBvYnNlcnZhYmxlLm1hcChhcnJheSlcbiAgICB9IGVsc2Uge1xuICAgICAgbWFwID0gb2JzZXJ2YWJsZS5tYXAoKVxuICAgICAgYXJyYXkuZm9yRWFjaCgoW2ssIHZdKSA9PiB7XG4gICAgICAgIG1hcC5zZXQoaywgdilcbiAgICAgIH0pXG4gICAgfVxuICAgIDsobWFwIGFzIGFueSkuZGF0YU9iamVjdCA9IGFycmF5XG5cbiAgICBpZiAobWFwLnNpemUgIT09IGFycmF5Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgZmFpbHVyZShcImFycmF5cyBiYWNraW5nIGEgbWFwIGNhbm5vdCBjb250YWluIGR1cGxpY2F0ZSBrZXlzXCIpXG4gICAgfVxuXG4gICAgbGV0IG1hcEFscmVhZHlDaGFuZ2VkID0gZmFsc2VcbiAgICBsZXQgYXJyYXlBbHJlYWR5Q2hhbmdlZCA9IGZhbHNlXG5cbiAgICAvLyBmb3Igc3BlZWQgcmVhc29ucyB3ZSB3aWxsIGp1c3QgYXNzdW1lIGRpc3RpbmN0IHZhbHVlcyBhcmUgb25seSBvbmNlIGluIHRoZSBhcnJheVxuICAgIC8vIGFsc28gd2UgYXNzdW1lIHR1cGxlcyB0aGVtc2VsdmVzIGFyZSBpbW11dGFibGVcblxuICAgIC8vIHdoZW4gdGhlIGFycmF5IGNoYW5nZXMgdGhlIG1hcCBjaGFuZ2VzXG4gICAgb2JzZXJ2ZShcbiAgICAgIGFycmF5LFxuICAgICAgYWN0aW9uKChjaGFuZ2U6IGFueSAvKklBcnJheURpZENoYW5nZTxbc3RyaW5nLCBUXT4qLykgPT4ge1xuICAgICAgICBpZiAobWFwQWxyZWFkeUNoYW5nZWQpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGFycmF5QWxyZWFkeUNoYW5nZWQgPSB0cnVlXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc3dpdGNoIChjaGFuZ2UudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcInNwbGljZVwiOiB7XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZW1vdmVkID0gY2hhbmdlLnJlbW92ZWRcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlbW92ZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgIG1hcC5kZWxldGUocmVtb3ZlZFtpXVswXSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRkZWQgPSBjaGFuZ2UuYWRkZWRcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFkZGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICBtYXAuc2V0KGFkZGVkW2ldWzBdLCBhZGRlZFtpXVsxXSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFwidXBkYXRlXCI6IHtcbiAgICAgICAgICAgICAgbWFwLmRlbGV0ZShjaGFuZ2Uub2xkVmFsdWVbMF0pXG4gICAgICAgICAgICAgIG1hcC5zZXQoY2hhbmdlLm5ld1ZhbHVlWzBdLCBjaGFuZ2UubmV3VmFsdWVbMV0pXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGFycmF5QWxyZWFkeUNoYW5nZWQgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcblxuICAgIC8vIHdoZW4gdGhlIG1hcCBjaGFuZ2VzIGFsc28gY2hhbmdlIHRoZSBhcnJheVxuICAgIGludGVyY2VwdChcbiAgICAgIG1hcCxcbiAgICAgIGFjdGlvbigoY2hhbmdlOiBJTWFwV2lsbENoYW5nZTxzdHJpbmcsIFQ+KSA9PiB7XG4gICAgICAgIGlmIChtYXBBbHJlYWR5Q2hhbmdlZCkge1xuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXJyYXlBbHJlYWR5Q2hhbmdlZCkge1xuICAgICAgICAgIHJldHVybiBjaGFuZ2VcbiAgICAgICAgfVxuXG4gICAgICAgIG1hcEFscmVhZHlDaGFuZ2VkID0gdHJ1ZVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc3dpdGNoIChjaGFuZ2UudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICAgIC8vIHJlcGxhY2UgdGhlIHdob2xlIHR1cGxlIHRvIGtlZXAgdHVwbGUgaW1tdXRhYmlsaXR5XG4gICAgICAgICAgICAgIGNvbnN0IGkgPSBhcnJheS5maW5kSW5kZXgoKGkpID0+IGlbMF0gPT09IGNoYW5nZS5uYW1lKVxuICAgICAgICAgICAgICBhcnJheVtpXSA9IFtjaGFuZ2UubmFtZSwgY2hhbmdlLm5ld1ZhbHVlIV1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBcImFkZFwiOiB7XG4gICAgICAgICAgICAgIGFycmF5LnB1c2goW2NoYW5nZS5uYW1lLCBjaGFuZ2UubmV3VmFsdWUhXSlcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBcImRlbGV0ZVwiOiB7XG4gICAgICAgICAgICAgIGNvbnN0IGkgPSBhcnJheS5maW5kSW5kZXgoKGkpID0+IGlbMF0gPT09IGNoYW5nZS5uYW1lKVxuICAgICAgICAgICAgICBpZiAoaSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgYXJyYXkuc3BsaWNlKGksIDEpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY2hhbmdlXG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgbWFwQWxyZWFkeUNoYW5nZWQgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcblxuICAgIHJldHVybiBtYXAgYXMgYW55XG4gIH1cbilcblxuY29uc3QgYXNNYXBUYWcgPSB0YWcoKG9iak9yQXJyYXk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBBcnJheTxbc3RyaW5nLCBhbnldPikgPT4ge1xuICBpZiAoaXNBcnJheShvYmpPckFycmF5KSkge1xuICAgIGFzc2VydElzT2JzZXJ2YWJsZUFycmF5KG9iak9yQXJyYXksIFwib2JqT3JBcnJheVwiKVxuICAgIHJldHVybiBvYnNlcnZhYmxlTWFwQmFja2VkQnlPYnNlcnZhYmxlQXJyYXkob2JqT3JBcnJheSlcbiAgfSBlbHNlIHtcbiAgICBhc3NlcnRJc09ic2VydmFibGVPYmplY3Qob2JqT3JBcnJheSwgXCJvYmpPckFycmF5XCIpXG4gICAgcmV0dXJuIG9ic2VydmFibGVNYXBCYWNrZWRCeU9ic2VydmFibGVPYmplY3Qob2JqT3JBcnJheSlcbiAgfVxufSlcblxuLyoqXG4gKiBXcmFwcyBhbiBvYnNlcnZhYmxlIG9iamVjdCBvciBhIHR1cGxlIGFycmF5IHRvIG9mZmVyIGEgbWFwIGxpa2UgaW50ZXJmYWNlLlxuICpcbiAqIEBwYXJhbSBhcnJheSBBcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzTWFwPEssIFY+KFxuICBhcnJheTogQXJyYXk8W0ssIFZdPlxuKTogT2JzZXJ2YWJsZU1hcDxLLCBWPiAmIHsgZGF0YU9iamVjdDogQXJyYXk8W0ssIFZdPiB9XG5cbi8qKlxuICogV3JhcHMgYW4gb2JzZXJ2YWJsZSBvYmplY3Qgb3IgYSB0dXBsZSBhcnJheSB0byBvZmZlciBhIG1hcCBsaWtlIGludGVyZmFjZS5cbiAqXG4gKiBAcGFyYW0gb2JqZWN0IE9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzTWFwPFQ+KFxuICBvYmplY3Q6IFJlY29yZDxzdHJpbmcsIFQ+XG4pOiBPYnNlcnZhYmxlTWFwPHN0cmluZywgVD4gJiB7IGRhdGFPYmplY3Q6IFJlY29yZDxzdHJpbmcsIFQ+IH1cblxuLyoqXG4gKiBXcmFwcyBhbiBvYnNlcnZhYmxlIG9iamVjdCBvciBhIHR1cGxlIGFycmF5IHRvIG9mZmVyIGEgbWFwIGxpa2UgaW50ZXJmYWNlLlxuICpcbiAqIEBwYXJhbSBvYmpPckFycmF5IE9iamVjdCBvciBhcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzTWFwKFxuICBvYmpPckFycmF5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IEFycmF5PFt1bmtub3duLCB1bmtub3duXT5cbik6IE9ic2VydmFibGVNYXA8dW5rbm93biwgdW5rbm93bj4gJiB7IGRhdGFPYmplY3Q6IHR5cGVvZiBvYmpPckFycmF5IH0ge1xuICByZXR1cm4gYXNNYXBUYWcuZm9yKG9iak9yQXJyYXkpIGFzIGFueVxufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgbWFwIHRvIGFuIG9iamVjdC4gSWYgdGhlIG1hcCBpcyBhIGNvbGxlY3Rpb24gd3JhcHBlciBpdCB3aWxsIHJldHVybiB0aGUgYmFja2VkIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gbWFwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb09iamVjdDxUPihtYXA6IE1hcDxzdHJpbmcsIFQ+KTogUmVjb3JkPHN0cmluZywgVD4ge1xuICBhc3NlcnRJc01hcChtYXAsIFwibWFwXCIpXG5cbiAgY29uc3QgZGF0YU9iamVjdCA9IChtYXAgYXMgYW55KS5kYXRhT2JqZWN0XG4gIGlmIChkYXRhT2JqZWN0ICYmICFpc0FycmF5KGRhdGFPYmplY3QpKSB7XG4gICAgcmV0dXJuIGRhdGFPYmplY3RcbiAgfVxuXG4gIGNvbnN0IG9iajogUmVjb3JkPHN0cmluZywgVD4gPSB7fVxuICBmb3IgKGNvbnN0IGsgb2YgbWFwLmtleXMoKSkge1xuICAgIG9ialtrXSA9IG1hcC5nZXQoaykhXG4gIH1cblxuICByZXR1cm4gb2JqXG59XG5cbi8qKlxuICogQ29udmVydHMgYSBtYXAgdG8gYW4gYXJyYXkuIElmIHRoZSBtYXAgaXMgYSBjb2xsZWN0aW9uIHdyYXBwZXIgaXQgd2lsbCByZXR1cm4gdGhlIGJhY2tlZCBhcnJheS5cbiAqXG4gKiBAcGFyYW0gbWFwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb0FycmF5PEssIFY+KG1hcDogTWFwPEssIFY+KTogQXJyYXk8W0ssIFZdPiB7XG4gIGFzc2VydElzTWFwKG1hcCwgXCJtYXBcIilcblxuICBjb25zdCBkYXRhT2JqZWN0ID0gKG1hcCBhcyBhbnkpLmRhdGFPYmplY3RcbiAgaWYgKGRhdGFPYmplY3QgJiYgaXNBcnJheShkYXRhT2JqZWN0KSkge1xuICAgIHJldHVybiBkYXRhT2JqZWN0XG4gIH1cblxuICBjb25zdCBhcnI6IFtLLCBWXVtdID0gW11cbiAgZm9yIChjb25zdCBrIG9mIG1hcC5rZXlzKCkpIHtcbiAgICBhcnIucHVzaChbaywgbWFwLmdldChrKSFdKVxuICB9XG5cbiAgcmV0dXJuIGFyclxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXlCQSxNQUFNLHdDQUF3QyxPQUM1QyxDQUNFO1FBVU0sTUFBTSxXQUFXO01BQ1QsYUFBYTtRQUVyQixPQUFPLE9BQU8sS0FBSyxHQUFHO1dBQ25CLElBQUksR0FBRyxJQUFJLEtBQUssUUFBUSxLQUFLO1VBQzlCLElBQUksS0FBSztRQUNYLElBQUksR0FBSSxJQUFZLEVBQUU7QUFBQTtNQUd4QixvQkFBb0I7TUFDcEIsdUJBQXVCO1VBSXpCLEtBQ0EsT0FBTyxDQUFDO1FBQ0YsbUJBQW1COzs7MkJBSUE7UUFFbkI7Y0FDTSxPQUFPO0FBQUEsYUFDUjtBQUFBLGFBQ0EsVUFBVTtjQUNULElBQUksT0FBTyxNQUFNLE9BQU8sUUFBUTs7O2FBSWpDLFVBQVU7Y0FDVCxPQUFPLE9BQU8sSUFBSTs7Ozs7NkJBS0g7QUFBQTtHQUUxQixDQUFDO1lBS0YsS0FDQSxPQUFPLENBQUM7UUFDRixtQkFBbUI7YUFDZDtBQUFBO1FBR0wsc0JBQXNCO2FBQ2pCO0FBQUE7d0JBR1c7UUFFaEI7Y0FDTSxPQUFPO0FBQUEsYUFDUjtBQUFBLGFBQ0EsVUFBVTtjQUNULEtBQUssT0FBTyxNQUFNLE9BQU8sUUFBUTs7O2FBSWxDLFVBQVU7aUJBQ04sS0FBSyxPQUFPLElBQUk7Ozs7YUFLcEI7QUFBQTswQkFFYTtBQUFBO0dBRXZCLENBQUM7U0FHRztBQUNULENBQUM7QUFHSCxNQUFNLHVDQUF1QyxPQUMzQyxDQUNFO01BUUk7TUFDQSxvQkFBb0IsR0FBRztVQUNuQixXQUFXLElBQUksS0FBSztBQUFBLFNBQ3JCO1VBQ0MsV0FBVztVQUNYLFFBQVEsQ0FBQyxDQUFDLEdBQUc7VUFDYixJQUFJLEdBQUcsQ0FBQztBQUFBLEtBQ2I7QUFBQTtNQUVXLGFBQWE7TUFFdkIsSUFBSSxTQUFTLE1BQU0sUUFBUTtVQUN2QixRQUFRLG9EQUFvRDtBQUFBO01BR2hFLG9CQUFvQjtNQUNwQixzQkFBc0I7VUFPeEIsT0FDQSxPQUFPLENBQUM7UUFDRixtQkFBbUI7OzswQkFJRDtRQUNsQjtjQUNNLE9BQU87QUFBQSxhQUNSLFVBQVU7O2tCQUVMLFVBQVUsT0FBTztxQkFDZCxJQUFJLEdBQUcsSUFBSSxRQUFRLFFBQVEsS0FBSztrQkFDbkMsT0FBTyxRQUFRLEdBQUcsRUFBRTtBQUFBOzs7a0JBS3BCLFFBQVEsT0FBTztxQkFDWixJQUFJLEdBQUcsSUFBSSxNQUFNLFFBQVEsS0FBSztrQkFDakMsSUFBSSxNQUFNLEdBQUcsSUFBSSxNQUFNLEdBQUcsRUFBRTtBQUFBOzs7O2FBT2pDLFVBQVU7Y0FDVCxPQUFPLE9BQU8sU0FBUyxFQUFFO2NBQ3pCLElBQUksT0FBTyxTQUFTLElBQUksT0FBTyxTQUFTLEVBQUU7Ozs7OzRCQUs1QjtBQUFBO0dBRXpCLENBQUM7WUFLRixLQUNBLE9BQU8sQ0FBQztRQUNGLG1CQUFtQjthQUNkO0FBQUE7UUFHTCxxQkFBcUI7YUFDaEI7QUFBQTt3QkFHVztRQUVoQjtjQUNNLE9BQU87QUFBQSxhQUNSLFVBQVU7Z0JBRVAsSUFBSSxNQUFNLFVBQVUsQ0FBQyxPQUFNLEdBQUUsT0FBTyxPQUFPLElBQUk7Z0JBQy9DLEtBQUssQ0FBQyxPQUFPLE1BQU0sT0FBTyxRQUFTOzs7YUFJdEMsT0FBTztnQkFDSixLQUFLLENBQUMsT0FBTyxNQUFNLE9BQU8sUUFBUyxDQUFDOzs7YUFJdkMsVUFBVTtnQkFDUCxJQUFJLE1BQU0sVUFBVSxDQUFDLE9BQU0sR0FBRSxPQUFPLE9BQU8sSUFBSTtjQUNqRCxLQUFLLEdBQUc7a0JBQ0osT0FBTyxHQUFHLENBQUM7QUFBQTs7OzthQU1oQjtBQUFBOzBCQUVhO0FBQUE7R0FFdkIsQ0FBQztTQUdHO0FBQ1QsQ0FBQztBQUdILE1BQU0sV0FBVyxJQUFJLENBQUM7TUFDaEIsUUFBUSxVQUFVLEdBQUc7NEJBQ0MsWUFBWSxZQUFZO1dBQ3pDLHFDQUFxQyxVQUFVO0FBQUEsU0FDakQ7NkJBQ29CLFlBQVksWUFBWTtXQUMxQyxzQ0FBc0MsVUFBVTtBQUFBO0FBRTNELENBQUM7ZUEwQkM7U0FFTyxTQUFTLElBQUksVUFBVTtBQUNoQztxQkFPK0I7Y0FDakIsS0FBSyxLQUFLO1FBRWhCLGFBQWMsSUFBWTtNQUM1QixjQUFjLENBQUMsUUFBUSxVQUFVLEdBQUc7V0FDL0I7QUFBQTtRQUdILE1BQXlCO2FBQ3BCLEtBQUssSUFBSSxRQUFRO1FBQ3RCLEtBQUssSUFBSSxJQUFJLENBQUM7QUFBQTtTQUdiO0FBQ1Q7b0JBT2lDO2NBQ25CLEtBQUssS0FBSztRQUVoQixhQUFjLElBQVk7TUFDNUIsY0FBYyxRQUFRLFVBQVUsR0FBRztXQUM5QjtBQUFBO1FBR0gsTUFBZ0I7YUFDWCxLQUFLLElBQUksUUFBUTtRQUN0QixLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFFLENBQUM7QUFBQTtTQUdwQjtBQUNUOzsifQ==
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { action, observable, observe, intercept } from "mobx";
|
|
2
|
+
import { getMobxVersion, failure, assertIsSet, assertIsObservableArray } from "../utils/index.mjs";
|
|
3
|
+
import { tag } from "../utils/tag.mjs";
|
|
4
|
+
const observableSetBackedByObservableArray = action((array) => {
|
|
5
|
+
let set;
|
|
6
|
+
if (getMobxVersion() >= 6) {
|
|
7
|
+
set = observable.set(array);
|
|
8
|
+
} else {
|
|
9
|
+
set = observable.set();
|
|
10
|
+
array.forEach((item) => {
|
|
11
|
+
set.add(item);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
set.dataObject = array;
|
|
15
|
+
if (set.size !== array.length) {
|
|
16
|
+
throw failure("arrays backing a set cannot contain duplicate values");
|
|
17
|
+
}
|
|
18
|
+
let setAlreadyChanged = false;
|
|
19
|
+
let arrayAlreadyChanged = false;
|
|
20
|
+
observe(array, action((change) => {
|
|
21
|
+
if (setAlreadyChanged) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
arrayAlreadyChanged = true;
|
|
25
|
+
try {
|
|
26
|
+
switch (change.type) {
|
|
27
|
+
case "splice": {
|
|
28
|
+
{
|
|
29
|
+
const removed = change.removed;
|
|
30
|
+
for (let i = 0; i < removed.length; i++) {
|
|
31
|
+
set.delete(removed[i]);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
{
|
|
35
|
+
const added = change.added;
|
|
36
|
+
for (let i = 0; i < added.length; i++) {
|
|
37
|
+
set.add(added[i]);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
case "update": {
|
|
43
|
+
set.delete(change.oldValue);
|
|
44
|
+
set.add(change.newValue);
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
} finally {
|
|
49
|
+
arrayAlreadyChanged = false;
|
|
50
|
+
}
|
|
51
|
+
}));
|
|
52
|
+
intercept(set, action((change) => {
|
|
53
|
+
if (setAlreadyChanged) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
if (arrayAlreadyChanged) {
|
|
57
|
+
return change;
|
|
58
|
+
}
|
|
59
|
+
setAlreadyChanged = true;
|
|
60
|
+
try {
|
|
61
|
+
switch (change.type) {
|
|
62
|
+
case "add": {
|
|
63
|
+
array.push(change.newValue);
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
case "delete": {
|
|
67
|
+
const i = array.indexOf(change.oldValue);
|
|
68
|
+
if (i >= 0) {
|
|
69
|
+
array.splice(i, 1);
|
|
70
|
+
}
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return change;
|
|
75
|
+
} finally {
|
|
76
|
+
setAlreadyChanged = false;
|
|
77
|
+
}
|
|
78
|
+
}));
|
|
79
|
+
return set;
|
|
80
|
+
});
|
|
81
|
+
const asSetTag = tag((array) => {
|
|
82
|
+
assertIsObservableArray(array, "array");
|
|
83
|
+
return observableSetBackedByObservableArray(array);
|
|
84
|
+
});
|
|
85
|
+
function asSet(array) {
|
|
86
|
+
return asSetTag.for(array);
|
|
87
|
+
}
|
|
88
|
+
function setToArray(set) {
|
|
89
|
+
assertIsSet(set, "set");
|
|
90
|
+
const dataObject = set.dataObject;
|
|
91
|
+
if (dataObject) {
|
|
92
|
+
return dataObject;
|
|
93
|
+
}
|
|
94
|
+
return Array.from(set.values());
|
|
95
|
+
}
|
|
96
|
+
export { asSet, setToArray };
|
|
97
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNTZXQubWpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd3JhcHBlcnMvYXNTZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYWN0aW9uLFxuICBpbnRlcmNlcHQsXG4gIElPYnNlcnZhYmxlQXJyYXksXG4gIElTZXRXaWxsQ2hhbmdlLFxuICBpc09ic2VydmFibGVBcnJheSxcbiAgb2JzZXJ2YWJsZSxcbiAgT2JzZXJ2YWJsZVNldCxcbiAgb2JzZXJ2ZSxcbn0gZnJvbSBcIm1vYnhcIlxuaW1wb3J0IHsgYXNzZXJ0SXNPYnNlcnZhYmxlQXJyYXksIGFzc2VydElzU2V0LCBmYWlsdXJlLCBnZXRNb2J4VmVyc2lvbiwgaW5EZXZNb2RlIH0gZnJvbSBcIi4uL3V0aWxzXCJcbmltcG9ydCB7IHRhZyB9IGZyb20gXCIuLi91dGlscy90YWdcIlxuXG5jb25zdCBvYnNlcnZhYmxlU2V0QmFja2VkQnlPYnNlcnZhYmxlQXJyYXkgPSBhY3Rpb24oXG4gIDxUPihhcnJheTogSU9ic2VydmFibGVBcnJheTxUPik6IE9ic2VydmFibGVTZXQ8VD4gJiB7IGRhdGFPYmplY3Q6IHR5cGVvZiBhcnJheSB9ID0+IHtcbiAgICBpZiAoaW5EZXZNb2RlKCkpIHtcbiAgICAgIGlmICghaXNPYnNlcnZhYmxlQXJyYXkoYXJyYXkpKSB7XG4gICAgICAgIHRocm93IGZhaWx1cmUoXCJhc3NlcnRpb24gZmFpbGVkOiBleHBlY3RlZCBhbiBvYnNlcnZhYmxlIGFycmF5XCIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHNldDogT2JzZXJ2YWJsZVNldDxUPlxuICAgIGlmIChnZXRNb2J4VmVyc2lvbigpID49IDYpIHtcbiAgICAgIHNldCA9IG9ic2VydmFibGUuc2V0KGFycmF5KVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXQgPSBvYnNlcnZhYmxlLnNldCgpXG4gICAgICBhcnJheS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIHNldC5hZGQoaXRlbSlcbiAgICAgIH0pXG4gICAgfVxuICAgIDsoc2V0IGFzIGFueSkuZGF0YU9iamVjdCA9IGFycmF5XG5cbiAgICBpZiAoc2V0LnNpemUgIT09IGFycmF5Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgZmFpbHVyZShcImFycmF5cyBiYWNraW5nIGEgc2V0IGNhbm5vdCBjb250YWluIGR1cGxpY2F0ZSB2YWx1ZXNcIilcbiAgICB9XG5cbiAgICBsZXQgc2V0QWxyZWFkeUNoYW5nZWQgPSBmYWxzZVxuICAgIGxldCBhcnJheUFscmVhZHlDaGFuZ2VkID0gZmFsc2VcblxuICAgIC8vIGZvciBzcGVlZCByZWFzb25zIHdlIHdpbGwganVzdCBhc3N1bWUgZGlzdGluY3QgdmFsdWVzIGFyZSBvbmx5IG9uY2UgaW4gdGhlIGFycmF5XG5cbiAgICAvLyB3aGVuIHRoZSBhcnJheSBjaGFuZ2VzIHRoZSBzZXQgY2hhbmdlc1xuICAgIG9ic2VydmUoXG4gICAgICBhcnJheSxcbiAgICAgIGFjdGlvbigoY2hhbmdlOiBhbnkgLypJQXJyYXlEaWRDaGFuZ2U8VD4qLykgPT4ge1xuICAgICAgICBpZiAoc2V0QWxyZWFkeUNoYW5nZWQpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGFycmF5QWxyZWFkeUNoYW5nZWQgPSB0cnVlXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzd2l0Y2ggKGNoYW5nZS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwic3BsaWNlXCI6IHtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92ZWQgPSBjaGFuZ2UucmVtb3ZlZFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVtb3ZlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgc2V0LmRlbGV0ZShyZW1vdmVkW2ldKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGRlZCA9IGNoYW5nZS5hZGRlZFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWRkZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgIHNldC5hZGQoYWRkZWRbaV0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICAgIHNldC5kZWxldGUoY2hhbmdlLm9sZFZhbHVlKVxuICAgICAgICAgICAgICBzZXQuYWRkKGNoYW5nZS5uZXdWYWx1ZSlcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgYXJyYXlBbHJlYWR5Q2hhbmdlZCA9IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuXG4gICAgLy8gd2hlbiB0aGUgc2V0IGNoYW5nZXMgYWxzbyBjaGFuZ2UgdGhlIGFycmF5XG4gICAgaW50ZXJjZXB0KFxuICAgICAgc2V0LFxuICAgICAgYWN0aW9uKChjaGFuZ2U6IElTZXRXaWxsQ2hhbmdlPFQ+KSA9PiB7XG4gICAgICAgIGlmIChzZXRBbHJlYWR5Q2hhbmdlZCkge1xuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXJyYXlBbHJlYWR5Q2hhbmdlZCkge1xuICAgICAgICAgIHJldHVybiBjaGFuZ2VcbiAgICAgICAgfVxuXG4gICAgICAgIHNldEFscmVhZHlDaGFuZ2VkID0gdHJ1ZVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc3dpdGNoIChjaGFuZ2UudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcImFkZFwiOiB7XG4gICAgICAgICAgICAgIGFycmF5LnB1c2goY2hhbmdlLm5ld1ZhbHVlKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFwiZGVsZXRlXCI6IHtcbiAgICAgICAgICAgICAgY29uc3QgaSA9IGFycmF5LmluZGV4T2YoY2hhbmdlLm9sZFZhbHVlKVxuICAgICAgICAgICAgICBpZiAoaSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgYXJyYXkuc3BsaWNlKGksIDEpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY2hhbmdlXG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgc2V0QWxyZWFkeUNoYW5nZWQgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcblxuICAgIHJldHVybiBzZXQgYXMgYW55XG4gIH1cbilcblxuY29uc3QgYXNTZXRUYWcgPSB0YWcoKGFycmF5OiBBcnJheTxhbnk+KSA9PiB7XG4gIGFzc2VydElzT2JzZXJ2YWJsZUFycmF5KGFycmF5LCBcImFycmF5XCIpXG4gIHJldHVybiBvYnNlcnZhYmxlU2V0QmFja2VkQnlPYnNlcnZhYmxlQXJyYXkoYXJyYXkpXG59KVxuXG4vKipcbiAqIFdyYXBzIGFuIG9ic2VydmFibGUgYXJyYXkgdG8gb2ZmZXIgYSBzZXQgbGlrZSBpbnRlcmZhY2UuXG4gKlxuICogQHBhcmFtIGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc1NldDxUPihhcnJheTogQXJyYXk8VD4pOiBPYnNlcnZhYmxlU2V0PFQ+ICYgeyBkYXRhT2JqZWN0OiB0eXBlb2YgYXJyYXkgfSB7XG4gIHJldHVybiBhc1NldFRhZy5mb3IoYXJyYXkpIGFzIGFueVxufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc2V0IHRvIGFuIGFycmF5LiBJZiB0aGUgc2V0IGlzIGEgY29sbGVjdGlvbiB3cmFwcGVyIGl0IHdpbGwgcmV0dXJuIHRoZSBiYWNrZWQgYXJyYXkuXG4gKlxuICogQHBhcmFtIHNldFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0VG9BcnJheTxUPihzZXQ6IFNldDxUPik6IEFycmF5PFQ+IHtcbiAgYXNzZXJ0SXNTZXQoc2V0LCBcInNldFwiKVxuXG4gIGNvbnN0IGRhdGFPYmplY3QgPSAoc2V0IGFzIGFueSkuZGF0YU9iamVjdFxuICBpZiAoZGF0YU9iamVjdCkge1xuICAgIHJldHVybiBkYXRhT2JqZWN0XG4gIH1cblxuICByZXR1cm4gQXJyYXkuZnJvbShzZXQudmFsdWVzKCkpXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBYUEsTUFBTSx1Q0FBdUMsT0FDM0MsQ0FBSTtNQU9FO01BQ0Esb0JBQW9CLEdBQUc7VUFDbkIsV0FBVyxJQUFJLEtBQUs7QUFBQSxTQUNyQjtVQUNDLFdBQVc7VUFDWCxRQUFRLENBQUM7VUFDVCxJQUFJLElBQUk7QUFBQSxLQUNiO0FBQUE7TUFFVyxhQUFhO01BRXZCLElBQUksU0FBUyxNQUFNLFFBQVE7VUFDdkIsUUFBUSxzREFBc0Q7QUFBQTtNQUdsRSxvQkFBb0I7TUFDcEIsc0JBQXNCO1VBTXhCLE9BQ0EsT0FBTyxDQUFDO1FBQ0YsbUJBQW1COzs7MEJBSUQ7UUFFbEI7Y0FDTSxPQUFPO0FBQUEsYUFDUixVQUFVOztrQkFFTCxVQUFVLE9BQU87cUJBQ2QsSUFBSSxHQUFHLElBQUksUUFBUSxRQUFRLEtBQUs7a0JBQ25DLE9BQU8sUUFBUSxFQUFFO0FBQUE7OztrQkFLakIsUUFBUSxPQUFPO3FCQUNaLElBQUksR0FBRyxJQUFJLE1BQU0sUUFBUSxLQUFLO2tCQUNqQyxJQUFJLE1BQU0sRUFBRTtBQUFBOzs7O2FBT2pCLFVBQVU7Y0FDVCxPQUFPLE9BQU8sUUFBUTtjQUN0QixJQUFJLE9BQU8sUUFBUTs7Ozs7NEJBS0w7QUFBQTtHQUV6QixDQUFDO1lBS0YsS0FDQSxPQUFPLENBQUM7UUFDRixtQkFBbUI7YUFDZDtBQUFBO1FBR0wscUJBQXFCO2FBQ2hCO0FBQUE7d0JBR1c7UUFFaEI7Y0FDTSxPQUFPO0FBQUEsYUFDUixPQUFPO2dCQUNKLEtBQUssT0FBTyxRQUFROzs7YUFJdkIsVUFBVTtnQkFDUCxJQUFJLE1BQU0sUUFBUSxPQUFPLFFBQVE7Y0FDbkMsS0FBSyxHQUFHO2tCQUNKLE9BQU8sR0FBRyxDQUFDO0FBQUE7Ozs7YUFNaEI7QUFBQTswQkFFYTtBQUFBO0dBRXZCLENBQUM7U0FHRztBQUNULENBQUM7QUFHSCxNQUFNLFdBQVcsSUFBSSxDQUFDOzBCQUNJLE9BQU8sT0FBTztTQUMvQixxQ0FBcUMsS0FBSztBQUNuRCxDQUFDO2VBT3dCO1NBQ2hCLFNBQVMsSUFBSSxLQUFLO0FBQzNCO29CQU84QjtjQUNoQixLQUFLLEtBQUs7UUFFaEIsYUFBYyxJQUFZO01BQzVCLFlBQVk7V0FDUDtBQUFBO1NBR0YsTUFBTSxLQUFLLElBQUksUUFBUTtBQUNoQzs7In0=
|
package/dist/tweaker/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mobx-keystone",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.68.1-alpha",
|
|
4
4
|
"description": "A MobX powered state management solution based on data trees with first class support for TypeScript, snapshots, patches and much more",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"mobx",
|
|
@@ -25,25 +25,23 @@
|
|
|
25
25
|
"exports": {
|
|
26
26
|
"./package.json": "./package.json",
|
|
27
27
|
".": {
|
|
28
|
-
"import":
|
|
29
|
-
"webpack": "./dist/mobx-keystone.es.js",
|
|
30
|
-
"default": "./dist/mobx-keystone.es.mjs"
|
|
31
|
-
},
|
|
28
|
+
"import": "./dist/src/index.mjs",
|
|
32
29
|
"require": "./dist/mobx-keystone.umd.js",
|
|
33
30
|
"script": "./dist/mobx-keystone.umd.js",
|
|
34
|
-
"default": "./dist/
|
|
31
|
+
"default": "./dist/src/index.mjs"
|
|
35
32
|
}
|
|
36
33
|
},
|
|
37
|
-
"esmodule": "./dist/
|
|
38
|
-
"module": "./dist/
|
|
39
|
-
"jsnext:main": "./dist/
|
|
40
|
-
"react-native": "./dist/
|
|
34
|
+
"esmodule": "./dist/src/index.mjs",
|
|
35
|
+
"module": "./dist/src/index.mjs",
|
|
36
|
+
"jsnext:main": "./dist/src/index.mjs",
|
|
37
|
+
"react-native": "./dist/src/index.mjs",
|
|
41
38
|
"umd:main": "./dist/mobx-keystone.umd.js",
|
|
42
39
|
"unpkg": "./dist/mobx-keystone.umd.js",
|
|
43
40
|
"jsdelivr": "./dist/mobx-keystone.umd.js",
|
|
44
41
|
"main": "./dist/mobx-keystone.umd.js",
|
|
45
42
|
"types": "./dist/index.d.ts",
|
|
46
43
|
"typings": "./dist/index.d.ts",
|
|
44
|
+
"sideEffects": false,
|
|
47
45
|
"files": [
|
|
48
46
|
"src",
|
|
49
47
|
"dist",
|
|
@@ -55,7 +53,7 @@
|
|
|
55
53
|
"quick-build": "tsc",
|
|
56
54
|
"quick-build-tests": "tsc -p test",
|
|
57
55
|
"copy-root-files": "shx cp ../../README.md . && shx cp ../../LICENSE . && shx cp ../../CHANGELOG.md .",
|
|
58
|
-
"build": "yarn quick-build && yarn copy-root-files && shx rm -rf dist && vite build
|
|
56
|
+
"build": "yarn quick-build && yarn copy-root-files && shx rm -rf dist && vite build",
|
|
59
57
|
"test": "jest",
|
|
60
58
|
"test:ci": "yarn test -i --coverage",
|
|
61
59
|
"test:perf": "yarn build && yarn test:perf:run",
|
|
@@ -72,10 +70,10 @@
|
|
|
72
70
|
"@babel/plugin-proposal-decorators": "^7.17.9",
|
|
73
71
|
"@babel/preset-env": "^7.16.11",
|
|
74
72
|
"@babel/preset-typescript": "^7.16.7",
|
|
75
|
-
"@swc/core": "^1.2.
|
|
73
|
+
"@swc/core": "^1.2.172",
|
|
76
74
|
"@swc/jest": "^0.2.20",
|
|
77
75
|
"@types/jest": "^27.4.1",
|
|
78
|
-
"@types/node": "^17.0.
|
|
76
|
+
"@types/node": "^17.0.29",
|
|
79
77
|
"babel-jest": "^27.5.1",
|
|
80
78
|
"jest": "^27.5.1",
|
|
81
79
|
"mobx": "^6.5.0",
|
|
@@ -88,7 +86,7 @@
|
|
|
88
86
|
"ts-node": "^10.7.0",
|
|
89
87
|
"typedoc": "^0.22.15",
|
|
90
88
|
"typescript": "^4.6.3",
|
|
91
|
-
"vite": "^2.9.
|
|
89
|
+
"vite": "^2.9.6"
|
|
92
90
|
},
|
|
93
91
|
"dependencies": {
|
|
94
92
|
"fast-deep-equal": "^3.1.3",
|
|
@@ -27,6 +27,8 @@ const serializersMap = new Map<string, ActionCallArgumentSerializer<any, any>>()
|
|
|
27
27
|
export function registerActionCallArgumentSerializer(
|
|
28
28
|
serializer: ActionCallArgumentSerializer<any, any>
|
|
29
29
|
): () => void {
|
|
30
|
+
registerDefaultActionCallArgumentSerializers()
|
|
31
|
+
|
|
30
32
|
if (serializersArray.includes(serializer)) {
|
|
31
33
|
throw failure("action call argument serializer already registered")
|
|
32
34
|
}
|
|
@@ -98,6 +100,8 @@ export function serializeActionCallArgument(
|
|
|
98
100
|
argValue: any,
|
|
99
101
|
targetRoot?: object
|
|
100
102
|
): SerializedActionCallArgument | JSONPrimitiveValue {
|
|
103
|
+
registerDefaultActionCallArgumentSerializers()
|
|
104
|
+
|
|
101
105
|
if (isJSONPrimitive(argValue)) {
|
|
102
106
|
return argValue
|
|
103
107
|
}
|
|
@@ -161,6 +165,8 @@ export function deserializeActionCallArgument(
|
|
|
161
165
|
argValue: SerializedActionCallArgument | JSONPrimitiveValue,
|
|
162
166
|
targetRoot?: object
|
|
163
167
|
): any {
|
|
168
|
+
registerDefaultActionCallArgumentSerializers()
|
|
169
|
+
|
|
164
170
|
if (isJSONPrimitive(argValue)) {
|
|
165
171
|
return argValue
|
|
166
172
|
}
|
|
@@ -212,13 +218,22 @@ export function deserializeActionCall(
|
|
|
212
218
|
return deserializedActionCall
|
|
213
219
|
}
|
|
214
220
|
|
|
215
|
-
|
|
221
|
+
let defaultActionCallArgumentSerializersRegistered = false
|
|
216
222
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
223
|
+
function registerDefaultActionCallArgumentSerializers() {
|
|
224
|
+
if (defaultActionCallArgumentSerializersRegistered) {
|
|
225
|
+
return
|
|
226
|
+
}
|
|
227
|
+
defaultActionCallArgumentSerializersRegistered = true
|
|
228
|
+
|
|
229
|
+
// serializer registration (from low priority to high priority)
|
|
230
|
+
|
|
231
|
+
registerActionCallArgumentSerializer(primitiveSerializer)
|
|
232
|
+
registerActionCallArgumentSerializer(plainObjectSerializer)
|
|
233
|
+
registerActionCallArgumentSerializer(setSerializer)
|
|
234
|
+
registerActionCallArgumentSerializer(mapSerializer)
|
|
235
|
+
registerActionCallArgumentSerializer(dateSerializer)
|
|
236
|
+
registerActionCallArgumentSerializer(arraySerializer)
|
|
237
|
+
registerActionCallArgumentSerializer(objectSnapshotSerializer)
|
|
238
|
+
registerActionCallArgumentSerializer(objectPathSerializer)
|
|
239
|
+
}
|
|
@@ -18,7 +18,6 @@ import { failure, isObject } from "../utils"
|
|
|
18
18
|
import { getOrCreate } from "../utils/mapUtils"
|
|
19
19
|
import type { DataModelConstructorOptions } from "./DataModelConstructorOptions"
|
|
20
20
|
import { internalNewDataModel } from "./newDataModel"
|
|
21
|
-
import { setBaseDataModel } from "./_BaseDataModel"
|
|
22
21
|
|
|
23
22
|
const dataModelInstanceCache = new WeakMap<ModelClass<AnyDataModel>, WeakMap<any, AnyDataModel>>()
|
|
24
23
|
|
|
@@ -160,8 +159,6 @@ export abstract class BaseDataModel<TProps extends ModelProps> {
|
|
|
160
159
|
}
|
|
161
160
|
}
|
|
162
161
|
|
|
163
|
-
setBaseDataModel(BaseDataModel)
|
|
164
|
-
|
|
165
162
|
/**
|
|
166
163
|
* @ignore
|
|
167
164
|
*/
|
package/src/dataModel/utils.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ModelClass } from "../modelShared/BaseModelShared"
|
|
2
2
|
import { failure } from "../utils"
|
|
3
3
|
import type { AnyDataModel } from "./BaseDataModel"
|
|
4
|
-
import {
|
|
4
|
+
import { BaseDataModel } from "./BaseDataModel"
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Checks if an object is a data model instance.
|
|
@@ -10,7 +10,7 @@ import { _BaseDataModel } from "./_BaseDataModel"
|
|
|
10
10
|
* @returns
|
|
11
11
|
*/
|
|
12
12
|
export function isDataModel(model: unknown): model is AnyDataModel {
|
|
13
|
-
return model instanceof
|
|
13
|
+
return model instanceof BaseDataModel
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -39,7 +39,7 @@ export function isDataModelClass(modelClass: unknown): modelClass is ModelClass<
|
|
|
39
39
|
return false
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
if (modelClass !==
|
|
42
|
+
if (modelClass !== BaseDataModel && !(modelClass.prototype instanceof BaseDataModel)) {
|
|
43
43
|
return false
|
|
44
44
|
}
|
|
45
45
|
|
|
@@ -57,7 +57,7 @@ export function assertIsDataModelClass(
|
|
|
57
57
|
throw failure(`${argName} must be a class`)
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
if (modelClass !==
|
|
60
|
+
if (modelClass !== BaseDataModel && !(modelClass.prototype instanceof BaseDataModel)) {
|
|
61
61
|
throw failure(`${argName} must extend DataModel`)
|
|
62
62
|
}
|
|
63
63
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Path } from "../parent/pathTypes";
|
|
2
|
+
/**
|
|
3
|
+
* An action call.
|
|
4
|
+
*/
|
|
5
|
+
export interface ActionCall {
|
|
6
|
+
/**
|
|
7
|
+
* Action name (name of the function).
|
|
8
|
+
*/
|
|
9
|
+
readonly actionName: string;
|
|
10
|
+
/**
|
|
11
|
+
* Action arguments.
|
|
12
|
+
*/
|
|
13
|
+
readonly args: ReadonlyArray<any>;
|
|
14
|
+
/**
|
|
15
|
+
* Path to the model where the action will be run, as an array of string | number.
|
|
16
|
+
*/
|
|
17
|
+
readonly targetPath: Path;
|
|
18
|
+
/**
|
|
19
|
+
* Ids of models along the path to the target, null if it is not a model.
|
|
20
|
+
*/
|
|
21
|
+
readonly targetPathIds: ReadonlyArray<string | null>;
|
|
22
|
+
/**
|
|
23
|
+
* Marks this action call as non-serialized.
|
|
24
|
+
*/
|
|
25
|
+
readonly serialized?: undefined;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Applies (runs) an action over a target object.
|
|
29
|
+
*
|
|
30
|
+
* If you intend to apply serialized actions check one of the `applySerializedAction` methods instead.
|
|
31
|
+
*
|
|
32
|
+
* @param subtreeRoot Subtree root target object to run the action over.
|
|
33
|
+
* @param call The action, usually as coming from `onActionMiddleware`.
|
|
34
|
+
* @returns The return value of the action, if any.
|
|
35
|
+
*/
|
|
36
|
+
export declare function applyAction<TRet = any>(subtreeRoot: object, call: ActionCall): TRet;
|