@kaspernj/api-maker 1.0.446 → 1.0.448

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 (357) hide show
  1. package/{.eslintrc.cjs → .eslintrc.js} +4 -0
  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/index.js +105 -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 +128 -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 +130 -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 +3 -0
  34. package/build/collection-loader.js +48 -0
  35. package/build/collection.js +279 -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 +53 -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 +109 -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-model-class.js +24 -0
  52. package/build/events.js +5 -0
  53. package/build/form.js +83 -0
  54. package/build/index.js +3 -0
  55. package/build/inputs/attachment.js +121 -0
  56. package/build/inputs/auto-submit.js +36 -0
  57. package/build/inputs/checkbox.js +145 -0
  58. package/build/inputs/checkboxes.js +111 -0
  59. package/build/inputs/id-for-component.js +15 -0
  60. package/build/inputs/input-wrapper.js +18 -0
  61. package/build/inputs/input.js +230 -0
  62. package/build/inputs/money.js +179 -0
  63. package/build/inputs/name-for-component.js +13 -0
  64. package/build/inputs/select.js +92 -0
  65. package/build/instance-of-class-name.js +23 -0
  66. package/build/key-value-store.js +53 -0
  67. package/build/link.js +68 -0
  68. package/build/logger.js +30 -0
  69. package/build/modal.js +37 -0
  70. package/build/model-class-require.js +13 -0
  71. package/build/model-events.js +30 -0
  72. package/build/model-name.js +28 -0
  73. package/build/model-prop-type.js +101 -0
  74. package/build/model-recipes-loader.js +32 -0
  75. package/build/model-recipes-model-loader.js +357 -0
  76. package/build/models-response-reader.js +40 -0
  77. package/build/models.js +8 -0
  78. package/build/money-formatter.js +77 -0
  79. package/build/not-loaded-error.js +2 -0
  80. package/build/params.js +60 -0
  81. package/build/preloaded.js +38 -0
  82. package/build/resize-observer.js +11 -0
  83. package/build/result.js +13 -0
  84. package/build/router/route.js +262 -0
  85. package/build/router/switch.js +72 -0
  86. package/build/router.js +57 -0
  87. package/build/routes-native.js +202 -0
  88. package/build/routes.js +50 -0
  89. package/build/run-last.js +35 -0
  90. package/build/serializer.js +63 -0
  91. package/build/services.js +20 -0
  92. package/build/session-status-updater.js +126 -0
  93. package/build/source-maps-loader.js +171 -0
  94. package/build/super-admin/config-reader.js +84 -0
  95. package/build/super-admin/edit-page/edit-attribute-checkbox.js +85 -0
  96. package/build/super-admin/edit-page/edit-attribute-content.js +54 -0
  97. package/build/super-admin/edit-page/edit-attribute-input.js +79 -0
  98. package/build/super-admin/edit-page/edit-attribute.js +76 -0
  99. package/build/super-admin/edit-page.js +120 -0
  100. package/build/super-admin/has-edit-config.js +12 -0
  101. package/build/super-admin/index-page.js +24 -0
  102. package/build/super-admin/index.js +180 -0
  103. package/build/super-admin/layout/header/index.js +151 -0
  104. package/build/super-admin/layout/index.js +109 -0
  105. package/build/super-admin/layout/menu/index.js +93 -0
  106. package/build/super-admin/layout/menu/menu-content.js +40 -0
  107. package/build/super-admin/layout/menu/menu-item.js +83 -0
  108. package/build/super-admin/layout/no-access.js +25 -0
  109. package/build/super-admin/model-class-table.js +61 -0
  110. package/build/super-admin/models.js +8 -0
  111. package/build/super-admin/show-nav.js +49 -0
  112. package/build/super-admin/show-page/belongs-to-attribute-row.js +28 -0
  113. package/build/super-admin/show-page/index.js +141 -0
  114. package/build/super-admin/show-reflection-actions.js +47 -0
  115. package/build/super-admin/show-reflection-link.js +46 -0
  116. package/build/super-admin/show-reflection-page.js +47 -0
  117. package/build/table/column-content.js +112 -0
  118. package/build/table/column-identifier.js +18 -0
  119. package/build/table/column-visible.js +7 -0
  120. package/build/table/components/column.js +20 -0
  121. package/build/table/components/flat-list.js +20 -0
  122. package/build/table/components/header.js +25 -0
  123. package/build/table/components/row.js +25 -0
  124. package/build/table/filters/attribute-element.js +43 -0
  125. package/build/table/filters/filter-form.js +392 -0
  126. package/build/table/filters/filter.js +89 -0
  127. package/build/table/filters/index.js +182 -0
  128. package/build/table/filters/load-search-modal.js +174 -0
  129. package/build/table/filters/reflection-element.js +36 -0
  130. package/build/table/filters/save-search-modal.js +86 -0
  131. package/build/table/filters/scope-element.js +41 -0
  132. package/build/table/header-column-content.js +67 -0
  133. package/build/table/header-column.js +144 -0
  134. package/build/table/header-select.js +104 -0
  135. package/build/table/model-callback-args.js +10 -0
  136. package/build/table/model-column.js +87 -0
  137. package/build/table/model-row.js +179 -0
  138. package/build/table/select-calculator.js +63 -0
  139. package/build/table/settings/column-row.js +97 -0
  140. package/build/table/settings/download-action.js +78 -0
  141. package/build/table/settings/index.js +92 -0
  142. package/build/table/table-settings.js +219 -0
  143. package/build/table/table.js +972 -0
  144. package/build/table/use-sorting.js +34 -0
  145. package/build/table/widths.js +75 -0
  146. package/build/table/worker-plugins-check-all-checkbox.js +125 -0
  147. package/build/table/worker-plugins-checkbox.js +115 -0
  148. package/build/translated-attributes.js +10 -0
  149. package/build/translated-collections.js +11 -0
  150. package/build/updated-attribute.js +76 -0
  151. package/build/url-encode.js +15 -0
  152. package/build/use-breakpoint.js +44 -0
  153. package/build/use-can-can.js +55 -0
  154. package/build/use-collection.js +225 -0
  155. package/build/use-created-event.js +52 -0
  156. package/build/use-current-user.js +73 -0
  157. package/build/use-destroyed-event.js +60 -0
  158. package/build/use-event-emitter.js +13 -0
  159. package/build/use-event-listener.js +16 -0
  160. package/build/use-input.js +140 -0
  161. package/build/use-model-event.js +60 -0
  162. package/build/use-model.js +169 -0
  163. package/build/use-resize-observer.js +23 -0
  164. package/build/use-router.js +102 -0
  165. package/build/use-screen-layout.js +39 -0
  166. package/build/use-updated-event.js +60 -0
  167. package/build/use-validation-errors.js +30 -0
  168. package/build/utils/card.js +51 -0
  169. package/build/utils/checkbox.js +48 -0
  170. package/build/utils/default-style.js +18 -0
  171. package/build/utils/modal.js +61 -0
  172. package/build/utils/text.js +18 -0
  173. package/build/validation-error.js +28 -0
  174. package/build/validation-errors.js +98 -0
  175. package/build/with-collection.js +13 -0
  176. package/build/with-current-user.js +9 -0
  177. package/build/with-model.js +14 -0
  178. package/build/with-router.js +21 -0
  179. package/expo-module.config.json +17 -0
  180. package/ios/ApiMaker.podspec +29 -0
  181. package/ios/ApiMakerModule.swift +48 -0
  182. package/ios/ApiMakerView.swift +38 -0
  183. package/package.json +35 -16
  184. package/src/{api.mjs → api.js} +5 -5
  185. package/src/{base-error.mjs → base-error.js} +1 -1
  186. package/src/base-model/{attribute.mjs → attribute.js} +1 -1
  187. package/src/base-model/{reflection.mjs → reflection.js} +1 -1
  188. package/src/{base-model.mjs → base-model.js} +14 -14
  189. package/src/bootstrap/attribute-row/index.jsx +2 -2
  190. package/src/bootstrap/attribute-rows.jsx +1 -1
  191. package/src/bootstrap/card.jsx +1 -1
  192. package/src/bootstrap/checkbox.jsx +1 -1
  193. package/src/bootstrap/checkboxes.jsx +1 -1
  194. package/src/bootstrap/input.jsx +1 -1
  195. package/src/bootstrap/paginate.jsx +2 -2
  196. package/src/bootstrap/sort-link.jsx +3 -3
  197. package/src/{cable-connection-pool.mjs → cable-connection-pool.js} +3 -3
  198. package/src/{cable-subscription-pool.mjs → cable-subscription-pool.js} +4 -4
  199. package/src/{cable-subscription.mjs → cable-subscription.js} +1 -1
  200. package/src/{can-can.mjs → can-can.js} +1 -1
  201. package/src/collection-loader.jsx +2 -2
  202. package/src/{collection.mjs → collection.js} +3 -3
  203. package/src/{commands-pool.mjs → commands-pool.js} +11 -11
  204. package/src/{custom-error.mjs → custom-error.js} +1 -1
  205. package/src/{deserializer.mjs → deserializer.js} +2 -2
  206. package/src/{destroy-error.mjs → destroy-error.js} +1 -1
  207. package/src/{devise.mjs → devise.js} +5 -9
  208. package/src/draggable-sort/index.jsx +3 -3
  209. package/src/draggable-sort/item.jsx +2 -2
  210. package/src/{error-logger.mjs → error-logger.js} +1 -1
  211. package/src/event-connection.jsx +1 -1
  212. package/src/event-model-class.jsx +1 -1
  213. package/src/form.jsx +1 -1
  214. package/src/index.js +3 -0
  215. package/src/inputs/attachment.jsx +2 -2
  216. package/src/inputs/checkbox.jsx +7 -6
  217. package/src/inputs/checkboxes.jsx +1 -1
  218. package/src/inputs/input-wrapper.jsx +1 -1
  219. package/src/inputs/input.jsx +8 -7
  220. package/src/inputs/money.jsx +3 -3
  221. package/src/inputs/select.jsx +1 -1
  222. package/src/{key-value-store.mjs → key-value-store.js} +1 -1
  223. package/src/link.jsx +2 -2
  224. package/src/modal.jsx +1 -1
  225. package/src/{model-class-require.mjs → model-class-require.js} +4 -2
  226. package/src/{model-events.mjs → model-events.js} +1 -1
  227. package/src/{model-name.mjs → model-name.js} +1 -1
  228. package/src/{model-recipes-loader.mjs → model-recipes-loader.js} +1 -1
  229. package/src/{model-recipes-model-loader.mjs → model-recipes-model-loader.js} +2 -2
  230. package/src/{models-response-reader.mjs → models-response-reader.js} +2 -2
  231. package/src/models.js +7 -0
  232. package/src/{models.mjs.erb → models.js.erb} +1 -1
  233. package/src/{params.mjs → params.js} +2 -2
  234. package/src/{preloaded.mjs → preloaded.js} +1 -1
  235. package/src/resize-observer.jsx +1 -1
  236. package/src/router/route.jsx +1 -1
  237. package/src/router/switch.jsx +1 -1
  238. package/src/router.jsx +1 -1
  239. package/src/{routes-native.mjs → routes-native.js} +1 -1
  240. package/src/{services.mjs → services.js} +1 -1
  241. package/src/{session-status-updater.mjs → session-status-updater.js} +3 -3
  242. package/src/{source-maps-loader.mjs → source-maps-loader.js} +1 -1
  243. package/src/super-admin/edit-page/edit-attribute-checkbox.jsx +1 -1
  244. package/src/super-admin/edit-page/edit-attribute-content.jsx +1 -1
  245. package/src/super-admin/edit-page/edit-attribute-input.jsx +1 -1
  246. package/src/super-admin/edit-page/edit-attribute.jsx +1 -1
  247. package/src/super-admin/edit-page.jsx +2 -2
  248. package/src/super-admin/has-edit-config.js +1 -1
  249. package/src/super-admin/index-page.jsx +1 -1
  250. package/src/super-admin/index.jsx +7 -7
  251. package/src/super-admin/layout/header/index.jsx +2 -2
  252. package/src/super-admin/layout/index.jsx +3 -3
  253. package/src/super-admin/layout/menu/index.jsx +3 -3
  254. package/src/super-admin/layout/menu/menu-content.jsx +2 -2
  255. package/src/super-admin/layout/menu/{menu-item/index.jsx → menu-item.jsx} +5 -6
  256. package/src/super-admin/layout/no-access.jsx +2 -2
  257. package/src/super-admin/model-class-table.jsx +3 -3
  258. package/src/super-admin/models.js +1 -1
  259. package/src/super-admin/show-nav.jsx +2 -2
  260. package/src/super-admin/show-page/belongs-to-attribute-row.jsx +1 -1
  261. package/src/super-admin/show-page/index.jsx +2 -2
  262. package/src/super-admin/show-reflection-actions.jsx +1 -1
  263. package/src/super-admin/show-reflection-link.jsx +1 -1
  264. package/src/super-admin/show-reflection-page.jsx +1 -1
  265. package/src/table/column-content.jsx +1 -1
  266. package/src/table/filters/filter-form.jsx +1 -1
  267. package/src/table/filters/index.jsx +5 -3
  268. package/src/table/filters/load-search-modal.jsx +6 -4
  269. package/src/table/filters/save-search-modal.jsx +4 -4
  270. package/src/table/header-select.jsx +1 -1
  271. package/src/table/model-column.jsx +1 -1
  272. package/src/table/model-row.jsx +2 -2
  273. package/src/table/{select-calculator.mjs → select-calculator.js} +1 -1
  274. package/src/table/settings/column-row.jsx +2 -2
  275. package/src/table/settings/download-action.jsx +3 -3
  276. package/src/table/settings/index.jsx +3 -3
  277. package/src/table/table-settings.js +5 -4
  278. package/src/table/table.jsx +8 -8
  279. package/src/table/{use-sorting.mjs → use-sorting.js} +1 -1
  280. package/src/table/worker-plugins-check-all-checkbox.jsx +2 -2
  281. package/src/table/worker-plugins-checkbox.jsx +2 -2
  282. package/src/{translated-collections.mjs → translated-collections.js} +1 -1
  283. package/src/updated-attribute.jsx +1 -1
  284. package/src/{use-breakpoint.mjs → use-breakpoint.js} +2 -2
  285. package/src/use-can-can.js +55 -0
  286. package/src/{use-collection.mjs → use-collection.js} +4 -4
  287. package/src/{use-created-event.mjs → use-created-event.js} +2 -2
  288. package/src/{use-current-user.mjs → use-current-user.js} +6 -5
  289. package/src/{use-destroyed-event.mjs → use-destroyed-event.js} +2 -2
  290. package/src/{use-input.mjs → use-input.js} +5 -5
  291. package/src/use-model-event.js +2 -2
  292. package/src/{use-model.mjs → use-model.js} +4 -4
  293. package/src/{use-resize-observer.mjs → use-resize-observer.js} +1 -1
  294. package/src/use-router.jsx +2 -2
  295. package/src/{use-updated-event.mjs → use-updated-event.js} +2 -2
  296. package/src/{use-validation-errors.mjs → use-validation-errors.js} +3 -3
  297. package/src/utils/checkbox.jsx +2 -2
  298. package/src/{validation-error.mjs → validation-error.js} +1 -1
  299. package/src/{validation-errors.mjs → validation-errors.js} +1 -1
  300. package/src/with-current-user.jsx +1 -1
  301. package/src/with-model.jsx +1 -1
  302. package/__tests__/base-model.test.mjs +0 -71
  303. package/__tests__/cable-connection-pool.test.mjs +0 -227
  304. package/__tests__/cable-subscription-pool.test.mjs +0 -27
  305. package/__tests__/can-can.test.mjs +0 -34
  306. package/__tests__/collection.test.mjs +0 -51
  307. package/__tests__/custom-error.test.mjs +0 -13
  308. package/__tests__/model-name.test.mjs +0 -34
  309. package/__tests__/model-prop-type.test.mjs +0 -113
  310. package/__tests__/params.test.mjs +0 -40
  311. package/__tests__/routes-native.test.mjs +0 -104
  312. package/__tests__/routes.test.mjs +0 -47
  313. package/__tests__/serializer.test.mjs +0 -30
  314. package/__tests__/support/task.mjs +0 -27
  315. package/__tests__/support/user.mjs +0 -32
  316. package/index.js +0 -1
  317. package/jest.config.js +0 -9
  318. package/src/event-created.jsx +0 -12
  319. package/src/event-destroyed.jsx +0 -25
  320. package/src/event-emitter-listener.jsx +0 -10
  321. package/src/event-listener.jsx +0 -25
  322. package/src/event-updated.jsx +0 -27
  323. package/src/super-admin/layout/menu/menu-item/style.scss +0 -10
  324. package/src/use-can-can.mjs +0 -48
  325. package/src/with-can-can.jsx +0 -12
  326. package/webpack.config.js +0 -15
  327. /package/src/{attribute-not-loaded-error.mjs → attribute-not-loaded-error.js} +0 -0
  328. /package/src/base-model/{column.mjs → column.js} +0 -0
  329. /package/src/base-model/{scope.mjs → scope.js} +0 -0
  330. /package/src/{cache-key-generator.mjs → cache-key-generator.js} +0 -0
  331. /package/src/{channels-consumer.mjs → channels-consumer.js} +0 -0
  332. /package/src/{command-submit-data.mjs → command-submit-data.js} +0 -0
  333. /package/src/{config.mjs → config.js} +0 -0
  334. /package/src/{data-set-to-attributes.mjs → data-set-to-attributes.js} +0 -0
  335. /package/src/draggable-sort/{controller.mjs → controller.js} +0 -0
  336. /package/src/{error-messages.mjs → error-messages.js} +0 -0
  337. /package/src/{events.mjs → events.js} +0 -0
  338. /package/src/inputs/{auto-submit.mjs → auto-submit.js} +0 -0
  339. /package/src/inputs/{id-for-component.mjs → id-for-component.js} +0 -0
  340. /package/src/inputs/{name-for-component.mjs → name-for-component.js} +0 -0
  341. /package/src/{instance-of-class-name.mjs → instance-of-class-name.js} +0 -0
  342. /package/src/{logger.mjs → logger.js} +0 -0
  343. /package/src/{model-prop-type.mjs → model-prop-type.js} +0 -0
  344. /package/src/{money-formatter.mjs → money-formatter.js} +0 -0
  345. /package/src/{not-loaded-error.mjs → not-loaded-error.js} +0 -0
  346. /package/src/{result.mjs → result.js} +0 -0
  347. /package/src/{routes.mjs → routes.js} +0 -0
  348. /package/src/{run-last.mjs → run-last.js} +0 -0
  349. /package/src/{serializer.mjs → serializer.js} +0 -0
  350. /package/src/table/{column-identifier.mjs → column-identifier.js} +0 -0
  351. /package/src/table/{column-visible.mjs → column-visible.js} +0 -0
  352. /package/src/table/{model-callback-args.mjs → model-callback-args.js} +0 -0
  353. /package/src/{translated-collections-data.mjs.erb → translated-collections-data.js.erb} +0 -0
  354. /package/src/{url-encode.mjs → url-encode.js} +0 -0
  355. /package/src/{use-event-emitter.mjs → use-event-emitter.js} +0 -0
  356. /package/src/{use-event-listener.mjs → use-event-listener.js} +0 -0
  357. /package/src/{use-screen-layout.mjs → use-screen-layout.js} +0 -0
@@ -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,24 +1,38 @@
1
1
  {
2
2
  "name": "@kaspernj/api-maker",
3
- "version": "1.0.446",
4
- "type": "module",
5
- "description": "",
6
- "main": "index.js",
3
+ "version": "1.0.448",
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
+ },
20
+ "keywords": [
21
+ "react-native",
22
+ "expo",
23
+ "api-maker",
24
+ "ApiMaker"
25
+ ],
7
26
  "repository": {
8
27
  "type": "git",
9
28
  "url": "git+https://github.com/kaspernj/api_maker.git"
10
29
  },
11
- "author": "kaspernj",
12
- "license": "ISC",
13
30
  "bugs": {
14
31
  "url": "https://github.com/kaspernj/api_maker/issues"
15
32
  },
16
- "homepage": "https://github.com/kaspernj/api_maker",
17
- "scripts": {
18
- "eslint": "eslint --ext .mjs,.js,.jsx",
19
- "eslint-find-rules": "eslint-find-rules",
20
- "test": "node --experimental-vm-modules ./node_modules/.bin/jest"
21
- },
33
+ "author": "kaspernj <kasper@diestoeckels.de> (github.com/kaspernj)",
34
+ "license": "MIT",
35
+ "homepage": "https://github.com/kaspernj/api_maker#readme",
22
36
  "dependencies": {
23
37
  "clone-deep": ">= 4.0.1",
24
38
  "debounce": ">= 2.0.0",
@@ -35,7 +49,6 @@
35
49
  "object-to-formdata": ">= 4.1.0",
36
50
  "on-location-changed": ">= 1.0.13",
37
51
  "qs": ">= 6.9.3",
38
- "react-native-draglist": "^3.8.0",
39
52
  "react-native-vector-icons": "^10.2.0",
40
53
  "replaceall": ">= 0.1.6",
41
54
  "set-state-compare": ">= 1.0.53",
@@ -48,14 +61,20 @@
48
61
  "devDependencies": {
49
62
  "@babel/eslint-parser": "^7.16.3",
50
63
  "@babel/preset-env": "^7.12.11",
51
- "@babel/preset-react": "^7.12.10",
64
+ "@babel/preset-react": "^7.26.3",
52
65
  "babel-jest": "^29.0.1",
53
66
  "eslint": "^8.2.0",
54
67
  "eslint-find-rules": "^4.0.0",
55
68
  "eslint-plugin-jest": "^28.2.0",
56
69
  "eslint-plugin-react": "^7.23.2",
70
+ "expo": "~52.0.0",
71
+ "expo-module-scripts": "^4.0.2",
57
72
  "i18n-on-steroids": "^1.0.15",
58
- "jest": "^29.0.1",
59
- "jsdom": "^25.0.0"
73
+ "jest": "^29.0.1"
74
+ },
75
+ "peerDependencies": {
76
+ "expo": "*",
77
+ "react": "*",
78
+ "react-native": "*"
60
79
  }
61
80
  }
@@ -1,10 +1,10 @@
1
- import config from "./config.mjs"
2
- import CustomError from "./custom-error.mjs"
1
+ import config from "./config"
2
+ import CustomError from "./custom-error"
3
3
  import FormDataObjectizer from "form-data-objectizer"
4
- import Logger from "./logger.mjs"
4
+ import Logger from "./logger"
5
5
  import qs from "qs"
6
- import SessionStatusUpdater from "./session-status-updater.mjs"
7
- import urlEncode from "./url-encode.mjs"
6
+ import SessionStatusUpdater from "./session-status-updater"
7
+ import urlEncode from "./url-encode"
8
8
 
9
9
  const logger = new Logger({name: "ApiMaker / Api"})
10
10
 
@@ -1,5 +1,5 @@
1
1
  import {dig, digg} from "diggerize"
2
- import errorMessages from "./error-messages.mjs"
2
+ import errorMessages from "./error-messages"
3
3
 
4
4
  export default class BaseError extends Error {
5
5
  static apiMakerType = "BaseError"
@@ -1,4 +1,4 @@
1
- import Column from "./column.mjs"
1
+ import Column from "./column"
2
2
  import {digg} from "diggerize"
3
3
 
4
4
  export default class ApiMakerBaseModelAttribute {
@@ -1,6 +1,6 @@
1
1
  import {digg} from "diggerize"
2
2
  import * as inflection from "inflection"
3
- import modelClassRequire from "../model-class-require.mjs"
3
+ import modelClassRequire from "../model-class-require"
4
4
 
5
5
  export default class ApiMakerBaseModelReflection {
6
6
  constructor(reflectionData) {
@@ -1,21 +1,21 @@
1
- import Attribute from "./base-model/attribute.mjs"
2
- import AttributeNotLoadedError from "./attribute-not-loaded-error.mjs"
3
- import CacheKeyGenerator from "./cache-key-generator.mjs"
4
- import Collection from "./collection.mjs"
5
- import CommandsPool from "./commands-pool.mjs"
6
- import Config from "./config.mjs"
7
- import CustomError from "./custom-error.mjs"
1
+ import Attribute from "./base-model/attribute"
2
+ import AttributeNotLoadedError from "./attribute-not-loaded-error"
3
+ import CacheKeyGenerator from "./cache-key-generator"
4
+ import Collection from "./collection"
5
+ import CommandsPool from "./commands-pool"
6
+ import Config from "./config"
7
+ import CustomError from "./custom-error"
8
8
  import {digg} from "diggerize"
9
9
  import FormDataObjectizer from "form-data-objectizer"
10
10
  import * as inflection from "inflection"
11
- import ModelName from "./model-name.mjs"
12
- import NotLoadedError from "./not-loaded-error.mjs"
11
+ import ModelName from "./model-name"
12
+ import NotLoadedError from "./not-loaded-error"
13
13
  import objectToFormData from "object-to-formdata"
14
- import Reflection from "./base-model/reflection.mjs"
15
- import Scope from "./base-model/scope.mjs"
16
- import Services from "./services.mjs"
17
- import ValidationError from "./validation-error.mjs"
18
- import {ValidationErrors} from "./validation-errors.mjs"
14
+ import Reflection from "./base-model/reflection"
15
+ import Scope from "./base-model/scope"
16
+ import Services from "./services"
17
+ import ValidationError from "./validation-error"
18
+ import {ValidationErrors} from "./validation-errors"
19
19
 
20
20
  const objectToUnderscore = (object) => {
21
21
  const newObject = {}
@@ -5,9 +5,9 @@ import memo from "set-state-compare/src/memo"
5
5
  import MoneyFormatter from "../../money-formatter"
6
6
  import PropTypes from "prop-types"
7
7
  import {useMemo} from "react"
8
- import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component.js"
8
+ import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component"
9
9
  import strftime from "strftime"
10
- import useI18n from "i18n-on-steroids/src/use-i18n.mjs"
10
+ import useI18n from "i18n-on-steroids/src/use-i18n"
11
11
 
12
12
  export default memo(shapeComponent(class ApiMakerBootstrapAttributeRow extends ShapeComponent {
13
13
  static defaultProps = {
@@ -3,7 +3,7 @@ import BaseComponent from "../base-component"
3
3
  import memo from "set-state-compare/src/memo"
4
4
  import PropTypes from "prop-types"
5
5
  import propTypesExact from "prop-types-exact"
6
- import {shapeComponent} from "set-state-compare/src/shape-component.js"
6
+ import {shapeComponent} from "set-state-compare/src/shape-component"
7
7
 
8
8
  export default memo(shapeComponent(class ApiMakerBootstrapAttributeRows extends BaseComponent {
9
9
  static defaultProps = {
@@ -4,7 +4,7 @@ import {digg, digs} from "diggerize"
4
4
  import memo from "set-state-compare/src/memo"
5
5
  import PropTypes from "prop-types"
6
6
  import {useRef} from "react"
7
- import {shapeComponent} from "set-state-compare/src/shape-component.js"
7
+ import {shapeComponent} from "set-state-compare/src/shape-component"
8
8
 
9
9
  export default memo(shapeComponent(class ApiMakerBootstrapCard extends BaseComponent {
10
10
  static defaultProps = {
@@ -1,4 +1,4 @@
1
- import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component.js"
1
+ import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component"
2
2
  import Checkbox from "../inputs/checkbox"
3
3
  import classNames from "classnames"
4
4
  import {digs} from "diggerize"
@@ -1,4 +1,4 @@
1
- import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component.js"
1
+ import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component"
2
2
  import {digs} from "diggerize"
3
3
  import {useForm} from "../form"
4
4
  import * as inflection from "inflection"
@@ -5,7 +5,7 @@ import InvalidFeedback from "./invalid-feedback"
5
5
  import Money from "../inputs/money"
6
6
  import PropTypes from "prop-types"
7
7
  import memo from "set-state-compare/src/memo"
8
- import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component.js"
8
+ import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component"
9
9
 
10
10
  const ApiMakerBootstrapInput = memo(shapeComponent(class ApiMakerBootstrapInput extends ShapeComponent {
11
11
  static propTypes = {
@@ -8,8 +8,8 @@ import qs from "qs"
8
8
  import {useMemo} from "react"
9
9
  import Text from "../utils/text"
10
10
  import Result from "../result"
11
- import {shapeComponent} from "set-state-compare/src/shape-component.js"
12
- import urlEncode from "../url-encode.mjs"
11
+ import {shapeComponent} from "set-state-compare/src/shape-component"
12
+ import urlEncode from "../url-encode"
13
13
 
14
14
  export default memo(shapeComponent(class ApiMakerBootstrapPaginate extends BaseComponent {
15
15
  static propTypes = propTypesExact({
@@ -5,9 +5,9 @@ import PropTypes from "prop-types"
5
5
  import qs from "qs"
6
6
  import memo from "set-state-compare/src/memo"
7
7
  import Text from "../utils/text"
8
- import {shapeComponent} from "set-state-compare/src/shape-component.js"
9
- import urlEncode from "../url-encode.mjs"
10
- import useSorting from "../table/use-sorting.mjs"
8
+ import {shapeComponent} from "set-state-compare/src/shape-component"
9
+ import urlEncode from "../url-encode"
10
+ import useSorting from "../table/use-sorting"
11
11
 
12
12
  import Link from "../link"
13
13
  import useQueryParams from "on-location-changed/src/use-query-params"
@@ -1,7 +1,7 @@
1
- import CableSubscriptionPool from "./cable-subscription-pool.mjs"
2
- import CableSubscription from "./cable-subscription.mjs"
1
+ import CableSubscriptionPool from "./cable-subscription-pool"
2
+ import CableSubscription from "./cable-subscription"
3
3
  import {dig} from "diggerize"
4
- import RunLast from "./run-last.mjs"
4
+ import RunLast from "./run-last"
5
5
 
6
6
  const shared = {}
7
7
 
@@ -1,9 +1,9 @@
1
- import ChannelsConsumer from "./channels-consumer.mjs"
2
- import CommandsPool from "./commands-pool.mjs"
3
- import Deserializer from "./deserializer.mjs"
1
+ import ChannelsConsumer from "./channels-consumer"
2
+ import CommandsPool from "./commands-pool"
3
+ import Deserializer from "./deserializer"
4
4
  import {digg} from "diggerize"
5
5
  import * as inflection from "inflection"
6
- import Logger from "./logger.mjs"
6
+ import Logger from "./logger"
7
7
 
8
8
  const logger = new Logger({name: "ApiMaker / CableSubscriptionPool"})
9
9
 
@@ -1,5 +1,5 @@
1
1
  import EventEmitter from "events"
2
- import Logger from "./logger.mjs"
2
+ import Logger from "./logger"
3
3
 
4
4
  const logger = new Logger({name: "ApiMaker / CableSubscription"})
5
5
 
@@ -2,7 +2,7 @@ import {digg} from "diggerize"
2
2
  import EventEmitter from "events"
3
3
  import * as inflection from "inflection"
4
4
  import {ReadersWriterLock} from "epic-locks"
5
- import Services from "./services.mjs"
5
+ import Services from "./services"
6
6
 
7
7
  const shared = {}
8
8
 
@@ -1,11 +1,11 @@
1
- import Collection from "./collection.mjs"
1
+ import Collection from "./collection"
2
2
  import {digg} from "diggerize"
3
3
  import memo from "set-state-compare/src/memo"
4
4
  import {useMemo} from "react"
5
5
  import PropTypes from "prop-types"
6
6
  import PropTypesExact from "prop-types-exact"
7
7
  import useCollection from "./use-collection"
8
- import useShape from "set-state-compare/src/use-shape.js"
8
+ import useShape from "set-state-compare/src/use-shape"
9
9
 
10
10
  const CollectionLoader = ({component, ...restProps}) => {
11
11
  const s = useShape(restProps)
@@ -1,10 +1,10 @@
1
1
  import cloneDeep from "clone-deep"
2
- import CommandsPool from "./commands-pool.mjs"
2
+ import CommandsPool from "./commands-pool"
3
3
  import {digg} from "diggerize"
4
4
  import * as inflection from "inflection"
5
5
  import {incorporate} from "incorporator"
6
- import modelClassRequire from "./model-class-require.mjs"
7
- import Result from "./result.mjs"
6
+ import modelClassRequire from "./model-class-require"
7
+ import Result from "./result"
8
8
 
9
9
  export default class ApiMakerCollection {
10
10
  static apiMakerType = "Collection"
@@ -1,16 +1,16 @@
1
- import Api from "./api.mjs"
2
- import CommandSubmitData from "./command-submit-data.mjs"
3
- import CustomError from "./custom-error.mjs"
4
- import DestroyError from "./destroy-error.mjs"
5
- import Deserializer from "./deserializer.mjs"
1
+ import Api from "./api"
2
+ import CommandSubmitData from "./command-submit-data"
3
+ import CustomError from "./custom-error"
4
+ import DestroyError from "./destroy-error"
5
+ import Deserializer from "./deserializer"
6
6
  import {dig, digg} from "diggerize"
7
- import events from "./events.mjs"
7
+ import events from "./events"
8
8
  import FormDataObjectizer from "form-data-objectizer"
9
- import RunLast from "./run-last.mjs"
10
- import Serializer from "./serializer.mjs"
11
- import SessionStatusUpdater from "./session-status-updater.mjs"
12
- import ValidationError from "./validation-error.mjs"
13
- import {ValidationErrors} from "./validation-errors.mjs"
9
+ import RunLast from "./run-last"
10
+ import Serializer from "./serializer"
11
+ import SessionStatusUpdater from "./session-status-updater"
12
+ import ValidationError from "./validation-error"
13
+ import {ValidationErrors} from "./validation-errors"
14
14
 
15
15
  const shared = {}
16
16
 
@@ -1,4 +1,4 @@
1
- import BaseError from "./base-error.mjs"
1
+ import BaseError from "./base-error"
2
2
 
3
3
  class CustomError extends BaseError {}
4
4
 
@@ -1,7 +1,7 @@
1
1
  import {digg} from "diggerize"
2
2
  import * as inflection from "inflection"
3
- import modelClassRequire from "./model-class-require.mjs"
4
- import ModelsResponseReader from "./models-response-reader.mjs"
3
+ import modelClassRequire from "./model-class-require"
4
+ import ModelsResponseReader from "./models-response-reader"
5
5
  import Money from "js-money"
6
6
 
7
7
  export default class ApiMakerDeserializer {
@@ -1,4 +1,4 @@
1
- import CustomError from "./custom-error.mjs"
1
+ import CustomError from "./custom-error"
2
2
 
3
3
  class DestroyError extends CustomError {}
4
4
 
@@ -1,10 +1,10 @@
1
- import CanCan from "./can-can.mjs"
2
- import Deserializer from "./deserializer.mjs"
1
+ import CanCan from "./can-can"
2
+ import Deserializer from "./deserializer"
3
3
  import {digg} from "diggerize"
4
- import events from "./events.mjs"
4
+ import events from "./events"
5
5
  import * as inflection from "inflection"
6
- import modelClassRequire from "./model-class-require.mjs"
7
- import Services from "./services.mjs"
6
+ import modelClassRequire from "./model-class-require"
7
+ import Services from "./services"
8
8
 
9
9
  const shared = {}
10
10
 
@@ -45,8 +45,6 @@ export default class ApiMakerDevise {
45
45
 
46
46
  if (Array.isArray(model)) model = model[0]
47
47
 
48
- await CanCan.current().resetAbilities()
49
-
50
48
  ApiMakerDevise.updateSession(model)
51
49
  events.emit("onDeviseSignIn", Object.assign({username}, args))
52
50
 
@@ -78,8 +76,6 @@ export default class ApiMakerDevise {
78
76
 
79
77
  const response = await Services.current().sendRequest("Devise::SignOut", {args})
80
78
 
81
- await CanCan.current().resetAbilities()
82
-
83
79
  // Cannot use the class because they would both import each other
84
80
  if (shared.apiMakerSessionStatusUpdater) {
85
81
  shared.apiMakerSessionStatusUpdater.updateSessionStatus()
@@ -1,13 +1,13 @@
1
1
  import {useMemo} from "react"
2
2
  import {Animated, PanResponder} from "react-native"
3
- import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component.js"
4
- import Controller from "./controller.mjs"
3
+ import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component"
4
+ import Controller from "./controller"
5
5
  import DraggableSortItem from "./item"
6
6
  import EventEmitter from "events"
7
7
  import memo from "set-state-compare/src/memo"
8
8
  import PropTypes from "prop-types"
9
9
  import propTypesExact from "prop-types-exact"
10
- import useEventEmitter from "../use-event-emitter.mjs"
10
+ import useEventEmitter from "../use-event-emitter"
11
11
 
12
12
  export default memo(shapeComponent(class DraggableSort extends ShapeComponent {
13
13
  static defaultProps = {
@@ -1,11 +1,11 @@
1
1
  import {useMemo} from "react"
2
2
  import {Animated, Easing, PanResponder} from "react-native"
3
- import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component.js"
3
+ import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component"
4
4
  import EventEmitter from "events"
5
5
  import memo from "set-state-compare/src/memo"
6
6
  import PropTypes from "prop-types"
7
7
  import propTypesExact from "prop-types-exact"
8
- import useEventEmitter from "../use-event-emitter.mjs"
8
+ import useEventEmitter from "../use-event-emitter"
9
9
 
10
10
  export default memo(shapeComponent(class DraggableSortItem extends ShapeComponent {
11
11
  static propTypes = propTypesExact({
@@ -1,5 +1,5 @@
1
1
  import {digg} from "diggerize"
2
- import SourceMapsLoader from "./source-maps-loader.mjs"
2
+ import SourceMapsLoader from "./source-maps-loader"
3
3
 
4
4
  export default class ErrorLogger {
5
5
  constructor () {
@@ -1,4 +1,4 @@
1
- import ModelEvents from "./model-events.mjs"
1
+ import ModelEvents from "./model-events"
2
2
  import PropTypes from "prop-types"
3
3
  import propTypesExact from "prop-types-exact"
4
4
  import React from "react"
@@ -1,4 +1,4 @@
1
- import ModelEvents from "./model-events.mjs"
1
+ import ModelEvents from "./model-events"
2
2
  import PropTypes from "prop-types"
3
3
  import propTypesExact from "prop-types-exact"
4
4
  import React from "react"
package/src/form.jsx CHANGED
@@ -4,7 +4,7 @@ import FormDataObjectizer from "form-data-objectizer"
4
4
  import memo from "set-state-compare/src/memo"
5
5
  import {Platform} from "react-native"
6
6
  import PropTypes from "prop-types"
7
- import {shapeComponent} from "set-state-compare/src/shape-component.js"
7
+ import {shapeComponent} from "set-state-compare/src/shape-component"
8
8
 
9
9
  const FormContext = createContext(null)
10
10
 
package/src/index.js ADDED
@@ -0,0 +1,3 @@
1
+ const stub = "Hello World"
2
+
3
+ export {stub}
@@ -1,8 +1,8 @@
1
1
  import BaseComponent from "../base-component"
2
- import {Input as ApiMakerInput} from "@kaspernj/api-maker/src/inputs/input"
2
+ import {Input as ApiMakerInput} from "@kaspernj/api-maker/build/inputs/input"
3
3
  import Checkbox from "./checkbox"
4
4
  import memo from "set-state-compare/src/memo"
5
- import {shapeComponent} from "set-state-compare/src/shape-component.js"
5
+ import {shapeComponent} from "set-state-compare/src/shape-component"
6
6
 
7
7
  export default memo(shapeComponent(class ApiMakerInputsAttachment extends BaseComponent {
8
8
  static propTypes = {
@@ -1,19 +1,20 @@
1
- import AutoSubmit from "./auto-submit.mjs"
1
+ import AutoSubmit from "./auto-submit"
2
2
  import BaseComponent from "../base-component"
3
3
  import {digg} from "diggerize"
4
- import EventUpdated from "../event-updated"
5
4
  import PropTypes from "prop-types"
6
5
  import memo from "set-state-compare/src/memo"
7
- import {shapeComponent} from "set-state-compare/src/shape-component.js"
6
+ import {shapeComponent} from "set-state-compare/src/shape-component"
8
7
  import useInput from "../use-input"
9
8
  import {useForm} from "../form"
10
9
  import {useMemo} from "react"
10
+ import useUpdatedEvent from "../use-updated-event"
11
11
 
12
12
  export default memo(shapeComponent(class ApiMakerInputsCheckbox extends BaseComponent {
13
13
  static defaultProps = {
14
14
  autoRefresh: false,
15
15
  autoSubmit: false,
16
16
  defaultValue: 1,
17
+ model: null,
17
18
  zeroInput: true
18
19
  }
19
20
 
@@ -33,6 +34,7 @@ export default memo(shapeComponent(class ApiMakerInputsCheckbox extends BaseComp
33
34
  }
34
35
 
35
36
  setup() {
37
+ const {autoRefresh, model} = this.p
36
38
  const {inputProps, restProps: useInputRestProps} = useInput({props: this.props, wrapperOptions: {type: "checkbox"}})
37
39
  const {defaultValue, name} = inputProps
38
40
 
@@ -47,6 +49,8 @@ export default memo(shapeComponent(class ApiMakerInputsCheckbox extends BaseComp
47
49
  this.tt.form?.setValue(name, defaultValue)
48
50
  }
49
51
  }, [])
52
+
53
+ useUpdatedEvent(model, this.tt.onModelUpdated, {active: Boolean(autoRefresh && model)})
50
54
  }
51
55
 
52
56
  render () {
@@ -69,9 +73,6 @@ export default memo(shapeComponent(class ApiMakerInputsCheckbox extends BaseComp
69
73
 
70
74
  return (
71
75
  <>
72
- {autoRefresh && model &&
73
- <EventUpdated model={model} onUpdated={this.tt.onModelUpdated} />
74
- }
75
76
  {zeroInput && inputProps.name &&
76
77
  <input defaultValue="0" name={inputProps.name} type="hidden" />
77
78
  }