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,138 @@
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 prop2 in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop2))
11
+ __defNormalProp(a, prop2, b[prop2]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop2 of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop2))
15
+ __defNormalProp(a, prop2, b[prop2]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ import { getOrCreate } from "../utils/mapUtils.mjs";
21
+ const noDefaultValue = Symbol("noDefaultValue");
22
+ const idProp = {
23
+ _internal: {
24
+ setter: false,
25
+ isId: true
26
+ },
27
+ withSetter(mode) {
28
+ return __spreadProps(__spreadValues({}, this), { _internal: __spreadProps(__spreadValues({}, this._internal), { setter: mode != null ? mode : true }) });
29
+ }
30
+ };
31
+ function prop(def) {
32
+ let hasDefaultValue = false;
33
+ if (arguments.length >= 1) {
34
+ hasDefaultValue = true;
35
+ }
36
+ const isDefFn = typeof def === "function";
37
+ const obj = {
38
+ _internal: {
39
+ $valueType: null,
40
+ $creationValueType: null,
41
+ $transformedValueType: null,
42
+ $transformedCreationValueType: null,
43
+ $isRequired: null,
44
+ $isId: null,
45
+ $hasSetter: null,
46
+ $fromSnapshotOverride: null,
47
+ $toSnapshotOverride: null,
48
+ defaultFn: hasDefaultValue && isDefFn ? def : noDefaultValue,
49
+ defaultValue: hasDefaultValue && !isDefFn ? def : noDefaultValue,
50
+ typeChecker: void 0,
51
+ setter: false,
52
+ isId: false,
53
+ transform: void 0,
54
+ fromSnapshotProcessor: void 0,
55
+ toSnapshotProcessor: void 0
56
+ },
57
+ withSetter(mode) {
58
+ return __spreadProps(__spreadValues({}, this), { _internal: __spreadProps(__spreadValues({}, this._internal), { setter: mode != null ? mode : true }) });
59
+ },
60
+ withTransform(transform) {
61
+ return __spreadProps(__spreadValues({}, this), { _internal: __spreadProps(__spreadValues({}, this._internal), { transform: toFullTransform(transform) }) });
62
+ },
63
+ withSnapshotProcessor({ fromSnapshot, toSnapshot }) {
64
+ let newFromSnapshot;
65
+ if (this._internal.fromSnapshotProcessor && fromSnapshot) {
66
+ const oldFn = this._internal.fromSnapshotProcessor;
67
+ const newFn = fromSnapshot;
68
+ newFromSnapshot = (sn) => oldFn(newFn(sn));
69
+ } else if (fromSnapshot) {
70
+ newFromSnapshot = fromSnapshot;
71
+ } else {
72
+ newFromSnapshot = this._internal.fromSnapshotProcessor;
73
+ }
74
+ let newToSnapshot;
75
+ if (this._internal.toSnapshotProcessor && toSnapshot) {
76
+ const oldFn = this._internal.toSnapshotProcessor;
77
+ const newFn = toSnapshot;
78
+ newToSnapshot = (sn) => newFn(oldFn(sn));
79
+ } else if (toSnapshot) {
80
+ newToSnapshot = toSnapshot;
81
+ } else {
82
+ newToSnapshot = this._internal.toSnapshotProcessor;
83
+ }
84
+ return __spreadProps(__spreadValues({}, this), {
85
+ _internal: __spreadProps(__spreadValues({}, this._internal), {
86
+ fromSnapshotProcessor: newFromSnapshot,
87
+ toSnapshotProcessor: newToSnapshot
88
+ })
89
+ });
90
+ }
91
+ };
92
+ return obj;
93
+ }
94
+ let cacheTransformResult = false;
95
+ const cacheTransformedValueFn = () => {
96
+ cacheTransformResult = true;
97
+ };
98
+ function toFullTransform(transformObject) {
99
+ const cache = /* @__PURE__ */ new WeakMap();
100
+ const transform = (params) => params.originalValue == null ? params.originalValue : transformObject.transform(params);
101
+ const untransform = (params) => params.transformedValue == null ? params.transformedValue : transformObject.untransform(params);
102
+ return {
103
+ transform(originalValue, model, propName, setOriginalValue) {
104
+ const modelCache = getOrCreate(cache, model, () => /* @__PURE__ */ new Map());
105
+ let propCache = modelCache.get(propName);
106
+ if ((propCache == null ? void 0 : propCache.originalValue) !== originalValue) {
107
+ modelCache.delete(propName);
108
+ propCache = void 0;
109
+ }
110
+ const transformedValue = transform({
111
+ originalValue,
112
+ cachedTransformedValue: propCache == null ? void 0 : propCache.transformedValue,
113
+ setOriginalValue
114
+ });
115
+ modelCache.set(propName, {
116
+ originalValue,
117
+ transformedValue
118
+ });
119
+ return transformedValue;
120
+ },
121
+ untransform(transformedValue, model, propName) {
122
+ const modelCache = getOrCreate(cache, model, () => /* @__PURE__ */ new Map());
123
+ cacheTransformResult = false;
124
+ const originalValue = untransform({
125
+ transformedValue,
126
+ cacheTransformedValue: cacheTransformedValueFn
127
+ });
128
+ if (cacheTransformResult) {
129
+ modelCache.set(propName, { originalValue, transformedValue });
130
+ } else {
131
+ modelCache.delete(propName);
132
+ }
133
+ return originalValue;
134
+ }
135
+ };
136
+ }
137
+ export { idProp, noDefaultValue, prop };
138
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcC5tanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbFNoYXJlZC9wcm9wLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU25hcHNob3RJbk9mLCBTbmFwc2hvdE91dE9mIH0gZnJvbSBcIi4uL3NuYXBzaG90L1NuYXBzaG90T2ZcIlxuaW1wb3J0IHR5cGUgeyBMYXRlVHlwZUNoZWNrZXIsIFR5cGVDaGVja2VyIH0gZnJvbSBcIi4uL3R5cGVzL1R5cGVDaGVja2VyXCJcbmltcG9ydCB7IGdldE9yQ3JlYXRlIH0gZnJvbSBcIi4uL3V0aWxzL21hcFV0aWxzXCJcbmltcG9ydCB0eXBlIHsgRmxhdHRlbiwgSXNOZXZlclR5cGUsIElzT3B0aW9uYWxWYWx1ZSB9IGZyb20gXCIuLi91dGlscy90eXBlc1wiXG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgY29uc3Qgbm9EZWZhdWx0VmFsdWUgPSBTeW1ib2woXCJub0RlZmF1bHRWYWx1ZVwiKVxuXG4vKipcbiAqIEEgbW9kZWwgcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxQcm9wPFxuICBUUHJvcFZhbHVlLFxuICBUUHJvcENyZWF0aW9uVmFsdWUsXG4gIFRUcmFuc2Zvcm1lZFZhbHVlLFxuICBUVHJhbnNmb3JtZWRDcmVhdGlvblZhbHVlLFxuICBUSXNSZXF1aXJlZCxcbiAgVElzSWQgZXh0ZW5kcyBib29sZWFuID0gZmFsc2UsXG4gIFRIYXNTZXR0ZXIgPSBuZXZlcixcbiAgVEZyb21TbmFwc2hvdE92ZXJyaWRlID0gbmV2ZXIsXG4gIFRUb1NuYXBzaG90T3ZlcnJpZGUgPSBuZXZlclxuPiB7XG4gIF9pbnRlcm5hbDoge1xuICAgICR2YWx1ZVR5cGU6IFRQcm9wVmFsdWVcbiAgICAkY3JlYXRpb25WYWx1ZVR5cGU6IFRQcm9wQ3JlYXRpb25WYWx1ZVxuICAgICR0cmFuc2Zvcm1lZFZhbHVlVHlwZTogVFRyYW5zZm9ybWVkVmFsdWVcbiAgICAkdHJhbnNmb3JtZWRDcmVhdGlvblZhbHVlVHlwZTogVFRyYW5zZm9ybWVkQ3JlYXRpb25WYWx1ZVxuICAgICRpc1JlcXVpcmVkOiBUSXNSZXF1aXJlZFxuICAgICRpc0lkOiBUSXNJZFxuICAgICRoYXNTZXR0ZXI6IFRIYXNTZXR0ZXJcbiAgICAkZnJvbVNuYXBzaG90T3ZlcnJpZGU6IFRGcm9tU25hcHNob3RPdmVycmlkZVxuICAgICR0b1NuYXBzaG90T3ZlcnJpZGU6IFRUb1NuYXBzaG90T3ZlcnJpZGVcblxuICAgIGRlZmF1bHRGbjogKCgpID0+IFRQcm9wVmFsdWUpIHwgdHlwZW9mIG5vRGVmYXVsdFZhbHVlXG4gICAgZGVmYXVsdFZhbHVlOiBUUHJvcFZhbHVlIHwgdHlwZW9mIG5vRGVmYXVsdFZhbHVlXG4gICAgdHlwZUNoZWNrZXI6IFR5cGVDaGVja2VyIHwgTGF0ZVR5cGVDaGVja2VyIHwgdW5kZWZpbmVkXG4gICAgc2V0dGVyOiBib29sZWFuIHwgXCJhc3NpZ25cIlxuICAgIGlzSWQ6IGJvb2xlYW5cbiAgICB0cmFuc2Zvcm06XG4gICAgICB8IHtcbiAgICAgICAgICB0cmFuc2Zvcm0oXG4gICAgICAgICAgICBvcmlnaW5hbDogdW5rbm93bixcbiAgICAgICAgICAgIG1vZGVsOiBvYmplY3QsXG4gICAgICAgICAgICBwcm9wTmFtZTogUHJvcGVydHlLZXksXG4gICAgICAgICAgICBzZXRPcmlnaW5hbFZhbHVlOiAobmV3T3JpZ2luYWxWYWx1ZTogdW5rbm93bikgPT4gdm9pZFxuICAgICAgICAgICk6IHVua25vd25cbiAgICAgICAgICB1bnRyYW5zZm9ybSh0cmFuc2Zvcm1lZDogdW5rbm93biwgbW9kZWw6IG9iamVjdCwgcHJvcE5hbWU6IFByb3BlcnR5S2V5KTogdW5rbm93blxuICAgICAgICB9XG4gICAgICB8IHVuZGVmaW5lZFxuICAgIGZyb21TbmFwc2hvdFByb2Nlc3Nvcj8oc246IHVua25vd24pOiB1bmtub3duXG4gICAgdG9TbmFwc2hvdFByb2Nlc3Nvcj8oc246IHVua25vd24pOiB1bmtub3duXG4gIH1cblxuICB3aXRoU2V0dGVyKCk6IE1vZGVsUHJvcDxcbiAgICBUUHJvcFZhbHVlLFxuICAgIFRQcm9wQ3JlYXRpb25WYWx1ZSxcbiAgICBUVHJhbnNmb3JtZWRWYWx1ZSxcbiAgICBUVHJhbnNmb3JtZWRDcmVhdGlvblZhbHVlLFxuICAgIFRJc1JlcXVpcmVkLFxuICAgIFRJc0lkLFxuICAgIHN0cmluZyxcbiAgICBURnJvbVNuYXBzaG90T3ZlcnJpZGUsXG4gICAgVFRvU25hcHNob3RPdmVycmlkZVxuICA+XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBTZXR0ZXIgbWV0aG9kcyBhcmUgcHJlZmVycmVkLlxuICAgKi9cbiAgd2l0aFNldHRlcihcbiAgICBtb2RlOiBcImFzc2lnblwiXG4gICk6IE1vZGVsUHJvcDxcbiAgICBUUHJvcFZhbHVlLFxuICAgIFRQcm9wQ3JlYXRpb25WYWx1ZSxcbiAgICBUVHJhbnNmb3JtZWRWYWx1ZSxcbiAgICBUVHJhbnNmb3JtZWRDcmVhdGlvblZhbHVlLFxuICAgIFRJc1JlcXVpcmVkLFxuICAgIFRJc0lkLFxuICAgIHN0cmluZyxcbiAgICBURnJvbVNuYXBzaG90T3ZlcnJpZGUsXG4gICAgVFRvU25hcHNob3RPdmVycmlkZVxuICA+XG5cbiAgLyoqXG4gICAqIFNldHMgYSB0cmFuc2Zvcm0gZm9yIHRoZSBwcm9wZXJ0eSBpbnN0YW5jZSB2YWx1ZS5cbiAgICpcbiAgICogQHR5cGVwYXJhbSBUVFYgVHJhbnNmb3JtZWQgdmFsdWUgdHlwZS5cbiAgICogQHBhcmFtIHRyYW5zZm9ybSBUcmFuc2Zvcm0gdG8gYmUgdXNlZC5cbiAgICogQHJldHVybnNcbiAgICovXG4gIHdpdGhUcmFuc2Zvcm08VFRWPihcbiAgICB0cmFuc2Zvcm06IE1vZGVsUHJvcFRyYW5zZm9ybTxOb25OdWxsYWJsZTxUUHJvcFZhbHVlPiwgVFRWPlxuICApOiBNb2RlbFByb3A8XG4gICAgVFByb3BWYWx1ZSxcbiAgICBUUHJvcENyZWF0aW9uVmFsdWUsXG4gICAgVFRWIHwgRXh0cmFjdDxUUHJvcFZhbHVlLCBudWxsIHwgdW5kZWZpbmVkPixcbiAgICBUVFYgfCBFeHRyYWN0PFRQcm9wQ3JlYXRpb25WYWx1ZSwgbnVsbCB8IHVuZGVmaW5lZD4sXG4gICAgVElzUmVxdWlyZWQsXG4gICAgVElzSWQsXG4gICAgVEhhc1NldHRlcixcbiAgICBURnJvbVNuYXBzaG90T3ZlcnJpZGUsXG4gICAgVFRvU25hcHNob3RPdmVycmlkZVxuICA+XG5cbiAgd2l0aFNuYXBzaG90UHJvY2Vzc29yPFxuICAgIEZTID0gVEZyb21TbmFwc2hvdE92ZXJyaWRlLFxuICAgIFRTID0gVFRvU25hcHNob3RPdmVycmlkZSxcbiAgICBUaGlzIGV4dGVuZHMgQW55TW9kZWxQcm9wID0gdGhpc1xuICA+KHByb2Nlc3Nvcjoge1xuICAgIGZyb21TbmFwc2hvdD8oc246IEZTKTogTW9kZWxQcm9wRnJvbVNuYXBzaG90PFRoaXM+XG4gICAgdG9TbmFwc2hvdD8oc246IE1vZGVsUHJvcFRvU25hcHNob3Q8VGhpcz4pOiBUU1xuICB9KTogTW9kZWxQcm9wPFxuICAgIFRQcm9wVmFsdWUsXG4gICAgVFByb3BDcmVhdGlvblZhbHVlLFxuICAgIFRUcmFuc2Zvcm1lZFZhbHVlLFxuICAgIFRUcmFuc2Zvcm1lZENyZWF0aW9uVmFsdWUsXG4gICAgVElzUmVxdWlyZWQsXG4gICAgVElzSWQsXG4gICAgVEhhc1NldHRlcixcbiAgICBGUyxcbiAgICBUU1xuICA+XG59XG5cbi8qKlxuICogVGhlIHNuYXBzaG90IGluIHR5cGUgb2YgYSBtb2RlbCBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IHR5cGUgTW9kZWxQcm9wRnJvbVNuYXBzaG90PE1QIGV4dGVuZHMgQW55TW9kZWxQcm9wPiA9IElzTmV2ZXJUeXBlPFxuICBNUFtcIl9pbnRlcm5hbFwiXVtcIiRmcm9tU25hcHNob3RPdmVycmlkZVwiXSxcbiAgU25hcHNob3RJbk9mPE1QW1wiX2ludGVybmFsXCJdW1wiJGNyZWF0aW9uVmFsdWVUeXBlXCJdPixcbiAgTVBbXCJfaW50ZXJuYWxcIl1bXCIkZnJvbVNuYXBzaG90T3ZlcnJpZGVcIl1cbj5cblxuLyoqXG4gKiBUaGUgc25hcHNob3Qgb3V0IHR5cGUgb2YgYSBtb2RlbCBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IHR5cGUgTW9kZWxQcm9wVG9TbmFwc2hvdDxNUCBleHRlbmRzIEFueU1vZGVsUHJvcD4gPSBJc05ldmVyVHlwZTxcbiAgTVBbXCJfaW50ZXJuYWxcIl1bXCIkdG9TbmFwc2hvdE92ZXJyaWRlXCJdLFxuICBTbmFwc2hvdE91dE9mPE1QW1wiX2ludGVybmFsXCJdW1wiJHZhbHVlVHlwZVwiXT4sXG4gIE1QW1wiX2ludGVybmFsXCJdW1wiJHRvU25hcHNob3RPdmVycmlkZVwiXVxuPlxuXG4vKipcbiAqIEEgbW9kZWwgcHJvcCB0cmFuc2Zvcm0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxQcm9wVHJhbnNmb3JtPFRPcmlnaW5hbCwgVFRyYW5zZm9ybWVkPiB7XG4gIHRyYW5zZm9ybShwYXJhbXM6IHtcbiAgICBvcmlnaW5hbFZhbHVlOiBUT3JpZ2luYWxcbiAgICBjYWNoZWRUcmFuc2Zvcm1lZFZhbHVlOiBUVHJhbnNmb3JtZWQgfCB1bmRlZmluZWRcbiAgICBzZXRPcmlnaW5hbFZhbHVlKHZhbHVlOiBUT3JpZ2luYWwpOiB2b2lkXG4gIH0pOiBUVHJhbnNmb3JtZWRcblxuICB1bnRyYW5zZm9ybShwYXJhbXM6IHsgdHJhbnNmb3JtZWRWYWx1ZTogVFRyYW5zZm9ybWVkOyBjYWNoZVRyYW5zZm9ybWVkVmFsdWUoKTogdm9pZCB9KTogVE9yaWdpbmFsXG59XG5cbi8qKlxuICogQW55IG1vZGVsIHByb3BlcnR5LlxuICovXG5leHBvcnQgdHlwZSBBbnlNb2RlbFByb3AgPSBNb2RlbFByb3A8YW55LCBhbnksIGFueSwgYW55LCBhbnksIGFueSwgYW55LCBhbnksIGFueT5cblxuLyoqXG4gKiBNb2RlbCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vZGVsUHJvcHMge1xuICBbazogc3RyaW5nXTogQW55TW9kZWxQcm9wXG59XG5cbmV4cG9ydCB0eXBlIFJlcXVpcmVkTW9kZWxQcm9wczxNUCBleHRlbmRzIE1vZGVsUHJvcHM+ID0ge1xuICBbSyBpbiBrZXlvZiBNUF06IE1QW0tdW1wiX2ludGVybmFsXCJdW1wiJGlzUmVxdWlyZWRcIl0gJiBLXG59W2tleW9mIE1QXVxuXG5leHBvcnQgdHlwZSBNb2RlbFByb3BzVG9EYXRhPE1QIGV4dGVuZHMgTW9kZWxQcm9wcz4gPSBGbGF0dGVuPHtcbiAgW2sgaW4ga2V5b2YgTVBdOiBNUFtrXVtcIl9pbnRlcm5hbFwiXVtcIiR2YWx1ZVR5cGVcIl1cbn0+XG5cbmV4cG9ydCB0eXBlIE1vZGVsUHJvcHNUb1NuYXBzaG90RGF0YTxNUCBleHRlbmRzIE1vZGVsUHJvcHM+ID0gRmxhdHRlbjx7XG4gIFtrIGluIGtleW9mIE1QXTogTW9kZWxQcm9wVG9TbmFwc2hvdDxNUFtrXT4gZXh0ZW5kcyBpbmZlciBSID8gUiA6IG5ldmVyXG59PlxuXG4vLyB3ZSBkb24ndCB1c2UgTy5PcHRpb25hbCBhbnltb3JlIHNpbmNlIGl0IGdlbmVyYXRlcyB1bmlvbnMgdG9vIGhlYXZ5XG4vLyBhbHNvIGlmIHdlIHVzZSBwaWNrIG92ZXIgdGhlIG9wdGlvbmFsIHByb3BzIHdlIHdpbGwgbG9vc2UgdGhlIGFiaWxpdHlcbi8vIHRvIGluZmVyIGdlbmVyaWNzXG4vLyB3ZSBhbHNvIGRvbid0IHVzZSBGbGF0dGVuIGJlY2F1c2UgaWYgd2UgZG8gc29tZSBnZW5lcmljcyB3b24ndCB3b3JrXG5leHBvcnQgdHlwZSBNb2RlbFByb3BzVG9DcmVhdGlvbkRhdGE8TVAgZXh0ZW5kcyBNb2RlbFByb3BzPiA9IHtcbiAgW2sgaW4ga2V5b2YgTVBdPzogTVBba11bXCJfaW50ZXJuYWxcIl1bXCIkY3JlYXRpb25WYWx1ZVR5cGVcIl1cbn0gJiB7XG4gIFtrIGluIFJlcXVpcmVkTW9kZWxQcm9wczxNUD5dOiBNUFtrXVtcIl9pbnRlcm5hbFwiXVtcIiRjcmVhdGlvblZhbHVlVHlwZVwiXVxufVxuXG4vLyB3ZSBkb24ndCB1c2UgTy5PcHRpb25hbCBhbnltb3JlIHNpbmNlIGl0IGdlbmVyYXRlcyB1bmlvbnMgdG9vIGhlYXZ5XG4vLyBhbHNvIGlmIHdlIHVzZSBwaWNrIG92ZXIgdGhlIG9wdGlvbmFsIHByb3BzIHdlIHdpbGwgbG9vc2UgdGhlIGFiaWxpdHlcbi8vIHRvIGluZmVyIGdlbmVyaWNzXG5leHBvcnQgdHlwZSBNb2RlbFByb3BzVG9TbmFwc2hvdENyZWF0aW9uRGF0YTxNUCBleHRlbmRzIE1vZGVsUHJvcHM+ID0gRmxhdHRlbjxcbiAge1xuICAgIFtrIGluIGtleW9mIE1QXT86IE1vZGVsUHJvcEZyb21TbmFwc2hvdDxNUFtrXT4gZXh0ZW5kcyBpbmZlciBSID8gUiA6IG5ldmVyXG4gIH0gJiB7XG4gICAgW2sgaW4ge1xuICAgICAgW0sgaW4ga2V5b2YgTVBdOiBJc05ldmVyVHlwZTxcbiAgICAgICAgTVBbS11bXCJfaW50ZXJuYWxcIl1bXCIkZnJvbVNuYXBzaG90T3ZlcnJpZGVcIl0sXG4gICAgICAgIE1QW0tdW1wiX2ludGVybmFsXCJdW1wiJGlzUmVxdWlyZWRcIl0gJiBLLCAvLyBubyBvdmVycmlkZVxuICAgICAgICBJc09wdGlvbmFsVmFsdWU8TVBbS11bXCJfaW50ZXJuYWxcIl1bXCIkZnJvbVNuYXBzaG90T3ZlcnJpZGVcIl0sIG5ldmVyLCBLPiAvLyB3aXRoIG92ZXJyaWRlXG4gICAgICA+XG4gICAgfVtrZXlvZiBNUF1dOiBNb2RlbFByb3BGcm9tU25hcHNob3Q8TVBba10+IGV4dGVuZHMgaW5mZXIgUiA/IFIgOiBuZXZlclxuICB9XG4+XG5cbmV4cG9ydCB0eXBlIE1vZGVsUHJvcHNUb1RyYW5zZm9ybWVkRGF0YTxNUCBleHRlbmRzIE1vZGVsUHJvcHM+ID0gRmxhdHRlbjx7XG4gIFtrIGluIGtleW9mIE1QXTogTVBba11bXCJfaW50ZXJuYWxcIl1bXCIkdHJhbnNmb3JtZWRWYWx1ZVR5cGVcIl1cbn0+XG5cbi8vIHdlIGRvbid0IHVzZSBPLk9wdGlvbmFsIGFueW1vcmUgc2luY2UgaXQgZ2VuZXJhdGVzIHVuaW9ucyB0b28gaGVhdnlcbi8vIGFsc28gaWYgd2UgdXNlIHBpY2sgb3ZlciB0aGUgb3B0aW9uYWwgcHJvcHMgd2Ugd2lsbCBsb29zZSB0aGUgYWJpbGl0eVxuLy8gdG8gaW5mZXIgZ2VuZXJpY3Ncbi8vIHdlIGFsc28gZG9uJ3QgdXNlIEZsYXR0ZW4gYmVjYXVzZSBpZiB3ZSBkbyBzb21lIGdlbmVyaWNzIHdvbid0IHdvcmtcbi8vIHdlIGFsc28gZG9uJ3QgdXNlIE9taXQgYmVjYXVzZSBpZiB3ZSBkbyBzb21lIGdlbmVyaWNzIHdvbid0IHdvcmtcbmV4cG9ydCB0eXBlIE1vZGVsUHJvcHNUb1RyYW5zZm9ybWVkQ3JlYXRpb25EYXRhPE1QIGV4dGVuZHMgTW9kZWxQcm9wcz4gPSB7XG4gIFtrIGluIGtleW9mIE1QXT86IE1QW2tdW1wiX2ludGVybmFsXCJdW1wiJHRyYW5zZm9ybWVkQ3JlYXRpb25WYWx1ZVR5cGVcIl1cbn0gJiB7XG4gIFtrIGluIFJlcXVpcmVkTW9kZWxQcm9wczxNUD5dOiBNUFtrXVtcIl9pbnRlcm5hbFwiXVtcIiR0cmFuc2Zvcm1lZENyZWF0aW9uVmFsdWVUeXBlXCJdXG59XG5cbmV4cG9ydCB0eXBlIE1vZGVsUHJvcHNUb1NldHRlcjxNUCBleHRlbmRzIE1vZGVsUHJvcHM+ID0gRmxhdHRlbjx7XG4gIFtrIGluIGtleW9mIE1QIGFzIE1QW2tdW1wiX2ludGVybmFsXCJdW1wiJGhhc1NldHRlclwiXSAmIGBzZXQke0NhcGl0YWxpemU8ayAmIHN0cmluZz59YF06IChcbiAgICB2YWx1ZTogTVBba11bXCJfaW50ZXJuYWxcIl1bXCIkdHJhbnNmb3JtZWRWYWx1ZVR5cGVcIl1cbiAgKSA9PiB2b2lkXG59PlxuXG5leHBvcnQgdHlwZSBNb2RlbElkUHJvcCA9IE1vZGVsUHJvcDxcbiAgc3RyaW5nLFxuICBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHN0cmluZyxcbiAgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBuZXZlciwgLy8gbm90IHJlcXVpcmVkXG4gIHRydWVcbj5cblxuLyoqXG4gKiBBIHByb3BlcnR5IHRoYXQgd2lsbCBiZSB1c2VkIGFzIG1vZGVsIGlkLCBhY2Nlc3NpYmxlIHRocm91Z2ggJG1vZGVsSWQuXG4gKiBDYW4gb25seSBiZSB1c2VkIGluIG1vZGVscyBhbmQgdGhlcmUgY2FuIGJlIG9ubHkgb25lIHBlciBtb2RlbC5cbiAqL1xuZXhwb3J0IGNvbnN0IGlkUHJvcCA9IHtcbiAgX2ludGVybmFsOiB7XG4gICAgc2V0dGVyOiBmYWxzZSxcbiAgICBpc0lkOiB0cnVlLFxuICB9LFxuXG4gIHdpdGhTZXR0ZXIobW9kZT86IGJvb2xlYW4gfCBcImFzc2lnblwiKSB7XG4gICAgcmV0dXJuIHsgLi4udGhpcywgX2ludGVybmFsOiB7IC4uLnRoaXMuX2ludGVybmFsLCBzZXR0ZXI6IG1vZGUgPz8gdHJ1ZSB9IH1cbiAgfSxcbn0gYXMgYW55IGFzIE1vZGVsSWRQcm9wXG5cbi8qKlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgdHlwZSBPbmx5UHJpbWl0aXZlczxUPiA9IEV4Y2x1ZGU8VCwgb2JqZWN0PlxuXG4vKipcbiAqIEEgbW9kZWwgcHJvcCB0aGF0IG1heWJlIC8gbWF5YmUgbm90IGlzIG9wdGlvbmFsLCBkZXBlbmRpbmcgb24gaWYgdGhlIHZhbHVlIGNhbiB0YWtlIHVuZGVmaW5lZC5cbiAqL1xuZXhwb3J0IHR5cGUgTWF5YmVPcHRpb25hbE1vZGVsUHJvcDxUUHJvcFZhbHVlPiA9IE1vZGVsUHJvcDxcbiAgVFByb3BWYWx1ZSxcbiAgVFByb3BWYWx1ZSxcbiAgVFByb3BWYWx1ZSxcbiAgVFByb3BWYWx1ZSxcbiAgSXNPcHRpb25hbFZhbHVlPFRQcm9wVmFsdWUsIG5ldmVyLCBzdHJpbmc+IC8vIGNhbGN1bGF0ZSBpZiByZXF1aXJlZFxuPlxuXG4vKipcbiAqIEEgbW9kZWwgcHJvcCB0aGF0IGlzIGRlZmluaXRlbHkgb3B0aW9uYWwuXG4gKi9cbmV4cG9ydCB0eXBlIE9wdGlvbmFsTW9kZWxQcm9wPFRQcm9wVmFsdWU+ID0gTW9kZWxQcm9wPFxuICBUUHJvcFZhbHVlLFxuICBUUHJvcFZhbHVlIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgVFByb3BWYWx1ZSxcbiAgVFByb3BWYWx1ZSB8IG51bGwgfCB1bmRlZmluZWQsXG4gIG5ldmVyIC8vIG5vdCByZXF1aXJlZFxuPlxuXG4vKipcbiAqIERlZmluZXMgYSBtb2RlbCBwcm9wZXJ0eSwgd2l0aCBhbiBvcHRpb25hbCBmdW5jdGlvbiB0byBnZW5lcmF0ZSBhIGRlZmF1bHQgdmFsdWVcbiAqIGlmIHRoZSBpbnB1dCBzbmFwc2hvdCAvIG1vZGVsIGNyZWF0aW9uIGRhdGEgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLlxuICpcbiAqIEV4YW1wbGU6XG4gKiBgYGB0c1xuICogeDogcHJvcCgoKSA9PiAxMCkgLy8gYW4gb3B0aW9uYWwgbnVtYmVyLCB3aXRoIGEgZGVmYXVsdCB2YWx1ZSBvZiAxMFxuICogeDogcHJvcDxudW1iZXJbXT4oKCkgPT4gW10pIC8vIGFuIG9wdGlvbmFsIG51bWJlciBhcnJheSwgd2l0aCBhIGRlZmF1bHQgZW1wdHkgYXJyYXlcbiAqIGBgYFxuICpcbiAqIEB0eXBlcGFyYW0gVFZhbHVlIFZhbHVlIHR5cGUuXG4gKiBAcGFyYW0gZGVmYXVsdEZuIERlZmF1bHQgdmFsdWUgZ2VuZXJhdG9yIGZ1bmN0aW9uLlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3A8VFZhbHVlPihkZWZhdWx0Rm46ICgpID0+IFRWYWx1ZSk6IE9wdGlvbmFsTW9kZWxQcm9wPFRWYWx1ZT5cblxuLyoqXG4gKiBEZWZpbmVzIGEgbW9kZWwgcHJvcGVydHksIHdpdGggYW4gb3B0aW9uYWwgZGVmYXVsdCB2YWx1ZVxuICogaWYgdGhlIGlucHV0IHNuYXBzaG90IC8gbW9kZWwgY3JlYXRpb24gZGF0YSBpcyBgbnVsbGAgb3IgYHVuZGVmaW5lZGAuXG4gKiBZb3Ugc2hvdWxkIG9ubHkgdXNlIHRoaXMgd2l0aCBwcmltaXRpdmUgdmFsdWVzIGFuZCBuZXZlciB3aXRoIG9iamVjdCB2YWx1ZXNcbiAqIChhcnJheSwgbW9kZWwsIG9iamVjdCwgZXRjKS5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHNcbiAqIHg6IHByb3AoMTApIC8vIGFuIG9wdGlvbmFsIG51bWJlciwgd2l0aCBhIGRlZmF1bHQgdmFsdWUgb2YgMTBcbiAqIGBgYFxuICpcbiAqIEB0eXBlcGFyYW0gVFZhbHVlIFZhbHVlIHR5cGUuXG4gKiBAcGFyYW0gZGVmYXVsdFZhbHVlIERlZmF1bHQgcHJpbWl0aXZlIHZhbHVlLlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3A8VFZhbHVlPihkZWZhdWx0VmFsdWU6IE9ubHlQcmltaXRpdmVzPFRWYWx1ZT4pOiBPcHRpb25hbE1vZGVsUHJvcDxUVmFsdWU+XG5cbi8qKlxuICogRGVmaW5lcyBhIG1vZGVsIHByb3BlcnR5IHdpdGggbm8gZGVmYXVsdCB2YWx1ZS5cbiAqXG4gKiBFeGFtcGxlOlxuICogYGBgdHNcbiAqIHg6IHByb3A8bnVtYmVyPigpIC8vIGEgcmVxdWlyZWQgbnVtYmVyXG4gKiB4OiBwcm9wPG51bWJlciB8IHVuZGVmaW5lZD4oKSAvLyBhbiBvcHRpb25hbCBudW1iZXIsIHdoaWNoIGRlZmF1bHRzIHRvIHVuZGVmaW5lZFxuICogYGBgXG4gKlxuICogQHR5cGVwYXJhbSBUVmFsdWUgVmFsdWUgdHlwZS5cbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9wPFRWYWx1ZT4oKTogTWF5YmVPcHRpb25hbE1vZGVsUHJvcDxUVmFsdWU+XG5cbi8vIGJhc2VcbmV4cG9ydCBmdW5jdGlvbiBwcm9wKGRlZj86IGFueSk6IEFueU1vZGVsUHJvcCB7XG4gIGxldCBoYXNEZWZhdWx0VmFsdWUgPSBmYWxzZVxuXG4gIC8vIGRlZmF1bHRcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gMSkge1xuICAgIGhhc0RlZmF1bHRWYWx1ZSA9IHRydWVcbiAgfVxuXG4gIGNvbnN0IGlzRGVmRm4gPSB0eXBlb2YgZGVmID09PSBcImZ1bmN0aW9uXCJcblxuICBjb25zdCBvYmo6IEFueU1vZGVsUHJvcCA9IHtcbiAgICBfaW50ZXJuYWw6IHtcbiAgICAgICR2YWx1ZVR5cGU6IG51bGwgYXMgYW55LFxuICAgICAgJGNyZWF0aW9uVmFsdWVUeXBlOiBudWxsIGFzIGFueSxcbiAgICAgICR0cmFuc2Zvcm1lZFZhbHVlVHlwZTogbnVsbCBhcyBhbnksXG4gICAgICAkdHJhbnNmb3JtZWRDcmVhdGlvblZhbHVlVHlwZTogbnVsbCBhcyBhbnksXG4gICAgICAkaXNSZXF1aXJlZDogbnVsbCBhcyBuZXZlcixcbiAgICAgICRpc0lkOiBudWxsIGFzIG5ldmVyLFxuICAgICAgJGhhc1NldHRlcjogbnVsbCBhcyBuZXZlcixcbiAgICAgICRmcm9tU25hcHNob3RPdmVycmlkZTogbnVsbCBhcyBuZXZlcixcbiAgICAgICR0b1NuYXBzaG90T3ZlcnJpZGU6IG51bGwgYXMgbmV2ZXIsXG5cbiAgICAgIGRlZmF1bHRGbjogaGFzRGVmYXVsdFZhbHVlICYmIGlzRGVmRm4gPyBkZWYgOiBub0RlZmF1bHRWYWx1ZSxcbiAgICAgIGRlZmF1bHRWYWx1ZTogaGFzRGVmYXVsdFZhbHVlICYmICFpc0RlZkZuID8gZGVmIDogbm9EZWZhdWx0VmFsdWUsXG4gICAgICB0eXBlQ2hlY2tlcjogdW5kZWZpbmVkLFxuICAgICAgc2V0dGVyOiBmYWxzZSxcbiAgICAgIGlzSWQ6IGZhbHNlLFxuICAgICAgdHJhbnNmb3JtOiB1bmRlZmluZWQsXG4gICAgICBmcm9tU25hcHNob3RQcm9jZXNzb3I6IHVuZGVmaW5lZCxcbiAgICAgIHRvU25hcHNob3RQcm9jZXNzb3I6IHVuZGVmaW5lZCxcbiAgICB9LFxuXG4gICAgd2l0aFNldHRlcihtb2RlPzogYm9vbGVhbiB8IFwiYXNzaWduXCIpIHtcbiAgICAgIHJldHVybiB7IC4uLnRoaXMsIF9pbnRlcm5hbDogeyAuLi50aGlzLl9pbnRlcm5hbCwgc2V0dGVyOiBtb2RlID8/IHRydWUgfSB9XG4gICAgfSxcblxuICAgIHdpdGhUcmFuc2Zvcm0odHJhbnNmb3JtOiBNb2RlbFByb3BUcmFuc2Zvcm08dW5rbm93biwgdW5rbm93bj4pIHtcbiAgICAgIHJldHVybiB7IC4uLnRoaXMsIF9pbnRlcm5hbDogeyAuLi50aGlzLl9pbnRlcm5hbCwgdHJhbnNmb3JtOiB0b0Z1bGxUcmFuc2Zvcm0odHJhbnNmb3JtKSB9IH1cbiAgICB9LFxuXG4gICAgd2l0aFNuYXBzaG90UHJvY2Vzc29yKHsgZnJvbVNuYXBzaG90LCB0b1NuYXBzaG90IH0pIHtcbiAgICAgIGxldCBuZXdGcm9tU25hcHNob3RcblxuICAgICAgaWYgKHRoaXMuX2ludGVybmFsLmZyb21TbmFwc2hvdFByb2Nlc3NvciAmJiBmcm9tU25hcHNob3QpIHtcbiAgICAgICAgY29uc3Qgb2xkRm4gPSB0aGlzLl9pbnRlcm5hbC5mcm9tU25hcHNob3RQcm9jZXNzb3JcbiAgICAgICAgY29uc3QgbmV3Rm4gPSBmcm9tU25hcHNob3RcbiAgICAgICAgbmV3RnJvbVNuYXBzaG90ID0gKHNuOiBhbnkpID0+IG9sZEZuKG5ld0ZuKHNuKSlcbiAgICAgIH0gZWxzZSBpZiAoZnJvbVNuYXBzaG90KSB7XG4gICAgICAgIG5ld0Zyb21TbmFwc2hvdCA9IGZyb21TbmFwc2hvdFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3RnJvbVNuYXBzaG90ID0gdGhpcy5faW50ZXJuYWwuZnJvbVNuYXBzaG90UHJvY2Vzc29yXG4gICAgICB9XG5cbiAgICAgIGxldCBuZXdUb1NuYXBzaG90XG5cbiAgICAgIGlmICh0aGlzLl9pbnRlcm5hbC50b1NuYXBzaG90UHJvY2Vzc29yICYmIHRvU25hcHNob3QpIHtcbiAgICAgICAgY29uc3Qgb2xkRm46IGFueSA9IHRoaXMuX2ludGVybmFsLnRvU25hcHNob3RQcm9jZXNzb3JcbiAgICAgICAgY29uc3QgbmV3Rm4gPSB0b1NuYXBzaG90XG4gICAgICAgIG5ld1RvU25hcHNob3QgPSAoc246IGFueSkgPT4gbmV3Rm4ob2xkRm4oc24pKVxuICAgICAgfSBlbHNlIGlmICh0b1NuYXBzaG90KSB7XG4gICAgICAgIG5ld1RvU25hcHNob3QgPSB0b1NuYXBzaG90XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdUb1NuYXBzaG90ID0gdGhpcy5faW50ZXJuYWwudG9TbmFwc2hvdFByb2Nlc3NvclxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi50aGlzLFxuICAgICAgICBfaW50ZXJuYWw6IHtcbiAgICAgICAgICAuLi50aGlzLl9pbnRlcm5hbCxcbiAgICAgICAgICBmcm9tU25hcHNob3RQcm9jZXNzb3I6IG5ld0Zyb21TbmFwc2hvdCxcbiAgICAgICAgICB0b1NuYXBzaG90UHJvY2Vzc29yOiBuZXdUb1NuYXBzaG90LFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH0sXG4gIH1cblxuICByZXR1cm4gb2JqXG59XG5cbmxldCBjYWNoZVRyYW5zZm9ybVJlc3VsdCA9IGZhbHNlXG5jb25zdCBjYWNoZVRyYW5zZm9ybWVkVmFsdWVGbiA9ICgpID0+IHtcbiAgY2FjaGVUcmFuc2Zvcm1SZXN1bHQgPSB0cnVlXG59XG5cbmZ1bmN0aW9uIHRvRnVsbFRyYW5zZm9ybSh0cmFuc2Zvcm1PYmplY3Q6IE1vZGVsUHJvcFRyYW5zZm9ybTx1bmtub3duLCB1bmtub3duPikge1xuICBjb25zdCBjYWNoZSA9IG5ldyBXZWFrTWFwPFxuICAgIG9iamVjdCxcbiAgICBNYXA8UHJvcGVydHlLZXksIHsgb3JpZ2luYWxWYWx1ZTogdW5rbm93bjsgdHJhbnNmb3JtZWRWYWx1ZTogdW5rbm93biB9PlxuICA+KClcblxuICBjb25zdCB0cmFuc2Zvcm0gPSAocGFyYW1zOiB7XG4gICAgb3JpZ2luYWxWYWx1ZTogdW5rbm93blxuICAgIGNhY2hlZFRyYW5zZm9ybWVkVmFsdWU6IHVua25vd25cbiAgICBzZXRPcmlnaW5hbFZhbHVlKG5ld09yaWdpbmFsVmFsdWU6IHVua25vd24pOiB2b2lkXG4gIH0pID0+IChwYXJhbXMub3JpZ2luYWxWYWx1ZSA9PSBudWxsID8gcGFyYW1zLm9yaWdpbmFsVmFsdWUgOiB0cmFuc2Zvcm1PYmplY3QudHJhbnNmb3JtKHBhcmFtcykpXG5cbiAgY29uc3QgdW50cmFuc2Zvcm0gPSAocGFyYW1zOiB7IHRyYW5zZm9ybWVkVmFsdWU6IHVua25vd247IGNhY2hlVHJhbnNmb3JtZWRWYWx1ZSgpOiB2b2lkIH0pID0+XG4gICAgcGFyYW1zLnRyYW5zZm9ybWVkVmFsdWUgPT0gbnVsbCA/IHBhcmFtcy50cmFuc2Zvcm1lZFZhbHVlIDogdHJhbnNmb3JtT2JqZWN0LnVudHJhbnNmb3JtKHBhcmFtcylcblxuICByZXR1cm4ge1xuICAgIHRyYW5zZm9ybShcbiAgICAgIG9yaWdpbmFsVmFsdWU6IHVua25vd24sXG4gICAgICBtb2RlbDogb2JqZWN0LFxuICAgICAgcHJvcE5hbWU6IFByb3BlcnR5S2V5LFxuICAgICAgc2V0T3JpZ2luYWxWYWx1ZTogKG5ld09yaWdpbmFsVmFsdWU6IHVua25vd24pID0+IHZvaWRcbiAgICApIHtcbiAgICAgIGNvbnN0IG1vZGVsQ2FjaGUgPSBnZXRPckNyZWF0ZShjYWNoZSwgbW9kZWwsICgpID0+IG5ldyBNYXAoKSlcblxuICAgICAgbGV0IHByb3BDYWNoZSA9IG1vZGVsQ2FjaGUuZ2V0KHByb3BOYW1lKVxuICAgICAgaWYgKHByb3BDYWNoZT8ub3JpZ2luYWxWYWx1ZSAhPT0gb3JpZ2luYWxWYWx1ZSkge1xuICAgICAgICAvLyBvcmlnaW5hbCBjaGFuZ2VkLCBpbnZhbGlkYXRlIGNhY2hlXG4gICAgICAgIG1vZGVsQ2FjaGUuZGVsZXRlKHByb3BOYW1lKVxuICAgICAgICBwcm9wQ2FjaGUgPSB1bmRlZmluZWRcbiAgICAgIH1cblxuICAgICAgY29uc3QgdHJhbnNmb3JtZWRWYWx1ZSA9IHRyYW5zZm9ybSh7XG4gICAgICAgIG9yaWdpbmFsVmFsdWUsXG4gICAgICAgIGNhY2hlZFRyYW5zZm9ybWVkVmFsdWU6IHByb3BDYWNoZT8udHJhbnNmb3JtZWRWYWx1ZSxcbiAgICAgICAgc2V0T3JpZ2luYWxWYWx1ZSxcbiAgICAgIH0pXG5cbiAgICAgIG1vZGVsQ2FjaGUuc2V0KHByb3BOYW1lLCB7XG4gICAgICAgIG9yaWdpbmFsVmFsdWUsXG4gICAgICAgIHRyYW5zZm9ybWVkVmFsdWUsXG4gICAgICB9KVxuXG4gICAgICByZXR1cm4gdHJhbnNmb3JtZWRWYWx1ZVxuICAgIH0sXG5cbiAgICB1bnRyYW5zZm9ybSh0cmFuc2Zvcm1lZFZhbHVlOiB1bmtub3duLCBtb2RlbDogb2JqZWN0LCBwcm9wTmFtZTogUHJvcGVydHlLZXkpIHtcbiAgICAgIGNvbnN0IG1vZGVsQ2FjaGUgPSBnZXRPckNyZWF0ZShjYWNoZSwgbW9kZWwsICgpID0+IG5ldyBNYXAoKSlcblxuICAgICAgY2FjaGVUcmFuc2Zvcm1SZXN1bHQgPSBmYWxzZVxuICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZSA9IHVudHJhbnNmb3JtKHtcbiAgICAgICAgdHJhbnNmb3JtZWRWYWx1ZSxcbiAgICAgICAgY2FjaGVUcmFuc2Zvcm1lZFZhbHVlOiBjYWNoZVRyYW5zZm9ybWVkVmFsdWVGbixcbiAgICAgIH0pXG4gICAgICBpZiAoY2FjaGVUcmFuc2Zvcm1SZXN1bHQpIHtcbiAgICAgICAgbW9kZWxDYWNoZS5zZXQocHJvcE5hbWUsIHsgb3JpZ2luYWxWYWx1ZSwgdHJhbnNmb3JtZWRWYWx1ZSB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbW9kZWxDYWNoZS5kZWxldGUocHJvcE5hbWUpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvcmlnaW5hbFZhbHVlXG4gICAgfSxcbiAgfVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O01BUWEsaUJBQWlCLE9BQU8sZ0JBQWdCO01Bd094QyxTQUFTO0FBQUEsRUFDcEIsV0FBVztBQUFBLElBQ1QsUUFBUTtBQUFBLElBQ1IsTUFBTTtBQUFBO0VBR1IsV0FBVztXQUNGLGlDQUFLLE9BQUwsRUFBVyxXQUFXLGlDQUFLLEtBQUssWUFBVixFQUFxQixRQUFRLHNCQUFROzs7Y0ErRWpEO01BQ2Ysa0JBQWtCO01BR2xCLFVBQVUsVUFBVSxHQUFHO3NCQUNQO0FBQUE7UUFHZCxVQUFVLE9BQU8sUUFBUTtRQUV6QixNQUFvQjtBQUFBLElBQ3hCLFdBQVc7QUFBQSxNQUNULFlBQVk7QUFBQSxNQUNaLG9CQUFvQjtBQUFBLE1BQ3BCLHVCQUF1QjtBQUFBLE1BQ3ZCLCtCQUErQjtBQUFBLE1BQy9CLGFBQWE7QUFBQSxNQUNiLE9BQU87QUFBQSxNQUNQLFlBQVk7QUFBQSxNQUNaLHVCQUF1QjtBQUFBLE1BQ3ZCLHFCQUFxQjtBQUFBLE1BRXJCLFdBQVcsbUJBQW1CLFVBQVUsTUFBTTtBQUFBLE1BQzlDLGNBQWMsbUJBQW1CLENBQUMsVUFBVSxNQUFNO0FBQUEsTUFDbEQsYUFBYTtBQUFBLE1BQ2IsUUFBUTtBQUFBLE1BQ1IsTUFBTTtBQUFBLE1BQ04sV0FBVztBQUFBLE1BQ1gsdUJBQXVCO0FBQUEsTUFDdkIscUJBQXFCO0FBQUE7SUFHdkIsV0FBVzthQUNGLGlDQUFLLE9BQUwsRUFBVyxXQUFXLGlDQUFLLEtBQUssWUFBVixFQUFxQixRQUFRLHNCQUFROztJQUdwRSxjQUFjO2FBQ0wsaUNBQUssT0FBTCxFQUFXLFdBQVcsaUNBQUssS0FBSyxZQUFWLEVBQXFCLFdBQVcsZ0JBQWdCLFNBQVM7O0lBR3hGLHNCQUFzQixFQUFFLGNBQWM7VUFDaEM7VUFFQSxLQUFLLFVBQVUseUJBQXlCLGNBQWM7Y0FDbEQsUUFBUSxLQUFLLFVBQVU7Y0FDdkIsUUFBUTswQkFDSSxDQUFDLE9BQVksTUFBTSxNQUFNLEVBQUUsQ0FBQztBQUFBLGlCQUNyQyxjQUFjOzBCQUNMO0FBQUEsYUFDYjswQkFDYSxLQUFLLFVBQVU7QUFBQTtVQUcvQjtVQUVBLEtBQUssVUFBVSx1QkFBdUIsWUFBWTtjQUM5QyxRQUFhLEtBQUssVUFBVTtjQUM1QixRQUFRO3dCQUNFLENBQUMsT0FBWSxNQUFNLE1BQU0sRUFBRSxDQUFDO0FBQUEsaUJBQ25DLFlBQVk7d0JBQ0w7QUFBQSxhQUNYO3dCQUNXLEtBQUssVUFBVTtBQUFBO2FBRzFCLGlDQUNGLE9BREU7QUFBQSxRQUVMLFdBQVcsaUNBQ04sS0FBSyxZQURDO0FBQUEsVUFFVCx1QkFBdUI7QUFBQSxVQUN2QixxQkFBcUI7QUFBQTs7OztTQU10QjtBQUNUO0FBRUEsSUFBSSx1QkFBdUI7QUFDM0IsTUFBTSwwQkFBMEI7eUJBQ1A7QUFDekI7QUFFQSx5QkFBeUI7UUFDakIsNEJBQVk7UUFLWixZQUFZLENBQUMsV0FJWixPQUFPLGlCQUFpQixPQUFPLE9BQU8sZ0JBQWdCLGdCQUFnQixVQUFVLE1BQU07UUFFdkYsY0FBYyxDQUFDLFdBQ25CLE9BQU8sb0JBQW9CLE9BQU8sT0FBTyxtQkFBbUIsZ0JBQWdCLFlBQVksTUFBTTtTQUV6RjtBQUFBLElBQ0wsVUFDRSxlQUNBLE9BQ0EsVUFDQTtZQUVNLGFBQWEsWUFBWSxPQUFPLE9BQU8sMEJBQVUsS0FBSztVQUV4RCxZQUFZLFdBQVcsSUFBSSxRQUFRO1VBQ25DLHdDQUFXLG1CQUFrQixlQUFlO21CQUVuQyxPQUFPLFFBQVE7b0JBQ2Q7QUFBQTtZQUdSLG1CQUFtQixVQUFVO0FBQUEsUUFDakM7QUFBQSxRQUNBLHdCQUF3Qix1Q0FBVztBQUFBLFFBQ25DO0FBQUEsT0FDRDtpQkFFVSxJQUFJLFVBQVU7QUFBQSxRQUN2QjtBQUFBLFFBQ0E7QUFBQSxPQUNEO2FBRU07QUFBQTtJQUdULFlBQVksa0JBQTJCLE9BQWU7WUFDOUMsYUFBYSxZQUFZLE9BQU8sT0FBTywwQkFBVSxLQUFLOzZCQUVyQztZQUNqQixnQkFBZ0IsWUFBWTtBQUFBLFFBQ2hDO0FBQUEsUUFDQSx1QkFBdUI7QUFBQSxPQUN4QjtVQUNHLHNCQUFzQjttQkFDYixJQUFJLFVBQVUsRUFBRSxlQUFlLGtCQUFrQjtBQUFBLGFBQ3ZEO21CQUNNLE9BQU8sUUFBUTtBQUFBO2FBR3JCO0FBQUE7O0FBR2I7OyJ9
@@ -0,0 +1,10 @@
1
+ import { isDataModelClass } from "../dataModel/utils.mjs";
2
+ import { isModelClass } from "../model/utils.mjs";
3
+ import { failure } from "../utils/index.mjs";
4
+ function assertIsClassOrDataModelClass(model, argName, customErrMsg = "must be a class or data model class") {
5
+ if (!isModelClass(model) && !isDataModelClass(model)) {
6
+ throw failure(`${argName} ${customErrMsg}`);
7
+ }
8
+ }
9
+ export { assertIsClassOrDataModelClass };
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMubWpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxTaGFyZWQvdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBbnlEYXRhTW9kZWwgfSBmcm9tIFwiLi4vZGF0YU1vZGVsL0Jhc2VEYXRhTW9kZWxcIlxuaW1wb3J0IHsgaXNEYXRhTW9kZWxDbGFzcyB9IGZyb20gXCIuLi9kYXRhTW9kZWwvdXRpbHNcIlxuaW1wb3J0IHR5cGUgeyBBbnlNb2RlbCB9IGZyb20gXCIuLi9tb2RlbC9CYXNlTW9kZWxcIlxuaW1wb3J0IHsgaXNNb2RlbENsYXNzIH0gZnJvbSBcIi4uL21vZGVsL3V0aWxzXCJcbmltcG9ydCB7IGZhaWx1cmUgfSBmcm9tIFwiLi4vdXRpbHNcIlxuaW1wb3J0IHR5cGUgeyBNb2RlbENsYXNzIH0gZnJvbSBcIi4vQmFzZU1vZGVsU2hhcmVkXCJcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqXG4gKiBBc3NlcnRzIHNvbWV0aGluZyBpcyBhY3R1YWxseSBhIGNsYXNzIG9yIGRhdGEgbW9kZWwuXG4gKlxuICogQHBhcmFtIG1vZGVsXG4gKiBAcGFyYW0gYXJnTmFtZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SXNDbGFzc09yRGF0YU1vZGVsQ2xhc3MoXG4gIG1vZGVsOiB1bmtub3duLFxuICBhcmdOYW1lOiBzdHJpbmcsXG4gIGN1c3RvbUVyck1zZyA9IFwibXVzdCBiZSBhIGNsYXNzIG9yIGRhdGEgbW9kZWwgY2xhc3NcIlxuKTogYXNzZXJ0cyBtb2RlbCBpcyBNb2RlbENsYXNzPEFueU1vZGVsPiB8IE1vZGVsQ2xhc3M8QW55RGF0YU1vZGVsPiB7XG4gIGlmICghaXNNb2RlbENsYXNzKG1vZGVsKSAmJiAhaXNEYXRhTW9kZWxDbGFzcyhtb2RlbCkpIHtcbiAgICB0aHJvdyBmYWlsdXJlKGAke2FyZ05hbWV9ICR7Y3VzdG9tRXJyTXNnfWApXG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7dUNBZ0JFLE9BQ0EsU0FDQSxlQUFlO01BRVgsQ0FBQyxhQUFhLEtBQUssS0FBSyxDQUFDLGlCQUFpQixLQUFLLEdBQUc7VUFDOUMsUUFBUSxHQUFHLFdBQVcsY0FBYztBQUFBO0FBRTlDOzsifQ==
@@ -0,0 +1,34 @@
1
+ import { createAtom } from "mobx";
2
+ import { isModel } from "../model/utils.mjs";
3
+ import { getOrCreate } from "../utils/mapUtils.mjs";
4
+ const objectParents = /* @__PURE__ */ new WeakMap();
5
+ const objectParentsAtoms = /* @__PURE__ */ new WeakMap();
6
+ function parentPathEquals(parentPath1, parentPath2, comparePath = true) {
7
+ if (!parentPath1 && !parentPath2)
8
+ return true;
9
+ if (!parentPath1 || !parentPath2)
10
+ return false;
11
+ const parentEquals = parentPath1.parent === parentPath2.parent;
12
+ if (!parentEquals)
13
+ return false;
14
+ return comparePath ? parentPath1.path === parentPath2.path : true;
15
+ }
16
+ function createParentPathAtom(obj) {
17
+ return getOrCreate(objectParentsAtoms, obj, () => createAtom("parentAtom"));
18
+ }
19
+ function reportParentPathObserved(node) {
20
+ createParentPathAtom(node).reportObserved();
21
+ }
22
+ function reportParentPathChanged(node) {
23
+ createParentPathAtom(node).reportChanged();
24
+ }
25
+ const dataObjectParent = /* @__PURE__ */ new WeakMap();
26
+ function dataToModelNode(node) {
27
+ const modelNode = dataObjectParent.get(node);
28
+ return modelNode != null ? modelNode : node;
29
+ }
30
+ function modelToDataNode(node) {
31
+ return isModel(node) ? node.$ : node;
32
+ }
33
+ export { dataObjectParent, dataToModelNode, modelToDataNode, objectParents, parentPathEquals, reportParentPathChanged, reportParentPathObserved };
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5tanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJlbnQvY29yZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVBdG9tLCBJQXRvbSB9IGZyb20gXCJtb2J4XCJcbmltcG9ydCB7IGlzTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWwvdXRpbHNcIlxuaW1wb3J0IHsgZ2V0T3JDcmVhdGUgfSBmcm9tIFwiLi4vdXRpbHMvbWFwVXRpbHNcIlxuaW1wb3J0IHR5cGUgeyBQYXJlbnRQYXRoIH0gZnJvbSBcIi4vcGF0aFwiXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBvYmplY3RQYXJlbnRzID0gbmV3IFdlYWtNYXA8b2JqZWN0LCBQYXJlbnRQYXRoPG9iamVjdD4gfCB1bmRlZmluZWQ+KClcblxuY29uc3Qgb2JqZWN0UGFyZW50c0F0b21zID0gbmV3IFdlYWtNYXA8b2JqZWN0LCBJQXRvbT4oKVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyZW50UGF0aEVxdWFscyhcbiAgcGFyZW50UGF0aDE6IFBhcmVudFBhdGg8YW55PiB8IHVuZGVmaW5lZCxcbiAgcGFyZW50UGF0aDI6IFBhcmVudFBhdGg8YW55PiB8IHVuZGVmaW5lZCxcbiAgY29tcGFyZVBhdGggPSB0cnVlXG4pIHtcbiAgaWYgKCFwYXJlbnRQYXRoMSAmJiAhcGFyZW50UGF0aDIpIHJldHVybiB0cnVlXG4gIGlmICghcGFyZW50UGF0aDEgfHwgIXBhcmVudFBhdGgyKSByZXR1cm4gZmFsc2VcbiAgY29uc3QgcGFyZW50RXF1YWxzID0gcGFyZW50UGF0aDEucGFyZW50ID09PSBwYXJlbnRQYXRoMi5wYXJlbnRcbiAgaWYgKCFwYXJlbnRFcXVhbHMpIHJldHVybiBmYWxzZVxuICByZXR1cm4gY29tcGFyZVBhdGggPyBwYXJlbnRQYXRoMS5wYXRoID09PSBwYXJlbnRQYXRoMi5wYXRoIDogdHJ1ZVxufVxuXG5mdW5jdGlvbiBjcmVhdGVQYXJlbnRQYXRoQXRvbShvYmo6IG9iamVjdCkge1xuICByZXR1cm4gZ2V0T3JDcmVhdGUob2JqZWN0UGFyZW50c0F0b21zLCBvYmosICgpID0+IGNyZWF0ZUF0b20oXCJwYXJlbnRBdG9tXCIpKVxufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVwb3J0UGFyZW50UGF0aE9ic2VydmVkKG5vZGU6IG9iamVjdCkge1xuICBjcmVhdGVQYXJlbnRQYXRoQXRvbShub2RlKS5yZXBvcnRPYnNlcnZlZCgpXG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBvcnRQYXJlbnRQYXRoQ2hhbmdlZChub2RlOiBvYmplY3QpIHtcbiAgY3JlYXRlUGFyZW50UGF0aEF0b20obm9kZSkucmVwb3J0Q2hhbmdlZCgpXG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBkYXRhT2JqZWN0UGFyZW50ID0gbmV3IFdlYWtNYXA8b2JqZWN0LCBvYmplY3Q+KClcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGFUb01vZGVsTm9kZTxUIGV4dGVuZHMgb2JqZWN0Pihub2RlOiBUKTogVCB7XG4gIGNvbnN0IG1vZGVsTm9kZSA9IGRhdGFPYmplY3RQYXJlbnQuZ2V0KG5vZGUpXG4gIHJldHVybiAobW9kZWxOb2RlIGFzIFQpID8/IG5vZGVcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vZGVsVG9EYXRhTm9kZTxUIGV4dGVuZHMgb2JqZWN0Pihub2RlOiBUKTogVCB7XG4gIHJldHVybiBpc01vZGVsKG5vZGUpID8gbm9kZS4kIDogbm9kZVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztNQVFhLG9DQUFvQjtBQUVqQyxNQUFNLHlDQUF5QjswQkFNN0IsYUFDQSxhQUNBLGNBQWM7TUFFVixDQUFDLGVBQWUsQ0FBQztXQUFvQjtNQUNyQyxDQUFDLGVBQWUsQ0FBQztXQUFvQjtRQUNuQyxlQUFlLFlBQVksV0FBVyxZQUFZO01BQ3BELENBQUM7V0FBcUI7U0FDbkIsY0FBYyxZQUFZLFNBQVMsWUFBWSxPQUFPO0FBQy9EO0FBRUEsOEJBQThCO1NBQ3JCLFlBQVksb0JBQW9CLEtBQUssTUFBTSxXQUFXLFlBQVksQ0FBQztBQUM1RTtrQ0FLeUM7dUJBQ2xCLElBQUksRUFBRTtBQUM3QjtpQ0FLd0M7dUJBQ2pCLElBQUksRUFBRTtBQUM3QjtNQUthLHVDQUF1Qjt5QkFLYztRQUMxQyxZQUFZLGlCQUFpQixJQUFJLElBQUk7U0FDbkMsZ0NBQW1CO0FBQzdCO3lCQUtrRDtTQUN6QyxRQUFRLElBQUksSUFBSSxLQUFLLElBQUk7QUFDbEM7OyJ9
@@ -0,0 +1,98 @@
1
+ import { action, observable, createAtom } from "mobx";
2
+ import { fastGetParent } from "./path.mjs";
3
+ const defaultObservableSetOptions = { deep: false };
4
+ const objectChildren = /* @__PURE__ */ new WeakMap();
5
+ function initializeObjectChildren(node) {
6
+ if (objectChildren.has(node)) {
7
+ return;
8
+ }
9
+ objectChildren.set(node, {
10
+ shallow: observable.set(void 0, defaultObservableSetOptions),
11
+ deep: /* @__PURE__ */ new Set(),
12
+ extensionsData: initExtensionsData(),
13
+ deepDirty: true,
14
+ deepAtom: createAtom("deepChildrenAtom")
15
+ });
16
+ }
17
+ function getObjectChildren(node) {
18
+ return objectChildren.get(node).shallow;
19
+ }
20
+ function getDeepObjectChildren(node) {
21
+ const obj = objectChildren.get(node);
22
+ if (obj.deepDirty) {
23
+ updateDeepObjectChildren(node);
24
+ }
25
+ obj.deepAtom.reportObserved();
26
+ return obj;
27
+ }
28
+ function addNodeToDeepLists(node, data) {
29
+ data.deep.add(node);
30
+ extensions.forEach((extension, dataSymbol) => {
31
+ extension.addNode(node, data.extensionsData.get(dataSymbol));
32
+ });
33
+ }
34
+ const updateDeepObjectChildren = action((node) => {
35
+ const obj = objectChildren.get(node);
36
+ if (!obj.deepDirty) {
37
+ return obj;
38
+ }
39
+ const data = {
40
+ deep: /* @__PURE__ */ new Set(),
41
+ extensionsData: initExtensionsData()
42
+ };
43
+ const childrenIter = getObjectChildren(node).values();
44
+ let ch = childrenIter.next();
45
+ while (!ch.done) {
46
+ addNodeToDeepLists(ch.value, data);
47
+ const ret = updateDeepObjectChildren(ch.value).deep;
48
+ const retIter = ret.values();
49
+ let retCur = retIter.next();
50
+ while (!retCur.done) {
51
+ addNodeToDeepLists(retCur.value, data);
52
+ retCur = retIter.next();
53
+ }
54
+ ch = childrenIter.next();
55
+ }
56
+ Object.assign(obj, data);
57
+ obj.deepDirty = false;
58
+ obj.deepAtom.reportChanged();
59
+ return obj;
60
+ });
61
+ const addObjectChild = action((node, child) => {
62
+ const obj = objectChildren.get(node);
63
+ obj.shallow.add(child);
64
+ invalidateDeepChildren(node);
65
+ });
66
+ const removeObjectChild = action((node, child) => {
67
+ const obj = objectChildren.get(node);
68
+ obj.shallow.delete(child);
69
+ invalidateDeepChildren(node);
70
+ });
71
+ function invalidateDeepChildren(node) {
72
+ const obj = objectChildren.get(node);
73
+ if (!obj.deepDirty) {
74
+ obj.deepDirty = true;
75
+ obj.deepAtom.reportChanged();
76
+ }
77
+ const parent = fastGetParent(node);
78
+ if (parent) {
79
+ invalidateDeepChildren(parent);
80
+ }
81
+ }
82
+ const extensions = /* @__PURE__ */ new Map();
83
+ function registerDeepObjectChildrenExtension(extension) {
84
+ const dataSymbol = Symbol("deepObjectChildrenExtension");
85
+ extensions.set(dataSymbol, extension);
86
+ return (data) => {
87
+ return data.extensionsData.get(dataSymbol);
88
+ };
89
+ }
90
+ function initExtensionsData() {
91
+ const extensionsData = /* @__PURE__ */ new Map();
92
+ extensions.forEach((extension, dataSymbol) => {
93
+ extensionsData.set(dataSymbol, extension.initData());
94
+ });
95
+ return extensionsData;
96
+ }
97
+ export { addObjectChild, getDeepObjectChildren, getObjectChildren, initializeObjectChildren, registerDeepObjectChildrenExtension, removeObjectChild };
98
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZU9iamVjdENoaWxkcmVuLm1qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhcmVudC9jb3JlT2JqZWN0Q2hpbGRyZW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWN0aW9uLCBjcmVhdGVBdG9tLCBJQXRvbSwgb2JzZXJ2YWJsZSwgT2JzZXJ2YWJsZVNldCB9IGZyb20gXCJtb2J4XCJcbmltcG9ydCB7IGZhc3RHZXRQYXJlbnQgfSBmcm9tIFwiLi9wYXRoXCJcblxuY29uc3QgZGVmYXVsdE9ic2VydmFibGVTZXRPcHRpb25zID0geyBkZWVwOiBmYWxzZSB9XG5cbmludGVyZmFjZSBEZWVwT2JqZWN0Q2hpbGRyZW4ge1xuICBkZWVwOiBTZXQ8b2JqZWN0PlxuXG4gIGV4dGVuc2lvbnNEYXRhOiBXZWFrTWFwPFN5bWJvbCwgYW55PlxufVxuXG5pbnRlcmZhY2UgT2JqZWN0Q2hpbGRyZW5EYXRhIGV4dGVuZHMgRGVlcE9iamVjdENoaWxkcmVuIHtcbiAgc2hhbGxvdzogT2JzZXJ2YWJsZVNldDxvYmplY3Q+XG5cbiAgZGVlcERpcnR5OiBib29sZWFuXG4gIGRlZXBBdG9tOiBJQXRvbVxufVxuXG5jb25zdCBvYmplY3RDaGlsZHJlbiA9IG5ldyBXZWFrTWFwPG9iamVjdCwgT2JqZWN0Q2hpbGRyZW5EYXRhPigpXG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXplT2JqZWN0Q2hpbGRyZW4obm9kZTogb2JqZWN0KSB7XG4gIGlmIChvYmplY3RDaGlsZHJlbi5oYXMobm9kZSkpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIG9iamVjdENoaWxkcmVuLnNldChub2RlLCB7XG4gICAgc2hhbGxvdzogb2JzZXJ2YWJsZS5zZXQodW5kZWZpbmVkLCBkZWZhdWx0T2JzZXJ2YWJsZVNldE9wdGlvbnMpLFxuXG4gICAgZGVlcDogbmV3IFNldCgpLFxuICAgIGV4dGVuc2lvbnNEYXRhOiBpbml0RXh0ZW5zaW9uc0RhdGEoKSxcblxuICAgIGRlZXBEaXJ0eTogdHJ1ZSxcbiAgICBkZWVwQXRvbTogY3JlYXRlQXRvbShcImRlZXBDaGlsZHJlbkF0b21cIiksXG4gIH0pXG59XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPYmplY3RDaGlsZHJlbihub2RlOiBvYmplY3QpOiBPYmplY3RDaGlsZHJlbkRhdGFbXCJzaGFsbG93XCJdIHtcbiAgcmV0dXJuIG9iamVjdENoaWxkcmVuLmdldChub2RlKSEuc2hhbGxvd1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVlcE9iamVjdENoaWxkcmVuKG5vZGU6IG9iamVjdCk6IERlZXBPYmplY3RDaGlsZHJlbiB7XG4gIGNvbnN0IG9iaiA9IG9iamVjdENoaWxkcmVuLmdldChub2RlKSFcblxuICBpZiAob2JqLmRlZXBEaXJ0eSkge1xuICAgIHVwZGF0ZURlZXBPYmplY3RDaGlsZHJlbihub2RlKVxuICB9XG5cbiAgb2JqLmRlZXBBdG9tLnJlcG9ydE9ic2VydmVkKClcblxuICByZXR1cm4gb2JqXG59XG5cbmZ1bmN0aW9uIGFkZE5vZGVUb0RlZXBMaXN0cyhub2RlOiBhbnksIGRhdGE6IERlZXBPYmplY3RDaGlsZHJlbikge1xuICBkYXRhLmRlZXAuYWRkKG5vZGUpXG4gIGV4dGVuc2lvbnMuZm9yRWFjaCgoZXh0ZW5zaW9uLCBkYXRhU3ltYm9sKSA9PiB7XG4gICAgZXh0ZW5zaW9uLmFkZE5vZGUobm9kZSwgZGF0YS5leHRlbnNpb25zRGF0YS5nZXQoZGF0YVN5bWJvbCkpXG4gIH0pXG59XG5cbmNvbnN0IHVwZGF0ZURlZXBPYmplY3RDaGlsZHJlbiA9IGFjdGlvbigobm9kZTogb2JqZWN0KTogRGVlcE9iamVjdENoaWxkcmVuID0+IHtcbiAgY29uc3Qgb2JqID0gb2JqZWN0Q2hpbGRyZW4uZ2V0KG5vZGUpIVxuICBpZiAoIW9iai5kZWVwRGlydHkpIHtcbiAgICByZXR1cm4gb2JqXG4gIH1cblxuICBjb25zdCBkYXRhOiBEZWVwT2JqZWN0Q2hpbGRyZW4gPSB7XG4gICAgZGVlcDogbmV3IFNldCgpLFxuICAgIGV4dGVuc2lvbnNEYXRhOiBpbml0RXh0ZW5zaW9uc0RhdGEoKSxcbiAgfVxuXG4gIGNvbnN0IGNoaWxkcmVuSXRlciA9IGdldE9iamVjdENoaWxkcmVuKG5vZGUpIS52YWx1ZXMoKVxuICBsZXQgY2ggPSBjaGlsZHJlbkl0ZXIubmV4dCgpXG4gIHdoaWxlICghY2guZG9uZSkge1xuICAgIGFkZE5vZGVUb0RlZXBMaXN0cyhjaC52YWx1ZSwgZGF0YSlcblxuICAgIGNvbnN0IHJldCA9IHVwZGF0ZURlZXBPYmplY3RDaGlsZHJlbihjaC52YWx1ZSkuZGVlcFxuICAgIGNvbnN0IHJldEl0ZXIgPSByZXQudmFsdWVzKClcbiAgICBsZXQgcmV0Q3VyID0gcmV0SXRlci5uZXh0KClcbiAgICB3aGlsZSAoIXJldEN1ci5kb25lKSB7XG4gICAgICBhZGROb2RlVG9EZWVwTGlzdHMocmV0Q3VyLnZhbHVlLCBkYXRhKVxuICAgICAgcmV0Q3VyID0gcmV0SXRlci5uZXh0KClcbiAgICB9XG5cbiAgICBjaCA9IGNoaWxkcmVuSXRlci5uZXh0KClcbiAgfVxuXG4gIE9iamVjdC5hc3NpZ24ob2JqLCBkYXRhKVxuXG4gIG9iai5kZWVwRGlydHkgPSBmYWxzZVxuICBvYmouZGVlcEF0b20ucmVwb3J0Q2hhbmdlZCgpXG5cbiAgcmV0dXJuIG9ialxufSlcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZE9iamVjdENoaWxkID0gYWN0aW9uKChub2RlOiBvYmplY3QsIGNoaWxkOiBvYmplY3QpID0+IHtcbiAgY29uc3Qgb2JqID0gb2JqZWN0Q2hpbGRyZW4uZ2V0KG5vZGUpIVxuICBvYmouc2hhbGxvdy5hZGQoY2hpbGQpXG5cbiAgaW52YWxpZGF0ZURlZXBDaGlsZHJlbihub2RlKVxufSlcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IHJlbW92ZU9iamVjdENoaWxkID0gYWN0aW9uKChub2RlOiBvYmplY3QsIGNoaWxkOiBvYmplY3QpID0+IHtcbiAgY29uc3Qgb2JqID0gb2JqZWN0Q2hpbGRyZW4uZ2V0KG5vZGUpIVxuICBvYmouc2hhbGxvdy5kZWxldGUoY2hpbGQpXG5cbiAgaW52YWxpZGF0ZURlZXBDaGlsZHJlbihub2RlKVxufSlcblxuZnVuY3Rpb24gaW52YWxpZGF0ZURlZXBDaGlsZHJlbihub2RlOiBvYmplY3QpIHtcbiAgY29uc3Qgb2JqID0gb2JqZWN0Q2hpbGRyZW4uZ2V0KG5vZGUpIVxuXG4gIGlmICghb2JqLmRlZXBEaXJ0eSkge1xuICAgIG9iai5kZWVwRGlydHkgPSB0cnVlXG4gICAgb2JqLmRlZXBBdG9tLnJlcG9ydENoYW5nZWQoKVxuICB9XG5cbiAgY29uc3QgcGFyZW50ID0gZmFzdEdldFBhcmVudChub2RlKVxuICBpZiAocGFyZW50KSB7XG4gICAgaW52YWxpZGF0ZURlZXBDaGlsZHJlbihwYXJlbnQpXG4gIH1cbn1cblxuY29uc3QgZXh0ZW5zaW9ucyA9IG5ldyBNYXA8U3ltYm9sLCBEZWVwT2JqZWN0Q2hpbGRyZW5FeHRlbnNpb248YW55Pj4oKVxuXG5pbnRlcmZhY2UgRGVlcE9iamVjdENoaWxkcmVuRXh0ZW5zaW9uPEQ+IHtcbiAgaW5pdERhdGEoKTogRFxuICBhZGROb2RlKG5vZGU6IGFueSwgZGF0YTogRCk6IHZvaWRcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGVlcE9iamVjdENoaWxkcmVuRXh0ZW5zaW9uPEQ+KGV4dGVuc2lvbjogRGVlcE9iamVjdENoaWxkcmVuRXh0ZW5zaW9uPEQ+KSB7XG4gIGNvbnN0IGRhdGFTeW1ib2wgPSBTeW1ib2woXCJkZWVwT2JqZWN0Q2hpbGRyZW5FeHRlbnNpb25cIilcbiAgZXh0ZW5zaW9ucy5zZXQoZGF0YVN5bWJvbCwgZXh0ZW5zaW9uKVxuXG4gIHJldHVybiAoZGF0YTogRGVlcE9iamVjdENoaWxkcmVuKTogRCA9PiB7XG4gICAgcmV0dXJuIGRhdGEuZXh0ZW5zaW9uc0RhdGEuZ2V0KGRhdGFTeW1ib2wpIGFzIERcbiAgfVxufVxuXG5mdW5jdGlvbiBpbml0RXh0ZW5zaW9uc0RhdGEoKSB7XG4gIGNvbnN0IGV4dGVuc2lvbnNEYXRhID0gbmV3IE1hcDxTeW1ib2wsIGFueT4oKVxuXG4gIGV4dGVuc2lvbnMuZm9yRWFjaCgoZXh0ZW5zaW9uLCBkYXRhU3ltYm9sKSA9PiB7XG4gICAgZXh0ZW5zaW9uc0RhdGEuc2V0KGRhdGFTeW1ib2wsIGV4dGVuc2lvbi5pbml0RGF0YSgpKVxuICB9KVxuXG4gIHJldHVybiBleHRlbnNpb25zRGF0YVxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsTUFBTSw4QkFBOEIsRUFBRSxNQUFNO0FBZTVDLE1BQU0scUNBQXFCO2tDQUtjO01BQ25DLGVBQWUsSUFBSSxJQUFJLEdBQUc7OztpQkFJZixJQUFJLE1BQU07QUFBQSxJQUN2QixTQUFTLFdBQVcsSUFBSSxRQUFXLDJCQUEyQjtBQUFBLElBRTlELDBCQUFVO0lBQ1YsZ0JBQWdCO0lBRWhCLFdBQVc7QUFBQSxJQUNYLFVBQVUsV0FBVyxrQkFBa0I7QUFBQSxHQUN4QztBQUNIOzJCQUtrQztTQUN6QixlQUFlLElBQUksSUFBSSxFQUFHO0FBQ25DOytCQUtzQztRQUM5QixNQUFNLGVBQWUsSUFBSSxJQUFJO01BRS9CLElBQUksV0FBVzs2QkFDUSxJQUFJO0FBQUE7TUFHM0IsU0FBUztTQUVOO0FBQ1Q7QUFFQSw0QkFBNEIsTUFBVztPQUNoQyxLQUFLLElBQUksSUFBSTthQUNQLFFBQVEsQ0FBQyxXQUFXO2NBQ25CLFFBQVEsTUFBTSxLQUFLLGVBQWUsSUFBSSxVQUFVLENBQUM7QUFBQSxHQUM1RDtBQUNIO0FBRUEsTUFBTSwyQkFBMkIsT0FBTyxDQUFDO1FBQ2pDLE1BQU0sZUFBZSxJQUFJLElBQUk7TUFDL0IsQ0FBQyxJQUFJLFdBQVc7V0FDWDtBQUFBO1FBR0gsT0FBMkI7QUFBQSxJQUMvQiwwQkFBVTtJQUNWLGdCQUFnQjs7UUFHWixlQUFlLGtCQUFrQixJQUFJLEVBQUc7TUFDMUMsS0FBSyxhQUFhO1NBQ2YsQ0FBQyxHQUFHLE1BQU07dUJBQ0ksR0FBRyxPQUFPLElBQUk7VUFFM0IsTUFBTSx5QkFBeUIsR0FBRyxLQUFLLEVBQUU7VUFDekMsVUFBVSxJQUFJO1FBQ2hCLFNBQVMsUUFBUTtXQUNkLENBQUMsT0FBTyxNQUFNO3lCQUNBLE9BQU8sT0FBTyxJQUFJO2VBQzVCLFFBQVE7O1NBR2QsYUFBYTs7U0FHYixPQUFPLEtBQUssSUFBSTtNQUVuQixZQUFZO01BQ1osU0FBUztTQUVOO0FBQ1QsQ0FBQztNQUtZLGlCQUFpQixPQUFPLENBQUMsTUFBYztRQUM1QyxNQUFNLGVBQWUsSUFBSSxJQUFJO01BQy9CLFFBQVEsSUFBSSxLQUFLO3lCQUVFLElBQUk7QUFDN0IsQ0FBQztNQUtZLG9CQUFvQixPQUFPLENBQUMsTUFBYztRQUMvQyxNQUFNLGVBQWUsSUFBSSxJQUFJO01BQy9CLFFBQVEsT0FBTyxLQUFLO3lCQUVELElBQUk7QUFDN0IsQ0FBQztBQUVELGdDQUFnQztRQUN4QixNQUFNLGVBQWUsSUFBSSxJQUFJO01BRS9CLENBQUMsSUFBSSxXQUFXO1FBQ2QsWUFBWTtRQUNaLFNBQVM7O1FBR1QsU0FBUyxjQUFjLElBQUk7TUFDN0IsUUFBUTsyQkFDYSxNQUFNO0FBQUE7QUFFakM7QUFFQSxNQUFNLGlDQUFpQjs2Q0FVZ0M7UUFDL0MsYUFBYSxPQUFPLDZCQUE2QjthQUM1QyxJQUFJLFlBQVksU0FBUztTQUU3QixDQUFDO1dBQ0MsS0FBSyxlQUFlLElBQUksVUFBVTtBQUFBO0FBRTdDO0FBRUE7UUFDUSxxQ0FBcUI7YUFFaEIsUUFBUSxDQUFDLFdBQVc7bUJBQ2QsSUFBSSxZQUFZLFVBQVUsVUFBVTtBQUFBLEdBQ3BEO1NBRU07QUFDVDs7In0=
@@ -0,0 +1,32 @@
1
+ import { isObservableArray, isObservableObject, remove } from "mobx";
2
+ import { BuiltInAction } from "../action/builtInActions.mjs";
3
+ import { ActionContextActionType } from "../action/context.mjs";
4
+ import { wrapInAction } from "../action/wrapInAction.mjs";
5
+ import { assertTweakedObject } from "../tweaker/core.mjs";
6
+ import { lazy, failure } from "../utils/index.mjs";
7
+ import { fastGetParentPathIncludingDataObjects } from "./path.mjs";
8
+ function detach(node) {
9
+ assertTweakedObject(node, "node");
10
+ wrappedInternalDetach().call(node);
11
+ }
12
+ const wrappedInternalDetach = lazy(() => wrapInAction({
13
+ nameOrNameFn: BuiltInAction.Detach,
14
+ fn: internalDetach,
15
+ actionType: ActionContextActionType.Sync
16
+ }));
17
+ function internalDetach() {
18
+ const node = this;
19
+ const parentPath = fastGetParentPathIncludingDataObjects(node);
20
+ if (!parentPath)
21
+ return;
22
+ const { parent, path } = parentPath;
23
+ if (isObservableArray(parent)) {
24
+ parent.splice(+path, 1);
25
+ } else if (isObservableObject(parent)) {
26
+ remove(parent, "" + path);
27
+ } else {
28
+ throw failure("parent must be an observable object or an observable array");
29
+ }
30
+ }
31
+ export { detach };
32
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWNoLm1qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhcmVudC9kZXRhY2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNPYnNlcnZhYmxlQXJyYXksIGlzT2JzZXJ2YWJsZU9iamVjdCwgcmVtb3ZlIH0gZnJvbSBcIm1vYnhcIlxuaW1wb3J0IHsgQnVpbHRJbkFjdGlvbiB9IGZyb20gXCIuLi9hY3Rpb24vYnVpbHRJbkFjdGlvbnNcIlxuaW1wb3J0IHsgQWN0aW9uQ29udGV4dEFjdGlvblR5cGUgfSBmcm9tIFwiLi4vYWN0aW9uL2NvbnRleHRcIlxuaW1wb3J0IHsgd3JhcEluQWN0aW9uIH0gZnJvbSBcIi4uL2FjdGlvbi93cmFwSW5BY3Rpb25cIlxuaW1wb3J0IHsgYXNzZXJ0VHdlYWtlZE9iamVjdCB9IGZyb20gXCIuLi90d2Vha2VyL2NvcmVcIlxuaW1wb3J0IHsgZmFpbHVyZSwgbGF6eSB9IGZyb20gXCIuLi91dGlsc1wiXG5pbXBvcnQgeyBmYXN0R2V0UGFyZW50UGF0aEluY2x1ZGluZ0RhdGFPYmplY3RzIH0gZnJvbSBcIi4vcGF0aFwiXG5cbi8qKlxuICogRGV0YWNoZXMgYSBnaXZlbiBvYmplY3QgZnJvbSBhIHRyZWUuXG4gKiBJZiB0aGUgcGFyZW50IGlzIGFuIG9iamVjdCAvIG1vZGVsLCBkZXRhY2hpbmcgd2lsbCBkZWxldGUgdGhlIHByb3BlcnR5LlxuICogSWYgdGhlIHBhcmVudCBpcyBhbiBhcnJheSBkZXRhY2hpbmcgd2lsbCByZW1vdmUgdGhlIG5vZGUgYnkgc3BsaWNpbmcgaXQuXG4gKiBJZiB0aGVyZSdzIG5vIHBhcmVudCBpdCB3aWxsIHRocm93LlxuICpcbiAqIEBwYXJhbSBub2RlIE9iamVjdCB0byBiZSBkZXRhY2hlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGFjaChub2RlOiBvYmplY3QpOiB2b2lkIHtcbiAgYXNzZXJ0VHdlYWtlZE9iamVjdChub2RlLCBcIm5vZGVcIilcblxuICB3cmFwcGVkSW50ZXJuYWxEZXRhY2goKS5jYWxsKG5vZGUpXG59XG5cbmNvbnN0IHdyYXBwZWRJbnRlcm5hbERldGFjaCA9IGxhenkoKCkgPT5cbiAgd3JhcEluQWN0aW9uKHtcbiAgICBuYW1lT3JOYW1lRm46IEJ1aWx0SW5BY3Rpb24uRGV0YWNoLFxuICAgIGZuOiBpbnRlcm5hbERldGFjaCxcbiAgICBhY3Rpb25UeXBlOiBBY3Rpb25Db250ZXh0QWN0aW9uVHlwZS5TeW5jLFxuICB9KVxuKVxuXG5mdW5jdGlvbiBpbnRlcm5hbERldGFjaCh0aGlzOiBvYmplY3QpOiB2b2lkIHtcbiAgY29uc3Qgbm9kZSA9IHRoaXNcblxuICBjb25zdCBwYXJlbnRQYXRoID0gZmFzdEdldFBhcmVudFBhdGhJbmNsdWRpbmdEYXRhT2JqZWN0cyhub2RlKVxuICBpZiAoIXBhcmVudFBhdGgpIHJldHVyblxuXG4gIGNvbnN0IHsgcGFyZW50LCBwYXRoIH0gPSBwYXJlbnRQYXRoXG4gIGlmIChpc09ic2VydmFibGVBcnJheShwYXJlbnQpKSB7XG4gICAgcGFyZW50LnNwbGljZSgrcGF0aCwgMSlcbiAgfSBlbHNlIGlmIChpc09ic2VydmFibGVPYmplY3QocGFyZW50KSkge1xuICAgIHJlbW92ZShwYXJlbnQsIFwiXCIgKyBwYXRoKVxuICB9IGVsc2Uge1xuICAgIHRocm93IGZhaWx1cmUoXCJwYXJlbnQgbXVzdCBiZSBhbiBvYnNlcnZhYmxlIG9iamVjdCBvciBhbiBvYnNlcnZhYmxlIGFycmF5XCIpXG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O2dCQWdCdUI7c0JBQ0QsTUFBTSxNQUFNOzBCQUVSLEtBQUssSUFBSTtBQUNuQztBQUVBLE1BQU0sd0JBQXdCLEtBQUssTUFDakMsYUFBYTtBQUFBLEVBQ1gsY0FBYyxjQUFjO0FBQUEsRUFDNUIsSUFBSTtBQUFBLEVBQ0osWUFBWSx3QkFBd0I7Q0FDckMsQ0FBQztBQUdKO1FBQ1EsT0FBTztRQUVQLGFBQWEsc0NBQXNDLElBQUk7TUFDekQsQ0FBQzs7UUFFQyxFQUFFLFFBQVEsU0FBUztNQUNyQixrQkFBa0IsTUFBTSxHQUFHO1dBQ3RCLE9BQU8sQ0FBQyxNQUFNLENBQUM7QUFBQSxhQUNiLG1CQUFtQixNQUFNLEdBQUc7V0FDOUIsUUFBUSxLQUFLLElBQUk7QUFBQSxTQUNuQjtVQUNDLFFBQVEsNERBQTREO0FBQUE7QUFFOUU7OyJ9
@@ -0,0 +1,16 @@
1
+ import { getChildrenObjects } from "./getChildrenObjects.mjs";
2
+ function findChildren(root, predicate, options) {
3
+ const children = getChildrenObjects(root, options);
4
+ const set = /* @__PURE__ */ new Set();
5
+ const iter = children.values();
6
+ let cur = iter.next();
7
+ while (!cur.done) {
8
+ if (predicate(cur.value)) {
9
+ set.add(cur.value);
10
+ }
11
+ cur = iter.next();
12
+ }
13
+ return set;
14
+ }
15
+ export { findChildren };
16
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZENoaWxkcmVuLm1qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhcmVudC9maW5kQ2hpbGRyZW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0Q2hpbGRyZW5PYmplY3RzIH0gZnJvbSBcIi4vZ2V0Q2hpbGRyZW5PYmplY3RzXCJcblxuLyoqXG4gKiBJdGVyYXRlcyB0aHJvdWdoIGFsbCBjaGlsZHJlbiBhbmQgY29sbGVjdHMgdGhlbSBpbiBhIHNldCBpZiB0aGVcbiAqIGdpdmVuIHByZWRpY2F0ZSBtYXRjaGVzLlxuICpcbiAqIEBwYXJhbSByb290IFJvb3Qgb2JqZWN0IHRvIGdldCB0aGUgbWF0Y2hpbmcgY2hpbGRyZW4gZnJvbS5cbiAqIEBwYXJhbSBwcmVkaWNhdGUgRnVuY3Rpb24gdGhhdCB3aWxsIGJlIHJ1biBmb3IgZXZlcnkgY2hpbGQgb2YgdGhlIHJvb3Qgb2JqZWN0LlxuICogQHBhcmFtIFtvcHRpb25zXSBBbiBvcHRpb25hbCBvYmplY3Qgd2l0aCB0aGUgYGRlZXBgIG9wdGlvbiAoZGVmYXVsdHMgdG8gYGZhbHNlYCkgc2V0IHRvIGB0cnVlYCB0b1xuICogZ2V0IHRoZSBjaGlsZHJlbiBkZWVwbHkgb3IgYGZhbHNlYCB0byBnZXQgdGhlbSBzaGFsbG93bHkuXG4gKiBAcmV0dXJucyBBIHJlYWRvbmx5IG9ic2VydmFibGUgc2V0IHdpdGggdGhlIG1hdGNoaW5nIGNoaWxkcmVuLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZENoaWxkcmVuPFQgZXh0ZW5kcyBvYmplY3QgPSBhbnk+KFxuICByb290OiBvYmplY3QsXG4gIHByZWRpY2F0ZTogKG5vZGU6IG9iamVjdCkgPT4gYm9vbGVhbixcbiAgb3B0aW9ucz86IHtcbiAgICBkZWVwPzogYm9vbGVhblxuICB9XG4pOiBSZWFkb25seVNldDxUPiB7XG4gIGNvbnN0IGNoaWxkcmVuID0gZ2V0Q2hpbGRyZW5PYmplY3RzKHJvb3QsIG9wdGlvbnMpXG5cbiAgY29uc3Qgc2V0ID0gbmV3IFNldDxhbnk+KClcblxuICBjb25zdCBpdGVyID0gY2hpbGRyZW4udmFsdWVzKClcbiAgbGV0IGN1ciA9IGl0ZXIubmV4dCgpXG4gIHdoaWxlICghY3VyLmRvbmUpIHtcbiAgICBpZiAocHJlZGljYXRlKGN1ci52YWx1ZSkpIHtcbiAgICAgIHNldC5hZGQoY3VyLnZhbHVlKVxuICAgIH1cbiAgICBjdXIgPSBpdGVyLm5leHQoKVxuICB9XG5cbiAgcmV0dXJuIHNldFxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7c0JBYUUsTUFDQSxXQUNBO1FBSU0sV0FBVyxtQkFBbUIsTUFBTSxPQUFPO1FBRTNDLDBCQUFVO1FBRVYsT0FBTyxTQUFTO01BQ2xCLE1BQU0sS0FBSztTQUNSLENBQUMsSUFBSSxNQUFNO1FBQ1osVUFBVSxJQUFJLEtBQUssR0FBRztVQUNwQixJQUFJLElBQUksS0FBSztBQUFBO1VBRWIsS0FBSzs7U0FHTjtBQUNUOzsifQ==
@@ -0,0 +1,30 @@
1
+ import { assertTweakedObject } from "../tweaker/core.mjs";
2
+ import { fastGetParentPath } from "./path.mjs";
3
+ function findParent(child, predicate, maxDepth = 0) {
4
+ const foundParentPath = findParentPath(child, predicate, maxDepth);
5
+ return foundParentPath ? foundParentPath.parent : void 0;
6
+ }
7
+ function findParentPath(child, predicate, maxDepth = 0) {
8
+ assertTweakedObject(child, "child");
9
+ const path = [];
10
+ let current = child;
11
+ let depth = 0;
12
+ let parentPath;
13
+ while (parentPath = fastGetParentPath(current)) {
14
+ path.unshift(parentPath.path);
15
+ current = parentPath.parent;
16
+ if (predicate(current)) {
17
+ return {
18
+ parent: current,
19
+ path
20
+ };
21
+ }
22
+ depth++;
23
+ if (maxDepth > 0 && depth === maxDepth) {
24
+ break;
25
+ }
26
+ }
27
+ return void 0;
28
+ }
29
+ export { findParent, findParentPath };
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZFBhcmVudC5tanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYXJlbnQvZmluZFBhcmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBhc3NlcnRUd2Vha2VkT2JqZWN0IH0gZnJvbSBcIi4uL3R3ZWFrZXIvY29yZVwiXG5pbXBvcnQgeyBmYXN0R2V0UGFyZW50UGF0aCwgUGFyZW50UGF0aCB9IGZyb20gXCIuL3BhdGhcIlxuaW1wb3J0IHR5cGUgeyBQYXRoLCBXcml0YWJsZVBhdGggfSBmcm9tIFwiLi9wYXRoVHlwZXNcIlxuXG4vKipcbiAqIEl0ZXJhdGVzIHRocm91Z2ggYWxsIHRoZSBwYXJlbnRzIChmcm9tIHRoZSBuZWFyZXN0IHVudGlsIHRoZSByb290KVxuICogdW50aWwgb25lIG9mIHRoZW0gbWF0Y2hlcyB0aGUgZ2l2ZW4gcHJlZGljYXRlLlxuICogSWYgdGhlIHByZWRpY2F0ZSBpcyBtYXRjaGVkIGl0IHdpbGwgcmV0dXJuIHRoZSBmb3VuZCBub2RlLlxuICogSWYgbm9uZSBpcyBmb3VuZCBpdCB3aWxsIHJldHVybiB1bmRlZmluZWQuXG4gKlxuICogQHR5cGVwYXJhbSBUIFBhcmVudCBvYmplY3QgdHlwZS5cbiAqIEBwYXJhbSBjaGlsZCBUYXJnZXQgb2JqZWN0LlxuICogQHBhcmFtIHByZWRpY2F0ZSBGdW5jdGlvbiB0aGF0IHdpbGwgYmUgcnVuIGZvciBldmVyeSBwYXJlbnQgb2YgdGhlIHRhcmdldCBvYmplY3QsIGZyb20gaW1tZWRpYXRlIHBhcmVudCB0byB0aGUgcm9vdC5cbiAqIEBwYXJhbSBtYXhEZXB0aCBNYXggZGVwdGgsIG9yIDAgZm9yIGluZmluaXRlLlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRQYXJlbnQ8VCBleHRlbmRzIG9iamVjdCA9IGFueT4oXG4gIGNoaWxkOiBvYmplY3QsXG4gIHByZWRpY2F0ZTogKHBhcmVudE5vZGU6IG9iamVjdCkgPT4gYm9vbGVhbixcbiAgbWF4RGVwdGggPSAwXG4pOiBUIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZm91bmRQYXJlbnRQYXRoID0gZmluZFBhcmVudFBhdGgoY2hpbGQsIHByZWRpY2F0ZSwgbWF4RGVwdGgpXG4gIHJldHVybiBmb3VuZFBhcmVudFBhdGggPyBmb3VuZFBhcmVudFBhdGgucGFyZW50IDogdW5kZWZpbmVkXG59XG5cbi8qKlxuICogUmVzdWx0IG9mIGBmaW5kUGFyZW50UGF0aGAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRm91bmRQYXJlbnRQYXRoPFQgZXh0ZW5kcyBvYmplY3Q+IHtcbiAgLyoqXG4gICAqIEZvdW5kIHBhcmVudCBvYmplY3QuXG4gICAqL1xuICByZWFkb25seSBwYXJlbnQ6IFRcblxuICAvKipcbiAgICogUGF0aCBmcm9tIHRoZSBmb3VuZCBwYXJlbnQgdG8gdGhlIGNoaWxkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogUGF0aFxufVxuXG4vKipcbiAqIEl0ZXJhdGVzIHRocm91Z2ggYWxsIHRoZSBwYXJlbnRzIChmcm9tIHRoZSBuZWFyZXN0IHVudGlsIHRoZSByb290KVxuICogdW50aWwgb25lIG9mIHRoZW0gbWF0Y2hlcyB0aGUgZ2l2ZW4gcHJlZGljYXRlLlxuICogSWYgdGhlIHByZWRpY2F0ZSBpcyBtYXRjaGVkIGl0IHdpbGwgcmV0dXJuIHRoZSBmb3VuZCBub2RlIHBsdXMgdGhlXG4gKiBwYXRoIHRvIGdldCBmcm9tIHRoZSBwYXJlbnQgdG8gdGhlIGNoaWxkLlxuICogSWYgbm9uZSBpcyBmb3VuZCBpdCB3aWxsIHJldHVybiB1bmRlZmluZWQuXG4gKlxuICogQHR5cGVwYXJhbSBUIFBhcmVudCBvYmplY3QgdHlwZS5cbiAqIEBwYXJhbSBjaGlsZCBUYXJnZXQgb2JqZWN0LlxuICogQHBhcmFtIHByZWRpY2F0ZSBGdW5jdGlvbiB0aGF0IHdpbGwgYmUgcnVuIGZvciBldmVyeSBwYXJlbnQgb2YgdGhlIHRhcmdldCBvYmplY3QsIGZyb20gaW1tZWRpYXRlIHBhcmVudCB0byB0aGUgcm9vdC5cbiAqIEBwYXJhbSBtYXhEZXB0aCBNYXggZGVwdGgsIG9yIDAgZm9yIGluZmluaXRlLlxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRQYXJlbnRQYXRoPFQgZXh0ZW5kcyBvYmplY3QgPSBhbnk+KFxuICBjaGlsZDogb2JqZWN0LFxuICBwcmVkaWNhdGU6IChwYXJlbnROb2RlOiBvYmplY3QpID0+IGJvb2xlYW4sXG4gIG1heERlcHRoID0gMFxuKTogRm91bmRQYXJlbnRQYXRoPFQ+IHwgdW5kZWZpbmVkIHtcbiAgYXNzZXJ0VHdlYWtlZE9iamVjdChjaGlsZCwgXCJjaGlsZFwiKVxuXG4gIGNvbnN0IHBhdGg6IFdyaXRhYmxlUGF0aCA9IFtdXG5cbiAgbGV0IGN1cnJlbnQ6IGFueSA9IGNoaWxkXG4gIGxldCBkZXB0aCA9IDBcblxuICBsZXQgcGFyZW50UGF0aDogUGFyZW50UGF0aDxhbnk+IHwgdW5kZWZpbmVkXG4gIHdoaWxlICgocGFyZW50UGF0aCA9IGZhc3RHZXRQYXJlbnRQYXRoKGN1cnJlbnQpKSkge1xuICAgIHBhdGgudW5zaGlmdChwYXJlbnRQYXRoLnBhdGgpXG4gICAgY3VycmVudCA9IHBhcmVudFBhdGgucGFyZW50XG4gICAgaWYgKHByZWRpY2F0ZShjdXJyZW50KSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcGFyZW50OiBjdXJyZW50LFxuICAgICAgICBwYXRoLFxuICAgICAgfVxuICAgIH1cblxuICAgIGRlcHRoKytcbiAgICBpZiAobWF4RGVwdGggPiAwICYmIGRlcHRoID09PSBtYXhEZXB0aCkge1xuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZFxufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O29CQWlCRSxPQUNBLFdBQ0EsV0FBVztRQUVMLGtCQUFrQixlQUFlLE9BQU8sV0FBVyxRQUFRO1NBQzFELGtCQUFrQixnQkFBZ0IsU0FBUztBQUNwRDt3QkErQkUsT0FDQSxXQUNBLFdBQVc7c0JBRVMsT0FBTyxPQUFPO1FBRTVCLE9BQXFCO01BRXZCLFVBQWU7TUFDZixRQUFRO01BRVI7U0FDSSxhQUFhLGtCQUFrQixPQUFPLEdBQUk7U0FDM0MsUUFBUSxXQUFXLElBQUk7Y0FDbEIsV0FBVztRQUNqQixVQUFVLE9BQU8sR0FBRzthQUNmO0FBQUEsUUFDTCxRQUFRO0FBQUEsUUFDUjtBQUFBOzs7UUFLQSxXQUFXLEtBQUssVUFBVSxVQUFVOzs7O1NBSW5DO0FBQ1Q7OyJ9
@@ -0,0 +1,12 @@
1
+ import { assertTweakedObject } from "../tweaker/core.mjs";
2
+ import { getObjectChildren, getDeepObjectChildren } from "./coreObjectChildren.mjs";
3
+ function getChildrenObjects(node, options) {
4
+ assertTweakedObject(node, "node");
5
+ if (!options || !options.deep) {
6
+ return getObjectChildren(node);
7
+ } else {
8
+ return getDeepObjectChildren(node).deep;
9
+ }
10
+ }
11
+ export { getChildrenObjects };
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Q2hpbGRyZW5PYmplY3RzLm1qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhcmVudC9nZXRDaGlsZHJlbk9iamVjdHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXNzZXJ0VHdlYWtlZE9iamVjdCB9IGZyb20gXCIuLi90d2Vha2VyL2NvcmVcIlxuaW1wb3J0IHsgZ2V0RGVlcE9iamVjdENoaWxkcmVuLCBnZXRPYmplY3RDaGlsZHJlbiB9IGZyb20gXCIuL2NvcmVPYmplY3RDaGlsZHJlblwiXG5cbi8qKlxuICogUmV0dXJucyBhbGwgdGhlIGNoaWxkcmVuIG9iamVjdHMgKHRoaXMgaXMsIGV4Y2x1ZGluZyBwcmltaXRpdmVzKSBvZiBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG5vZGUgT2JqZWN0IHRvIGdldCB0aGUgbGlzdCBvZiBjaGlsZHJlbiBmcm9tLlxuICogQHBhcmFtIFtvcHRpb25zXSBBbiBvcHRpb25hbCBvYmplY3Qgd2l0aCB0aGUgYGRlZXBgIG9wdGlvbiAoZGVmYXVsdHMgdG8gZmFsc2UpIHRvIHRydWUgdG8gZ2V0XG4gKiB0aGUgY2hpbGRyZW4gZGVlcGx5IG9yIGZhbHNlIHRvIGdldCB0aGVtIHNoYWxsb3dseS5cbiAqIEByZXR1cm5zIEEgcmVhZG9ubHkgb2JzZXJ2YWJsZSBzZXQgd2l0aCB0aGUgY2hpbGRyZW4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGlsZHJlbk9iamVjdHMoXG4gIG5vZGU6IG9iamVjdCxcbiAgb3B0aW9ucz86IHtcbiAgICBkZWVwPzogYm9vbGVhblxuICB9XG4pOiBSZWFkb25seVNldDxvYmplY3Q+IHtcbiAgYXNzZXJ0VHdlYWtlZE9iamVjdChub2RlLCBcIm5vZGVcIilcblxuICBpZiAoIW9wdGlvbnMgfHwgIW9wdGlvbnMuZGVlcCkge1xuICAgIHJldHVybiBnZXRPYmplY3RDaGlsZHJlbihub2RlKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXREZWVwT2JqZWN0Q2hpbGRyZW4obm9kZSkuZGVlcFxuICB9XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7NEJBWUUsTUFDQTtzQkFJb0IsTUFBTSxNQUFNO01BRTVCLENBQUMsV0FBVyxDQUFDLFFBQVEsTUFBTTtXQUN0QixrQkFBa0IsSUFBSTtBQUFBLFNBQ3hCO1dBQ0Usc0JBQXNCLElBQUksRUFBRTtBQUFBO0FBRXZDOzsifQ==
@@ -0,0 +1,101 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ import { reaction } from "mobx";
18
+ import { assertTweakedObject } from "../tweaker/core.mjs";
19
+ import { assertIsFunction } from "../utils/index.mjs";
20
+ import { getChildrenObjects } from "./getChildrenObjects.mjs";
21
+ function onChildAttachedTo(target, fn, options) {
22
+ assertIsFunction(target, "target");
23
+ assertIsFunction(fn, "fn");
24
+ const opts = __spreadValues({
25
+ deep: false,
26
+ runForCurrentChildren: true
27
+ }, options);
28
+ const detachDisposers = /* @__PURE__ */ new WeakMap();
29
+ const runDetachDisposer = (n) => {
30
+ const detachDisposer = detachDisposers.get(n);
31
+ if (detachDisposer) {
32
+ detachDisposers.delete(n);
33
+ detachDisposer();
34
+ }
35
+ };
36
+ const addDetachDisposer = (n, disposer2) => {
37
+ if (disposer2) {
38
+ detachDisposers.set(n, disposer2);
39
+ }
40
+ };
41
+ const getChildrenObjectOpts = { deep: opts.deep };
42
+ const getCurrentChildren = () => {
43
+ let t = target();
44
+ assertTweakedObject(t, "target()");
45
+ const children = getChildrenObjects(t, getChildrenObjectOpts);
46
+ const set = /* @__PURE__ */ new Set();
47
+ const iter = children.values();
48
+ let cur = iter.next();
49
+ while (!cur.done) {
50
+ set.add(cur.value);
51
+ cur = iter.next();
52
+ }
53
+ return set;
54
+ };
55
+ const currentChildren = opts.runForCurrentChildren ? /* @__PURE__ */ new Set() : getCurrentChildren();
56
+ const disposer = reaction(() => getCurrentChildren(), (newChildren) => {
57
+ const disposersToRun = [];
58
+ const currentChildrenIter = currentChildren.values();
59
+ let currentChildrenCur = currentChildrenIter.next();
60
+ while (!currentChildrenCur.done) {
61
+ const n = currentChildrenCur.value;
62
+ if (!newChildren.has(n)) {
63
+ currentChildren.delete(n);
64
+ disposersToRun.push(n);
65
+ }
66
+ currentChildrenCur = currentChildrenIter.next();
67
+ }
68
+ if (disposersToRun.length > 0) {
69
+ for (let i = disposersToRun.length - 1; i >= 0; i--) {
70
+ runDetachDisposer(disposersToRun[i]);
71
+ }
72
+ }
73
+ const newChildrenIter = newChildren.values();
74
+ let newChildrenCur = newChildrenIter.next();
75
+ while (!newChildrenCur.done) {
76
+ const n = newChildrenCur.value;
77
+ if (!currentChildren.has(n)) {
78
+ currentChildren.add(n);
79
+ addDetachDisposer(n, fn(n));
80
+ }
81
+ newChildrenCur = newChildrenIter.next();
82
+ }
83
+ }, {
84
+ fireImmediately: true
85
+ });
86
+ return (runDetachDisposers) => {
87
+ disposer();
88
+ if (runDetachDisposers) {
89
+ const currentChildrenIter = currentChildren.values();
90
+ let currentChildrenCur = currentChildrenIter.next();
91
+ while (!currentChildrenCur.done) {
92
+ const n = currentChildrenCur.value;
93
+ runDetachDisposer(n);
94
+ currentChildrenCur = currentChildrenIter.next();
95
+ }
96
+ }
97
+ currentChildren.clear();
98
+ };
99
+ }
100
+ export { onChildAttachedTo };
101
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib25DaGlsZEF0dGFjaGVkVG8ubWpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFyZW50L29uQ2hpbGRBdHRhY2hlZFRvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlYWN0aW9uIH0gZnJvbSBcIm1vYnhcIlxuaW1wb3J0IHsgYXNzZXJ0VHdlYWtlZE9iamVjdCB9IGZyb20gXCIuLi90d2Vha2VyL2NvcmVcIlxuaW1wb3J0IHsgYXNzZXJ0SXNGdW5jdGlvbiB9IGZyb20gXCIuLi91dGlsc1wiXG5pbXBvcnQgeyBnZXRDaGlsZHJlbk9iamVjdHMgfSBmcm9tIFwiLi9nZXRDaGlsZHJlbk9iamVjdHNcIlxuXG4vKipcbiAqIFJ1bnMgYSBjYWxsYmFjayBldmVyeXRpbWUgYSBuZXcgb2JqZWN0IGlzIGF0dGFjaGVkIHRvIGEgZ2l2ZW4gbm9kZS5cbiAqIFRoZSBjYWxsYmFjayBjYW4gb3B0aW9uYWxseSByZXR1cm4gYSBkaXNwb3NlciB3aGljaCB3aWxsIGJlIHJ1biB3aGVuIHRoZSBjaGlsZCBpcyBkZXRhY2hlZC5cbiAqXG4gKiBUaGUgb3B0aW9uYWwgb3B0aW9ucyBwYXJhbWV0ZXIgYWNjZXB0cyBhbmQgb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBvcHRpb25zOlxuICogLSBgZGVlcDogYm9vbGVhbmAgKGRlZmF1bHQ6IGBmYWxzZWApIC0gdHJ1ZSBpZiB0aGUgY2FsbGJhY2sgc2hvdWxkIGJlIHJ1biBmb3IgYWxsIGNoaWxkcmVuIGRlZXBseVxuICogb3IgZmFsc2UgaWYgaXQgaXQgc2hvdWxkIG9ubHkgcnVuIGZvciBzaGFsbG93IGNoaWxkcmVuLlxuICogLSBgZmlyZUZvckN1cnJlbnRDaGlsZHJlbjogYm9vbGVhbmAgKGRlZmF1bHQ6IGB0cnVlYCkgLSB0cnVlIGlmIHRoZSBjYWxsYmFjayBzaG91bGQgYmUgaW1tZWRpYXRlbHlcbiAqIGNhbGxlZCBmb3IgY3VycmVudGx5IGF0dGFjaGVkIGNoaWxkcmVuLCBmYWxzZSBpZiBvbmx5IGZvciBmdXR1cmUgYXR0YWNobWVudHMuXG4gKlxuICogUmV0dXJucyBhIGRpc3Bvc2VyLCB3aGljaCBoYXMgYSBib29sZWFuIHBhcmFtZXRlciB3aGljaCBzaG91bGQgYmUgdHJ1ZSBpZiBwZW5kaW5nIGRldGFjaG1lbnRcbiAqIGNhbGxiYWNrcyBzaG91bGQgYmUgcnVuIG9yIGZhbHNlIG90aGVyd2lzZS5cbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IEZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgb2JqZWN0IHdob3NlIGNoaWxkcmVuIHNob3VsZCBiZSB0cmFja2VkLlxuICogQHBhcmFtIGZuIENhbGxiYWNrIGNhbGxlZCB3aGVuIGEgY2hpbGQgaXMgYXR0YWNoZWQgdG8gdGhlIHRhcmdldCBvYmplY3QuXG4gKiBAcGFyYW0gW29wdGlvbnNdXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gb25DaGlsZEF0dGFjaGVkVG8oXG4gIHRhcmdldDogKCkgPT4gb2JqZWN0LFxuICBmbjogKGNoaWxkOiBvYmplY3QpID0+ICgoKSA9PiB2b2lkKSB8IHZvaWQsXG4gIG9wdGlvbnM/OiB7XG4gICAgZGVlcD86IGJvb2xlYW5cbiAgICBmaXJlRm9yQ3VycmVudENoaWxkcmVuPzogYm9vbGVhblxuICB9XG4pOiAocnVuRGV0YWNoRGlzcG9zZXJzOiBib29sZWFuKSA9PiB2b2lkIHtcbiAgYXNzZXJ0SXNGdW5jdGlvbih0YXJnZXQsIFwidGFyZ2V0XCIpXG4gIGFzc2VydElzRnVuY3Rpb24oZm4sIFwiZm5cIilcblxuICBjb25zdCBvcHRzID0ge1xuICAgIGRlZXA6IGZhbHNlLFxuICAgIHJ1bkZvckN1cnJlbnRDaGlsZHJlbjogdHJ1ZSxcbiAgICAuLi5vcHRpb25zLFxuICB9XG5cbiAgY29uc3QgZGV0YWNoRGlzcG9zZXJzID0gbmV3IFdlYWtNYXA8b2JqZWN0LCAoKSA9PiB2b2lkPigpXG5cbiAgY29uc3QgcnVuRGV0YWNoRGlzcG9zZXIgPSAobjogb2JqZWN0KSA9PiB7XG4gICAgY29uc3QgZGV0YWNoRGlzcG9zZXIgPSBkZXRhY2hEaXNwb3NlcnMuZ2V0KG4pXG4gICAgaWYgKGRldGFjaERpc3Bvc2VyKSB7XG4gICAgICBkZXRhY2hEaXNwb3NlcnMuZGVsZXRlKG4pXG4gICAgICBkZXRhY2hEaXNwb3NlcigpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgYWRkRGV0YWNoRGlzcG9zZXIgPSAobjogb2JqZWN0LCBkaXNwb3NlcjogKCgpID0+IHZvaWQpIHwgdm9pZCkgPT4ge1xuICAgIGlmIChkaXNwb3Nlcikge1xuICAgICAgZGV0YWNoRGlzcG9zZXJzLnNldChuLCBkaXNwb3NlcilcbiAgICB9XG4gIH1cblxuICBjb25zdCBnZXRDaGlsZHJlbk9iamVjdE9wdHMgPSB7IGRlZXA6IG9wdHMuZGVlcCB9XG4gIGNvbnN0IGdldEN1cnJlbnRDaGlsZHJlbiA9ICgpID0+IHtcbiAgICBsZXQgdCA9IHRhcmdldCgpXG4gICAgYXNzZXJ0VHdlYWtlZE9iamVjdCh0LCBcInRhcmdldCgpXCIpXG5cbiAgICBjb25zdCBjaGlsZHJlbiA9IGdldENoaWxkcmVuT2JqZWN0cyh0LCBnZXRDaGlsZHJlbk9iamVjdE9wdHMpXG5cbiAgICBjb25zdCBzZXQgPSBuZXcgU2V0PG9iamVjdD4oKVxuXG4gICAgY29uc3QgaXRlciA9IGNoaWxkcmVuLnZhbHVlcygpXG4gICAgbGV0IGN1ciA9IGl0ZXIubmV4dCgpXG4gICAgd2hpbGUgKCFjdXIuZG9uZSkge1xuICAgICAgc2V0LmFkZChjdXIudmFsdWUpXG4gICAgICBjdXIgPSBpdGVyLm5leHQoKVxuICAgIH1cblxuICAgIHJldHVybiBzZXRcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRDaGlsZHJlbiA9IG9wdHMucnVuRm9yQ3VycmVudENoaWxkcmVuID8gbmV3IFNldDxvYmplY3Q+KCkgOiBnZXRDdXJyZW50Q2hpbGRyZW4oKVxuXG4gIGNvbnN0IGRpc3Bvc2VyID0gcmVhY3Rpb24oXG4gICAgKCkgPT4gZ2V0Q3VycmVudENoaWxkcmVuKCksXG4gICAgKG5ld0NoaWxkcmVuKSA9PiB7XG4gICAgICBjb25zdCBkaXNwb3NlcnNUb1J1bjogb2JqZWN0W10gPSBbXVxuXG4gICAgICAvLyBmaW5kIGRlYWRcbiAgICAgIGNvbnN0IGN1cnJlbnRDaGlsZHJlbkl0ZXIgPSBjdXJyZW50Q2hpbGRyZW4udmFsdWVzKClcbiAgICAgIGxldCBjdXJyZW50Q2hpbGRyZW5DdXIgPSBjdXJyZW50Q2hpbGRyZW5JdGVyLm5leHQoKVxuICAgICAgd2hpbGUgKCFjdXJyZW50Q2hpbGRyZW5DdXIuZG9uZSkge1xuICAgICAgICBjb25zdCBuID0gY3VycmVudENoaWxkcmVuQ3VyLnZhbHVlXG4gICAgICAgIGlmICghbmV3Q2hpbGRyZW4uaGFzKG4pKSB7XG4gICAgICAgICAgY3VycmVudENoaWxkcmVuLmRlbGV0ZShuKVxuXG4gICAgICAgICAgLy8gd2Ugc2hvdWxkIHJ1biBpdCBpbiBpbnZlcnNlIG9yZGVyXG4gICAgICAgICAgZGlzcG9zZXJzVG9SdW4ucHVzaChuKVxuICAgICAgICB9XG5cbiAgICAgICAgY3VycmVudENoaWxkcmVuQ3VyID0gY3VycmVudENoaWxkcmVuSXRlci5uZXh0KClcbiAgICAgIH1cblxuICAgICAgaWYgKGRpc3Bvc2Vyc1RvUnVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IGRpc3Bvc2Vyc1RvUnVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgcnVuRGV0YWNoRGlzcG9zZXIoZGlzcG9zZXJzVG9SdW5baV0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gZmluZCBuZXdcbiAgICAgIGNvbnN0IG5ld0NoaWxkcmVuSXRlciA9IG5ld0NoaWxkcmVuLnZhbHVlcygpXG4gICAgICBsZXQgbmV3Q2hpbGRyZW5DdXIgPSBuZXdDaGlsZHJlbkl0ZXIubmV4dCgpXG4gICAgICB3aGlsZSAoIW5ld0NoaWxkcmVuQ3VyLmRvbmUpIHtcbiAgICAgICAgY29uc3QgbiA9IG5ld0NoaWxkcmVuQ3VyLnZhbHVlXG4gICAgICAgIGlmICghY3VycmVudENoaWxkcmVuLmhhcyhuKSkge1xuICAgICAgICAgIGN1cnJlbnRDaGlsZHJlbi5hZGQobilcblxuICAgICAgICAgIGFkZERldGFjaERpc3Bvc2VyKG4sIGZuKG4pKVxuICAgICAgICB9XG5cbiAgICAgICAgbmV3Q2hpbGRyZW5DdXIgPSBuZXdDaGlsZHJlbkl0ZXIubmV4dCgpXG4gICAgICB9XG4gICAgfSxcbiAgICB7XG4gICAgICBmaXJlSW1tZWRpYXRlbHk6IHRydWUsXG4gICAgfVxuICApXG5cbiAgcmV0dXJuIChydW5EZXRhY2hEaXNwb3NlcnM6IGJvb2xlYW4pID0+IHtcbiAgICBkaXNwb3NlcigpXG5cbiAgICBpZiAocnVuRGV0YWNoRGlzcG9zZXJzKSB7XG4gICAgICBjb25zdCBjdXJyZW50Q2hpbGRyZW5JdGVyID0gY3VycmVudENoaWxkcmVuLnZhbHVlcygpXG4gICAgICBsZXQgY3VycmVudENoaWxkcmVuQ3VyID0gY3VycmVudENoaWxkcmVuSXRlci5uZXh0KClcbiAgICAgIHdoaWxlICghY3VycmVudENoaWxkcmVuQ3VyLmRvbmUpIHtcbiAgICAgICAgY29uc3QgbiA9IGN1cnJlbnRDaGlsZHJlbkN1ci52YWx1ZVxuICAgICAgICBydW5EZXRhY2hEaXNwb3NlcihuKVxuXG4gICAgICAgIGN1cnJlbnRDaGlsZHJlbkN1ciA9IGN1cnJlbnRDaGlsZHJlbkl0ZXIubmV4dCgpXG4gICAgICB9XG4gICAgfVxuICAgIGN1cnJlbnRDaGlsZHJlbi5jbGVhcigpXG4gIH1cbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQkF3QkUsUUFDQSxJQUNBO21CQUtpQixRQUFRLFFBQVE7bUJBQ2hCLElBQUksSUFBSTtRQUVuQixPQUFPO0FBQUEsSUFDWCxNQUFNO0FBQUEsSUFDTix1QkFBdUI7QUFBQSxLQUNwQjtRQUdDLHNDQUFzQjtRQUV0QixvQkFBb0IsQ0FBQztVQUNuQixpQkFBaUIsZ0JBQWdCLElBQUksQ0FBQztRQUN4QyxnQkFBZ0I7c0JBQ0YsT0FBTyxDQUFDOzs7O1FBS3RCLG9CQUFvQixDQUFDLEdBQVc7UUFDaEMsV0FBVTtzQkFDSSxJQUFJLEdBQUcsU0FBUTtBQUFBOztRQUk3Qix3QkFBd0IsRUFBRSxNQUFNLEtBQUs7UUFDckMscUJBQXFCO1FBQ3JCLElBQUk7d0JBQ1ksR0FBRyxVQUFVO1VBRTNCLFdBQVcsbUJBQW1CLEdBQUcscUJBQXFCO1VBRXRELDBCQUFVO1VBRVYsT0FBTyxTQUFTO1FBQ2xCLE1BQU0sS0FBSztXQUNSLENBQUMsSUFBSSxNQUFNO1VBQ1osSUFBSSxJQUFJLEtBQUs7WUFDWCxLQUFLOztXQUdOO0FBQUE7UUFHSCxrQkFBa0IsS0FBSyw0Q0FBNEIsUUFBZ0I7UUFFbkUsV0FBVyxTQUNmLE1BQU0sc0JBQ04sQ0FBQztVQUNPLGlCQUEyQjtVQUczQixzQkFBc0IsZ0JBQWdCO1FBQ3hDLHFCQUFxQixvQkFBb0I7V0FDdEMsQ0FBQyxtQkFBbUIsTUFBTTtZQUN6QixJQUFJLG1CQUFtQjtVQUN6QixDQUFDLFlBQVksSUFBSSxDQUFDLEdBQUc7d0JBQ1AsT0FBTyxDQUFDO3VCQUdULEtBQUssQ0FBQztBQUFBOzJCQUdGLG9CQUFvQjs7UUFHdkMsZUFBZSxTQUFTLEdBQUc7ZUFDcEIsSUFBSSxlQUFlLFNBQVMsR0FBRyxLQUFLLEdBQUcsS0FBSzswQkFDakMsZUFBZSxFQUFFO0FBQUE7O1VBS2pDLGtCQUFrQixZQUFZO1FBQ2hDLGlCQUFpQixnQkFBZ0I7V0FDOUIsQ0FBQyxlQUFlLE1BQU07WUFDckIsSUFBSSxlQUFlO1VBQ3JCLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxHQUFHO3dCQUNYLElBQUksQ0FBQzswQkFFSCxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQUE7dUJBR1gsZ0JBQWdCOztLQUdyQztBQUFBLElBQ0UsaUJBQWlCO0FBQUEsR0FDbEI7U0FHSSxDQUFDOztRQUdGLG9CQUFvQjtZQUNoQixzQkFBc0IsZ0JBQWdCO1VBQ3hDLHFCQUFxQixvQkFBb0I7YUFDdEMsQ0FBQyxtQkFBbUIsTUFBTTtjQUN6QixJQUFJLG1CQUFtQjswQkFDWCxDQUFDOzZCQUVFLG9CQUFvQjs7O29CQUc3Qjs7QUFFcEI7OyJ9