@nlabs/metropolisjs 0.1.2 → 0.2.0

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 (329) hide show
  1. package/.github/copilot-instructions.md +167 -0
  2. package/AGENTS.md +13 -0
  3. package/CHANGELOG.md +112 -0
  4. package/GRAPHQL_VALIDATION_RESULTS.md +158 -0
  5. package/PERMISSION_GRAPHQL_INTEGRATION.md +293 -0
  6. package/PERMISSION_IMPLEMENTATION_SUMMARY.md +243 -0
  7. package/README.md +1123 -112
  8. package/SIGNIN_GRAPHQL_VALIDATION.md +125 -0
  9. package/VAULT_GRAPHQL_API_FINDINGS.md +312 -0
  10. package/docs/ACTIONS.md +63 -0
  11. package/docs/COLLECTIONS.md +1038 -0
  12. package/docs/CONNECTIONS.md +1367 -0
  13. package/docs/CRUD_INTEGRATION.md +702 -0
  14. package/examples/connections-usage.tsx +909 -0
  15. package/examples/content-actions-usage.ts +144 -0
  16. package/examples/crud-usage.tsx +847 -0
  17. package/examples/extensibility-usage.tsx +889 -0
  18. package/examples/i18n-import-examples.ts +86 -0
  19. package/examples/i18n-namespace-usage.ts +118 -0
  20. package/examples/i18next-singleton-demo.ts +187 -0
  21. package/examples/permission-system-usage.tsx +415 -0
  22. package/examples/project-details.tsx +397 -0
  23. package/examples/shared-i18n-usage.tsx +203 -0
  24. package/examples/signup-error-handling.ts +100 -0
  25. package/examples/translation-types.ts +86 -0
  26. package/examples/translation-usage.tsx +336 -0
  27. package/index.js +1 -0
  28. package/jest.config.mjs +28 -0
  29. package/lex.config.mjs +11 -2
  30. package/lib/__tests__/e2e/helpers/testGraphQLServer.d.ts +22 -0
  31. package/lib/__tests__/e2e/helpers/testGraphQLServer.d.ts.map +1 -0
  32. package/lib/__tests__/e2e/helpers/testGraphQLServer.js +197 -0
  33. package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.d.ts +3 -0
  34. package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.d.ts.map +1 -0
  35. package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.js +52 -0
  36. package/lib/actions/appActions/appActions.d.ts +29 -0
  37. package/lib/actions/appActions/appActions.d.ts.map +1 -0
  38. package/lib/actions/appActions/appActions.js +159 -0
  39. package/lib/actions/connectionActions/connectionActions.d.ts +19 -0
  40. package/lib/actions/connectionActions/connectionActions.d.ts.map +1 -0
  41. package/lib/actions/connectionActions/connectionActions.js +131 -0
  42. package/lib/actions/contentActions/contentActions.d.ts +34 -0
  43. package/lib/actions/contentActions/contentActions.d.ts.map +1 -0
  44. package/lib/actions/contentActions/contentActions.js +314 -0
  45. package/lib/actions/conversationActions/conversationActions.d.ts +30 -0
  46. package/lib/actions/conversationActions/conversationActions.d.ts.map +1 -0
  47. package/lib/actions/conversationActions/conversationActions.js +225 -0
  48. package/lib/actions/eventActions/eventActions.d.ts +27 -7
  49. package/lib/actions/eventActions/eventActions.d.ts.map +1 -0
  50. package/lib/actions/eventActions/eventActions.js +436 -2
  51. package/lib/actions/groupActions/groupActions.d.ts +30 -0
  52. package/lib/actions/groupActions/groupActions.d.ts.map +1 -0
  53. package/lib/actions/groupActions/groupActions.js +229 -0
  54. package/lib/actions/imageActions/imageActions.d.ts +16 -10
  55. package/lib/actions/imageActions/imageActions.d.ts.map +1 -0
  56. package/lib/actions/imageActions/imageActions.js +593 -2
  57. package/lib/actions/index.d.ts +21 -9
  58. package/lib/actions/index.d.ts.map +1 -0
  59. package/lib/actions/index.js +22 -2
  60. package/lib/actions/locationActions/locationActions.d.ts +11 -9
  61. package/lib/actions/locationActions/locationActions.d.ts.map +1 -0
  62. package/lib/actions/locationActions/locationActions.js +388 -2
  63. package/lib/actions/messageActions/messageActions.d.ts +16 -32
  64. package/lib/actions/messageActions/messageActions.d.ts.map +1 -0
  65. package/lib/actions/messageActions/messageActions.js +235 -2
  66. package/lib/actions/permissionActions/permissionActions.d.ts +34 -0
  67. package/lib/actions/permissionActions/permissionActions.d.ts.map +1 -0
  68. package/lib/actions/permissionActions/permissionActions.js +330 -0
  69. package/lib/actions/personaActions/personaActions.d.ts +65 -0
  70. package/lib/actions/personaActions/personaActions.d.ts.map +1 -0
  71. package/lib/actions/personaActions/personaActions.js +572 -0
  72. package/lib/actions/postActions/postActions.d.ts +12 -32
  73. package/lib/actions/postActions/postActions.d.ts.map +1 -0
  74. package/lib/actions/postActions/postActions.js +447 -2
  75. package/lib/actions/reactionActions/reactionActions.d.ts +13 -27
  76. package/lib/actions/reactionActions/reactionActions.d.ts.map +1 -0
  77. package/lib/actions/reactionActions/reactionActions.js +413 -2
  78. package/lib/actions/sseActions/sseActions.d.ts +1 -0
  79. package/lib/actions/sseActions/sseActions.d.ts.map +1 -0
  80. package/lib/actions/sseActions/sseActions.js +148 -2
  81. package/lib/actions/subscriptionActions/subscriptionActions.d.ts +24 -0
  82. package/lib/actions/subscriptionActions/subscriptionActions.d.ts.map +1 -0
  83. package/lib/actions/subscriptionActions/subscriptionActions.js +329 -0
  84. package/lib/actions/tagActions/tagActions.d.ts +13 -31
  85. package/lib/actions/tagActions/tagActions.d.ts.map +1 -0
  86. package/lib/actions/tagActions/tagActions.js +347 -2
  87. package/lib/actions/translationActions/translationActions.d.ts +38 -0
  88. package/lib/actions/translationActions/translationActions.d.ts.map +1 -0
  89. package/lib/actions/translationActions/translationActions.js +189 -0
  90. package/lib/actions/userActions/userActions.d.ts +42 -95
  91. package/lib/actions/userActions/userActions.d.ts.map +1 -0
  92. package/lib/actions/userActions/userActions.js +844 -2
  93. package/lib/actions/videoActions/videoActions.d.ts +41 -0
  94. package/lib/actions/videoActions/videoActions.d.ts.map +1 -0
  95. package/lib/actions/videoActions/videoActions.js +532 -0
  96. package/lib/actions/websocketActions/websocketActions.d.ts +20 -21
  97. package/lib/actions/websocketActions/websocketActions.d.ts.map +1 -0
  98. package/lib/actions/websocketActions/websocketActions.js +377 -2
  99. package/lib/adapters/appAdapter/appAdapter.d.ts +8 -0
  100. package/lib/adapters/appAdapter/appAdapter.d.ts.map +1 -0
  101. package/lib/adapters/appAdapter/appAdapter.js +90 -0
  102. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts +3 -2
  103. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts.map +1 -0
  104. package/lib/adapters/arangoAdapter/arangoAdapter.js +75 -2
  105. package/lib/adapters/contentAdapter/contentAdapter.d.ts +3 -2
  106. package/lib/adapters/contentAdapter/contentAdapter.d.ts.map +1 -0
  107. package/lib/adapters/contentAdapter/contentAdapter.js +107 -2
  108. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts +3 -2
  109. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts.map +1 -0
  110. package/lib/adapters/conversationAdapter/conversationAdapter.js +75 -2
  111. package/lib/adapters/eventAdapter/eventAdapter.d.ts +5 -2
  112. package/lib/adapters/eventAdapter/eventAdapter.d.ts.map +1 -0
  113. package/lib/adapters/eventAdapter/eventAdapter.js +162 -2
  114. package/lib/adapters/fileAdapter/fileAdapter.d.ts +3 -2
  115. package/lib/adapters/fileAdapter/fileAdapter.d.ts.map +1 -0
  116. package/lib/adapters/fileAdapter/fileAdapter.js +118 -2
  117. package/lib/adapters/groupAdapter/groupAdapter.d.ts +28 -0
  118. package/lib/adapters/groupAdapter/groupAdapter.d.ts.map +1 -0
  119. package/lib/adapters/groupAdapter/groupAdapter.js +66 -0
  120. package/lib/adapters/imageAdapter/imageAdapter.d.ts +9 -2
  121. package/lib/adapters/imageAdapter/imageAdapter.d.ts.map +1 -0
  122. package/lib/adapters/imageAdapter/imageAdapter.js +134 -2
  123. package/lib/adapters/index.d.ts +34 -16
  124. package/lib/adapters/index.d.ts.map +1 -0
  125. package/lib/adapters/index.js +19 -2
  126. package/lib/adapters/locationAdapter/locationAdapter.d.ts +3 -2
  127. package/lib/adapters/locationAdapter/locationAdapter.d.ts.map +1 -0
  128. package/lib/adapters/locationAdapter/locationAdapter.js +95 -2
  129. package/lib/adapters/messageAdapter/messageAdapter.d.ts +23 -19
  130. package/lib/adapters/messageAdapter/messageAdapter.d.ts.map +1 -0
  131. package/lib/adapters/messageAdapter/messageAdapter.js +82 -2
  132. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts +41 -0
  133. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts.map +1 -0
  134. package/lib/adapters/permissionAdapter/permissionAdapter.js +120 -0
  135. package/lib/adapters/personaAdapter/personaAdapter.d.ts +28 -2
  136. package/lib/adapters/personaAdapter/personaAdapter.d.ts.map +1 -0
  137. package/lib/adapters/personaAdapter/personaAdapter.js +161 -2
  138. package/lib/adapters/postAdapter/postAdapter.d.ts +3 -2
  139. package/lib/adapters/postAdapter/postAdapter.d.ts.map +1 -0
  140. package/lib/adapters/postAdapter/postAdapter.js +115 -2
  141. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts +5 -2
  142. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts.map +1 -0
  143. package/lib/adapters/reactionAdapter/reactionAdapter.js +81 -2
  144. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts +3 -2
  145. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts.map +1 -0
  146. package/lib/adapters/reaktorAdapter/reaktorAdapter.js +58 -2
  147. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts +3 -2
  148. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts.map +1 -0
  149. package/lib/adapters/sessionAdapter/sessionAdapter.js +80 -2
  150. package/lib/adapters/tagAdapter/tagAdapter.d.ts +3 -2
  151. package/lib/adapters/tagAdapter/tagAdapter.d.ts.map +1 -0
  152. package/lib/adapters/tagAdapter/tagAdapter.js +98 -2
  153. package/lib/adapters/translationAdapter/translationAdapter.d.ts +21 -0
  154. package/lib/adapters/translationAdapter/translationAdapter.d.ts.map +1 -0
  155. package/lib/adapters/translationAdapter/translationAdapter.js +55 -0
  156. package/lib/adapters/userAdapter/userAdapter.d.ts +18 -6
  157. package/lib/adapters/userAdapter/userAdapter.d.ts.map +1 -0
  158. package/lib/adapters/userAdapter/userAdapter.js +302 -2
  159. package/lib/adapters/videoAdapter/videoAdapter.d.ts +8 -0
  160. package/lib/adapters/videoAdapter/videoAdapter.d.ts.map +1 -0
  161. package/lib/adapters/videoAdapter/videoAdapter.js +194 -0
  162. package/lib/config/index.d.ts +19 -6
  163. package/lib/config/index.d.ts.map +1 -0
  164. package/lib/config/index.js +97 -2
  165. package/lib/constants/Collections.d.ts +44 -0
  166. package/lib/constants/Collections.d.ts.map +1 -0
  167. package/lib/constants/Collections.js +40 -0
  168. package/lib/constants/MetropolisConstants.d.ts +1 -0
  169. package/lib/constants/MetropolisConstants.d.ts.map +1 -0
  170. package/lib/constants/MetropolisConstants.js +15 -2
  171. package/lib/graphql/message.d.ts +1 -0
  172. package/lib/graphql/message.d.ts.map +1 -0
  173. package/lib/graphql/message.js +6 -4
  174. package/lib/graphql/notification.d.ts +1 -0
  175. package/lib/graphql/notification.d.ts.map +1 -0
  176. package/lib/graphql/notification.js +6 -4
  177. package/lib/graphql/session.d.ts +1 -0
  178. package/lib/graphql/session.d.ts.map +1 -0
  179. package/lib/graphql/session.js +4 -3
  180. package/lib/index.d.ts +45 -22
  181. package/lib/index.d.ts.map +1 -0
  182. package/lib/index.js +248 -2
  183. package/lib/stores/appStore.d.ts +1 -0
  184. package/lib/stores/appStore.d.ts.map +1 -0
  185. package/lib/stores/appStore.js +23 -2
  186. package/lib/stores/contentStore.d.ts +36 -0
  187. package/lib/stores/contentStore.d.ts.map +1 -0
  188. package/lib/stores/contentStore.js +139 -0
  189. package/lib/stores/conversationStore.d.ts +38 -0
  190. package/lib/stores/conversationStore.d.ts.map +1 -0
  191. package/lib/stores/conversationStore.js +117 -0
  192. package/lib/stores/eventStore.d.ts +4 -1
  193. package/lib/stores/eventStore.d.ts.map +1 -0
  194. package/lib/stores/eventStore.js +47 -2
  195. package/lib/stores/groupStore.d.ts +37 -0
  196. package/lib/stores/groupStore.d.ts.map +1 -0
  197. package/lib/stores/groupStore.js +68 -0
  198. package/lib/stores/imageStore.d.ts +6 -1
  199. package/lib/stores/imageStore.d.ts.map +1 -0
  200. package/lib/stores/imageStore.js +53 -2
  201. package/lib/stores/index.d.ts +20 -11
  202. package/lib/stores/index.d.ts.map +1 -0
  203. package/lib/stores/index.js +24 -2
  204. package/lib/stores/locationStore.d.ts +2 -1
  205. package/lib/stores/locationStore.d.ts.map +1 -0
  206. package/lib/stores/locationStore.js +42 -2
  207. package/lib/stores/messageStore.d.ts +19 -4
  208. package/lib/stores/messageStore.d.ts.map +1 -0
  209. package/lib/stores/messageStore.js +137 -2
  210. package/lib/stores/notificationStore.d.ts +33 -0
  211. package/lib/stores/notificationStore.d.ts.map +1 -0
  212. package/lib/stores/notificationStore.js +55 -0
  213. package/lib/stores/permissionStore.d.ts +37 -0
  214. package/lib/stores/permissionStore.d.ts.map +1 -0
  215. package/lib/stores/permissionStore.js +117 -0
  216. package/lib/stores/personaStore.d.ts +26 -0
  217. package/lib/stores/personaStore.d.ts.map +1 -0
  218. package/lib/stores/personaStore.js +118 -0
  219. package/lib/stores/postStore.d.ts +2 -1
  220. package/lib/stores/postStore.d.ts.map +1 -0
  221. package/lib/stores/postStore.js +53 -2
  222. package/lib/stores/reactionStore.d.ts +1 -0
  223. package/lib/stores/reactionStore.d.ts.map +1 -0
  224. package/lib/stores/reactionStore.js +28 -2
  225. package/lib/stores/subscriptionStore.d.ts +41 -0
  226. package/lib/stores/subscriptionStore.d.ts.map +1 -0
  227. package/lib/stores/subscriptionStore.js +85 -0
  228. package/lib/stores/tagStore.d.ts +8 -5
  229. package/lib/stores/tagStore.d.ts.map +1 -0
  230. package/lib/stores/tagStore.js +87 -2
  231. package/lib/stores/translationStore.d.ts +42 -0
  232. package/lib/stores/translationStore.d.ts.map +1 -0
  233. package/lib/stores/translationStore.js +122 -0
  234. package/lib/stores/userStore.d.ts +5 -4
  235. package/lib/stores/userStore.d.ts.map +1 -0
  236. package/lib/stores/userStore.js +319 -2
  237. package/lib/stores/videoStore.d.ts +39 -0
  238. package/lib/stores/videoStore.d.ts.map +1 -0
  239. package/lib/stores/videoStore.js +132 -0
  240. package/lib/stores/websocketStore.d.ts +1 -0
  241. package/lib/stores/websocketStore.d.ts.map +1 -0
  242. package/lib/stores/websocketStore.js +51 -2
  243. package/lib/types/apps.types.d.ts +17 -0
  244. package/lib/types/apps.types.d.ts.map +1 -0
  245. package/lib/types/apps.types.js +6 -0
  246. package/lib/types/common.types.d.ts +31 -0
  247. package/lib/types/common.types.d.ts.map +1 -0
  248. package/lib/types/common.types.js +6 -0
  249. package/lib/types/conversations.types.d.ts +17 -0
  250. package/lib/types/conversations.types.d.ts.map +1 -0
  251. package/lib/types/conversations.types.js +6 -0
  252. package/lib/types/edges.types.d.ts +38 -0
  253. package/lib/types/edges.types.d.ts.map +1 -0
  254. package/lib/types/edges.types.js +6 -0
  255. package/lib/types/groups.types.d.ts +19 -0
  256. package/lib/types/groups.types.d.ts.map +1 -0
  257. package/lib/types/groups.types.js +6 -0
  258. package/lib/types/index.d.ts +12 -0
  259. package/lib/types/index.d.ts.map +1 -0
  260. package/lib/types/index.js +12 -0
  261. package/lib/types/subscriptions.types.d.ts +32 -0
  262. package/lib/types/subscriptions.types.d.ts.map +1 -0
  263. package/lib/types/subscriptions.types.js +6 -0
  264. package/lib/types/videos.types.d.ts +61 -0
  265. package/lib/types/videos.types.d.ts.map +1 -0
  266. package/lib/types/videos.types.js +6 -0
  267. package/lib/utils/MetropolisProvider.d.ts +39 -15
  268. package/lib/utils/MetropolisProvider.d.ts.map +1 -0
  269. package/lib/utils/MetropolisProvider.js +31 -2
  270. package/lib/utils/actionFactory.d.ts +21 -19
  271. package/lib/utils/actionFactory.d.ts.map +1 -0
  272. package/lib/utils/actionFactory.js +95 -2
  273. package/lib/utils/api.d.ts +5 -4
  274. package/lib/utils/api.d.ts.map +1 -0
  275. package/lib/utils/api.js +252 -6
  276. package/lib/utils/app.d.ts +1 -0
  277. package/lib/utils/app.d.ts.map +1 -0
  278. package/lib/utils/app.js +15 -2
  279. package/lib/utils/baseActionFactory.d.ts +5 -23
  280. package/lib/utils/baseActionFactory.d.ts.map +1 -0
  281. package/lib/utils/baseActionFactory.js +72 -2
  282. package/lib/utils/configUtils.d.ts +11 -0
  283. package/lib/utils/configUtils.d.ts.map +1 -0
  284. package/lib/utils/configUtils.js +20 -0
  285. package/lib/utils/dateUtils.d.ts +1 -0
  286. package/lib/utils/dateUtils.d.ts.map +1 -0
  287. package/lib/utils/dateUtils.js +11 -2
  288. package/lib/utils/file.d.ts +3 -1
  289. package/lib/utils/file.d.ts.map +1 -0
  290. package/lib/utils/file.js +156 -2
  291. package/lib/utils/i18n.d.ts +7 -0
  292. package/lib/utils/i18n.d.ts.map +1 -0
  293. package/lib/utils/i18n.js +96 -0
  294. package/lib/utils/index.d.ts +20 -0
  295. package/lib/utils/index.d.ts.map +1 -0
  296. package/lib/utils/index.js +26 -0
  297. package/lib/utils/location.d.ts +4 -3
  298. package/lib/utils/location.d.ts.map +1 -0
  299. package/lib/utils/location.js +82 -2
  300. package/lib/utils/permissionUtils.d.ts +22 -0
  301. package/lib/utils/permissionUtils.d.ts.map +1 -0
  302. package/lib/utils/permissionUtils.js +72 -0
  303. package/lib/utils/requestCache.d.ts +8 -0
  304. package/lib/utils/requestCache.d.ts.map +1 -0
  305. package/lib/utils/requestCache.js +53 -0
  306. package/lib/utils/session.d.ts +14 -0
  307. package/lib/utils/session.d.ts.map +1 -0
  308. package/lib/utils/session.js +107 -0
  309. package/lib/utils/useConversationTyping.d.ts +26 -0
  310. package/lib/utils/useConversationTyping.d.ts.map +1 -0
  311. package/lib/utils/useConversationTyping.js +117 -0
  312. package/lib/utils/useMetropolis.d.ts +67 -12
  313. package/lib/utils/useMetropolis.d.ts.map +1 -0
  314. package/lib/utils/useMetropolis.js +311 -2
  315. package/lib/utils/useTranslations.d.ts +16 -0
  316. package/lib/utils/useTranslations.d.ts.map +1 -0
  317. package/lib/utils/useTranslations.js +105 -0
  318. package/lib/utils/validatorFactory.d.ts +3 -2
  319. package/lib/utils/validatorFactory.d.ts.map +1 -0
  320. package/lib/utils/validatorFactory.js +95 -2
  321. package/package.json +58 -17
  322. package/temp_signin.ts +73 -0
  323. package/lib/actions/profileActions/profileActions.d.ts +0 -50
  324. package/lib/actions/profileActions/profileActions.js +0 -2
  325. package/lib/adapters/profileAdapter/profileAdapter.d.ts +0 -32
  326. package/lib/adapters/profileAdapter/profileAdapter.js +0 -2
  327. package/lib/stores/profileStore.d.ts +0 -24
  328. package/lib/stores/profileStore.js +0 -2
  329. /package/{FACTORY_PATTERN_GUIDE.md → factoryPatternGuide.md} +0 -0
package/lib/utils/app.js CHANGED
@@ -1,2 +1,15 @@
1
- import{DateTime as m}from"luxon";const l=(e,n,i=0)=>{const o=e-8*i,r=Math.ceil(o/n),t=(o-8*(r-1)*2)/r;return{columns:r,size:t}},s=(e,n)=>m.local().diff(m.fromMillis(e),["minutes"]).minutes>n;export{l as getColumnSize,s as isExpired};
2
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2FwcC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtEYXRlVGltZX0gZnJvbSAnbHV4b24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtblNpemUge1xuICByZWFkb25seSBjb2x1bW5zOiBudW1iZXI7XG4gIHJlYWRvbmx5IHNpemU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGdldENvbHVtblNpemUgPSAoXG4gIHdpZHRoOiBudW1iZXIsXG4gIG1heEl0ZW1XaWR0aDogbnVtYmVyLFxuICBjb250YWluZXJQYWRkaW5nOiBudW1iZXIgPSAwXG4pOiBDb2x1bW5TaXplID0+IHtcbiAgY29uc3QgY29udGFpbmVyV2lkdGg6IG51bWJlciA9IHdpZHRoIC0gKDggKiBjb250YWluZXJQYWRkaW5nKTtcbiAgY29uc3QgY29sdW1uczogbnVtYmVyID0gTWF0aC5jZWlsKGNvbnRhaW5lcldpZHRoIC8gbWF4SXRlbVdpZHRoKTtcbiAgY29uc3Qgc2l6ZTogbnVtYmVyID0gKGNvbnRhaW5lcldpZHRoIC0gKDggKiAoY29sdW1ucyAtIDEpICogMikpIC8gY29sdW1ucztcblxuICByZXR1cm4ge2NvbHVtbnMsIHNpemV9O1xufTtcblxuZXhwb3J0IGNvbnN0IGlzRXhwaXJlZCA9IChleHBpcmVzOiBudW1iZXIsIGxpbWl0SW5NaW46IG51bWJlcik6IGJvb2xlYW4gPT5cbiAgRGF0ZVRpbWUubG9jYWwoKS5kaWZmKERhdGVUaW1lLmZyb21NaWxsaXMoZXhwaXJlcyksIFsnbWludXRlcyddKS5taW51dGVzID4gbGltaXRJbk1pbjtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBLE9BQVEsWUFBQUEsTUFBZSxRQU9oQixNQUFNQyxFQUFnQixDQUMzQkMsRUFDQUMsRUFDQUMsRUFBMkIsSUFDWixDQUNmLE1BQU1DLEVBQXlCSCxFQUFTLEVBQUlFLEVBQ3RDRSxFQUFrQixLQUFLLEtBQUtELEVBQWlCRixDQUFZLEVBQ3pESSxHQUFnQkYsRUFBa0IsR0FBS0MsRUFBVSxHQUFLLEdBQU1BLEVBRWxFLE1BQU8sQ0FBQyxRQUFBQSxFQUFTLEtBQUFDLENBQUksQ0FDdkIsRUFFYUMsRUFBWSxDQUFDQyxFQUFpQkMsSUFDekNWLEVBQVMsTUFBTSxFQUFFLEtBQUtBLEVBQVMsV0FBV1MsQ0FBTyxFQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsUUFBVUMiLAogICJuYW1lcyI6IFsiRGF0ZVRpbWUiLCAiZ2V0Q29sdW1uU2l6ZSIsICJ3aWR0aCIsICJtYXhJdGVtV2lkdGgiLCAiY29udGFpbmVyUGFkZGluZyIsICJjb250YWluZXJXaWR0aCIsICJjb2x1bW5zIiwgInNpemUiLCAiaXNFeHBpcmVkIiwgImV4cGlyZXMiLCAibGltaXRJbk1pbiJdCn0K
1
+ import { DateTime } from 'luxon';
2
+ export const getColumnSize = (width, maxItemWidth, containerPadding = 0)=>{
3
+ const containerWidth = width - 8 * containerPadding;
4
+ const columns = Math.ceil(containerWidth / maxItemWidth);
5
+ const size = (containerWidth - 8 * (columns - 1) * 2) / columns;
6
+ return {
7
+ columns,
8
+ size
9
+ };
10
+ };
11
+ export const isExpired = (expires, limitInMin)=>DateTime.local().diff(DateTime.fromMillis(expires), [
12
+ 'minutes'
13
+ ]).minutes > limitInMin;
14
+
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvYXBwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGF0ZVRpbWV9IGZyb20gJ2x1eG9uJztcblxuZXhwb3J0IGludGVyZmFjZSBDb2x1bW5TaXplIHtcbiAgcmVhZG9ubHkgY29sdW1uczogbnVtYmVyO1xuICByZWFkb25seSBzaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRDb2x1bW5TaXplID0gKFxuICB3aWR0aDogbnVtYmVyLFxuICBtYXhJdGVtV2lkdGg6IG51bWJlcixcbiAgY29udGFpbmVyUGFkZGluZzogbnVtYmVyID0gMFxuKTogQ29sdW1uU2l6ZSA9PiB7XG4gIGNvbnN0IGNvbnRhaW5lcldpZHRoOiBudW1iZXIgPSB3aWR0aCAtICg4ICogY29udGFpbmVyUGFkZGluZyk7XG4gIGNvbnN0IGNvbHVtbnM6IG51bWJlciA9IE1hdGguY2VpbChjb250YWluZXJXaWR0aCAvIG1heEl0ZW1XaWR0aCk7XG4gIGNvbnN0IHNpemU6IG51bWJlciA9IChjb250YWluZXJXaWR0aCAtICg4ICogKGNvbHVtbnMgLSAxKSAqIDIpKSAvIGNvbHVtbnM7XG5cbiAgcmV0dXJuIHtjb2x1bW5zLCBzaXplfTtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0V4cGlyZWQgPSAoZXhwaXJlczogbnVtYmVyLCBsaW1pdEluTWluOiBudW1iZXIpOiBib29sZWFuID0+XG4gIERhdGVUaW1lLmxvY2FsKCkuZGlmZihEYXRlVGltZS5mcm9tTWlsbGlzKGV4cGlyZXMpLCBbJ21pbnV0ZXMnXSkubWludXRlcyA+IGxpbWl0SW5NaW47XG4iXSwibmFtZXMiOlsiRGF0ZVRpbWUiLCJnZXRDb2x1bW5TaXplIiwid2lkdGgiLCJtYXhJdGVtV2lkdGgiLCJjb250YWluZXJQYWRkaW5nIiwiY29udGFpbmVyV2lkdGgiLCJjb2x1bW5zIiwiTWF0aCIsImNlaWwiLCJzaXplIiwiaXNFeHBpcmVkIiwiZXhwaXJlcyIsImxpbWl0SW5NaW4iLCJsb2NhbCIsImRpZmYiLCJmcm9tTWlsbGlzIiwibWludXRlcyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsUUFBUSxRQUFPLFFBQVE7QUFPL0IsT0FBTyxNQUFNQyxnQkFBZ0IsQ0FDM0JDLE9BQ0FDLGNBQ0FDLG1CQUEyQixDQUFDO0lBRTVCLE1BQU1DLGlCQUF5QkgsUUFBUyxJQUFJRTtJQUM1QyxNQUFNRSxVQUFrQkMsS0FBS0MsSUFBSSxDQUFDSCxpQkFBaUJGO0lBQ25ELE1BQU1NLE9BQWUsQUFBQ0osQ0FBQUEsaUJBQWtCLElBQUtDLENBQUFBLFVBQVUsQ0FBQSxJQUFLLENBQUMsSUFBS0E7SUFFbEUsT0FBTztRQUFDQTtRQUFTRztJQUFJO0FBQ3ZCLEVBQUU7QUFFRixPQUFPLE1BQU1DLFlBQVksQ0FBQ0MsU0FBaUJDLGFBQ3pDWixTQUFTYSxLQUFLLEdBQUdDLElBQUksQ0FBQ2QsU0FBU2UsVUFBVSxDQUFDSixVQUFVO1FBQUM7S0FBVSxFQUFFSyxPQUFPLEdBQUdKLFdBQVcifQ==
@@ -1,34 +1,16 @@
1
- /**
2
- * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
- * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
- */
5
- import type { BaseAdapterOptions } from './validatorFactory';
1
+ import type { BaseAdapterOptions } from './validatorFactory.js';
6
2
  import type { FluxFramework } from '@nlabs/arkhamjs';
7
3
  export interface BaseActionOptions<T extends BaseAdapterOptions = BaseAdapterOptions> {
8
4
  adapter?: (input: unknown, options?: T) => any;
9
5
  adapterOptions?: T;
10
6
  }
11
- /**
12
- * Base action factory that provides common functionality for all action creators.
13
- * This consolidates the initialization and update patterns used across action files.
14
- *
15
- * @param flux - The flux framework instance
16
- * @param defaultValidator - The default validation function
17
- * @param options - Action options including adapter and adapter options
18
- * @returns An object with validator, update functions, and common utilities
19
- *
20
- * @example
21
- * const { validator, updateAdapter, updateOptions, createMutationAction } = createBaseActions(
22
- * flux,
23
- * defaultUserValidator,
24
- * options
25
- * );
26
- */
27
7
  export declare const createBaseActions: <T extends BaseAdapterOptions>(flux: FluxFramework, defaultValidator: (input: unknown, options?: T) => any, options?: BaseActionOptions<T>) => {
28
8
  createMutationAction: <R = any>(mutationName: string, dataType: string, queryVariables: Record<string, any>, props: string[], successType: string, errorType: string, mutationFn: any) => (input?: unknown) => Promise<R>;
29
9
  createQueryAction: <R = any>(queryName: string, dataType: string, queryVariables: Record<string, any>, props: string[], successType: string, errorType: string, queryFn: any) => () => Promise<R>;
30
10
  flux: FluxFramework;
31
- updateAdapter: (adapter: (input: unknown, options?: T | undefined) => any) => void;
11
+ updateAdapter: (adapter: (input: unknown, options?: T) => any) => void;
32
12
  updateOptions: (options: T) => void;
33
- validator: (input: unknown, validatorOptions?: T | undefined) => any;
13
+ updateAdapterOptions: (options: T) => void;
14
+ validator: (input: unknown, validatorOptions?: T) => any;
34
15
  };
16
+ //# sourceMappingURL=baseActionFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseActionFactory.d.ts","sourceRoot":"","sources":["../../src/utils/baseActionFactory.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAEnD,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,kBAAkB,GAAG,kBAAkB;IAClF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC;IAC/C,cAAc,CAAC,EAAE,CAAC,CAAC;CACpB;AAED,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,kBAAkB,EAC5D,MAAM,aAAa,EACnB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,EACtD,UAAU,iBAAiB,CAAC,CAAC,CAAC;2BAWA,CAAC,sBACf,MAAM,YACV,MAAM,kBACA,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,SAC5B,MAAM,EAAE,eACF,MAAM,aACR,MAAM,cACL,GAAG,MACL,QAAQ,OAAO,KAAG,OAAO,CAAC,CAAC,CAAC;wBAgCb,CAAC,mBACf,MAAM,YACP,MAAM,kBACA,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,SAC5B,MAAM,EAAE,eACF,MAAM,aACR,MAAM,WACR,GAAG,WACC,OAAO,CAAC,CAAC,CAAC;;;;;;CAiC1B,CAAC"}
@@ -1,2 +1,72 @@
1
- import{createValidatorManager as R}from"./validatorFactory";const l=(t,A,c)=>{const{validator:g,updateAdapter:O,updateOptions:h}=R(A,c?.adapterOptions);return c?.adapter&&O(c.adapter),{createMutationAction:(o,n,s,i,p,y,d)=>async e=>{try{const r=e?{...s,[Object.keys(s)[0]]:{...s[Object.keys(s)[0]],value:g(e)}}:s,a=await d(t,o,n,r,i,{onSuccess:w=>{const m=w[n]?.[o]||{};return t.dispatch({[n.slice(0,-1)]:m,type:p})}}),u=Object.keys(a)[0];return a[u]}catch(r){throw t.dispatch({error:r,type:y}),r}},createQueryAction:(o,n,s,i,p,y,d)=>async()=>{try{const r=await d(t,o,n,s,i,{onSuccess:a=>{const u=a[n]?.[o]||{};return t.dispatch({[n.slice(0,-1)]:u,type:p})}}),k=Object.keys(r)[0];return r[k]}catch(e){throw t.dispatch({error:e,type:y}),e}},flux:t,updateAdapter:O,updateOptions:h,validator:g}};export{l as createBaseActions};
2
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2Jhc2VBY3Rpb25GYWN0b3J5LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuXG5pbXBvcnQge2NyZWF0ZVZhbGlkYXRvck1hbmFnZXJ9IGZyb20gJy4vdmFsaWRhdG9yRmFjdG9yeSc7XG5cbmltcG9ydCB0eXBlIHtCYXNlQWRhcHRlck9wdGlvbnN9IGZyb20gJy4vdmFsaWRhdG9yRmFjdG9yeSc7XG5pbXBvcnQgdHlwZSB7Rmx1eEZyYW1ld29ya30gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlQWN0aW9uT3B0aW9uczxUIGV4dGVuZHMgQmFzZUFkYXB0ZXJPcHRpb25zID0gQmFzZUFkYXB0ZXJPcHRpb25zPiB7XG4gIGFkYXB0ZXI/OiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBUKSA9PiBhbnk7XG4gIGFkYXB0ZXJPcHRpb25zPzogVDtcbn1cblxuLyoqXG4gKiBCYXNlIGFjdGlvbiBmYWN0b3J5IHRoYXQgcHJvdmlkZXMgY29tbW9uIGZ1bmN0aW9uYWxpdHkgZm9yIGFsbCBhY3Rpb24gY3JlYXRvcnMuXG4gKiBUaGlzIGNvbnNvbGlkYXRlcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHVwZGF0ZSBwYXR0ZXJucyB1c2VkIGFjcm9zcyBhY3Rpb24gZmlsZXMuXG4gKlxuICogQHBhcmFtIGZsdXggLSBUaGUgZmx1eCBmcmFtZXdvcmsgaW5zdGFuY2VcbiAqIEBwYXJhbSBkZWZhdWx0VmFsaWRhdG9yIC0gVGhlIGRlZmF1bHQgdmFsaWRhdGlvbiBmdW5jdGlvblxuICogQHBhcmFtIG9wdGlvbnMgLSBBY3Rpb24gb3B0aW9ucyBpbmNsdWRpbmcgYWRhcHRlciBhbmQgYWRhcHRlciBvcHRpb25zXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCB2YWxpZGF0b3IsIHVwZGF0ZSBmdW5jdGlvbnMsIGFuZCBjb21tb24gdXRpbGl0aWVzXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHsgdmFsaWRhdG9yLCB1cGRhdGVBZGFwdGVyLCB1cGRhdGVPcHRpb25zLCBjcmVhdGVNdXRhdGlvbkFjdGlvbiB9ID0gY3JlYXRlQmFzZUFjdGlvbnMoXG4gKiAgIGZsdXgsXG4gKiAgIGRlZmF1bHRVc2VyVmFsaWRhdG9yLFxuICogICBvcHRpb25zXG4gKiApO1xuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQmFzZUFjdGlvbnMgPSA8VCBleHRlbmRzIEJhc2VBZGFwdGVyT3B0aW9ucz4oXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIGRlZmF1bHRWYWxpZGF0b3I6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFQpID0+IGFueSxcbiAgb3B0aW9ucz86IEJhc2VBY3Rpb25PcHRpb25zPFQ+XG4pID0+IHtcbiAgY29uc3Qge3ZhbGlkYXRvciwgdXBkYXRlQWRhcHRlciwgdXBkYXRlT3B0aW9uc30gPSBjcmVhdGVWYWxpZGF0b3JNYW5hZ2VyKFxuICAgIGRlZmF1bHRWYWxpZGF0b3IsXG4gICAgb3B0aW9ucz8uYWRhcHRlck9wdGlvbnNcbiAgKTtcblxuICAvLyBJbml0aWFsaXplIHdpdGggY3VzdG9tIGFkYXB0ZXIgaWYgcHJvdmlkZWRcbiAgaWYob3B0aW9ucz8uYWRhcHRlcikge1xuICAgIHVwZGF0ZUFkYXB0ZXIob3B0aW9ucy5hZGFwdGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbXV0YXRpb24gYWN0aW9uIHdpdGggY29tbW9uIGVycm9yIGhhbmRsaW5nIGFuZCBkaXNwYXRjaCBwYXR0ZXJucy5cbiAgICogVGhpcyBjb25zb2xpZGF0ZXMgdGhlIHRyeS1jYXRjaCBhbmQgZGlzcGF0Y2ggbG9naWMgdXNlZCBhY3Jvc3MgYWN0aW9uIGZpbGVzLlxuICAgKlxuICAgKiBAcGFyYW0gbXV0YXRpb25OYW1lIC0gVGhlIEdyYXBoUUwgbXV0YXRpb24gbmFtZVxuICAgKiBAcGFyYW0gZGF0YVR5cGUgLSBUaGUgZGF0YSB0eXBlIGZvciB0aGUgbXV0YXRpb25cbiAgICogQHBhcmFtIHF1ZXJ5VmFyaWFibGVzIC0gVmFyaWFibGVzIGZvciB0aGUgR3JhcGhRTCBxdWVyeVxuICAgKiBAcGFyYW0gcHJvcHMgLSBQcm9wZXJ0aWVzIHRvIHNlbGVjdCBmcm9tIHRoZSByZXNwb25zZVxuICAgKiBAcGFyYW0gc3VjY2Vzc1R5cGUgLSBUaGUgc3VjY2VzcyBhY3Rpb24gdHlwZVxuICAgKiBAcGFyYW0gZXJyb3JUeXBlIC0gVGhlIGVycm9yIGFjdGlvbiB0eXBlXG4gICAqIEBwYXJhbSBtdXRhdGlvbkZuIC0gVGhlIG11dGF0aW9uIGZ1bmN0aW9uIChhcHBNdXRhdGlvbiwgcHVibGljTXV0YXRpb24sIGV0Yy4pXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCBleGVjdXRlcyB0aGUgbXV0YXRpb24gd2l0aCBwcm9wZXIgZXJyb3IgaGFuZGxpbmdcbiAgICovXG4gIGNvbnN0IGNyZWF0ZU11dGF0aW9uQWN0aW9uID0gPFIgPSBhbnk+KFxuICAgIG11dGF0aW9uTmFtZTogc3RyaW5nLFxuICAgIGRhdGFUeXBlOiBzdHJpbmcsXG4gICAgcXVlcnlWYXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgcHJvcHM6IHN0cmluZ1tdLFxuICAgIHN1Y2Nlc3NUeXBlOiBzdHJpbmcsXG4gICAgZXJyb3JUeXBlOiBzdHJpbmcsXG4gICAgbXV0YXRpb25GbjogYW55XG4gICkgPT4gYXN5bmMgKGlucHV0PzogdW5rbm93bik6IFByb21pc2U8Uj4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB2YXJpYWJsZXMgPSBpbnB1dCA/IHtcbiAgICAgICAgLi4ucXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFtPYmplY3Qua2V5cyhxdWVyeVZhcmlhYmxlcylbMF1dOiB7XG4gICAgICAgICAgLi4ucXVlcnlWYXJpYWJsZXNbT2JqZWN0LmtleXMocXVlcnlWYXJpYWJsZXMpWzBdXSxcbiAgICAgICAgICB2YWx1ZTogdmFsaWRhdG9yKGlucHV0KVxuICAgICAgICB9XG4gICAgICB9IDogcXVlcnlWYXJpYWJsZXM7XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZGF0YVtkYXRhVHlwZV0/LlttdXRhdGlvbk5hbWVdIHx8IHt9O1xuICAgICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7W2RhdGFUeXBlLnNsaWNlKDAsIC0xKV06IHJlc3VsdCwgdHlwZTogc3VjY2Vzc1R5cGV9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG11dGF0aW9uRm4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgIG11dGF0aW9uTmFtZSxcbiAgICAgICAgZGF0YVR5cGUsXG4gICAgICAgIHZhcmlhYmxlcyxcbiAgICAgICAgcHJvcHMsXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuXG4gICAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhyZXN1bHQpWzBdO1xuICAgICAgcmV0dXJuIHJlc3VsdFtrZXldIGFzIFI7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IGVycm9yVHlwZX0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcXVlcnkgYWN0aW9uIHdpdGggY29tbW9uIGVycm9yIGhhbmRsaW5nIGFuZCBkaXNwYXRjaCBwYXR0ZXJucy5cbiAgICogVGhpcyBjb25zb2xpZGF0ZXMgdGhlIHRyeS1jYXRjaCBhbmQgZGlzcGF0Y2ggbG9naWMgdXNlZCBhY3Jvc3MgYWN0aW9uIGZpbGVzLlxuICAgKlxuICAgKiBAcGFyYW0gcXVlcnlOYW1lIC0gVGhlIEdyYXBoUUwgcXVlcnkgbmFtZVxuICAgKiBAcGFyYW0gZGF0YVR5cGUgLSBUaGUgZGF0YSB0eXBlIGZvciB0aGUgcXVlcnlcbiAgICogQHBhcmFtIHF1ZXJ5VmFyaWFibGVzIC0gVmFyaWFibGVzIGZvciB0aGUgR3JhcGhRTCBxdWVyeVxuICAgKiBAcGFyYW0gcHJvcHMgLSBQcm9wZXJ0aWVzIHRvIHNlbGVjdCBmcm9tIHRoZSByZXNwb25zZVxuICAgKiBAcGFyYW0gc3VjY2Vzc1R5cGUgLSBUaGUgc3VjY2VzcyBhY3Rpb24gdHlwZVxuICAgKiBAcGFyYW0gZXJyb3JUeXBlIC0gVGhlIGVycm9yIGFjdGlvbiB0eXBlXG4gICAqIEBwYXJhbSBxdWVyeUZuIC0gVGhlIHF1ZXJ5IGZ1bmN0aW9uIChhcHBRdWVyeSwgcHVibGljUXVlcnksIGV0Yy4pXG4gICAqIEByZXR1cm5zIEEgZnVuY3Rpb24gdGhhdCBleGVjdXRlcyB0aGUgcXVlcnkgd2l0aCBwcm9wZXIgZXJyb3IgaGFuZGxpbmdcbiAgICovXG4gIGNvbnN0IGNyZWF0ZVF1ZXJ5QWN0aW9uID0gPFIgPSBhbnk+KFxuICAgIHF1ZXJ5TmFtZTogc3RyaW5nLFxuICAgIGRhdGFUeXBlOiBzdHJpbmcsXG4gICAgcXVlcnlWYXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgcHJvcHM6IHN0cmluZ1tdLFxuICAgIHN1Y2Nlc3NUeXBlOiBzdHJpbmcsXG4gICAgZXJyb3JUeXBlOiBzdHJpbmcsXG4gICAgcXVlcnlGbjogYW55XG4gICkgPT4gYXN5bmMgKCk6IFByb21pc2U8Uj4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGRhdGFbZGF0YVR5cGVdPy5bcXVlcnlOYW1lXSB8fCB7fTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe1tkYXRhVHlwZS5zbGljZSgwLCAtMSldOiByZXN1bHQsIHR5cGU6IHN1Y2Nlc3NUeXBlfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBxdWVyeUZuKFxuICAgICAgICBmbHV4LFxuICAgICAgICBxdWVyeU5hbWUsXG4gICAgICAgIGRhdGFUeXBlLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgcHJvcHMsXG4gICAgICAgIHtvblN1Y2Nlc3N9XG4gICAgICApO1xuXG4gICAgICBjb25zdCBrZXkgPSBPYmplY3Qua2V5cyhyZXN1bHQpWzBdO1xuICAgICAgcmV0dXJuIHJlc3VsdFtrZXldIGFzIFI7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IGVycm9yVHlwZX0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgY3JlYXRlTXV0YXRpb25BY3Rpb24sXG4gICAgY3JlYXRlUXVlcnlBY3Rpb24sXG4gICAgZmx1eCxcbiAgICB1cGRhdGVBZGFwdGVyLFxuICAgIHVwZGF0ZU9wdGlvbnMsXG4gICAgdmFsaWRhdG9yXG4gIH07XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUtBLE9BQVEsMEJBQUFBLE1BQTZCLHFCQTBCOUIsTUFBTUMsRUFBb0IsQ0FDL0JDLEVBQ0FDLEVBQ0FDLElBQ0csQ0FDSCxLQUFNLENBQUMsVUFBQUMsRUFBVyxjQUFBQyxFQUFlLGNBQUFDLENBQWEsRUFBSVAsRUFDaERHLEVBQ0FDLEdBQVMsY0FDWCxFQUdBLE9BQUdBLEdBQVMsU0FDVkUsRUFBY0YsRUFBUSxPQUFPLEVBcUd4QixDQUNMLHFCQXRGMkIsQ0FDM0JJLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLElBQ0csTUFBT0MsR0FBZ0MsQ0FDMUMsR0FBSSxDQUNGLE1BQU1DLEVBQVlELEVBQVEsQ0FDeEIsR0FBR0wsRUFDSCxDQUFDLE9BQU8sS0FBS0EsQ0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFHLENBQ2hDLEdBQUdBLEVBQWUsT0FBTyxLQUFLQSxDQUFjLEVBQUUsQ0FBQyxDQUFDLEVBQ2hELE1BQU9MLEVBQVVVLENBQUssQ0FDeEIsQ0FDRixFQUFJTCxFQU9FTyxFQUFTLE1BQU1ILEVBQ25CWixFQUNBTSxFQUNBQyxFQUNBTyxFQUNBTCxFQUNBLENBQUMsVUFYZ0JPLEdBQWMsQ0FDL0IsTUFBTUQsRUFBU0MsRUFBS1QsQ0FBUSxJQUFJRCxDQUFZLEdBQUssQ0FBQyxFQUNsRCxPQUFPTixFQUFLLFNBQVMsQ0FBQyxDQUFDTyxFQUFTLE1BQU0sRUFBRyxFQUFFLENBQUMsRUFBR1EsRUFBUSxLQUFNTCxDQUFXLENBQUMsQ0FDM0UsQ0FRWSxDQUNaLEVBRU1PLEVBQU0sT0FBTyxLQUFLRixDQUFNLEVBQUUsQ0FBQyxFQUNqQyxPQUFPQSxFQUFPRSxDQUFHLENBQ25CLE9BQVFDLEVBQU8sQ0FDYixNQUFBbEIsRUFBSyxTQUFTLENBQUMsTUFBQWtCLEVBQU8sS0FBTVAsQ0FBUyxDQUFDLEVBQ2hDTyxDQUNSLENBQ0YsRUFpREUsa0JBbEN3QixDQUN4QkMsRUFDQVosRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQVMsSUFDRyxTQUF3QixDQUMzQixHQUFJLENBTUYsTUFBTUwsRUFBUyxNQUFNSyxFQUNuQnBCLEVBQ0FtQixFQUNBWixFQUNBQyxFQUNBQyxFQUNBLENBQUMsVUFYZ0JPLEdBQWMsQ0FDL0IsTUFBTUQsRUFBU0MsRUFBS1QsQ0FBUSxJQUFJWSxDQUFTLEdBQUssQ0FBQyxFQUMvQyxPQUFPbkIsRUFBSyxTQUFTLENBQUMsQ0FBQ08sRUFBUyxNQUFNLEVBQUcsRUFBRSxDQUFDLEVBQUdRLEVBQVEsS0FBTUwsQ0FBVyxDQUFDLENBQzNFLENBUVksQ0FDWixFQUVNTyxFQUFNLE9BQU8sS0FBS0YsQ0FBTSxFQUFFLENBQUMsRUFDakMsT0FBT0EsRUFBT0UsQ0FBRyxDQUNuQixPQUFRQyxFQUFPLENBQ2IsTUFBQWxCLEVBQUssU0FBUyxDQUFDLE1BQUFrQixFQUFPLEtBQU1QLENBQVMsQ0FBQyxFQUNoQ08sQ0FDUixDQUNGLEVBS0UsS0FBQWxCLEVBQ0EsY0FBQUksRUFDQSxjQUFBQyxFQUNBLFVBQUFGLENBQ0YsQ0FDRiIsCiAgIm5hbWVzIjogWyJjcmVhdGVWYWxpZGF0b3JNYW5hZ2VyIiwgImNyZWF0ZUJhc2VBY3Rpb25zIiwgImZsdXgiLCAiZGVmYXVsdFZhbGlkYXRvciIsICJvcHRpb25zIiwgInZhbGlkYXRvciIsICJ1cGRhdGVBZGFwdGVyIiwgInVwZGF0ZU9wdGlvbnMiLCAibXV0YXRpb25OYW1lIiwgImRhdGFUeXBlIiwgInF1ZXJ5VmFyaWFibGVzIiwgInByb3BzIiwgInN1Y2Nlc3NUeXBlIiwgImVycm9yVHlwZSIsICJtdXRhdGlvbkZuIiwgImlucHV0IiwgInZhcmlhYmxlcyIsICJyZXN1bHQiLCAiZGF0YSIsICJrZXkiLCAiZXJyb3IiLCAicXVlcnlOYW1lIiwgInF1ZXJ5Rm4iXQp9Cg==
1
+ /**
2
+ * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { createValidatorManager } from './validatorFactory.js';
5
+ export const createBaseActions = (flux, defaultValidator, options)=>{
6
+ const { validator, updateAdapter, updateOptions } = createValidatorManager(defaultValidator, options?.adapterOptions);
7
+ if (options?.adapter) {
8
+ updateAdapter(options.adapter);
9
+ }
10
+ const createMutationAction = (mutationName, dataType, queryVariables, props, successType, errorType, mutationFn)=>async (input)=>{
11
+ try {
12
+ const variables = input ? {
13
+ ...queryVariables,
14
+ [Object.keys(queryVariables)[0]]: {
15
+ ...queryVariables[Object.keys(queryVariables)[0]],
16
+ value: validator(input)
17
+ }
18
+ } : queryVariables;
19
+ const onSuccess = (data)=>{
20
+ const result = data[dataType]?.[mutationName] || {};
21
+ return flux.dispatch({
22
+ [dataType.slice(0, -1)]: result,
23
+ type: successType
24
+ });
25
+ };
26
+ const result = await mutationFn(flux, mutationName, dataType, variables, props, {
27
+ onSuccess
28
+ });
29
+ const key = Object.keys(result)[0];
30
+ return result[key];
31
+ } catch (error) {
32
+ flux.dispatch({
33
+ error,
34
+ type: errorType
35
+ });
36
+ throw error;
37
+ }
38
+ };
39
+ const createQueryAction = (queryName, dataType, queryVariables, props, successType, errorType, queryFn)=>async ()=>{
40
+ try {
41
+ const onSuccess = (data)=>{
42
+ const result = data[dataType]?.[queryName] || {};
43
+ return flux.dispatch({
44
+ [dataType.slice(0, -1)]: result,
45
+ type: successType
46
+ });
47
+ };
48
+ const result = await queryFn(flux, queryName, dataType, queryVariables, props, {
49
+ onSuccess
50
+ });
51
+ const key = Object.keys(result)[0];
52
+ return result[key];
53
+ } catch (error) {
54
+ flux.dispatch({
55
+ error,
56
+ type: errorType
57
+ });
58
+ throw error;
59
+ }
60
+ };
61
+ return {
62
+ createMutationAction,
63
+ createQueryAction,
64
+ flux,
65
+ updateAdapter,
66
+ updateOptions,
67
+ updateAdapterOptions: updateOptions,
68
+ validator
69
+ };
70
+ };
71
+
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvYmFzZUFjdGlvbkZhY3RvcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Y3JlYXRlVmFsaWRhdG9yTWFuYWdlcn0gZnJvbSAnLi92YWxpZGF0b3JGYWN0b3J5LmpzJztcblxuaW1wb3J0IHR5cGUge0Jhc2VBZGFwdGVyT3B0aW9uc30gZnJvbSAnLi92YWxpZGF0b3JGYWN0b3J5LmpzJztcbmltcG9ydCB0eXBlIHtGbHV4RnJhbWV3b3JrfSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VBY3Rpb25PcHRpb25zPFQgZXh0ZW5kcyBCYXNlQWRhcHRlck9wdGlvbnMgPSBCYXNlQWRhcHRlck9wdGlvbnM+IHtcbiAgYWRhcHRlcj86IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFQpID0+IGFueTtcbiAgYWRhcHRlck9wdGlvbnM/OiBUO1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlQmFzZUFjdGlvbnMgPSA8VCBleHRlbmRzIEJhc2VBZGFwdGVyT3B0aW9ucz4oXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIGRlZmF1bHRWYWxpZGF0b3I6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFQpID0+IGFueSxcbiAgb3B0aW9ucz86IEJhc2VBY3Rpb25PcHRpb25zPFQ+XG4pID0+IHtcbiAgY29uc3Qge3ZhbGlkYXRvciwgdXBkYXRlQWRhcHRlciwgdXBkYXRlT3B0aW9uc30gPSBjcmVhdGVWYWxpZGF0b3JNYW5hZ2VyKFxuICAgIGRlZmF1bHRWYWxpZGF0b3IsXG4gICAgb3B0aW9ucz8uYWRhcHRlck9wdGlvbnNcbiAgKTtcblxuICBpZihvcHRpb25zPy5hZGFwdGVyKSB7XG4gICAgdXBkYXRlQWRhcHRlcihvcHRpb25zLmFkYXB0ZXIpO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlTXV0YXRpb25BY3Rpb24gPSA8UiA9IGFueT4oXG4gICAgbXV0YXRpb25OYW1lOiBzdHJpbmcsXG4gICAgZGF0YVR5cGU6IHN0cmluZyxcbiAgICBxdWVyeVZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBwcm9wczogc3RyaW5nW10sXG4gICAgc3VjY2Vzc1R5cGU6IHN0cmluZyxcbiAgICBlcnJvclR5cGU6IHN0cmluZyxcbiAgICBtdXRhdGlvbkZuOiBhbnlcbiAgKSA9PiBhc3luYyAoaW5wdXQ/OiB1bmtub3duKTogUHJvbWlzZTxSPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlcyA9IGlucHV0ID8ge1xuICAgICAgICAuLi5xdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgW09iamVjdC5rZXlzKHF1ZXJ5VmFyaWFibGVzKVswXV06IHtcbiAgICAgICAgICAuLi5xdWVyeVZhcmlhYmxlc1tPYmplY3Qua2V5cyhxdWVyeVZhcmlhYmxlcylbMF1dLFxuICAgICAgICAgIHZhbHVlOiB2YWxpZGF0b3IoaW5wdXQpXG4gICAgICAgIH1cbiAgICAgIH0gOiBxdWVyeVZhcmlhYmxlcztcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBkYXRhW2RhdGFUeXBlXT8uW211dGF0aW9uTmFtZV0gfHwge307XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtbZGF0YVR5cGUuc2xpY2UoMCwgLTEpXTogcmVzdWx0LCB0eXBlOiBzdWNjZXNzVHlwZX0pO1xuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbXV0YXRpb25GbihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgbXV0YXRpb25OYW1lLFxuICAgICAgICBkYXRhVHlwZSxcbiAgICAgICAgdmFyaWFibGVzLFxuICAgICAgICBwcm9wcyxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKHJlc3VsdClbMF07XG4gICAgICByZXR1cm4gcmVzdWx0W2tleV0gYXMgUjtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogZXJyb3JUeXBlfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY3JlYXRlUXVlcnlBY3Rpb24gPSA8UiA9IGFueT4oXG4gICAgcXVlcnlOYW1lOiBzdHJpbmcsXG4gICAgZGF0YVR5cGU6IHN0cmluZyxcbiAgICBxdWVyeVZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBwcm9wczogc3RyaW5nW10sXG4gICAgc3VjY2Vzc1R5cGU6IHN0cmluZyxcbiAgICBlcnJvclR5cGU6IHN0cmluZyxcbiAgICBxdWVyeUZuOiBhbnlcbiAgKSA9PiBhc3luYyAoKTogUHJvbWlzZTxSPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gZGF0YVtkYXRhVHlwZV0/LltxdWVyeU5hbWVdIHx8IHt9O1xuICAgICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7W2RhdGFUeXBlLnNsaWNlKDAsIC0xKV06IHJlc3VsdCwgdHlwZTogc3VjY2Vzc1R5cGV9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHF1ZXJ5Rm4oXG4gICAgICAgIGZsdXgsXG4gICAgICAgIHF1ZXJ5TmFtZSxcbiAgICAgICAgZGF0YVR5cGUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBwcm9wcyxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKHJlc3VsdClbMF07XG4gICAgICByZXR1cm4gcmVzdWx0W2tleV0gYXMgUjtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogZXJyb3JUeXBlfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBjcmVhdGVNdXRhdGlvbkFjdGlvbixcbiAgICBjcmVhdGVRdWVyeUFjdGlvbixcbiAgICBmbHV4LFxuICAgIHVwZGF0ZUFkYXB0ZXIsXG4gICAgdXBkYXRlT3B0aW9ucyxcbiAgICB1cGRhdGVBZGFwdGVyT3B0aW9uczogdXBkYXRlT3B0aW9ucyxcbiAgICB2YWxpZGF0b3JcbiAgfTtcbn07Il0sIm5hbWVzIjpbImNyZWF0ZVZhbGlkYXRvck1hbmFnZXIiLCJjcmVhdGVCYXNlQWN0aW9ucyIsImZsdXgiLCJkZWZhdWx0VmFsaWRhdG9yIiwib3B0aW9ucyIsInZhbGlkYXRvciIsInVwZGF0ZUFkYXB0ZXIiLCJ1cGRhdGVPcHRpb25zIiwiYWRhcHRlck9wdGlvbnMiLCJhZGFwdGVyIiwiY3JlYXRlTXV0YXRpb25BY3Rpb24iLCJtdXRhdGlvbk5hbWUiLCJkYXRhVHlwZSIsInF1ZXJ5VmFyaWFibGVzIiwicHJvcHMiLCJzdWNjZXNzVHlwZSIsImVycm9yVHlwZSIsIm11dGF0aW9uRm4iLCJpbnB1dCIsInZhcmlhYmxlcyIsIk9iamVjdCIsImtleXMiLCJ2YWx1ZSIsIm9uU3VjY2VzcyIsImRhdGEiLCJyZXN1bHQiLCJkaXNwYXRjaCIsInNsaWNlIiwidHlwZSIsImtleSIsImVycm9yIiwiY3JlYXRlUXVlcnlBY3Rpb24iLCJxdWVyeU5hbWUiLCJxdWVyeUZuIiwidXBkYXRlQWRhcHRlck9wdGlvbnMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLHNCQUFzQixRQUFPLHdCQUF3QjtBQVU3RCxPQUFPLE1BQU1DLG9CQUFvQixDQUMvQkMsTUFDQUMsa0JBQ0FDO0lBRUEsTUFBTSxFQUFDQyxTQUFTLEVBQUVDLGFBQWEsRUFBRUMsYUFBYSxFQUFDLEdBQUdQLHVCQUNoREcsa0JBQ0FDLFNBQVNJO0lBR1gsSUFBR0osU0FBU0ssU0FBUztRQUNuQkgsY0FBY0YsUUFBUUssT0FBTztJQUMvQjtJQUVBLE1BQU1DLHVCQUF1QixDQUMzQkMsY0FDQUMsVUFDQUMsZ0JBQ0FDLE9BQ0FDLGFBQ0FDLFdBQ0FDLGFBQ0csT0FBT0M7WUFDVixJQUFJO2dCQUNGLE1BQU1DLFlBQVlELFFBQVE7b0JBQ3hCLEdBQUdMLGNBQWM7b0JBQ2pCLENBQUNPLE9BQU9DLElBQUksQ0FBQ1IsZUFBZSxDQUFDLEVBQUUsQ0FBQyxFQUFFO3dCQUNoQyxHQUFHQSxjQUFjLENBQUNPLE9BQU9DLElBQUksQ0FBQ1IsZUFBZSxDQUFDLEVBQUUsQ0FBQzt3QkFDakRTLE9BQU9qQixVQUFVYTtvQkFDbkI7Z0JBQ0YsSUFBSUw7Z0JBRUosTUFBTVUsWUFBWSxDQUFDQztvQkFDakIsTUFBTUMsU0FBU0QsSUFBSSxDQUFDWixTQUFTLEVBQUUsQ0FBQ0QsYUFBYSxJQUFJLENBQUM7b0JBQ2xELE9BQU9ULEtBQUt3QixRQUFRLENBQUM7d0JBQUMsQ0FBQ2QsU0FBU2UsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUVGO3dCQUFRRyxNQUFNYjtvQkFBVztnQkFDMUU7Z0JBRUEsTUFBTVUsU0FBUyxNQUFNUixXQUNuQmYsTUFDQVMsY0FDQUMsVUFDQU8sV0FDQUwsT0FDQTtvQkFBQ1M7Z0JBQVM7Z0JBR1osTUFBTU0sTUFBTVQsT0FBT0MsSUFBSSxDQUFDSSxPQUFPLENBQUMsRUFBRTtnQkFDbEMsT0FBT0EsTUFBTSxDQUFDSSxJQUFJO1lBQ3BCLEVBQUUsT0FBTUMsT0FBTztnQkFDYjVCLEtBQUt3QixRQUFRLENBQUM7b0JBQUNJO29CQUFPRixNQUFNWjtnQkFBUztnQkFDckMsTUFBTWM7WUFDUjtRQUNGO0lBRUEsTUFBTUMsb0JBQW9CLENBQ3hCQyxXQUNBcEIsVUFDQUMsZ0JBQ0FDLE9BQ0FDLGFBQ0FDLFdBQ0FpQixVQUNHO1lBQ0gsSUFBSTtnQkFDRixNQUFNVixZQUFZLENBQUNDO29CQUNqQixNQUFNQyxTQUFTRCxJQUFJLENBQUNaLFNBQVMsRUFBRSxDQUFDb0IsVUFBVSxJQUFJLENBQUM7b0JBQy9DLE9BQU85QixLQUFLd0IsUUFBUSxDQUFDO3dCQUFDLENBQUNkLFNBQVNlLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFRjt3QkFBUUcsTUFBTWI7b0JBQVc7Z0JBQzFFO2dCQUVBLE1BQU1VLFNBQVMsTUFBTVEsUUFDbkIvQixNQUNBOEIsV0FDQXBCLFVBQ0FDLGdCQUNBQyxPQUNBO29CQUFDUztnQkFBUztnQkFHWixNQUFNTSxNQUFNVCxPQUFPQyxJQUFJLENBQUNJLE9BQU8sQ0FBQyxFQUFFO2dCQUNsQyxPQUFPQSxNQUFNLENBQUNJLElBQUk7WUFDcEIsRUFBRSxPQUFNQyxPQUFPO2dCQUNiNUIsS0FBS3dCLFFBQVEsQ0FBQztvQkFBQ0k7b0JBQU9GLE1BQU1aO2dCQUFTO2dCQUNyQyxNQUFNYztZQUNSO1FBQ0Y7SUFFQSxPQUFPO1FBQ0xwQjtRQUNBcUI7UUFDQTdCO1FBQ0FJO1FBQ0FDO1FBQ0EyQixzQkFBc0IzQjtRQUN0QkY7SUFDRjtBQUNGLEVBQUUifQ==
@@ -0,0 +1,11 @@
1
+ import type { FluxFramework } from '@nlabs/arkhamjs';
2
+ import type { MetropolisEnvironmentConfiguration } from '../config/index.js';
3
+ /**
4
+ * Gets configuration from flux state.
5
+ * Falls back to default config if not found in flux state.
6
+ *
7
+ * @param flux - The Flux framework instance
8
+ * @returns The resolved environment configuration
9
+ */
10
+ export declare const getConfigFromFlux: (flux: FluxFramework) => MetropolisEnvironmentConfiguration;
11
+ //# sourceMappingURL=configUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configUtils.d.ts","sourceRoot":"","sources":["../../src/utils/configUtils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,oBAAoB,CAAC;AAE7E;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,MAAM,aAAa,KAAG,kCASvD,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { getDefaultConfig } from '../config/index.js';
5
+ /**
6
+ * Gets configuration from flux state.
7
+ * Falls back to default config if not found in flux state.
8
+ *
9
+ * @param flux - The Flux framework instance
10
+ * @returns The resolved environment configuration
11
+ */ export const getConfigFromFlux = (flux)=>{
12
+ const config = flux.getState('app.config');
13
+ if (config) {
14
+ return config;
15
+ }
16
+ // Fallback to default config
17
+ return getDefaultConfig();
18
+ };
19
+
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvY29uZmlnVXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7IGdldERlZmF1bHRDb25maWcgfSBmcm9tICcuLi9jb25maWcvaW5kZXguanMnO1xuaW1wb3J0IHR5cGUgeyBGbHV4RnJhbWV3b3JrIH0gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcbmltcG9ydCB0eXBlIHsgTWV0cm9wb2xpc0Vudmlyb25tZW50Q29uZmlndXJhdGlvbiB9IGZyb20gJy4uL2NvbmZpZy9pbmRleC5qcyc7XG5cbi8qKlxuICogR2V0cyBjb25maWd1cmF0aW9uIGZyb20gZmx1eCBzdGF0ZS5cbiAqIEZhbGxzIGJhY2sgdG8gZGVmYXVsdCBjb25maWcgaWYgbm90IGZvdW5kIGluIGZsdXggc3RhdGUuXG4gKlxuICogQHBhcmFtIGZsdXggLSBUaGUgRmx1eCBmcmFtZXdvcmsgaW5zdGFuY2VcbiAqIEByZXR1cm5zIFRoZSByZXNvbHZlZCBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRDb25maWdGcm9tRmx1eCA9IChmbHV4OiBGbHV4RnJhbWV3b3JrKTogTWV0cm9wb2xpc0Vudmlyb25tZW50Q29uZmlndXJhdGlvbiA9PiB7XG4gIGNvbnN0IGNvbmZpZyA9IGZsdXguZ2V0U3RhdGUoJ2FwcC5jb25maWcnKSBhcyBNZXRyb3BvbGlzRW52aXJvbm1lbnRDb25maWd1cmF0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChjb25maWcpIHtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgLy8gRmFsbGJhY2sgdG8gZGVmYXVsdCBjb25maWdcbiAgcmV0dXJuIGdldERlZmF1bHRDb25maWcoKTtcbn07XG4iXSwibmFtZXMiOlsiZ2V0RGVmYXVsdENvbmZpZyIsImdldENvbmZpZ0Zyb21GbHV4IiwiZmx1eCIsImNvbmZpZyIsImdldFN0YXRlIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFTQSxnQkFBZ0IsUUFBUSxxQkFBcUI7QUFJdEQ7Ozs7OztDQU1DLEdBQ0QsT0FBTyxNQUFNQyxvQkFBb0IsQ0FBQ0M7SUFDaEMsTUFBTUMsU0FBU0QsS0FBS0UsUUFBUSxDQUFDO0lBRTdCLElBQUlELFFBQVE7UUFDVixPQUFPQTtJQUNUO0lBRUEsNkJBQTZCO0lBQzdCLE9BQU9IO0FBQ1QsRUFBRSJ9
@@ -1,2 +1,3 @@
1
1
  import { DateTime } from 'luxon';
2
2
  export declare const parseDateTime: (value: string | number | DateTime) => any;
3
+ //# sourceMappingURL=dateUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateUtils.d.ts","sourceRoot":"","sources":["../../src/utils/dateUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,OAAO,CAAC;AAE/B,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,GAAG,MAAM,GAAG,QAAQ,QAQ9D,CAAC"}
@@ -1,2 +1,11 @@
1
- import{DateTime as e}from"luxon";const r=t=>typeof t=="string"?e.fromISO(t).toMillis():t instanceof e?t.toMillis():t;export{r as parseDateTime};
2
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2RhdGVVdGlscy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtEYXRlVGltZX0gZnJvbSAnbHV4b24nO1xuXG5leHBvcnQgY29uc3QgcGFyc2VEYXRlVGltZSA9ICh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZVRpbWUpID0+IHtcbiAgaWYodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBEYXRlVGltZS5mcm9tSVNPKHZhbHVlKS50b01pbGxpcygpO1xuICB9IGVsc2UgaWYodmFsdWUgaW5zdGFuY2VvZiBEYXRlVGltZSkge1xuICAgIHJldHVybiAodmFsdWUgYXMgRGF0ZVRpbWUpLnRvTWlsbGlzKCk7XG4gIH1cblxuICByZXR1cm4gdmFsdWU7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUEsT0FBUSxZQUFBQSxNQUFlLFFBRWhCLE1BQU1DLEVBQWlCQyxHQUN6QixPQUFPQSxHQUFVLFNBQ1hGLEVBQVMsUUFBUUUsQ0FBSyxFQUFFLFNBQVMsRUFDaENBLGFBQWlCRixFQUNqQkUsRUFBbUIsU0FBUyxFQUcvQkEiLAogICJuYW1lcyI6IFsiRGF0ZVRpbWUiLCAicGFyc2VEYXRlVGltZSIsICJ2YWx1ZSJdCn0K
1
+ import { DateTime } from 'luxon';
2
+ export const parseDateTime = (value)=>{
3
+ if (typeof value === 'string') {
4
+ return DateTime.fromISO(value).toMillis();
5
+ } else if (value instanceof DateTime) {
6
+ return value.toMillis();
7
+ }
8
+ return value;
9
+ };
10
+
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvZGF0ZVV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGF0ZVRpbWV9IGZyb20gJ2x1eG9uJztcblxuZXhwb3J0IGNvbnN0IHBhcnNlRGF0ZVRpbWUgPSAodmFsdWU6IHN0cmluZyB8IG51bWJlciB8IERhdGVUaW1lKSA9PiB7XG4gIGlmKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUlTTyh2YWx1ZSkudG9NaWxsaXMoKTtcbiAgfSBlbHNlIGlmKHZhbHVlIGluc3RhbmNlb2YgRGF0ZVRpbWUpIHtcbiAgICByZXR1cm4gKHZhbHVlIGFzIERhdGVUaW1lKS50b01pbGxpcygpO1xuICB9XG5cbiAgcmV0dXJuIHZhbHVlO1xufTtcbiJdLCJuYW1lcyI6WyJEYXRlVGltZSIsInBhcnNlRGF0ZVRpbWUiLCJ2YWx1ZSIsImZyb21JU08iLCJ0b01pbGxpcyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsUUFBUSxRQUFPLFFBQVE7QUFFL0IsT0FBTyxNQUFNQyxnQkFBZ0IsQ0FBQ0M7SUFDNUIsSUFBRyxPQUFPQSxVQUFVLFVBQVU7UUFDNUIsT0FBT0YsU0FBU0csT0FBTyxDQUFDRCxPQUFPRSxRQUFRO0lBQ3pDLE9BQU8sSUFBR0YsaUJBQWlCRixVQUFVO1FBQ25DLE9BQU8sQUFBQ0UsTUFBbUJFLFFBQVE7SUFDckM7SUFFQSxPQUFPRjtBQUNULEVBQUUifQ==
@@ -1 +1,3 @@
1
- export declare const convertFileToBase64: (file: File, maxSize: number) => Promise<string>;
1
+ export declare const convertFileToUploadFile: (file: File, maxSize: number, maxBytes?: number) => Promise<File>;
2
+ export declare const convertFileToBase64: (file: File, maxSize: number, maxBytes?: number) => Promise<string>;
3
+ //# sourceMappingURL=file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/utils/file.ts"],"names":[],"mappings":"AAgFA,eAAO,MAAM,uBAAuB,GAClC,MAAM,IAAI,EACV,SAAS,MAAM,EACf,WAAU,MAAmB,KAC5B,OAAO,CAAC,IAAI,CA0Cd,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,MAAM,IAAI,EACV,SAAS,MAAM,EACf,WAAU,MAAmB,KAC5B,OAAO,CAAC,MAAM,CA2Eb,CAAC"}
package/lib/utils/file.js CHANGED
@@ -1,2 +1,156 @@
1
- const m=(d,e)=>new Promise((g,c)=>{const n=new FileReader;n.onload=()=>{const t=new Image;t.onload=()=>{const r=document.createElement("canvas"),{height:s,width:a}=t;let o=s,i=a;a>s?a>e&&(o*=e/a,i=e):s>e&&(i*=e/s,o=e),r.width=i,r.height=o,r.getContext("2d")?.drawImage(t,0,0,i,o);const h=r.toDataURL("image/jpeg");g(h)};const l=n.result;t.src=l},n.onerror=t=>{c(t)},n.readAsDataURL(d)});export{m as convertFileToBase64};
2
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2ZpbGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCBjb25zdCBjb252ZXJ0RmlsZVRvQmFzZTY0ID0gKGZpbGU6IEZpbGUsIG1heFNpemU6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgY29uc3QgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICAgIGltYWdlLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgICAgLy8gUmVzaXplIHRoZSBpbWFnZVxuICAgICAgICBjb25zdCBjYW52YXM6IEhUTUxDYW52YXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7XG4gICAgICAgIGNvbnN0IHtoZWlnaHQsIHdpZHRofSA9IGltYWdlO1xuICAgICAgICBsZXQgdXBkYXRlZEhlaWdodDogbnVtYmVyID0gaGVpZ2h0O1xuICAgICAgICBsZXQgdXBkYXRlZFdpZHRoOiBudW1iZXIgPSB3aWR0aDtcblxuICAgICAgICBpZih3aWR0aCA+IGhlaWdodCkge1xuICAgICAgICAgIGlmKHdpZHRoID4gbWF4U2l6ZSkge1xuICAgICAgICAgICAgdXBkYXRlZEhlaWdodCAqPSBtYXhTaXplIC8gd2lkdGg7XG4gICAgICAgICAgICB1cGRhdGVkV2lkdGggPSBtYXhTaXplO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmKGhlaWdodCA+IG1heFNpemUpIHtcbiAgICAgICAgICB1cGRhdGVkV2lkdGggKj0gbWF4U2l6ZSAvIGhlaWdodDtcbiAgICAgICAgICB1cGRhdGVkSGVpZ2h0ID0gbWF4U2l6ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhbnZhcy53aWR0aCA9IHVwZGF0ZWRXaWR0aDtcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IHVwZGF0ZWRIZWlnaHQ7XG4gICAgICAgIGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpPy5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDAsIHVwZGF0ZWRXaWR0aCwgdXBkYXRlZEhlaWdodCk7XG4gICAgICAgIGNvbnN0IGRhdGFVcmw6IHN0cmluZyA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnKTtcbiAgICAgICAgLy8gY29uc3QgcmVzaXplZEltYWdlID0gZGF0YVVSTFRvQmxvYihkYXRhVXJsKTtcblxuICAgICAgICByZXNvbHZlKGRhdGFVcmwpO1xuICAgICAgICAvLyAkLmV2ZW50LnRyaWdnZXIoe1xuICAgICAgICAvLyAgIHR5cGU6ICdpbWFnZVJlc2l6ZWQnLFxuICAgICAgICAvLyAgIGJsb2I6IHJlc2l6ZWRJbWFnZSxcbiAgICAgICAgLy8gICB1cmw6IGRhdGFVcmxcbiAgICAgICAgLy8gfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvcmlnaW5hbEJhc2U2NDogc3RyaW5nID0gcmVhZGVyLnJlc3VsdCBhcyBzdHJpbmc7XG4gICAgICBpbWFnZS5zcmMgPSBvcmlnaW5hbEJhc2U2NDtcbiAgICB9O1xuICAgIC8vIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiB7XG4gICAgLy8gICBjb25zdCBiYXNlNjQ6IHN0cmluZyA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xuICAgIC8vICAgcmVzb2x2ZShiYXNlNjQpO1xuICAgIC8vIH07XG4gICAgcmVhZGVyLm9uZXJyb3IgPSAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHtcbiAgICAgIHJlamVjdChldmVudCk7XG4gICAgfTtcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgfSk7XG4iXSwKICAibWFwcGluZ3MiOiAiQUFBTyxNQUFNQSxFQUFzQixDQUFDQyxFQUFZQyxJQUM5QyxJQUFJLFFBQVEsQ0FBQ0MsRUFBU0MsSUFBVyxDQUMvQixNQUFNQyxFQUFTLElBQUksV0FDbkJBLEVBQU8sT0FBUyxJQUFNLENBQ3BCLE1BQU1DLEVBQVEsSUFBSSxNQUNsQkEsRUFBTSxPQUFTLElBQU0sQ0FFbkIsTUFBTUMsRUFBNEIsU0FBUyxjQUFjLFFBQVEsRUFDM0QsQ0FBQyxPQUFBQyxFQUFRLE1BQUFDLENBQUssRUFBSUgsRUFDeEIsSUFBSUksRUFBd0JGLEVBQ3hCRyxFQUF1QkYsRUFFeEJBLEVBQVFELEVBQ05DLEVBQVFQLElBQ1RRLEdBQWlCUixFQUFVTyxFQUMzQkUsRUFBZVQsR0FFVE0sRUFBU04sSUFDakJTLEdBQWdCVCxFQUFVTSxFQUMxQkUsRUFBZ0JSLEdBR2xCSyxFQUFPLE1BQVFJLEVBQ2ZKLEVBQU8sT0FBU0csRUFDaEJILEVBQU8sV0FBVyxJQUFJLEdBQUcsVUFBVUQsRUFBTyxFQUFHLEVBQUdLLEVBQWNELENBQWEsRUFDM0UsTUFBTUUsRUFBa0JMLEVBQU8sVUFBVSxZQUFZLEVBR3JESixFQUFRUyxDQUFPLENBTWpCLEVBRUEsTUFBTUMsRUFBeUJSLEVBQU8sT0FDdENDLEVBQU0sSUFBTU8sQ0FDZCxFQUtBUixFQUFPLFFBQVdTLEdBQXlCLENBQ3pDVixFQUFPVSxDQUFLLENBQ2QsRUFDQVQsRUFBTyxjQUFjSixDQUFJLENBQzNCLENBQUMiLAogICJuYW1lcyI6IFsiY29udmVydEZpbGVUb0Jhc2U2NCIsICJmaWxlIiwgIm1heFNpemUiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAicmVhZGVyIiwgImltYWdlIiwgImNhbnZhcyIsICJoZWlnaHQiLCAid2lkdGgiLCAidXBkYXRlZEhlaWdodCIsICJ1cGRhdGVkV2lkdGgiLCAiZGF0YVVybCIsICJvcmlnaW5hbEJhc2U2NCIsICJldmVudCJdCn0K
1
+ const getUploadPayloadByteSize = (dataUrl)=>dataUrl.length;
2
+ const getFileNameWithoutExtension = (name)=>name.split('.').slice(0, -1).join('.') || name;
3
+ const createImageCanvas = (file, maxSize)=>new Promise((resolve, reject)=>{
4
+ const image = new Image();
5
+ const objectUrl = URL.createObjectURL(file);
6
+ image.onload = ()=>{
7
+ URL.revokeObjectURL(objectUrl);
8
+ const canvas = document.createElement('canvas');
9
+ const { height, width } = image;
10
+ let updatedHeight = height;
11
+ let updatedWidth = width;
12
+ if (width > height) {
13
+ if (width > maxSize) {
14
+ updatedHeight *= maxSize / width;
15
+ updatedWidth = maxSize;
16
+ }
17
+ } else if (height > maxSize) {
18
+ updatedWidth *= maxSize / height;
19
+ updatedHeight = maxSize;
20
+ }
21
+ const context = canvas.getContext('2d');
22
+ if (!context) {
23
+ reject(new Error('Unable to prepare image upload.'));
24
+ return;
25
+ }
26
+ resolve({
27
+ canvas,
28
+ context,
29
+ height: Math.max(1, Math.round(updatedHeight)),
30
+ width: Math.max(1, Math.round(updatedWidth))
31
+ });
32
+ };
33
+ image.onerror = ()=>{
34
+ URL.revokeObjectURL(objectUrl);
35
+ reject(new Error('Unable to prepare image upload.'));
36
+ };
37
+ image.src = objectUrl;
38
+ });
39
+ const renderImageFile = (canvas, context, image, width, height, quality, name)=>new Promise((resolve, reject)=>{
40
+ canvas.width = width;
41
+ canvas.height = height;
42
+ context.clearRect(0, 0, width, height);
43
+ context.drawImage(image, 0, 0, width, height);
44
+ canvas.toBlob((blob)=>{
45
+ if (!blob) {
46
+ reject(new Error('Unable to prepare image upload.'));
47
+ return;
48
+ }
49
+ resolve(new File([
50
+ blob
51
+ ], `${getFileNameWithoutExtension(name)}.jpg`, {
52
+ type: 'image/jpeg'
53
+ }));
54
+ }, 'image/jpeg', quality);
55
+ });
56
+ export const convertFileToUploadFile = async (file, maxSize, maxBytes = 900 * 1024)=>{
57
+ if (!file.type.startsWith('image/') || typeof document === 'undefined') {
58
+ return file;
59
+ }
60
+ const image = new Image();
61
+ const objectUrl = URL.createObjectURL(file);
62
+ try {
63
+ await new Promise((resolve, reject)=>{
64
+ image.onload = ()=>resolve();
65
+ image.onerror = ()=>reject(new Error('Unable to prepare image upload.'));
66
+ image.src = objectUrl;
67
+ });
68
+ const { canvas, context, height, width } = await createImageCanvas(file, maxSize);
69
+ let currentWidth = width;
70
+ let currentHeight = height;
71
+ let quality = 0.82;
72
+ let uploadFile = await renderImageFile(canvas, context, image, currentWidth, currentHeight, quality, file.name);
73
+ while(uploadFile.size > maxBytes && quality > 0.45){
74
+ quality = Math.max(0.45, Number((quality - 0.08).toFixed(2)));
75
+ uploadFile = await renderImageFile(canvas, context, image, currentWidth, currentHeight, quality, file.name);
76
+ }
77
+ while(uploadFile.size > maxBytes && (currentWidth > 320 || currentHeight > 320)){
78
+ currentWidth = Math.max(320, Math.round(currentWidth * 0.85));
79
+ currentHeight = Math.max(320, Math.round(currentHeight * 0.85));
80
+ quality = 0.78;
81
+ uploadFile = await renderImageFile(canvas, context, image, currentWidth, currentHeight, quality, file.name);
82
+ while(uploadFile.size > maxBytes && quality > 0.45){
83
+ quality = Math.max(0.45, Number((quality - 0.08).toFixed(2)));
84
+ uploadFile = await renderImageFile(canvas, context, image, currentWidth, currentHeight, quality, file.name);
85
+ }
86
+ }
87
+ return uploadFile;
88
+ } finally{
89
+ URL.revokeObjectURL(objectUrl);
90
+ }
91
+ };
92
+ export const convertFileToBase64 = (file, maxSize, maxBytes = 900 * 1024)=>new Promise((resolve, reject)=>{
93
+ const reader = new FileReader();
94
+ reader.onload = ()=>{
95
+ const image = new Image();
96
+ image.onload = ()=>{
97
+ const canvas = document.createElement('canvas');
98
+ const { height, width } = image;
99
+ let updatedHeight = height;
100
+ let updatedWidth = width;
101
+ if (width > height) {
102
+ if (width > maxSize) {
103
+ updatedHeight *= maxSize / width;
104
+ updatedWidth = maxSize;
105
+ }
106
+ } else if (height > maxSize) {
107
+ updatedWidth *= maxSize / height;
108
+ updatedHeight = maxSize;
109
+ }
110
+ const context = canvas.getContext('2d');
111
+ if (!context) {
112
+ reject(new Error('Unable to prepare image upload.'));
113
+ return;
114
+ }
115
+ const renderImage = (width, height)=>{
116
+ canvas.width = width;
117
+ canvas.height = height;
118
+ context.clearRect(0, 0, width, height);
119
+ context.drawImage(image, 0, 0, width, height);
120
+ };
121
+ let currentWidth = Math.max(1, Math.round(updatedWidth));
122
+ let currentHeight = Math.max(1, Math.round(updatedHeight));
123
+ let quality = 0.82;
124
+ renderImage(currentWidth, currentHeight);
125
+ let dataUrl = canvas.toDataURL('image/jpeg', quality);
126
+ let byteSize = getUploadPayloadByteSize(dataUrl);
127
+ while(byteSize > maxBytes && quality > 0.45){
128
+ quality = Math.max(0.45, Number((quality - 0.08).toFixed(2)));
129
+ dataUrl = canvas.toDataURL('image/jpeg', quality);
130
+ byteSize = getUploadPayloadByteSize(dataUrl);
131
+ }
132
+ while(byteSize > maxBytes && (currentWidth > 320 || currentHeight > 320)){
133
+ currentWidth = Math.max(320, Math.round(currentWidth * 0.85));
134
+ currentHeight = Math.max(320, Math.round(currentHeight * 0.85));
135
+ quality = 0.78;
136
+ renderImage(currentWidth, currentHeight);
137
+ dataUrl = canvas.toDataURL('image/jpeg', quality);
138
+ byteSize = getUploadPayloadByteSize(dataUrl);
139
+ while(byteSize > maxBytes && quality > 0.45){
140
+ quality = Math.max(0.45, Number((quality - 0.08).toFixed(2)));
141
+ dataUrl = canvas.toDataURL('image/jpeg', quality);
142
+ byteSize = getUploadPayloadByteSize(dataUrl);
143
+ }
144
+ }
145
+ resolve(dataUrl);
146
+ };
147
+ const originalBase64 = reader.result;
148
+ image.src = originalBase64;
149
+ };
150
+ reader.onerror = (event)=>{
151
+ reject(event);
152
+ };
153
+ reader.readAsDataURL(file);
154
+ });
155
+
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvZmlsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBnZXRVcGxvYWRQYXlsb2FkQnl0ZVNpemUgPSAoZGF0YVVybDogc3RyaW5nKTogbnVtYmVyID0+IGRhdGFVcmwubGVuZ3RoO1xuXG5jb25zdCBnZXRGaWxlTmFtZVdpdGhvdXRFeHRlbnNpb24gPSAobmFtZTogc3RyaW5nKTogc3RyaW5nID0+IChcbiAgbmFtZS5zcGxpdCgnLicpLnNsaWNlKDAsIC0xKS5qb2luKCcuJykgfHwgbmFtZVxuKTtcblxuY29uc3QgY3JlYXRlSW1hZ2VDYW52YXMgPSAoZmlsZTogRmlsZSwgbWF4U2l6ZTogbnVtYmVyKTogUHJvbWlzZTx7XG4gIGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQ7XG4gIGNvbnRleHQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDtcbiAgaGVpZ2h0OiBudW1iZXI7XG4gIHdpZHRoOiBudW1iZXI7XG59PiA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gIGNvbnN0IG9iamVjdFVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XG5cbiAgaW1hZ2Uub25sb2FkID0gKCkgPT4ge1xuICAgIFVSTC5yZXZva2VPYmplY3RVUkwob2JqZWN0VXJsKTtcblxuICAgIGNvbnN0IGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICBjb25zdCB7aGVpZ2h0LCB3aWR0aH0gPSBpbWFnZTtcbiAgICBsZXQgdXBkYXRlZEhlaWdodDogbnVtYmVyID0gaGVpZ2h0O1xuICAgIGxldCB1cGRhdGVkV2lkdGg6IG51bWJlciA9IHdpZHRoO1xuXG4gICAgaWYod2lkdGggPiBoZWlnaHQpIHtcbiAgICAgIGlmKHdpZHRoID4gbWF4U2l6ZSkge1xuICAgICAgICB1cGRhdGVkSGVpZ2h0ICo9IG1heFNpemUgLyB3aWR0aDtcbiAgICAgICAgdXBkYXRlZFdpZHRoID0gbWF4U2l6ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYoaGVpZ2h0ID4gbWF4U2l6ZSkge1xuICAgICAgdXBkYXRlZFdpZHRoICo9IG1heFNpemUgLyBoZWlnaHQ7XG4gICAgICB1cGRhdGVkSGVpZ2h0ID0gbWF4U2l6ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG5cbiAgICBpZighY29udGV4dCkge1xuICAgICAgcmVqZWN0KG5ldyBFcnJvcignVW5hYmxlIHRvIHByZXBhcmUgaW1hZ2UgdXBsb2FkLicpKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXNvbHZlKHtcbiAgICAgIGNhbnZhcyxcbiAgICAgIGNvbnRleHQsXG4gICAgICBoZWlnaHQ6IE1hdGgubWF4KDEsIE1hdGgucm91bmQodXBkYXRlZEhlaWdodCkpLFxuICAgICAgd2lkdGg6IE1hdGgubWF4KDEsIE1hdGgucm91bmQodXBkYXRlZFdpZHRoKSlcbiAgICB9KTtcbiAgfTtcblxuICBpbWFnZS5vbmVycm9yID0gKCkgPT4ge1xuICAgIFVSTC5yZXZva2VPYmplY3RVUkwob2JqZWN0VXJsKTtcbiAgICByZWplY3QobmV3IEVycm9yKCdVbmFibGUgdG8gcHJlcGFyZSBpbWFnZSB1cGxvYWQuJykpO1xuICB9O1xuXG4gIGltYWdlLnNyYyA9IG9iamVjdFVybDtcbn0pO1xuXG5jb25zdCByZW5kZXJJbWFnZUZpbGUgPSAoXG4gIGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQsXG4gIGNvbnRleHQ6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCxcbiAgaW1hZ2U6IENhbnZhc0ltYWdlU291cmNlLFxuICB3aWR0aDogbnVtYmVyLFxuICBoZWlnaHQ6IG51bWJlcixcbiAgcXVhbGl0eTogbnVtYmVyLFxuICBuYW1lOiBzdHJpbmdcbik6IFByb21pc2U8RmlsZT4gPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICBjYW52YXMud2lkdGggPSB3aWR0aDtcbiAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcblxuICBjYW52YXMudG9CbG9iKChibG9iKSA9PiB7XG4gICAgaWYoIWJsb2IpIHtcbiAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1VuYWJsZSB0byBwcmVwYXJlIGltYWdlIHVwbG9hZC4nKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmVzb2x2ZShuZXcgRmlsZShbYmxvYl0sIGAke2dldEZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbihuYW1lKX0uanBnYCwge3R5cGU6ICdpbWFnZS9qcGVnJ30pKTtcbiAgfSwgJ2ltYWdlL2pwZWcnLCBxdWFsaXR5KTtcbn0pO1xuXG5leHBvcnQgY29uc3QgY29udmVydEZpbGVUb1VwbG9hZEZpbGUgPSBhc3luYyAoXG4gIGZpbGU6IEZpbGUsXG4gIG1heFNpemU6IG51bWJlcixcbiAgbWF4Qnl0ZXM6IG51bWJlciA9IDkwMCAqIDEwMjRcbik6IFByb21pc2U8RmlsZT4gPT4ge1xuICBpZighZmlsZS50eXBlLnN0YXJ0c1dpdGgoJ2ltYWdlLycpIHx8IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmlsZTtcbiAgfVxuXG4gIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gIGNvbnN0IG9iamVjdFVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpbWFnZS5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKCk7XG4gICAgICBpbWFnZS5vbmVycm9yID0gKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignVW5hYmxlIHRvIHByZXBhcmUgaW1hZ2UgdXBsb2FkLicpKTtcbiAgICAgIGltYWdlLnNyYyA9IG9iamVjdFVybDtcbiAgICB9KTtcblxuICAgIGNvbnN0IHtjYW52YXMsIGNvbnRleHQsIGhlaWdodCwgd2lkdGh9ID0gYXdhaXQgY3JlYXRlSW1hZ2VDYW52YXMoZmlsZSwgbWF4U2l6ZSk7XG4gICAgbGV0IGN1cnJlbnRXaWR0aCA9IHdpZHRoO1xuICAgIGxldCBjdXJyZW50SGVpZ2h0ID0gaGVpZ2h0O1xuICAgIGxldCBxdWFsaXR5ID0gMC44MjtcbiAgICBsZXQgdXBsb2FkRmlsZSA9IGF3YWl0IHJlbmRlckltYWdlRmlsZShjYW52YXMsIGNvbnRleHQsIGltYWdlLCBjdXJyZW50V2lkdGgsIGN1cnJlbnRIZWlnaHQsIHF1YWxpdHksIGZpbGUubmFtZSk7XG5cbiAgICB3aGlsZSh1cGxvYWRGaWxlLnNpemUgPiBtYXhCeXRlcyAmJiBxdWFsaXR5ID4gMC40NSkge1xuICAgICAgcXVhbGl0eSA9IE1hdGgubWF4KDAuNDUsIE51bWJlcigocXVhbGl0eSAtIDAuMDgpLnRvRml4ZWQoMikpKTtcbiAgICAgIHVwbG9hZEZpbGUgPSBhd2FpdCByZW5kZXJJbWFnZUZpbGUoY2FudmFzLCBjb250ZXh0LCBpbWFnZSwgY3VycmVudFdpZHRoLCBjdXJyZW50SGVpZ2h0LCBxdWFsaXR5LCBmaWxlLm5hbWUpO1xuICAgIH1cblxuICAgIHdoaWxlKHVwbG9hZEZpbGUuc2l6ZSA+IG1heEJ5dGVzICYmIChjdXJyZW50V2lkdGggPiAzMjAgfHwgY3VycmVudEhlaWdodCA+IDMyMCkpIHtcbiAgICAgIGN1cnJlbnRXaWR0aCA9IE1hdGgubWF4KDMyMCwgTWF0aC5yb3VuZChjdXJyZW50V2lkdGggKiAwLjg1KSk7XG4gICAgICBjdXJyZW50SGVpZ2h0ID0gTWF0aC5tYXgoMzIwLCBNYXRoLnJvdW5kKGN1cnJlbnRIZWlnaHQgKiAwLjg1KSk7XG4gICAgICBxdWFsaXR5ID0gMC43ODtcbiAgICAgIHVwbG9hZEZpbGUgPSBhd2FpdCByZW5kZXJJbWFnZUZpbGUoY2FudmFzLCBjb250ZXh0LCBpbWFnZSwgY3VycmVudFdpZHRoLCBjdXJyZW50SGVpZ2h0LCBxdWFsaXR5LCBmaWxlLm5hbWUpO1xuXG4gICAgICB3aGlsZSh1cGxvYWRGaWxlLnNpemUgPiBtYXhCeXRlcyAmJiBxdWFsaXR5ID4gMC40NSkge1xuICAgICAgICBxdWFsaXR5ID0gTWF0aC5tYXgoMC40NSwgTnVtYmVyKChxdWFsaXR5IC0gMC4wOCkudG9GaXhlZCgyKSkpO1xuICAgICAgICB1cGxvYWRGaWxlID0gYXdhaXQgcmVuZGVySW1hZ2VGaWxlKGNhbnZhcywgY29udGV4dCwgaW1hZ2UsIGN1cnJlbnRXaWR0aCwgY3VycmVudEhlaWdodCwgcXVhbGl0eSwgZmlsZS5uYW1lKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdXBsb2FkRmlsZTtcbiAgfSBmaW5hbGx5IHtcbiAgICBVUkwucmV2b2tlT2JqZWN0VVJMKG9iamVjdFVybCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjb252ZXJ0RmlsZVRvQmFzZTY0ID0gKFxuICBmaWxlOiBGaWxlLFxuICBtYXhTaXplOiBudW1iZXIsXG4gIG1heEJ5dGVzOiBudW1iZXIgPSA5MDAgKiAxMDI0XG4pOiBQcm9taXNlPHN0cmluZz4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdlKCk7XG4gICAgICBpbWFnZS5vbmxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgY29uc3Qge2hlaWdodCwgd2lkdGh9ID0gaW1hZ2U7XG4gICAgICAgIGxldCB1cGRhdGVkSGVpZ2h0OiBudW1iZXIgPSBoZWlnaHQ7XG4gICAgICAgIGxldCB1cGRhdGVkV2lkdGg6IG51bWJlciA9IHdpZHRoO1xuXG4gICAgICAgIGlmKHdpZHRoID4gaGVpZ2h0KSB7XG4gICAgICAgICAgaWYod2lkdGggPiBtYXhTaXplKSB7XG4gICAgICAgICAgICB1cGRhdGVkSGVpZ2h0ICo9IG1heFNpemUgLyB3aWR0aDtcbiAgICAgICAgICAgIHVwZGF0ZWRXaWR0aCA9IG1heFNpemU7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYoaGVpZ2h0ID4gbWF4U2l6ZSkge1xuICAgICAgICAgIHVwZGF0ZWRXaWR0aCAqPSBtYXhTaXplIC8gaGVpZ2h0O1xuICAgICAgICAgIHVwZGF0ZWRIZWlnaHQgPSBtYXhTaXplO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuXG4gICAgICAgIGlmKCFjb250ZXh0KSB7XG4gICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignVW5hYmxlIHRvIHByZXBhcmUgaW1hZ2UgdXBsb2FkLicpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZW5kZXJJbWFnZSA9ICh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcikgPT4ge1xuICAgICAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoO1xuICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCk7XG4gICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGxldCBjdXJyZW50V2lkdGggPSBNYXRoLm1heCgxLCBNYXRoLnJvdW5kKHVwZGF0ZWRXaWR0aCkpO1xuICAgICAgICBsZXQgY3VycmVudEhlaWdodCA9IE1hdGgubWF4KDEsIE1hdGgucm91bmQodXBkYXRlZEhlaWdodCkpO1xuICAgICAgICBsZXQgcXVhbGl0eSA9IDAuODI7XG5cbiAgICAgICAgcmVuZGVySW1hZ2UoY3VycmVudFdpZHRoLCBjdXJyZW50SGVpZ2h0KTtcblxuICAgICAgICBsZXQgZGF0YVVybDogc3RyaW5nID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycsIHF1YWxpdHkpO1xuICAgICAgICBsZXQgYnl0ZVNpemUgPSBnZXRVcGxvYWRQYXlsb2FkQnl0ZVNpemUoZGF0YVVybCk7XG5cbiAgICAgICAgd2hpbGUoYnl0ZVNpemUgPiBtYXhCeXRlcyAmJiBxdWFsaXR5ID4gMC40NSkge1xuICAgICAgICAgIHF1YWxpdHkgPSBNYXRoLm1heCgwLjQ1LCBOdW1iZXIoKHF1YWxpdHkgLSAwLjA4KS50b0ZpeGVkKDIpKSk7XG4gICAgICAgICAgZGF0YVVybCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnLCBxdWFsaXR5KTtcbiAgICAgICAgICBieXRlU2l6ZSA9IGdldFVwbG9hZFBheWxvYWRCeXRlU2l6ZShkYXRhVXJsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHdoaWxlKGJ5dGVTaXplID4gbWF4Qnl0ZXMgJiYgKGN1cnJlbnRXaWR0aCA+IDMyMCB8fCBjdXJyZW50SGVpZ2h0ID4gMzIwKSkge1xuICAgICAgICAgIGN1cnJlbnRXaWR0aCA9IE1hdGgubWF4KDMyMCwgTWF0aC5yb3VuZChjdXJyZW50V2lkdGggKiAwLjg1KSk7XG4gICAgICAgICAgY3VycmVudEhlaWdodCA9IE1hdGgubWF4KDMyMCwgTWF0aC5yb3VuZChjdXJyZW50SGVpZ2h0ICogMC44NSkpO1xuICAgICAgICAgIHF1YWxpdHkgPSAwLjc4O1xuICAgICAgICAgIHJlbmRlckltYWdlKGN1cnJlbnRXaWR0aCwgY3VycmVudEhlaWdodCk7XG4gICAgICAgICAgZGF0YVVybCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnLCBxdWFsaXR5KTtcbiAgICAgICAgICBieXRlU2l6ZSA9IGdldFVwbG9hZFBheWxvYWRCeXRlU2l6ZShkYXRhVXJsKTtcblxuICAgICAgICAgIHdoaWxlKGJ5dGVTaXplID4gbWF4Qnl0ZXMgJiYgcXVhbGl0eSA+IDAuNDUpIHtcbiAgICAgICAgICAgIHF1YWxpdHkgPSBNYXRoLm1heCgwLjQ1LCBOdW1iZXIoKHF1YWxpdHkgLSAwLjA4KS50b0ZpeGVkKDIpKSk7XG4gICAgICAgICAgICBkYXRhVXJsID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvanBlZycsIHF1YWxpdHkpO1xuICAgICAgICAgICAgYnl0ZVNpemUgPSBnZXRVcGxvYWRQYXlsb2FkQnl0ZVNpemUoZGF0YVVybCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmVzb2x2ZShkYXRhVXJsKTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9yaWdpbmFsQmFzZTY0OiBzdHJpbmcgPSByZWFkZXIucmVzdWx0IGFzIHN0cmluZztcbiAgICAgIGltYWdlLnNyYyA9IG9yaWdpbmFsQmFzZTY0O1xuICAgIH07XG4gICAgcmVhZGVyLm9uZXJyb3IgPSAoZXZlbnQ6IFByb2dyZXNzRXZlbnQpID0+IHtcbiAgICAgIHJlamVjdChldmVudCk7XG4gICAgfTtcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgfSk7XG4iXSwibmFtZXMiOlsiZ2V0VXBsb2FkUGF5bG9hZEJ5dGVTaXplIiwiZGF0YVVybCIsImxlbmd0aCIsImdldEZpbGVOYW1lV2l0aG91dEV4dGVuc2lvbiIsIm5hbWUiLCJzcGxpdCIsInNsaWNlIiwiam9pbiIsImNyZWF0ZUltYWdlQ2FudmFzIiwiZmlsZSIsIm1heFNpemUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImltYWdlIiwiSW1hZ2UiLCJvYmplY3RVcmwiLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJvbmxvYWQiLCJyZXZva2VPYmplY3RVUkwiLCJjYW52YXMiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJoZWlnaHQiLCJ3aWR0aCIsInVwZGF0ZWRIZWlnaHQiLCJ1cGRhdGVkV2lkdGgiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsIkVycm9yIiwiTWF0aCIsIm1heCIsInJvdW5kIiwib25lcnJvciIsInNyYyIsInJlbmRlckltYWdlRmlsZSIsInF1YWxpdHkiLCJjbGVhclJlY3QiLCJkcmF3SW1hZ2UiLCJ0b0Jsb2IiLCJibG9iIiwiRmlsZSIsInR5cGUiLCJjb252ZXJ0RmlsZVRvVXBsb2FkRmlsZSIsIm1heEJ5dGVzIiwic3RhcnRzV2l0aCIsImN1cnJlbnRXaWR0aCIsImN1cnJlbnRIZWlnaHQiLCJ1cGxvYWRGaWxlIiwic2l6ZSIsIk51bWJlciIsInRvRml4ZWQiLCJjb252ZXJ0RmlsZVRvQmFzZTY0IiwicmVhZGVyIiwiRmlsZVJlYWRlciIsInJlbmRlckltYWdlIiwidG9EYXRhVVJMIiwiYnl0ZVNpemUiLCJvcmlnaW5hbEJhc2U2NCIsInJlc3VsdCIsImV2ZW50IiwicmVhZEFzRGF0YVVSTCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsMkJBQTJCLENBQUNDLFVBQTRCQSxRQUFRQyxNQUFNO0FBRTVFLE1BQU1DLDhCQUE4QixDQUFDQyxPQUNuQ0EsS0FBS0MsS0FBSyxDQUFDLEtBQUtDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBR0MsSUFBSSxDQUFDLFFBQVFIO0FBRzVDLE1BQU1JLG9CQUFvQixDQUFDQyxNQUFZQyxVQUtqQyxJQUFJQyxRQUFRLENBQUNDLFNBQVNDO1FBQzFCLE1BQU1DLFFBQVEsSUFBSUM7UUFDbEIsTUFBTUMsWUFBWUMsSUFBSUMsZUFBZSxDQUFDVDtRQUV0Q0ssTUFBTUssTUFBTSxHQUFHO1lBQ2JGLElBQUlHLGVBQWUsQ0FBQ0o7WUFFcEIsTUFBTUssU0FBNEJDLFNBQVNDLGFBQWEsQ0FBQztZQUN6RCxNQUFNLEVBQUNDLE1BQU0sRUFBRUMsS0FBSyxFQUFDLEdBQUdYO1lBQ3hCLElBQUlZLGdCQUF3QkY7WUFDNUIsSUFBSUcsZUFBdUJGO1lBRTNC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
@@ -0,0 +1,7 @@
1
+ import type { ComplexTranslations, SimpleTranslations } from '../index.js';
2
+ export declare const buildI18nResources: (translations: ComplexTranslations) => Record<string, Record<string, Record<string, string>>>;
3
+ export declare const buildSimpleI18nResources: (translations: SimpleTranslations) => Record<string, Record<string, Record<string, string>>>;
4
+ export declare const initI18n: (translations: SimpleTranslations | ComplexTranslations) => void;
5
+ export declare const updateI18nResources: (translations: ComplexTranslations) => void;
6
+ export declare const i18n: (key: string, params?: Record<string, any>, lng?: string, ns?: string) => string;
7
+ //# sourceMappingURL=i18n.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/utils/i18n.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAK3E,eAAO,MAAM,kBAAkB,GAC7B,cAAc,mBAAmB,2DAmBlC,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,cAAc,kBAAkB,2DAmBjC,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,cAAc,kBAAkB,GAAG,mBAAmB,SAoCvD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,cAAc,mBAAmB,SAelC,CAAC;AAEF,eAAO,MAAM,IAAI,GACf,KAAK,MAAM,EACX,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC5B,MAAM,MAAM,EACZ,KAAK,MAAM,KACV,MAUF,CAAC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Copyright (c) 2025-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { init, t } from 'i18next';
5
+ let initialized = false;
6
+ let currentResources = {};
7
+ export const buildI18nResources = (translations)=>{
8
+ const resources = {};
9
+ for(const key in translations){
10
+ const { locale, value, namespace } = translations[key];
11
+ const lang = locale || 'en';
12
+ const ns = namespace || 'translations';
13
+ if (!resources[lang]) {
14
+ resources[lang] = {};
15
+ }
16
+ if (!resources[lang][ns]) {
17
+ resources[lang][ns] = {};
18
+ }
19
+ resources[lang][ns][key] = value;
20
+ }
21
+ return resources;
22
+ };
23
+ export const buildSimpleI18nResources = (translations)=>{
24
+ const resources = {};
25
+ for(const key in translations){
26
+ const value = translations[key];
27
+ const lang = 'en'; // Default to English
28
+ const ns = 'translations'; // Default namespace
29
+ if (!resources[lang]) {
30
+ resources[lang] = {};
31
+ }
32
+ if (!resources[lang][ns]) {
33
+ resources[lang][ns] = {};
34
+ }
35
+ resources[lang][ns][key] = value;
36
+ }
37
+ return resources;
38
+ };
39
+ export const initI18n = (translations)=>{
40
+ if (initialized) {
41
+ return;
42
+ }
43
+ let resources = {};
44
+ // Check if it's a simple key-value format or complex format
45
+ if (translations && Object.keys(translations).length > 0) {
46
+ const firstKey = Object.keys(translations)[0];
47
+ const firstValue = translations[firstKey];
48
+ if (typeof firstValue === 'string') {
49
+ // Simple key-value format
50
+ resources = buildSimpleI18nResources(translations);
51
+ } else {
52
+ // Complex format with locale and namespace
53
+ resources = buildI18nResources(translations);
54
+ }
55
+ }
56
+ currentResources = resources;
57
+ const defaultLang = Object.keys(resources)[0] || 'en';
58
+ const namespaces = Object.keys(resources[defaultLang] || {});
59
+ init({
60
+ defaultNS: 'translations',
61
+ fallbackLng: defaultLang,
62
+ interpolation: {
63
+ escapeValue: false
64
+ },
65
+ lng: defaultLang,
66
+ ns: namespaces,
67
+ resources
68
+ });
69
+ initialized = true;
70
+ };
71
+ export const updateI18nResources = (translations)=>{
72
+ const newResources = buildI18nResources(translations);
73
+ Object.entries(newResources).forEach(([lng, namespaces])=>{
74
+ Object.entries(namespaces).forEach(([ns, keys])=>{
75
+ if (!currentResources[lng]) {
76
+ currentResources[lng] = {};
77
+ }
78
+ if (!currentResources[lng][ns]) {
79
+ currentResources[lng][ns] = {};
80
+ }
81
+ Object.assign(currentResources[lng][ns], keys);
82
+ });
83
+ });
84
+ };
85
+ export const i18n = (key, params, lng, ns)=>{
86
+ if (!initialized) {
87
+ return key;
88
+ }
89
+ return t(key, {
90
+ ...params || {},
91
+ lng,
92
+ ns: ns || 'translations'
93
+ });
94
+ };
95
+
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvaTE4bi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHsgaW5pdCwgdCB9IGZyb20gJ2kxOG5leHQnO1xuXG4vLyBJbXBvcnQgdHlwZXMgZnJvbSB0aGUgbWFpbiBpbmRleFxuaW1wb3J0IHR5cGUgeyBDb21wbGV4VHJhbnNsYXRpb25zLCBTaW1wbGVUcmFuc2xhdGlvbnMgfSBmcm9tICcuLi9pbmRleC5qcyc7XG5cbmxldCBpbml0aWFsaXplZCA9IGZhbHNlO1xubGV0IGN1cnJlbnRSZXNvdXJjZXM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+PiA9IHt9O1xuXG5leHBvcnQgY29uc3QgYnVpbGRJMThuUmVzb3VyY2VzID0gKFxuICB0cmFuc2xhdGlvbnM6IENvbXBsZXhUcmFuc2xhdGlvbnNcbikgPT4ge1xuICBjb25zdCByZXNvdXJjZXM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+PiA9IHt9O1xuXG4gIGZvcihjb25zdCBrZXkgaW4gdHJhbnNsYXRpb25zKSB7XG4gICAgY29uc3Qge2xvY2FsZSwgdmFsdWUsIG5hbWVzcGFjZX0gPSB0cmFuc2xhdGlvbnNba2V5XTtcbiAgICBjb25zdCBsYW5nID0gbG9jYWxlIHx8ICdlbic7XG4gICAgY29uc3QgbnMgPSBuYW1lc3BhY2UgfHwgJ3RyYW5zbGF0aW9ucyc7XG5cbiAgICBpZighcmVzb3VyY2VzW2xhbmddKSB7XG4gICAgICByZXNvdXJjZXNbbGFuZ10gPSB7fTtcbiAgICB9XG4gICAgaWYoIXJlc291cmNlc1tsYW5nXVtuc10pIHtcbiAgICAgIHJlc291cmNlc1tsYW5nXVtuc10gPSB7fTtcbiAgICB9XG4gICAgcmVzb3VyY2VzW2xhbmddW25zXVtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gcmVzb3VyY2VzO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkU2ltcGxlSTE4blJlc291cmNlcyA9IChcbiAgdHJhbnNsYXRpb25zOiBTaW1wbGVUcmFuc2xhdGlvbnNcbikgPT4ge1xuICBjb25zdCByZXNvdXJjZXM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+PiA9IHt9O1xuXG4gIGZvcihjb25zdCBrZXkgaW4gdHJhbnNsYXRpb25zKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0cmFuc2xhdGlvbnNba2V5XTtcbiAgICBjb25zdCBsYW5nID0gJ2VuJzsgLy8gRGVmYXVsdCB0byBFbmdsaXNoXG4gICAgY29uc3QgbnMgPSAndHJhbnNsYXRpb25zJzsgLy8gRGVmYXVsdCBuYW1lc3BhY2VcblxuICAgIGlmKCFyZXNvdXJjZXNbbGFuZ10pIHtcbiAgICAgIHJlc291cmNlc1tsYW5nXSA9IHt9O1xuICAgIH1cbiAgICBpZighcmVzb3VyY2VzW2xhbmddW25zXSkge1xuICAgICAgcmVzb3VyY2VzW2xhbmddW25zXSA9IHt9O1xuICAgIH1cbiAgICByZXNvdXJjZXNbbGFuZ11bbnNdW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHJldHVybiByZXNvdXJjZXM7XG59O1xuXG5leHBvcnQgY29uc3QgaW5pdEkxOG4gPSAoXG4gIHRyYW5zbGF0aW9uczogU2ltcGxlVHJhbnNsYXRpb25zIHwgQ29tcGxleFRyYW5zbGF0aW9uc1xuKSA9PiB7XG4gIGlmKGluaXRpYWxpemVkKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgbGV0IHJlc291cmNlczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj4+ID0ge307XG5cbiAgLy8gQ2hlY2sgaWYgaXQncyBhIHNpbXBsZSBrZXktdmFsdWUgZm9ybWF0IG9yIGNvbXBsZXggZm9ybWF0XG4gIGlmICh0cmFuc2xhdGlvbnMgJiYgT2JqZWN0LmtleXModHJhbnNsYXRpb25zKS5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgZmlyc3RLZXkgPSBPYmplY3Qua2V5cyh0cmFuc2xhdGlvbnMpWzBdO1xuICAgIGNvbnN0IGZpcnN0VmFsdWUgPSB0cmFuc2xhdGlvbnNbZmlyc3RLZXldO1xuXG4gICAgaWYgKHR5cGVvZiBmaXJzdFZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gU2ltcGxlIGtleS12YWx1ZSBmb3JtYXRcbiAgICAgIHJlc291cmNlcyA9IGJ1aWxkU2ltcGxlSTE4blJlc291cmNlcyh0cmFuc2xhdGlvbnMgYXMgU2ltcGxlVHJhbnNsYXRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQ29tcGxleCBmb3JtYXQgd2l0aCBsb2NhbGUgYW5kIG5hbWVzcGFjZVxuICAgICAgcmVzb3VyY2VzID0gYnVpbGRJMThuUmVzb3VyY2VzKHRyYW5zbGF0aW9ucyBhcyBDb21wbGV4VHJhbnNsYXRpb25zKTtcbiAgICB9XG4gIH1cblxuICBjdXJyZW50UmVzb3VyY2VzID0gcmVzb3VyY2VzO1xuICBjb25zdCBkZWZhdWx0TGFuZyA9IE9iamVjdC5rZXlzKHJlc291cmNlcylbMF0gfHwgJ2VuJztcbiAgY29uc3QgbmFtZXNwYWNlcyA9IE9iamVjdC5rZXlzKHJlc291cmNlc1tkZWZhdWx0TGFuZ10gfHwge30pO1xuXG4gIGluaXQoe1xuICAgIGRlZmF1bHROUzogJ3RyYW5zbGF0aW9ucycsXG4gICAgZmFsbGJhY2tMbmc6IGRlZmF1bHRMYW5nLFxuICAgIGludGVycG9sYXRpb246IHtlc2NhcGVWYWx1ZTogZmFsc2V9LFxuICAgIGxuZzogZGVmYXVsdExhbmcsXG4gICAgbnM6IG5hbWVzcGFjZXMsXG4gICAgcmVzb3VyY2VzXG4gIH0pO1xuXG4gIGluaXRpYWxpemVkID0gdHJ1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVJMThuUmVzb3VyY2VzID0gKFxuICB0cmFuc2xhdGlvbnM6IENvbXBsZXhUcmFuc2xhdGlvbnNcbikgPT4ge1xuICBjb25zdCBuZXdSZXNvdXJjZXMgPSBidWlsZEkxOG5SZXNvdXJjZXModHJhbnNsYXRpb25zKTtcblxuICBPYmplY3QuZW50cmllcyhuZXdSZXNvdXJjZXMpLmZvckVhY2goKFtsbmcsIG5hbWVzcGFjZXNdKSA9PiB7XG4gICAgT2JqZWN0LmVudHJpZXMobmFtZXNwYWNlcykuZm9yRWFjaCgoW25zLCBrZXlzXSkgPT4ge1xuICAgICAgaWYoIWN1cnJlbnRSZXNvdXJjZXNbbG5nXSkge1xuICAgICAgICBjdXJyZW50UmVzb3VyY2VzW2xuZ10gPSB7fTtcbiAgICAgIH1cbiAgICAgIGlmKCFjdXJyZW50UmVzb3VyY2VzW2xuZ11bbnNdKSB7XG4gICAgICAgIGN1cnJlbnRSZXNvdXJjZXNbbG5nXVtuc10gPSB7fTtcbiAgICAgIH1cbiAgICAgIE9iamVjdC5hc3NpZ24oY3VycmVudFJlc291cmNlc1tsbmddW25zXSwga2V5cyk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGkxOG4gPSAoXG4gIGtleTogc3RyaW5nLFxuICBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICBsbmc/OiBzdHJpbmcsXG4gIG5zPzogc3RyaW5nXG4pOiBzdHJpbmcgPT4ge1xuICBpZighaW5pdGlhbGl6ZWQpIHtcbiAgICByZXR1cm4ga2V5O1xuICB9XG5cbiAgcmV0dXJuIHQoa2V5LCB7XG4gICAgLi4uKHBhcmFtcyB8fCB7fSksXG4gICAgbG5nLFxuICAgIG5zOiBucyB8fCAndHJhbnNsYXRpb25zJ1xuICB9KTtcbn07Il0sIm5hbWVzIjpbImluaXQiLCJ0IiwiaW5pdGlhbGl6ZWQiLCJjdXJyZW50UmVzb3VyY2VzIiwiYnVpbGRJMThuUmVzb3VyY2VzIiwidHJhbnNsYXRpb25zIiwicmVzb3VyY2VzIiwia2V5IiwibG9jYWxlIiwidmFsdWUiLCJuYW1lc3BhY2UiLCJsYW5nIiwibnMiLCJidWlsZFNpbXBsZUkxOG5SZXNvdXJjZXMiLCJpbml0STE4biIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJmaXJzdEtleSIsImZpcnN0VmFsdWUiLCJkZWZhdWx0TGFuZyIsIm5hbWVzcGFjZXMiLCJkZWZhdWx0TlMiLCJmYWxsYmFja0xuZyIsImludGVycG9sYXRpb24iLCJlc2NhcGVWYWx1ZSIsImxuZyIsInVwZGF0ZUkxOG5SZXNvdXJjZXMiLCJuZXdSZXNvdXJjZXMiLCJlbnRyaWVzIiwiZm9yRWFjaCIsImFzc2lnbiIsImkxOG4iLCJwYXJhbXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVNBLElBQUksRUFBRUMsQ0FBQyxRQUFRLFVBQVU7QUFLbEMsSUFBSUMsY0FBYztBQUNsQixJQUFJQyxtQkFBMkUsQ0FBQztBQUVoRixPQUFPLE1BQU1DLHFCQUFxQixDQUNoQ0M7SUFFQSxNQUFNQyxZQUFvRSxDQUFDO0lBRTNFLElBQUksTUFBTUMsT0FBT0YsYUFBYztRQUM3QixNQUFNLEVBQUNHLE1BQU0sRUFBRUMsS0FBSyxFQUFFQyxTQUFTLEVBQUMsR0FBR0wsWUFBWSxDQUFDRSxJQUFJO1FBQ3BELE1BQU1JLE9BQU9ILFVBQVU7UUFDdkIsTUFBTUksS0FBS0YsYUFBYTtRQUV4QixJQUFHLENBQUNKLFNBQVMsQ0FBQ0ssS0FBSyxFQUFFO1lBQ25CTCxTQUFTLENBQUNLLEtBQUssR0FBRyxDQUFDO1FBQ3JCO1FBQ0EsSUFBRyxDQUFDTCxTQUFTLENBQUNLLEtBQUssQ0FBQ0MsR0FBRyxFQUFFO1lBQ3ZCTixTQUFTLENBQUNLLEtBQUssQ0FBQ0MsR0FBRyxHQUFHLENBQUM7UUFDekI7UUFDQU4sU0FBUyxDQUFDSyxLQUFLLENBQUNDLEdBQUcsQ0FBQ0wsSUFBSSxHQUFHRTtJQUM3QjtJQUVBLE9BQU9IO0FBQ1QsRUFBRTtBQUVGLE9BQU8s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
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Copyright (c) 2019-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */
5
+ export { appMutation, appQuery, getGraphql, publicMutation, publicQuery, refreshSession, uploadImage, type ApiResultsType, type ReaktorDbCollection, type SessionType } from './api.js';
6
+ export { createAction, createActions, createAllActions, type ActionOptions, type ActionReturnType, type ActionType, type ActionTypes } from './actionFactory.js';
7
+ export { createBaseActions, type BaseActionOptions } from './baseActionFactory.js';
8
+ export { createValidatorFactory, createValidatorManager, type BaseAdapterOptions } from './validatorFactory.js';
9
+ export { MetropolisContext, MetropolisProvider } from './MetropolisProvider.js';
10
+ export { PermissionGuard, PermissionLevel, usePermissions, type Permission, type PermissionGuardProps, type UsePermissionsReturn } from './permissionUtils.js';
11
+ export { useMetropolis } from './useMetropolis.js';
12
+ export { useConversationTyping, type ConversationTypingOptions, type UseConversationTypingOptions } from './useConversationTyping.js';
13
+ export { useTranslations } from './useTranslations.js';
14
+ export * from './app.js';
15
+ export * from './dateUtils.js';
16
+ export * from './file.js';
17
+ export * from './i18n.js';
18
+ export * from './location.js';
19
+ export * from './session.js';
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,WAAW,EACX,QAAQ,EACR,UAAU,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,WAAW,EACX,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EACjB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,WAAW,EACjB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACvB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAC,iBAAiB,EAAE,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EACL,eAAe,EACf,eAAe,EACf,cAAc,EACd,KAAK,UAAU,EACf,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAC,qBAAqB,EAAE,KAAK,yBAAyB,EAAE,KAAK,4BAA4B,EAAC,MAAM,4BAA4B,CAAC;AACpI,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AAGrD,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}