mobx-keystone 0.68.0 → 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/dist/_virtual/_tslib.mjs +12 -0
- 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/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/package.json +8 -11
- 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/dist/mobx-keystone.es.js +0 -7934
- package/dist/mobx-keystone.es.mjs +0 -7934
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { checkModelDecoratorArgs } from "../modelShared/checkModelDecoratorArgs.mjs";
|
|
2
|
+
import { decorateWrapMethodOrField, failure } from "../utils/index.mjs";
|
|
3
|
+
import { getActionNameAndContextOverride } from "./actionDecoratorUtils.mjs";
|
|
4
|
+
import { ActionContextActionType, ActionContextAsyncStepType } from "./context.mjs";
|
|
5
|
+
import { wrapInAction } from "./wrapInAction.mjs";
|
|
6
|
+
const modelFlowSymbol = Symbol("modelFlow");
|
|
7
|
+
function flow({ nameOrNameFn, generator, overrideContext }) {
|
|
8
|
+
const flowFn = function(...args) {
|
|
9
|
+
const name = typeof nameOrNameFn === "function" ? nameOrNameFn() : nameOrNameFn;
|
|
10
|
+
const target = this;
|
|
11
|
+
let previousAsyncStepContext;
|
|
12
|
+
const ctxOverride = (stepType) => {
|
|
13
|
+
return (ctx, self) => {
|
|
14
|
+
if (overrideContext) {
|
|
15
|
+
overrideContext(ctx, self);
|
|
16
|
+
}
|
|
17
|
+
ctx.previousAsyncStepContext = previousAsyncStepContext;
|
|
18
|
+
ctx.spawnAsyncStepContext = previousAsyncStepContext ? previousAsyncStepContext.spawnAsyncStepContext : ctx;
|
|
19
|
+
ctx.asyncStepType = stepType;
|
|
20
|
+
ctx.args = args;
|
|
21
|
+
previousAsyncStepContext = ctx;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
let generatorRun = false;
|
|
25
|
+
const gen = wrapInAction({
|
|
26
|
+
nameOrNameFn: name,
|
|
27
|
+
fn: () => {
|
|
28
|
+
generatorRun = true;
|
|
29
|
+
return generator.apply(target, args);
|
|
30
|
+
},
|
|
31
|
+
actionType: ActionContextActionType.Async,
|
|
32
|
+
overrideContext: ctxOverride(ActionContextAsyncStepType.Spawn)
|
|
33
|
+
}).apply(target);
|
|
34
|
+
if (!generatorRun) {
|
|
35
|
+
return gen instanceof Promise ? gen : Promise.resolve(gen);
|
|
36
|
+
}
|
|
37
|
+
const genNext = gen.next.bind(gen);
|
|
38
|
+
const genThrow = gen.throw.bind(gen);
|
|
39
|
+
const promise = new Promise(function(resolve, reject) {
|
|
40
|
+
function onFulfilled(res) {
|
|
41
|
+
let ret;
|
|
42
|
+
try {
|
|
43
|
+
ret = wrapInAction({
|
|
44
|
+
nameOrNameFn: name,
|
|
45
|
+
fn: genNext,
|
|
46
|
+
actionType: ActionContextActionType.Async,
|
|
47
|
+
overrideContext: ctxOverride(ActionContextAsyncStepType.Resume)
|
|
48
|
+
}).call(target, res);
|
|
49
|
+
} catch (e) {
|
|
50
|
+
wrapInAction({
|
|
51
|
+
nameOrNameFn: name,
|
|
52
|
+
fn: (err) => {
|
|
53
|
+
return {
|
|
54
|
+
value: err,
|
|
55
|
+
resolution: "reject",
|
|
56
|
+
accepter: resolve,
|
|
57
|
+
rejecter: reject
|
|
58
|
+
};
|
|
59
|
+
},
|
|
60
|
+
actionType: ActionContextActionType.Async,
|
|
61
|
+
overrideContext: ctxOverride(ActionContextAsyncStepType.Throw),
|
|
62
|
+
isFlowFinisher: true
|
|
63
|
+
}).call(target, e);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
next(ret);
|
|
67
|
+
}
|
|
68
|
+
function onRejected(err) {
|
|
69
|
+
let ret;
|
|
70
|
+
try {
|
|
71
|
+
ret = wrapInAction({
|
|
72
|
+
nameOrNameFn: name,
|
|
73
|
+
fn: genThrow,
|
|
74
|
+
actionType: ActionContextActionType.Async,
|
|
75
|
+
overrideContext: ctxOverride(ActionContextAsyncStepType.ResumeError)
|
|
76
|
+
}).call(target, err);
|
|
77
|
+
} catch (e) {
|
|
78
|
+
wrapInAction({
|
|
79
|
+
nameOrNameFn: name,
|
|
80
|
+
fn: (err2) => {
|
|
81
|
+
return {
|
|
82
|
+
value: err2,
|
|
83
|
+
resolution: "reject",
|
|
84
|
+
accepter: resolve,
|
|
85
|
+
rejecter: reject
|
|
86
|
+
};
|
|
87
|
+
},
|
|
88
|
+
actionType: ActionContextActionType.Async,
|
|
89
|
+
overrideContext: ctxOverride(ActionContextAsyncStepType.Throw),
|
|
90
|
+
isFlowFinisher: true
|
|
91
|
+
}).call(target, e);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
next(ret);
|
|
95
|
+
}
|
|
96
|
+
function next(ret) {
|
|
97
|
+
if (ret && typeof ret.then === "function") {
|
|
98
|
+
ret.then(next, reject);
|
|
99
|
+
} else if (ret.done) {
|
|
100
|
+
wrapInAction({
|
|
101
|
+
nameOrNameFn: name,
|
|
102
|
+
fn: (val) => {
|
|
103
|
+
return {
|
|
104
|
+
value: val,
|
|
105
|
+
resolution: "accept",
|
|
106
|
+
accepter: resolve,
|
|
107
|
+
rejecter: reject
|
|
108
|
+
};
|
|
109
|
+
},
|
|
110
|
+
actionType: ActionContextActionType.Async,
|
|
111
|
+
overrideContext: ctxOverride(ActionContextAsyncStepType.Return),
|
|
112
|
+
isFlowFinisher: true
|
|
113
|
+
}).call(target, ret.value);
|
|
114
|
+
} else {
|
|
115
|
+
Promise.resolve(ret.value).then(onFulfilled, onRejected);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
onFulfilled(void 0);
|
|
119
|
+
});
|
|
120
|
+
return promise;
|
|
121
|
+
};
|
|
122
|
+
flowFn[modelFlowSymbol] = true;
|
|
123
|
+
return flowFn;
|
|
124
|
+
}
|
|
125
|
+
function isModelFlow(fn) {
|
|
126
|
+
return typeof fn === "function" && modelFlowSymbol in fn;
|
|
127
|
+
}
|
|
128
|
+
function modelFlow(target, propertyKey, baseDescriptor) {
|
|
129
|
+
const { actionName, overrideContext } = getActionNameAndContextOverride(target, propertyKey);
|
|
130
|
+
return decorateWrapMethodOrField("modelFlow", {
|
|
131
|
+
target,
|
|
132
|
+
propertyKey,
|
|
133
|
+
baseDescriptor
|
|
134
|
+
}, (data, fn) => {
|
|
135
|
+
if (isModelFlow(fn)) {
|
|
136
|
+
return fn;
|
|
137
|
+
} else {
|
|
138
|
+
checkModelFlowArgs(data.target, data.propertyKey, fn);
|
|
139
|
+
return flow({ nameOrNameFn: actionName, generator: fn, overrideContext });
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
function checkModelFlowArgs(target, propertyKey, value) {
|
|
144
|
+
if (typeof value !== "function") {
|
|
145
|
+
throw failure("modelFlow has to be used over functions");
|
|
146
|
+
}
|
|
147
|
+
checkModelDecoratorArgs("modelFlow", target, propertyKey);
|
|
148
|
+
}
|
|
149
|
+
function _async(fn) {
|
|
150
|
+
return fn;
|
|
151
|
+
}
|
|
152
|
+
function _await(promise) {
|
|
153
|
+
return promiseGenerator.call(promise);
|
|
154
|
+
}
|
|
155
|
+
const __generator = function(thisArg, body) {
|
|
156
|
+
let _ = {
|
|
157
|
+
label: 0,
|
|
158
|
+
sent: function() {
|
|
159
|
+
if (t[0] & 1)
|
|
160
|
+
throw t[1];
|
|
161
|
+
return t[1];
|
|
162
|
+
},
|
|
163
|
+
trys: [],
|
|
164
|
+
ops: []
|
|
165
|
+
}, f, y, t, g;
|
|
166
|
+
return g = { next: verb(0), throw: verb(1), return: verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
167
|
+
return this;
|
|
168
|
+
}), g;
|
|
169
|
+
function verb(n) {
|
|
170
|
+
return function(v) {
|
|
171
|
+
return step([n, v]);
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function step(op) {
|
|
175
|
+
if (f)
|
|
176
|
+
throw new TypeError("Generator is already executing.");
|
|
177
|
+
while (_)
|
|
178
|
+
try {
|
|
179
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
|
|
180
|
+
return t;
|
|
181
|
+
if (y = 0, t)
|
|
182
|
+
op = [op[0] & 2, t.value];
|
|
183
|
+
switch (op[0]) {
|
|
184
|
+
case 0:
|
|
185
|
+
case 1:
|
|
186
|
+
t = op;
|
|
187
|
+
break;
|
|
188
|
+
case 4:
|
|
189
|
+
_.label++;
|
|
190
|
+
return { value: op[1], done: false };
|
|
191
|
+
case 5:
|
|
192
|
+
_.label++;
|
|
193
|
+
y = op[1];
|
|
194
|
+
op = [0];
|
|
195
|
+
continue;
|
|
196
|
+
case 7:
|
|
197
|
+
op = _.ops.pop();
|
|
198
|
+
_.trys.pop();
|
|
199
|
+
continue;
|
|
200
|
+
default:
|
|
201
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
202
|
+
_ = 0;
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
206
|
+
_.label = op[1];
|
|
207
|
+
break;
|
|
208
|
+
}
|
|
209
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
210
|
+
_.label = t[1];
|
|
211
|
+
t = op;
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
if (t && _.label < t[2]) {
|
|
215
|
+
_.label = t[2];
|
|
216
|
+
_.ops.push(op);
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
if (t[2])
|
|
220
|
+
_.ops.pop();
|
|
221
|
+
_.trys.pop();
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
op = body.call(thisArg, _);
|
|
225
|
+
} catch (e) {
|
|
226
|
+
op = [6, e];
|
|
227
|
+
y = 0;
|
|
228
|
+
} finally {
|
|
229
|
+
f = t = 0;
|
|
230
|
+
}
|
|
231
|
+
if (op[0] & 5)
|
|
232
|
+
throw op[1];
|
|
233
|
+
return { value: op[0] ? op[1] : void 0, done: true };
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
function promiseGenerator() {
|
|
237
|
+
let ret;
|
|
238
|
+
return __generator(this, function(_a) {
|
|
239
|
+
switch (_a.label) {
|
|
240
|
+
case 0:
|
|
241
|
+
return [4, this];
|
|
242
|
+
case 1:
|
|
243
|
+
ret = _a.sent();
|
|
244
|
+
return [2, ret];
|
|
245
|
+
default:
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
export { _async, _await, flow, isModelFlow, modelFlow };
|
|
251
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxGbG93Lm1qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjdGlvbi9tb2RlbEZsb3cudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBPIH0gZnJvbSBcInRzLXRvb2xiZWx0XCJcbmltcG9ydCB7IGNoZWNrTW9kZWxEZWNvcmF0b3JBcmdzIH0gZnJvbSBcIi4uL21vZGVsU2hhcmVkL2NoZWNrTW9kZWxEZWNvcmF0b3JBcmdzXCJcbmltcG9ydCB7IGRlY29yYXRlV3JhcE1ldGhvZE9yRmllbGQsIGZhaWx1cmUgfSBmcm9tIFwiLi4vdXRpbHNcIlxuaW1wb3J0IHsgZ2V0QWN0aW9uTmFtZUFuZENvbnRleHRPdmVycmlkZSB9IGZyb20gXCIuL2FjdGlvbkRlY29yYXRvclV0aWxzXCJcbmltcG9ydCB7IEFjdGlvbkNvbnRleHQsIEFjdGlvbkNvbnRleHRBY3Rpb25UeXBlLCBBY3Rpb25Db250ZXh0QXN5bmNTdGVwVHlwZSB9IGZyb20gXCIuL2NvbnRleHRcIlxuaW1wb3J0IHsgd3JhcEluQWN0aW9uLCBXcmFwSW5BY3Rpb25PdmVycmlkZUNvbnRleHRGbiB9IGZyb20gXCIuL3dyYXBJbkFjdGlvblwiXG5cbmNvbnN0IG1vZGVsRmxvd1N5bWJvbCA9IFN5bWJvbChcIm1vZGVsRmxvd1wiKVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmxvdzxSLCBBcmdzIGV4dGVuZHMgYW55W10+KHtcbiAgbmFtZU9yTmFtZUZuLFxuICBnZW5lcmF0b3IsXG4gIG92ZXJyaWRlQ29udGV4dCxcbn06IHtcbiAgbmFtZU9yTmFtZUZuOiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKVxuICBnZW5lcmF0b3I6ICguLi5hcmdzOiBBcmdzKSA9PiBJdGVyYWJsZUl0ZXJhdG9yPGFueT5cbiAgb3ZlcnJpZGVDb250ZXh0PzogV3JhcEluQWN0aW9uT3ZlcnJpZGVDb250ZXh0Rm5cbn0pOiAoLi4uYXJnczogQXJncykgPT4gUHJvbWlzZTxhbnk+IHtcbiAgLy8gSW1wbGVtZW50YXRpb24gYmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL3RqL2NvL2Jsb2IvbWFzdGVyL2luZGV4LmpzXG4gIGNvbnN0IGZsb3dGbiA9IGZ1bmN0aW9uICh0aGlzOiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgY29uc3QgbmFtZSA9IHR5cGVvZiBuYW1lT3JOYW1lRm4gPT09IFwiZnVuY3Rpb25cIiA/IG5hbWVPck5hbWVGbigpIDogbmFtZU9yTmFtZUZuXG5cbiAgICBjb25zdCB0YXJnZXQgPSB0aGlzXG5cbiAgICBsZXQgcHJldmlvdXNBc3luY1N0ZXBDb250ZXh0OiBBY3Rpb25Db250ZXh0IHwgdW5kZWZpbmVkXG5cbiAgICBjb25zdCBjdHhPdmVycmlkZSA9IChzdGVwVHlwZTogQWN0aW9uQ29udGV4dEFzeW5jU3RlcFR5cGUpOiBXcmFwSW5BY3Rpb25PdmVycmlkZUNvbnRleHRGbiA9PiB7XG4gICAgICByZXR1cm4gKGN0eDogTy5Xcml0YWJsZTxBY3Rpb25Db250ZXh0Piwgc2VsZikgPT4ge1xuICAgICAgICBpZiAob3ZlcnJpZGVDb250ZXh0KSB7XG4gICAgICAgICAgb3ZlcnJpZGVDb250ZXh0KGN0eCwgc2VsZilcbiAgICAgICAgfVxuXG4gICAgICAgIGN0eC5wcmV2aW91c0FzeW5jU3RlcENvbnRleHQgPSBwcmV2aW91c0FzeW5jU3RlcENvbnRleHRcbiAgICAgICAgY3R4LnNwYXduQXN5bmNTdGVwQ29udGV4dCA9IHByZXZpb3VzQXN5bmNTdGVwQ29udGV4dFxuICAgICAgICAgID8gcHJldmlvdXNBc3luY1N0ZXBDb250ZXh0LnNwYXduQXN5bmNTdGVwQ29udGV4dFxuICAgICAgICAgIDogY3R4XG4gICAgICAgIGN0eC5hc3luY1N0ZXBUeXBlID0gc3RlcFR5cGVcbiAgICAgICAgY3R4LmFyZ3MgPSBhcmdzXG5cbiAgICAgICAgcHJldmlvdXNBc3luY1N0ZXBDb250ZXh0ID0gY3R4XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGdlbmVyYXRvclJ1biA9IGZhbHNlXG4gICAgY29uc3QgZ2VuID0gd3JhcEluQWN0aW9uKHtcbiAgICAgIG5hbWVPck5hbWVGbjogbmFtZSxcbiAgICAgIGZuOiAoKSA9PiB7XG4gICAgICAgIGdlbmVyYXRvclJ1biA9IHRydWVcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5hcHBseSh0YXJnZXQsIGFyZ3MgYXMgQXJncylcbiAgICAgIH0sXG4gICAgICBhY3Rpb25UeXBlOiBBY3Rpb25Db250ZXh0QWN0aW9uVHlwZS5Bc3luYyxcbiAgICAgIG92ZXJyaWRlQ29udGV4dDogY3R4T3ZlcnJpZGUoQWN0aW9uQ29udGV4dEFzeW5jU3RlcFR5cGUuU3Bhd24pLFxuICAgIH0pLmFwcGx5KHRhcmdldClcblxuICAgIGlmICghZ2VuZXJhdG9yUnVuKSB7XG4gICAgICAvLyBtYXliZSBpdCBnb3Qgb3ZlcnJpZGRlbiBpbnRvIGEgc3luYyBhY3Rpb25cblxuICAgICAgcmV0dXJuIGdlbiBpbnN0YW5jZW9mIFByb21pc2UgPyBnZW4gOiBQcm9taXNlLnJlc29sdmUoZ2VuKVxuICAgIH1cblxuICAgIC8vIHVzZSBib3VuZCBmdW5jdGlvbnMgdG8gZml4IGVzNiBjb21waWxhdGlvblxuICAgIGNvbnN0IGdlbk5leHQgPSBnZW4ubmV4dC5iaW5kKGdlbilcbiAgICBjb25zdCBnZW5UaHJvdyA9IGdlbi50aHJvdyEuYmluZChnZW4pXG5cbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8Uj4oZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgZnVuY3Rpb24gb25GdWxmaWxsZWQocmVzOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgbGV0IHJldFxuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldCA9IHdyYXBJbkFjdGlvbih7XG4gICAgICAgICAgICBuYW1lT3JOYW1lRm46IG5hbWUsXG4gICAgICAgICAgICBmbjogZ2VuTmV4dCxcbiAgICAgICAgICAgIGFjdGlvblR5cGU6IEFjdGlvbkNvbnRleHRBY3Rpb25UeXBlLkFzeW5jLFxuICAgICAgICAgICAgb3ZlcnJpZGVDb250ZXh0OiBjdHhPdmVycmlkZShBY3Rpb25Db250ZXh0QXN5bmNTdGVwVHlwZS5SZXN1bWUpLFxuICAgICAgICAgIH0pLmNhbGwodGFyZ2V0LCByZXMpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB3cmFwSW5BY3Rpb24oe1xuICAgICAgICAgICAgbmFtZU9yTmFtZUZuOiBuYW1lLFxuICAgICAgICAgICAgZm46IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAvLyB3ZSB1c2UgYSBmbG93IGZpbmlzaGVyIHRvIGFsbG93IG1pZGRsZXdhcmVzIHRvIHR3ZWFrIHRoZSByZXR1cm4gdmFsdWUgYmVmb3JlIHJlc29sdXRpb25cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICB2YWx1ZTogZXJyLFxuICAgICAgICAgICAgICAgIHJlc29sdXRpb246IFwicmVqZWN0XCIsXG5cbiAgICAgICAgICAgICAgICBhY2NlcHRlcjogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICByZWplY3RlcjogcmVqZWN0LFxuICAgICAgICAgICAgICB9IGFzIEZsb3dGaW5pc2hlclxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjdGlvblR5cGU6IEFjdGlvbkNvbnRleHRBY3Rpb25UeXBlLkFzeW5jLFxuICAgICAgICAgICAgb3ZlcnJpZGVDb250ZXh0OiBjdHhPdmVycmlkZShBY3Rpb25Db250ZXh0QXN5bmNTdGVwVHlwZS5UaHJvdyksXG4gICAgICAgICAgICBpc0Zsb3dGaW5pc2hlcjogdHJ1ZSxcbiAgICAgICAgICB9KS5jYWxsKHRhcmdldCwgZSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIG5leHQocmV0KVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBvblJlamVjdGVkKGVycjogYW55KTogdm9pZCB7XG4gICAgICAgIGxldCByZXRcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXQgPSB3cmFwSW5BY3Rpb24oe1xuICAgICAgICAgICAgbmFtZU9yTmFtZUZuOiBuYW1lLFxuICAgICAgICAgICAgZm46IGdlblRocm93LFxuICAgICAgICAgICAgYWN0aW9uVHlwZTogQWN0aW9uQ29udGV4dEFjdGlvblR5cGUuQXN5bmMsXG4gICAgICAgICAgICBvdmVycmlkZUNvbnRleHQ6IGN0eE92ZXJyaWRlKEFjdGlvbkNvbnRleHRBc3luY1N0ZXBUeXBlLlJlc3VtZUVycm9yKSxcbiAgICAgICAgICB9KS5jYWxsKHRhcmdldCwgZXJyKVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgd3JhcEluQWN0aW9uKHtcbiAgICAgICAgICAgIG5hbWVPck5hbWVGbjogbmFtZSxcbiAgICAgICAgICAgIGZuOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgLy8gd2UgdXNlIGEgZmxvdyBmaW5pc2hlciB0byBhbGxvdyBtaWRkbGV3YXJlcyB0byB0d2VhayB0aGUgcmV0dXJuIHZhbHVlIGJlZm9yZSByZXNvbHV0aW9uXG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IGVycixcbiAgICAgICAgICAgICAgICByZXNvbHV0aW9uOiBcInJlamVjdFwiLFxuXG4gICAgICAgICAgICAgICAgYWNjZXB0ZXI6IHJlc29sdmUsXG4gICAgICAgICAgICAgICAgcmVqZWN0ZXI6IHJlamVjdCxcbiAgICAgICAgICAgICAgfSBhcyBGbG93RmluaXNoZXJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhY3Rpb25UeXBlOiBBY3Rpb25Db250ZXh0QWN0aW9uVHlwZS5Bc3luYyxcbiAgICAgICAgICAgIG92ZXJyaWRlQ29udGV4dDogY3R4T3ZlcnJpZGUoQWN0aW9uQ29udGV4dEFzeW5jU3RlcFR5cGUuVGhyb3cpLFxuICAgICAgICAgICAgaXNGbG93RmluaXNoZXI6IHRydWUsXG4gICAgICAgICAgfSkuY2FsbCh0YXJnZXQsIGUpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICBuZXh0KHJldClcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gbmV4dChyZXQ6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAocmV0ICYmIHR5cGVvZiByZXQudGhlbiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgLy8gYW4gYXN5bmMgaXRlcmF0b3JcbiAgICAgICAgICByZXQudGhlbihuZXh0LCByZWplY3QpXG4gICAgICAgIH0gZWxzZSBpZiAocmV0LmRvbmUpIHtcbiAgICAgICAgICAvLyBkb25lXG4gICAgICAgICAgd3JhcEluQWN0aW9uKHtcbiAgICAgICAgICAgIG5hbWVPck5hbWVGbjogbmFtZSxcbiAgICAgICAgICAgIGZuOiAodmFsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgLy8gd2UgdXNlIGEgZmxvdyBmaW5pc2hlciB0byBhbGxvdyBtaWRkbGV3YXJlcyB0byB0d2VhayB0aGUgcmV0dXJuIHZhbHVlIGJlZm9yZSByZXNvbHV0aW9uXG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHZhbCxcbiAgICAgICAgICAgICAgICByZXNvbHV0aW9uOiBcImFjY2VwdFwiLFxuXG4gICAgICAgICAgICAgICAgYWNjZXB0ZXI6IHJlc29sdmUsXG4gICAgICAgICAgICAgICAgcmVqZWN0ZXI6IHJlamVjdCxcbiAgICAgICAgICAgICAgfSBhcyBGbG93RmluaXNoZXJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhY3Rpb25UeXBlOiBBY3Rpb25Db250ZXh0QWN0aW9uVHlwZS5Bc3luYyxcbiAgICAgICAgICAgIG92ZXJyaWRlQ29udGV4dDogY3R4T3ZlcnJpZGUoQWN0aW9uQ29udGV4dEFzeW5jU3RlcFR5cGUuUmV0dXJuKSxcbiAgICAgICAgICAgIGlzRmxvd0ZpbmlzaGVyOiB0cnVlLFxuICAgICAgICAgIH0pLmNhbGwodGFyZ2V0LCByZXQudmFsdWUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gY29udGludWVcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUocmV0LnZhbHVlKS50aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIG9uRnVsZmlsbGVkKHVuZGVmaW5lZCkgLy8ga2ljayBvZmYgdGhlIHByb2Nlc3NcbiAgICB9KVxuXG4gICAgcmV0dXJuIHByb21pc2VcbiAgfVxuICA7KGZsb3dGbiBhcyBhbnkpW21vZGVsRmxvd1N5bWJvbF0gPSB0cnVlXG5cbiAgcmV0dXJuIGZsb3dGblxufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZsb3dGaW5pc2hlciB7XG4gIHZhbHVlOiBhbnlcbiAgcmVzb2x1dGlvbjogXCJhY2NlcHRcIiB8IFwicmVqZWN0XCJcblxuICBhY2NlcHRlcih2YWx1ZTogYW55KTogdm9pZFxuICByZWplY3Rlcih2YWx1ZTogYW55KTogdm9pZFxufVxuXG4vKipcbiAqIFJldHVybnMgaWYgdGhlIGdpdmVuIGZ1bmN0aW9uIGlzIGEgbW9kZWwgZmxvdyBvciBub3QuXG4gKlxuICogQHBhcmFtIGZuIEZ1bmN0aW9uIHRvIGNoZWNrLlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTW9kZWxGbG93KGZuOiB1bmtub3duKSB7XG4gIHJldHVybiB0eXBlb2YgZm4gPT09IFwiZnVuY3Rpb25cIiAmJiBtb2RlbEZsb3dTeW1ib2wgaW4gZm5cbn1cblxuLyoqXG4gKiBEZWNvcmF0b3IgdGhhdCB0dXJucyBhIGZ1bmN0aW9uIGdlbmVyYXRvciBpbnRvIGEgbW9kZWwgZmxvdy5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0XG4gKiBAcGFyYW0gcHJvcGVydHlLZXlcbiAqIEBwYXJhbSBbYmFzZURlc2NyaXB0b3JdXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbW9kZWxGbG93KFxuICB0YXJnZXQ6IGFueSxcbiAgcHJvcGVydHlLZXk6IHN0cmluZyxcbiAgYmFzZURlc2NyaXB0b3I/OiBQcm9wZXJ0eURlc2NyaXB0b3Jcbik6IHZvaWQge1xuICBjb25zdCB7IGFjdGlvbk5hbWUsIG92ZXJyaWRlQ29udGV4dCB9ID0gZ2V0QWN0aW9uTmFtZUFuZENvbnRleHRPdmVycmlkZSh0YXJnZXQsIHByb3BlcnR5S2V5KVxuXG4gIHJldHVybiBkZWNvcmF0ZVdyYXBNZXRob2RPckZpZWxkKFxuICAgIFwibW9kZWxGbG93XCIsXG4gICAge1xuICAgICAgdGFyZ2V0LFxuICAgICAgcHJvcGVydHlLZXksXG4gICAgICBiYXNlRGVzY3JpcHRvcixcbiAgICB9LFxuICAgIChkYXRhLCBmbikgPT4ge1xuICAgICAgaWYgKGlzTW9kZWxGbG93KGZuKSkge1xuICAgICAgICByZXR1cm4gZm5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNoZWNrTW9kZWxGbG93QXJncyhkYXRhLnRhcmdldCwgZGF0YS5wcm9wZXJ0eUtleSwgZm4pXG5cbiAgICAgICAgcmV0dXJuIGZsb3coeyBuYW1lT3JOYW1lRm46IGFjdGlvbk5hbWUsIGdlbmVyYXRvcjogZm4sIG92ZXJyaWRlQ29udGV4dCB9KVxuICAgICAgfVxuICAgIH1cbiAgKVxufVxuXG5mdW5jdGlvbiBjaGVja01vZGVsRmxvd0FyZ3ModGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdGhyb3cgZmFpbHVyZShcIm1vZGVsRmxvdyBoYXMgdG8gYmUgdXNlZCBvdmVyIGZ1bmN0aW9uc1wiKVxuICB9XG4gIGNoZWNrTW9kZWxEZWNvcmF0b3JBcmdzKFwibW9kZWxGbG93XCIsIHRhcmdldCwgcHJvcGVydHlLZXkpXG59XG5cbi8qKlxuICogVHJpY2tzIHRoZSBUUyBjb21waWxlciBpbnRvIHRoaW5raW5nIHRoYXQgYSBtb2RlbCBmbG93IGdlbmVyYXRvciBmdW5jdGlvbiBjYW4gYmUgYXdhaXRlZFxuICogKGlzIGEgcHJvbWlzZSkuXG4gKlxuICogQHR5cGVwYXJhbSBBIEZ1bmN0aW9uIGFyZ3VtZW50cy5cbiAqIEB0eXBlcGFyYW0gUiBSZXR1cm4gdmFsdWUuXG4gKiBAcGFyYW0gZm4gRmxvdyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBfYXN5bmM8QSBleHRlbmRzIGFueVtdLCBSPihcbiAgZm46ICguLi5hcmdzOiBBKSA9PiBHZW5lcmF0b3I8YW55LCBSLCBhbnk+XG4pOiAoLi4uYXJnczogQSkgPT4gUHJvbWlzZTxSPiB7XG4gIHJldHVybiBmbiBhcyBhbnlcbn1cblxuLyoqXG4gKiBNYWtlcyBhIHByb21pc2UgYSBmbG93LCBzbyBpdCBjYW4gYmUgYXdhaXRlZCB3aXRoIHlpZWxkKi5cbiAqXG4gKiBAdHlwZXBhcmFtIFQgUHJvbWlzZSByZXR1cm4gdHlwZS5cbiAqIEBwYXJhbSBwcm9taXNlIFByb21pc2UuXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gX2F3YWl0PFQ+KHByb21pc2U6IFByb21pc2U8VD4pOiBHZW5lcmF0b3I8UHJvbWlzZTxUPiwgVCwgdW5rbm93bj4ge1xuICByZXR1cm4gcHJvbWlzZUdlbmVyYXRvci5jYWxsKHByb21pc2UpXG59XG5cbi8qXG5mdW5jdGlvbiogcHJvbWlzZUdlbmVyYXRvcjxUPihcbiAgdGhpczogUHJvbWlzZTxUPlxuKSB7XG4gIGNvbnN0IHJldDogVCA9IHlpZWxkIHRoaXNcbiAgcmV0dXJuIHJldFxufVxuKi9cblxuLy8gYWJvdmUgY29kZSBidXQgY29tcGlsZWQgYnkgVFMgZm9yIEVTNVxuLy8gc28gd2UgZG9uJ3QgaW5jbHVkZSBhIGRlcGVuZGVuY3kgdG8gcmVnZW5lcmF0b3IgcnVudGltZVxuXG5jb25zdCBfX2dlbmVyYXRvciA9IGZ1bmN0aW9uICh0aGlzQXJnOiBhbnksIGJvZHk6IGFueSkge1xuICBsZXQgXzogYW55ID0ge1xuICAgICAgbGFiZWw6IDAsXG4gICAgICBzZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXVxuICAgICAgICByZXR1cm4gdFsxXVxuICAgICAgfSxcbiAgICAgIHRyeXM6IFtdLFxuICAgICAgb3BzOiBbXSxcbiAgICB9LFxuICAgIGY6IGFueSxcbiAgICB5OiBhbnksXG4gICAgdDogYW55LFxuICAgIGc6IGFueVxuICByZXR1cm4gKFxuICAgIChnID0geyBuZXh0OiB2ZXJiKDApLCB0aHJvdzogdmVyYigxKSwgcmV0dXJuOiB2ZXJiKDIpIH0pLFxuICAgIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJlxuICAgICAgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXNcbiAgICAgIH0pLFxuICAgIGdcbiAgKVxuICBmdW5jdGlvbiB2ZXJiKG46IGFueSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAodjogYW55KSB7XG4gICAgICByZXR1cm4gc3RlcChbbiwgdl0pXG4gICAgfVxuICB9XG4gIGZ1bmN0aW9uIHN0ZXAob3A6IGFueSkge1xuICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKVxuICAgIHdoaWxlIChfKVxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICgoZiA9IDEpLFxuICAgICAgICAgIHkgJiZcbiAgICAgICAgICAgICh0ID1cbiAgICAgICAgICAgICAgb3BbMF0gJiAyXG4gICAgICAgICAgICAgICAgPyB5W1wicmV0dXJuXCJdXG4gICAgICAgICAgICAgICAgOiBvcFswXVxuICAgICAgICAgICAgICAgID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMClcbiAgICAgICAgICAgICAgICA6IHkubmV4dCkgJiZcbiAgICAgICAgICAgICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpXG4gICAgICAgIClcbiAgICAgICAgICByZXR1cm4gdFxuICAgICAgICBpZiAoKCh5ID0gMCksIHQpKSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdXG4gICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgdCA9IG9wXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIF8ubGFiZWwrK1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9XG4gICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgXy5sYWJlbCsrXG4gICAgICAgICAgICB5ID0gb3BbMV1cbiAgICAgICAgICAgIG9wID0gWzBdXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgIG9wID0gXy5vcHMucG9wKClcbiAgICAgICAgICAgIF8udHJ5cy5wb3AoKVxuICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAhKCh0ID0gXy50cnlzKSwgKHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSkgJiZcbiAgICAgICAgICAgICAgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIF8gPSAwXG4gICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHtcbiAgICAgICAgICAgICAgXy5sYWJlbCA9IG9wWzFdXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHtcbiAgICAgICAgICAgICAgXy5sYWJlbCA9IHRbMV1cbiAgICAgICAgICAgICAgdCA9IG9wXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkge1xuICAgICAgICAgICAgICBfLmxhYmVsID0gdFsyXVxuICAgICAgICAgICAgICBfLm9wcy5wdXNoKG9wKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpXG4gICAgICAgICAgICBfLnRyeXMucG9wKClcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXylcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgb3AgPSBbNiwgZV1cbiAgICAgICAgeSA9IDBcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGYgPSB0ID0gMFxuICAgICAgfVxuICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdXG4gICAgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb21pc2VHZW5lcmF0b3IodGhpczogUHJvbWlzZTxhbnk+KSB7XG4gIGxldCByZXRcbiAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uICh0aGlzOiBhbnksIF9hOiBhbnkpIHtcbiAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIHRoaXNdXG4gICAgICBjYXNlIDE6XG4gICAgICAgIHJldCA9IF9hLnNlbnQoKVxuICAgICAgICByZXR1cm4gWzIgLypyZXR1cm4qLywgcmV0XVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuXG4gICAgfVxuICB9KVxufVxuIl0sIm5hbWVzIjpbXSwibWFw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
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { getCurrentActionContext } from "./context.mjs";
|
|
2
|
+
import { getActionProtection } from "./protection.mjs";
|
|
3
|
+
const pendingActions = [];
|
|
4
|
+
function isActionRunning() {
|
|
5
|
+
return !getActionProtection() || getCurrentActionContext();
|
|
6
|
+
}
|
|
7
|
+
function enqueuePendingAction(action) {
|
|
8
|
+
if (isActionRunning()) {
|
|
9
|
+
pendingActions.push(action);
|
|
10
|
+
} else {
|
|
11
|
+
action();
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
let pendingActionsRunning = false;
|
|
15
|
+
function tryRunPendingActions() {
|
|
16
|
+
if (isActionRunning() || pendingActionsRunning) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
pendingActionsRunning = true;
|
|
20
|
+
try {
|
|
21
|
+
while (pendingActions.length > 0) {
|
|
22
|
+
const nextAction = pendingActions.shift();
|
|
23
|
+
nextAction();
|
|
24
|
+
}
|
|
25
|
+
} finally {
|
|
26
|
+
pendingActionsRunning = false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export { enqueuePendingAction, tryRunPendingActions };
|
|
30
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVuZGluZ0FjdGlvbnMubWpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN0aW9uL3BlbmRpbmdBY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldEN1cnJlbnRBY3Rpb25Db250ZXh0IH0gZnJvbSBcIi4vY29udGV4dFwiXG5pbXBvcnQgeyBnZXRBY3Rpb25Qcm90ZWN0aW9uIH0gZnJvbSBcIi4vcHJvdGVjdGlvblwiXG5cbmNvbnN0IHBlbmRpbmdBY3Rpb25zOiAoKCkgPT4gdm9pZClbXSA9IFtdXG5cbmZ1bmN0aW9uIGlzQWN0aW9uUnVubmluZygpIHtcbiAgcmV0dXJuICFnZXRBY3Rpb25Qcm90ZWN0aW9uKCkgfHwgZ2V0Q3VycmVudEFjdGlvbkNvbnRleHQoKVxufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5xdWV1ZVBlbmRpbmdBY3Rpb24oYWN0aW9uOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gIC8vIGRlbGF5IGFjdGlvbiB1bnRpbCBhbGwgY3VycmVudCBhY3Rpb25zIGFyZSBmaW5pc2hlZFxuICBpZiAoaXNBY3Rpb25SdW5uaW5nKCkpIHtcbiAgICBwZW5kaW5nQWN0aW9ucy5wdXNoKGFjdGlvbilcbiAgfSBlbHNlIHtcbiAgICBhY3Rpb24oKVxuICB9XG59XG5cbmxldCBwZW5kaW5nQWN0aW9uc1J1bm5pbmcgPSBmYWxzZVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJ5UnVuUGVuZGluZ0FjdGlvbnMoKTogdm9pZCB7XG4gIGlmIChpc0FjdGlvblJ1bm5pbmcoKSB8fCBwZW5kaW5nQWN0aW9uc1J1bm5pbmcpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIHBlbmRpbmdBY3Rpb25zUnVubmluZyA9IHRydWVcblxuICB0cnkge1xuICAgIHdoaWxlIChwZW5kaW5nQWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBuZXh0QWN0aW9uID0gcGVuZGluZ0FjdGlvbnMuc2hpZnQoKSFcbiAgICAgIG5leHRBY3Rpb24oKVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBwZW5kaW5nQWN0aW9uc1J1bm5pbmcgPSBmYWxzZVxuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSxNQUFNLGlCQUFpQztBQUV2QztTQUNTLENBQUMseUJBQXlCO0FBQ25DOzhCQUtxQztNQUUvQixtQkFBbUI7bUJBQ04sS0FBSyxNQUFNO0FBQUEsU0FDckI7OztBQUdUO0FBRUEsSUFBSSx3QkFBd0I7O01BTXRCLHFCQUFxQix1QkFBdUI7OzswQkFJeEI7TUFFcEI7V0FDSyxlQUFlLFNBQVMsR0FBRztZQUMxQixhQUFhLGVBQWU7Ozs7NEJBSVo7QUFBQTtBQUU1Qjs7In0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { failure } from "../utils/index.mjs";
|
|
2
|
+
import { getCurrentActionContext } from "./context.mjs";
|
|
3
|
+
function canWrite() {
|
|
4
|
+
return !getActionProtection() || !!getCurrentActionContext();
|
|
5
|
+
}
|
|
6
|
+
function assertCanWrite() {
|
|
7
|
+
if (!canWrite()) {
|
|
8
|
+
throw failure("data changes must be performed inside model actions");
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
let actionProtection = true;
|
|
12
|
+
function getActionProtection() {
|
|
13
|
+
return actionProtection;
|
|
14
|
+
}
|
|
15
|
+
function setActionProtection(protection) {
|
|
16
|
+
actionProtection = protection;
|
|
17
|
+
}
|
|
18
|
+
export { assertCanWrite, getActionProtection, setActionProtection };
|
|
19
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdGVjdGlvbi5tanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hY3Rpb24vcHJvdGVjdGlvbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmYWlsdXJlIH0gZnJvbSBcIi4uL3V0aWxzXCJcbmltcG9ydCB7IGdldEN1cnJlbnRBY3Rpb25Db250ZXh0IH0gZnJvbSBcIi4vY29udGV4dFwiXG5cbmZ1bmN0aW9uIGNhbldyaXRlKCk6IGJvb2xlYW4ge1xuICByZXR1cm4gIWdldEFjdGlvblByb3RlY3Rpb24oKSB8fCAhIWdldEN1cnJlbnRBY3Rpb25Db250ZXh0KClcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydENhbldyaXRlKCkge1xuICBpZiAoIWNhbldyaXRlKCkpIHtcbiAgICB0aHJvdyBmYWlsdXJlKFwiZGF0YSBjaGFuZ2VzIG11c3QgYmUgcGVyZm9ybWVkIGluc2lkZSBtb2RlbCBhY3Rpb25zXCIpXG4gIH1cbn1cblxubGV0IGFjdGlvblByb3RlY3Rpb24gPSB0cnVlXG5cbi8qKlxuICogQGludGVybmFsXG4gKlxuICogR2V0cyBpZiB0aGUgYWN0aW9uIHByb3RlY3Rpb24gaXMgY3VycmVudGx5IGVuYWJsZWQgb3Igbm90LlxuICpcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY3Rpb25Qcm90ZWN0aW9uKCkge1xuICByZXR1cm4gYWN0aW9uUHJvdGVjdGlvblxufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICpcbiAqIFNldHMgaWYgdGhlIGFjdGlvbiBwcm90ZWN0aW9uIGlzIGN1cnJlbnRseSBlbmFibGVkIG9yIG5vdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEFjdGlvblByb3RlY3Rpb24ocHJvdGVjdGlvbjogYm9vbGVhbikge1xuICBhY3Rpb25Qcm90ZWN0aW9uID0gcHJvdGVjdGlvblxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0E7U0FDUyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDckM7O01BTU0sQ0FBQyxZQUFZO1VBQ1QsUUFBUSxxREFBcUQ7QUFBQTtBQUV2RTtBQUVBLElBQUksbUJBQW1COztTQVVkO0FBQ1Q7NkJBT29DO3FCQUNmO0FBQ3JCOzsifQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { action } from "mobx";
|
|
2
|
+
import { tryRunPendingActions } from "./pendingActions.mjs";
|
|
3
|
+
import { setActionProtection, getActionProtection } from "./protection.mjs";
|
|
4
|
+
function runUnprotected(arg1, arg2) {
|
|
5
|
+
const name = typeof arg1 === "string" ? arg1 : void 0;
|
|
6
|
+
const fn = typeof arg1 === "string" ? arg2 : arg1;
|
|
7
|
+
const innerAction = () => {
|
|
8
|
+
const oldActionProtection = getActionProtection();
|
|
9
|
+
setActionProtection(false);
|
|
10
|
+
try {
|
|
11
|
+
return fn();
|
|
12
|
+
} finally {
|
|
13
|
+
setActionProtection(oldActionProtection);
|
|
14
|
+
tryRunPendingActions();
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
if (name) {
|
|
18
|
+
return action(name, innerAction)();
|
|
19
|
+
} else {
|
|
20
|
+
return action(innerAction)();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export { runUnprotected };
|
|
24
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuVW5wcm90ZWN0ZWQubWpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWN0aW9uL3J1blVucHJvdGVjdGVkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFjdGlvbiB9IGZyb20gXCJtb2J4XCJcbmltcG9ydCB7IHRyeVJ1blBlbmRpbmdBY3Rpb25zIH0gZnJvbSBcIi4vcGVuZGluZ0FjdGlvbnNcIlxuaW1wb3J0IHsgZ2V0QWN0aW9uUHJvdGVjdGlvbiwgc2V0QWN0aW9uUHJvdGVjdGlvbiB9IGZyb20gXCIuL3Byb3RlY3Rpb25cIlxuXG4vKipcbiAqIFJ1bnMgYSBibG9jayBpbiB1bnByb2N0ZWQgbW9kZSwgYXMgaWYgaXQgd2VyZSBydW4gaW5zaWRlIGEgbW9kZWwgYWN0aW9uLlxuICogQ29uc2lkZXIgdXNpbmcgYSBwcm9wZXIgbW9kZWwgYWN0aW9uIGluc3RlYWQgc2luY2UgdGhlc2Uga2luZCBvZiBhY3Rpb25zIGFyZSBub3QgcmVjb3JkZWQuXG4gKlxuICogQHR5cGVwYXJhbSBUIFJldHVybiB0eXBlLlxuICogQHBhcmFtIG5hbWUgTW9ieCBhY3Rpb24gbmFtZS5cbiAqIEBwYXJhbSBmbiBBY3Rpb24gYmxvY2suXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuVW5wcm90ZWN0ZWQ8VD4obmFtZTogc3RyaW5nLCBmbjogKCkgPT4gVCk6IFRcblxuLyoqXG4gKiBSdW5zIGEgYmxvY2sgaW4gdW5wcm9jdGVkIG1vZGUsIGFzIGlmIGl0IHdlcmUgcnVuIGluc2lkZSBhIG1vZGVsIGFjdGlvbi5cbiAqIENvbnNpZGVyIHVzaW5nIGEgcHJvcGVyIG1vZGVsIGFjdGlvbiBpbnN0ZWFkIHNpbmNlIHRoZXNlIGtpbmQgb2YgYWN0aW9ucyBhcmUgbm90IHJlY29yZGVkLlxuICpcbiAqIEB0eXBlcGFyYW0gVCBSZXR1cm4gdHlwZS5cbiAqIEBwYXJhbSBmbiBBY3Rpb24gYmxvY2suXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuVW5wcm90ZWN0ZWQ8VD4oZm46ICgpID0+IFQpOiBUXG5cbi8vIGJhc2UgY2FzZVxuZXhwb3J0IGZ1bmN0aW9uIHJ1blVucHJvdGVjdGVkPFQ+KGFyZzE6IGFueSwgYXJnMj86IGFueSk6IFQge1xuICBjb25zdCBuYW1lID0gdHlwZW9mIGFyZzEgPT09IFwic3RyaW5nXCIgPyBhcmcxIDogdW5kZWZpbmVkXG4gIGNvbnN0IGZuOiAoKSA9PiBUID0gdHlwZW9mIGFyZzEgPT09IFwic3RyaW5nXCIgPyBhcmcyIDogYXJnMVxuXG4gIGNvbnN0IGlubmVyQWN0aW9uID0gKCkgPT4ge1xuICAgIGNvbnN0IG9sZEFjdGlvblByb3RlY3Rpb24gPSBnZXRBY3Rpb25Qcm90ZWN0aW9uKClcbiAgICBzZXRBY3Rpb25Qcm90ZWN0aW9uKGZhbHNlKVxuXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmbigpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldEFjdGlvblByb3RlY3Rpb24ob2xkQWN0aW9uUHJvdGVjdGlvbilcblxuICAgICAgdHJ5UnVuUGVuZGluZ0FjdGlvbnMoKVxuICAgIH1cbiAgfVxuXG4gIGlmIChuYW1lKSB7XG4gICAgcmV0dXJuIGFjdGlvbihuYW1lLCBpbm5lckFjdGlvbikoKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBhY3Rpb24oaW5uZXJBY3Rpb24pKClcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozt3QkEwQmtDLE1BQVc7UUFDckMsT0FBTyxPQUFPLFNBQVMsV0FBVyxPQUFPO1FBQ3pDLEtBQWMsT0FBTyxTQUFTLFdBQVcsT0FBTztRQUVoRCxjQUFjO1VBQ1osc0JBQXNCO3dCQUNSLEtBQUs7UUFFckI7YUFDSzs7MEJBRWEsbUJBQW1COzs7O01BTXZDLE1BQU07V0FDRCxPQUFPLE1BQU0sV0FBVztTQUMxQjtXQUNFLE9BQU8sV0FBVzs7QUFFN0I7OyJ9
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { action } from "mobx";
|
|
2
|
+
import { setCurrentActionContext, ActionContextActionType, getCurrentActionContext } from "./context.mjs";
|
|
3
|
+
import { modelActionSymbol, isModelAction } from "./isModelAction.mjs";
|
|
4
|
+
import { getActionMiddlewares } from "./middleware.mjs";
|
|
5
|
+
import { tryRunPendingActions } from "./pendingActions.mjs";
|
|
6
|
+
function wrapInAction({ nameOrNameFn, fn, actionType, overrideContext, isFlowFinisher = false }) {
|
|
7
|
+
let fnInAction = false;
|
|
8
|
+
const wrappedAction = function() {
|
|
9
|
+
const name = typeof nameOrNameFn === "function" ? nameOrNameFn() : nameOrNameFn;
|
|
10
|
+
if (!fnInAction) {
|
|
11
|
+
fnInAction = true;
|
|
12
|
+
fn = action(name, fn);
|
|
13
|
+
}
|
|
14
|
+
const target = this;
|
|
15
|
+
const parentContext = getCurrentActionContext();
|
|
16
|
+
const context = {
|
|
17
|
+
actionName: name,
|
|
18
|
+
type: actionType,
|
|
19
|
+
target,
|
|
20
|
+
args: Array.from(arguments),
|
|
21
|
+
parentContext,
|
|
22
|
+
data: {},
|
|
23
|
+
rootContext: void 0
|
|
24
|
+
};
|
|
25
|
+
if (overrideContext) {
|
|
26
|
+
overrideContext(context, this);
|
|
27
|
+
}
|
|
28
|
+
if (!context.rootContext) {
|
|
29
|
+
if (context.previousAsyncStepContext) {
|
|
30
|
+
context.rootContext = context.previousAsyncStepContext.rootContext;
|
|
31
|
+
} else if (context.parentContext) {
|
|
32
|
+
context.rootContext = context.parentContext.rootContext;
|
|
33
|
+
} else {
|
|
34
|
+
context.rootContext = context;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
setCurrentActionContext(context);
|
|
38
|
+
let mwareFn = fn.bind(target, ...arguments);
|
|
39
|
+
const mwareIter = getActionMiddlewares(context.target)[Symbol.iterator]();
|
|
40
|
+
let mwareCur = mwareIter.next();
|
|
41
|
+
while (!mwareCur.done) {
|
|
42
|
+
const mware = mwareCur.value;
|
|
43
|
+
const filterPassed = mware.filter ? mware.filter(context) : true;
|
|
44
|
+
if (filterPassed) {
|
|
45
|
+
mwareFn = mware.middleware.bind(void 0, context, mwareFn);
|
|
46
|
+
}
|
|
47
|
+
mwareCur = mwareIter.next();
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
const ret = mwareFn();
|
|
51
|
+
if (isFlowFinisher) {
|
|
52
|
+
const flowFinisher = ret;
|
|
53
|
+
const value = flowFinisher.value;
|
|
54
|
+
if (flowFinisher.resolution === "accept") {
|
|
55
|
+
flowFinisher.accepter(value);
|
|
56
|
+
} else {
|
|
57
|
+
flowFinisher.rejecter(value);
|
|
58
|
+
}
|
|
59
|
+
return value;
|
|
60
|
+
} else {
|
|
61
|
+
return ret;
|
|
62
|
+
}
|
|
63
|
+
} finally {
|
|
64
|
+
setCurrentActionContext(context.parentContext);
|
|
65
|
+
tryRunPendingActions();
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
wrappedAction[modelActionSymbol] = true;
|
|
69
|
+
return wrappedAction;
|
|
70
|
+
}
|
|
71
|
+
function wrapModelMethodInActionIfNeeded(model, propertyKey, name) {
|
|
72
|
+
const fn = model[propertyKey];
|
|
73
|
+
if (isModelAction(fn)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const wrappedFn = wrapInAction({
|
|
77
|
+
nameOrNameFn: name,
|
|
78
|
+
fn,
|
|
79
|
+
actionType: ActionContextActionType.Sync
|
|
80
|
+
});
|
|
81
|
+
const proto = Object.getPrototypeOf(model);
|
|
82
|
+
const protoFn = proto[propertyKey];
|
|
83
|
+
if (protoFn === fn) {
|
|
84
|
+
proto[propertyKey] = wrappedFn;
|
|
85
|
+
} else {
|
|
86
|
+
model[propertyKey] = wrappedFn;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
export { wrapInAction, wrapModelMethodInActionIfNeeded };
|
|
90
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcEluQWN0aW9uLm1qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FjdGlvbi93cmFwSW5BY3Rpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWN0aW9uIH0gZnJvbSBcIm1vYnhcIlxuaW1wb3J0IHR5cGUgeyBPIH0gZnJvbSBcInRzLXRvb2xiZWx0XCJcbmltcG9ydCB0eXBlIHsgQW55RGF0YU1vZGVsIH0gZnJvbSBcIi4uL2RhdGFNb2RlbC9CYXNlRGF0YU1vZGVsXCJcbmltcG9ydCB0eXBlIHsgQW55TW9kZWwgfSBmcm9tIFwiLi4vbW9kZWwvQmFzZU1vZGVsXCJcbmltcG9ydCB7XG4gIEFjdGlvbkNvbnRleHQsXG4gIEFjdGlvbkNvbnRleHRBY3Rpb25UeXBlLFxuICBnZXRDdXJyZW50QWN0aW9uQ29udGV4dCxcbiAgc2V0Q3VycmVudEFjdGlvbkNvbnRleHQsXG59IGZyb20gXCIuL2NvbnRleHRcIlxuaW1wb3J0IHsgaXNNb2RlbEFjdGlvbiwgbW9kZWxBY3Rpb25TeW1ib2wgfSBmcm9tIFwiLi9pc01vZGVsQWN0aW9uXCJcbmltcG9ydCB7IGdldEFjdGlvbk1pZGRsZXdhcmVzIH0gZnJvbSBcIi4vbWlkZGxld2FyZVwiXG5pbXBvcnQgdHlwZSB7IEZsb3dGaW5pc2hlciB9IGZyb20gXCIuL21vZGVsRmxvd1wiXG5pbXBvcnQgeyB0cnlSdW5QZW5kaW5nQWN0aW9ucyB9IGZyb20gXCIuL3BlbmRpbmdBY3Rpb25zXCJcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IHR5cGUgV3JhcEluQWN0aW9uT3ZlcnJpZGVDb250ZXh0Rm4gPSAoY3R4OiBPLldyaXRhYmxlPEFjdGlvbkNvbnRleHQ+LCBzZWxmOiBhbnkpID0+IHZvaWRcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdyYXBJbkFjdGlvbjxUIGV4dGVuZHMgRnVuY3Rpb24+KHtcbiAgbmFtZU9yTmFtZUZuLFxuICBmbixcbiAgYWN0aW9uVHlwZSxcbiAgb3ZlcnJpZGVDb250ZXh0LFxuICBpc0Zsb3dGaW5pc2hlciA9IGZhbHNlLFxufToge1xuICBuYW1lT3JOYW1lRm46IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpXG4gIGZuOiBUXG4gIGFjdGlvblR5cGU6IEFjdGlvbkNvbnRleHRBY3Rpb25UeXBlXG4gIG92ZXJyaWRlQ29udGV4dD86IFdyYXBJbkFjdGlvbk92ZXJyaWRlQ29udGV4dEZuXG4gIGlzRmxvd0ZpbmlzaGVyPzogYm9vbGVhblxufSk6IFQge1xuICBsZXQgZm5JbkFjdGlvbiA9IGZhbHNlXG5cbiAgY29uc3Qgd3JhcHBlZEFjdGlvbiA9IGZ1bmN0aW9uICh0aGlzOiBhbnkpIHtcbiAgICBjb25zdCBuYW1lID0gdHlwZW9mIG5hbWVPck5hbWVGbiA9PT0gXCJmdW5jdGlvblwiID8gbmFtZU9yTmFtZUZuKCkgOiBuYW1lT3JOYW1lRm5cblxuICAgIGlmICghZm5JbkFjdGlvbikge1xuICAgICAgZm5JbkFjdGlvbiA9IHRydWVcblxuICAgICAgLy8gd2UgbmVlZCB0byBtYWtlIG9ubHkgaW5uZXIgYWN0aW9ucyBhY3R1YWwgbW9ieCBhY3Rpb25zXG4gICAgICAvLyBzbyByZWFjdGlvbnMgKGUuZy4gcmVmZXJlbmNlIGRldGFjaGluZykgYXJlIHBpY2tlZCB1cCBpbiB0aGVcbiAgICAgIC8vIHJpZ2h0IGNvbnRleHRcbiAgICAgIGZuID0gYWN0aW9uKG5hbWUsIGZuKVxuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldCA9IHRoaXNcblxuICAgIGNvbnN0IHBhcmVudENvbnRleHQgPSBnZXRDdXJyZW50QWN0aW9uQ29udGV4dCgpXG5cbiAgICBjb25zdCBjb250ZXh0OiBPLldyaXRhYmxlPEFjdGlvbkNvbnRleHQ+ID0ge1xuICAgICAgYWN0aW9uTmFtZTogbmFtZSxcbiAgICAgIHR5cGU6IGFjdGlvblR5cGUsXG4gICAgICB0YXJnZXQsXG4gICAgICBhcmdzOiBBcnJheS5mcm9tKGFyZ3VtZW50cyksXG4gICAgICBwYXJlbnRDb250ZXh0LFxuICAgICAgZGF0YToge30sXG4gICAgICByb290Q29udGV4dDogdW5kZWZpbmVkIGFzIGFueSwgLy8gd2lsbCBiZSBzZXQgYWZ0ZXIgdGhlIG92ZXJyaWRlXG4gICAgfVxuICAgIGlmIChvdmVycmlkZUNvbnRleHQpIHtcbiAgICAgIG92ZXJyaWRlQ29udGV4dChjb250ZXh0LCB0aGlzKVxuICAgIH1cbiAgICBpZiAoIWNvbnRleHQucm9vdENvbnRleHQpIHtcbiAgICAgIGlmIChjb250ZXh0LnByZXZpb3VzQXN5bmNTdGVwQ29udGV4dCkge1xuICAgICAgICBjb250ZXh0LnJvb3RDb250ZXh0ID0gY29udGV4dC5wcmV2aW91c0FzeW5jU3RlcENvbnRleHQucm9vdENvbnRleHRcbiAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5wYXJlbnRDb250ZXh0KSB7XG4gICAgICAgIGNvbnRleHQucm9vdENvbnRleHQgPSBjb250ZXh0LnBhcmVudENvbnRleHQucm9vdENvbnRleHRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnRleHQucm9vdENvbnRleHQgPSBjb250ZXh0XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0Q3VycmVudEFjdGlvbkNvbnRleHQoY29udGV4dClcblxuICAgIGxldCBtd2FyZUZuOiAoKSA9PiBhbnkgPSBmbi5iaW5kKHRhcmdldCwgLi4uYXJndW1lbnRzKVxuICAgIGNvbnN0IG13YXJlSXRlciA9IGdldEFjdGlvbk1pZGRsZXdhcmVzKGNvbnRleHQudGFyZ2V0KVtTeW1ib2wuaXRlcmF0b3JdKClcbiAgICBsZXQgbXdhcmVDdXIgPSBtd2FyZUl0ZXIubmV4dCgpXG4gICAgd2hpbGUgKCFtd2FyZUN1ci5kb25lKSB7XG4gICAgICBjb25zdCBtd2FyZSA9IG13YXJlQ3VyLnZhbHVlXG5cbiAgICAgIGNvbnN0IGZpbHRlclBhc3NlZCA9IG13YXJlLmZpbHRlciA/IG13YXJlLmZpbHRlcihjb250ZXh0KSA6IHRydWVcbiAgICAgIGlmIChmaWx0ZXJQYXNzZWQpIHtcbiAgICAgICAgbXdhcmVGbiA9IG13YXJlLm1pZGRsZXdhcmUuYmluZCh1bmRlZmluZWQsIGNvbnRleHQsIG13YXJlRm4pXG4gICAgICB9XG5cbiAgICAgIG13YXJlQ3VyID0gbXdhcmVJdGVyLm5leHQoKVxuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXQgPSBtd2FyZUZuKClcblxuICAgICAgaWYgKGlzRmxvd0ZpbmlzaGVyKSB7XG4gICAgICAgIGNvbnN0IGZsb3dGaW5pc2hlciA9IHJldCBhcyBGbG93RmluaXNoZXJcbiAgICAgICAgY29uc3QgdmFsdWUgPSBmbG93RmluaXNoZXIudmFsdWVcbiAgICAgICAgaWYgKGZsb3dGaW5pc2hlci5yZXNvbHV0aW9uID09PSBcImFjY2VwdFwiKSB7XG4gICAgICAgICAgZmxvd0ZpbmlzaGVyLmFjY2VwdGVyKHZhbHVlKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZsb3dGaW5pc2hlci5yZWplY3Rlcih2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWUgLy8gbm90IHN1cmUgaWYgdGhpcyBpcyBldmVuIG5lZWRlZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJldFxuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRDdXJyZW50QWN0aW9uQ29udGV4dChjb250ZXh0LnBhcmVudENvbnRleHQpXG5cbiAgICAgIHRyeVJ1blBlbmRpbmdBY3Rpb25zKClcbiAgICB9XG4gIH1cbiAgOyh3cmFwcGVkQWN0aW9uIGFzIGFueSlbbW9kZWxBY3Rpb25TeW1ib2xdID0gdHJ1ZVxuXG4gIHJldHVybiB3cmFwcGVkQWN0aW9uIGFzIGFueVxufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JhcE1vZGVsTWV0aG9kSW5BY3Rpb25JZk5lZWRlZDxNIGV4dGVuZHMgQW55TW9kZWwgfCBBbnlEYXRhTW9kZWw+KFxuICBtb2RlbDogTSxcbiAgcHJvcGVydHlLZXk6IGtleW9mIE0sXG4gIG5hbWU6IHN0cmluZ1xuKTogdm9pZCB7XG4gIGNvbnN0IGZuID0gbW9kZWxbcHJvcGVydHlLZXldIGFzIGFueVxuICBpZiAoaXNNb2RlbEFjdGlvbihmbikpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGNvbnN0IHdyYXBwZWRGbiA9IHdyYXBJbkFjdGlvbih7XG4gICAgbmFtZU9yTmFtZUZuOiBuYW1lLFxuICAgIGZuLFxuICAgIGFjdGlvblR5cGU6IEFjdGlvbkNvbnRleHRBY3Rpb25UeXBlLlN5bmMsXG4gIH0pXG4gIGNvbnN0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKG1vZGVsKVxuICBjb25zdCBwcm90b0ZuID0gcHJvdG9bcHJvcGVydHlLZXldXG4gIGlmIChwcm90b0ZuID09PSBmbikge1xuICAgIHByb3RvW3Byb3BlcnR5S2V5XSA9IHdyYXBwZWRGblxuICB9IGVsc2Uge1xuICAgIG1vZGVsW3Byb3BlcnR5S2V5XSA9IHdyYXBwZWRGblxuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7c0JBdUJpRCxFQUMvQyxjQUNBLElBQ0EsWUFDQSxpQkFDQSxpQkFBaUI7TUFRYixhQUFhO1FBRVgsZ0JBQWdCO1VBQ2QsT0FBTyxPQUFPLGlCQUFpQixhQUFhLGlCQUFpQjtRQUUvRCxDQUFDLFlBQVk7bUJBQ0Y7V0FLUixPQUFPLE1BQU0sRUFBRTtBQUFBO1VBR2hCLFNBQVM7VUFFVCxnQkFBZ0I7VUFFaEIsVUFBcUM7QUFBQSxNQUN6QyxZQUFZO0FBQUEsTUFDWixNQUFNO0FBQUEsTUFDTjtBQUFBLE1BQ0EsTUFBTSxNQUFNLEtBQUssU0FBUztBQUFBLE1BQzFCO0FBQUEsTUFDQSxNQUFNO01BQ04sYUFBYTtBQUFBO1FBRVgsaUJBQWlCO3NCQUNILFNBQVMsSUFBSTtBQUFBO1FBRTNCLENBQUMsUUFBUSxhQUFhO1VBQ3BCLFFBQVEsMEJBQTBCO2dCQUM1QixjQUFjLFFBQVEseUJBQXlCO0FBQUEsaUJBQzlDLFFBQVEsZUFBZTtnQkFDeEIsY0FBYyxRQUFRLGNBQWM7QUFBQSxhQUN2QztnQkFDRyxjQUFjO0FBQUE7OzRCQUlGLE9BQU87UUFFM0IsVUFBcUIsR0FBRyxLQUFLLFFBQVEsR0FBRyxTQUFTO1VBQy9DLFlBQVkscUJBQXFCLFFBQVEsTUFBTSxFQUFFLE9BQU87UUFDMUQsV0FBVyxVQUFVO1dBQ2xCLENBQUMsU0FBUyxNQUFNO1lBQ2YsUUFBUSxTQUFTO1lBRWpCLGVBQWUsTUFBTSxTQUFTLE1BQU0sT0FBTyxPQUFPLElBQUk7VUFDeEQsY0FBYztrQkFDTixNQUFNLFdBQVcsS0FBSyxRQUFXLFNBQVMsT0FBTztBQUFBO2lCQUdsRCxVQUFVOztRQUduQjtZQUNJLE1BQU07VUFFUixnQkFBZ0I7Y0FDWixlQUFlO2NBQ2YsUUFBUSxhQUFhO1lBQ3ZCLGFBQWEsZUFBZSxVQUFVO3VCQUMzQixTQUFTLEtBQUs7QUFBQSxlQUN0Qjt1QkFDUSxTQUFTLEtBQUs7QUFBQTtlQUV0QjtBQUFBLGFBQ0Y7ZUFDRTtBQUFBOzs4QkFHZSxRQUFRLGFBQWE7Ozs7Z0JBS3pCLHFCQUFxQjtTQUV0QztBQUNUO3lDQU1FLE9BQ0EsYUFDQTtRQUVNLEtBQUssTUFBTTtNQUNiLGNBQWMsRUFBRSxHQUFHOzs7UUFJakIsWUFBWSxhQUFhO0FBQUEsSUFDN0IsY0FBYztBQUFBLElBQ2Q7QUFBQSxJQUNBLFlBQVksd0JBQXdCO0FBQUEsR0FDckM7UUFDSyxRQUFRLE9BQU8sZUFBZSxLQUFLO1FBQ25DLFVBQVUsTUFBTTtNQUNsQixZQUFZLElBQUk7VUFDWixlQUFlO0FBQUEsU0FDaEI7VUFDQyxlQUFlO0FBQUE7QUFFekI7OyJ9
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
import { assertTweakedObject } from "../../tweaker/core.mjs";
|
|
21
|
+
import { failure, isJSONPrimitive, isPlainObject } from "../../utils/index.mjs";
|
|
22
|
+
import { arraySerializer } from "./arraySerializer.mjs";
|
|
23
|
+
import { cannotSerialize } from "./core.mjs";
|
|
24
|
+
import { dateSerializer } from "./dateSerializer.mjs";
|
|
25
|
+
import { mapSerializer } from "./mapSerializer.mjs";
|
|
26
|
+
import { objectPathSerializer } from "./objectPathSerializer.mjs";
|
|
27
|
+
import { objectSnapshotSerializer } from "./objectSnapshotSerializer.mjs";
|
|
28
|
+
import { plainObjectSerializer } from "./plainObjectSerializer.mjs";
|
|
29
|
+
import { primitiveSerializer } from "./primitiveSerializer.mjs";
|
|
30
|
+
import { setSerializer } from "./setSerializer.mjs";
|
|
31
|
+
const serializersArray = [];
|
|
32
|
+
const serializersMap = /* @__PURE__ */ new Map();
|
|
33
|
+
function registerActionCallArgumentSerializer(serializer) {
|
|
34
|
+
registerDefaultActionCallArgumentSerializers();
|
|
35
|
+
if (serializersArray.includes(serializer)) {
|
|
36
|
+
throw failure("action call argument serializer already registered");
|
|
37
|
+
}
|
|
38
|
+
if (serializersMap.has(serializer.id)) {
|
|
39
|
+
throw failure(`action call argument serializer with id '${serializer.id}' already registered`);
|
|
40
|
+
}
|
|
41
|
+
serializersArray.unshift(serializer);
|
|
42
|
+
serializersMap.set(serializer.id, serializer);
|
|
43
|
+
return () => {
|
|
44
|
+
const index = serializersArray.indexOf(serializer);
|
|
45
|
+
if (index >= 0) {
|
|
46
|
+
serializersArray.splice(index, 1);
|
|
47
|
+
}
|
|
48
|
+
serializersMap.delete(serializer.id);
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function serializeActionCallArgument(argValue, targetRoot) {
|
|
52
|
+
registerDefaultActionCallArgumentSerializers();
|
|
53
|
+
if (isJSONPrimitive(argValue)) {
|
|
54
|
+
return argValue;
|
|
55
|
+
}
|
|
56
|
+
const origValue = argValue;
|
|
57
|
+
const serialize = (v) => serializeActionCallArgument(v, targetRoot);
|
|
58
|
+
for (let i = 0; i < serializersArray.length; i++) {
|
|
59
|
+
const serializer = serializersArray[i];
|
|
60
|
+
const serializedValue = serializer.serialize(argValue, serialize, targetRoot);
|
|
61
|
+
if (serializedValue !== cannotSerialize) {
|
|
62
|
+
return {
|
|
63
|
+
$mobxKeystoneSerializer: serializer.id,
|
|
64
|
+
value: serializedValue
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
throw failure(`serializeActionCallArgument could not serialize the given value: ${origValue}`);
|
|
69
|
+
}
|
|
70
|
+
function serializeActionCall(actionCall, targetRoot) {
|
|
71
|
+
if (actionCall.serialized) {
|
|
72
|
+
throw failure("cannot serialize an already serialized action call");
|
|
73
|
+
}
|
|
74
|
+
if (targetRoot !== void 0) {
|
|
75
|
+
assertTweakedObject(targetRoot, "targetRoot");
|
|
76
|
+
}
|
|
77
|
+
const serialize = (v) => serializeActionCallArgument(v, targetRoot);
|
|
78
|
+
return __spreadProps(__spreadValues({}, actionCall), {
|
|
79
|
+
serialized: true,
|
|
80
|
+
args: actionCall.args.map(serialize)
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
function deserializeActionCallArgument(argValue, targetRoot) {
|
|
84
|
+
registerDefaultActionCallArgumentSerializers();
|
|
85
|
+
if (isJSONPrimitive(argValue)) {
|
|
86
|
+
return argValue;
|
|
87
|
+
}
|
|
88
|
+
if (!isPlainObject(argValue) || typeof argValue.$mobxKeystoneSerializer !== "string") {
|
|
89
|
+
throw failure("invalid serialized action call argument");
|
|
90
|
+
}
|
|
91
|
+
const serializerId = argValue.$mobxKeystoneSerializer;
|
|
92
|
+
const serializer = serializersMap.get(serializerId);
|
|
93
|
+
if (!serializer) {
|
|
94
|
+
throw failure(`a serializer with id '${serializerId}' could not be found`);
|
|
95
|
+
}
|
|
96
|
+
const serializedValue = argValue;
|
|
97
|
+
const deserialize = (v) => deserializeActionCallArgument(v, targetRoot);
|
|
98
|
+
return serializer.deserialize(serializedValue.value, deserialize, targetRoot);
|
|
99
|
+
}
|
|
100
|
+
function deserializeActionCall(actionCall, targetRoot) {
|
|
101
|
+
if (!actionCall.serialized) {
|
|
102
|
+
throw failure("cannot deserialize a non-serialized action call");
|
|
103
|
+
}
|
|
104
|
+
if (targetRoot !== void 0) {
|
|
105
|
+
assertTweakedObject(targetRoot, "targetRoot");
|
|
106
|
+
}
|
|
107
|
+
const deserialize = (v) => deserializeActionCallArgument(v, targetRoot);
|
|
108
|
+
const deserializedActionCall = __spreadProps(__spreadValues({}, actionCall), {
|
|
109
|
+
serialized: void 0,
|
|
110
|
+
args: actionCall.args.map(deserialize)
|
|
111
|
+
});
|
|
112
|
+
delete deserializedActionCall.serialized;
|
|
113
|
+
return deserializedActionCall;
|
|
114
|
+
}
|
|
115
|
+
let defaultActionCallArgumentSerializersRegistered = false;
|
|
116
|
+
function registerDefaultActionCallArgumentSerializers() {
|
|
117
|
+
if (defaultActionCallArgumentSerializersRegistered) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
defaultActionCallArgumentSerializersRegistered = true;
|
|
121
|
+
registerActionCallArgumentSerializer(primitiveSerializer);
|
|
122
|
+
registerActionCallArgumentSerializer(plainObjectSerializer);
|
|
123
|
+
registerActionCallArgumentSerializer(setSerializer);
|
|
124
|
+
registerActionCallArgumentSerializer(mapSerializer);
|
|
125
|
+
registerActionCallArgumentSerializer(dateSerializer);
|
|
126
|
+
registerActionCallArgumentSerializer(arraySerializer);
|
|
127
|
+
registerActionCallArgumentSerializer(objectSnapshotSerializer);
|
|
128
|
+
registerActionCallArgumentSerializer(objectPathSerializer);
|
|
129
|
+
}
|
|
130
|
+
export { deserializeActionCall, deserializeActionCallArgument, registerActionCallArgumentSerializer, serializeActionCall, serializeActionCallArgument };
|
|
131
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uU2VyaWFsaXphdGlvbi5tanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hY3Rpb25NaWRkbGV3YXJlcy9hY3Rpb25TZXJpYWxpemF0aW9uL2FjdGlvblNlcmlhbGl6YXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBPIH0gZnJvbSBcInRzLXRvb2xiZWx0XCJcbmltcG9ydCB0eXBlIHsgQWN0aW9uQ2FsbCB9IGZyb20gXCIuLi8uLi9hY3Rpb24vYXBwbHlBY3Rpb25cIlxuaW1wb3J0IHsgYXNzZXJ0VHdlYWtlZE9iamVjdCB9IGZyb20gXCIuLi8uLi90d2Vha2VyL2NvcmVcIlxuaW1wb3J0IHsgZmFpbHVyZSwgaXNKU09OUHJpbWl0aXZlLCBpc1BsYWluT2JqZWN0IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCJcbmltcG9ydCB0eXBlIHsgSlNPTlByaW1pdGl2ZVZhbHVlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3R5cGVzXCJcbmltcG9ydCB7IGFycmF5U2VyaWFsaXplciB9IGZyb20gXCIuL2FycmF5U2VyaWFsaXplclwiXG5pbXBvcnQgeyBBY3Rpb25DYWxsQXJndW1lbnRTZXJpYWxpemVyLCBjYW5ub3RTZXJpYWxpemUgfSBmcm9tIFwiLi9jb3JlXCJcbmltcG9ydCB7IGRhdGVTZXJpYWxpemVyIH0gZnJvbSBcIi4vZGF0ZVNlcmlhbGl6ZXJcIlxuaW1wb3J0IHsgbWFwU2VyaWFsaXplciB9IGZyb20gXCIuL21hcFNlcmlhbGl6ZXJcIlxuaW1wb3J0IHsgb2JqZWN0UGF0aFNlcmlhbGl6ZXIgfSBmcm9tIFwiLi9vYmplY3RQYXRoU2VyaWFsaXplclwiXG5pbXBvcnQgeyBvYmplY3RTbmFwc2hvdFNlcmlhbGl6ZXIgfSBmcm9tIFwiLi9vYmplY3RTbmFwc2hvdFNlcmlhbGl6ZXJcIlxuaW1wb3J0IHsgcGxhaW5PYmplY3RTZXJpYWxpemVyIH0gZnJvbSBcIi4vcGxhaW5PYmplY3RTZXJpYWxpemVyXCJcbmltcG9ydCB7IHByaW1pdGl2ZVNlcmlhbGl6ZXIgfSBmcm9tIFwiLi9wcmltaXRpdmVTZXJpYWxpemVyXCJcbmltcG9ydCB7IHNldFNlcmlhbGl6ZXIgfSBmcm9tIFwiLi9zZXRTZXJpYWxpemVyXCJcblxuY29uc3Qgc2VyaWFsaXplcnNBcnJheTogQWN0aW9uQ2FsbEFyZ3VtZW50U2VyaWFsaXplcjxhbnksIGFueT5bXSA9IFtdXG5jb25zdCBzZXJpYWxpemVyc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBBY3Rpb25DYWxsQXJndW1lbnRTZXJpYWxpemVyPGFueSwgYW55Pj4oKVxuXG4vKipcbiAqIFJlZ2lzdGVycyBhIG5ldyBhY3Rpb24gY2FsbCBhcmd1bWVudCBzZXJpYWxpemVycy5cbiAqIFNlcmlhbGl6ZXJzIGFyZSBjYWxsZWQgaW4gdGhlIGludmVyc2Ugb3JkZXIgdGhleSBhcmUgcmVnaXN0ZXJlZCwgbWVhbmluZyB0aGVcbiAqIGxhdGVzdCBvbmUgcmVnaXN0ZXJlZCB3aWxsIGJlIGNhbGxlZCBmaXJzdC5cbiAqXG4gKiBAcGFyYW0gc2VyaWFsaXplciBTZXJpYWxpemVyIHRvIHJlZ2lzdGVyLlxuICogQHJldHVybnMgQSBkaXNwb3NlciB0byB1bnJlZ2lzdGVyIHRoZSBzZXJpYWxpemVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJBY3Rpb25DYWxsQXJndW1lbnRTZXJpYWxpemVyKFxuICBzZXJpYWxpemVyOiBBY3Rpb25DYWxsQXJndW1lbnRTZXJpYWxpemVyPGFueSwgYW55PlxuKTogKCkgPT4gdm9pZCB7XG4gIHJlZ2lzdGVyRGVmYXVsdEFjdGlvbkNhbGxBcmd1bWVudFNlcmlhbGl6ZXJzKClcblxuICBpZiAoc2VyaWFsaXplcnNBcnJheS5pbmNsdWRlcyhzZXJpYWxpemVyKSkge1xuICAgIHRocm93IGZhaWx1cmUoXCJhY3Rpb24gY2FsbCBhcmd1bWVudCBzZXJpYWxpemVyIGFscmVhZHkgcmVnaXN0ZXJlZFwiKVxuICB9XG4gIGlmIChzZXJpYWxpemVyc01hcC5oYXMoc2VyaWFsaXplci5pZCkpIHtcbiAgICB0aHJvdyBmYWlsdXJlKGBhY3Rpb24gY2FsbCBhcmd1bWVudCBzZXJpYWxpemVyIHdpdGggaWQgJyR7c2VyaWFsaXplci5pZH0nIGFscmVhZHkgcmVnaXN0ZXJlZGApXG4gIH1cblxuICBzZXJpYWxpemVyc0FycmF5LnVuc2hpZnQoc2VyaWFsaXplcilcbiAgc2VyaWFsaXplcnNNYXAuc2V0KHNlcmlhbGl6ZXIuaWQsIHNlcmlhbGl6ZXIpXG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBjb25zdCBpbmRleCA9IHNlcmlhbGl6ZXJzQXJyYXkuaW5kZXhPZihzZXJpYWxpemVyKVxuICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICBzZXJpYWxpemVyc0FycmF5LnNwbGljZShpbmRleCwgMSlcbiAgICB9XG4gICAgc2VyaWFsaXplcnNNYXAuZGVsZXRlKHNlcmlhbGl6ZXIuaWQpXG4gIH1cbn1cblxuLyoqXG4gKiBTZXJpYWxpemVkIGFjdGlvbiBjYWxsIGFyZ3VtZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcmlhbGl6ZWRBY3Rpb25DYWxsQXJndW1lbnQge1xuICAvKipcbiAgICogU2VyaWFsaXplciBpZC5cbiAgICovXG4gIHJlYWRvbmx5ICRtb2J4S2V5c3RvbmVTZXJpYWxpemVyOiBzdHJpbmdcbiAgLyoqXG4gICAqIFNlcmlhbGl6ZWQgdmFsdWUuXG4gICAqL1xuICByZWFkb25seSB2YWx1ZTogYW55XG59XG5cbi8qKlxuICogQSBzZXJpYWxpemVkIGFjdGlvbiBjYWxsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcmlhbGl6ZWRBY3Rpb25DYWxsIGV4dGVuZHMgT21pdDxBY3Rpb25DYWxsLCBcInNlcmlhbGl6ZWRcIj4ge1xuICAvKipcbiAgICogU2VyaWFsaXplZCBhY3Rpb24gYXJndW1lbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgYXJnczogUmVhZG9ubHlBcnJheTxTZXJpYWxpemVkQWN0aW9uQ2FsbEFyZ3VtZW50IHwgSlNPTlByaW1pdGl2ZVZhbHVlPlxuXG4gIC8qKlxuICAgKiBNYXJrcyB0aGlzIGFjdGlvbiBjYWxsIGFzIHNlcmlhbGl6ZWQuXG4gICAqL1xuICBzZXJpYWxpemVkOiB0cnVlXG59XG5cbi8qKlxuICogVHJhbnNmb3JtcyBhbiBhY3Rpb24gY2FsbCBhcmd1bWVudCBieSByZXR1cm5pbmcgYSBgU2VyaWFsaXplZEFjdGlvbkNhbGxBcmd1bWVudGAuXG4gKiBUaGUgZm9sbG93aW5nIGFyZSBzdXBwb3J0ZWQgb3V0IG9mIHRoZSBib3g6XG4gKiAtIFByaW1pdGl2ZXMuXG4gKiAtIE5vZGVzIHRoYXQgYXJlIHVuZGVyIHRoZSBzYW1lIHJvb3Qgbm9kZSBhcyB0aGUgdGFyZ2V0IHJvb3QgKHdoZW4gcHJvdmlkZWQpIHdpbGwgYmUgc2VyaWFsaXplZFxuICogICBhcyBhIHBhdGguXG4gKiAtIE5vZGVzIHRoYXQgYXJlIG5vdCB1bmRlciB0aGUgc2FtZSByb290IG5vZGUgYXMgdGhlIHRhcmdldCByb290IHdpbGwgYmUgc2VyaWFsaXplZCBhcyB0aGVpciBzbmFwc2hvdC5cbiAqIC0gQXJyYXlzIChvYnNlcnZhYmxlIG9yIG5vdCkuXG4gKiAtIERhdGVzLlxuICogLSBNYXBzIChvYnNlcnZhYmxlIG9yIG5vdCkuXG4gKiAtIFNldHMgKG9ic2VydmFibGUgb3Igbm90KS5cbiAqIC0gUGxhaW4gb2JqZWN0cyAob2JzZXJ2YWJsZSBvciBub3QpLlxuICpcbiAqIElmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgc2VyaWFsaXplZCBpdCB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbi5cbiAqXG4gKiBAcGFyYW0gYXJnVmFsdWUgQXJndW1lbnQgdmFsdWUgdG8gYmUgdHJhbnNmb3JtZWQgaW50byBpdHMgc2VyaWFsaXphYmxlIGZvcm0uXG4gKiBAcGFyYW0gW3RhcmdldFJvb3RdIFRhcmdldCByb290IG5vZGUgb2YgdGhlIG1vZGVsIHdoZXJlIHRoaXMgYWN0aW9uIGlzIGJlaW5nIHBlcmZvcm1lZC5cbiAqIEByZXR1cm5zIFRoZSBzZXJpYWxpemFibGUgZm9ybSBvZiB0aGUgcGFzc2VkIHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplQWN0aW9uQ2FsbEFyZ3VtZW50KFxuICBhcmdWYWx1ZTogYW55LFxuICB0YXJnZXRSb290Pzogb2JqZWN0XG4pOiBTZXJpYWxpemVkQWN0aW9uQ2FsbEFyZ3VtZW50IHwgSlNPTlByaW1pdGl2ZVZhbHVlIHtcbiAgcmVnaXN0ZXJEZWZhdWx0QWN0aW9uQ2FsbEFyZ3VtZW50U2VyaWFsaXplcnMoKVxuXG4gIGlmIChpc0pTT05QcmltaXRpdmUoYXJnVmFsdWUpKSB7XG4gICAgcmV0dXJuIGFyZ1ZhbHVlXG4gIH1cblxuICBjb25zdCBvcmlnVmFsdWUgPSBhcmdWYWx1ZVxuXG4gIGNvbnN0IHNlcmlhbGl6ZSA9ICh2OiBhbnkpID0+IHNlcmlhbGl6ZUFjdGlvbkNhbGxBcmd1bWVudCh2LCB0YXJnZXRSb290KVxuXG4gIC8vIHRyeSBzZXJpYWxpemVyc1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmlhbGl6ZXJzQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBzZXJpYWxpemVyID0gc2VyaWFsaXplcnNBcnJheVtpXVxuICAgIGNvbnN0IHNlcmlhbGl6ZWRWYWx1ZSA9IHNlcmlhbGl6ZXIuc2VyaWFsaXplKGFyZ1ZhbHVlLCBzZXJpYWxpemUsIHRhcmdldFJvb3QpXG4gICAgaWYgKHNlcmlhbGl6ZWRWYWx1ZSAhPT0gY2Fubm90U2VyaWFsaXplKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAkbW9ieEtleXN0b25lU2VyaWFsaXplcjogc2VyaWFsaXplci5pZCxcbiAgICAgICAgdmFsdWU6IHNlcmlhbGl6ZWRWYWx1ZSxcbiAgICAgIH0gYXMgU2VyaWFsaXplZEFjdGlvbkNhbGxBcmd1bWVudFxuICAgIH1cbiAgfVxuXG4gIHRocm93IGZhaWx1cmUoYHNlcmlhbGl6ZUFjdGlvbkNhbGxBcmd1bWVudCBjb3VsZCBub3Qgc2VyaWFsaXplIHRoZSBnaXZlbiB2YWx1ZTogJHtvcmlnVmFsdWV9YClcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYW4gYWN0aW9uIGNhbGwgaXMgc2VyaWFsaXphYmxlIGJ5IG1hcHBpbmcgdGhlIGFjdGlvbiBhcmd1bWVudHMgaW50byBpdHNcbiAqIHNlcmlhbGl6YWJsZSB2ZXJzaW9uIGJ5IHVzaW5nIGBzZXJpYWxpemVBY3Rpb25DYWxsQXJndW1lbnRgLlxuICpcbiAqIEBwYXJhbSBhY3Rpb25DYWxsIEFjdGlvbiBjYWxsIHRvIGNvbnZlcnQuXG4gKiBAcGFyYW0gW3RhcmdldFJvb3RdIFRhcmdldCByb290IG5vZGUgb2YgdGhlIG1vZGVsIHdoZXJlIHRoaXMgYWN0aW9uIGlzIGJlaW5nIHBlcmZvcm1lZC5cbiAqIEByZXR1cm5zIFRoZSBzZXJpYWxpemFibGUgYWN0aW9uIGNhbGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVBY3Rpb25DYWxsKFxuICBhY3Rpb25DYWxsOiBBY3Rpb25DYWxsLFxuICB0YXJnZXRSb290Pzogb2JqZWN0XG4pOiBTZXJpYWxpemVkQWN0aW9uQ2FsbCB7XG4gIGlmIChhY3Rpb25DYWxsLnNlcmlhbGl6ZWQpIHtcbiAgICB0aHJvdyBmYWlsdXJlKFwiY2Fubm90IHNlcmlhbGl6ZSBhbiBhbHJlYWR5IHNlcmlhbGl6ZWQgYWN0aW9uIGNhbGxcIilcbiAgfVxuXG4gIGlmICh0YXJnZXRSb290ICE9PSB1bmRlZmluZWQpIHtcbiAgICBhc3NlcnRUd2Vha2VkT2JqZWN0KHRhcmdldFJvb3QsIFwidGFyZ2V0Um9vdFwiKVxuICB9XG5cbiAgY29uc3Qgc2VyaWFsaXplID0gKHY6IGFueSkgPT4gc2VyaWFsaXplQWN0aW9uQ2FsbEFyZ3VtZW50KHYsIHRhcmdldFJvb3QpXG5cbiAgcmV0dXJuIHtcbiAgICAuLi5hY3Rpb25DYWxsLFxuICAgIHNlcmlhbGl6ZWQ6IHRydWUsXG4gICAgYXJnczogYWN0aW9uQ2FsbC5hcmdzLm1hcChzZXJpYWxpemUpLFxuICB9XG59XG5cbi8qKlxuICogVHJhbnNmb3JtcyBhbiBhY3Rpb24gY2FsbCBhcmd1bWVudCBieSByZXR1cm5pbmcgaXRzIGRlc2VyaWFsaXplZCBlcXVpdmFsZW50LlxuICpcbiAqIEBwYXJhbSBhcmdWYWx1ZSBBcmd1bWVudCB2YWx1ZSB0byBiZSB0cmFuc2Zvcm1lZCBpbnRvIGl0cyBkZXNlcmlhbGl6ZWQgZm9ybS5cbiAqIEBwYXJhbSBbdGFyZ2V0Um9vdF0gVGFyZ2V0IHJvb3Qgbm9kZSBvZiB0aGUgbW9kZWwgd2hlcmUgdGhpcyBhY3Rpb24gaXMgYmVpbmcgcGVyZm9ybWVkLlxuICogQHJldHVybnMgVGhlIGRlc2VyaWFsaXplZCBmb3JtIG9mIHRoZSBwYXNzZWQgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXNlcmlhbGl6ZUFjdGlvbkNhbGxBcmd1bWVudChcbiAgYXJnVmFsdWU6IFNlcmlhbGl6ZWRBY3Rpb25DYWxsQXJndW1lbnQgfCBKU09OUHJpbWl0aXZlVmFsdWUsXG4gIHRhcmdldFJvb3Q/OiBvYmplY3Rcbik6IGFueSB7XG4gIHJlZ2lzdGVyRGVmYXVsdEFjdGlvbkNhbGxBcmd1bWVudFNlcmlhbGl6ZXJzKClcblxuICBpZiAoaXNKU09OUHJpbWl0aXZlKGFyZ1ZhbHVlKSkge1xuICAgIHJldHVybiBhcmdWYWx1ZVxuICB9XG5cbiAgaWYgKCFpc1BsYWluT2JqZWN0KGFyZ1ZhbHVlKSB8fCB0eXBlb2YgYXJnVmFsdWUuJG1vYnhLZXlzdG9uZVNlcmlhbGl6ZXIgIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBmYWlsdXJlKFwiaW52YWxpZCBzZXJpYWxpemVkIGFjdGlvbiBjYWxsIGFyZ3VtZW50XCIpXG4gIH1cblxuICBjb25zdCBzZXJpYWxpemVySWQgPSBhcmdWYWx1ZS4kbW9ieEtleXN0b25lU2VyaWFsaXplclxuICBjb25zdCBzZXJpYWxpemVyID0gc2VyaWFsaXplcnNNYXAuZ2V0KHNlcmlhbGl6ZXJJZClcblxuICBpZiAoIXNlcmlhbGl6ZXIpIHtcbiAgICB0aHJvdyBmYWlsdXJlKGBhIHNlcmlhbGl6ZXIgd2l0aCBpZCAnJHtzZXJpYWxpemVySWR9JyBjb3VsZCBub3QgYmUgZm91bmRgKVxuICB9XG5cbiAgY29uc3Qgc2VyaWFsaXplZFZhbHVlID0gYXJnVmFsdWUgYXMgU2VyaWFsaXplZEFjdGlvbkNhbGxBcmd1bWVudFxuXG4gIGNvbnN0IGRlc2VyaWFsaXplID0gKHY6IGFueSkgPT4gZGVzZXJpYWxpemVBY3Rpb25DYWxsQXJndW1lbnQodiwgdGFyZ2V0Um9vdClcbiAgcmV0dXJuIHNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoc2VyaWFsaXplZFZhbHVlLnZhbHVlLCBkZXNlcmlhbGl6ZSwgdGFyZ2V0Um9vdClcbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgYW4gYWN0aW9uIGNhbGwgaXMgZGVzZXJpYWxpemVkIGJ5IG1hcHBpbmcgdGhlIGFjdGlvbiBhcmd1bWVudHMgaW50byBpdHNcbiAqIGRlc2VyaWFsaXplZCB2ZXJzaW9uIGJ5IHVzaW5nIGBkZXNlcmlhbGl6ZUFjdGlvbkNhbGxBcmd1bWVudGAuXG4gKlxuICogQHBhcmFtIGFjdGlvbkNhbGwgQWN0aW9uIGNhbGwgdG8gY29udmVydC5cbiAqIEBwYXJhbSBbdGFyZ2V0Um9vdF0gVGFyZ2V0IHJvb3Qgbm9kZSBvZiB0aGUgbW9kZWwgd2hlcmUgdGhpcyBhY3Rpb24gaXMgYmVpbmcgcGVyZm9ybWVkLlxuICogQHJldHVybnMgVGhlIGRlc2VyaWFsaXplZCBhY3Rpb24gY2FsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlc2VyaWFsaXplQWN0aW9uQ2FsbChcbiAgYWN0aW9uQ2FsbDogU2VyaWFsaXplZEFjdGlvbkNhbGwsXG4gIHRhcmdldFJvb3Q/OiBvYmplY3Rcbik6IEFjdGlvbkNhbGwge1xuICBpZiAoIWFjdGlvbkNhbGwuc2VyaWFsaXplZCkge1xuICAgIHRocm93IGZhaWx1cmUoXCJjYW5ub3QgZGVzZXJpYWxpemUgYSBub24tc2VyaWFsaXplZCBhY3Rpb24gY2FsbFwiKVxuICB9XG5cbiAgaWYgKHRhcmdldFJvb3QgIT09IHVuZGVmaW5lZCkge1xuICAgIGFzc2VydFR3ZWFrZWRPYmplY3QodGFyZ2V0Um9vdCwgXCJ0YXJnZXRSb290XCIpXG4gIH1cblxuICBjb25zdCBkZXNlcmlhbGl6ZSA9ICh2OiBhbnkpID0+IGRlc2VyaWFsaXplQWN0aW9uQ2FsbEFyZ3VtZW50KHYsIHRhcmdldFJvb3QpXG4gIGNvbnN0IGRlc2VyaWFsaXplZEFjdGlvbkNhbGw6IEFjdGlvbkNhbGwgPSB7XG4gICAgLi4uYWN0aW9uQ2FsbCxcbiAgICBzZXJpYWxpemVkOiB1bmRlZmluZWQsXG4gICAgYXJnczogYWN0aW9uQ2FsbC5hcmdzLm1hcChkZXNlcmlhbGl6ZSksXG4gIH1cbiAgZGVsZXRlIChkZXNlcmlhbGl6ZWRBY3Rpb25DYWxsIGFzIE8uV3JpdGFibGU8QWN0aW9uQ2FsbD4pLnNlcmlhbGl6ZWRcbiAgcmV0dXJuIGRlc2VyaWFsaXplZEFjdGlvbkNhbGxcbn1cblxubGV0IGRlZmF1bHRBY3Rpb25DYWxsQXJndW1lbnRTZXJpYWxpemVyc1JlZ2lzdGVyZWQgPSBmYWxzZVxuXG5mdW5jdGlvbiByZWdpc3RlckRlZmF1bHRBY3Rpb25DYWxsQXJndW1lbnRTZXJpYWxpemVycygpIHtcbiAgaWYgKGRlZmF1bHRBY3Rpb25DYWxsQXJndW1lbnRTZXJpYWxpemVyc1JlZ2lzdGVyZWQpIHtcbiAgICByZXR1cm5cbiAgfVxuICBkZWZhdWx0QWN0aW9uQ2FsbEFyZ3VtZW50U2VyaWFsaXplcnNSZWdpc3RlcmVkID0gdHJ1ZVxuXG4gIC8vIHNlcmlhbGl6ZXIgcmVnaXN0cmF0aW9uIChmcm9tIGxvdyBwcmlvcml0eSB0byBoaWdoIHByaW9yaXR5KVxuXG4gIHJlZ2lzdGVyQWN0aW9uQ2FsbEFyZ3VtZW50U2VyaWFsaXplcihwcmltaXRpdmVTZXJpYWxpemVyKVxuICByZWdpc3RlckFjdGlvbkNhbGxBcmd1bWVudFNlcmlhbGl6ZXIocGxhaW5PYmplY3RTZXJpYWxpemVyKVxuICByZWdpc3RlckFjdGlvbkNhbGxBcmd1bWVudFNlcmlhbGl6ZXIoc2V0U2VyaWFsaXplcilcbiAgcmVnaXN0ZXJBY3Rpb25DYWxsQXJndW1lbnRTZXJpYWxpemVyKG1hcFNlcmlhbGl6ZXIpXG4gIHJlZ2lzdGVyQWN0aW9uQ2FsbEFyZ3VtZW50U2VyaWFsaXplcihkYXRlU2VyaWFsaXplcilcbiAgcmVnaXN0ZXJBY3Rpb25DYWxsQXJndW1lbnRTZXJpYWxpemVyKGFycmF5U2VyaWFsaXplcilcbiAgcmVnaXN0ZXJBY3Rpb25DYWxsQXJndW1lbnRTZXJpYWxpemVyKG9iamVjdFNuYXBzaG90U2VyaWFsaXplcilcbiAgcmVnaXN0ZXJBY3Rpb25DYWxsQXJndW1lbnRTZXJpYWxpemVyKG9iamVjdFBhdGhTZXJpYWxpemVyKVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWVBLE1BQU0sbUJBQTZEO0FBQ25FLE1BQU0scUNBQXFCOzhDQVd6Qjs7TUFJSSxpQkFBaUIsU0FBUyxVQUFVLEdBQUc7VUFDbkMsUUFBUSxvREFBb0Q7QUFBQTtNQUVoRSxlQUFlLElBQUksV0FBVyxFQUFFLEdBQUc7VUFDL0IsUUFBUSw0Q0FBNEMsV0FBVyx3QkFBd0I7QUFBQTttQkFHOUUsUUFBUSxVQUFVO2lCQUNwQixJQUFJLFdBQVcsSUFBSSxVQUFVO1NBRXJDO1VBQ0MsUUFBUSxpQkFBaUIsUUFBUSxVQUFVO1FBQzdDLFNBQVMsR0FBRzt1QkFDRyxPQUFPLE9BQU8sQ0FBQztBQUFBO21CQUVuQixPQUFPLFdBQVcsRUFBRTtBQUFBO0FBRXZDO3FDQW1ERSxVQUNBOztNQUlJLGdCQUFnQixRQUFRLEdBQUc7V0FDdEI7QUFBQTtRQUdILFlBQVk7UUFFWixZQUFZLENBQUMsTUFBVyw0QkFBNEIsR0FBRyxVQUFVO1dBRzlELElBQUksR0FBRyxJQUFJLGlCQUFpQixRQUFRLEtBQUs7VUFDMUMsYUFBYSxpQkFBaUI7VUFDOUIsa0JBQWtCLFdBQVcsVUFBVSxVQUFVLFdBQVcsVUFBVTtRQUN4RSxvQkFBb0IsaUJBQWlCO2FBQ2hDO0FBQUEsUUFDTCx5QkFBeUIsV0FBVztBQUFBLFFBQ3BDLE9BQU87QUFBQTs7O1FBS1AsUUFBUSxvRUFBb0UsV0FBVztBQUMvRjs2QkFXRSxZQUNBO01BRUksV0FBVyxZQUFZO1VBQ25CLFFBQVEsb0RBQW9EO0FBQUE7TUFHaEUsZUFBZSxRQUFXO3dCQUNSLFlBQVksWUFBWTtBQUFBO1FBR3hDLFlBQVksQ0FBQyxNQUFXLDRCQUE0QixHQUFHLFVBQVU7U0FFaEUsaUNBQ0YsYUFERTtBQUFBLElBRUwsWUFBWTtBQUFBLElBQ1osTUFBTSxXQUFXLEtBQUssSUFBSSxTQUFTO0FBQUE7QUFFdkM7dUNBVUUsVUFDQTs7TUFJSSxnQkFBZ0IsUUFBUSxHQUFHO1dBQ3RCO0FBQUE7TUFHTCxDQUFDLGNBQWMsUUFBUSxLQUFLLE9BQU8sU0FBUyw0QkFBNEIsVUFBVTtVQUM5RSxRQUFRLHlDQUF5QztBQUFBO1FBR25ELGVBQWUsU0FBUztRQUN4QixhQUFhLGVBQWUsSUFBSSxZQUFZO01BRTlDLENBQUMsWUFBWTtVQUNULFFBQVEseUJBQXlCLGtDQUFrQztBQUFBO1FBR3JFLGtCQUFrQjtRQUVsQixjQUFjLENBQUMsTUFBVyw4QkFBOEIsR0FBRyxVQUFVO1NBQ3BFLFdBQVcsWUFBWSxnQkFBZ0IsT0FBTyxhQUFhLFVBQVU7QUFDOUU7K0JBV0UsWUFDQTtNQUVJLENBQUMsV0FBVyxZQUFZO1VBQ3BCLFFBQVEsaURBQWlEO0FBQUE7TUFHN0QsZUFBZSxRQUFXO3dCQUNSLFlBQVksWUFBWTtBQUFBO1FBR3hDLGNBQWMsQ0FBQyxNQUFXLDhCQUE4QixHQUFHLFVBQVU7UUFDckUseUJBQXFDLGlDQUN0QyxhQURzQztBQUFBLElBRXpDLFlBQVk7QUFBQSxJQUNaLE1BQU0sV0FBVyxLQUFLLElBQUksV0FBVztBQUFBO1NBRS9CLHVCQUFrRDtTQUNuRDtBQUNUO0FBRUEsSUFBSSxpREFBaUQ7QUFFckQ7TUFDTSxnREFBZ0Q7OzttREFHSDt1Q0FJWixtQkFBbUI7dUNBQ25CLHFCQUFxQjt1Q0FDckIsYUFBYTt1Q0FDYixhQUFhO3VDQUNiLGNBQWM7dUNBQ2QsZUFBZTt1Q0FDZix3QkFBd0I7dUNBQ3hCLG9CQUFvQjtBQUMzRDs7In0=
|