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.
Files changed (350) hide show
  1. package/dist/_virtual/_tslib.mjs +12 -0
  2. package/dist/node_modules/fast-deep-equal/es6/index.mjs +68 -0
  3. package/dist/node_modules/nanoid/non-secure/index.mjs +11 -0
  4. package/dist/src/action/actionDecoratorUtils.mjs +25 -0
  5. package/dist/src/action/applyAction.mjs +54 -0
  6. package/dist/src/action/applyDelete.mjs +20 -0
  7. package/dist/src/action/applyMethodCall.mjs +19 -0
  8. package/dist/src/action/applySet.mjs +25 -0
  9. package/dist/src/action/builtInActions.mjs +15 -0
  10. package/dist/src/action/context.mjs +22 -0
  11. package/dist/src/action/hookActions.mjs +13 -0
  12. package/dist/src/action/isModelAction.mjs +6 -0
  13. package/dist/src/action/middleware.mjs +84 -0
  14. package/dist/src/action/modelAction.mjs +34 -0
  15. package/dist/src/action/modelFlow.mjs +251 -0
  16. package/dist/src/action/pendingActions.mjs +30 -0
  17. package/dist/src/action/protection.mjs +19 -0
  18. package/dist/src/action/runUnprotected.mjs +24 -0
  19. package/dist/src/action/wrapInAction.mjs +90 -0
  20. package/dist/src/actionMiddlewares/actionSerialization/actionSerialization.mjs +131 -0
  21. package/dist/src/actionMiddlewares/actionSerialization/applySerializedAction.mjs +110 -0
  22. package/dist/src/actionMiddlewares/actionSerialization/arraySerializer.mjs +15 -0
  23. package/dist/src/actionMiddlewares/actionSerialization/core.mjs +3 -0
  24. package/dist/src/actionMiddlewares/actionSerialization/dateSerializer.mjs +15 -0
  25. package/dist/src/actionMiddlewares/actionSerialization/mapSerializer.mjs +32 -0
  26. package/dist/src/actionMiddlewares/actionSerialization/objectPathSerializer.mjs +33 -0
  27. package/dist/src/actionMiddlewares/actionSerialization/objectSnapshotSerializer.mjs +18 -0
  28. package/dist/src/actionMiddlewares/actionSerialization/plainObjectSerializer.mjs +27 -0
  29. package/dist/src/actionMiddlewares/actionSerialization/primitiveSerializer.mjs +39 -0
  30. package/dist/src/actionMiddlewares/actionSerialization/setSerializer.mjs +29 -0
  31. package/dist/src/actionMiddlewares/actionTrackingMiddleware.mjs +239 -0
  32. package/dist/src/actionMiddlewares/onActionMiddleware.mjs +44 -0
  33. package/dist/src/actionMiddlewares/readonlyMiddleware.mjs +49 -0
  34. package/dist/src/actionMiddlewares/transactionMiddleware.mjs +69 -0
  35. package/dist/src/actionMiddlewares/undoMiddleware.mjs +472 -0
  36. package/dist/src/actionMiddlewares/utils.mjs +25 -0
  37. package/dist/src/computedTree/computedTree.mjs +63 -0
  38. package/dist/src/context/context.mjs +141 -0
  39. package/dist/src/dataModel/BaseDataModel.mjs +108 -0
  40. package/dist/src/dataModel/DataModel.mjs +32 -0
  41. package/dist/src/dataModel/actions.mjs +12 -0
  42. package/dist/src/dataModel/getDataModelMetadata.mjs +14 -0
  43. package/dist/src/dataModel/newDataModel.mjs +31 -0
  44. package/dist/src/dataModel/utils.mjs +29 -0
  45. package/dist/src/frozen/Frozen.mjs +68 -0
  46. package/dist/src/globalConfig/globalConfig.mjs +57 -0
  47. package/dist/src/index.mjs +97 -0
  48. package/dist/src/model/BaseModel.mjs +118 -0
  49. package/dist/src/model/Model.mjs +36 -0
  50. package/dist/src/model/getModelMetadata.mjs +19 -0
  51. package/dist/src/model/metadata.mjs +7 -0
  52. package/dist/src/model/newModel.mjs +95 -0
  53. package/dist/src/model/utils.mjs +33 -0
  54. package/dist/src/modelShared/BaseModelShared.mjs +9 -0
  55. package/dist/src/modelShared/Model.mjs +249 -0
  56. package/dist/src/modelShared/checkModelDecoratorArgs.mjs +21 -0
  57. package/dist/src/modelShared/modelClassInitializer.mjs +14 -0
  58. package/dist/src/modelShared/modelDecorator.mjs +117 -0
  59. package/dist/src/modelShared/modelInfo.mjs +7 -0
  60. package/dist/src/modelShared/modelPropsInfo.mjs +9 -0
  61. package/dist/src/modelShared/modelSymbols.mjs +5 -0
  62. package/dist/src/modelShared/newModel.mjs +13 -0
  63. package/dist/src/modelShared/prop.mjs +138 -0
  64. package/dist/src/modelShared/utils.mjs +10 -0
  65. package/dist/src/parent/core.mjs +34 -0
  66. package/dist/src/parent/coreObjectChildren.mjs +98 -0
  67. package/dist/src/parent/detach.mjs +32 -0
  68. package/dist/src/parent/findChildren.mjs +16 -0
  69. package/dist/src/parent/findParent.mjs +30 -0
  70. package/dist/src/parent/getChildrenObjects.mjs +12 -0
  71. package/dist/src/parent/onChildAttachedTo.mjs +101 -0
  72. package/dist/src/parent/path.mjs +149 -0
  73. package/dist/src/parent/path2.mjs +12 -0
  74. package/dist/src/parent/setParent.mjs +83 -0
  75. package/dist/src/parent/walkTree.mjs +104 -0
  76. package/dist/src/patch/applyPatches.mjs +118 -0
  77. package/dist/src/patch/emitPatch.mjs +100 -0
  78. package/dist/src/patch/jsonPatch.mjs +60 -0
  79. package/dist/src/patch/patchRecorder.mjs +75 -0
  80. package/dist/src/redux/connectReduxDevTools.mjs +153 -0
  81. package/dist/src/redux/redux.mjs +60 -0
  82. package/dist/src/ref/Ref.mjs +38 -0
  83. package/dist/src/ref/core.mjs +179 -0
  84. package/dist/src/ref/customRef.mjs +9 -0
  85. package/dist/src/ref/rootRef.mjs +34 -0
  86. package/dist/src/rootStore/attachDetach.mjs +53 -0
  87. package/dist/src/rootStore/rootStore.mjs +50 -0
  88. package/dist/src/snapshot/SnapshotterAndReconcilerPriority.mjs +9 -0
  89. package/dist/src/snapshot/applySnapshot.mjs +92 -0
  90. package/dist/src/snapshot/clone.mjs +29 -0
  91. package/dist/src/snapshot/fromArraySnapshot.mjs +23 -0
  92. package/dist/src/snapshot/fromFrozenSnapshot.mjs +13 -0
  93. package/dist/src/snapshot/fromModelSnapshot.mjs +38 -0
  94. package/dist/src/snapshot/fromPlainObjectSnapshot.mjs +26 -0
  95. package/dist/src/snapshot/fromSnapshot.mjs +91 -0
  96. package/dist/src/snapshot/getSnapshot.mjs +27 -0
  97. package/dist/src/snapshot/internal.mjs +97 -0
  98. package/dist/src/snapshot/onSnapshot.mjs +16 -0
  99. package/dist/src/snapshot/reconcileArraySnapshot.mjs +40 -0
  100. package/dist/src/snapshot/reconcileFrozenSnapshot.mjs +19 -0
  101. package/dist/src/snapshot/reconcileModelSnapshot.mjs +77 -0
  102. package/dist/src/snapshot/reconcilePlainObjectSnapshot.mjs +47 -0
  103. package/dist/src/snapshot/reconcileSnapshot.mjs +49 -0
  104. package/dist/src/snapshot/registerDefaultReconcilers.mjs +17 -0
  105. package/dist/src/snapshot/registerDefaultSnapshotters.mjs +17 -0
  106. package/dist/src/standardActions/actions.mjs +35 -0
  107. package/dist/src/standardActions/arrayActions.mjs +66 -0
  108. package/dist/src/standardActions/objectActions.mjs +36 -0
  109. package/dist/src/standardActions/standaloneActions.mjs +9 -0
  110. package/dist/src/transforms/ImmutableDate.mjs +51 -0
  111. package/dist/src/transforms/asMap.mjs +29 -0
  112. package/dist/src/transforms/asSet.mjs +12 -0
  113. package/dist/src/transforms/bigint.mjs +14 -0
  114. package/dist/src/transforms/date.mjs +27 -0
  115. package/dist/src/treeUtils/deepEquals.mjs +40 -0
  116. package/dist/src/treeUtils/draft.mjs +116 -0
  117. package/dist/src/treeUtils/sandbox.mjs +158 -0
  118. package/dist/src/tweaker/TweakerPriority.mjs +9 -0
  119. package/dist/src/tweaker/core.mjs +38 -0
  120. package/dist/src/tweaker/registerDefaultTweakers.mjs +17 -0
  121. package/dist/src/tweaker/tweak.mjs +109 -0
  122. package/dist/src/tweaker/tweakArray.mjs +272 -0
  123. package/dist/src/tweaker/tweakFrozen.mjs +28 -0
  124. package/dist/src/tweaker/tweakModel.mjs +26 -0
  125. package/dist/src/tweaker/tweakPlainObject.mjs +205 -0
  126. package/dist/src/tweaker/typeChecking.mjs +46 -0
  127. package/dist/src/tweaker/withoutTypeChecking.mjs +15 -0
  128. package/dist/src/types/TypeCheckError.mjs +31 -0
  129. package/dist/src/types/TypeChecker.mjs +165 -0
  130. package/dist/src/types/arrayBased/array.mjs +68 -0
  131. package/dist/src/types/arrayBased/tuple.mjs +71 -0
  132. package/dist/src/types/getTypeInfo.mjs +12 -0
  133. package/dist/src/types/objectBased/arraySet.mjs +83 -0
  134. package/dist/src/types/objectBased/dataModelData.mjs +95 -0
  135. package/dist/src/types/objectBased/model.mjs +133 -0
  136. package/dist/src/types/objectBased/object.mjs +119 -0
  137. package/dist/src/types/objectBased/objectMap.mjs +90 -0
  138. package/dist/src/types/objectBased/record.mjs +80 -0
  139. package/dist/src/types/objectBased/ref.mjs +62 -0
  140. package/dist/src/types/primitiveBased/enum.mjs +20 -0
  141. package/dist/src/types/primitiveBased/primitives.mjs +59 -0
  142. package/dist/src/types/primitiveBased/refinedPrimitives.mjs +6 -0
  143. package/dist/src/types/registerDefaultStandardTypeResolvers.mjs +13 -0
  144. package/dist/src/types/resolveTypeChecker.mjs +52 -0
  145. package/dist/src/types/tProp.mjs +53 -0
  146. package/dist/src/types/typeCheck.mjs +11 -0
  147. package/dist/src/types/types.mjs +69 -0
  148. package/dist/src/types/utility/maybe.mjs +10 -0
  149. package/dist/src/types/utility/or.mjs +99 -0
  150. package/dist/src/types/utility/refinement.mjs +52 -0
  151. package/dist/src/types/utility/unchecked.mjs +10 -0
  152. package/dist/src/utils/ModelPool.mjs +50 -0
  153. package/dist/src/utils/chainFns.mjs +15 -0
  154. package/dist/src/utils/index.mjs +228 -0
  155. package/dist/src/utils/mapUtils.mjs +10 -0
  156. package/dist/src/utils/tag.mjs +16 -0
  157. package/dist/src/wrappers/ArraySet.mjs +85 -0
  158. package/dist/src/wrappers/ObjectMap.mjs +96 -0
  159. package/dist/src/wrappers/asMap.mjs +181 -0
  160. package/dist/src/wrappers/asSet.mjs +97 -0
  161. package/package.json +8 -11
  162. package/src/dist/action/actionDecoratorUtils.d.ts +5 -0
  163. package/src/dist/action/applyAction.d.ts +36 -0
  164. package/src/dist/action/applyDelete.d.ts +7 -0
  165. package/src/dist/action/applyMethodCall.d.ts +9 -0
  166. package/src/dist/action/applySet.d.ts +8 -0
  167. package/src/dist/action/builtInActions.d.ts +39 -0
  168. package/src/dist/action/context.d.ts +85 -0
  169. package/src/dist/action/hookActions.d.ts +32 -0
  170. package/src/dist/action/index.d.ts +12 -0
  171. package/src/dist/action/isModelAction.d.ts +7 -0
  172. package/src/dist/action/middleware.d.ts +34 -0
  173. package/src/dist/action/modelAction.d.ts +9 -0
  174. package/src/dist/action/modelFlow.d.ts +34 -0
  175. package/src/dist/action/pendingActions.d.ts +1 -0
  176. package/src/dist/action/protection.d.ts +1 -0
  177. package/src/dist/action/runUnprotected.d.ts +19 -0
  178. package/src/dist/action/wrapInAction.d.ts +1 -0
  179. package/src/dist/actionMiddlewares/actionSerialization/actionSerialization.d.ts +84 -0
  180. package/src/dist/actionMiddlewares/actionSerialization/applySerializedAction.d.ts +45 -0
  181. package/src/dist/actionMiddlewares/actionSerialization/arraySerializer.d.ts +3 -0
  182. package/src/dist/actionMiddlewares/actionSerialization/core.d.ts +28 -0
  183. package/src/dist/actionMiddlewares/actionSerialization/dateSerializer.d.ts +2 -0
  184. package/src/dist/actionMiddlewares/actionSerialization/index.d.ts +3 -0
  185. package/src/dist/actionMiddlewares/actionSerialization/mapSerializer.d.ts +6 -0
  186. package/src/dist/actionMiddlewares/actionSerialization/objectPathSerializer.d.ts +8 -0
  187. package/src/dist/actionMiddlewares/actionSerialization/objectSnapshotSerializer.d.ts +2 -0
  188. package/src/dist/actionMiddlewares/actionSerialization/plainObjectSerializer.d.ts +2 -0
  189. package/src/dist/actionMiddlewares/actionSerialization/primitiveSerializer.d.ts +2 -0
  190. package/src/dist/actionMiddlewares/actionSerialization/setSerializer.d.ts +3 -0
  191. package/src/dist/actionMiddlewares/actionTrackingMiddleware.d.ts +122 -0
  192. package/src/dist/actionMiddlewares/index.d.ts +6 -0
  193. package/src/dist/actionMiddlewares/onActionMiddleware.d.ts +26 -0
  194. package/src/dist/actionMiddlewares/readonlyMiddleware.d.ts +35 -0
  195. package/src/dist/actionMiddlewares/transactionMiddleware.d.ts +21 -0
  196. package/src/dist/actionMiddlewares/undoMiddleware.d.ts +283 -0
  197. package/src/dist/actionMiddlewares/utils.d.ts +1 -0
  198. package/src/dist/computedTree/computedTree.d.ts +16 -0
  199. package/src/dist/computedTree/index.d.ts +1 -0
  200. package/src/dist/context/context.d.ts +84 -0
  201. package/src/dist/context/index.d.ts +1 -0
  202. package/src/dist/dataModel/BaseDataModel.d.ts +52 -0
  203. package/src/dist/dataModel/DataModel.d.ts +47 -0
  204. package/src/dist/dataModel/DataModelConstructorOptions.d.ts +1 -0
  205. package/src/dist/dataModel/actions.d.ts +1 -0
  206. package/src/dist/dataModel/getDataModelMetadata.d.ts +19 -0
  207. package/src/dist/dataModel/index.d.ts +4 -0
  208. package/src/dist/dataModel/newDataModel.d.ts +1 -0
  209. package/src/dist/dataModel/utils.d.ts +8 -0
  210. package/src/dist/frozen/Frozen.d.ts +50 -0
  211. package/src/dist/frozen/index.d.ts +1 -0
  212. package/src/dist/globalConfig/globalConfig.d.ts +51 -0
  213. package/src/dist/globalConfig/index.d.ts +1 -0
  214. package/src/dist/index.d.ts +23 -0
  215. package/src/dist/mobx-keystone.umd.js +8201 -0
  216. package/src/dist/model/BaseModel.d.ts +125 -0
  217. package/src/dist/model/Model.d.ts +94 -0
  218. package/src/dist/model/ModelConstructorOptions.d.ts +1 -0
  219. package/src/dist/model/getModelMetadata.d.ts +27 -0
  220. package/src/dist/model/index.d.ts +5 -0
  221. package/src/dist/model/metadata.d.ts +8 -0
  222. package/src/dist/model/newModel.d.ts +1 -0
  223. package/src/dist/model/utils.d.ts +8 -0
  224. package/src/dist/modelShared/BaseModelShared.d.ts +76 -0
  225. package/src/dist/modelShared/Model.d.ts +15 -0
  226. package/src/dist/modelShared/checkModelDecoratorArgs.d.ts +1 -0
  227. package/src/dist/modelShared/index.d.ts +3 -0
  228. package/src/dist/modelShared/modelClassInitializer.d.ts +1 -0
  229. package/src/dist/modelShared/modelDecorator.d.ts +24 -0
  230. package/src/dist/modelShared/modelInfo.d.ts +1 -0
  231. package/src/dist/modelShared/modelPropsInfo.d.ts +1 -0
  232. package/src/dist/modelShared/modelSymbols.d.ts +3 -0
  233. package/src/dist/modelShared/newModel.d.ts +4 -0
  234. package/src/dist/modelShared/prop.d.ts +179 -0
  235. package/src/dist/modelShared/utils.d.ts +1 -0
  236. package/src/dist/parent/core.d.ts +1 -0
  237. package/src/dist/parent/coreObjectChildren.d.ts +1 -0
  238. package/src/dist/parent/detach.d.ts +9 -0
  239. package/src/dist/parent/findChildren.d.ts +13 -0
  240. package/src/dist/parent/findParent.d.ts +41 -0
  241. package/src/dist/parent/getChildrenObjects.d.ts +11 -0
  242. package/src/dist/parent/index.d.ts +9 -0
  243. package/src/dist/parent/onChildAttachedTo.d.ts +22 -0
  244. package/src/dist/parent/path.d.ts +107 -0
  245. package/src/dist/parent/path2.d.ts +16 -0
  246. package/src/dist/parent/pathTypes.d.ts +12 -0
  247. package/src/dist/parent/setParent.d.ts +1 -0
  248. package/src/dist/parent/walkTree.d.ts +25 -0
  249. package/src/dist/patch/Patch.d.ts +16 -0
  250. package/src/dist/patch/applyPatches.d.ts +9 -0
  251. package/src/dist/patch/emitPatch.d.ts +29 -0
  252. package/src/dist/patch/index.d.ts +5 -0
  253. package/src/dist/patch/jsonPatch.d.ts +45 -0
  254. package/src/dist/patch/patchRecorder.d.ts +70 -0
  255. package/src/dist/redux/connectReduxDevTools.d.ts +12 -0
  256. package/src/dist/redux/index.d.ts +2 -0
  257. package/src/dist/redux/redux.d.ts +47 -0
  258. package/src/dist/ref/Ref.d.ts +53 -0
  259. package/src/dist/ref/core.d.ts +46 -0
  260. package/src/dist/ref/customRef.d.ts +38 -0
  261. package/src/dist/ref/index.d.ts +4 -0
  262. package/src/dist/ref/rootRef.d.ts +33 -0
  263. package/src/dist/rootStore/attachDetach.d.ts +1 -0
  264. package/src/dist/rootStore/index.d.ts +1 -0
  265. package/src/dist/rootStore/rootStore.d.ts +33 -0
  266. package/src/dist/snapshot/SnapshotOf.d.ts +47 -0
  267. package/src/dist/snapshot/SnapshotterAndReconcilerPriority.d.ts +1 -0
  268. package/src/dist/snapshot/applySnapshot.d.ts +17 -0
  269. package/src/dist/snapshot/clone.d.ts +18 -0
  270. package/src/dist/snapshot/fromArraySnapshot.d.ts +1 -0
  271. package/src/dist/snapshot/fromFrozenSnapshot.d.ts +1 -0
  272. package/src/dist/snapshot/fromModelSnapshot.d.ts +1 -0
  273. package/src/dist/snapshot/fromPlainObjectSnapshot.d.ts +1 -0
  274. package/src/dist/snapshot/fromSnapshot.d.ts +36 -0
  275. package/src/dist/snapshot/getSnapshot.d.ts +22 -0
  276. package/src/dist/snapshot/index.d.ts +6 -0
  277. package/src/dist/snapshot/internal.d.ts +1 -0
  278. package/src/dist/snapshot/onSnapshot.d.ts +18 -0
  279. package/src/dist/snapshot/reconcileArraySnapshot.d.ts +1 -0
  280. package/src/dist/snapshot/reconcileFrozenSnapshot.d.ts +1 -0
  281. package/src/dist/snapshot/reconcileModelSnapshot.d.ts +1 -0
  282. package/src/dist/snapshot/reconcilePlainObjectSnapshot.d.ts +1 -0
  283. package/src/dist/snapshot/reconcileSnapshot.d.ts +1 -0
  284. package/src/dist/snapshot/registerDefaultReconcilers.d.ts +1 -0
  285. package/src/dist/snapshot/registerDefaultSnapshotters.d.ts +1 -0
  286. package/src/dist/standardActions/actions.d.ts +1 -0
  287. package/src/dist/standardActions/arrayActions.d.ts +18 -0
  288. package/src/dist/standardActions/index.d.ts +3 -0
  289. package/src/dist/standardActions/objectActions.d.ts +7 -0
  290. package/src/dist/standardActions/standaloneActions.d.ts +16 -0
  291. package/src/dist/transforms/ImmutableDate.d.ts +1 -0
  292. package/src/dist/transforms/asMap.d.ts +3 -0
  293. package/src/dist/transforms/asSet.d.ts +2 -0
  294. package/src/dist/transforms/bigint.d.ts +2 -0
  295. package/src/dist/transforms/date.d.ts +3 -0
  296. package/src/dist/transforms/index.d.ts +4 -0
  297. package/src/dist/treeUtils/deepEquals.d.ts +20 -0
  298. package/src/dist/treeUtils/draft.d.ts +70 -0
  299. package/src/dist/treeUtils/index.d.ts +3 -0
  300. package/src/dist/treeUtils/sandbox.d.ts +85 -0
  301. package/src/dist/tweaker/TweakerPriority.d.ts +1 -0
  302. package/src/dist/tweaker/core.d.ts +14 -0
  303. package/src/dist/tweaker/index.d.ts +2 -0
  304. package/src/dist/tweaker/registerDefaultTweakers.d.ts +1 -0
  305. package/src/dist/tweaker/tweak.d.ts +22 -0
  306. package/src/dist/tweaker/tweakArray.d.ts +1 -0
  307. package/src/dist/tweaker/tweakFrozen.d.ts +1 -0
  308. package/src/dist/tweaker/tweakModel.d.ts +1 -0
  309. package/src/dist/tweaker/tweakPlainObject.d.ts +1 -0
  310. package/src/dist/tweaker/typeChecking.d.ts +1 -0
  311. package/src/dist/tweaker/withoutTypeChecking.d.ts +2 -0
  312. package/src/dist/types/TypeCheckError.d.ts +22 -0
  313. package/src/dist/types/TypeChecker.d.ts +8 -0
  314. package/src/dist/types/arrayBased/array.d.ts +23 -0
  315. package/src/dist/types/arrayBased/tuple.d.ts +24 -0
  316. package/src/dist/types/getTypeInfo.d.ts +9 -0
  317. package/src/dist/types/index.d.ts +5 -0
  318. package/src/dist/types/objectBased/arraySet.d.ts +24 -0
  319. package/src/dist/types/objectBased/dataModelData.d.ts +44 -0
  320. package/src/dist/types/objectBased/model.d.ts +43 -0
  321. package/src/dist/types/objectBased/object.d.ts +63 -0
  322. package/src/dist/types/objectBased/objectMap.d.ts +24 -0
  323. package/src/dist/types/objectBased/record.d.ts +24 -0
  324. package/src/dist/types/objectBased/ref.d.ts +21 -0
  325. package/src/dist/types/primitiveBased/enum.d.ts +34 -0
  326. package/src/dist/types/primitiveBased/primitives.d.ts +81 -0
  327. package/src/dist/types/primitiveBased/refinedPrimitives.d.ts +18 -0
  328. package/src/dist/types/registerDefaultStandardTypeResolvers.d.ts +1 -0
  329. package/src/dist/types/resolveTypeChecker.d.ts +1 -0
  330. package/src/dist/types/schemas.d.ts +53 -0
  331. package/src/dist/types/tProp.d.ts +92 -0
  332. package/src/dist/types/typeCheck.d.ts +11 -0
  333. package/src/dist/types/types.d.ts +51 -0
  334. package/src/dist/types/utility/maybe.d.ts +29 -0
  335. package/src/dist/types/utility/or.d.ts +35 -0
  336. package/src/dist/types/utility/refinement.d.ts +45 -0
  337. package/src/dist/types/utility/unchecked.d.ts +22 -0
  338. package/src/dist/utils/ModelPool.d.ts +7 -0
  339. package/src/dist/utils/chainFns.d.ts +1 -0
  340. package/src/dist/utils/index.d.ts +6 -0
  341. package/src/dist/utils/mapUtils.d.ts +2 -0
  342. package/src/dist/utils/tag.d.ts +13 -0
  343. package/src/dist/utils/types.d.ts +39 -0
  344. package/src/dist/wrappers/ArraySet.d.ts +29 -0
  345. package/src/dist/wrappers/ObjectMap.d.ts +32 -0
  346. package/src/dist/wrappers/asMap.d.ts +29 -0
  347. package/src/dist/wrappers/asSet.d.ts +15 -0
  348. package/src/dist/wrappers/index.d.ts +4 -0
  349. package/dist/mobx-keystone.es.js +0 -7934
  350. 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=