@kaspernj/api-maker 1.0.2011 → 1.0.2013

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 (413) hide show
  1. package/{.eslintrc.cjs → .eslintrc.js} +10 -1
  2. package/README.md +35 -0
  3. package/android/build.gradle +43 -0
  4. package/android/src/main/AndroidManifest.xml +2 -0
  5. package/android/src/main/java/expo/modules/api_maker/ApiMakerModule.kt +50 -0
  6. package/android/src/main/java/expo/modules/api_maker/ApiMakerView.kt +30 -0
  7. package/build/api.js +120 -0
  8. package/build/attribute-not-loaded-error.js +2 -0
  9. package/build/base-component.js +5 -0
  10. package/build/base-error.js +33 -0
  11. package/build/base-model/attribute.js +25 -0
  12. package/build/base-model/column.js +11 -0
  13. package/build/base-model/reflection.js +14 -0
  14. package/build/base-model/scope.js +11 -0
  15. package/build/base-model.js +828 -0
  16. package/build/bootstrap/attribute-row.js +135 -0
  17. package/build/bootstrap/attribute-rows.js +31 -0
  18. package/build/bootstrap/card.js +138 -0
  19. package/build/bootstrap/checkbox.js +97 -0
  20. package/build/bootstrap/checkboxes.js +183 -0
  21. package/build/bootstrap/index.js +2 -0
  22. package/build/bootstrap/input.js +129 -0
  23. package/build/bootstrap/invalid-feedback.js +27 -0
  24. package/build/bootstrap/paginate.js +150 -0
  25. package/build/bootstrap/radio-buttons.js +72 -0
  26. package/build/bootstrap/select.js +88 -0
  27. package/build/bootstrap/sort-link.js +131 -0
  28. package/build/cable-connection-pool.js +128 -0
  29. package/build/cable-subscription-pool.js +207 -0
  30. package/build/cable-subscription.js +21 -0
  31. package/build/cache-key-generator.js +81 -0
  32. package/build/can-can.js +134 -0
  33. package/build/channels-consumer.js +9 -0
  34. package/build/collection-loader.js +48 -0
  35. package/build/collection.js +280 -0
  36. package/build/command-submit-data.js +81 -0
  37. package/build/commands-pool.js +195 -0
  38. package/build/compose.js +9 -0
  39. package/build/config.js +62 -0
  40. package/build/custom-error.js +5 -0
  41. package/build/data-set-to-attributes.js +10 -0
  42. package/build/deserializer.js +56 -0
  43. package/build/destroy-error.js +5 -0
  44. package/build/devise.js +112 -0
  45. package/build/draggable-sort/controller.js +136 -0
  46. package/build/draggable-sort/index.js +114 -0
  47. package/build/draggable-sort/item.js +188 -0
  48. package/build/error-logger.js +101 -0
  49. package/build/error-messages.js +13 -0
  50. package/build/event-connection.js +32 -0
  51. package/build/event-emitter-listener.js +15 -0
  52. package/build/event-model-class.js +24 -0
  53. package/build/events.js +5 -0
  54. package/build/flash-message.js +79 -0
  55. package/build/form.js +83 -0
  56. package/build/history-expo.js +20 -0
  57. package/build/history-react-native.js +20 -0
  58. package/build/history.js +3 -0
  59. package/build/index.js +3 -0
  60. package/build/inputs/attachment.js +133 -0
  61. package/build/inputs/auto-submit.js +36 -0
  62. package/build/inputs/checkbox.js +138 -0
  63. package/build/inputs/checkboxes.js +112 -0
  64. package/build/inputs/id-for-component.js +15 -0
  65. package/build/inputs/input-wrapper.js +19 -0
  66. package/build/inputs/input.js +243 -0
  67. package/build/inputs/money.js +179 -0
  68. package/build/inputs/name-for-component.js +13 -0
  69. package/build/inputs/select.js +93 -0
  70. package/build/instance-of-class-name.js +23 -0
  71. package/build/is-expo.js +22 -0
  72. package/build/key-value-store.js +53 -0
  73. package/build/link.js +73 -0
  74. package/build/logger.js +30 -0
  75. package/build/modal.js +38 -0
  76. package/build/model-class-require.js +13 -0
  77. package/build/model-events.js +30 -0
  78. package/build/model-name.js +28 -0
  79. package/build/model-prop-type.js +101 -0
  80. package/build/model-recipes-loader.js +32 -0
  81. package/build/model-recipes-model-loader.js +357 -0
  82. package/build/models-response-reader.js +40 -0
  83. package/build/models.js +8 -0
  84. package/build/money-formatter.js +78 -0
  85. package/build/not-loaded-error.js +2 -0
  86. package/build/params.js +61 -0
  87. package/build/preloaded.js +38 -0
  88. package/build/resize-observer.js +11 -0
  89. package/build/result.js +13 -0
  90. package/build/router/route.js +270 -0
  91. package/build/router/switch.js +72 -0
  92. package/build/router.js +59 -0
  93. package/build/routes-native.js +202 -0
  94. package/build/routes.js +50 -0
  95. package/build/run-last.js +35 -0
  96. package/build/serializer.js +63 -0
  97. package/build/services.js +20 -0
  98. package/build/session-status-updater.js +134 -0
  99. package/build/source-maps-loader.js +184 -0
  100. package/build/super-admin/config-reader.js +85 -0
  101. package/build/super-admin/edit-page/edit-attribute-checkbox.js +85 -0
  102. package/build/super-admin/edit-page/edit-attribute-content.js +55 -0
  103. package/build/super-admin/edit-page/edit-attribute-input.js +79 -0
  104. package/build/super-admin/edit-page/edit-attribute.js +77 -0
  105. package/build/super-admin/edit-page.js +123 -0
  106. package/build/super-admin/has-edit-config.js +12 -0
  107. package/build/super-admin/index-page.js +25 -0
  108. package/build/super-admin/index.js +181 -0
  109. package/build/super-admin/layout/header/index.js +161 -0
  110. package/build/super-admin/layout/index.js +164 -0
  111. package/build/super-admin/layout/menu/index.js +206 -0
  112. package/build/super-admin/layout/menu/menu-content.js +46 -0
  113. package/build/super-admin/layout/menu/menu-item.js +84 -0
  114. package/build/super-admin/layout/no-access.js +27 -0
  115. package/build/super-admin/model-class-table.js +61 -0
  116. package/build/super-admin/models.js +8 -0
  117. package/build/super-admin/show-nav.js +51 -0
  118. package/build/super-admin/show-page/belongs-to-attribute-row.js +29 -0
  119. package/build/super-admin/show-page/index.js +141 -0
  120. package/build/super-admin/show-reflection-actions.js +47 -0
  121. package/build/super-admin/show-reflection-link.js +48 -0
  122. package/build/super-admin/show-reflection-page.js +48 -0
  123. package/build/table/column-content.js +117 -0
  124. package/build/table/column-identifier.js +18 -0
  125. package/build/table/column-visible.js +7 -0
  126. package/build/table/components/column.js +21 -0
  127. package/build/table/components/flat-list.js +21 -0
  128. package/build/table/components/header.js +26 -0
  129. package/build/table/components/row.js +26 -0
  130. package/build/table/filters/attribute-element.js +44 -0
  131. package/build/table/filters/filter-form.js +402 -0
  132. package/build/table/filters/filter.js +90 -0
  133. package/build/table/filters/index.js +184 -0
  134. package/build/table/filters/load-search-modal.js +175 -0
  135. package/build/table/filters/reflection-element.js +37 -0
  136. package/build/table/filters/save-search-modal.js +88 -0
  137. package/build/table/filters/scope-element.js +42 -0
  138. package/build/table/header-column-content.js +68 -0
  139. package/build/table/header-column.js +144 -0
  140. package/build/table/header-select.js +105 -0
  141. package/build/table/model-callback-args.js +10 -0
  142. package/build/table/model-column.js +97 -0
  143. package/build/table/model-row.js +193 -0
  144. package/build/table/select-calculator.js +63 -0
  145. package/build/table/settings/column-row.js +97 -0
  146. package/build/table/settings/download-action.js +79 -0
  147. package/build/table/settings/index.js +92 -0
  148. package/build/table/table-settings.js +219 -0
  149. package/build/table/table.js +972 -0
  150. package/build/table/use-sorting.js +34 -0
  151. package/build/table/widths.js +75 -0
  152. package/build/table/worker-plugins-check-all-checkbox.js +125 -0
  153. package/build/table/worker-plugins-checkbox.js +115 -0
  154. package/build/translated-attributes.js +10 -0
  155. package/build/translated-collections.js +12 -0
  156. package/build/updated-attribute.js +76 -0
  157. package/build/url-encode.js +15 -0
  158. package/build/use-breakpoint.js +71 -0
  159. package/build/use-can-can.js +55 -0
  160. package/build/use-collection.js +225 -0
  161. package/build/use-created-event.js +52 -0
  162. package/build/use-current-user.js +76 -0
  163. package/build/use-destroyed-event.js +60 -0
  164. package/build/use-event-emitter.js +13 -0
  165. package/build/use-event-listener.js +16 -0
  166. package/build/use-input.js +137 -0
  167. package/build/use-model-event.js +60 -0
  168. package/build/use-model.js +169 -0
  169. package/build/use-resize-observer.js +23 -0
  170. package/build/use-router.js +104 -0
  171. package/build/use-screen-layout.js +39 -0
  172. package/build/use-styles.js +41 -0
  173. package/build/use-updated-event.js +60 -0
  174. package/build/use-validation-errors.js +30 -0
  175. package/build/utils/card.js +51 -0
  176. package/build/utils/checkbox.js +78 -0
  177. package/build/utils/checkboxes.js +163 -0
  178. package/build/utils/default-style.js +18 -0
  179. package/build/utils/icon.js +23 -0
  180. package/build/utils/invalid-feedback.js +19 -0
  181. package/build/utils/modal.js +62 -0
  182. package/build/utils/text.js +44 -0
  183. package/build/validation-error.js +28 -0
  184. package/build/validation-errors.js +98 -0
  185. package/build/with-api-maker.js +29 -0
  186. package/build/with-collection.js +14 -0
  187. package/build/with-current-user.js +10 -0
  188. package/build/with-model.js +15 -0
  189. package/build/with-router.js +22 -0
  190. package/expo-module.config.json +17 -0
  191. package/ios/ApiMaker.podspec +29 -0
  192. package/ios/ApiMakerModule.swift +48 -0
  193. package/ios/ApiMakerView.swift +38 -0
  194. package/package.json +49 -46
  195. package/src/{api.mjs → api.js} +38 -37
  196. package/src/base-component.jsx +5 -0
  197. package/src/{base-error.mjs → base-error.js} +4 -6
  198. package/src/base-model/attribute.js +33 -0
  199. package/src/base-model/column.js +13 -0
  200. package/src/base-model/reflection.js +15 -0
  201. package/src/base-model/scope.js +12 -0
  202. package/src/{base-model.mjs → base-model.js} +302 -144
  203. package/src/bootstrap/attribute-row.jsx +135 -0
  204. package/src/bootstrap/attribute-rows.jsx +27 -0
  205. package/src/bootstrap/card.jsx +149 -0
  206. package/src/bootstrap/checkbox.jsx +86 -0
  207. package/src/bootstrap/checkboxes.jsx +185 -0
  208. package/src/bootstrap/index.js +0 -0
  209. package/src/bootstrap/input.jsx +173 -0
  210. package/src/bootstrap/invalid-feedback.jsx +31 -0
  211. package/src/bootstrap/paginate.jsx +187 -0
  212. package/src/bootstrap/radio-buttons.jsx +87 -0
  213. package/src/bootstrap/select.jsx +110 -0
  214. package/src/bootstrap/sort-link.jsx +106 -0
  215. package/src/{cable-connection-pool.mjs → cable-connection-pool.js} +16 -36
  216. package/src/{cable-subscription-pool.mjs → cable-subscription-pool.js} +26 -21
  217. package/src/{cable-subscription.mjs → cable-subscription.js} +6 -4
  218. package/src/cache-key-generator.js +100 -0
  219. package/src/{can-can.mjs → can-can.js} +13 -12
  220. package/src/channels-consumer.js +10 -0
  221. package/src/collection-loader.jsx +58 -224
  222. package/src/{collection.mjs → collection.js} +98 -44
  223. package/src/{command-submit-data.mjs → command-submit-data.js} +2 -7
  224. package/src/{commands-pool.mjs → commands-pool.js} +57 -41
  225. package/src/compose.js +11 -0
  226. package/src/{config.mjs → config.js} +6 -2
  227. package/src/{custom-error.mjs → custom-error.js} +1 -1
  228. package/src/data-set-to-attributes.js +13 -0
  229. package/src/{deserializer.mjs → deserializer.js} +3 -3
  230. package/src/destroy-error.js +7 -0
  231. package/src/devise.js +129 -0
  232. package/src/draggable-sort/controller.js +137 -0
  233. package/src/draggable-sort/index.jsx +108 -0
  234. package/src/draggable-sort/item.jsx +174 -0
  235. package/src/{error-logger.mjs → error-logger.js} +12 -7
  236. package/src/{error-messages.mjs → error-messages.js} +1 -0
  237. package/src/event-connection.jsx +1 -1
  238. package/src/event-emitter-listener.jsx +8 -27
  239. package/src/event-model-class.jsx +2 -4
  240. package/src/events.js +7 -0
  241. package/src/flash-message.js +70 -0
  242. package/src/form.jsx +91 -0
  243. package/src/history-expo.js +23 -0
  244. package/src/history-react-native.js +25 -0
  245. package/src/history.js +3 -0
  246. package/src/index.js +3 -0
  247. package/src/inputs/attachment.jsx +108 -0
  248. package/src/inputs/auto-submit.js +37 -0
  249. package/src/inputs/checkbox.jsx +125 -0
  250. package/src/inputs/checkboxes.jsx +116 -0
  251. package/src/inputs/id-for-component.js +15 -0
  252. package/src/inputs/input-wrapper.jsx +16 -0
  253. package/src/inputs/input.jsx +260 -0
  254. package/src/inputs/money.jsx +187 -0
  255. package/src/inputs/name-for-component.js +15 -0
  256. package/src/inputs/select.jsx +104 -0
  257. package/src/is-expo.js +18 -0
  258. package/src/{key-value-store.mjs → key-value-store.js} +1 -1
  259. package/src/link.jsx +54 -9
  260. package/src/logger.js +38 -0
  261. package/src/modal.jsx +37 -0
  262. package/src/model-class-require.js +17 -0
  263. package/src/{model-events.mjs → model-events.js} +1 -1
  264. package/src/{model-name.mjs → model-name.js} +8 -8
  265. package/src/{model-recipes-loader.mjs → model-recipes-loader.js} +1 -1
  266. package/src/{model-recipes-model-loader.mjs → model-recipes-model-loader.js} +5 -5
  267. package/src/{models-response-reader.mjs → models-response-reader.js} +3 -4
  268. package/src/models.js +7 -0
  269. package/src/{models.mjs.erb → models.js.erb} +6 -3
  270. package/src/{money-formatter.mjs → money-formatter.js} +5 -4
  271. package/src/{params.mjs → params.js} +17 -7
  272. package/src/{preloaded.mjs → preloaded.js} +2 -2
  273. package/src/resize-observer.jsx +10 -0
  274. package/src/result.js +13 -0
  275. package/src/router/route.jsx +246 -0
  276. package/src/router/switch.jsx +76 -0
  277. package/src/router.jsx +23 -21
  278. package/src/{routes-native.mjs → routes-native.js} +12 -6
  279. package/src/{routes.mjs → routes.js} +1 -1
  280. package/src/run-last.js +39 -0
  281. package/src/{serializer.mjs → serializer.js} +2 -2
  282. package/src/{services.mjs → services.js} +1 -1
  283. package/src/session-status-updater.js +172 -0
  284. package/src/{source-maps-loader.mjs → source-maps-loader.js} +54 -28
  285. package/src/super-admin/config-reader.jsx +93 -0
  286. package/src/super-admin/edit-page/edit-attribute-checkbox.jsx +81 -0
  287. package/src/super-admin/edit-page/edit-attribute-content.jsx +57 -0
  288. package/src/super-admin/edit-page/edit-attribute-input.jsx +71 -0
  289. package/src/super-admin/edit-page/edit-attribute.jsx +81 -0
  290. package/src/super-admin/edit-page.jsx +117 -0
  291. package/src/super-admin/has-edit-config.js +15 -0
  292. package/src/super-admin/index-page.jsx +23 -0
  293. package/src/super-admin/index.jsx +197 -0
  294. package/src/super-admin/layout/header/index.jsx +144 -0
  295. package/src/super-admin/layout/header/style.scss +45 -0
  296. package/src/super-admin/layout/index.jsx +154 -0
  297. package/src/super-admin/layout/menu/index.jsx +171 -0
  298. package/src/super-admin/layout/menu/menu-content.jsx +43 -0
  299. package/src/super-admin/layout/menu/menu-item.jsx +70 -0
  300. package/src/super-admin/layout/menu/style.scss +11 -0
  301. package/src/super-admin/layout/no-access.jsx +26 -0
  302. package/src/super-admin/model-class-table.jsx +66 -0
  303. package/src/super-admin/models.js +11 -0
  304. package/src/super-admin/show-nav.jsx +44 -0
  305. package/src/super-admin/show-page/belongs-to-attribute-row.jsx +30 -0
  306. package/src/super-admin/show-page/index.jsx +141 -0
  307. package/src/super-admin/show-reflection-actions.jsx +49 -0
  308. package/src/super-admin/show-reflection-link.jsx +40 -0
  309. package/src/super-admin/show-reflection-page.jsx +47 -0
  310. package/src/super-admin/stylesheets/variables.scss +11 -0
  311. package/src/table/column-content.jsx +122 -0
  312. package/src/table/column-identifier.js +23 -0
  313. package/src/table/column-visible.js +7 -0
  314. package/src/table/components/column.jsx +19 -0
  315. package/src/table/components/flat-list.jsx +19 -0
  316. package/src/table/components/header.jsx +21 -0
  317. package/src/table/components/row.jsx +23 -0
  318. package/src/table/filters/attribute-element.jsx +47 -0
  319. package/src/table/filters/filter-form.jsx +407 -0
  320. package/src/table/filters/filter.jsx +70 -0
  321. package/src/table/filters/index.jsx +170 -0
  322. package/src/table/filters/load-search-modal.jsx +146 -0
  323. package/src/table/filters/reflection-element.jsx +38 -0
  324. package/src/table/filters/save-search-modal.jsx +74 -0
  325. package/src/table/filters/scope-element.jsx +44 -0
  326. package/src/table/header-column-content.jsx +55 -0
  327. package/src/table/header-column.jsx +129 -0
  328. package/src/table/header-select.jsx +73 -0
  329. package/src/table/model-callback-args.js +10 -0
  330. package/src/table/model-column.jsx +82 -0
  331. package/src/table/model-row.jsx +136 -0
  332. package/src/table/select-calculator.js +65 -0
  333. package/src/table/settings/column-row.jsx +93 -0
  334. package/src/table/settings/download-action.jsx +68 -0
  335. package/src/table/settings/index.jsx +65 -0
  336. package/src/table/table-settings.js +263 -0
  337. package/src/table/table.jsx +950 -0
  338. package/src/table/use-sorting.js +35 -0
  339. package/src/table/variables.scss +11 -0
  340. package/src/table/widths.jsx +87 -0
  341. package/src/table/worker-plugins-check-all-checkbox.jsx +112 -0
  342. package/src/table/worker-plugins-checkbox.jsx +104 -0
  343. package/src/translated-attributes.js +11 -0
  344. package/src/{translated-collections.mjs → translated-collections.js} +3 -2
  345. package/src/updated-attribute.jsx +1 -1
  346. package/src/url-encode.js +18 -0
  347. package/src/use-breakpoint.js +87 -0
  348. package/src/use-can-can.js +55 -0
  349. package/src/use-collection.js +280 -0
  350. package/src/use-created-event.js +55 -0
  351. package/src/use-current-user.js +88 -0
  352. package/src/use-destroyed-event.js +60 -0
  353. package/src/use-event-emitter.js +15 -0
  354. package/src/use-event-listener.js +19 -0
  355. package/src/use-input.js +157 -0
  356. package/src/use-model-event.js +60 -0
  357. package/src/use-model.js +189 -0
  358. package/src/use-resize-observer.js +24 -0
  359. package/src/use-router.jsx +128 -0
  360. package/src/use-screen-layout.js +49 -0
  361. package/src/use-styles.js +50 -0
  362. package/src/use-updated-event.js +60 -0
  363. package/src/use-validation-errors.js +33 -0
  364. package/src/utils/card.jsx +49 -0
  365. package/src/utils/checkbox.jsx +80 -0
  366. package/src/utils/checkboxes.jsx +158 -0
  367. package/src/utils/default-style.jsx +25 -0
  368. package/src/utils/icon.jsx +21 -0
  369. package/src/utils/invalid-feedback.jsx +20 -0
  370. package/src/utils/modal.jsx +60 -0
  371. package/src/utils/text.jsx +38 -0
  372. package/src/{validation-error.mjs → validation-error.js} +9 -5
  373. package/src/{validation-errors.mjs → validation-errors.js} +15 -27
  374. package/src/with-api-maker.jsx +31 -0
  375. package/src/with-collection.jsx +17 -0
  376. package/src/with-current-user.jsx +7 -25
  377. package/src/with-model.jsx +16 -0
  378. package/src/with-router.jsx +7 -129
  379. package/__tests__/base-model.test.js +0 -71
  380. package/__tests__/cable-connection-pool.test.js +0 -227
  381. package/__tests__/cable-subscription-pool.test.js +0 -26
  382. package/__tests__/can-can.test.js +0 -34
  383. package/__tests__/collection.test.js +0 -51
  384. package/__tests__/custom-error.test.js +0 -13
  385. package/__tests__/model-name.test.js +0 -34
  386. package/__tests__/model-prop-type.test.js +0 -113
  387. package/__tests__/params.test.js +0 -40
  388. package/__tests__/routes-native.test.js +0 -103
  389. package/__tests__/routes.test.js +0 -46
  390. package/__tests__/serializer.test.js +0 -30
  391. package/__tests__/support/task.js +0 -27
  392. package/__tests__/support/user.js +0 -32
  393. package/index.js +0 -1
  394. package/jest.config.js +0 -4
  395. package/src/can-can-loader.jsx +0 -54
  396. package/src/channels-consumer.mjs +0 -3
  397. package/src/destroy-error.mjs +0 -7
  398. package/src/devise.mjs +0 -122
  399. package/src/event-created.jsx +0 -65
  400. package/src/event-destroyed.jsx +0 -29
  401. package/src/event-listener.jsx +0 -38
  402. package/src/event-updated.jsx +0 -74
  403. package/src/logger.mjs +0 -25
  404. package/src/model-class-require.mjs +0 -10
  405. package/src/model-load-wrapper.jsx +0 -116
  406. package/src/result.mjs +0 -29
  407. package/src/session-status-updater.mjs +0 -116
  408. package/webpack.config.js +0 -15
  409. /package/src/{attribute-not-loaded-error.mjs → attribute-not-loaded-error.js} +0 -0
  410. /package/src/{instance-of-class-name.mjs → instance-of-class-name.js} +0 -0
  411. /package/src/{model-prop-type.mjs → model-prop-type.js} +0 -0
  412. /package/src/{not-loaded-error.mjs → not-loaded-error.js} +0 -0
  413. /package/src/{translated-collections-data.mjs.erb → translated-collections-data.js.erb} +0 -0
@@ -0,0 +1,44 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ import memo from "set-state-compare/src/memo";
3
+ import React, { useMemo } from "react";
4
+ import { Text } from "react-native";
5
+ import { useDefaultStyle, WithDefaultStyle } from "./default-style";
6
+ export default memo(props => {
7
+ const {
8
+ style,
9
+ ...restProps
10
+ } = props;
11
+ const defaultStyle = useDefaultStyle();
12
+ const {
13
+ actualStyle,
14
+ stylesList
15
+ } = useMemo(() => {
16
+ const stylesList = [];
17
+ const actualStyle = {};
18
+ if (defaultStyle?.Text) {
19
+ Object.assign(actualStyle, defaultStyle.Text);
20
+ stylesList.push(defaultStyle.Text);
21
+ }
22
+ if (style) {
23
+ if (Array.isArray(style)) {
24
+ for (const styleI of style) {
25
+ Object.assign(actualStyle, styleI);
26
+ stylesList.push(styleI);
27
+ }
28
+ } else {
29
+ Object.assign(actualStyle, style);
30
+ stylesList.push(style);
31
+ }
32
+ }
33
+ return {
34
+ actualStyle,
35
+ stylesList
36
+ };
37
+ }, [defaultStyle?.Text, style]);
38
+ return /*#__PURE__*/React.createElement(WithDefaultStyle, {
39
+ style: actualStyle
40
+ }, /*#__PURE__*/React.createElement(Text, _extends({
41
+ style: stylesList
42
+ }, restProps)));
43
+ });
44
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtZW1vIiwiUmVhY3QiLCJ1c2VNZW1vIiwiVGV4dCIsInVzZURlZmF1bHRTdHlsZSIsIldpdGhEZWZhdWx0U3R5bGUiLCJwcm9wcyIsInN0eWxlIiwicmVzdFByb3BzIiwiZGVmYXVsdFN0eWxlIiwiYWN0dWFsU3R5bGUiLCJzdHlsZXNMaXN0IiwiT2JqZWN0IiwiYXNzaWduIiwicHVzaCIsIkFycmF5IiwiaXNBcnJheSIsInN0eWxlSSIsImNyZWF0ZUVsZW1lbnQiLCJfZXh0ZW5kcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy90ZXh0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL21lbW9cIlxuaW1wb3J0IFJlYWN0LCB7dXNlTWVtb30gZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7VGV4dH0gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQge3VzZURlZmF1bHRTdHlsZSwgV2l0aERlZmF1bHRTdHlsZX0gZnJvbSBcIi4vZGVmYXVsdC1zdHlsZVwiXG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtzdHlsZSwgLi4ucmVzdFByb3BzfSA9IHByb3BzXG4gIGNvbnN0IGRlZmF1bHRTdHlsZSA9IHVzZURlZmF1bHRTdHlsZSgpXG4gIGNvbnN0IHthY3R1YWxTdHlsZSwgc3R5bGVzTGlzdH0gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBzdHlsZXNMaXN0ID0gW11cbiAgICBjb25zdCBhY3R1YWxTdHlsZSA9IHt9XG5cbiAgICBpZiAoZGVmYXVsdFN0eWxlPy5UZXh0KSB7XG4gICAgICBPYmplY3QuYXNzaWduKGFjdHVhbFN0eWxlLCBkZWZhdWx0U3R5bGUuVGV4dClcbiAgICAgIHN0eWxlc0xpc3QucHVzaChkZWZhdWx0U3R5bGUuVGV4dClcbiAgICB9XG5cbiAgICBpZiAoc3R5bGUpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHN0eWxlKSkge1xuICAgICAgICBmb3IgKGNvbnN0IHN0eWxlSSBvZiBzdHlsZSkge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24oYWN0dWFsU3R5bGUsIHN0eWxlSSlcbiAgICAgICAgICBzdHlsZXNMaXN0LnB1c2goc3R5bGVJKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBPYmplY3QuYXNzaWduKGFjdHVhbFN0eWxlLCBzdHlsZSlcbiAgICAgICAgc3R5bGVzTGlzdC5wdXNoKHN0eWxlKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7YWN0dWFsU3R5bGUsIHN0eWxlc0xpc3R9XG4gIH0sIFtkZWZhdWx0U3R5bGU/LlRleHQsIHN0eWxlXSlcblxuICByZXR1cm4gKFxuICAgIDxXaXRoRGVmYXVsdFN0eWxlIHN0eWxlPXthY3R1YWxTdHlsZX0+XG4gICAgICA8VGV4dCBzdHlsZT17c3R5bGVzTGlzdH0gey4uLnJlc3RQcm9wc30gLz5cbiAgICA8L1dpdGhEZWZhdWx0U3R5bGU+XG4gIClcbn0pXG4iXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPQSxJQUFJLE1BQU0sNEJBQTRCO0FBQzdDLE9BQU9DLEtBQUssSUFBR0MsT0FBTyxRQUFPLE9BQU87QUFDcEMsU0FBUUMsSUFBSSxRQUFPLGNBQWM7QUFDakMsU0FBUUMsZUFBZSxFQUFFQyxnQkFBZ0IsUUFBTyxpQkFBaUI7QUFFakUsZUFBZUwsSUFBSSxDQUFFTSxLQUFLLElBQUs7RUFDN0IsTUFBTTtJQUFDQyxLQUFLO0lBQUUsR0FBR0M7RUFBUyxDQUFDLEdBQUdGLEtBQUs7RUFDbkMsTUFBTUcsWUFBWSxHQUFHTCxlQUFlLENBQUMsQ0FBQztFQUN0QyxNQUFNO0lBQUNNLFdBQVc7SUFBRUM7RUFBVSxDQUFDLEdBQUdULE9BQU8sQ0FBQyxNQUFNO0lBQzlDLE1BQU1TLFVBQVUsR0FBRyxFQUFFO0lBQ3JCLE1BQU1ELFdBQVcsR0FBRyxDQUFDLENBQUM7SUFFdEIsSUFBSUQsWUFBWSxFQUFFTixJQUFJLEVBQUU7TUFDdEJTLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDSCxXQUFXLEVBQUVELFlBQVksQ0FBQ04sSUFBSSxDQUFDO01BQzdDUSxVQUFVLENBQUNHLElBQUksQ0FBQ0wsWUFBWSxDQUFDTixJQUFJLENBQUM7SUFDcEM7SUFFQSxJQUFJSSxLQUFLLEVBQUU7TUFDVCxJQUFJUSxLQUFLLENBQUNDLE9BQU8sQ0FBQ1QsS0FBSyxDQUFDLEVBQUU7UUFDeEIsS0FBSyxNQUFNVSxNQUFNLElBQUlWLEtBQUssRUFBRTtVQUMxQkssTUFBTSxDQUFDQyxNQUFNLENBQUNILFdBQVcsRUFBRU8sTUFBTSxDQUFDO1VBQ2xDTixVQUFVLENBQUNHLElBQUksQ0FBQ0csTUFBTSxDQUFDO1FBQ3pCO01BQ0YsQ0FBQyxNQUFNO1FBQ0xMLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDSCxXQUFXLEVBQUVILEtBQUssQ0FBQztRQUNqQ0ksVUFBVSxDQUFDRyxJQUFJLENBQUNQLEtBQUssQ0FBQztNQUN4QjtJQUNGO0lBRUEsT0FBTztNQUFDRyxXQUFXO01BQUVDO0lBQVUsQ0FBQztFQUNsQyxDQUFDLEVBQUUsQ0FBQ0YsWUFBWSxFQUFFTixJQUFJLEVBQUVJLEtBQUssQ0FBQyxDQUFDO0VBRS9CLG9CQUNFTixLQUFBLENBQUFpQixhQUFBLENBQUNiLGdCQUFnQjtJQUFDRSxLQUFLLEVBQUVHO0VBQVksZ0JBQ25DVCxLQUFBLENBQUFpQixhQUFBLENBQUNmLElBQUksRUFBQWdCLFFBQUE7SUFBQ1osS0FBSyxFQUFFSTtFQUFXLEdBQUtILFNBQVMsQ0FBRyxDQUN6QixDQUFDO0FBRXZCLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,28 @@
1
+ import BaseError from "./base-error";
2
+ import * as inflection from "inflection";
3
+ class ValidationError extends BaseError {
4
+ constructor(validationErrors, args) {
5
+ const errorMessage = validationErrors.getUnhandledErrorMessage() || validationErrors.getErrorMessage();
6
+ const forwardedArgs = {
7
+ addResponseErrorsToErrorMessage: false
8
+ };
9
+ const newArgs = Object.assign({}, args, forwardedArgs);
10
+ super(errorMessage, newArgs);
11
+ this.validationErrors = validationErrors;
12
+ }
13
+ getUnhandledErrors = () => this.validationErrors.getValidationErrors().filter(validationError => !validationError.getHandled());
14
+ getValidationErrors = () => digg(this, "validationErrors");
15
+ hasUnhandledErrors() {
16
+ const unhandledError = this.validationErrors.getValidationErrors().find(validationError => !validationError.getHandled());
17
+ return Boolean(unhandledError);
18
+ }
19
+ hasValidationErrorForAttribute(attributeName) {
20
+ const underscoredAttributeName = inflection.underscore(attributeName);
21
+ const foundAttribute = this.validationErrors.getValidationErrors().find(validationError => validationError.getAttributeName() == underscoredAttributeName);
22
+ if (foundAttribute) return true;
23
+ return false;
24
+ }
25
+ }
26
+ ValidationError.apiMakerType = "ValidationError";
27
+ export default ValidationError;
28
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlRXJyb3IiLCJpbmZsZWN0aW9uIiwiVmFsaWRhdGlvbkVycm9yIiwiY29uc3RydWN0b3IiLCJ2YWxpZGF0aW9uRXJyb3JzIiwiYXJncyIsImVycm9yTWVzc2FnZSIsImdldFVuaGFuZGxlZEVycm9yTWVzc2FnZSIsImdldEVycm9yTWVzc2FnZSIsImZvcndhcmRlZEFyZ3MiLCJhZGRSZXNwb25zZUVycm9yc1RvRXJyb3JNZXNzYWdlIiwibmV3QXJncyIsIk9iamVjdCIsImFzc2lnbiIsImdldFVuaGFuZGxlZEVycm9ycyIsImdldFZhbGlkYXRpb25FcnJvcnMiLCJmaWx0ZXIiLCJ2YWxpZGF0aW9uRXJyb3IiLCJnZXRIYW5kbGVkIiwiZGlnZyIsImhhc1VuaGFuZGxlZEVycm9ycyIsInVuaGFuZGxlZEVycm9yIiwiZmluZCIsIkJvb2xlYW4iLCJoYXNWYWxpZGF0aW9uRXJyb3JGb3JBdHRyaWJ1dGUiLCJhdHRyaWJ1dGVOYW1lIiwidW5kZXJzY29yZWRBdHRyaWJ1dGVOYW1lIiwidW5kZXJzY29yZSIsImZvdW5kQXR0cmlidXRlIiwiZ2V0QXR0cmlidXRlTmFtZSIsImFwaU1ha2VyVHlwZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy92YWxpZGF0aW9uLWVycm9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBCYXNlRXJyb3IgZnJvbSBcIi4vYmFzZS1lcnJvclwiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcblxuY2xhc3MgVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgQmFzZUVycm9yIHtcbiAgY29uc3RydWN0b3IodmFsaWRhdGlvbkVycm9ycywgYXJncykge1xuICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IHZhbGlkYXRpb25FcnJvcnMuZ2V0VW5oYW5kbGVkRXJyb3JNZXNzYWdlKCkgfHwgdmFsaWRhdGlvbkVycm9ycy5nZXRFcnJvck1lc3NhZ2UoKVxuICAgIGNvbnN0IGZvcndhcmRlZEFyZ3MgPSB7YWRkUmVzcG9uc2VFcnJvcnNUb0Vycm9yTWVzc2FnZTogZmFsc2V9XG4gICAgY29uc3QgbmV3QXJncyA9IE9iamVjdC5hc3NpZ24oe30sIGFyZ3MsIGZvcndhcmRlZEFyZ3MpXG5cbiAgICBzdXBlcihlcnJvck1lc3NhZ2UsIG5ld0FyZ3MpXG4gICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzID0gdmFsaWRhdGlvbkVycm9yc1xuICB9XG5cbiAgZ2V0VW5oYW5kbGVkRXJyb3JzID0gKCkgPT4gdGhpcy52YWxpZGF0aW9uRXJyb3JzLmdldFZhbGlkYXRpb25FcnJvcnMoKS5maWx0ZXIoKHZhbGlkYXRpb25FcnJvcikgPT4gIXZhbGlkYXRpb25FcnJvci5nZXRIYW5kbGVkKCkpXG4gIGdldFZhbGlkYXRpb25FcnJvcnMgPSAoKSA9PiBkaWdnKHRoaXMsIFwidmFsaWRhdGlvbkVycm9yc1wiKVxuXG4gIGhhc1VuaGFuZGxlZEVycm9ycygpIHtcbiAgICBjb25zdCB1bmhhbmRsZWRFcnJvciA9IHRoaXMudmFsaWRhdGlvbkVycm9ycy5nZXRWYWxpZGF0aW9uRXJyb3JzKCkuZmluZCgodmFsaWRhdGlvbkVycm9yKSA9PiAhdmFsaWRhdGlvbkVycm9yLmdldEhhbmRsZWQoKSlcblxuICAgIHJldHVybiBCb29sZWFuKHVuaGFuZGxlZEVycm9yKVxuICB9XG5cbiAgaGFzVmFsaWRhdGlvbkVycm9yRm9yQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUpIHtcbiAgICBjb25zdCB1bmRlcnNjb3JlZEF0dHJpYnV0ZU5hbWUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoYXR0cmlidXRlTmFtZSlcbiAgICBjb25zdCBmb3VuZEF0dHJpYnV0ZSA9IHRoaXMudmFsaWRhdGlvbkVycm9ycy5nZXRWYWxpZGF0aW9uRXJyb3JzKCkuZmluZCgodmFsaWRhdGlvbkVycm9yKSA9PiB2YWxpZGF0aW9uRXJyb3IuZ2V0QXR0cmlidXRlTmFtZSgpID09IHVuZGVyc2NvcmVkQXR0cmlidXRlTmFtZSlcblxuICAgIGlmIChmb3VuZEF0dHJpYnV0ZSkgcmV0dXJuIHRydWVcblxuICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cblZhbGlkYXRpb25FcnJvci5hcGlNYWtlclR5cGUgPSBcIlZhbGlkYXRpb25FcnJvclwiXG5cbmV4cG9ydCBkZWZhdWx0IFZhbGlkYXRpb25FcnJvclxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxTQUFTLE1BQU0sY0FBYztBQUNwQyxPQUFPLEtBQUtDLFVBQVUsTUFBTSxZQUFZO0FBRXhDLE1BQU1DLGVBQWUsU0FBU0YsU0FBUyxDQUFDO0VBQ3RDRyxXQUFXQSxDQUFDQyxnQkFBZ0IsRUFBRUMsSUFBSSxFQUFFO0lBQ2xDLE1BQU1DLFlBQVksR0FBR0YsZ0JBQWdCLENBQUNHLHdCQUF3QixDQUFDLENBQUMsSUFBSUgsZ0JBQWdCLENBQUNJLGVBQWUsQ0FBQyxDQUFDO0lBQ3RHLE1BQU1DLGFBQWEsR0FBRztNQUFDQywrQkFBK0IsRUFBRTtJQUFLLENBQUM7SUFDOUQsTUFBTUMsT0FBTyxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRVIsSUFBSSxFQUFFSSxhQUFhLENBQUM7SUFFdEQsS0FBSyxDQUFDSCxZQUFZLEVBQUVLLE9BQU8sQ0FBQztJQUM1QixJQUFJLENBQUNQLGdCQUFnQixHQUFHQSxnQkFBZ0I7RUFDMUM7RUFFQVUsa0JBQWtCLEdBQUdBLENBQUEsS0FBTSxJQUFJLENBQUNWLGdCQUFnQixDQUFDVyxtQkFBbUIsQ0FBQyxDQUFDLENBQUNDLE1BQU0sQ0FBRUMsZUFBZSxJQUFLLENBQUNBLGVBQWUsQ0FBQ0MsVUFBVSxDQUFDLENBQUMsQ0FBQztFQUNqSUgsbUJBQW1CLEdBQUdBLENBQUEsS0FBTUksSUFBSSxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQztFQUUxREMsa0JBQWtCQSxDQUFBLEVBQUc7SUFDbkIsTUFBTUMsY0FBYyxHQUFHLElBQUksQ0FBQ2pCLGdCQUFnQixDQUFDVyxtQkFBbUIsQ0FBQyxDQUFDLENBQUNPLElBQUksQ0FBRUwsZUFBZSxJQUFLLENBQUNBLGVBQWUsQ0FBQ0MsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUUzSCxPQUFPSyxPQUFPLENBQUNGLGNBQWMsQ0FBQztFQUNoQztFQUVBRyw4QkFBOEJBLENBQUNDLGFBQWEsRUFBRTtJQUM1QyxNQUFNQyx3QkFBd0IsR0FBR3pCLFVBQVUsQ0FBQzBCLFVBQVUsQ0FBQ0YsYUFBYSxDQUFDO0lBQ3JFLE1BQU1HLGNBQWMsR0FBRyxJQUFJLENBQUN4QixnQkFBZ0IsQ0FBQ1csbUJBQW1CLENBQUMsQ0FBQyxDQUFDTyxJQUFJLENBQUVMLGVBQWUsSUFBS0EsZUFBZSxDQUFDWSxnQkFBZ0IsQ0FBQyxDQUFDLElBQUlILHdCQUF3QixDQUFDO0lBRTVKLElBQUlFLGNBQWMsRUFBRSxPQUFPLElBQUk7SUFFL0IsT0FBTyxLQUFLO0VBQ2Q7QUFDRjtBQUVBMUIsZUFBZSxDQUFDNEIsWUFBWSxHQUFHLGlCQUFpQjtBQUVoRCxlQUFlNUIsZUFBZSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,98 @@
1
+ import { digg, digs } from "diggerize";
2
+ import * as inflection from "inflection";
3
+ import modelClassRequire from "./model-class-require";
4
+ class ValidationError {
5
+ constructor(args) {
6
+ this.attributeName = digg(args, "attribute_name");
7
+ this.attributeType = digg(args, "attribute_type");
8
+ this.errorMessages = digg(args, "error_messages");
9
+ this.errorTypes = digg(args, "error_types");
10
+ this.inputName = args.input_name;
11
+ this.handled = false;
12
+ this.modelName = digg(args, "model_name");
13
+ }
14
+ matchesAttributeAndInputName(attributeName, inputName) {
15
+ if (this.getInputName() == inputName) return true;
16
+ if (!attributeName) return false;
17
+
18
+ // A relationship column ends with "_id". We should try for validation errors on an attribute without the "_id" as well
19
+ const attributeNameIdMatch = attributeName.match(/^(.+)Id$/);
20
+ if (!attributeNameIdMatch) return false;
21
+ const attributeNameWithoutId = inflection.underscore(attributeNameIdMatch[1]);
22
+ const attributeUnderScoreName = inflection.underscore(attributeName);
23
+ const inputNameWithoutId = inputName.replace(`[${attributeUnderScoreName}]`, `[${attributeNameWithoutId}]`);
24
+ if (this.getInputName() == inputNameWithoutId) return true;
25
+ return false;
26
+ }
27
+ getAttributeName = () => digg(this, "attributeName");
28
+ getErrorMessages = () => digg(this, "errorMessages");
29
+ getFullErrorMessages() {
30
+ const {
31
+ attributeType
32
+ } = digs(this, "attributeType");
33
+ if (attributeType == "base") {
34
+ return this.getErrorMessages();
35
+ } else {
36
+ const fullErrorMessages = [];
37
+ for (const errorMessage of this.getErrorMessages()) {
38
+ const attributeHumanName = this.getModelClass().humanAttributeName(this.getAttributeName());
39
+ fullErrorMessages.push(`${attributeHumanName} ${errorMessage}`);
40
+ }
41
+ return fullErrorMessages;
42
+ }
43
+ }
44
+ getHandled = () => digg(this, "handled");
45
+ getInputName = () => digg(this, "inputName");
46
+ getModelClass() {
47
+ const modelName = inflection.classify(digg(this, "modelName"));
48
+ return modelClassRequire(modelName);
49
+ }
50
+ setHandled() {
51
+ this.handled = true;
52
+ }
53
+ }
54
+ class ValidationErrors {
55
+ constructor(args) {
56
+ this.rootModel = digg(args, "model");
57
+ this.validationErrors = digg(args, "validationErrors").map(validationError => new ValidationError(validationError));
58
+ }
59
+ getErrorMessage() {
60
+ const fullErrorMessages = [];
61
+ for (const validationError of this.validationErrors) {
62
+ for (const fullErrorMessage of validationError.getFullErrorMessages()) {
63
+ fullErrorMessages.push(fullErrorMessage);
64
+ }
65
+ }
66
+ return fullErrorMessages.join(". ");
67
+ }
68
+ getValidationErrors = () => this.validationErrors;
69
+ getValidationErrorsForInput({
70
+ attribute,
71
+ inputName,
72
+ onMatchValidationError
73
+ }) {
74
+ const validationErrors = this.validationErrors.filter(validationError => {
75
+ if (onMatchValidationError) {
76
+ return onMatchValidationError(validationError);
77
+ } else {
78
+ return validationError.matchesAttributeAndInputName(attribute, inputName);
79
+ }
80
+ });
81
+ validationErrors.map(validationError => validationError.setHandled());
82
+ return validationErrors;
83
+ }
84
+ getUnhandledErrorMessage() {
85
+ const unhandledValidationErrors = this.validationErrors.filter(validationError => !validationError.getHandled());
86
+ if (unhandledValidationErrors.length > 0) {
87
+ const unhandledValidationErrorMessages = [];
88
+ for (const unhandledValidationError of unhandledValidationErrors) {
89
+ for (const errorMessage of unhandledValidationError.getFullErrorMessages()) {
90
+ unhandledValidationErrorMessages.push(errorMessage);
91
+ }
92
+ }
93
+ return unhandledValidationErrorMessages.join(". ");
94
+ }
95
+ }
96
+ }
97
+ export { ValidationError, ValidationErrors };
98
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWdnIiwiZGlncyIsImluZmxlY3Rpb24iLCJtb2RlbENsYXNzUmVxdWlyZSIsIlZhbGlkYXRpb25FcnJvciIsImNvbnN0cnVjdG9yIiwiYXJncyIsImF0dHJpYnV0ZU5hbWUiLCJhdHRyaWJ1dGVUeXBlIiwiZXJyb3JNZXNzYWdlcyIsImVycm9yVHlwZXMiLCJpbnB1dE5hbWUiLCJpbnB1dF9uYW1lIiwiaGFuZGxlZCIsIm1vZGVsTmFtZSIsIm1hdGNoZXNBdHRyaWJ1dGVBbmRJbnB1dE5hbWUiLCJnZXRJbnB1dE5hbWUiLCJhdHRyaWJ1dGVOYW1lSWRNYXRjaCIsIm1hdGNoIiwiYXR0cmlidXRlTmFtZVdpdGhvdXRJZCIsInVuZGVyc2NvcmUiLCJhdHRyaWJ1dGVVbmRlclNjb3JlTmFtZSIsImlucHV0TmFtZVdpdGhvdXRJZCIsInJlcGxhY2UiLCJnZXRBdHRyaWJ1dGVOYW1lIiwiZ2V0RXJyb3JNZXNzYWdlcyIsImdldEZ1bGxFcnJvck1lc3NhZ2VzIiwiZnVsbEVycm9yTWVzc2FnZXMiLCJlcnJvck1lc3NhZ2UiLCJhdHRyaWJ1dGVIdW1hbk5hbWUiLCJnZXRNb2RlbENsYXNzIiwiaHVtYW5BdHRyaWJ1dGVOYW1lIiwicHVzaCIsImdldEhhbmRsZWQiLCJjbGFzc2lmeSIsInNldEhhbmRsZWQiLCJWYWxpZGF0aW9uRXJyb3JzIiwicm9vdE1vZGVsIiwidmFsaWRhdGlvbkVycm9ycyIsIm1hcCIsInZhbGlkYXRpb25FcnJvciIsImdldEVycm9yTWVzc2FnZSIsImZ1bGxFcnJvck1lc3NhZ2UiLCJqb2luIiwiZ2V0VmFsaWRhdGlvbkVycm9ycyIsImdldFZhbGlkYXRpb25FcnJvcnNGb3JJbnB1dCIsImF0dHJpYnV0ZSIsIm9uTWF0Y2hWYWxpZGF0aW9uRXJyb3IiLCJmaWx0ZXIiLCJnZXRVbmhhbmRsZWRFcnJvck1lc3NhZ2UiLCJ1bmhhbmRsZWRWYWxpZGF0aW9uRXJyb3JzIiwibGVuZ3RoIiwidW5oYW5kbGVkVmFsaWRhdGlvbkVycm9yTWVzc2FnZXMiLCJ1bmhhbmRsZWRWYWxpZGF0aW9uRXJyb3IiXSwic291cmNlcyI6WyIuLi9zcmMvdmFsaWRhdGlvbi1lcnJvcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaWdnLCBkaWdzfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IG1vZGVsQ2xhc3NSZXF1aXJlIGZyb20gXCIuL21vZGVsLWNsYXNzLXJlcXVpcmVcIlxuXG5jbGFzcyBWYWxpZGF0aW9uRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihhcmdzKSB7XG4gICAgdGhpcy5hdHRyaWJ1dGVOYW1lID0gZGlnZyhhcmdzLCBcImF0dHJpYnV0ZV9uYW1lXCIpXG4gICAgdGhpcy5hdHRyaWJ1dGVUeXBlID0gZGlnZyhhcmdzLCBcImF0dHJpYnV0ZV90eXBlXCIpXG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzID0gZGlnZyhhcmdzLCBcImVycm9yX21lc3NhZ2VzXCIpXG4gICAgdGhpcy5lcnJvclR5cGVzID0gZGlnZyhhcmdzLCBcImVycm9yX3R5cGVzXCIpXG4gICAgdGhpcy5pbnB1dE5hbWUgPSBhcmdzLmlucHV0X25hbWVcbiAgICB0aGlzLmhhbmRsZWQgPSBmYWxzZVxuICAgIHRoaXMubW9kZWxOYW1lID0gZGlnZyhhcmdzLCBcIm1vZGVsX25hbWVcIilcbiAgfVxuXG4gIG1hdGNoZXNBdHRyaWJ1dGVBbmRJbnB1dE5hbWUoYXR0cmlidXRlTmFtZSwgaW5wdXROYW1lKSB7XG4gICAgaWYgKHRoaXMuZ2V0SW5wdXROYW1lKCkgPT0gaW5wdXROYW1lKSByZXR1cm4gdHJ1ZVxuICAgIGlmICghYXR0cmlidXRlTmFtZSkgcmV0dXJuIGZhbHNlXG5cbiAgICAvLyBBIHJlbGF0aW9uc2hpcCBjb2x1bW4gZW5kcyB3aXRoIFwiX2lkXCIuIFdlIHNob3VsZCB0cnkgZm9yIHZhbGlkYXRpb24gZXJyb3JzIG9uIGFuIGF0dHJpYnV0ZSB3aXRob3V0IHRoZSBcIl9pZFwiIGFzIHdlbGxcbiAgICBjb25zdCBhdHRyaWJ1dGVOYW1lSWRNYXRjaCA9IGF0dHJpYnV0ZU5hbWUubWF0Y2goL14oLispSWQkLylcbiAgICBpZiAoIWF0dHJpYnV0ZU5hbWVJZE1hdGNoKSByZXR1cm4gZmFsc2VcblxuICAgIGNvbnN0IGF0dHJpYnV0ZU5hbWVXaXRob3V0SWQgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoYXR0cmlidXRlTmFtZUlkTWF0Y2hbMV0pXG4gICAgY29uc3QgYXR0cmlidXRlVW5kZXJTY29yZU5hbWUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoYXR0cmlidXRlTmFtZSlcbiAgICBjb25zdCBpbnB1dE5hbWVXaXRob3V0SWQgPSBpbnB1dE5hbWUucmVwbGFjZShgWyR7YXR0cmlidXRlVW5kZXJTY29yZU5hbWV9XWAsIGBbJHthdHRyaWJ1dGVOYW1lV2l0aG91dElkfV1gKVxuXG4gICAgaWYgKHRoaXMuZ2V0SW5wdXROYW1lKCkgPT0gaW5wdXROYW1lV2l0aG91dElkKSByZXR1cm4gdHJ1ZVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBnZXRBdHRyaWJ1dGVOYW1lID0gKCkgPT4gZGlnZyh0aGlzLCBcImF0dHJpYnV0ZU5hbWVcIilcbiAgZ2V0RXJyb3JNZXNzYWdlcyA9ICgpID0+IGRpZ2codGhpcywgXCJlcnJvck1lc3NhZ2VzXCIpXG5cbiAgZ2V0RnVsbEVycm9yTWVzc2FnZXMoKSB7XG4gICAgY29uc3Qge2F0dHJpYnV0ZVR5cGV9ID0gZGlncyh0aGlzLCBcImF0dHJpYnV0ZVR5cGVcIilcblxuICAgIGlmIChhdHRyaWJ1dGVUeXBlID09IFwiYmFzZVwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRFcnJvck1lc3NhZ2VzKClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZnVsbEVycm9yTWVzc2FnZXMgPSBbXVxuXG4gICAgICBmb3IgKGNvbnN0IGVycm9yTWVzc2FnZSBvZiB0aGlzLmdldEVycm9yTWVzc2FnZXMoKSkge1xuICAgICAgICBjb25zdCBhdHRyaWJ1dGVIdW1hbk5hbWUgPSB0aGlzLmdldE1vZGVsQ2xhc3MoKS5odW1hbkF0dHJpYnV0ZU5hbWUodGhpcy5nZXRBdHRyaWJ1dGVOYW1lKCkpXG4gICAgICAgIGZ1bGxFcnJvck1lc3NhZ2VzLnB1c2goYCR7YXR0cmlidXRlSHVtYW5OYW1lfSAke2Vycm9yTWVzc2FnZX1gKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZnVsbEVycm9yTWVzc2FnZXNcbiAgICB9XG4gIH1cblxuICBnZXRIYW5kbGVkID0gKCkgPT4gZGlnZyh0aGlzLCBcImhhbmRsZWRcIilcbiAgZ2V0SW5wdXROYW1lID0gKCkgPT4gZGlnZyh0aGlzLCBcImlucHV0TmFtZVwiKVxuXG4gIGdldE1vZGVsQ2xhc3MoKSB7XG4gICAgY29uc3QgbW9kZWxOYW1lID0gaW5mbGVjdGlvbi5jbGFzc2lmeShkaWdnKHRoaXMsIFwibW9kZWxOYW1lXCIpKVxuXG4gICAgcmV0dXJuIG1vZGVsQ2xhc3NSZXF1aXJlKG1vZGVsTmFtZSlcbiAgfVxuXG4gIHNldEhhbmRsZWQoKSB7XG4gICAgdGhpcy5oYW5kbGVkID0gdHJ1ZVxuICB9XG59XG5cbmNsYXNzIFZhbGlkYXRpb25FcnJvcnMge1xuICBjb25zdHJ1Y3RvcihhcmdzKSB7XG4gICAgdGhpcy5yb290TW9kZWwgPSBkaWdnKGFyZ3MsIFwibW9kZWxcIilcbiAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMgPSBkaWdnKGFyZ3MsIFwidmFsaWRhdGlvbkVycm9yc1wiKS5tYXAoKHZhbGlkYXRpb25FcnJvcikgPT4gbmV3IFZhbGlkYXRpb25FcnJvcih2YWxpZGF0aW9uRXJyb3IpKVxuICB9XG5cbiAgZ2V0RXJyb3JNZXNzYWdlKCkge1xuICAgIGNvbnN0IGZ1bGxFcnJvck1lc3NhZ2VzID0gW11cblxuICAgIGZvciAoY29uc3QgdmFsaWRhdGlvbkVycm9yIG9mIHRoaXMudmFsaWRhdGlvbkVycm9ycykge1xuICAgICAgZm9yIChjb25zdCBmdWxsRXJyb3JNZXNzYWdlIG9mIHZhbGlkYXRpb25FcnJvci5nZXRGdWxsRXJyb3JNZXNzYWdlcygpKSB7XG4gICAgICAgIGZ1bGxFcnJvck1lc3NhZ2VzLnB1c2goZnVsbEVycm9yTWVzc2FnZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZnVsbEVycm9yTWVzc2FnZXMuam9pbihcIi4gXCIpXG4gIH1cblxuICBnZXRWYWxpZGF0aW9uRXJyb3JzID0gKCkgPT4gdGhpcy52YWxpZGF0aW9uRXJyb3JzXG5cbiAgZ2V0VmFsaWRhdGlvbkVycm9yc0ZvcklucHV0ICh7YXR0cmlidXRlLCBpbnB1dE5hbWUsIG9uTWF0Y2hWYWxpZGF0aW9uRXJyb3J9KSB7XG4gICAgY29uc3QgdmFsaWRhdGlvbkVycm9ycyA9IHRoaXMudmFsaWRhdGlvbkVycm9ycy5maWx0ZXIoKHZhbGlkYXRpb25FcnJvcikgPT4ge1xuICAgICAgaWYgKG9uTWF0Y2hWYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIG9uTWF0Y2hWYWxpZGF0aW9uRXJyb3IodmFsaWRhdGlvbkVycm9yKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRpb25FcnJvci5tYXRjaGVzQXR0cmlidXRlQW5kSW5wdXROYW1lKGF0dHJpYnV0ZSwgaW5wdXROYW1lKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICB2YWxpZGF0aW9uRXJyb3JzLm1hcCgodmFsaWRhdGlvbkVycm9yKSA9PiB2YWxpZGF0aW9uRXJyb3Iuc2V0SGFuZGxlZCgpKVxuXG4gICAgcmV0dXJuIHZhbGlkYXRpb25FcnJvcnNcbiAgfVxuXG4gIGdldFVuaGFuZGxlZEVycm9yTWVzc2FnZSAoKSB7XG4gICAgY29uc3QgdW5oYW5kbGVkVmFsaWRhdGlvbkVycm9ycyA9IHRoaXMudmFsaWRhdGlvbkVycm9ycy5maWx0ZXIoKHZhbGlkYXRpb25FcnJvcikgPT4gIXZhbGlkYXRpb25FcnJvci5nZXRIYW5kbGVkKCkpXG5cbiAgICBpZiAodW5oYW5kbGVkVmFsaWRhdGlvbkVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCB1bmhhbmRsZWRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlcyA9IFtdXG5cbiAgICAgIGZvciAoY29uc3QgdW5oYW5kbGVkVmFsaWRhdGlvbkVycm9yIG9mIHVuaGFuZGxlZFZhbGlkYXRpb25FcnJvcnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBlcnJvck1lc3NhZ2Ugb2YgdW5oYW5kbGVkVmFsaWRhdGlvbkVycm9yLmdldEZ1bGxFcnJvck1lc3NhZ2VzKCkpIHtcbiAgICAgICAgICB1bmhhbmRsZWRWYWxpZGF0aW9uRXJyb3JNZXNzYWdlcy5wdXNoKGVycm9yTWVzc2FnZSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdW5oYW5kbGVkVmFsaWRhdGlvbkVycm9yTWVzc2FnZXMuam9pbihcIi4gXCIpXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7XG4gIFZhbGlkYXRpb25FcnJvcixcbiAgVmFsaWRhdGlvbkVycm9yc1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxJQUFJLEVBQUVDLElBQUksUUFBTyxXQUFXO0FBQ3BDLE9BQU8sS0FBS0MsVUFBVSxNQUFNLFlBQVk7QUFDeEMsT0FBT0MsaUJBQWlCLE1BQU0sdUJBQXVCO0FBRXJELE1BQU1DLGVBQWUsQ0FBQztFQUNwQkMsV0FBV0EsQ0FBQ0MsSUFBSSxFQUFFO0lBQ2hCLElBQUksQ0FBQ0MsYUFBYSxHQUFHUCxJQUFJLENBQUNNLElBQUksRUFBRSxnQkFBZ0IsQ0FBQztJQUNqRCxJQUFJLENBQUNFLGFBQWEsR0FBR1IsSUFBSSxDQUFDTSxJQUFJLEVBQUUsZ0JBQWdCLENBQUM7SUFDakQsSUFBSSxDQUFDRyxhQUFhLEdBQUdULElBQUksQ0FBQ00sSUFBSSxFQUFFLGdCQUFnQixDQUFDO0lBQ2pELElBQUksQ0FBQ0ksVUFBVSxHQUFHVixJQUFJLENBQUNNLElBQUksRUFBRSxhQUFhLENBQUM7SUFDM0MsSUFBSSxDQUFDSyxTQUFTLEdBQUdMLElBQUksQ0FBQ00sVUFBVTtJQUNoQyxJQUFJLENBQUNDLE9BQU8sR0FB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
@@ -0,0 +1,29 @@
1
+ import React, { createContext, useContext, useMemo } from "react";
2
+ import ApiMakerConfig from "./config";
3
+ import memo from "set-state-compare/src/memo";
4
+ const ApiMakerContext = /*#__PURE__*/createContext();
5
+ const useApiMaker = () => {
6
+ const apiMakerContext = useContext(ApiMakerContext);
7
+ if (apiMakerContext) {
8
+ return apiMakerContext;
9
+ }
10
+ return {
11
+ config: ApiMakerConfig
12
+ };
13
+ };
14
+ const WithApiMaker = memo(({
15
+ children,
16
+ config,
17
+ ...restProps
18
+ }) => {
19
+ const restPropsKeys = Object.keys(restProps);
20
+ const value = useMemo(() => ({
21
+ config
22
+ }), [config]);
23
+ if (restPropsKeys.length > 0) throw new Error(`Unhandled props: ${restPropsKeys.join(", ")}`);
24
+ return /*#__PURE__*/React.createElement(ApiMakerContext.Provider, {
25
+ value: value
26
+ }, children);
27
+ });
28
+ export { useApiMaker, WithApiMaker };
29
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImNyZWF0ZUNvbnRleHQiLCJ1c2VDb250ZXh0IiwidXNlTWVtbyIsIkFwaU1ha2VyQ29uZmlnIiwibWVtbyIsIkFwaU1ha2VyQ29udGV4dCIsInVzZUFwaU1ha2VyIiwiYXBpTWFrZXJDb250ZXh0IiwiY29uZmlnIiwiV2l0aEFwaU1ha2VyIiwiY2hpbGRyZW4iLCJyZXN0UHJvcHMiLCJyZXN0UHJvcHNLZXlzIiwiT2JqZWN0Iiwia2V5cyIsInZhbHVlIiwibGVuZ3RoIiwiRXJyb3IiLCJqb2luIiwiY3JlYXRlRWxlbWVudCIsIlByb3ZpZGVyIl0sInNvdXJjZXMiOlsiLi4vc3JjL3dpdGgtYXBpLW1ha2VyLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IEFwaU1ha2VyQ29uZmlnIGZyb20gXCIuL2NvbmZpZ1wiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL21lbW9cIlxuXG5jb25zdCBBcGlNYWtlckNvbnRleHQgPSBjcmVhdGVDb250ZXh0KClcbmNvbnN0IHVzZUFwaU1ha2VyID0gKCkgPT4ge1xuICBjb25zdCBhcGlNYWtlckNvbnRleHQgPSB1c2VDb250ZXh0KEFwaU1ha2VyQ29udGV4dClcblxuICBpZiAoYXBpTWFrZXJDb250ZXh0KSB7XG4gICAgcmV0dXJuIGFwaU1ha2VyQ29udGV4dFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjb25maWc6IEFwaU1ha2VyQ29uZmlnXG4gIH1cbn1cblxuY29uc3QgV2l0aEFwaU1ha2VyID0gbWVtbygoe2NoaWxkcmVuLCBjb25maWcsIC4uLnJlc3RQcm9wc30pID0+IHtcbiAgY29uc3QgcmVzdFByb3BzS2V5cyA9IE9iamVjdC5rZXlzKHJlc3RQcm9wcylcbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKCgpID0+ICh7Y29uZmlnfSksIFtjb25maWddKVxuXG4gIGlmIChyZXN0UHJvcHNLZXlzLmxlbmd0aCA+IDApIHRocm93IG5ldyBFcnJvcihgVW5oYW5kbGVkIHByb3BzOiAke3Jlc3RQcm9wc0tleXMuam9pbihcIiwgXCIpfWApXG5cbiAgcmV0dXJuIChcbiAgICA8QXBpTWFrZXJDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9BcGlNYWtlckNvbnRleHQuUHJvdmlkZXI+XG4gIClcbn0pXG5cbmV4cG9ydCB7dXNlQXBpTWFrZXIsIFdpdGhBcGlNYWtlcn0iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLEtBQUssSUFBR0MsYUFBYSxFQUFFQyxVQUFVLEVBQUVDLE9BQU8sUUFBTyxPQUFPO0FBQy9ELE9BQU9DLGNBQWMsTUFBTSxVQUFVO0FBQ3JDLE9BQU9DLElBQUksTUFBTSw0QkFBNEI7QUFFN0MsTUFBTUMsZUFBZSxnQkFBR0wsYUFBYSxDQUFDLENBQUM7QUFDdkMsTUFBTU0sV0FBVyxHQUFHQSxDQUFBLEtBQU07RUFDeEIsTUFBTUMsZUFBZSxHQUFHTixVQUFVLENBQUNJLGVBQWUsQ0FBQztFQUVuRCxJQUFJRSxlQUFlLEVBQUU7SUFDbkIsT0FBT0EsZUFBZTtFQUN4QjtFQUVBLE9BQU87SUFDTEMsTUFBTSxFQUFFTDtFQUNWLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTU0sWUFBWSxHQUFHTCxJQUFJLENBQUMsQ0FBQztFQUFDTSxRQUFRO0VBQUVGLE1BQU07RUFBRSxHQUFHRztBQUFTLENBQUMsS0FBSztFQUM5RCxNQUFNQyxhQUFhLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDSCxTQUFTLENBQUM7RUFDNUMsTUFBTUksS0FBSyxHQUFHYixPQUFPLENBQUMsT0FBTztJQUFDTTtFQUFNLENBQUMsQ0FBQyxFQUFFLENBQUNBLE1BQU0sQ0FBQyxDQUFDO0VBRWpELElBQUlJLGFBQWEsQ0FBQ0ksTUFBTSxHQUFHLENBQUMsRUFBRSxNQUFNLElBQUlDLEtBQUssQ0FBQyxvQkFBb0JMLGFBQWEsQ0FBQ00sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7RUFFN0Ysb0JBQ0VuQixLQUFBLENBQUFvQixhQUFBLENBQUNkLGVBQWUsQ0FBQ2UsUUFBUTtJQUFDTCxLQUFLLEVBQUVBO0VBQU0sR0FDcENMLFFBQ3VCLENBQUM7QUFFL0IsQ0FBQyxDQUFDO0FBRUYsU0FBUUosV0FBVyxFQUFFRyxZQUFZIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,14 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ import { digg } from "diggerize";
3
+ import memo from "set-state-compare/src/memo";
4
+ import React from "react";
5
+ import useCollection from "./use-collection";
6
+ export default (WrappedComponent, withCollectionArgs) => memo(() => {
7
+ const useCollectionResult = useCollection(withCollectionArgs);
8
+ const models = digg(useCollectionResult, "models");
9
+ const modelsArgName = inflection.camelize(digg(withCollectionArgs.modelClass.modelClassData(), "pluralName"), true);
10
+ const forwardArgs = {};
11
+ forwardArgs[modelsArgName] = models;
12
+ return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, forwardArgs, this.props));
13
+ });
14
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWdnIiwibWVtbyIsIlJlYWN0IiwidXNlQ29sbGVjdGlvbiIsIldyYXBwZWRDb21wb25lbnQiLCJ3aXRoQ29sbGVjdGlvbkFyZ3MiLCJ1c2VDb2xsZWN0aW9uUmVzdWx0IiwibW9kZWxzIiwibW9kZWxzQXJnTmFtZSIsImluZmxlY3Rpb24iLCJjYW1lbGl6ZSIsIm1vZGVsQ2xhc3MiLCJtb2RlbENsYXNzRGF0YSIsImZvcndhcmRBcmdzIiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzIiwicHJvcHMiXSwic291cmNlcyI6WyIuLi9zcmMvd2l0aC1jb2xsZWN0aW9uLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2RpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9tZW1vXCJcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHVzZUNvbGxlY3Rpb24gZnJvbSBcIi4vdXNlLWNvbGxlY3Rpb25cIlxuXG5leHBvcnQgZGVmYXVsdCAoV3JhcHBlZENvbXBvbmVudCwgd2l0aENvbGxlY3Rpb25BcmdzKSA9PiBtZW1vKCgpID0+IHtcbiAgY29uc3QgdXNlQ29sbGVjdGlvblJlc3VsdCA9IHVzZUNvbGxlY3Rpb24od2l0aENvbGxlY3Rpb25BcmdzKVxuICBjb25zdCBtb2RlbHMgPSBkaWdnKHVzZUNvbGxlY3Rpb25SZXN1bHQsIFwibW9kZWxzXCIpXG4gIGNvbnN0IG1vZGVsc0FyZ05hbWUgPSBpbmZsZWN0aW9uLmNhbWVsaXplKGRpZ2cod2l0aENvbGxlY3Rpb25BcmdzLm1vZGVsQ2xhc3MubW9kZWxDbGFzc0RhdGEoKSwgXCJwbHVyYWxOYW1lXCIpLCB0cnVlKVxuICBjb25zdCBmb3J3YXJkQXJncyA9IHt9XG5cbiAgZm9yd2FyZEFyZ3NbbW9kZWxzQXJnTmFtZV0gPSBtb2RlbHNcblxuICByZXR1cm4gKFxuICAgIDxXcmFwcGVkQ29tcG9uZW50IHsuLi5mb3J3YXJkQXJnc30gey4uLnRoaXMucHJvcHN9IC8+XG4gIClcbn0pXG4iXSwibWFwcGluZ3MiOiI7QUFBQSxTQUFRQSxJQUFJLFFBQU8sV0FBVztBQUM5QixPQUFPQyxJQUFJLE1BQU0sNEJBQTRCO0FBQzdDLE9BQU9DLEtBQUssTUFBTSxPQUFPO0FBQ3pCLE9BQU9DLGFBQWEsTUFBTSxrQkFBa0I7QUFFNUMsZUFBZSxDQUFDQyxnQkFBZ0IsRUFBRUMsa0JBQWtCLEtBQUtKLElBQUksQ0FBQyxNQUFNO0VBQ2xFLE1BQU1LLG1CQUFtQixHQUFHSCxhQUFhLENBQUNFLGtCQUFrQixDQUFDO0VBQzdELE1BQU1FLE1BQU0sR0FBR1AsSUFBSSxDQUFDTSxtQkFBbUIsRUFBRSxRQUFRLENBQUM7RUFDbEQsTUFBTUUsYUFBYSxHQUFHQyxVQUFVLENBQUNDLFFBQVEsQ0FBQ1YsSUFBSSxDQUFDSyxrQkFBa0IsQ0FBQ00sVUFBVSxDQUFDQyxjQUFjLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLElBQUksQ0FBQztFQUNuSCxNQUFNQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO0VBRXRCQSxXQUFXLENBQUNMLGFBQWEsQ0FBQyxHQUFHRCxNQUFNO0VBRW5DLG9CQUNFTCxLQUFBLENBQUFZLGFBQUEsQ0FBQ1YsZ0JBQWdCLEVBQUFXLFFBQUEsS0FBS0YsV0FBVyxFQUFNLElBQUksQ0FBQ0csS0FBSyxDQUFHLENBQUM7QUFFekQsQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,10 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ import React from "react";
3
+ import useCurrentUser from "./use-current-user";
4
+ export default WrappedComponent => props => {
5
+ const currentUser = useCurrentUser();
6
+ return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, props, {
7
+ currentUser: currentUser
8
+ }));
9
+ };
10
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUN1cnJlbnRVc2VyIiwiV3JhcHBlZENvbXBvbmVudCIsInByb3BzIiwiY3VycmVudFVzZXIiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMiXSwic291cmNlcyI6WyIuLi9zcmMvd2l0aC1jdXJyZW50LXVzZXIuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHVzZUN1cnJlbnRVc2VyIGZyb20gXCIuL3VzZS1jdXJyZW50LXVzZXJcIlxuXG5leHBvcnQgZGVmYXVsdCAoV3JhcHBlZENvbXBvbmVudCkgPT4gKHByb3BzKSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRVc2VyID0gdXNlQ3VycmVudFVzZXIoKVxuXG4gIHJldHVybiAoXG4gICAgPFdyYXBwZWRDb21wb25lbnQgey4uLnByb3BzfSBjdXJyZW50VXNlcj17Y3VycmVudFVzZXJ9IC8+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU9BLEtBQUssTUFBTSxPQUFPO0FBQ3pCLE9BQU9DLGNBQWMsTUFBTSxvQkFBb0I7QUFFL0MsZUFBZ0JDLGdCQUFnQixJQUFNQyxLQUFLLElBQUs7RUFDOUMsTUFBTUMsV0FBVyxHQUFHSCxjQUFjLENBQUMsQ0FBQztFQUVwQyxvQkFDRUQsS0FBQSxDQUFBSyxhQUFBLENBQUNILGdCQUFnQixFQUFBSSxRQUFBLEtBQUtILEtBQUs7SUFBRUMsV0FBVyxFQUFFQTtFQUFZLEVBQUUsQ0FBQztBQUU3RCxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,15 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ import memo from "set-state-compare/src/memo";
3
+ import React from "react";
4
+ import useModel from "./use-model";
5
+ export default (WrappedComponent, modelClass, givenArgs) => {
6
+ const ApiMakerWithModel = props => {
7
+ const args = Object.assign({
8
+ match: props.match
9
+ }, givenArgs);
10
+ const useModelResult = useModel(modelClass, args);
11
+ return /*#__PURE__*/React.createElement(WrappedComponent, _extends({}, useModelResult, props));
12
+ };
13
+ return memo(ApiMakerWithModel);
14
+ };
15
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtZW1vIiwiUmVhY3QiLCJ1c2VNb2RlbCIsIldyYXBwZWRDb21wb25lbnQiLCJtb2RlbENsYXNzIiwiZ2l2ZW5BcmdzIiwiQXBpTWFrZXJXaXRoTW9kZWwiLCJwcm9wcyIsImFyZ3MiLCJPYmplY3QiLCJhc3NpZ24iLCJtYXRjaCIsInVzZU1vZGVsUmVzdWx0IiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL3dpdGgtbW9kZWwuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvbWVtb1wiXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB1c2VNb2RlbCBmcm9tIFwiLi91c2UtbW9kZWxcIlxuXG5leHBvcnQgZGVmYXVsdCAoV3JhcHBlZENvbXBvbmVudCwgbW9kZWxDbGFzcywgZ2l2ZW5BcmdzKSA9PiB7XG4gIGNvbnN0IEFwaU1ha2VyV2l0aE1vZGVsID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgYXJncyA9IE9iamVjdC5hc3NpZ24oe21hdGNoOiBwcm9wcy5tYXRjaH0sIGdpdmVuQXJncylcbiAgICBjb25zdCB1c2VNb2RlbFJlc3VsdCA9IHVzZU1vZGVsKG1vZGVsQ2xhc3MsIGFyZ3MpXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFdyYXBwZWRDb21wb25lbnQgey4uLnVzZU1vZGVsUmVzdWx0fSB7Li4ucHJvcHN9IC8+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIG1lbW8oQXBpTWFrZXJXaXRoTW9kZWwpXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPQSxJQUFJLE1BQU0sNEJBQTRCO0FBQzdDLE9BQU9DLEtBQUssTUFBTSxPQUFPO0FBQ3pCLE9BQU9DLFFBQVEsTUFBTSxhQUFhO0FBRWxDLGVBQWUsQ0FBQ0MsZ0JBQWdCLEVBQUVDLFVBQVUsRUFBRUMsU0FBUyxLQUFLO0VBQzFELE1BQU1DLGlCQUFpQixHQUFJQyxLQUFLLElBQUs7SUFDbkMsTUFBTUMsSUFBSSxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FBQztNQUFDQyxLQUFLLEVBQUVKLEtBQUssQ0FBQ0k7SUFBSyxDQUFDLEVBQUVOLFNBQVMsQ0FBQztJQUMzRCxNQUFNTyxjQUFjLEdBQUdWLFFBQVEsQ0FBQ0UsVUFBVSxFQUFFSSxJQUFJLENBQUM7SUFFakQsb0JBQ0VQLEtBQUEsQ0FBQVksYUFBQSxDQUFDVixnQkFBZ0IsRUFBQVcsUUFBQSxLQUFLRixjQUFjLEVBQU1MLEtBQUssQ0FBRyxDQUFDO0VBRXZELENBQUM7RUFFRCxPQUFPUCxJQUFJLENBQUNNLGlCQUFpQixDQUFDO0FBQ2hDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,22 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ import React from "react";
3
+ import useRouter from "./use-router";
4
+ export default WrapperComponent => props => {
5
+ const {
6
+ path,
7
+ routes,
8
+ routeDefinitions,
9
+ ...restProps
10
+ } = props;
11
+ const {
12
+ match
13
+ } = useRouter({
14
+ path,
15
+ routes,
16
+ routeDefinitions
17
+ });
18
+ return /*#__PURE__*/React.createElement(WrapperComponent, _extends({
19
+ match: match
20
+ }, restProps));
21
+ };
22
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZVJvdXRlciIsIldyYXBwZXJDb21wb25lbnQiLCJwcm9wcyIsInBhdGgiLCJyb3V0ZXMiLCJyb3V0ZURlZmluaXRpb25zIiwicmVzdFByb3BzIiwibWF0Y2giLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMiXSwic291cmNlcyI6WyIuLi9zcmMvd2l0aC1yb3V0ZXIuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHVzZVJvdXRlciBmcm9tIFwiLi91c2Utcm91dGVyXCJcblxuZXhwb3J0IGRlZmF1bHQgKFdyYXBwZXJDb21wb25lbnQpID0+IChwcm9wcykgPT4ge1xuICBjb25zdCB7cGF0aCwgcm91dGVzLCByb3V0ZURlZmluaXRpb25zLCAuLi5yZXN0UHJvcHN9ID0gcHJvcHNcbiAgY29uc3Qge21hdGNofSA9IHVzZVJvdXRlcih7cGF0aCwgcm91dGVzLCByb3V0ZURlZmluaXRpb25zfSlcblxuICByZXR1cm4gKFxuICAgIDxXcmFwcGVyQ29tcG9uZW50IG1hdGNoPXttYXRjaH0gey4uLnJlc3RQcm9wc30gLz5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBT0MsU0FBUyxNQUFNLGNBQWM7QUFFcEMsZUFBZ0JDLGdCQUFnQixJQUFNQyxLQUFLLElBQUs7RUFDOUMsTUFBTTtJQUFDQyxJQUFJO0lBQUVDLE1BQU07SUFBRUMsZ0JBQWdCO0lBQUUsR0FBR0M7RUFBUyxDQUFDLEdBQUdKLEtBQUs7RUFDNUQsTUFBTTtJQUFDSztFQUFLLENBQUMsR0FBR1AsU0FBUyxDQUFDO0lBQUNHLElBQUk7SUFBRUMsTUFBTTtJQUFFQztFQUFnQixDQUFDLENBQUM7RUFFM0Qsb0JBQ0VOLEtBQUEsQ0FBQVMsYUFBQSxDQUFDUCxnQkFBZ0IsRUFBQVEsUUFBQTtJQUFDRixLQUFLLEVBQUVBO0VBQU0sR0FBS0QsU0FBUyxDQUFHLENBQUM7QUFFckQsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
@@ -0,0 +1,17 @@
1
+ {
2
+ "platforms": [
3
+ "apple",
4
+ "android",
5
+ "web"
6
+ ],
7
+ "apple": {
8
+ "modules": [
9
+ "ApiMakerModule"
10
+ ]
11
+ },
12
+ "android": {
13
+ "modules": [
14
+ "expo.modules.api_maker.ApiMakerModule"
15
+ ]
16
+ }
17
+ }
@@ -0,0 +1,29 @@
1
+ require 'json'
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, '..', 'package.json')))
4
+
5
+ Pod::Spec.new do |s|
6
+ s.name = 'ApiMaker'
7
+ s.version = package['version']
8
+ s.summary = package['description']
9
+ s.description = package['description']
10
+ s.license = package['license']
11
+ s.author = package['author']
12
+ s.homepage = package['homepage']
13
+ s.platforms = {
14
+ :ios => '15.1',
15
+ :tvos => '15.1'
16
+ }
17
+ s.swift_version = '5.4'
18
+ s.source = { git: 'https://github.com/kaspernj/api_maker' }
19
+ s.static_framework = true
20
+
21
+ s.dependency 'ExpoModulesCore'
22
+
23
+ # Swift/Objective-C compatibility
24
+ s.pod_target_xcconfig = {
25
+ 'DEFINES_MODULE' => 'YES',
26
+ }
27
+
28
+ s.source_files = "**/*.{h,m,mm,swift,hpp,cpp}"
29
+ end
@@ -0,0 +1,48 @@
1
+ import ExpoModulesCore
2
+
3
+ public class ApiMakerModule: Module {
4
+ // Each module class must implement the definition function. The definition consists of components
5
+ // that describes the module's functionality and behavior.
6
+ // See https://docs.expo.dev/modules/module-api for more details about available components.
7
+ public func definition() -> ModuleDefinition {
8
+ // Sets the name of the module that JavaScript code will use to refer to the module. Takes a string as an argument.
9
+ // Can be inferred from module's class name, but it's recommended to set it explicitly for clarity.
10
+ // The module will be accessible from `requireNativeModule('ApiMaker')` in JavaScript.
11
+ Name("ApiMaker")
12
+
13
+ // Sets constant properties on the module. Can take a dictionary or a closure that returns a dictionary.
14
+ Constants([
15
+ "PI": Double.pi
16
+ ])
17
+
18
+ // Defines event names that the module can send to JavaScript.
19
+ Events("onChange")
20
+
21
+ // Defines a JavaScript synchronous function that runs the native code on the JavaScript thread.
22
+ Function("hello") {
23
+ return "Hello world! 👋"
24
+ }
25
+
26
+ // Defines a JavaScript function that always returns a Promise and whose native code
27
+ // is by default dispatched on the different thread than the JavaScript runtime runs on.
28
+ AsyncFunction("setValueAsync") { (value: String) in
29
+ // Send an event to JavaScript.
30
+ self.sendEvent("onChange", [
31
+ "value": value
32
+ ])
33
+ }
34
+
35
+ // Enables the module to be used as a native view. Definition components that are accepted as part of the
36
+ // view definition: Prop, Events.
37
+ View(ApiMakerView.self) {
38
+ // Defines a setter for the `url` prop.
39
+ Prop("url") { (view: ApiMakerView, url: URL) in
40
+ if view.webView.url != url {
41
+ view.webView.load(URLRequest(url: url))
42
+ }
43
+ }
44
+
45
+ Events("onLoad")
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,38 @@
1
+ import ExpoModulesCore
2
+ import WebKit
3
+
4
+ // This view will be used as a native component. Make sure to inherit from `ExpoView`
5
+ // to apply the proper styling (e.g. border radius and shadows).
6
+ class ApiMakerView: ExpoView {
7
+ let webView = WKWebView()
8
+ let onLoad = EventDispatcher()
9
+ var delegate: WebViewDelegate?
10
+
11
+ required init(appContext: AppContext? = nil) {
12
+ super.init(appContext: appContext)
13
+ clipsToBounds = true
14
+ delegate = WebViewDelegate { url in
15
+ self.onLoad(["url": url])
16
+ }
17
+ webView.navigationDelegate = delegate
18
+ addSubview(webView)
19
+ }
20
+
21
+ override func layoutSubviews() {
22
+ webView.frame = bounds
23
+ }
24
+ }
25
+
26
+ class WebViewDelegate: NSObject, WKNavigationDelegate {
27
+ let onUrlChange: (String) -> Void
28
+
29
+ init(onUrlChange: @escaping (String) -> Void) {
30
+ self.onUrlChange = onUrlChange
31
+ }
32
+
33
+ func webView(_ webView: WKWebView, didFinish navigation: WKNavigation) {
34
+ if let url = webView.url {
35
+ onUrlChange(url.absoluteString)
36
+ }
37
+ }
38
+ }
package/package.json CHANGED
@@ -1,46 +1,45 @@
1
1
  {
2
- "babel": {
3
- "presets": [
4
- [
5
- "@babel/preset-env",
6
- {
7
- "targets": {
8
- "node": "current"
9
- }
10
- }
11
- ],
12
- "@babel/preset-react"
13
- ],
14
- "plugins": [
15
- "@babel/plugin-proposal-class-properties"
16
- ]
17
- },
18
2
  "name": "@kaspernj/api-maker",
19
- "version": "1.0.2011",
20
- "type": "module",
21
- "description": "",
22
- "main": "index.js",
3
+ "version": "1.0.2013",
4
+ "description": "My new module",
5
+ "main": "build/index.js",
6
+ "scripts": {
7
+ "build": "babel src --out-dir build --extensions \".js,.jsx\" --source-maps inline",
8
+ "build-expo": "expo-module build",
9
+ "clean": "expo-module clean",
10
+ "lint": "expo-module lint",
11
+ "test": "expo-module test",
12
+ "prepare": "npm run clean && npm run build",
13
+ "prepublishOnly": "expo-module prepublishOnly",
14
+ "expo-module": "expo-module",
15
+ "open:ios": "xed example/ios",
16
+ "open:android": "open -a \"Android Studio\" example/android",
17
+ "eslint": "eslint --ext .js,.jsx",
18
+ "eslint-find-rules": "eslint-find-rules",
19
+ "watch": "babel src --out-dir build --extensions \".js,.jsx\" --source-maps inline --watch"
20
+ },
21
+ "keywords": [
22
+ "react-native",
23
+ "expo",
24
+ "api-maker",
25
+ "ApiMaker"
26
+ ],
23
27
  "repository": {
24
28
  "type": "git",
25
29
  "url": "git+https://github.com/kaspernj/api_maker.git"
26
30
  },
27
- "author": "kaspernj",
28
- "license": "ISC",
29
31
  "bugs": {
30
32
  "url": "https://github.com/kaspernj/api_maker/issues"
31
33
  },
32
- "homepage": "https://github.com/kaspernj/api_maker",
33
- "scripts": {
34
- "eslint": "eslint --ext .mjs,.js,.jsx",
35
- "eslint-find-rules": "eslint-find-rules",
36
- "test": "jest"
37
- },
34
+ "author": "kaspernj <kasper@diestoeckels.de> (github.com/kaspernj)",
35
+ "license": "MIT",
36
+ "homepage": "https://github.com/kaspernj/api_maker#readme",
38
37
  "dependencies": {
39
- "@rails/actioncable": ">= 6.1.0",
40
38
  "clone-deep": ">= 4.0.1",
41
- "debounce": ">= 1.2.1",
39
+ "debounce": ">= 2.0.0",
42
40
  "diggerize": ">= 1.0.5",
43
- "epic-locks": ">= 1.0.1",
41
+ "epic-locks": ">= 1.0.2",
42
+ "file-saver": "^2.0.5",
44
43
  "form-data-objectizer": ">= 1.0.0",
45
44
  "form-serialize": ">= 0.7.2",
46
45
  "format-number": ">= 3.0.0",
@@ -49,31 +48,35 @@
49
48
  "js-money": ">= 0.6.3",
50
49
  "numberable": ">= 1.0.0",
51
50
  "object-to-formdata": ">= 4.1.0",
51
+ "on-location-changed": ">= 1.0.18",
52
52
  "qs": ">= 6.9.3",
53
53
  "replaceall": ">= 0.1.6",
54
+ "set-state-compare": ">= 1.0.55",
55
+ "spark-md5": "^3.0.2",
56
+ "stacktrace-parser": "^0.1.10",
54
57
  "strftime": ">= 0.10.0",
55
58
  "uniqunize": "^1.0.1",
59
+ "url-parse": "^1.5.10",
56
60
  "wake-event": ">= 0.0.1"
57
61
  },
58
- "peerDependencies": {
59
- "prop-types": "^15.7.2",
60
- "prop-types-exact": ">= 1.2.0",
61
- "react": ">= 17.0.2",
62
- "react-test-renderer": "^17.0.1",
63
- "source-map": "^0.7.3",
64
- "stacktrace-parser": ">= 0.1.9"
65
- },
66
62
  "devDependencies": {
67
63
  "@babel/eslint-parser": "^7.16.3",
68
64
  "@babel/preset-env": "^7.12.11",
69
- "@babel/preset-react": "^7.12.10",
70
- "babel-jest": "^28.0.3",
65
+ "@babel/preset-react": "^7.26.3",
66
+ "babel-jest": "^29.0.1",
71
67
  "eslint": "^8.2.0",
72
- "eslint-find-rules": "^4.0.0",
73
- "eslint-plugin-jest": "^26.0.0",
68
+ "eslint-find-rules": "^5.0.0",
69
+ "eslint-plugin-jest": "^28.2.0",
74
70
  "eslint-plugin-react": "^7.23.2",
75
- "i18n-on-steroids": "^1.0.2",
76
- "jest": "^28.0.3",
77
- "jsdom": "^20.0.0"
71
+ "expo": "~52.0.0",
72
+ "expo-module-scripts": "^4.0.2",
73
+ "jest": "^29.0.1"
74
+ },
75
+ "peerDependencies": {
76
+ "expo": "*",
77
+ "i18n-on-steroids": "*",
78
+ "react": "*",
79
+ "react-native": "*",
80
+ "react-native-vector-icons": "*"
78
81
  }
79
82
  }