mobx-keystone 0.67.4 → 0.68.1-alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/_virtual/_tslib.mjs +12 -0
  3. package/dist/mobx-keystone.umd.js +5339 -5261
  4. package/dist/model/utils.d.ts +1 -1
  5. package/dist/node_modules/fast-deep-equal/es6/index.mjs +68 -0
  6. package/dist/node_modules/nanoid/non-secure/index.mjs +11 -0
  7. package/dist/snapshot/index.d.ts +0 -8
  8. package/dist/{dataModel/_BaseDataModel.d.ts → snapshot/registerDefaultReconcilers.d.ts} +0 -0
  9. package/dist/{model/_BaseModel.d.ts → snapshot/registerDefaultSnapshotters.d.ts} +0 -0
  10. package/dist/src/action/actionDecoratorUtils.mjs +25 -0
  11. package/dist/src/action/applyAction.mjs +54 -0
  12. package/dist/src/action/applyDelete.mjs +20 -0
  13. package/dist/src/action/applyMethodCall.mjs +19 -0
  14. package/dist/src/action/applySet.mjs +25 -0
  15. package/dist/src/action/builtInActions.mjs +15 -0
  16. package/dist/src/action/context.mjs +22 -0
  17. package/dist/src/action/hookActions.mjs +13 -0
  18. package/dist/src/action/isModelAction.mjs +6 -0
  19. package/dist/src/action/middleware.mjs +84 -0
  20. package/dist/src/action/modelAction.mjs +34 -0
  21. package/dist/src/action/modelFlow.mjs +251 -0
  22. package/dist/src/action/pendingActions.mjs +30 -0
  23. package/dist/src/action/protection.mjs +19 -0
  24. package/dist/src/action/runUnprotected.mjs +24 -0
  25. package/dist/src/action/wrapInAction.mjs +90 -0
  26. package/dist/src/actionMiddlewares/actionSerialization/actionSerialization.mjs +131 -0
  27. package/dist/src/actionMiddlewares/actionSerialization/applySerializedAction.mjs +110 -0
  28. package/dist/src/actionMiddlewares/actionSerialization/arraySerializer.mjs +15 -0
  29. package/dist/src/actionMiddlewares/actionSerialization/core.mjs +3 -0
  30. package/dist/src/actionMiddlewares/actionSerialization/dateSerializer.mjs +15 -0
  31. package/dist/src/actionMiddlewares/actionSerialization/mapSerializer.mjs +32 -0
  32. package/dist/src/actionMiddlewares/actionSerialization/objectPathSerializer.mjs +33 -0
  33. package/dist/src/actionMiddlewares/actionSerialization/objectSnapshotSerializer.mjs +18 -0
  34. package/dist/src/actionMiddlewares/actionSerialization/plainObjectSerializer.mjs +27 -0
  35. package/dist/src/actionMiddlewares/actionSerialization/primitiveSerializer.mjs +39 -0
  36. package/dist/src/actionMiddlewares/actionSerialization/setSerializer.mjs +29 -0
  37. package/dist/src/actionMiddlewares/actionTrackingMiddleware.mjs +239 -0
  38. package/dist/src/actionMiddlewares/onActionMiddleware.mjs +44 -0
  39. package/dist/src/actionMiddlewares/readonlyMiddleware.mjs +49 -0
  40. package/dist/src/actionMiddlewares/transactionMiddleware.mjs +69 -0
  41. package/dist/src/actionMiddlewares/undoMiddleware.mjs +472 -0
  42. package/dist/src/actionMiddlewares/utils.mjs +25 -0
  43. package/dist/src/computedTree/computedTree.mjs +63 -0
  44. package/dist/src/context/context.mjs +141 -0
  45. package/dist/src/dataModel/BaseDataModel.mjs +108 -0
  46. package/dist/src/dataModel/DataModel.mjs +32 -0
  47. package/dist/src/dataModel/actions.mjs +12 -0
  48. package/dist/src/dataModel/getDataModelMetadata.mjs +14 -0
  49. package/dist/src/dataModel/newDataModel.mjs +31 -0
  50. package/dist/src/dataModel/utils.mjs +29 -0
  51. package/dist/src/frozen/Frozen.mjs +68 -0
  52. package/dist/src/globalConfig/globalConfig.mjs +57 -0
  53. package/dist/src/index.mjs +97 -0
  54. package/dist/src/model/BaseModel.mjs +118 -0
  55. package/dist/src/model/Model.mjs +36 -0
  56. package/dist/src/model/getModelMetadata.mjs +19 -0
  57. package/dist/src/model/metadata.mjs +7 -0
  58. package/dist/src/model/newModel.mjs +95 -0
  59. package/dist/src/model/utils.mjs +33 -0
  60. package/dist/src/modelShared/BaseModelShared.mjs +9 -0
  61. package/dist/src/modelShared/Model.mjs +249 -0
  62. package/dist/src/modelShared/checkModelDecoratorArgs.mjs +21 -0
  63. package/dist/src/modelShared/modelClassInitializer.mjs +14 -0
  64. package/dist/src/modelShared/modelDecorator.mjs +117 -0
  65. package/dist/src/modelShared/modelInfo.mjs +7 -0
  66. package/dist/src/modelShared/modelPropsInfo.mjs +9 -0
  67. package/dist/src/modelShared/modelSymbols.mjs +5 -0
  68. package/dist/src/modelShared/newModel.mjs +13 -0
  69. package/dist/src/modelShared/prop.mjs +138 -0
  70. package/dist/src/modelShared/utils.mjs +10 -0
  71. package/dist/src/parent/core.mjs +34 -0
  72. package/dist/src/parent/coreObjectChildren.mjs +98 -0
  73. package/dist/src/parent/detach.mjs +32 -0
  74. package/dist/src/parent/findChildren.mjs +16 -0
  75. package/dist/src/parent/findParent.mjs +30 -0
  76. package/dist/src/parent/getChildrenObjects.mjs +12 -0
  77. package/dist/src/parent/onChildAttachedTo.mjs +101 -0
  78. package/dist/src/parent/path.mjs +149 -0
  79. package/dist/src/parent/path2.mjs +12 -0
  80. package/dist/src/parent/setParent.mjs +83 -0
  81. package/dist/src/parent/walkTree.mjs +104 -0
  82. package/dist/src/patch/applyPatches.mjs +118 -0
  83. package/dist/src/patch/emitPatch.mjs +100 -0
  84. package/dist/src/patch/jsonPatch.mjs +60 -0
  85. package/dist/src/patch/patchRecorder.mjs +75 -0
  86. package/dist/src/redux/connectReduxDevTools.mjs +153 -0
  87. package/dist/src/redux/redux.mjs +60 -0
  88. package/dist/src/ref/Ref.mjs +38 -0
  89. package/dist/src/ref/core.mjs +179 -0
  90. package/dist/src/ref/customRef.mjs +9 -0
  91. package/dist/src/ref/rootRef.mjs +34 -0
  92. package/dist/src/rootStore/attachDetach.mjs +53 -0
  93. package/dist/src/rootStore/rootStore.mjs +50 -0
  94. package/dist/src/snapshot/SnapshotterAndReconcilerPriority.mjs +9 -0
  95. package/dist/src/snapshot/applySnapshot.mjs +92 -0
  96. package/dist/src/snapshot/clone.mjs +29 -0
  97. package/dist/src/snapshot/fromArraySnapshot.mjs +23 -0
  98. package/dist/src/snapshot/fromFrozenSnapshot.mjs +13 -0
  99. package/dist/src/snapshot/fromModelSnapshot.mjs +38 -0
  100. package/dist/src/snapshot/fromPlainObjectSnapshot.mjs +26 -0
  101. package/dist/src/snapshot/fromSnapshot.mjs +91 -0
  102. package/dist/src/snapshot/getSnapshot.mjs +27 -0
  103. package/dist/src/snapshot/internal.mjs +97 -0
  104. package/dist/src/snapshot/onSnapshot.mjs +16 -0
  105. package/dist/src/snapshot/reconcileArraySnapshot.mjs +40 -0
  106. package/dist/src/snapshot/reconcileFrozenSnapshot.mjs +19 -0
  107. package/dist/src/snapshot/reconcileModelSnapshot.mjs +77 -0
  108. package/dist/src/snapshot/reconcilePlainObjectSnapshot.mjs +47 -0
  109. package/dist/src/snapshot/reconcileSnapshot.mjs +49 -0
  110. package/dist/src/snapshot/registerDefaultReconcilers.mjs +17 -0
  111. package/dist/src/snapshot/registerDefaultSnapshotters.mjs +17 -0
  112. package/dist/src/standardActions/actions.mjs +35 -0
  113. package/dist/src/standardActions/arrayActions.mjs +66 -0
  114. package/dist/src/standardActions/objectActions.mjs +36 -0
  115. package/dist/src/standardActions/standaloneActions.mjs +9 -0
  116. package/dist/src/transforms/ImmutableDate.mjs +51 -0
  117. package/dist/src/transforms/asMap.mjs +29 -0
  118. package/dist/src/transforms/asSet.mjs +12 -0
  119. package/dist/src/transforms/bigint.mjs +14 -0
  120. package/dist/src/transforms/date.mjs +27 -0
  121. package/dist/src/treeUtils/deepEquals.mjs +40 -0
  122. package/dist/src/treeUtils/draft.mjs +116 -0
  123. package/dist/src/treeUtils/sandbox.mjs +158 -0
  124. package/dist/src/tweaker/TweakerPriority.mjs +9 -0
  125. package/dist/src/tweaker/core.mjs +38 -0
  126. package/dist/src/tweaker/registerDefaultTweakers.mjs +17 -0
  127. package/dist/src/tweaker/tweak.mjs +109 -0
  128. package/dist/src/tweaker/tweakArray.mjs +272 -0
  129. package/dist/src/tweaker/tweakFrozen.mjs +28 -0
  130. package/dist/src/tweaker/tweakModel.mjs +26 -0
  131. package/dist/src/tweaker/tweakPlainObject.mjs +205 -0
  132. package/dist/src/tweaker/typeChecking.mjs +46 -0
  133. package/dist/src/tweaker/withoutTypeChecking.mjs +15 -0
  134. package/dist/src/types/TypeCheckError.mjs +31 -0
  135. package/dist/src/types/TypeChecker.mjs +165 -0
  136. package/dist/src/types/arrayBased/array.mjs +68 -0
  137. package/dist/src/types/arrayBased/tuple.mjs +71 -0
  138. package/dist/src/types/getTypeInfo.mjs +12 -0
  139. package/dist/src/types/objectBased/arraySet.mjs +83 -0
  140. package/dist/src/types/objectBased/dataModelData.mjs +95 -0
  141. package/dist/src/types/objectBased/model.mjs +133 -0
  142. package/dist/src/types/objectBased/object.mjs +119 -0
  143. package/dist/src/types/objectBased/objectMap.mjs +90 -0
  144. package/dist/src/types/objectBased/record.mjs +80 -0
  145. package/dist/src/types/objectBased/ref.mjs +62 -0
  146. package/dist/src/types/primitiveBased/enum.mjs +20 -0
  147. package/dist/src/types/primitiveBased/primitives.mjs +59 -0
  148. package/dist/src/types/primitiveBased/refinedPrimitives.mjs +6 -0
  149. package/dist/src/types/registerDefaultStandardTypeResolvers.mjs +13 -0
  150. package/dist/src/types/resolveTypeChecker.mjs +52 -0
  151. package/dist/src/types/tProp.mjs +53 -0
  152. package/dist/src/types/typeCheck.mjs +11 -0
  153. package/dist/src/types/types.mjs +69 -0
  154. package/dist/src/types/utility/maybe.mjs +10 -0
  155. package/dist/src/types/utility/or.mjs +99 -0
  156. package/dist/src/types/utility/refinement.mjs +52 -0
  157. package/dist/src/types/utility/unchecked.mjs +10 -0
  158. package/dist/src/utils/ModelPool.mjs +50 -0
  159. package/dist/src/utils/chainFns.mjs +15 -0
  160. package/dist/src/utils/index.mjs +228 -0
  161. package/dist/src/utils/mapUtils.mjs +10 -0
  162. package/dist/src/utils/tag.mjs +16 -0
  163. package/dist/src/wrappers/ArraySet.mjs +85 -0
  164. package/dist/src/wrappers/ObjectMap.mjs +96 -0
  165. package/dist/src/wrappers/asMap.mjs +181 -0
  166. package/dist/src/wrappers/asSet.mjs +97 -0
  167. package/dist/tweaker/index.d.ts +0 -4
  168. package/dist/tweaker/registerDefaultTweakers.d.ts +1 -0
  169. package/dist/types/registerDefaultStandardTypeResolvers.d.ts +1 -0
  170. package/package.json +12 -14
  171. package/src/actionMiddlewares/actionSerialization/actionSerialization.ts +24 -9
  172. package/src/dataModel/BaseDataModel.ts +0 -3
  173. package/src/dataModel/utils.ts +4 -4
  174. package/src/dist/action/actionDecoratorUtils.d.ts +5 -0
  175. package/src/dist/action/applyAction.d.ts +36 -0
  176. package/src/dist/action/applyDelete.d.ts +7 -0
  177. package/src/dist/action/applyMethodCall.d.ts +9 -0
  178. package/src/dist/action/applySet.d.ts +8 -0
  179. package/src/dist/action/builtInActions.d.ts +39 -0
  180. package/src/dist/action/context.d.ts +85 -0
  181. package/src/dist/action/hookActions.d.ts +32 -0
  182. package/src/dist/action/index.d.ts +12 -0
  183. package/src/dist/action/isModelAction.d.ts +7 -0
  184. package/src/dist/action/middleware.d.ts +34 -0
  185. package/src/dist/action/modelAction.d.ts +9 -0
  186. package/src/dist/action/modelFlow.d.ts +34 -0
  187. package/src/dist/action/pendingActions.d.ts +1 -0
  188. package/src/dist/action/protection.d.ts +1 -0
  189. package/src/dist/action/runUnprotected.d.ts +19 -0
  190. package/src/dist/action/wrapInAction.d.ts +1 -0
  191. package/src/dist/actionMiddlewares/actionSerialization/actionSerialization.d.ts +84 -0
  192. package/src/dist/actionMiddlewares/actionSerialization/applySerializedAction.d.ts +45 -0
  193. package/src/dist/actionMiddlewares/actionSerialization/arraySerializer.d.ts +3 -0
  194. package/src/dist/actionMiddlewares/actionSerialization/core.d.ts +28 -0
  195. package/src/dist/actionMiddlewares/actionSerialization/dateSerializer.d.ts +2 -0
  196. package/src/dist/actionMiddlewares/actionSerialization/index.d.ts +3 -0
  197. package/src/dist/actionMiddlewares/actionSerialization/mapSerializer.d.ts +6 -0
  198. package/src/dist/actionMiddlewares/actionSerialization/objectPathSerializer.d.ts +8 -0
  199. package/src/dist/actionMiddlewares/actionSerialization/objectSnapshotSerializer.d.ts +2 -0
  200. package/src/dist/actionMiddlewares/actionSerialization/plainObjectSerializer.d.ts +2 -0
  201. package/src/dist/actionMiddlewares/actionSerialization/primitiveSerializer.d.ts +2 -0
  202. package/src/dist/actionMiddlewares/actionSerialization/setSerializer.d.ts +3 -0
  203. package/src/dist/actionMiddlewares/actionTrackingMiddleware.d.ts +122 -0
  204. package/src/dist/actionMiddlewares/index.d.ts +6 -0
  205. package/src/dist/actionMiddlewares/onActionMiddleware.d.ts +26 -0
  206. package/src/dist/actionMiddlewares/readonlyMiddleware.d.ts +35 -0
  207. package/src/dist/actionMiddlewares/transactionMiddleware.d.ts +21 -0
  208. package/src/dist/actionMiddlewares/undoMiddleware.d.ts +283 -0
  209. package/src/dist/actionMiddlewares/utils.d.ts +1 -0
  210. package/src/dist/computedTree/computedTree.d.ts +16 -0
  211. package/src/dist/computedTree/index.d.ts +1 -0
  212. package/src/dist/context/context.d.ts +84 -0
  213. package/src/dist/context/index.d.ts +1 -0
  214. package/src/dist/dataModel/BaseDataModel.d.ts +52 -0
  215. package/src/dist/dataModel/DataModel.d.ts +47 -0
  216. package/src/dist/dataModel/DataModelConstructorOptions.d.ts +1 -0
  217. package/src/dist/dataModel/actions.d.ts +1 -0
  218. package/src/dist/dataModel/getDataModelMetadata.d.ts +19 -0
  219. package/src/dist/dataModel/index.d.ts +4 -0
  220. package/src/dist/dataModel/newDataModel.d.ts +1 -0
  221. package/src/dist/dataModel/utils.d.ts +8 -0
  222. package/src/dist/frozen/Frozen.d.ts +50 -0
  223. package/src/dist/frozen/index.d.ts +1 -0
  224. package/src/dist/globalConfig/globalConfig.d.ts +51 -0
  225. package/src/dist/globalConfig/index.d.ts +1 -0
  226. package/src/dist/index.d.ts +23 -0
  227. package/src/dist/mobx-keystone.umd.js +8201 -0
  228. package/src/dist/model/BaseModel.d.ts +125 -0
  229. package/src/dist/model/Model.d.ts +94 -0
  230. package/src/dist/model/ModelConstructorOptions.d.ts +1 -0
  231. package/src/dist/model/getModelMetadata.d.ts +27 -0
  232. package/src/dist/model/index.d.ts +5 -0
  233. package/src/dist/model/metadata.d.ts +8 -0
  234. package/src/dist/model/newModel.d.ts +1 -0
  235. package/src/dist/model/utils.d.ts +8 -0
  236. package/src/dist/modelShared/BaseModelShared.d.ts +76 -0
  237. package/src/dist/modelShared/Model.d.ts +15 -0
  238. package/src/dist/modelShared/checkModelDecoratorArgs.d.ts +1 -0
  239. package/src/dist/modelShared/index.d.ts +3 -0
  240. package/src/dist/modelShared/modelClassInitializer.d.ts +1 -0
  241. package/src/dist/modelShared/modelDecorator.d.ts +24 -0
  242. package/src/dist/modelShared/modelInfo.d.ts +1 -0
  243. package/src/dist/modelShared/modelPropsInfo.d.ts +1 -0
  244. package/src/dist/modelShared/modelSymbols.d.ts +3 -0
  245. package/src/dist/modelShared/newModel.d.ts +4 -0
  246. package/src/dist/modelShared/prop.d.ts +179 -0
  247. package/src/dist/modelShared/utils.d.ts +1 -0
  248. package/src/dist/parent/core.d.ts +1 -0
  249. package/src/dist/parent/coreObjectChildren.d.ts +1 -0
  250. package/src/dist/parent/detach.d.ts +9 -0
  251. package/src/dist/parent/findChildren.d.ts +13 -0
  252. package/src/dist/parent/findParent.d.ts +41 -0
  253. package/src/dist/parent/getChildrenObjects.d.ts +11 -0
  254. package/src/dist/parent/index.d.ts +9 -0
  255. package/src/dist/parent/onChildAttachedTo.d.ts +22 -0
  256. package/src/dist/parent/path.d.ts +107 -0
  257. package/src/dist/parent/path2.d.ts +16 -0
  258. package/src/dist/parent/pathTypes.d.ts +12 -0
  259. package/src/dist/parent/setParent.d.ts +1 -0
  260. package/src/dist/parent/walkTree.d.ts +25 -0
  261. package/src/dist/patch/Patch.d.ts +16 -0
  262. package/src/dist/patch/applyPatches.d.ts +9 -0
  263. package/src/dist/patch/emitPatch.d.ts +29 -0
  264. package/src/dist/patch/index.d.ts +5 -0
  265. package/src/dist/patch/jsonPatch.d.ts +45 -0
  266. package/src/dist/patch/patchRecorder.d.ts +70 -0
  267. package/src/dist/redux/connectReduxDevTools.d.ts +12 -0
  268. package/src/dist/redux/index.d.ts +2 -0
  269. package/src/dist/redux/redux.d.ts +47 -0
  270. package/src/dist/ref/Ref.d.ts +53 -0
  271. package/src/dist/ref/core.d.ts +46 -0
  272. package/src/dist/ref/customRef.d.ts +38 -0
  273. package/src/dist/ref/index.d.ts +4 -0
  274. package/src/dist/ref/rootRef.d.ts +33 -0
  275. package/src/dist/rootStore/attachDetach.d.ts +1 -0
  276. package/src/dist/rootStore/index.d.ts +1 -0
  277. package/src/dist/rootStore/rootStore.d.ts +33 -0
  278. package/src/dist/snapshot/SnapshotOf.d.ts +47 -0
  279. package/src/dist/snapshot/SnapshotterAndReconcilerPriority.d.ts +1 -0
  280. package/src/dist/snapshot/applySnapshot.d.ts +17 -0
  281. package/src/dist/snapshot/clone.d.ts +18 -0
  282. package/src/dist/snapshot/fromArraySnapshot.d.ts +1 -0
  283. package/src/dist/snapshot/fromFrozenSnapshot.d.ts +1 -0
  284. package/src/dist/snapshot/fromModelSnapshot.d.ts +1 -0
  285. package/src/dist/snapshot/fromPlainObjectSnapshot.d.ts +1 -0
  286. package/src/dist/snapshot/fromSnapshot.d.ts +36 -0
  287. package/src/dist/snapshot/getSnapshot.d.ts +22 -0
  288. package/src/dist/snapshot/index.d.ts +6 -0
  289. package/src/dist/snapshot/internal.d.ts +1 -0
  290. package/src/dist/snapshot/onSnapshot.d.ts +18 -0
  291. package/src/dist/snapshot/reconcileArraySnapshot.d.ts +1 -0
  292. package/src/dist/snapshot/reconcileFrozenSnapshot.d.ts +1 -0
  293. package/src/dist/snapshot/reconcileModelSnapshot.d.ts +1 -0
  294. package/src/dist/snapshot/reconcilePlainObjectSnapshot.d.ts +1 -0
  295. package/src/dist/snapshot/reconcileSnapshot.d.ts +1 -0
  296. package/src/dist/snapshot/registerDefaultReconcilers.d.ts +1 -0
  297. package/src/dist/snapshot/registerDefaultSnapshotters.d.ts +1 -0
  298. package/src/dist/standardActions/actions.d.ts +1 -0
  299. package/src/dist/standardActions/arrayActions.d.ts +18 -0
  300. package/src/dist/standardActions/index.d.ts +3 -0
  301. package/src/dist/standardActions/objectActions.d.ts +7 -0
  302. package/src/dist/standardActions/standaloneActions.d.ts +16 -0
  303. package/src/dist/transforms/ImmutableDate.d.ts +1 -0
  304. package/src/dist/transforms/asMap.d.ts +3 -0
  305. package/src/dist/transforms/asSet.d.ts +2 -0
  306. package/src/dist/transforms/bigint.d.ts +2 -0
  307. package/src/dist/transforms/date.d.ts +3 -0
  308. package/src/dist/transforms/index.d.ts +4 -0
  309. package/src/dist/treeUtils/deepEquals.d.ts +20 -0
  310. package/src/dist/treeUtils/draft.d.ts +70 -0
  311. package/src/dist/treeUtils/index.d.ts +3 -0
  312. package/src/dist/treeUtils/sandbox.d.ts +85 -0
  313. package/src/dist/tweaker/TweakerPriority.d.ts +1 -0
  314. package/src/dist/tweaker/core.d.ts +14 -0
  315. package/src/dist/tweaker/index.d.ts +2 -0
  316. package/src/dist/tweaker/registerDefaultTweakers.d.ts +1 -0
  317. package/src/dist/tweaker/tweak.d.ts +22 -0
  318. package/src/dist/tweaker/tweakArray.d.ts +1 -0
  319. package/src/dist/tweaker/tweakFrozen.d.ts +1 -0
  320. package/src/dist/tweaker/tweakModel.d.ts +1 -0
  321. package/src/dist/tweaker/tweakPlainObject.d.ts +1 -0
  322. package/src/dist/tweaker/typeChecking.d.ts +1 -0
  323. package/src/dist/tweaker/withoutTypeChecking.d.ts +2 -0
  324. package/src/dist/types/TypeCheckError.d.ts +22 -0
  325. package/src/dist/types/TypeChecker.d.ts +8 -0
  326. package/src/dist/types/arrayBased/array.d.ts +23 -0
  327. package/src/dist/types/arrayBased/tuple.d.ts +24 -0
  328. package/src/dist/types/getTypeInfo.d.ts +9 -0
  329. package/src/dist/types/index.d.ts +5 -0
  330. package/src/dist/types/objectBased/arraySet.d.ts +24 -0
  331. package/src/dist/types/objectBased/dataModelData.d.ts +44 -0
  332. package/src/dist/types/objectBased/model.d.ts +43 -0
  333. package/src/dist/types/objectBased/object.d.ts +63 -0
  334. package/src/dist/types/objectBased/objectMap.d.ts +24 -0
  335. package/src/dist/types/objectBased/record.d.ts +24 -0
  336. package/src/dist/types/objectBased/ref.d.ts +21 -0
  337. package/src/dist/types/primitiveBased/enum.d.ts +34 -0
  338. package/src/dist/types/primitiveBased/primitives.d.ts +81 -0
  339. package/src/dist/types/primitiveBased/refinedPrimitives.d.ts +18 -0
  340. package/src/dist/types/registerDefaultStandardTypeResolvers.d.ts +1 -0
  341. package/src/dist/types/resolveTypeChecker.d.ts +1 -0
  342. package/src/dist/types/schemas.d.ts +53 -0
  343. package/src/dist/types/tProp.d.ts +92 -0
  344. package/src/dist/types/typeCheck.d.ts +11 -0
  345. package/src/dist/types/types.d.ts +51 -0
  346. package/src/dist/types/utility/maybe.d.ts +29 -0
  347. package/src/dist/types/utility/or.d.ts +35 -0
  348. package/src/dist/types/utility/refinement.d.ts +45 -0
  349. package/src/dist/types/utility/unchecked.d.ts +22 -0
  350. package/src/dist/utils/ModelPool.d.ts +7 -0
  351. package/src/dist/utils/chainFns.d.ts +1 -0
  352. package/src/dist/utils/index.d.ts +6 -0
  353. package/src/dist/utils/mapUtils.d.ts +2 -0
  354. package/src/dist/utils/tag.d.ts +13 -0
  355. package/src/dist/utils/types.d.ts +39 -0
  356. package/src/dist/wrappers/ArraySet.d.ts +29 -0
  357. package/src/dist/wrappers/ObjectMap.d.ts +32 -0
  358. package/src/dist/wrappers/asMap.d.ts +29 -0
  359. package/src/dist/wrappers/asSet.d.ts +15 -0
  360. package/src/dist/wrappers/index.d.ts +4 -0
  361. package/src/model/BaseModel.ts +0 -3
  362. package/src/model/utils.ts +4 -5
  363. package/src/modelShared/checkModelDecoratorArgs.ts +6 -6
  364. package/src/parent/setParent.ts +2 -2
  365. package/src/rootStore/attachDetach.ts +2 -3
  366. package/src/snapshot/fromArraySnapshot.ts +11 -6
  367. package/src/snapshot/fromFrozenSnapshot.ts +11 -6
  368. package/src/snapshot/fromModelSnapshot.ts +11 -6
  369. package/src/snapshot/fromPlainObjectSnapshot.ts +11 -6
  370. package/src/snapshot/fromSnapshot.ts +3 -0
  371. package/src/snapshot/index.ts +0 -10
  372. package/src/snapshot/reconcileArraySnapshot.ts +11 -6
  373. package/src/snapshot/reconcileFrozenSnapshot.ts +11 -6
  374. package/src/snapshot/reconcileModelSnapshot.ts +11 -6
  375. package/src/snapshot/reconcilePlainObjectSnapshot.ts +11 -6
  376. package/src/snapshot/reconcileSnapshot.ts +3 -0
  377. package/src/snapshot/registerDefaultReconcilers.ts +21 -0
  378. package/src/snapshot/registerDefaultSnapshotters.ts +21 -0
  379. package/src/tweaker/index.ts +0 -6
  380. package/src/tweaker/registerDefaultTweakers.ts +21 -0
  381. package/src/tweaker/tweak.ts +3 -0
  382. package/src/tweaker/tweakArray.ts +406 -401
  383. package/src/tweaker/tweakFrozen.ts +11 -6
  384. package/src/tweaker/tweakModel.ts +11 -6
  385. package/src/tweaker/tweakPlainObject.ts +288 -283
  386. package/src/types/objectBased/model.ts +6 -1
  387. package/src/types/objectBased/ref.ts +1 -1
  388. package/src/types/primitiveBased/primitives.ts +177 -166
  389. package/src/types/registerDefaultStandardTypeResolvers.ts +17 -0
  390. package/src/types/resolveTypeChecker.ts +7 -1
  391. package/dist/mobx-keystone.es.js +0 -7856
  392. package/dist/mobx-keystone.es.mjs +0 -7856
  393. package/src/dataModel/_BaseDataModel.ts +0 -15
  394. package/src/model/_BaseModel.ts +0 -15
@@ -0,0 +1,96 @@
1
+ import { __decorate } from "../../_virtual/_tslib.mjs";
2
+ import { remove, get, has, set, keys, values, entries } from "mobx";
3
+ import { modelAction } from "../action/modelAction.mjs";
4
+ import { modelIdKey } from "../model/metadata.mjs";
5
+ import { Model } from "../model/Model.mjs";
6
+ import { model } from "../modelShared/modelDecorator.mjs";
7
+ import { idProp } from "../modelShared/prop.mjs";
8
+ import { typesRecord } from "../types/objectBased/record.mjs";
9
+ import { tProp } from "../types/tProp.mjs";
10
+ import { typesUnchecked } from "../types/utility/unchecked.mjs";
11
+ import { namespace } from "../utils/index.mjs";
12
+ let ObjectMap = class ObjectMap2 extends Model({
13
+ [modelIdKey]: idProp,
14
+ items: tProp(typesRecord(typesUnchecked()), () => ({}))
15
+ }) {
16
+ clear() {
17
+ const items = this.items;
18
+ const keys2 = Object.keys(items);
19
+ const len = keys2.length;
20
+ for (let i = 0; i < len; i++) {
21
+ const k = keys2[i];
22
+ remove(items, k);
23
+ }
24
+ }
25
+ delete(key) {
26
+ const hasKey = this.has(key);
27
+ if (hasKey) {
28
+ remove(this.items, key);
29
+ return true;
30
+ } else {
31
+ return false;
32
+ }
33
+ }
34
+ forEach(callbackfn, thisArg) {
35
+ const items = this.items;
36
+ const keys2 = Object.keys(items);
37
+ const len = keys2.length;
38
+ for (let i = 0; i < len; i++) {
39
+ const k = keys2[i];
40
+ callbackfn.call(thisArg, items[k], k, this);
41
+ }
42
+ }
43
+ get(key) {
44
+ return get(this.items, key);
45
+ }
46
+ has(key) {
47
+ return has(this.items, key);
48
+ }
49
+ set(key, value) {
50
+ set(this.items, key, value);
51
+ return this;
52
+ }
53
+ get size() {
54
+ return keys(this.items).length;
55
+ }
56
+ keys() {
57
+ return keys(this.items)[Symbol.iterator]();
58
+ }
59
+ values() {
60
+ return values(this.items)[Symbol.iterator]();
61
+ }
62
+ entries() {
63
+ return entries(this.items)[Symbol.iterator]();
64
+ }
65
+ [Symbol.iterator]() {
66
+ return this.entries();
67
+ }
68
+ get [Symbol.toStringTag]() {
69
+ return "ObjectMap";
70
+ }
71
+ };
72
+ __decorate([
73
+ modelAction
74
+ ], ObjectMap.prototype, "clear", null);
75
+ __decorate([
76
+ modelAction
77
+ ], ObjectMap.prototype, "delete", null);
78
+ __decorate([
79
+ modelAction
80
+ ], ObjectMap.prototype, "set", null);
81
+ ObjectMap = __decorate([
82
+ model(`${namespace}/ObjectMap`)
83
+ ], ObjectMap);
84
+ function objectMap(entries2) {
85
+ const initialObj = {};
86
+ if (entries2) {
87
+ let len = entries2.length;
88
+ for (let i = 0; i < len; i++) {
89
+ const entry = entries2[i];
90
+ initialObj[entry[0]] = entry[1];
91
+ }
92
+ }
93
+ return new ObjectMap({ items: initialObj });
94
+ }
95
+ export { ObjectMap, objectMap };
96
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT2JqZWN0TWFwLm1qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3dyYXBwZXJzL09iamVjdE1hcC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbnRyaWVzLCBnZXQsIGhhcywga2V5cywgcmVtb3ZlLCBzZXQsIHZhbHVlcyB9IGZyb20gXCJtb2J4XCJcbmltcG9ydCB7IG1vZGVsQWN0aW9uIH0gZnJvbSBcIi4uL2FjdGlvbi9tb2RlbEFjdGlvblwiXG5pbXBvcnQgeyBtb2RlbElkS2V5IH0gZnJvbSBcIi4uL21vZGVsL21ldGFkYXRhXCJcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIi4uL21vZGVsL01vZGVsXCJcbmltcG9ydCB7IG1vZGVsIH0gZnJvbSBcIi4uL21vZGVsU2hhcmVkL21vZGVsRGVjb3JhdG9yXCJcbmltcG9ydCB7IGlkUHJvcCB9IGZyb20gXCIuLi9tb2RlbFNoYXJlZC9wcm9wXCJcbmltcG9ydCB7IHR5cGVzUmVjb3JkIH0gZnJvbSBcIi4uL3R5cGVzL29iamVjdEJhc2VkL3JlY29yZFwiXG5pbXBvcnQgeyB0UHJvcCB9IGZyb20gXCIuLi90eXBlcy90UHJvcFwiXG5pbXBvcnQgeyB0eXBlc1VuY2hlY2tlZCB9IGZyb20gXCIuLi90eXBlcy91dGlsaXR5L3VuY2hlY2tlZFwiXG5pbXBvcnQgeyBuYW1lc3BhY2UgfSBmcm9tIFwiLi4vdXRpbHNcIlxuXG4vKipcbiAqIEEgbWFwIHRoYXQgaXMgYmFja2VkIGJ5IGFuIG9iamVjdC1saWtlIG1hcC5cbiAqIFVzZSBgb2JqZWN0TWFwYCB0byBjcmVhdGUgaXQuXG4gKi9cbkBtb2RlbChgJHtuYW1lc3BhY2V9L09iamVjdE1hcGApXG5leHBvcnQgY2xhc3MgT2JqZWN0TWFwPFY+XG4gIGV4dGVuZHMgTW9kZWwoe1xuICAgIFttb2RlbElkS2V5XTogaWRQcm9wLFxuICAgIGl0ZW1zOiB0UHJvcCh0eXBlc1JlY29yZCh0eXBlc1VuY2hlY2tlZDxhbnk+KCkpLCAoKSA9PiAoe30pKSwgLy8gd2lsbCBiZSBwcm9wZXJseSBjaGVja2VkIGJ5IHR5cGVzLm9iamVjdE1hcChzdWJUeXBlKVxuICB9KVxuICBpbXBsZW1lbnRzIE1hcDxzdHJpbmcsIFY+XG57XG4gIEBtb2RlbEFjdGlvblxuICBjbGVhcigpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuaXRlbXNcblxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhpdGVtcylcbiAgICBjb25zdCBsZW4gPSBrZXlzLmxlbmd0aFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IGsgPSBrZXlzW2ldXG4gICAgICByZW1vdmUoaXRlbXMsIGspXG4gICAgfVxuICB9XG5cbiAgQG1vZGVsQWN0aW9uXG4gIGRlbGV0ZShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGhhc0tleSA9IHRoaXMuaGFzKGtleSlcbiAgICBpZiAoaGFzS2V5KSB7XG4gICAgICByZW1vdmUodGhpcy5pdGVtcywga2V5KVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG5cbiAgZm9yRWFjaChjYWxsYmFja2ZuOiAodmFsdWU6IFYsIGtleTogc3RyaW5nLCBtYXA6IE1hcDxzdHJpbmcsIFY+KSA9PiB2b2lkLCB0aGlzQXJnPzogYW55KTogdm9pZCB7XG4gICAgLy8gd2UgY2Fubm90IHVzZSB0aGUgbWFwIGltcGxlbWVudGF0aW9uIHNpbmNlIHdlIG5lZWQgdG8gcGFzcyB0aGlzIGFzIG1hcFxuICAgIGNvbnN0IGl0ZW1zID0gdGhpcy5pdGVtc1xuXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGl0ZW1zKVxuICAgIGNvbnN0IGxlbiA9IGtleXMubGVuZ3RoXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY29uc3QgayA9IGtleXNbaV1cbiAgICAgIGNhbGxiYWNrZm4uY2FsbCh0aGlzQXJnLCBpdGVtc1trXSwgaywgdGhpcylcbiAgICB9XG4gIH1cblxuICBnZXQoa2V5OiBzdHJpbmcpOiBWIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gZ2V0KHRoaXMuaXRlbXMsIGtleSlcbiAgfVxuXG4gIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBoYXModGhpcy5pdGVtcywga2V5KVxuICB9XG5cbiAgQG1vZGVsQWN0aW9uXG4gIHNldChrZXk6IHN0cmluZywgdmFsdWU6IFYpOiB0aGlzIHtcbiAgICBzZXQodGhpcy5pdGVtcywga2V5LCB2YWx1ZSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgZ2V0IHNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4ga2V5cyh0aGlzLml0ZW1zKS5sZW5ndGhcbiAgfVxuXG4gIGtleXMoKTogSXRlcmFibGVJdGVyYXRvcjxzdHJpbmc+IHtcbiAgICAvLyBUT0RPOiBzaG91bGQgdXNlIGFuIGFjdHVhbCBpdGVyYXRvclxuICAgIHJldHVybiBrZXlzKHRoaXMuaXRlbXMpW1N5bWJvbC5pdGVyYXRvcl0oKSBhcyBJdGVyYWJsZUl0ZXJhdG9yPHN0cmluZz5cbiAgfVxuXG4gIHZhbHVlcygpOiBJdGVyYWJsZUl0ZXJhdG9yPFY+IHtcbiAgICAvLyBUT0RPOiBzaG91bGQgdXNlIGFuIGFjdHVhbCBpdGVyYXRvclxuICAgIHJldHVybiB2YWx1ZXModGhpcy5pdGVtcylbU3ltYm9sLml0ZXJhdG9yXSgpXG4gIH1cblxuICBlbnRyaWVzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8W3N0cmluZywgVl0+IHtcbiAgICAvLyBUT0RPOiBzaG91bGQgdXNlIGFuIGFjdHVhbCBpdGVyYXRvclxuICAgIHJldHVybiBlbnRyaWVzKHRoaXMuaXRlbXMpW1N5bWJvbC5pdGVyYXRvcl0oKVxuICB9XG5cbiAgW1N5bWJvbC5pdGVyYXRvcl0oKTogSXRlcmFibGVJdGVyYXRvcjxbc3RyaW5nLCBWXT4ge1xuICAgIHJldHVybiB0aGlzLmVudHJpZXMoKVxuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFwiT2JqZWN0TWFwXCJcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgT2JqZWN0TWFwIG1vZGVsIGluc3RhbmNlLlxuICpcbiAqIEB0eXBlcGFyYW0gViBWYWx1ZSB0eXBlLlxuICogQHBhcmFtIFtlbnRyaWVzXSBPcHRpb25hbCBpbml0aWFsIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdE1hcDxWPihlbnRyaWVzPzogUmVhZG9ubHlBcnJheTxyZWFkb25seSBbc3RyaW5nLCBWXT4gfCBudWxsKTogT2JqZWN0TWFwPFY+IHtcbiAgY29uc3QgaW5pdGlhbE9iajogeyBbazogc3RyaW5nXTogViB9ID0ge31cblxuICBpZiAoZW50cmllcykge1xuICAgIGxldCBsZW4gPSBlbnRyaWVzLmxlbmd0aFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNvbnN0IGVudHJ5ID0gZW50cmllc1tpXVxuICAgICAgaW5pdGlhbE9ialtlbnRyeVswXV0gPSBlbnRyeVsxXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZXcgT2JqZWN0TWFwKHsgaXRlbXM6IGluaXRpYWxPYmogfSlcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQWdCYSxZQUFiLE1BQWEsbUJBQ0gsTUFBTTtBQUFBLEdBQ1gsYUFBYTtBQUFBLEVBQ2QsT0FBTyxNQUFNLFlBQVksZ0JBQXFCLEdBQUcsVUFBVTtDQUM1RDtFQUlEO1VBQ1EsUUFBUSxLQUFLO1VBRWIsUUFBTyxPQUFPLEtBQUssS0FBSztVQUN4QixNQUFNLE1BQUs7YUFDUixJQUFJLEdBQUcsSUFBSSxLQUFLLEtBQUs7WUFDdEIsSUFBSSxNQUFLO2FBQ1IsT0FBTyxDQUFDO0FBQUE7O0VBS25CLE9BQU87VUFDQyxTQUFTLEtBQUssSUFBSSxHQUFHO1FBQ3ZCLFFBQVE7YUFDSCxLQUFLLE9BQU8sR0FBRzthQUNmO0FBQUEsV0FDRjthQUNFO0FBQUE7O0VBSVgsUUFBUSxZQUFrRTtVQUVsRSxRQUFRLEtBQUs7VUFFYixRQUFPLE9BQU8sS0FBSyxLQUFLO1VBQ3hCLE1BQU0sTUFBSzthQUNSLElBQUksR0FBRyxJQUFJLEtBQUssS0FBSztZQUN0QixJQUFJLE1BQUs7aUJBQ0osS0FBSyxTQUFTLE1BQU0sSUFBSSxHQUFHLElBQUk7QUFBQTs7RUFJOUMsSUFBSTtXQUNLLElBQUksS0FBSyxPQUFPLEdBQUc7QUFBQTtFQUc1QixJQUFJO1dBQ0ssSUFBSSxLQUFLLE9BQU8sR0FBRztBQUFBO0VBSTVCLElBQUksS0FBYTtRQUNYLEtBQUssT0FBTyxLQUFLLEtBQUs7V0FDbkI7QUFBQTtNQUdMO1dBQ0ssS0FBSyxLQUFLLEtBQUssRUFBRTtBQUFBO0VBRzFCO1dBRVMsS0FBSyxLQUFLLEtBQUssRUFBRSxPQUFPOztFQUdqQztXQUVTLE9BQU8sS0FBSyxLQUFLLEVBQUUsT0FBTzs7RUFHbkM7V0FFUyxRQUFRLEtBQUssS0FBSyxFQUFFLE9BQU87O0dBR25DLE9BQU87V0FDQyxLQUFLOztPQUdULE9BQU87V0FDSDtBQUFBOztBQXhFVDtFQURDOztBQWFEO0VBREM7O0FBZ0NEO0VBREM7O0FBbERVO0VBRFosTUFBTSxHQUFHLHFCQUFxQjtHQUNsQixTQUFTO21CQTBGTztRQUNyQixhQUFpQztNQUVuQyxVQUFTO1FBQ1AsTUFBTSxTQUFRO2FBQ1QsSUFBSSxHQUFHLElBQUksS0FBSyxLQUFLO1lBQ3RCLFFBQVEsU0FBUTtpQkFDWCxNQUFNLE1BQU0sTUFBTTtBQUFBOztTQUkxQixJQUFJLFVBQVUsRUFBRSxPQUFPLFlBQVk7QUFDNUM7OyJ9
@@ -0,0 +1,181 @@
1
+ import { action, observable, observe, intercept, remove, set } from "mobx";
2
+ import { getMobxVersion, failure, assertIsMap, isArray, assertIsObservableArray, assertIsObservableObject } from "../utils/index.mjs";
3
+ import { tag } from "../utils/tag.mjs";
4
+ const observableMapBackedByObservableObject = action((obj) => {
5
+ const map = observable.map();
6
+ map.dataObject = obj;
7
+ const keys = Object.keys(obj);
8
+ for (let i = 0; i < keys.length; i++) {
9
+ const k = keys[i];
10
+ map.set(k, obj[k]);
11
+ }
12
+ let mapAlreadyChanged = false;
13
+ let objectAlreadyChanged = false;
14
+ observe(obj, action((change) => {
15
+ if (mapAlreadyChanged) {
16
+ return;
17
+ }
18
+ objectAlreadyChanged = true;
19
+ try {
20
+ switch (change.type) {
21
+ case "add":
22
+ case "update": {
23
+ map.set(change.name, change.newValue);
24
+ break;
25
+ }
26
+ case "remove": {
27
+ map.delete(change.name);
28
+ break;
29
+ }
30
+ }
31
+ } finally {
32
+ objectAlreadyChanged = false;
33
+ }
34
+ }));
35
+ intercept(map, action((change) => {
36
+ if (mapAlreadyChanged) {
37
+ return null;
38
+ }
39
+ if (objectAlreadyChanged) {
40
+ return change;
41
+ }
42
+ mapAlreadyChanged = true;
43
+ try {
44
+ switch (change.type) {
45
+ case "add":
46
+ case "update": {
47
+ set(obj, change.name, change.newValue);
48
+ break;
49
+ }
50
+ case "delete": {
51
+ remove(obj, change.name);
52
+ break;
53
+ }
54
+ }
55
+ return change;
56
+ } finally {
57
+ mapAlreadyChanged = false;
58
+ }
59
+ }));
60
+ return map;
61
+ });
62
+ const observableMapBackedByObservableArray = action((array) => {
63
+ let map;
64
+ if (getMobxVersion() >= 6) {
65
+ map = observable.map(array);
66
+ } else {
67
+ map = observable.map();
68
+ array.forEach(([k, v]) => {
69
+ map.set(k, v);
70
+ });
71
+ }
72
+ map.dataObject = array;
73
+ if (map.size !== array.length) {
74
+ throw failure("arrays backing a map cannot contain duplicate keys");
75
+ }
76
+ let mapAlreadyChanged = false;
77
+ let arrayAlreadyChanged = false;
78
+ observe(array, action((change) => {
79
+ if (mapAlreadyChanged) {
80
+ return;
81
+ }
82
+ arrayAlreadyChanged = true;
83
+ try {
84
+ switch (change.type) {
85
+ case "splice": {
86
+ {
87
+ const removed = change.removed;
88
+ for (let i = 0; i < removed.length; i++) {
89
+ map.delete(removed[i][0]);
90
+ }
91
+ }
92
+ {
93
+ const added = change.added;
94
+ for (let i = 0; i < added.length; i++) {
95
+ map.set(added[i][0], added[i][1]);
96
+ }
97
+ }
98
+ break;
99
+ }
100
+ case "update": {
101
+ map.delete(change.oldValue[0]);
102
+ map.set(change.newValue[0], change.newValue[1]);
103
+ break;
104
+ }
105
+ }
106
+ } finally {
107
+ arrayAlreadyChanged = false;
108
+ }
109
+ }));
110
+ intercept(map, action((change) => {
111
+ if (mapAlreadyChanged) {
112
+ return null;
113
+ }
114
+ if (arrayAlreadyChanged) {
115
+ return change;
116
+ }
117
+ mapAlreadyChanged = true;
118
+ try {
119
+ switch (change.type) {
120
+ case "update": {
121
+ const i = array.findIndex((i2) => i2[0] === change.name);
122
+ array[i] = [change.name, change.newValue];
123
+ break;
124
+ }
125
+ case "add": {
126
+ array.push([change.name, change.newValue]);
127
+ break;
128
+ }
129
+ case "delete": {
130
+ const i = array.findIndex((i2) => i2[0] === change.name);
131
+ if (i >= 0) {
132
+ array.splice(i, 1);
133
+ }
134
+ break;
135
+ }
136
+ }
137
+ return change;
138
+ } finally {
139
+ mapAlreadyChanged = false;
140
+ }
141
+ }));
142
+ return map;
143
+ });
144
+ const asMapTag = tag((objOrArray) => {
145
+ if (isArray(objOrArray)) {
146
+ assertIsObservableArray(objOrArray, "objOrArray");
147
+ return observableMapBackedByObservableArray(objOrArray);
148
+ } else {
149
+ assertIsObservableObject(objOrArray, "objOrArray");
150
+ return observableMapBackedByObservableObject(objOrArray);
151
+ }
152
+ });
153
+ function asMap(objOrArray) {
154
+ return asMapTag.for(objOrArray);
155
+ }
156
+ function mapToObject(map) {
157
+ assertIsMap(map, "map");
158
+ const dataObject = map.dataObject;
159
+ if (dataObject && !isArray(dataObject)) {
160
+ return dataObject;
161
+ }
162
+ const obj = {};
163
+ for (const k of map.keys()) {
164
+ obj[k] = map.get(k);
165
+ }
166
+ return obj;
167
+ }
168
+ function mapToArray(map) {
169
+ assertIsMap(map, "map");
170
+ const dataObject = map.dataObject;
171
+ if (dataObject && isArray(dataObject)) {
172
+ return dataObject;
173
+ }
174
+ const arr = [];
175
+ for (const k of map.keys()) {
176
+ arr.push([k, map.get(k)]);
177
+ }
178
+ return arr;
179
+ }
180
+ export { asMap, mapToArray, mapToObject };
181
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNNYXAubWpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd3JhcHBlcnMvYXNNYXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYWN0aW9uLFxuICBJTWFwV2lsbENoYW5nZSxcbiAgaW50ZXJjZXB0LFxuICBJT2JqZWN0RGlkQ2hhbmdlLFxuICBJT2JzZXJ2YWJsZUFycmF5LFxuICBpc09ic2VydmFibGVBcnJheSxcbiAgaXNPYnNlcnZhYmxlT2JqZWN0LFxuICBvYnNlcnZhYmxlLFxuICBPYnNlcnZhYmxlTWFwLFxuICBvYnNlcnZlLFxuICByZW1vdmUsXG4gIHNldCxcbn0gZnJvbSBcIm1vYnhcIlxuaW1wb3J0IHtcbiAgYXNzZXJ0SXNNYXAsXG4gIGFzc2VydElzT2JzZXJ2YWJsZUFycmF5LFxuICBhc3NlcnRJc09ic2VydmFibGVPYmplY3QsXG4gIGZhaWx1cmUsXG4gIGdldE1vYnhWZXJzaW9uLFxuICBpbkRldk1vZGUsXG4gIGlzQXJyYXksXG59IGZyb20gXCIuLi91dGlsc1wiXG5pbXBvcnQgeyB0YWcgfSBmcm9tIFwiLi4vdXRpbHMvdGFnXCJcblxuY29uc3Qgb2JzZXJ2YWJsZU1hcEJhY2tlZEJ5T2JzZXJ2YWJsZU9iamVjdCA9IGFjdGlvbihcbiAgPFQ+KFxuICAgIG9iajogb2JqZWN0XG4gICk6IE9ic2VydmFibGVNYXA8c3RyaW5nLCBUPiAmIHtcbiAgICBkYXRhT2JqZWN0OiB0eXBlb2Ygb2JqXG4gIH0gPT4ge1xuICAgIGlmIChpbkRldk1vZGUoKSkge1xuICAgICAgaWYgKCFpc09ic2VydmFibGVPYmplY3Qob2JqKSkge1xuICAgICAgICB0aHJvdyBmYWlsdXJlKFwiYXNzZXJ0aW9uIGZhaWxlZDogZXhwZWN0ZWQgYW4gb2JzZXJ2YWJsZSBvYmplY3RcIilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBtYXAgPSBvYnNlcnZhYmxlLm1hcCgpXG4gICAgOyhtYXAgYXMgYW55KS5kYXRhT2JqZWN0ID0gb2JqXG5cbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob2JqKVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgayA9IGtleXNbaV1cbiAgICAgIG1hcC5zZXQoaywgKG9iaiBhcyBhbnkpW2tdKVxuICAgIH1cblxuICAgIGxldCBtYXBBbHJlYWR5Q2hhbmdlZCA9IGZhbHNlXG4gICAgbGV0IG9iamVjdEFscmVhZHlDaGFuZ2VkID0gZmFsc2VcblxuICAgIC8vIHdoZW4gdGhlIG9iamVjdCBjaGFuZ2VzIHRoZSBtYXAgY2hhbmdlc1xuICAgIG9ic2VydmUoXG4gICAgICBvYmosXG4gICAgICBhY3Rpb24oKGNoYW5nZTogSU9iamVjdERpZENoYW5nZSkgPT4ge1xuICAgICAgICBpZiAobWFwQWxyZWFkeUNoYW5nZWQpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIG9iamVjdEFscmVhZHlDaGFuZ2VkID0gdHJ1ZVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc3dpdGNoIChjaGFuZ2UudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcImFkZFwiOlxuICAgICAgICAgICAgY2FzZSBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICAgIG1hcC5zZXQoY2hhbmdlLm5hbWUsIGNoYW5nZS5uZXdWYWx1ZSlcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBcInJlbW92ZVwiOiB7XG4gICAgICAgICAgICAgIG1hcC5kZWxldGUoY2hhbmdlLm5hbWUpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIG9iamVjdEFscmVhZHlDaGFuZ2VkID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICApXG5cbiAgICAvLyB3aGVuIHRoZSBtYXAgY2hhbmdlcyBhbHNvIGNoYW5nZSB0aGUgb2JqZWN0XG4gICAgaW50ZXJjZXB0KFxuICAgICAgbWFwLFxuICAgICAgYWN0aW9uKChjaGFuZ2U6IElNYXBXaWxsQ2hhbmdlPHN0cmluZywgVD4pID0+IHtcbiAgICAgICAgaWYgKG1hcEFscmVhZHlDaGFuZ2VkKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvYmplY3RBbHJlYWR5Q2hhbmdlZCkge1xuICAgICAgICAgIHJldHVybiBjaGFuZ2VcbiAgICAgICAgfVxuXG4gICAgICAgIG1hcEFscmVhZHlDaGFuZ2VkID0gdHJ1ZVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc3dpdGNoIChjaGFuZ2UudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcImFkZFwiOlxuICAgICAgICAgICAgY2FzZSBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICAgIHNldChvYmosIGNoYW5nZS5uYW1lLCBjaGFuZ2UubmV3VmFsdWUpXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhc2UgXCJkZWxldGVcIjoge1xuICAgICAgICAgICAgICByZW1vdmUob2JqLCBjaGFuZ2UubmFtZSlcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY2hhbmdlXG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgbWFwQWxyZWFkeUNoYW5nZWQgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcblxuICAgIHJldHVybiBtYXAgYXMgYW55XG4gIH1cbilcblxuY29uc3Qgb2JzZXJ2YWJsZU1hcEJhY2tlZEJ5T2JzZXJ2YWJsZUFycmF5ID0gYWN0aW9uKFxuICA8VD4oXG4gICAgYXJyYXk6IElPYnNlcnZhYmxlQXJyYXk8W3N0cmluZywgVF0+XG4gICk6IE9ic2VydmFibGVNYXA8c3RyaW5nLCBUPiAmIHsgZGF0YU9iamVjdDogdHlwZW9mIGFycmF5IH0gPT4ge1xuICAgIGlmIChpbkRldk1vZGUoKSkge1xuICAgICAgaWYgKCFpc09ic2VydmFibGVBcnJheShhcnJheSkpIHtcbiAgICAgICAgdGhyb3cgZmFpbHVyZShcImFzc2VydGlvbiBmYWlsZWQ6IGV4cGVjdGVkIGFuIG9ic2VydmFibGUgYXJyYXlcIilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbWFwOiBPYnNlcnZhYmxlTWFwPHN0cmluZywgVD5cbiAgICBpZiAoZ2V0TW9ieFZlcnNpb24oKSA+PSA2KSB7XG4gICAgICBtYXAgPSBvYnNlcnZhYmxlLm1hcChhcnJheSlcbiAgICB9IGVsc2Uge1xuICAgICAgbWFwID0gb2JzZXJ2YWJsZS5tYXAoKVxuICAgICAgYXJyYXkuZm9yRWFjaCgoW2ssIHZdKSA9PiB7XG4gICAgICAgIG1hcC5zZXQoaywgdilcbiAgICAgIH0pXG4gICAgfVxuICAgIDsobWFwIGFzIGFueSkuZGF0YU9iamVjdCA9IGFycmF5XG5cbiAgICBpZiAobWFwLnNpemUgIT09IGFycmF5Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgZmFpbHVyZShcImFycmF5cyBiYWNraW5nIGEgbWFwIGNhbm5vdCBjb250YWluIGR1cGxpY2F0ZSBrZXlzXCIpXG4gICAgfVxuXG4gICAgbGV0IG1hcEFscmVhZHlDaGFuZ2VkID0gZmFsc2VcbiAgICBsZXQgYXJyYXlBbHJlYWR5Q2hhbmdlZCA9IGZhbHNlXG5cbiAgICAvLyBmb3Igc3BlZWQgcmVhc29ucyB3ZSB3aWxsIGp1c3QgYXNzdW1lIGRpc3RpbmN0IHZhbHVlcyBhcmUgb25seSBvbmNlIGluIHRoZSBhcnJheVxuICAgIC8vIGFsc28gd2UgYXNzdW1lIHR1cGxlcyB0aGVtc2VsdmVzIGFyZSBpbW11dGFibGVcblxuICAgIC8vIHdoZW4gdGhlIGFycmF5IGNoYW5nZXMgdGhlIG1hcCBjaGFuZ2VzXG4gICAgb2JzZXJ2ZShcbiAgICAgIGFycmF5LFxuICAgICAgYWN0aW9uKChjaGFuZ2U6IGFueSAvKklBcnJheURpZENoYW5nZTxbc3RyaW5nLCBUXT4qLykgPT4ge1xuICAgICAgICBpZiAobWFwQWxyZWFkeUNoYW5nZWQpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGFycmF5QWxyZWFkeUNoYW5nZWQgPSB0cnVlXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc3dpdGNoIChjaGFuZ2UudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcInNwbGljZVwiOiB7XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCByZW1vdmVkID0gY2hhbmdlLnJlbW92ZWRcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlbW92ZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgIG1hcC5kZWxldGUocmVtb3ZlZFtpXVswXSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWRkZWQgPSBjaGFuZ2UuYWRkZWRcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFkZGVkLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICBtYXAuc2V0KGFkZGVkW2ldWzBdLCBhZGRlZFtpXVsxXSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFwidXBkYXRlXCI6IHtcbiAgICAgICAgICAgICAgbWFwLmRlbGV0ZShjaGFuZ2Uub2xkVmFsdWVbMF0pXG4gICAgICAgICAgICAgIG1hcC5zZXQoY2hhbmdlLm5ld1ZhbHVlWzBdLCBjaGFuZ2UubmV3VmFsdWVbMV0pXG4gICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGFycmF5QWxyZWFkeUNoYW5nZWQgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcblxuICAgIC8vIHdoZW4gdGhlIG1hcCBjaGFuZ2VzIGFsc28gY2hhbmdlIHRoZSBhcnJheVxuICAgIGludGVyY2VwdChcbiAgICAgIG1hcCxcbiAgICAgIGFjdGlvbigoY2hhbmdlOiBJTWFwV2lsbENoYW5nZTxzdHJpbmcsIFQ+KSA9PiB7XG4gICAgICAgIGlmIChtYXBBbHJlYWR5Q2hhbmdlZCkge1xuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXJyYXlBbHJlYWR5Q2hhbmdlZCkge1xuICAgICAgICAgIHJldHVybiBjaGFuZ2VcbiAgICAgICAgfVxuXG4gICAgICAgIG1hcEFscmVhZHlDaGFuZ2VkID0gdHJ1ZVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc3dpdGNoIChjaGFuZ2UudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICAgIC8vIHJlcGxhY2UgdGhlIHdob2xlIHR1cGxlIHRvIGtlZXAgdHVwbGUgaW1tdXRhYmlsaXR5XG4gICAgICAgICAgICAgIGNvbnN0IGkgPSBhcnJheS5maW5kSW5kZXgoKGkpID0+IGlbMF0gPT09IGNoYW5nZS5uYW1lKVxuICAgICAgICAgICAgICBhcnJheVtpXSA9IFtjaGFuZ2UubmFtZSwgY2hhbmdlLm5ld1ZhbHVlIV1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBcImFkZFwiOiB7XG4gICAgICAgICAgICAgIGFycmF5LnB1c2goW2NoYW5nZS5uYW1lLCBjaGFuZ2UubmV3VmFsdWUhXSlcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBcImRlbGV0ZVwiOiB7XG4gICAgICAgICAgICAgIGNvbnN0IGkgPSBhcnJheS5maW5kSW5kZXgoKGkpID0+IGlbMF0gPT09IGNoYW5nZS5uYW1lKVxuICAgICAgICAgICAgICBpZiAoaSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgYXJyYXkuc3BsaWNlKGksIDEpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY2hhbmdlXG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgbWFwQWxyZWFkeUNoYW5nZWQgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcblxuICAgIHJldHVybiBtYXAgYXMgYW55XG4gIH1cbilcblxuY29uc3QgYXNNYXBUYWcgPSB0YWcoKG9iak9yQXJyYXk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCBBcnJheTxbc3RyaW5nLCBhbnldPikgPT4ge1xuICBpZiAoaXNBcnJheShvYmpPckFycmF5KSkge1xuICAgIGFzc2VydElzT2JzZXJ2YWJsZUFycmF5KG9iak9yQXJyYXksIFwib2JqT3JBcnJheVwiKVxuICAgIHJldHVybiBvYnNlcnZhYmxlTWFwQmFja2VkQnlPYnNlcnZhYmxlQXJyYXkob2JqT3JBcnJheSlcbiAgfSBlbHNlIHtcbiAgICBhc3NlcnRJc09ic2VydmFibGVPYmplY3Qob2JqT3JBcnJheSwgXCJvYmpPckFycmF5XCIpXG4gICAgcmV0dXJuIG9ic2VydmFibGVNYXBCYWNrZWRCeU9ic2VydmFibGVPYmplY3Qob2JqT3JBcnJheSlcbiAgfVxufSlcblxuLyoqXG4gKiBXcmFwcyBhbiBvYnNlcnZhYmxlIG9iamVjdCBvciBhIHR1cGxlIGFycmF5IHRvIG9mZmVyIGEgbWFwIGxpa2UgaW50ZXJmYWNlLlxuICpcbiAqIEBwYXJhbSBhcnJheSBBcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzTWFwPEssIFY+KFxuICBhcnJheTogQXJyYXk8W0ssIFZdPlxuKTogT2JzZXJ2YWJsZU1hcDxLLCBWPiAmIHsgZGF0YU9iamVjdDogQXJyYXk8W0ssIFZdPiB9XG5cbi8qKlxuICogV3JhcHMgYW4gb2JzZXJ2YWJsZSBvYmplY3Qgb3IgYSB0dXBsZSBhcnJheSB0byBvZmZlciBhIG1hcCBsaWtlIGludGVyZmFjZS5cbiAqXG4gKiBAcGFyYW0gb2JqZWN0IE9iamVjdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzTWFwPFQ+KFxuICBvYmplY3Q6IFJlY29yZDxzdHJpbmcsIFQ+XG4pOiBPYnNlcnZhYmxlTWFwPHN0cmluZywgVD4gJiB7IGRhdGFPYmplY3Q6IFJlY29yZDxzdHJpbmcsIFQ+IH1cblxuLyoqXG4gKiBXcmFwcyBhbiBvYnNlcnZhYmxlIG9iamVjdCBvciBhIHR1cGxlIGFycmF5IHRvIG9mZmVyIGEgbWFwIGxpa2UgaW50ZXJmYWNlLlxuICpcbiAqIEBwYXJhbSBvYmpPckFycmF5IE9iamVjdCBvciBhcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzTWFwKFxuICBvYmpPckFycmF5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IEFycmF5PFt1bmtub3duLCB1bmtub3duXT5cbik6IE9ic2VydmFibGVNYXA8dW5rbm93biwgdW5rbm93bj4gJiB7IGRhdGFPYmplY3Q6IHR5cGVvZiBvYmpPckFycmF5IH0ge1xuICByZXR1cm4gYXNNYXBUYWcuZm9yKG9iak9yQXJyYXkpIGFzIGFueVxufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgbWFwIHRvIGFuIG9iamVjdC4gSWYgdGhlIG1hcCBpcyBhIGNvbGxlY3Rpb24gd3JhcHBlciBpdCB3aWxsIHJldHVybiB0aGUgYmFja2VkIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gbWFwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb09iamVjdDxUPihtYXA6IE1hcDxzdHJpbmcsIFQ+KTogUmVjb3JkPHN0cmluZywgVD4ge1xuICBhc3NlcnRJc01hcChtYXAsIFwibWFwXCIpXG5cbiAgY29uc3QgZGF0YU9iamVjdCA9IChtYXAgYXMgYW55KS5kYXRhT2JqZWN0XG4gIGlmIChkYXRhT2JqZWN0ICYmICFpc0FycmF5KGRhdGFPYmplY3QpKSB7XG4gICAgcmV0dXJuIGRhdGFPYmplY3RcbiAgfVxuXG4gIGNvbnN0IG9iajogUmVjb3JkPHN0cmluZywgVD4gPSB7fVxuICBmb3IgKGNvbnN0IGsgb2YgbWFwLmtleXMoKSkge1xuICAgIG9ialtrXSA9IG1hcC5nZXQoaykhXG4gIH1cblxuICByZXR1cm4gb2JqXG59XG5cbi8qKlxuICogQ29udmVydHMgYSBtYXAgdG8gYW4gYXJyYXkuIElmIHRoZSBtYXAgaXMgYSBjb2xsZWN0aW9uIHdyYXBwZXIgaXQgd2lsbCByZXR1cm4gdGhlIGJhY2tlZCBhcnJheS5cbiAqXG4gKiBAcGFyYW0gbWFwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb0FycmF5PEssIFY+KG1hcDogTWFwPEssIFY+KTogQXJyYXk8W0ssIFZdPiB7XG4gIGFzc2VydElzTWFwKG1hcCwgXCJtYXBcIilcblxuICBjb25zdCBkYXRhT2JqZWN0ID0gKG1hcCBhcyBhbnkpLmRhdGFPYmplY3RcbiAgaWYgKGRhdGFPYmplY3QgJiYgaXNBcnJheShkYXRhT2JqZWN0KSkge1xuICAgIHJldHVybiBkYXRhT2JqZWN0XG4gIH1cblxuICBjb25zdCBhcnI6IFtLLCBWXVtdID0gW11cbiAgZm9yIChjb25zdCBrIG9mIG1hcC5rZXlzKCkpIHtcbiAgICBhcnIucHVzaChbaywgbWFwLmdldChrKSFdKVxuICB9XG5cbiAgcmV0dXJuIGFyclxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXlCQSxNQUFNLHdDQUF3QyxPQUM1QyxDQUNFO1FBVU0sTUFBTSxXQUFXO01BQ1QsYUFBYTtRQUVyQixPQUFPLE9BQU8sS0FBSyxHQUFHO1dBQ25CLElBQUksR0FBRyxJQUFJLEtBQUssUUFBUSxLQUFLO1VBQzlCLElBQUksS0FBSztRQUNYLElBQUksR0FBSSxJQUFZLEVBQUU7QUFBQTtNQUd4QixvQkFBb0I7TUFDcEIsdUJBQXVCO1VBSXpCLEtBQ0EsT0FBTyxDQUFDO1FBQ0YsbUJBQW1COzs7MkJBSUE7UUFFbkI7Y0FDTSxPQUFPO0FBQUEsYUFDUjtBQUFBLGFBQ0EsVUFBVTtjQUNULElBQUksT0FBTyxNQUFNLE9BQU8sUUFBUTs7O2FBSWpDLFVBQVU7Y0FDVCxPQUFPLE9BQU8sSUFBSTs7Ozs7NkJBS0g7QUFBQTtHQUUxQixDQUFDO1lBS0YsS0FDQSxPQUFPLENBQUM7UUFDRixtQkFBbUI7YUFDZDtBQUFBO1FBR0wsc0JBQXNCO2FBQ2pCO0FBQUE7d0JBR1c7UUFFaEI7Y0FDTSxPQUFPO0FBQUEsYUFDUjtBQUFBLGFBQ0EsVUFBVTtjQUNULEtBQUssT0FBTyxNQUFNLE9BQU8sUUFBUTs7O2FBSWxDLFVBQVU7aUJBQ04sS0FBSyxPQUFPLElBQUk7Ozs7YUFLcEI7QUFBQTswQkFFYTtBQUFBO0dBRXZCLENBQUM7U0FHRztBQUNULENBQUM7QUFHSCxNQUFNLHVDQUF1QyxPQUMzQyxDQUNFO01BUUk7TUFDQSxvQkFBb0IsR0FBRztVQUNuQixXQUFXLElBQUksS0FBSztBQUFBLFNBQ3JCO1VBQ0MsV0FBVztVQUNYLFFBQVEsQ0FBQyxDQUFDLEdBQUc7VUFDYixJQUFJLEdBQUcsQ0FBQztBQUFBLEtBQ2I7QUFBQTtNQUVXLGFBQWE7TUFFdkIsSUFBSSxTQUFTLE1BQU0sUUFBUTtVQUN2QixRQUFRLG9EQUFvRDtBQUFBO01BR2hFLG9CQUFvQjtNQUNwQixzQkFBc0I7VUFPeEIsT0FDQSxPQUFPLENBQUM7UUFDRixtQkFBbUI7OzswQkFJRDtRQUNsQjtjQUNNLE9BQU87QUFBQSxhQUNSLFVBQVU7O2tCQUVMLFVBQVUsT0FBTztxQkFDZCxJQUFJLEdBQUcsSUFBSSxRQUFRLFFBQVEsS0FBSztrQkFDbkMsT0FBTyxRQUFRLEdBQUcsRUFBRTtBQUFBOzs7a0JBS3BCLFFBQVEsT0FBTztxQkFDWixJQUFJLEdBQUcsSUFBSSxNQUFNLFFBQVEsS0FBSztrQkFDakMsSUFBSSxNQUFNLEdBQUcsSUFBSSxNQUFNLEdBQUcsRUFBRTtBQUFBOzs7O2FBT2pDLFVBQVU7Y0FDVCxPQUFPLE9BQU8sU0FBUyxFQUFFO2NBQ3pCLElBQUksT0FBTyxTQUFTLElBQUksT0FBTyxTQUFTLEVBQUU7Ozs7OzRCQUs1QjtBQUFBO0dBRXpCLENBQUM7WUFLRixLQUNBLE9BQU8sQ0FBQztRQUNGLG1CQUFtQjthQUNkO0FBQUE7UUFHTCxxQkFBcUI7YUFDaEI7QUFBQTt3QkFHVztRQUVoQjtjQUNNLE9BQU87QUFBQSxhQUNSLFVBQVU7Z0JBRVAsSUFBSSxNQUFNLFVBQVUsQ0FBQyxPQUFNLEdBQUUsT0FBTyxPQUFPLElBQUk7Z0JBQy9DLEtBQUssQ0FBQyxPQUFPLE1BQU0sT0FBTyxRQUFTOzs7YUFJdEMsT0FBTztnQkFDSixLQUFLLENBQUMsT0FBTyxNQUFNLE9BQU8sUUFBUyxDQUFDOzs7YUFJdkMsVUFBVTtnQkFDUCxJQUFJLE1BQU0sVUFBVSxDQUFDLE9BQU0sR0FBRSxPQUFPLE9BQU8sSUFBSTtjQUNqRCxLQUFLLEdBQUc7a0JBQ0osT0FBTyxHQUFHLENBQUM7QUFBQTs7OzthQU1oQjtBQUFBOzBCQUVhO0FBQUE7R0FFdkIsQ0FBQztTQUdHO0FBQ1QsQ0FBQztBQUdILE1BQU0sV0FBVyxJQUFJLENBQUM7TUFDaEIsUUFBUSxVQUFVLEdBQUc7NEJBQ0MsWUFBWSxZQUFZO1dBQ3pDLHFDQUFxQyxVQUFVO0FBQUEsU0FDakQ7NkJBQ29CLFlBQVksWUFBWTtXQUMxQyxzQ0FBc0MsVUFBVTtBQUFBO0FBRTNELENBQUM7ZUEwQkM7U0FFTyxTQUFTLElBQUksVUFBVTtBQUNoQztxQkFPK0I7Y0FDakIsS0FBSyxLQUFLO1FBRWhCLGFBQWMsSUFBWTtNQUM1QixjQUFjLENBQUMsUUFBUSxVQUFVLEdBQUc7V0FDL0I7QUFBQTtRQUdILE1BQXlCO2FBQ3BCLEtBQUssSUFBSSxRQUFRO1FBQ3RCLEtBQUssSUFBSSxJQUFJLENBQUM7QUFBQTtTQUdiO0FBQ1Q7b0JBT2lDO2NBQ25CLEtBQUssS0FBSztRQUVoQixhQUFjLElBQVk7TUFDNUIsY0FBYyxRQUFRLFVBQVUsR0FBRztXQUM5QjtBQUFBO1FBR0gsTUFBZ0I7YUFDWCxLQUFLLElBQUksUUFBUTtRQUN0QixLQUFLLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFFLENBQUM7QUFBQTtTQUdwQjtBQUNUOzsifQ==
@@ -0,0 +1,97 @@
1
+ import { action, observable, observe, intercept } from "mobx";
2
+ import { getMobxVersion, failure, assertIsSet, assertIsObservableArray } from "../utils/index.mjs";
3
+ import { tag } from "../utils/tag.mjs";
4
+ const observableSetBackedByObservableArray = action((array) => {
5
+ let set;
6
+ if (getMobxVersion() >= 6) {
7
+ set = observable.set(array);
8
+ } else {
9
+ set = observable.set();
10
+ array.forEach((item) => {
11
+ set.add(item);
12
+ });
13
+ }
14
+ set.dataObject = array;
15
+ if (set.size !== array.length) {
16
+ throw failure("arrays backing a set cannot contain duplicate values");
17
+ }
18
+ let setAlreadyChanged = false;
19
+ let arrayAlreadyChanged = false;
20
+ observe(array, action((change) => {
21
+ if (setAlreadyChanged) {
22
+ return;
23
+ }
24
+ arrayAlreadyChanged = true;
25
+ try {
26
+ switch (change.type) {
27
+ case "splice": {
28
+ {
29
+ const removed = change.removed;
30
+ for (let i = 0; i < removed.length; i++) {
31
+ set.delete(removed[i]);
32
+ }
33
+ }
34
+ {
35
+ const added = change.added;
36
+ for (let i = 0; i < added.length; i++) {
37
+ set.add(added[i]);
38
+ }
39
+ }
40
+ break;
41
+ }
42
+ case "update": {
43
+ set.delete(change.oldValue);
44
+ set.add(change.newValue);
45
+ break;
46
+ }
47
+ }
48
+ } finally {
49
+ arrayAlreadyChanged = false;
50
+ }
51
+ }));
52
+ intercept(set, action((change) => {
53
+ if (setAlreadyChanged) {
54
+ return null;
55
+ }
56
+ if (arrayAlreadyChanged) {
57
+ return change;
58
+ }
59
+ setAlreadyChanged = true;
60
+ try {
61
+ switch (change.type) {
62
+ case "add": {
63
+ array.push(change.newValue);
64
+ break;
65
+ }
66
+ case "delete": {
67
+ const i = array.indexOf(change.oldValue);
68
+ if (i >= 0) {
69
+ array.splice(i, 1);
70
+ }
71
+ break;
72
+ }
73
+ }
74
+ return change;
75
+ } finally {
76
+ setAlreadyChanged = false;
77
+ }
78
+ }));
79
+ return set;
80
+ });
81
+ const asSetTag = tag((array) => {
82
+ assertIsObservableArray(array, "array");
83
+ return observableSetBackedByObservableArray(array);
84
+ });
85
+ function asSet(array) {
86
+ return asSetTag.for(array);
87
+ }
88
+ function setToArray(set) {
89
+ assertIsSet(set, "set");
90
+ const dataObject = set.dataObject;
91
+ if (dataObject) {
92
+ return dataObject;
93
+ }
94
+ return Array.from(set.values());
95
+ }
96
+ export { asSet, setToArray };
97
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNTZXQubWpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvd3JhcHBlcnMvYXNTZXQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYWN0aW9uLFxuICBpbnRlcmNlcHQsXG4gIElPYnNlcnZhYmxlQXJyYXksXG4gIElTZXRXaWxsQ2hhbmdlLFxuICBpc09ic2VydmFibGVBcnJheSxcbiAgb2JzZXJ2YWJsZSxcbiAgT2JzZXJ2YWJsZVNldCxcbiAgb2JzZXJ2ZSxcbn0gZnJvbSBcIm1vYnhcIlxuaW1wb3J0IHsgYXNzZXJ0SXNPYnNlcnZhYmxlQXJyYXksIGFzc2VydElzU2V0LCBmYWlsdXJlLCBnZXRNb2J4VmVyc2lvbiwgaW5EZXZNb2RlIH0gZnJvbSBcIi4uL3V0aWxzXCJcbmltcG9ydCB7IHRhZyB9IGZyb20gXCIuLi91dGlscy90YWdcIlxuXG5jb25zdCBvYnNlcnZhYmxlU2V0QmFja2VkQnlPYnNlcnZhYmxlQXJyYXkgPSBhY3Rpb24oXG4gIDxUPihhcnJheTogSU9ic2VydmFibGVBcnJheTxUPik6IE9ic2VydmFibGVTZXQ8VD4gJiB7IGRhdGFPYmplY3Q6IHR5cGVvZiBhcnJheSB9ID0+IHtcbiAgICBpZiAoaW5EZXZNb2RlKCkpIHtcbiAgICAgIGlmICghaXNPYnNlcnZhYmxlQXJyYXkoYXJyYXkpKSB7XG4gICAgICAgIHRocm93IGZhaWx1cmUoXCJhc3NlcnRpb24gZmFpbGVkOiBleHBlY3RlZCBhbiBvYnNlcnZhYmxlIGFycmF5XCIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHNldDogT2JzZXJ2YWJsZVNldDxUPlxuICAgIGlmIChnZXRNb2J4VmVyc2lvbigpID49IDYpIHtcbiAgICAgIHNldCA9IG9ic2VydmFibGUuc2V0KGFycmF5KVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXQgPSBvYnNlcnZhYmxlLnNldCgpXG4gICAgICBhcnJheS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIHNldC5hZGQoaXRlbSlcbiAgICAgIH0pXG4gICAgfVxuICAgIDsoc2V0IGFzIGFueSkuZGF0YU9iamVjdCA9IGFycmF5XG5cbiAgICBpZiAoc2V0LnNpemUgIT09IGFycmF5Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgZmFpbHVyZShcImFycmF5cyBiYWNraW5nIGEgc2V0IGNhbm5vdCBjb250YWluIGR1cGxpY2F0ZSB2YWx1ZXNcIilcbiAgICB9XG5cbiAgICBsZXQgc2V0QWxyZWFkeUNoYW5nZWQgPSBmYWxzZVxuICAgIGxldCBhcnJheUFscmVhZHlDaGFuZ2VkID0gZmFsc2VcblxuICAgIC8vIGZvciBzcGVlZCByZWFzb25zIHdlIHdpbGwganVzdCBhc3N1bWUgZGlzdGluY3QgdmFsdWVzIGFyZSBvbmx5IG9uY2UgaW4gdGhlIGFycmF5XG5cbiAgICAvLyB3aGVuIHRoZSBhcnJheSBjaGFuZ2VzIHRoZSBzZXQgY2hhbmdlc1xuICAgIG9ic2VydmUoXG4gICAgICBhcnJheSxcbiAgICAgIGFjdGlvbigoY2hhbmdlOiBhbnkgLypJQXJyYXlEaWRDaGFuZ2U8VD4qLykgPT4ge1xuICAgICAgICBpZiAoc2V0QWxyZWFkeUNoYW5nZWQpIHtcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIGFycmF5QWxyZWFkeUNoYW5nZWQgPSB0cnVlXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzd2l0Y2ggKGNoYW5nZS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFwic3BsaWNlXCI6IHtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92ZWQgPSBjaGFuZ2UucmVtb3ZlZFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVtb3ZlZC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgc2V0LmRlbGV0ZShyZW1vdmVkW2ldKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhZGRlZCA9IGNoYW5nZS5hZGRlZFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYWRkZWQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgIHNldC5hZGQoYWRkZWRbaV0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FzZSBcInVwZGF0ZVwiOiB7XG4gICAgICAgICAgICAgIHNldC5kZWxldGUoY2hhbmdlLm9sZFZhbHVlKVxuICAgICAgICAgICAgICBzZXQuYWRkKGNoYW5nZS5uZXdWYWx1ZSlcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgYXJyYXlBbHJlYWR5Q2hhbmdlZCA9IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKVxuXG4gICAgLy8gd2hlbiB0aGUgc2V0IGNoYW5nZXMgYWxzbyBjaGFuZ2UgdGhlIGFycmF5XG4gICAgaW50ZXJjZXB0KFxuICAgICAgc2V0LFxuICAgICAgYWN0aW9uKChjaGFuZ2U6IElTZXRXaWxsQ2hhbmdlPFQ+KSA9PiB7XG4gICAgICAgIGlmIChzZXRBbHJlYWR5Q2hhbmdlZCkge1xuICAgICAgICAgIHJldHVybiBudWxsXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXJyYXlBbHJlYWR5Q2hhbmdlZCkge1xuICAgICAgICAgIHJldHVybiBjaGFuZ2VcbiAgICAgICAgfVxuXG4gICAgICAgIHNldEFscmVhZHlDaGFuZ2VkID0gdHJ1ZVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc3dpdGNoIChjaGFuZ2UudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcImFkZFwiOiB7XG4gICAgICAgICAgICAgIGFycmF5LnB1c2goY2hhbmdlLm5ld1ZhbHVlKVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjYXNlIFwiZGVsZXRlXCI6IHtcbiAgICAgICAgICAgICAgY29uc3QgaSA9IGFycmF5LmluZGV4T2YoY2hhbmdlLm9sZFZhbHVlKVxuICAgICAgICAgICAgICBpZiAoaSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgYXJyYXkuc3BsaWNlKGksIDEpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY2hhbmdlXG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgc2V0QWxyZWFkeUNoYW5nZWQgPSBmYWxzZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIClcblxuICAgIHJldHVybiBzZXQgYXMgYW55XG4gIH1cbilcblxuY29uc3QgYXNTZXRUYWcgPSB0YWcoKGFycmF5OiBBcnJheTxhbnk+KSA9PiB7XG4gIGFzc2VydElzT2JzZXJ2YWJsZUFycmF5KGFycmF5LCBcImFycmF5XCIpXG4gIHJldHVybiBvYnNlcnZhYmxlU2V0QmFja2VkQnlPYnNlcnZhYmxlQXJyYXkoYXJyYXkpXG59KVxuXG4vKipcbiAqIFdyYXBzIGFuIG9ic2VydmFibGUgYXJyYXkgdG8gb2ZmZXIgYSBzZXQgbGlrZSBpbnRlcmZhY2UuXG4gKlxuICogQHBhcmFtIGFycmF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc1NldDxUPihhcnJheTogQXJyYXk8VD4pOiBPYnNlcnZhYmxlU2V0PFQ+ICYgeyBkYXRhT2JqZWN0OiB0eXBlb2YgYXJyYXkgfSB7XG4gIHJldHVybiBhc1NldFRhZy5mb3IoYXJyYXkpIGFzIGFueVxufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc2V0IHRvIGFuIGFycmF5LiBJZiB0aGUgc2V0IGlzIGEgY29sbGVjdGlvbiB3cmFwcGVyIGl0IHdpbGwgcmV0dXJuIHRoZSBiYWNrZWQgYXJyYXkuXG4gKlxuICogQHBhcmFtIHNldFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0VG9BcnJheTxUPihzZXQ6IFNldDxUPik6IEFycmF5PFQ+IHtcbiAgYXNzZXJ0SXNTZXQoc2V0LCBcInNldFwiKVxuXG4gIGNvbnN0IGRhdGFPYmplY3QgPSAoc2V0IGFzIGFueSkuZGF0YU9iamVjdFxuICBpZiAoZGF0YU9iamVjdCkge1xuICAgIHJldHVybiBkYXRhT2JqZWN0XG4gIH1cblxuICByZXR1cm4gQXJyYXkuZnJvbShzZXQudmFsdWVzKCkpXG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBYUEsTUFBTSx1Q0FBdUMsT0FDM0MsQ0FBSTtNQU9FO01BQ0Esb0JBQW9CLEdBQUc7VUFDbkIsV0FBVyxJQUFJLEtBQUs7QUFBQSxTQUNyQjtVQUNDLFdBQVc7VUFDWCxRQUFRLENBQUM7VUFDVCxJQUFJLElBQUk7QUFBQSxLQUNiO0FBQUE7TUFFVyxhQUFhO01BRXZCLElBQUksU0FBUyxNQUFNLFFBQVE7VUFDdkIsUUFBUSxzREFBc0Q7QUFBQTtNQUdsRSxvQkFBb0I7TUFDcEIsc0JBQXNCO1VBTXhCLE9BQ0EsT0FBTyxDQUFDO1FBQ0YsbUJBQW1COzs7MEJBSUQ7UUFFbEI7Y0FDTSxPQUFPO0FBQUEsYUFDUixVQUFVOztrQkFFTCxVQUFVLE9BQU87cUJBQ2QsSUFBSSxHQUFHLElBQUksUUFBUSxRQUFRLEtBQUs7a0JBQ25DLE9BQU8sUUFBUSxFQUFFO0FBQUE7OztrQkFLakIsUUFBUSxPQUFPO3FCQUNaLElBQUksR0FBRyxJQUFJLE1BQU0sUUFBUSxLQUFLO2tCQUNqQyxJQUFJLE1BQU0sRUFBRTtBQUFBOzs7O2FBT2pCLFVBQVU7Y0FDVCxPQUFPLE9BQU8sUUFBUTtjQUN0QixJQUFJLE9BQU8sUUFBUTs7Ozs7NEJBS0w7QUFBQTtHQUV6QixDQUFDO1lBS0YsS0FDQSxPQUFPLENBQUM7UUFDRixtQkFBbUI7YUFDZDtBQUFBO1FBR0wscUJBQXFCO2FBQ2hCO0FBQUE7d0JBR1c7UUFFaEI7Y0FDTSxPQUFPO0FBQUEsYUFDUixPQUFPO2dCQUNKLEtBQUssT0FBTyxRQUFROzs7YUFJdkIsVUFBVTtnQkFDUCxJQUFJLE1BQU0sUUFBUSxPQUFPLFFBQVE7Y0FDbkMsS0FBSyxHQUFHO2tCQUNKLE9BQU8sR0FBRyxDQUFDO0FBQUE7Ozs7YUFNaEI7QUFBQTswQkFFYTtBQUFBO0dBRXZCLENBQUM7U0FHRztBQUNULENBQUM7QUFHSCxNQUFNLFdBQVcsSUFBSSxDQUFDOzBCQUNJLE9BQU8sT0FBTztTQUMvQixxQ0FBcUMsS0FBSztBQUNuRCxDQUFDO2VBT3dCO1NBQ2hCLFNBQVMsSUFBSSxLQUFLO0FBQzNCO29CQU84QjtjQUNoQixLQUFLLEtBQUs7UUFFaEIsYUFBYyxJQUFZO01BQzVCLFlBQVk7V0FDUDtBQUFBO1NBR0YsTUFBTSxLQUFLLElBQUksUUFBUTtBQUNoQzs7In0=
@@ -1,6 +1,2 @@
1
- import "./tweakArray";
2
- import "./tweakFrozen";
3
- import "./tweakModel";
4
- import "./tweakPlainObject";
5
1
  export * from "./core";
6
2
  export * from "./tweak";
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mobx-keystone",
3
- "version": "0.67.4",
3
+ "version": "0.68.1-alpha",
4
4
  "description": "A MobX powered state management solution based on data trees with first class support for TypeScript, snapshots, patches and much more",
5
5
  "keywords": [
6
6
  "mobx",
@@ -25,25 +25,23 @@
25
25
  "exports": {
26
26
  "./package.json": "./package.json",
27
27
  ".": {
28
- "import": {
29
- "webpack": "./dist/mobx-keystone.es.js",
30
- "default": "./dist/mobx-keystone.es.mjs"
31
- },
28
+ "import": "./dist/src/index.mjs",
32
29
  "require": "./dist/mobx-keystone.umd.js",
33
30
  "script": "./dist/mobx-keystone.umd.js",
34
- "default": "./dist/mobx-keystone.es.mjs"
31
+ "default": "./dist/src/index.mjs"
35
32
  }
36
33
  },
37
- "esmodule": "./dist/mobx-keystone.es.mjs",
38
- "module": "./dist/mobx-keystone.es.js",
39
- "jsnext:main": "./dist/mobx-keystone.es.js",
40
- "react-native": "./dist/mobx-keystone.es.js",
34
+ "esmodule": "./dist/src/index.mjs",
35
+ "module": "./dist/src/index.mjs",
36
+ "jsnext:main": "./dist/src/index.mjs",
37
+ "react-native": "./dist/src/index.mjs",
41
38
  "umd:main": "./dist/mobx-keystone.umd.js",
42
39
  "unpkg": "./dist/mobx-keystone.umd.js",
43
40
  "jsdelivr": "./dist/mobx-keystone.umd.js",
44
41
  "main": "./dist/mobx-keystone.umd.js",
45
42
  "types": "./dist/index.d.ts",
46
43
  "typings": "./dist/index.d.ts",
44
+ "sideEffects": false,
47
45
  "files": [
48
46
  "src",
49
47
  "dist",
@@ -55,7 +53,7 @@
55
53
  "quick-build": "tsc",
56
54
  "quick-build-tests": "tsc -p test",
57
55
  "copy-root-files": "shx cp ../../README.md . && shx cp ../../LICENSE . && shx cp ../../CHANGELOG.md .",
58
- "build": "yarn quick-build && yarn copy-root-files && shx rm -rf dist && vite build && shx cp ./dist/mobx-keystone.es.js ./dist/mobx-keystone.es.mjs",
56
+ "build": "yarn quick-build && yarn copy-root-files && shx rm -rf dist && vite build",
59
57
  "test": "jest",
60
58
  "test:ci": "yarn test -i --coverage",
61
59
  "test:perf": "yarn build && yarn test:perf:run",
@@ -72,10 +70,10 @@
72
70
  "@babel/plugin-proposal-decorators": "^7.17.9",
73
71
  "@babel/preset-env": "^7.16.11",
74
72
  "@babel/preset-typescript": "^7.16.7",
75
- "@swc/core": "^1.2.171",
73
+ "@swc/core": "^1.2.172",
76
74
  "@swc/jest": "^0.2.20",
77
75
  "@types/jest": "^27.4.1",
78
- "@types/node": "^17.0.27",
76
+ "@types/node": "^17.0.29",
79
77
  "babel-jest": "^27.5.1",
80
78
  "jest": "^27.5.1",
81
79
  "mobx": "^6.5.0",
@@ -88,7 +86,7 @@
88
86
  "ts-node": "^10.7.0",
89
87
  "typedoc": "^0.22.15",
90
88
  "typescript": "^4.6.3",
91
- "vite": "^2.9.5"
89
+ "vite": "^2.9.6"
92
90
  },
93
91
  "dependencies": {
94
92
  "fast-deep-equal": "^3.1.3",
@@ -27,6 +27,8 @@ const serializersMap = new Map<string, ActionCallArgumentSerializer<any, any>>()
27
27
  export function registerActionCallArgumentSerializer(
28
28
  serializer: ActionCallArgumentSerializer<any, any>
29
29
  ): () => void {
30
+ registerDefaultActionCallArgumentSerializers()
31
+
30
32
  if (serializersArray.includes(serializer)) {
31
33
  throw failure("action call argument serializer already registered")
32
34
  }
@@ -98,6 +100,8 @@ export function serializeActionCallArgument(
98
100
  argValue: any,
99
101
  targetRoot?: object
100
102
  ): SerializedActionCallArgument | JSONPrimitiveValue {
103
+ registerDefaultActionCallArgumentSerializers()
104
+
101
105
  if (isJSONPrimitive(argValue)) {
102
106
  return argValue
103
107
  }
@@ -161,6 +165,8 @@ export function deserializeActionCallArgument(
161
165
  argValue: SerializedActionCallArgument | JSONPrimitiveValue,
162
166
  targetRoot?: object
163
167
  ): any {
168
+ registerDefaultActionCallArgumentSerializers()
169
+
164
170
  if (isJSONPrimitive(argValue)) {
165
171
  return argValue
166
172
  }
@@ -212,13 +218,22 @@ export function deserializeActionCall(
212
218
  return deserializedActionCall
213
219
  }
214
220
 
215
- // serializer registration (from low priority to high priority)
221
+ let defaultActionCallArgumentSerializersRegistered = false
216
222
 
217
- registerActionCallArgumentSerializer(primitiveSerializer)
218
- registerActionCallArgumentSerializer(plainObjectSerializer)
219
- registerActionCallArgumentSerializer(setSerializer)
220
- registerActionCallArgumentSerializer(mapSerializer)
221
- registerActionCallArgumentSerializer(dateSerializer)
222
- registerActionCallArgumentSerializer(arraySerializer)
223
- registerActionCallArgumentSerializer(objectSnapshotSerializer)
224
- registerActionCallArgumentSerializer(objectPathSerializer)
223
+ function registerDefaultActionCallArgumentSerializers() {
224
+ if (defaultActionCallArgumentSerializersRegistered) {
225
+ return
226
+ }
227
+ defaultActionCallArgumentSerializersRegistered = true
228
+
229
+ // serializer registration (from low priority to high priority)
230
+
231
+ registerActionCallArgumentSerializer(primitiveSerializer)
232
+ registerActionCallArgumentSerializer(plainObjectSerializer)
233
+ registerActionCallArgumentSerializer(setSerializer)
234
+ registerActionCallArgumentSerializer(mapSerializer)
235
+ registerActionCallArgumentSerializer(dateSerializer)
236
+ registerActionCallArgumentSerializer(arraySerializer)
237
+ registerActionCallArgumentSerializer(objectSnapshotSerializer)
238
+ registerActionCallArgumentSerializer(objectPathSerializer)
239
+ }
@@ -18,7 +18,6 @@ import { failure, isObject } from "../utils"
18
18
  import { getOrCreate } from "../utils/mapUtils"
19
19
  import type { DataModelConstructorOptions } from "./DataModelConstructorOptions"
20
20
  import { internalNewDataModel } from "./newDataModel"
21
- import { setBaseDataModel } from "./_BaseDataModel"
22
21
 
23
22
  const dataModelInstanceCache = new WeakMap<ModelClass<AnyDataModel>, WeakMap<any, AnyDataModel>>()
24
23
 
@@ -160,8 +159,6 @@ export abstract class BaseDataModel<TProps extends ModelProps> {
160
159
  }
161
160
  }
162
161
 
163
- setBaseDataModel(BaseDataModel)
164
-
165
162
  /**
166
163
  * @ignore
167
164
  */
@@ -1,7 +1,7 @@
1
1
  import type { ModelClass } from "../modelShared/BaseModelShared"
2
2
  import { failure } from "../utils"
3
3
  import type { AnyDataModel } from "./BaseDataModel"
4
- import { _BaseDataModel } from "./_BaseDataModel"
4
+ import { BaseDataModel } from "./BaseDataModel"
5
5
 
6
6
  /**
7
7
  * Checks if an object is a data model instance.
@@ -10,7 +10,7 @@ import { _BaseDataModel } from "./_BaseDataModel"
10
10
  * @returns
11
11
  */
12
12
  export function isDataModel(model: unknown): model is AnyDataModel {
13
- return model instanceof _BaseDataModel
13
+ return model instanceof BaseDataModel
14
14
  }
15
15
 
16
16
  /**
@@ -39,7 +39,7 @@ export function isDataModelClass(modelClass: unknown): modelClass is ModelClass<
39
39
  return false
40
40
  }
41
41
 
42
- if (modelClass !== _BaseDataModel && !(modelClass.prototype instanceof _BaseDataModel)) {
42
+ if (modelClass !== BaseDataModel && !(modelClass.prototype instanceof BaseDataModel)) {
43
43
  return false
44
44
  }
45
45
 
@@ -57,7 +57,7 @@ export function assertIsDataModelClass(
57
57
  throw failure(`${argName} must be a class`)
58
58
  }
59
59
 
60
- if (modelClass !== _BaseDataModel && !(modelClass.prototype instanceof _BaseDataModel)) {
60
+ if (modelClass !== BaseDataModel && !(modelClass.prototype instanceof BaseDataModel)) {
61
61
  throw failure(`${argName} must extend DataModel`)
62
62
  }
63
63
  }
@@ -0,0 +1,5 @@
1
+ import { WrapInActionOverrideContextFn } from "./wrapInAction";
2
+ export declare function getActionNameAndContextOverride(target: any, propertyKey: string): {
3
+ actionName: string | (() => string);
4
+ overrideContext: WrapInActionOverrideContextFn | undefined;
5
+ };
@@ -0,0 +1,36 @@
1
+ import { Path } from "../parent/pathTypes";
2
+ /**
3
+ * An action call.
4
+ */
5
+ export interface ActionCall {
6
+ /**
7
+ * Action name (name of the function).
8
+ */
9
+ readonly actionName: string;
10
+ /**
11
+ * Action arguments.
12
+ */
13
+ readonly args: ReadonlyArray<any>;
14
+ /**
15
+ * Path to the model where the action will be run, as an array of string | number.
16
+ */
17
+ readonly targetPath: Path;
18
+ /**
19
+ * Ids of models along the path to the target, null if it is not a model.
20
+ */
21
+ readonly targetPathIds: ReadonlyArray<string | null>;
22
+ /**
23
+ * Marks this action call as non-serialized.
24
+ */
25
+ readonly serialized?: undefined;
26
+ }
27
+ /**
28
+ * Applies (runs) an action over a target object.
29
+ *
30
+ * If you intend to apply serialized actions check one of the `applySerializedAction` methods instead.
31
+ *
32
+ * @param subtreeRoot Subtree root target object to run the action over.
33
+ * @param call The action, usually as coming from `onActionMiddleware`.
34
+ * @returns The return value of the action, if any.
35
+ */
36
+ export declare function applyAction<TRet = any>(subtreeRoot: object, call: ActionCall): TRet;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Deletes an object field wrapped in an action.
3
+ *
4
+ * @param node Target object.
5
+ * @param fieldName Field name.
6
+ */
7
+ export declare function applyDelete<O extends object, K extends keyof O>(node: O, fieldName: K): void;