@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
@@ -0,0 +1,105 @@
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 { useCallback, useEffect, useMemo, useRef } from 'react';
5
+ import { useMetropolis } from './useMetropolis.js';
6
+ export const useTranslations = (options = {})=>{
7
+ const { locale = 'en', namespace, autoProcess = true, processInterval = 1000 } = options;
8
+ const { translationActions } = useMetropolis();
9
+ const processTimeoutRef = useRef(null);
10
+ const lastProcessRef = useRef(0);
11
+ const t = useCallback((key, fallback)=>{
12
+ if (!translationActions) {
13
+ return fallback || key;
14
+ }
15
+ const translation = translationActions.getTranslation(key, locale, namespace);
16
+ if (translation) {
17
+ return translation;
18
+ }
19
+ if (autoProcess && !translationActions.hasTranslation(key, locale, namespace)) {
20
+ translationActions.queueTranslationKey(key, locale, namespace);
21
+ }
22
+ return fallback || key;
23
+ }, [
24
+ translationActions,
25
+ locale,
26
+ namespace,
27
+ autoProcess
28
+ ]);
29
+ const hasTranslation = useCallback((key)=>{
30
+ if (!translationActions) {
31
+ return false;
32
+ }
33
+ return translationActions.hasTranslation(key, locale, namespace);
34
+ }, [
35
+ translationActions,
36
+ locale,
37
+ namespace
38
+ ]);
39
+ const queueTranslation = useCallback((key)=>{
40
+ if (!translationActions) return;
41
+ translationActions.queueTranslationKey(key, locale, namespace);
42
+ }, [
43
+ translationActions,
44
+ locale,
45
+ namespace
46
+ ]);
47
+ const processPending = useCallback(async ()=>{
48
+ if (!translationActions) return;
49
+ const now = Date.now();
50
+ if (now - lastProcessRef.current < processInterval) {
51
+ return;
52
+ }
53
+ lastProcessRef.current = now;
54
+ await translationActions.processPendingTranslations(locale, namespace);
55
+ }, [
56
+ translationActions,
57
+ locale,
58
+ namespace,
59
+ processInterval
60
+ ]);
61
+ useEffect(()=>{
62
+ if (!autoProcess || !translationActions) return;
63
+ const processQueued = ()=>{
64
+ processPending();
65
+ };
66
+ if (processTimeoutRef.current) {
67
+ clearTimeout(processTimeoutRef.current);
68
+ }
69
+ processTimeoutRef.current = setTimeout(processQueued, processInterval);
70
+ return ()=>{
71
+ if (processTimeoutRef.current) {
72
+ clearTimeout(processTimeoutRef.current);
73
+ }
74
+ };
75
+ }, [
76
+ autoProcess,
77
+ translationActions,
78
+ processPending,
79
+ processInterval
80
+ ]);
81
+ const isLoading = useMemo(()=>{
82
+ if (!translationActions) return false;
83
+ const state = translationActions.flux?.getState('translations');
84
+ return state?.isQueueing || false;
85
+ }, [
86
+ translationActions
87
+ ]);
88
+ const error = useMemo(()=>{
89
+ if (!translationActions) return null;
90
+ const state = translationActions.flux?.getState('translations');
91
+ return state?.error || null;
92
+ }, [
93
+ translationActions
94
+ ]);
95
+ return {
96
+ t,
97
+ hasTranslation,
98
+ queueTranslation,
99
+ processPending,
100
+ isLoading,
101
+ error
102
+ };
103
+ };
104
+
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvdXNlVHJhbnNsYXRpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IHVzZU1ldHJvcG9saXMgfSBmcm9tICcuL3VzZU1ldHJvcG9saXMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFVzZVRyYW5zbGF0aW9uc09wdGlvbnMge1xuICByZWFkb25seSBsb2NhbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWVzcGFjZT86IHN0cmluZztcbiAgcmVhZG9ubHkgYXV0b1Byb2Nlc3M/OiBib29sZWFuO1xuICByZWFkb25seSBwcm9jZXNzSW50ZXJ2YWw/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlVHJhbnNsYXRpb25zUmV0dXJuIHtcbiAgcmVhZG9ubHkgdDogKGtleTogc3RyaW5nLCBmYWxsYmFjaz86IHN0cmluZykgPT4gc3RyaW5nO1xuICByZWFkb25seSBoYXNUcmFuc2xhdGlvbjogKGtleTogc3RyaW5nKSA9PiBib29sZWFuO1xuICByZWFkb25seSBxdWV1ZVRyYW5zbGF0aW9uOiAoa2V5OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IHByb2Nlc3NQZW5kaW5nOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZWFkb25seSBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGVycm9yOiBFcnJvciB8IG51bGw7XG59XG5cbmV4cG9ydCBjb25zdCB1c2VUcmFuc2xhdGlvbnMgPSAob3B0aW9uczogVXNlVHJhbnNsYXRpb25zT3B0aW9ucyA9IHt9KTogVXNlVHJhbnNsYXRpb25zUmV0dXJuID0+IHtcbiAgY29uc3Qge1xuICAgIGxvY2FsZSA9ICdlbicsXG4gICAgbmFtZXNwYWNlLFxuICAgIGF1dG9Qcm9jZXNzID0gdHJ1ZSxcbiAgICBwcm9jZXNzSW50ZXJ2YWwgPSAxMDAwXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHt0cmFuc2xhdGlvbkFjdGlvbnN9ID0gdXNlTWV0cm9wb2xpcygpO1xuICBjb25zdCBwcm9jZXNzVGltZW91dFJlZiA9IHVzZVJlZjxOb2RlSlMuVGltZW91dCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBsYXN0UHJvY2Vzc1JlZiA9IHVzZVJlZjxudW1iZXI+KDApO1xuXG4gIGNvbnN0IHQgPSB1c2VDYWxsYmFjaygoa2V5OiBzdHJpbmcsIGZhbGxiYWNrPzogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBpZiAoIXRyYW5zbGF0aW9uQWN0aW9ucykge1xuICAgICAgcmV0dXJuIGZhbGxiYWNrIHx8IGtleTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2xhdGlvbiA9IHRyYW5zbGF0aW9uQWN0aW9ucy5nZXRUcmFuc2xhdGlvbihrZXksIGxvY2FsZSwgbmFtZXNwYWNlKTtcblxuICAgIGlmICh0cmFuc2xhdGlvbikge1xuICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uO1xuICAgIH1cblxuICAgIGlmIChhdXRvUHJvY2VzcyAmJiAhdHJhbnNsYXRpb25BY3Rpb25zLmhhc1RyYW5zbGF0aW9uKGtleSwgbG9jYWxlLCBuYW1lc3BhY2UpKSB7XG4gICAgICB0cmFuc2xhdGlvbkFjdGlvbnMucXVldWVUcmFuc2xhdGlvbktleShrZXksIGxvY2FsZSwgbmFtZXNwYWNlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsbGJhY2sgfHwga2V5O1xuICB9LCBbdHJhbnNsYXRpb25BY3Rpb25zLCBsb2NhbGUsIG5hbWVzcGFjZSwgYXV0b1Byb2Nlc3NdKTtcblxuICBjb25zdCBoYXNUcmFuc2xhdGlvbiA9IHVzZUNhbGxiYWNrKChrZXk6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgIGlmICghdHJhbnNsYXRpb25BY3Rpb25zKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyYW5zbGF0aW9uQWN0aW9ucy5oYXNUcmFuc2xhdGlvbihrZXksIGxvY2FsZSwgbmFtZXNwYWNlKTtcbiAgfSwgW3RyYW5zbGF0aW9uQWN0aW9ucywgbG9jYWxlLCBuYW1lc3BhY2VdKTtcblxuICBjb25zdCBxdWV1ZVRyYW5zbGF0aW9uID0gdXNlQ2FsbGJhY2soKGtleTogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgaWYgKCF0cmFuc2xhdGlvbkFjdGlvbnMpIHJldHVybjtcbiAgICB0cmFuc2xhdGlvbkFjdGlvbnMucXVldWVUcmFuc2xhdGlvbktleShrZXksIGxvY2FsZSwgbmFtZXNwYWNlKTtcbiAgfSwgW3RyYW5zbGF0aW9uQWN0aW9ucywgbG9jYWxlLCBuYW1lc3BhY2VdKTtcblxuICBjb25zdCBwcm9jZXNzUGVuZGluZyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBpZiAoIXRyYW5zbGF0aW9uQWN0aW9ucykgcmV0dXJuO1xuXG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICBpZiAobm93IC0gbGFzdFByb2Nlc3NSZWYuY3VycmVudCA8IHByb2Nlc3NJbnRlcnZhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxhc3RQcm9jZXNzUmVmLmN1cnJlbnQgPSBub3c7XG4gICAgYXdhaXQgdHJhbnNsYXRpb25BY3Rpb25zLnByb2Nlc3NQZW5kaW5nVHJhbnNsYXRpb25zKGxvY2FsZSwgbmFtZXNwYWNlKTtcbiAgfSwgW3RyYW5zbGF0aW9uQWN0aW9ucywgbG9jYWxlLCBuYW1lc3BhY2UsIHByb2Nlc3NJbnRlcnZhbF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhdXRvUHJvY2VzcyB8fCAhdHJhbnNsYXRpb25BY3Rpb25zKSByZXR1cm47XG5cbiAgICBjb25zdCBwcm9jZXNzUXVldWVkID0gKCkgPT4ge1xuICAgICAgcHJvY2Vzc1BlbmRpbmcoKTtcbiAgICB9O1xuXG4gICAgaWYgKHByb2Nlc3NUaW1lb3V0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChwcm9jZXNzVGltZW91dFJlZi5jdXJyZW50KTtcbiAgICB9XG5cbiAgICBwcm9jZXNzVGltZW91dFJlZi5jdXJyZW50ID0gc2V0VGltZW91dChwcm9jZXNzUXVldWVkLCBwcm9jZXNzSW50ZXJ2YWwpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChwcm9jZXNzVGltZW91dFJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNsZWFyVGltZW91dChwcm9jZXNzVGltZW91dFJlZi5jdXJyZW50KTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbYXV0b1Byb2Nlc3MsIHRyYW5zbGF0aW9uQWN0aW9ucywgcHJvY2Vzc1BlbmRpbmcsIHByb2Nlc3NJbnRlcnZhbF0pO1xuXG4gIGNvbnN0IGlzTG9hZGluZyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghdHJhbnNsYXRpb25BY3Rpb25zKSByZXR1cm4gZmFsc2U7XG4gICAgY29uc3Qgc3RhdGUgPSAodHJhbnNsYXRpb25BY3Rpb25zIGFzIGFueSkuZmx1eD8uZ2V0U3RhdGUoJ3RyYW5zbGF0aW9ucycpO1xuICAgIHJldHVybiBzdGF0ZT8uaXNRdWV1ZWluZyB8fCBmYWxzZTtcbiAgfSwgW3RyYW5zbGF0aW9uQWN0aW9uc10pO1xuXG4gIGNvbnN0IGVycm9yID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCF0cmFuc2xhdGlvbkFjdGlvbnMpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IHN0YXRlID0gKHRyYW5zbGF0aW9uQWN0aW9ucyBhcyBhbnkpLmZsdXg/LmdldFN0YXRlKCd0cmFuc2xhdGlvbnMnKTtcbiAgICByZXR1cm4gc3RhdGU/LmVycm9yIHx8IG51bGw7XG4gIH0sIFt0cmFuc2xhdGlvbkFjdGlvbnNdKTtcblxuICByZXR1cm4ge1xuICAgIHQsXG4gICAgaGFzVHJhbnNsYXRpb24sXG4gICAgcXVldWVUcmFuc2xhdGlvbixcbiAgICBwcm9jZXNzUGVuZGluZyxcbiAgICBpc0xvYWRpbmcsXG4gICAgZXJyb3JcbiAgfTtcbn07Il0sIm5hbWVzIjpbInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVJlZiIsInVzZU1ldHJvcG9saXMiLCJ1c2VUcmFuc2xhdGlvbnMiLCJvcHRpb25zIiwibG9jYWxlIiwibmFtZXNwYWNlIiwiYXV0b1Byb2Nlc3MiLCJwcm9jZXNzSW50ZXJ2YWwiLCJ0cmFuc2xhdGlvbkFjdGlvbnMiLCJwcm9jZXNzVGltZW91dFJlZiIsImxhc3RQcm9jZXNzUmVmIiwidCIsImtleSIsImZhbGxiYWNrIiwidHJhbnNsYXRpb24iLCJnZXRUcmFuc2xhdGlvbiIsImhhc1RyYW5zbGF0aW9uIiwicXVldWVUcmFuc2xhdGlvbktleSIsInF1ZXVlVHJhbnNsYXRpb24iLCJwcm9jZXNzUGVuZGluZyIsIm5vdyIsIkRhdGUiLCJjdXJyZW50IiwicHJvY2Vzc1BlbmRpbmdUcmFuc2xhdGlvbnMiLCJwcm9jZXNzUXVldWVkIiwiY2xlYXJUaW1lb3V0Iiwic2V0VGltZW91dCIsImlzTG9hZGluZyIsInN0YXRlIiwiZmx1eCIsImdldFN0YXRlIiwiaXNRdWV1ZWluZyIsImVycm9yIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFTQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLFFBQVEsUUFBUTtBQUVoRSxTQUFTQyxhQUFhLFFBQVEscUJBQXFCO0FBa0JuRCxPQUFPLE1BQU1DLGtCQUFrQixDQUFDQyxVQUFrQyxDQUFDLENBQUM7SUFDbEUsTUFBTSxFQUNKQyxTQUFTLElBQUksRUFDYkMsU0FBUyxFQUNUQyxjQUFjLElBQUks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
@@ -40,9 +40,10 @@ export declare const createValidatorFactory: <T extends BaseAdapterOptions>(defa
40
40
  * );
41
41
  */
42
42
  export declare const createValidatorManager: <T extends BaseAdapterOptions>(defaultValidator: (input: unknown, options?: T) => any, initialOptions?: T) => {
43
- getCustomAdapter: () => ((input: unknown, options?: T) => any) | undefined;
43
+ getCustomAdapter: () => (input: unknown, options?: T) => any;
44
44
  getOptions: () => T;
45
45
  updateAdapter: (adapter: (input: unknown, options?: T) => any) => void;
46
46
  updateOptions: (options: T) => void;
47
- validator: (input: unknown, validatorOptions?: T | undefined) => any;
47
+ validator: (input: unknown, validatorOptions?: T) => any;
48
48
  };
49
+ //# sourceMappingURL=validatorFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validatorFactory.d.ts","sourceRoot":"","sources":["../../src/utils/validatorFactory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,aAAa,GAAG,YAAY,GAAG,MAAM,CAAC;IACpD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;CAChD;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,kBAAkB,EACjE,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,EACtD,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,EACpD,UAAU,CAAC,MACP,OAAO,OAAO,EAAE,mBAAmB,CAAC,QAczC,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,kBAAkB,EACjE,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,EAEtD,iBAAgB,CAAW;oCAMC,OAAO,YAAY,CAAC,KAAK,GAAG;;6BAExB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,KAAG,IAAI;6BAI3C,CAAC,KAAG,IAAI;uBAMd,OAAO,qBAAqB,CAAC;CAuBxD,CAAC"}
@@ -1,2 +1,95 @@
1
- const p=(a,i,r)=>(n,o)=>{const t={...r,...o};let e=a(n,t);return i&&(e=i(e,t)),t?.customValidation&&(e=t.customValidation(e)),e},d=(a,i={})=>{let n={...{},...i},o,t=p(a,o,n);return{getCustomAdapter:()=>o,getOptions:()=>({...n}),updateAdapter:s=>{o=s,t=p(a,o,n)},updateOptions:s=>{n={...n,...s},t=p(a,o,n)},validator:t}};export{p as createValidatorFactory,d as createValidatorManager};
2
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL3ZhbGlkYXRvckZhY3RvcnkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUFkYXB0ZXJPcHRpb25zIHtcbiAgc3RyaWN0PzogYm9vbGVhbjtcbiAgYWxsb3dQYXJ0aWFsPzogYm9vbGVhbjtcbiAgZW52aXJvbm1lbnQ/OiAnZGV2ZWxvcG1lbnQnIHwgJ3Byb2R1Y3Rpb24nIHwgJ3Rlc3QnO1xuICBjdXN0b21WYWxpZGF0aW9uPzogKGlucHV0OiB1bmtub3duKSA9PiB1bmtub3duO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB2YWxpZGF0b3IgZmFjdG9yeSB0aGF0IG1lcmdlcyBjdXN0b20gYWRhcHRlcnMgd2l0aCBkZWZhdWx0IGJlaGF2aW9yLlxuICogVGhpcyBlbGltaW5hdGVzIGNvZGUgZHVwbGljYXRpb24gYWNyb3NzIGFsbCBhY3Rpb24gZmlsZXMuXG4gKlxuICogQHBhcmFtIGRlZmF1bHRWYWxpZGF0b3IgLSBUaGUgZGVmYXVsdCB2YWxpZGF0aW9uIGZ1bmN0aW9uXG4gKiBAcGFyYW0gY3VzdG9tQWRhcHRlciAtIE9wdGlvbmFsIGN1c3RvbSBhZGFwdGVyIGZ1bmN0aW9uXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFkYXB0ZXIgb3B0aW9uc1xuICogQHJldHVybnMgQSB2YWxpZGF0b3IgZnVuY3Rpb24gdGhhdCBhcHBsaWVzIGRlZmF1bHQgKyBjdXN0b20gdmFsaWRhdGlvblxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCB2YWxpZGF0ZVVzZXIgPSBjcmVhdGVWYWxpZGF0b3JGYWN0b3J5KFxuICogICBkZWZhdWx0VXNlclZhbGlkYXRvcixcbiAqICAgY3VzdG9tVXNlckFkYXB0ZXIsXG4gKiAgIHVzZXJBZGFwdGVyT3B0aW9uc1xuICogKTtcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVZhbGlkYXRvckZhY3RvcnkgPSA8VCBleHRlbmRzIEJhc2VBZGFwdGVyT3B0aW9ucz4oXG4gIGRlZmF1bHRWYWxpZGF0b3I6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFQpID0+IGFueSxcbiAgY3VzdG9tQWRhcHRlcj86IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFQpID0+IGFueSxcbiAgb3B0aW9ucz86IFRcbikgPT4gKGlucHV0OiB1bmtub3duLCB2YWxpZGF0b3JPcHRpb25zPzogVCkgPT4ge1xuICBjb25zdCBtZXJnZWRPcHRpb25zID0gey4uLm9wdGlvbnMsIC4uLnZhbGlkYXRvck9wdGlvbnN9O1xuXG4gIC8vIFN0YXJ0IHdpdGggZGVmYXVsdCB2YWxpZGF0aW9uXG4gIGxldCB2YWxpZGF0ZWQgPSBkZWZhdWx0VmFsaWRhdG9yKGlucHV0LCBtZXJnZWRPcHRpb25zIGFzIFQpO1xuXG4gIC8vIEFwcGx5IGN1c3RvbSB2YWxpZGF0aW9uIGlmIHByb3ZpZGVkXG4gIGlmKGN1c3RvbUFkYXB0ZXIpIHtcbiAgICB2YWxpZGF0ZWQgPSBjdXN0b21BZGFwdGVyKHZhbGlkYXRlZCwgbWVyZ2VkT3B0aW9ucyBhcyBUKTtcbiAgfVxuXG4gIC8vIEFwcGx5IGN1c3RvbSB2YWxpZGF0aW9uIGZyb20gb3B0aW9ucyBpZiBwcm92aWRlZFxuICBpZihtZXJnZWRPcHRpb25zPy5jdXN0b21WYWxpZGF0aW9uKSB7XG4gICAgdmFsaWRhdGVkID0gbWVyZ2VkT3B0aW9ucy5jdXN0b21WYWxpZGF0aW9uKHZhbGlkYXRlZCk7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVkO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgdmFsaWRhdG9yIG1hbmFnZXIgdGhhdCBoYW5kbGVzIGFkYXB0ZXIgdXBkYXRlcyBhbmQgcmVjcmVhdGlvbi5cbiAqIFRoaXMgY2VudHJhbGl6ZXMgdGhlIHVwZGF0ZSBsb2dpYyB0aGF0J3MgZHVwbGljYXRlZCBhY3Jvc3MgYWN0aW9uIGZpbGVzLlxuICpcbiAqIEBwYXJhbSBkZWZhdWx0VmFsaWRhdG9yIC0gVGhlIGRlZmF1bHQgdmFsaWRhdGlvbiBmdW5jdGlvblxuICogQHBhcmFtIGluaXRpYWxPcHRpb25zIC0gSW5pdGlhbCBhZGFwdGVyIG9wdGlvbnNcbiAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIHZhbGlkYXRvciBhbmQgdXBkYXRlIGZ1bmN0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCB7IHZhbGlkYXRvciwgdXBkYXRlQWRhcHRlciwgdXBkYXRlT3B0aW9ucyB9ID0gY3JlYXRlVmFsaWRhdG9yTWFuYWdlcihcbiAqICAgZGVmYXVsdFVzZXJWYWxpZGF0b3IsXG4gKiAgIHVzZXJBZGFwdGVyT3B0aW9uc1xuICogKTtcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVZhbGlkYXRvck1hbmFnZXIgPSA8VCBleHRlbmRzIEJhc2VBZGFwdGVyT3B0aW9ucz4oXG4gIGRlZmF1bHRWYWxpZGF0b3I6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFQpID0+IGFueSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9jb25zaXN0ZW50LXR5cGUtYXNzZXJ0aW9uc1xuICBpbml0aWFsT3B0aW9uczogVCA9IHt9IGFzIFRcbikgPT4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2NvbnNpc3RlbnQtdHlwZS1hc3NlcnRpb25zXG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBUID0ge30gYXMgVDtcblxuICBsZXQgYWRhcHRlck9wdGlvbnM6IFQgPSB7Li4uZGVmYXVsdE9wdGlvbnMsIC4uLmluaXRpYWxPcHRpb25zfTtcbiAgbGV0IGN1c3RvbUFkYXB0ZXI6ICgoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBUKSA9PiBhbnkpIHwgdW5kZWZpbmVkO1xuXG4gIGxldCB2YWxpZGF0b3IgPSBjcmVhdGVWYWxpZGF0b3JGYWN0b3J5KGRlZmF1bHRWYWxpZGF0b3IsIGN1c3RvbUFkYXB0ZXIsIGFkYXB0ZXJPcHRpb25zKTtcblxuICBjb25zdCB1cGRhdGVBZGFwdGVyID0gKGFkYXB0ZXI6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFQpID0+IGFueSk6IHZvaWQgPT4ge1xuICAgIGN1c3RvbUFkYXB0ZXIgPSBhZGFwdGVyO1xuICAgIHZhbGlkYXRvciA9IGNyZWF0ZVZhbGlkYXRvckZhY3RvcnkoZGVmYXVsdFZhbGlkYXRvciwgY3VzdG9tQWRhcHRlciwgYWRhcHRlck9wdGlvbnMpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZU9wdGlvbnMgPSAob3B0aW9uczogVCk6IHZvaWQgPT4ge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC10eXBlLWFzc2VydGlvbnNcbiAgICBhZGFwdGVyT3B0aW9ucyA9IHsuLi5hZGFwdGVyT3B0aW9ucywgLi4ub3B0aW9uc30gYXMgVDtcbiAgICB2YWxpZGF0b3IgPSBjcmVhdGVWYWxpZGF0b3JGYWN0b3J5KGRlZmF1bHRWYWxpZGF0b3IsIGN1c3RvbUFkYXB0ZXIsIGFkYXB0ZXJPcHRpb25zKTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGdldEN1c3RvbUFkYXB0ZXI6ICgpID0+IGN1c3RvbUFkYXB0ZXIsXG4gICAgZ2V0T3B0aW9uczogKCkgPT4ge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9jb25zaXN0ZW50LXR5cGUtYXNzZXJ0aW9uc1xuICAgICAgY29uc3Qgb3B0aW9uczogVCA9IHsuLi5hZGFwdGVyT3B0aW9uc30gYXMgVDtcbiAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH0sXG4gICAgdXBkYXRlQWRhcHRlcixcbiAgICB1cGRhdGVPcHRpb25zLFxuICAgIHZhbGlkYXRvclxuICB9O1xufTsiXSwKICAibWFwcGluZ3MiOiAiQUE0Qk8sTUFBTUEsRUFBeUIsQ0FDcENDLEVBQ0FDLEVBQ0FDLElBQ0csQ0FBQ0MsRUFBZ0JDLElBQXlCLENBQzdDLE1BQU1DLEVBQWdCLENBQUMsR0FBR0gsRUFBUyxHQUFHRSxDQUFnQixFQUd0RCxJQUFJRSxFQUFZTixFQUFpQkcsRUFBT0UsQ0FBa0IsRUFHMUQsT0FBR0osSUFDREssRUFBWUwsRUFBY0ssRUFBV0QsQ0FBa0IsR0FJdERBLEdBQWUsbUJBQ2hCQyxFQUFZRCxFQUFjLGlCQUFpQkMsQ0FBUyxHQUcvQ0EsQ0FDVCxFQWdCYUMsRUFBeUIsQ0FDcENQLEVBRUFRLEVBQW9CLENBQUMsSUFDbEIsQ0FJSCxJQUFJQyxFQUFvQixDQUFDLEdBRkMsQ0FBQyxFQUVpQixHQUFHRCxDQUFjLEVBQ3pEUCxFQUVBUyxFQUFZWCxFQUF1QkMsRUFBa0JDLEVBQWVRLENBQWMsRUFhdEYsTUFBTyxDQUNMLGlCQUFrQixJQUFNUixFQUN4QixXQUFZLEtBRVMsQ0FBQyxHQUFHUSxDQUFjLEdBR3ZDLGNBbEJxQkUsR0FBd0QsQ0FDN0VWLEVBQWdCVSxFQUNoQkQsRUFBWVgsRUFBdUJDLEVBQWtCQyxFQUFlUSxDQUFjLENBQ3BGLEVBZ0JFLGNBZHFCUCxHQUFxQixDQUUxQ08sRUFBaUIsQ0FBQyxHQUFHQSxFQUFnQixHQUFHUCxDQUFPLEVBQy9DUSxFQUFZWCxFQUF1QkMsRUFBa0JDLEVBQWVRLENBQWMsQ0FDcEYsRUFXRSxVQUFBQyxDQUNGLENBQ0YiLAogICJuYW1lcyI6IFsiY3JlYXRlVmFsaWRhdG9yRmFjdG9yeSIsICJkZWZhdWx0VmFsaWRhdG9yIiwgImN1c3RvbUFkYXB0ZXIiLCAib3B0aW9ucyIsICJpbnB1dCIsICJ2YWxpZGF0b3JPcHRpb25zIiwgIm1lcmdlZE9wdGlvbnMiLCAidmFsaWRhdGVkIiwgImNyZWF0ZVZhbGlkYXRvck1hbmFnZXIiLCAiaW5pdGlhbE9wdGlvbnMiLCAiYWRhcHRlck9wdGlvbnMiLCAidmFsaWRhdG9yIiwgImFkYXB0ZXIiXQp9Cg==
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
+ * Creates a validator factory that merges custom adapters with default behavior.
6
+ * This eliminates code duplication across all action files.
7
+ *
8
+ * @param defaultValidator - The default validation function
9
+ * @param customAdapter - Optional custom adapter function
10
+ * @param options - Adapter options
11
+ * @returns A validator function that applies default + custom validation
12
+ *
13
+ * @example
14
+ * const validateUser = createValidatorFactory(
15
+ * defaultUserValidator,
16
+ * customUserAdapter,
17
+ * userAdapterOptions
18
+ * );
19
+ */ export const createValidatorFactory = (defaultValidator, customAdapter, options)=>(input, validatorOptions)=>{
20
+ const mergedOptions = {
21
+ ...options,
22
+ ...validatorOptions
23
+ };
24
+ let validated = defaultValidator(input, mergedOptions);
25
+ if (customAdapter) {
26
+ validated = customAdapter(validated, mergedOptions);
27
+ }
28
+ if (mergedOptions?.customValidation) {
29
+ validated = mergedOptions.customValidation(validated);
30
+ }
31
+ return validated;
32
+ };
33
+ /**
34
+ * Creates a validator manager that handles adapter updates and recreation.
35
+ * This centralizes the update logic that's duplicated across action files.
36
+ *
37
+ * @param defaultValidator - The default validation function
38
+ * @param initialOptions - Initial adapter options
39
+ * @returns An object with validator and update functions
40
+ *
41
+ * @example
42
+ * const { validator, updateAdapter, updateOptions } = createValidatorManager(
43
+ * defaultUserValidator,
44
+ * userAdapterOptions
45
+ * );
46
+ */ export const createValidatorManager = (defaultValidator, // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
47
+ initialOptions = {})=>{
48
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
49
+ const defaultOptions = {};
50
+ let adapterOptions = {
51
+ ...defaultOptions,
52
+ ...initialOptions
53
+ };
54
+ let customAdapter;
55
+ const updateAdapter = (adapter)=>{
56
+ customAdapter = adapter;
57
+ };
58
+ const updateOptions = (options)=>{
59
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
60
+ adapterOptions = {
61
+ ...adapterOptions,
62
+ ...options
63
+ };
64
+ };
65
+ // Create validator function that always uses current customAdapter and adapterOptions
66
+ const validator = (input, validatorOptions)=>{
67
+ const mergedOptions = {
68
+ ...adapterOptions,
69
+ ...validatorOptions
70
+ };
71
+ let validated = defaultValidator(input, mergedOptions);
72
+ if (customAdapter) {
73
+ validated = customAdapter(validated, mergedOptions);
74
+ }
75
+ if (mergedOptions?.customValidation) {
76
+ validated = mergedOptions.customValidation(validated);
77
+ }
78
+ return validated;
79
+ };
80
+ return {
81
+ getCustomAdapter: ()=>customAdapter,
82
+ getOptions: ()=>{
83
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
84
+ const options = {
85
+ ...adapterOptions
86
+ };
87
+ return options;
88
+ },
89
+ updateAdapter,
90
+ updateOptions,
91
+ validator
92
+ };
93
+ };
94
+
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvdmFsaWRhdG9yRmFjdG9yeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VBZGFwdGVyT3B0aW9ucyB7XG4gIHN0cmljdD86IGJvb2xlYW47XG4gIGFsbG93UGFydGlhbD86IGJvb2xlYW47XG4gIGVudmlyb25tZW50PzogJ2RldmVsb3BtZW50JyB8ICdwcm9kdWN0aW9uJyB8ICd0ZXN0JztcbiAgY3VzdG9tVmFsaWRhdGlvbj86IChpbnB1dDogdW5rbm93bikgPT4gdW5rbm93bjtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdmFsaWRhdG9yIGZhY3RvcnkgdGhhdCBtZXJnZXMgY3VzdG9tIGFkYXB0ZXJzIHdpdGggZGVmYXVsdCBiZWhhdmlvci5cbiAqIFRoaXMgZWxpbWluYXRlcyBjb2RlIGR1cGxpY2F0aW9uIGFjcm9zcyBhbGwgYWN0aW9uIGZpbGVzLlxuICpcbiAqIEBwYXJhbSBkZWZhdWx0VmFsaWRhdG9yIC0gVGhlIGRlZmF1bHQgdmFsaWRhdGlvbiBmdW5jdGlvblxuICogQHBhcmFtIGN1c3RvbUFkYXB0ZXIgLSBPcHRpb25hbCBjdXN0b20gYWRhcHRlciBmdW5jdGlvblxuICogQHBhcmFtIG9wdGlvbnMgLSBBZGFwdGVyIG9wdGlvbnNcbiAqIEByZXR1cm5zIEEgdmFsaWRhdG9yIGZ1bmN0aW9uIHRoYXQgYXBwbGllcyBkZWZhdWx0ICsgY3VzdG9tIHZhbGlkYXRpb25cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgdmFsaWRhdGVVc2VyID0gY3JlYXRlVmFsaWRhdG9yRmFjdG9yeShcbiAqICAgZGVmYXVsdFVzZXJWYWxpZGF0b3IsXG4gKiAgIGN1c3RvbVVzZXJBZGFwdGVyLFxuICogICB1c2VyQWRhcHRlck9wdGlvbnNcbiAqICk7XG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVWYWxpZGF0b3JGYWN0b3J5ID0gPFQgZXh0ZW5kcyBCYXNlQWRhcHRlck9wdGlvbnM+KFxuICBkZWZhdWx0VmFsaWRhdG9yOiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBUKSA9PiBhbnksXG4gIGN1c3RvbUFkYXB0ZXI/OiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBUKSA9PiBhbnksXG4gIG9wdGlvbnM/OiBUXG4pID0+IChpbnB1dDogdW5rbm93biwgdmFsaWRhdG9yT3B0aW9ucz86IFQpID0+IHtcbiAgY29uc3QgbWVyZ2VkT3B0aW9ucyA9IHsuLi5vcHRpb25zLCAuLi52YWxpZGF0b3JPcHRpb25zfTtcblxuICBsZXQgdmFsaWRhdGVkID0gZGVmYXVsdFZhbGlkYXRvcihpbnB1dCwgbWVyZ2VkT3B0aW9ucyBhcyBUKTtcblxuICBpZihjdXN0b21BZGFwdGVyKSB7XG4gICAgdmFsaWRhdGVkID0gY3VzdG9tQWRhcHRlcih2YWxpZGF0ZWQsIG1lcmdlZE9wdGlvbnMgYXMgVCk7XG4gIH1cblxuICBpZihtZXJnZWRPcHRpb25zPy5jdXN0b21WYWxpZGF0aW9uKSB7XG4gICAgdmFsaWRhdGVkID0gbWVyZ2VkT3B0aW9ucy5jdXN0b21WYWxpZGF0aW9uKHZhbGlkYXRlZCk7XG4gIH1cblxuICByZXR1cm4gdmFsaWRhdGVkO1xufTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgdmFsaWRhdG9yIG1hbmFnZXIgdGhhdCBoYW5kbGVzIGFkYXB0ZXIgdXBkYXRlcyBhbmQgcmVjcmVhdGlvbi5cbiAqIFRoaXMgY2VudHJhbGl6ZXMgdGhlIHVwZGF0ZSBsb2dpYyB0aGF0J3MgZHVwbGljYXRlZCBhY3Jvc3MgYWN0aW9uIGZpbGVzLlxuICpcbiAqIEBwYXJhbSBkZWZhdWx0VmFsaWRhdG9yIC0gVGhlIGRlZmF1bHQgdmFsaWRhdGlvbiBmdW5jdGlvblxuICogQHBhcmFtIGluaXRpYWxPcHRpb25zIC0gSW5pdGlhbCBhZGFwdGVyIG9wdGlvbnNcbiAqIEByZXR1cm5zIEFuIG9iamVjdCB3aXRoIHZhbGlkYXRvciBhbmQgdXBkYXRlIGZ1bmN0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCB7IHZhbGlkYXRvciwgdXBkYXRlQWRhcHRlciwgdXBkYXRlT3B0aW9ucyB9ID0gY3JlYXRlVmFsaWRhdG9yTWFuYWdlcihcbiAqICAgZGVmYXVsdFVzZXJWYWxpZGF0b3IsXG4gKiAgIHVzZXJBZGFwdGVyT3B0aW9uc1xuICogKTtcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVZhbGlkYXRvck1hbmFnZXIgPSA8VCBleHRlbmRzIEJhc2VBZGFwdGVyT3B0aW9ucz4oXG4gIGRlZmF1bHRWYWxpZGF0b3I6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFQpID0+IGFueSxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9jb25zaXN0ZW50LXR5cGUtYXNzZXJ0aW9uc1xuICBpbml0aWFsT3B0aW9uczogVCA9IHt9IGFzIFRcbikgPT4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2NvbnNpc3RlbnQtdHlwZS1hc3NlcnRpb25zXG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zOiBUID0ge30gYXMgVDtcblxuICBsZXQgYWRhcHRlck9wdGlvbnM6IFQgPSB7Li4uZGVmYXVsdE9wdGlvbnMsIC4uLmluaXRpYWxPcHRpb25zfTtcbiAgbGV0IGN1c3RvbUFkYXB0ZXI6ICgoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBUKSA9PiBhbnkpIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHVwZGF0ZUFkYXB0ZXIgPSAoYWRhcHRlcjogKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogVCkgPT4gYW55KTogdm9pZCA9PiB7XG4gICAgY3VzdG9tQWRhcHRlciA9IGFkYXB0ZXI7XG4gIH07XG5cbiAgY29uc3QgdXBkYXRlT3B0aW9ucyA9IChvcHRpb25zOiBUKTogdm9pZCA9PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9jb25zaXN0ZW50LXR5cGUtYXNzZXJ0aW9uc1xuICAgIGFkYXB0ZXJPcHRpb25zID0gey4uLmFkYXB0ZXJPcHRpb25zLCAuLi5vcHRpb25zfSBhcyBUO1xuICB9O1xuXG4gIC8vIENyZWF0ZSB2YWxpZGF0b3IgZnVuY3Rpb24gdGhhdCBhbHdheXMgdXNlcyBjdXJyZW50IGN1c3RvbUFkYXB0ZXIgYW5kIGFkYXB0ZXJPcHRpb25zXG4gIGNvbnN0IHZhbGlkYXRvciA9IChpbnB1dDogdW5rbm93biwgdmFsaWRhdG9yT3B0aW9ucz86IFQpID0+IHtcbiAgICBjb25zdCBtZXJnZWRPcHRpb25zID0gey4uLmFkYXB0ZXJPcHRpb25zLCAuLi52YWxpZGF0b3JPcHRpb25zfTtcbiAgICBsZXQgdmFsaWRhdGVkID0gZGVmYXVsdFZhbGlkYXRvcihpbnB1dCwgbWVyZ2VkT3B0aW9ucyBhcyBUKTtcbiAgICBpZihjdXN0b21BZGFwdGVyKSB7XG4gICAgICB2YWxpZGF0ZWQgPSBjdXN0b21BZGFwdGVyKHZhbGlkYXRlZCwgbWVyZ2VkT3B0aW9ucyBhcyBUKTtcbiAgICB9XG4gICAgaWYobWVyZ2VkT3B0aW9ucz8uY3VzdG9tVmFsaWRhdGlvbikge1xuICAgICAgdmFsaWRhdGVkID0gbWVyZ2VkT3B0aW9ucy5jdXN0b21WYWxpZGF0aW9uKHZhbGlkYXRlZCk7XG4gICAgfVxuICAgIHJldHVybiB2YWxpZGF0ZWQ7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBnZXRDdXN0b21BZGFwdGVyOiAoKSA9PiBjdXN0b21BZGFwdGVyLFxuICAgIGdldE9wdGlvbnM6ICgpID0+IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC10eXBlLWFzc2VydGlvbnNcbiAgICAgIGNvbnN0IG9wdGlvbnM6IFQgPSB7Li4uYWRhcHRlck9wdGlvbnN9IGFzIFQ7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9LFxuICAgIHVwZGF0ZUFkYXB0ZXIsXG4gICAgdXBkYXRlT3B0aW9ucyxcbiAgICB2YWxpZGF0b3JcbiAgfTtcbn07Il0sIm5hbWVzIjpbImNyZWF0ZVZhbGlkYXRvckZhY3RvcnkiLCJkZWZhdWx0VmFsaWRhdG9yIiwiY3VzdG9tQWRhcHRlciIsIm9wdGlvbnMiLCJpbnB1dCIsInZhbGlkYXRvck9wdGlvbnMiLCJtZXJnZWRPcHRpb25zIiwidmFsaWRhdGVkIiwiY3VzdG9tVmFsaWRhdGlvbiIsImNyZWF0ZVZhbGlkYXRvck1hbmFnZXIiLCJpbml0aWFsT3B0aW9ucyIsImRlZmF1bHRPcHRpb25zIiwiYWRhcHRlck9wdGlvbnMiLCJ1cGRhdGVBZGFwdGVyIiwiYWRhcHRlciIsInVwZGF0ZU9wdGlvbnMiLCJ2YWxpZGF0b3IiLCJnZXRDdXN0b21BZGFwdGVyIiwiZ2V0T3B0aW9ucyJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBU0Q7Ozs7Ozs7Ozs7Ozs7OztDQWVDLEdBQ0QsT0FBTyxNQUFNQSx5QkFBeUIsQ0FDcENDLGtCQUNBQyxlQUNBQyxVQUNHLENBQUNDLE9BQWdCQztRQUNwQixNQUFNQyxnQkFBZ0I7WUFBQyxHQUFHSCxPQUFPO1lBQUUsR0FBR0UsZ0JBQWdCO1FBQUE7UUFFdEQsSUFBSUUsWUFBWU4saUJBQWlCRyxPQUFPRTtRQUV4QyxJQUFHSixlQUFlO1lBQ2hCSyxZQUFZTCxjQUFjSyxXQUFXRDtRQUN2QztRQUVBLElBQUdBLGVBQWVFLGtCQUFrQjtZQUNsQ0QsWUFBWUQsY0FBY0UsZ0JBQWdCLENBQUNEO1FBQzdDO1FBRUEsT0FBT0E7SUFDVCxFQUFFO0FBRUY7Ozs7Ozs7Ozs7Ozs7Q0FhQyxHQUNELE9BQU8sTUFBTUUseUJBQXlCLENBQ3BDUixrQkFDQSx5RUFBeUU7QUFDekVTLGlCQUFvQixDQUFDLENBQU07SUFFM0IseUVBQXlFO0lBQ3pFLE1BQU1DLGlCQUFvQixDQUFDO0lBRTNCLElBQUlDLGlCQUFvQjtRQUFDLEdBQUdELGNBQWM7UUFBRSxHQUFHRCxjQUFjO0lBQUE7SUFDN0QsSUFBSVI7SUFFSixNQUFNVyxnQkFBZ0IsQ0FBQ0M7UUFDckJaLGdCQUFnQlk7SUFDbEI7SUFFQSxNQUFNQyxnQkFBZ0IsQ0FBQ1o7UUFDckIseUVBQXlFO1FBQ3pFUyxpQkFBaUI7WUFBQyxHQUFHQSxjQUFjO1lBQUUsR0FBR1QsT0FBTztRQUFBO0lBQ2pEO0lBRUEsc0ZBQXNGO0lBQ3RGLE1BQU1hLFlBQVksQ0FBQ1osT0FBZ0JDO1FBQ2pDLE1BQU1DLGdCQUFnQjtZQUFDLEdBQUdNLGNBQWM7WUFBRSxHQUFHUCxnQkFBZ0I7UUFBQTtRQUM3RCxJQUFJRSxZQUFZTixpQkFBaUJHLE9BQU9FO1FBQ3hDLElBQUdKLGVBQWU7WUFDaEJLLFlBQVlMLGNBQWNLLFdBQVdEO1FBQ3ZDO1FBQ0EsSUFBR0EsZUFBZUUsa0JBQWtCO1lBQ2xDRCxZQUFZRCxjQUFjRSxnQkFBZ0IsQ0FBQ0Q7UUFDN0M7UUFDQSxPQUFPQTtJQUNUO0lBRUEsT0FBTztRQUNMVSxrQkFBa0IsSUFBTWY7UUFDeEJnQixZQUFZO1lBQ1YseUVBQXlFO1lBQ3pFLE1BQU1mLFVBQWE7Z0JBQUMsR0FBR1MsY0FBYztZQUFBO1lBQ3JDLE9BQU9UO1FBQ1Q7UUFDQVU7UUFDQUU7UUFDQUM7SUFDRjtBQUNGLEVBQUUifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nlabs/metropolisjs",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "description": "MetropolisJS is a library to connect users to Reaktor",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -8,12 +8,40 @@
8
8
  "exports": {
9
9
  ".": {
10
10
  "import": "./lib/index.js",
11
- "require": "./lib/index.js"
11
+ "require": "./lib/index.js",
12
+ "types": "./lib/index.d.ts"
13
+ },
14
+ "./stores": {
15
+ "import": "./lib/stores/index.js",
16
+ "require": "./lib/stores/index.js",
17
+ "types": "./lib/stores/index.d.ts"
18
+ },
19
+ "./actions": {
20
+ "import": "./lib/actions/index.js",
21
+ "require": "./lib/actions/index.js",
22
+ "types": "./lib/actions/index.d.ts"
23
+ },
24
+ "./adapters": {
25
+ "import": "./lib/adapters/index.js",
26
+ "require": "./lib/adapters/index.js",
27
+ "types": "./lib/adapters/index.d.ts"
28
+ },
29
+ "./utils": {
30
+ "import": "./lib/utils/index.js",
31
+ "require": "./lib/utils/index.js",
32
+ "types": "./lib/utils/index.d.ts"
33
+ },
34
+ "./config": {
35
+ "import": "./lib/config/index.js",
36
+ "require": "./lib/config/index.js",
37
+ "types": "./lib/config/index.d.ts"
12
38
  }
13
39
  },
14
40
  "types": "./lib/index.d.ts",
15
41
  "scripts": {
16
- "build": "lex compile --remove",
42
+ "build": "lex compile --remove && npm run postbuild",
43
+ "build:dev": "NODE_ENV=development lex compile --remove",
44
+ "postbuild": "npx tsc-esm-fix lib",
17
45
  "clean": "lex clean",
18
46
  "dev": "lex dev --remove",
19
47
  "format": "npm run prettier && npm run lint",
@@ -46,29 +74,42 @@
46
74
  },
47
75
  "license": "MIT",
48
76
  "dependencies": {
49
- "@nlabs/rip-hunter": "3.0.0",
50
- "@nlabs/utils": "2.7.5",
51
- "luxon": "^3.7.1",
52
- "p-debounce": "^4.0.0",
77
+ "@nlabs/rip-hunter": "3.1.0",
78
+ "@nlabs/utils": "^2.8.6",
79
+ "i18next": "^25.10.9",
80
+ "luxon": "^3.7.2",
81
+ "p-debounce": "^5.1.0",
82
+ "react-i18next": "^16.6.6",
53
83
  "sockette": "^2.0.6",
54
- "zod": "^4.0.5"
84
+ "zod": "^4.3.6"
55
85
  },
56
86
  "devDependencies": {
57
- "@jest/globals": "30.0.4",
58
- "@nlabs/arkhamjs": "3.31.5",
59
- "@nlabs/arkhamjs-storage-browser": "^3.30.1",
60
- "@nlabs/arkhamjs-utils-react": "^3.32.4",
61
- "@nlabs/lex": "^1.48.7",
87
+ "@jest/globals": "30.3.0",
88
+ "@nlabs/arkhamjs": "3.31.9",
89
+ "@nlabs/arkhamjs-storage-browser": "^3.30.6",
90
+ "@nlabs/arkhamjs-utils-react": "^3.32.7",
91
+ "@nlabs/lex": "^1.55.2",
62
92
  "@types/jest": "^30.0.0",
63
- "@types/node": "^24.0.15",
64
- "@types/react": "^19.1.8",
65
- "react": "^19.1.0",
66
- "typescript": "^5.8.3"
93
+ "@types/node": "^25.5.0",
94
+ "@types/react": "^19.2.14",
95
+ "react": "^19.2.4",
96
+ "typescript": "^6.0.2"
67
97
  },
68
98
  "peerDependencies": {
69
99
  "@nlabs/arkhamjs": "^3.31.1",
70
100
  "@nlabs/arkhamjs-storage-browser": "^3.30.0",
71
101
  "@nlabs/arkhamjs-utils-react": "^3.32.0",
72
102
  "react": "^19.1.0"
103
+ },
104
+ "overrides": {
105
+ "cross-spawn": "^7.0.6",
106
+ "got": "^14.6.5",
107
+ "http-cache-semantics": "^4.2.0",
108
+ "http-proxy-middleware": "^3.0.5",
109
+ "lodash.pick": "npm:lodash@^4.17.21",
110
+ "nth-check": "^2.1.1",
111
+ "postcss": "^8.5.6",
112
+ "semver-regex": "^4.0.5",
113
+ "tmp": "^0.2.5"
73
114
  }
74
115
  }
package/temp_signin.ts ADDED
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Correct usage of signIn from MetropolisJS userActions
3
+ * This replaces the incorrect manual GraphQL construction
4
+ */
5
+ import {FluxFramework} from '@nlabs/arkhamjs';
6
+ import {createUserActions} from './src/actions/userActions/userActions';
7
+
8
+ // Create flux instance and user actions
9
+ const flux = new FluxFramework();
10
+ const userActions = createUserActions(flux);
11
+
12
+ /**
13
+ * Correct signIn usage - pass user object with authentication fields
14
+ */
15
+ const signInUser = async (username: string, password: string, expires: number = 15) => {
16
+ try {
17
+ // Correct way: pass user object with username/password
18
+ const session = await userActions.signIn({
19
+ username,
20
+ password
21
+ }, expires);
22
+
23
+ console.log('Sign in successful:', session);
24
+ return {success: true, session};
25
+ } catch (error: any) {
26
+ console.error('Sign in failed:', error.message);
27
+ return {success: false, error: error.message};
28
+ }
29
+ };
30
+
31
+ /**
32
+ * Alternative: sign in with email
33
+ */
34
+ const signInWithEmail = async (email: string, password: string, expires: number = 15) => {
35
+ try {
36
+ const session = await userActions.signIn({
37
+ email,
38
+ password
39
+ }, expires);
40
+
41
+ console.log('Sign in successful:', session);
42
+ return {success: true, session};
43
+ } catch (error: any) {
44
+ console.error('Sign in failed:', error.message);
45
+ return {success: false, error: error.message};
46
+ }
47
+ };
48
+
49
+ /**
50
+ * Alternative: sign in with phone
51
+ */
52
+ const signInWithPhone = async (phone: string, password: string, expires: number = 15) => {
53
+ try {
54
+ const session = await userActions.signIn({
55
+ phone,
56
+ password
57
+ }, expires);
58
+
59
+ console.log('Sign in successful:', session);
60
+ return {success: true, session};
61
+ } catch (error: any) {
62
+ console.error('Sign in failed:', error.message);
63
+ return {success: false, error: error.message};
64
+ }
65
+ };
66
+
67
+ // Export the correct functions
68
+ export {
69
+ signInUser,
70
+ signInWithEmail,
71
+ signInWithPhone
72
+ };
73
+
@@ -1,50 +0,0 @@
1
- import type { FluxFramework } from '@nlabs/arkhamjs';
2
- import type { ProfileType } from '../../adapters/profileAdapter/profileAdapter';
3
- export interface ProfileAdapterOptions {
4
- readonly strict?: boolean;
5
- readonly allowPartial?: boolean;
6
- readonly environment?: 'development' | 'production' | 'test';
7
- readonly customValidation?: (input: unknown) => unknown;
8
- }
9
- export interface ProfileActionsOptions {
10
- readonly profileAdapter?: (input: unknown, options?: ProfileAdapterOptions) => any;
11
- readonly profileAdapterOptions?: ProfileAdapterOptions;
12
- }
13
- export interface ProfileApiResultsType {
14
- readonly profiles: {
15
- readonly addProfile?: ProfileType;
16
- readonly deleteProfile?: ProfileType;
17
- readonly getProfile?: ProfileType;
18
- readonly getProfiles?: ProfileType[];
19
- readonly updateProfile?: ProfileType;
20
- };
21
- }
22
- export interface ProfileActions {
23
- readonly addProfile: (profileData: Partial<ProfileType>, profileProps?: string[]) => Promise<ProfileType>;
24
- readonly getProfile: (profileId: string, profileProps?: string[]) => Promise<ProfileType>;
25
- readonly getProfiles: (profileIds: string[], profileProps?: string[]) => Promise<ProfileType[]>;
26
- readonly deleteProfile: (profileId: string, profileProps?: string[]) => Promise<ProfileType>;
27
- readonly updateProfile: (profile: Partial<ProfileType>, profileProps?: string[]) => Promise<ProfileType>;
28
- readonly updateProfileAdapter: (adapter: (input: unknown, options?: ProfileAdapterOptions) => any) => void;
29
- readonly updateProfileAdapterOptions: (options: ProfileAdapterOptions) => void;
30
- }
31
- /**
32
- * Factory function to create ProfileActions with enhanced adapter injection capabilities.
33
- * Custom adapters are merged with default behavior, allowing partial overrides.
34
- *
35
- * @example
36
- * // Basic usage with default adapters
37
- * const profileActions = createProfileActions(flux);
38
- *
39
- * @example
40
- * // Custom adapter that extends default behavior
41
- * const customProfileAdapter = (input: unknown, options?: ProfileAdapterOptions) => {
42
- * // input is already validated by default adapter
43
- * return input;
44
- * };
45
- *
46
- * const profileActions = createProfileActions(flux, {
47
- * profileAdapter: customProfileAdapter
48
- * });
49
- */
50
- export declare const createProfileActions: (flux: FluxFramework, options?: ProfileActionsOptions) => ProfileActions;
@@ -1,2 +0,0 @@
1
- import{parseId as P}from"@nlabs/utils";import{validateProfileInput as u}from"../../adapters/profileAdapter/profileAdapter";import{PROFILE_CONSTANTS as o}from"../../stores/profileStore";import{appMutation as y,appQuery as c}from"../../utils/api";import{createBaseActions as T}from"../../utils/baseActionFactory";const f="profiles",m=(r,n)=>u(r),C=(r,n)=>{const d=T(r,m,{...n?.profileAdapter&&{adapter:n.profileAdapter},...n?.profileAdapterOptions&&{adapterOptions:n.profileAdapterOptions}});return{addProfile:async(i,t=[])=>{try{const e={profile:{type:"ProfileInput!",value:d.validator(i)}},p=l=>{const{profiles:{addProfile:s={}}}=l;return r.dispatch({profile:s,type:o.ADD_ITEM_SUCCESS})},{addProfile:a}=await y(r,"addProfile",f,e,["profileId",...t],{onSuccess:p});return a}catch(e){throw r.dispatch({error:e,type:o.ADD_ITEM_ERROR}),e}},getProfile:async(i,t=[])=>{try{const e={profileId:{type:"ID!",value:P(i)}},p=l=>{const{profiles:{getProfile:s={}}}=l;return r.dispatch({profile:s,type:o.GET_ITEM_SUCCESS})},{profile:a}=await c(r,"profile",f,e,["active","gender","hasLike","hasView","images(from: 0 to: 10) { id, imageId, imageUrl, thumbUrl }","imageCount","likeCount","name","profileId","tags {name, tagId}","userId","viewCount",...t],{onSuccess:p});return a}catch(e){throw r.dispatch({error:e,type:o.GET_ITEM_ERROR}),e}},getProfiles:async(i,t=[])=>{try{const e={profileIds:{type:"[ID!]!",value:i.map(P)}},p=l=>{const{profiles:{getProfiles:s=[]}}=l;return r.dispatch({profiles:s,type:o.GET_LIST_SUCCESS})},{profiles:a}=await c(r,"profiles",f,e,["active","gender","hasLike","hasView","images(from: 0 to: 10) { id, imageId, imageUrl, thumbUrl }","imageCount","likeCount","name","profileId","tags {name, tagId}","userId","viewCount",...t],{onSuccess:p});return a}catch(e){throw r.dispatch({error:e,type:o.GET_LIST_ERROR}),e}},deleteProfile:async(i,t=[])=>{try{const e={profileId:{type:"ID!",value:P(i)}},p=l=>{const{profiles:{deleteProfile:s={}}}=l;return r.dispatch({profile:s,type:o.DELETE_ITEM_SUCCESS})},{deleteProfile:a}=await y(r,"deleteProfile",f,e,["profileId",...t],{onSuccess:p});return a}catch(e){throw r.dispatch({error:e,type:o.DELETE_ITEM_ERROR}),e}},updateProfile:async(i,t=[])=>{try{const e={profile:{type:"ProfileInput!",value:d.validator(i)}},p=l=>{const{profiles:{updateProfile:s={}}}=l;return r.dispatch({profile:s,type:o.UPDATE_ITEM_SUCCESS})},{updateProfile:a}=await y(r,"updateProfile",f,e,["profileId",...t],{onSuccess:p});return a}catch(e){throw r.dispatch({error:e,type:o.UPDATE_ITEM_ERROR}),e}},updateProfileAdapter:d.updateAdapter,updateProfileAdapterOptions:d.updateOptions}};export{C as createProfileActions};
2
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FjdGlvbnMvcHJvZmlsZUFjdGlvbnMvcHJvZmlsZUFjdGlvbnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDIzLVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgeyBwYXJzZUlkIH0gZnJvbSAnQG5sYWJzL3V0aWxzJztcblxuaW1wb3J0IHsgdmFsaWRhdGVQcm9maWxlSW5wdXQgfSBmcm9tICcuLi8uLi9hZGFwdGVycy9wcm9maWxlQWRhcHRlci9wcm9maWxlQWRhcHRlcic7XG5pbXBvcnQgeyBQUk9GSUxFX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uL3N0b3Jlcy9wcm9maWxlU3RvcmUnO1xuaW1wb3J0IHsgYXBwTXV0YXRpb24sIGFwcFF1ZXJ5IH0gZnJvbSAnLi4vLi4vdXRpbHMvYXBpJztcbmltcG9ydCB7IGNyZWF0ZUJhc2VBY3Rpb25zIH0gZnJvbSAnLi4vLi4vdXRpbHMvYmFzZUFjdGlvbkZhY3RvcnknO1xuXG5pbXBvcnQgdHlwZSB7IEZsdXhGcmFtZXdvcmsgfSBmcm9tICdAbmxhYnMvYXJraGFtanMnO1xuaW1wb3J0IHR5cGUgeyBQcm9maWxlVHlwZSB9IGZyb20gJy4uLy4uL2FkYXB0ZXJzL3Byb2ZpbGVBZGFwdGVyL3Byb2ZpbGVBZGFwdGVyJztcblxuLy8gRGVmaW5lIHRoZSBjb2xsZWN0aW9uIG5hbWUgZm9yIHByb2ZpbGVzXG5jb25zdCBEQVRBX1RZUEUgPSAncHJvZmlsZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFByb2ZpbGVBZGFwdGVyT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHN0cmljdD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFsbG93UGFydGlhbD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGVudmlyb25tZW50PzogJ2RldmVsb3BtZW50JyB8ICdwcm9kdWN0aW9uJyB8ICd0ZXN0JztcbiAgcmVhZG9ubHkgY3VzdG9tVmFsaWRhdGlvbj86IChpbnB1dDogdW5rbm93bikgPT4gdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9maWxlQWN0aW9uc09wdGlvbnMge1xuICByZWFkb25seSBwcm9maWxlQWRhcHRlcj86IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFByb2ZpbGVBZGFwdGVyT3B0aW9ucykgPT4gYW55O1xuICByZWFkb25seSBwcm9maWxlQWRhcHRlck9wdGlvbnM/OiBQcm9maWxlQWRhcHRlck9wdGlvbnM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZmlsZUFwaVJlc3VsdHNUeXBlIHtcbiAgcmVhZG9ubHkgcHJvZmlsZXM6IHtcbiAgICByZWFkb25seSBhZGRQcm9maWxlPzogUHJvZmlsZVR5cGU7XG4gICAgcmVhZG9ubHkgZGVsZXRlUHJvZmlsZT86IFByb2ZpbGVUeXBlO1xuICAgIHJlYWRvbmx5IGdldFByb2ZpbGU/OiBQcm9maWxlVHlwZTtcbiAgICByZWFkb25seSBnZXRQcm9maWxlcz86IFByb2ZpbGVUeXBlW107XG4gICAgcmVhZG9ubHkgdXBkYXRlUHJvZmlsZT86IFByb2ZpbGVUeXBlO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2ZpbGVBY3Rpb25zIHtcbiAgcmVhZG9ubHkgYWRkUHJvZmlsZTogKHByb2ZpbGVEYXRhOiBQYXJ0aWFsPFByb2ZpbGVUeXBlPiwgcHJvZmlsZVByb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8UHJvZmlsZVR5cGU+O1xuICByZWFkb25seSBnZXRQcm9maWxlOiAocHJvZmlsZUlkOiBzdHJpbmcsIHByb2ZpbGVQcm9wcz86IHN0cmluZ1tdKSA9PiBQcm9taXNlPFByb2ZpbGVUeXBlPjtcbiAgcmVhZG9ubHkgZ2V0UHJvZmlsZXM6IChwcm9maWxlSWRzOiBzdHJpbmdbXSwgcHJvZmlsZVByb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8UHJvZmlsZVR5cGVbXT47XG4gIHJlYWRvbmx5IGRlbGV0ZVByb2ZpbGU6IChwcm9maWxlSWQ6IHN0cmluZywgcHJvZmlsZVByb3BzPzogc3RyaW5nW10pID0+IFByb21pc2U8UHJvZmlsZVR5cGU+O1xuICByZWFkb25seSB1cGRhdGVQcm9maWxlOiAocHJvZmlsZTogUGFydGlhbDxQcm9maWxlVHlwZT4sIHByb2ZpbGVQcm9wcz86IHN0cmluZ1tdKSA9PiBQcm9taXNlPFByb2ZpbGVUeXBlPjtcbiAgcmVhZG9ubHkgdXBkYXRlUHJvZmlsZUFkYXB0ZXI6IChhZGFwdGVyOiAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBQcm9maWxlQWRhcHRlck9wdGlvbnMpID0+IGFueSkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgdXBkYXRlUHJvZmlsZUFkYXB0ZXJPcHRpb25zOiAob3B0aW9uczogUHJvZmlsZUFkYXB0ZXJPcHRpb25zKSA9PiB2b2lkO1xufVxuXG4vLyBEZWZhdWx0IHZhbGlkYXRpb24gZnVuY3Rpb25cbmNvbnN0IGRlZmF1bHRQcm9maWxlVmFsaWRhdG9yID0gKGlucHV0OiB1bmtub3duLCBvcHRpb25zPzogUHJvZmlsZUFkYXB0ZXJPcHRpb25zKSA9PiB2YWxpZGF0ZVByb2ZpbGVJbnB1dChpbnB1dCk7XG5cbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgUHJvZmlsZUFjdGlvbnMgd2l0aCBlbmhhbmNlZCBhZGFwdGVyIGluamVjdGlvbiBjYXBhYmlsaXRpZXMuXG4gKiBDdXN0b20gYWRhcHRlcnMgYXJlIG1lcmdlZCB3aXRoIGRlZmF1bHQgYmVoYXZpb3IsIGFsbG93aW5nIHBhcnRpYWwgb3ZlcnJpZGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBCYXNpYyB1c2FnZSB3aXRoIGRlZmF1bHQgYWRhcHRlcnNcbiAqIGNvbnN0IHByb2ZpbGVBY3Rpb25zID0gY3JlYXRlUHJvZmlsZUFjdGlvbnMoZmx1eCk7XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEN1c3RvbSBhZGFwdGVyIHRoYXQgZXh0ZW5kcyBkZWZhdWx0IGJlaGF2aW9yXG4gKiBjb25zdCBjdXN0b21Qcm9maWxlQWRhcHRlciA9IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IFByb2ZpbGVBZGFwdGVyT3B0aW9ucykgPT4ge1xuICogICAvLyBpbnB1dCBpcyBhbHJlYWR5IHZhbGlkYXRlZCBieSBkZWZhdWx0IGFkYXB0ZXJcbiAqICAgcmV0dXJuIGlucHV0O1xuICogfTtcbiAqXG4gKiBjb25zdCBwcm9maWxlQWN0aW9ucyA9IGNyZWF0ZVByb2ZpbGVBY3Rpb25zKGZsdXgsIHtcbiAqICAgcHJvZmlsZUFkYXB0ZXI6IGN1c3RvbVByb2ZpbGVBZGFwdGVyXG4gKiB9KTtcbiAqL1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVByb2ZpbGVBY3Rpb25zID0gKFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBvcHRpb25zPzogUHJvZmlsZUFjdGlvbnNPcHRpb25zXG4pOiBQcm9maWxlQWN0aW9ucyA9PiB7XG4gIGNvbnN0IHByb2ZpbGVCYXNlID0gY3JlYXRlQmFzZUFjdGlvbnMoZmx1eCwgZGVmYXVsdFByb2ZpbGVWYWxpZGF0b3IsIHtcbiAgICAuLi4ob3B0aW9ucz8ucHJvZmlsZUFkYXB0ZXIgJiYge2FkYXB0ZXI6IG9wdGlvbnMucHJvZmlsZUFkYXB0ZXJ9KSxcbiAgICAuLi4ob3B0aW9ucz8ucHJvZmlsZUFkYXB0ZXJPcHRpb25zICYmIHthZGFwdGVyT3B0aW9uczogb3B0aW9ucy5wcm9maWxlQWRhcHRlck9wdGlvbnN9KVxuICB9KTtcblxuICAvLyBBY3Rpb24gaW1wbGVtZW50YXRpb25zXG4gIGNvbnN0IGFkZFByb2ZpbGUgPSBhc3luYyAocHJvZmlsZURhdGE6IFBhcnRpYWw8UHJvZmlsZVR5cGU+LCBwcm9maWxlUHJvcHM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPFByb2ZpbGVUeXBlPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBwcm9maWxlOiB7XG4gICAgICAgICAgdHlwZTogJ1Byb2ZpbGVJbnB1dCEnLFxuICAgICAgICAgIHZhbHVlOiBwcm9maWxlQmFzZS52YWxpZGF0b3IocHJvZmlsZURhdGEpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBQcm9maWxlQXBpUmVzdWx0c1R5cGUpID0+IHtcbiAgICAgICAgY29uc3Qge3Byb2ZpbGVzOiB7YWRkUHJvZmlsZSA9IHt9fX0gPSBkYXRhO1xuICAgICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7cHJvZmlsZTogYWRkUHJvZmlsZSwgdHlwZTogUFJPRklMRV9DT05TVEFOVFMuQUREX0lURU1fU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge2FkZFByb2ZpbGV9ID0gYXdhaXQgYXBwTXV0YXRpb24oZmx1eCwgJ2FkZFByb2ZpbGUnLCBEQVRBX1RZUEUsIHF1ZXJ5VmFyaWFibGVzLCBbJ3Byb2ZpbGVJZCcsIC4uLnByb2ZpbGVQcm9wc10sIHtvblN1Y2Nlc3N9KTtcbiAgICAgIHJldHVybiBhZGRQcm9maWxlIGFzIFByb2ZpbGVUeXBlO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBQUk9GSUxFX0NPTlNUQU5UUy5BRERfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGdldFByb2ZpbGUgPSBhc3luYyAocHJvZmlsZUlkOiBzdHJpbmcsIHByb2ZpbGVQcm9wczogc3RyaW5nW10gPSBbXSk6IFByb21pc2U8UHJvZmlsZVR5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIHByb2ZpbGVJZDoge1xuICAgICAgICAgIHR5cGU6ICdJRCEnLFxuICAgICAgICAgIHZhbHVlOiBwYXJzZUlkKHByb2ZpbGVJZClcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IFByb2ZpbGVBcGlSZXN1bHRzVHlwZSkgPT4ge1xuICAgICAgICBjb25zdCB7cHJvZmlsZXM6IHtnZXRQcm9maWxlOiBwcm9maWxlID0ge319fSA9IGRhdGE7XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtwcm9maWxlLCB0eXBlOiBQUk9GSUxFX0NPTlNUQU5UUy5HRVRfSVRFTV9TVUNDRVNTfSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB7cHJvZmlsZX0gPSBhd2FpdCBhcHBRdWVyeShcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ3Byb2ZpbGUnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbXG4gICAgICAgICAgJ2FjdGl2ZScsXG4gICAgICAgICAgJ2dlbmRlcicsXG4gICAgICAgICAgJ2hhc0xpa2UnLFxuICAgICAgICAgICdoYXNWaWV3JyxcbiAgICAgICAgICAnaW1hZ2VzKGZyb206IDAgdG86IDEwKSB7IGlkLCBpbWFnZUlkLCBpbWFnZVVybCwgdGh1bWJVcmwgfScsXG4gICAgICAgICAgJ2ltYWdlQ291bnQnLFxuICAgICAgICAgICdsaWtlQ291bnQnLFxuICAgICAgICAgICduYW1lJyxcbiAgICAgICAgICAncHJvZmlsZUlkJyxcbiAgICAgICAgICAndGFncyB7bmFtZSwgdGFnSWR9JyxcbiAgICAgICAgICAndXNlcklkJyxcbiAgICAgICAgICAndmlld0NvdW50JyxcbiAgICAgICAgICAuLi5wcm9maWxlUHJvcHNcbiAgICAgICAgXSxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG4gICAgICByZXR1cm4gcHJvZmlsZSBhcyBQcm9maWxlVHlwZTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogUFJPRklMRV9DT05TVEFOVFMuR0VUX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBnZXRQcm9maWxlcyA9IGFzeW5jIChwcm9maWxlSWRzOiBzdHJpbmdbXSwgcHJvZmlsZVByb3BzOiBzdHJpbmdbXSA9IFtdKTogUHJvbWlzZTxQcm9maWxlVHlwZVtdPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBwcm9maWxlSWRzOiB7XG4gICAgICAgICAgdHlwZTogJ1tJRCFdIScsXG4gICAgICAgICAgdmFsdWU6IHByb2ZpbGVJZHMubWFwKHBhcnNlSWQpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBQcm9maWxlQXBpUmVzdWx0c1R5cGUpID0+IHtcbiAgICAgICAgY29uc3Qge3Byb2ZpbGVzOiB7Z2V0UHJvZmlsZXM6IHByb2ZpbGVzID0gW119fSA9IGRhdGE7XG4gICAgICAgIHJldHVybiBmbHV4LmRpc3BhdGNoKHtwcm9maWxlcywgdHlwZTogUFJPRklMRV9DT05TVEFOVFMuR0VUX0xJU1RfU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge3Byb2ZpbGVzfSA9IGF3YWl0IGFwcFF1ZXJ5KFxuICAgICAgICBmbHV4LFxuICAgICAgICAncHJvZmlsZXMnLFxuICAgICAgICBEQVRBX1RZUEUsXG4gICAgICAgIHF1ZXJ5VmFyaWFibGVzLFxuICAgICAgICBbXG4gICAgICAgICAgJ2FjdGl2ZScsXG4gICAgICAgICAgJ2dlbmRlcicsXG4gICAgICAgICAgJ2hhc0xpa2UnLFxuICAgICAgICAgICdoYXNWaWV3JyxcbiAgICAgICAgICAnaW1hZ2VzKGZyb206IDAgdG86IDEwKSB7IGlkLCBpbWFnZUlkLCBpbWFnZVVybCwgdGh1bWJVcmwgfScsXG4gICAgICAgICAgJ2ltYWdlQ291bnQnLFxuICAgICAgICAgICdsaWtlQ291bnQnLFxuICAgICAgICAgICduYW1lJyxcbiAgICAgICAgICAncHJvZmlsZUlkJyxcbiAgICAgICAgICAndGFncyB7bmFtZSwgdGFnSWR9JyxcbiAgICAgICAgICAndXNlcklkJyxcbiAgICAgICAgICAndmlld0NvdW50JyxcbiAgICAgICAgICAuLi5wcm9maWxlUHJvcHNcbiAgICAgICAgXSxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG4gICAgICByZXR1cm4gcHJvZmlsZXMgYXMgUHJvZmlsZVR5cGVbXTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogUFJPRklMRV9DT05TVEFOVFMuR0VUX0xJU1RfRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBkZWxldGVQcm9maWxlID0gYXN5bmMgKHByb2ZpbGVJZDogc3RyaW5nLCBwcm9maWxlUHJvcHM6IHN0cmluZ1tdID0gW10pOiBQcm9taXNlPFByb2ZpbGVUeXBlPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgICBwcm9maWxlSWQ6IHtcbiAgICAgICAgICB0eXBlOiAnSUQhJyxcbiAgICAgICAgICB2YWx1ZTogcGFyc2VJZChwcm9maWxlSWQpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBQcm9maWxlQXBpUmVzdWx0c1R5cGUpID0+IHtcbiAgICAgICAgY29uc3Qge3Byb2ZpbGVzOiB7ZGVsZXRlUHJvZmlsZTogcHJvZmlsZSA9IHt9fX0gPSBkYXRhO1xuICAgICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7cHJvZmlsZSwgdHlwZTogUFJPRklMRV9DT05TVEFOVFMuREVMRVRFX0lURU1fU1VDQ0VTU30pO1xuICAgICAgfTtcblxuICAgICAgY29uc3Qge2RlbGV0ZVByb2ZpbGV9ID0gYXdhaXQgYXBwTXV0YXRpb24oZmx1eCwgJ2RlbGV0ZVByb2ZpbGUnLCBEQVRBX1RZUEUsIHF1ZXJ5VmFyaWFibGVzLCBbJ3Byb2ZpbGVJZCcsIC4uLnByb2ZpbGVQcm9wc10sIHtvblN1Y2Nlc3N9KTtcbiAgICAgIHJldHVybiBkZWxldGVQcm9maWxlIGFzIFByb2ZpbGVUeXBlO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBQUk9GSUxFX0NPTlNUQU5UUy5ERUxFVEVfSVRFTV9FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZVByb2ZpbGUgPSBhc3luYyAocHJvZmlsZTogUGFydGlhbDxQcm9maWxlVHlwZT4sIHByb2ZpbGVQcm9wczogc3RyaW5nW10gPSBbXSk6IFByb21pc2U8UHJvZmlsZVR5cGU+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIHByb2ZpbGU6IHtcbiAgICAgICAgICB0eXBlOiAnUHJvZmlsZUlucHV0IScsXG4gICAgICAgICAgdmFsdWU6IHByb2ZpbGVCYXNlLnZhbGlkYXRvcihwcm9maWxlKVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoZGF0YTogUHJvZmlsZUFwaVJlc3VsdHNUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IHtwcm9maWxlczoge3VwZGF0ZVByb2ZpbGU6IHByb2ZpbGUgPSB7fX19ID0gZGF0YTtcbiAgICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe3Byb2ZpbGUsIHR5cGU6IFBST0ZJTEVfQ09OU1RBTlRTLlVQREFURV9JVEVNX1NVQ0NFU1N9KTtcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHt1cGRhdGVQcm9maWxlfSA9IGF3YWl0IGFwcE11dGF0aW9uKGZsdXgsICd1cGRhdGVQcm9maWxlJywgREFUQV9UWVBFLCBxdWVyeVZhcmlhYmxlcywgWydwcm9maWxlSWQnLCAuLi5wcm9maWxlUHJvcHNdLCB7b25TdWNjZXNzfSk7XG4gICAgICByZXR1cm4gdXBkYXRlUHJvZmlsZSBhcyBQcm9maWxlVHlwZTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogUFJPRklMRV9DT05TVEFOVFMuVVBEQVRFX0lURU1fRVJST1J9KTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4ge1xuICAgIGFkZFByb2ZpbGUsXG4gICAgZ2V0UHJvZmlsZSxcbiAgICBnZXRQcm9maWxlcyxcbiAgICBkZWxldGVQcm9maWxlLFxuICAgIHVwZGF0ZVByb2ZpbGUsXG4gICAgdXBkYXRlUHJvZmlsZUFkYXB0ZXI6IHByb2ZpbGVCYXNlLnVwZGF0ZUFkYXB0ZXIsXG4gICAgdXBkYXRlUHJvZmlsZUFkYXB0ZXJPcHRpb25zOiBwcm9maWxlQmFzZS51cGRhdGVPcHRpb25zXG4gIH07XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQVMsV0FBQUEsTUFBZSxlQUV4QixPQUFTLHdCQUFBQyxNQUE0QiwrQ0FDckMsT0FBUyxxQkFBQUMsTUFBeUIsNEJBQ2xDLE9BQVMsZUFBQUMsRUFBYSxZQUFBQyxNQUFnQixrQkFDdEMsT0FBUyxxQkFBQUMsTUFBeUIsZ0NBTWxDLE1BQU1DLEVBQVksV0FtQ1pDLEVBQTBCLENBQUNDLEVBQWdCQyxJQUFvQ1IsRUFBcUJPLENBQUssRUFxQmxHRSxFQUF1QixDQUNsQ0MsRUFDQUYsSUFDbUIsQ0FDbkIsTUFBTUcsRUFBY1AsRUFBa0JNLEVBQU1KLEVBQXlCLENBQ25FLEdBQUlFLEdBQVMsZ0JBQWtCLENBQUMsUUFBU0EsRUFBUSxjQUFjLEVBQy9ELEdBQUlBLEdBQVMsdUJBQXlCLENBQUMsZUFBZ0JBLEVBQVEscUJBQXFCLENBQ3RGLENBQUMsRUEySkQsTUFBTyxDQUNMLFdBekppQixNQUFPSSxFQUFtQ0MsRUFBeUIsQ0FBQyxJQUE0QixDQUNqSCxHQUFJLENBQ0YsTUFBTUMsRUFBaUIsQ0FDckIsUUFBUyxDQUNQLEtBQU0sZ0JBQ04sTUFBT0gsRUFB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RUFBV1MsRUFBZ0IsQ0FBQyxZQUFhLEdBQUdELENBQVksRUFBRyxDQUFDLFVBQUFFLENBQVMsQ0FBQyxFQUN2SSxPQUFPUSxDQUNULE9BQVFMLEVBQU8sQ0FDYixNQUFBUixFQUFLLFNBQVMsQ0FBQyxNQUFBUSxFQUFPLEtBQU1qQixFQUFrQixpQkFBaUIsQ0FBQyxFQUMxRGlCLENBQ1IsQ0FDRixFQTZCRSxjQTNCb0IsTUFBT0UsRUFBK0JQLEVBQXlCLENBQUMsSUFBNEIsQ0FDaEgsR0FBSSxDQUNGLE1BQU1DLEVBQWlCLENBQ3JCLFFBQVMsQ0FDUCxLQUFNLGdCQUNOLE1BQU9ILEVBQVksVUFBVVMsQ0FBTyxDQUN0QyxDQUNGLEVBRU1MLEVBQWFDLEdBQWdDLENBQ2pELEtBQU0sQ0FBQyxTQUFVLENBQUMsY0FBZUksRUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFJSixFQUNsRCxPQUFPTixFQUFLLFNBQVMsQ0FBQyxRQUFBVSxFQUFTLEtBQU1uQixFQUFrQixtQkFBbUIsQ0FBQyxDQUM3RSxFQUVNLENBQUMsY0FBQXVCLENBQWEsRUFBSSxNQUFNdEIsRUFBWVEsRUFBTSxnQkFBaUJMLEVBQVdTLEVBQWdCLENBQUMsWUFBYSxHQUFHRCxDQUFZLEVBQUcsQ0FBQyxVQUFBRSxDQUFTLENBQUMsRUFDdkksT0FBT1MsQ0FDVCxPQUFRTixFQUFPLENBQ2IsTUFBQVIsRUFBSyxTQUFTLENBQUMsTUFBQVEsRUFBTyxLQUFNakIsRUFBa0IsaUJBQWlCLENBQUMsRUFDMURpQixDQUNSLENBQ0YsRUFRRSxxQkFBc0JQLEVBQVksY0FDbEMsNEJBQTZCQSxFQUFZLGFBQzNDLENBQ0YiLAogICJuYW1lcyI6IFsicGFyc2VJZCIsICJ2YWxpZGF0ZVByb2ZpbGVJbnB1dCIsICJQUk9GSUxFX0NPTlNUQU5UUyIsICJhcHBNdXRhdGlvbiIsICJhcHBRdWVyeSIsICJjcmVhdGVCYXNlQWN0aW9ucyIsICJEQVRBX1RZUEUiLCAiZGVmYXVsdFByb2ZpbGVWYWxpZGF0b3IiLCAiaW5wdXQiLCAib3B0aW9ucyIsICJjcmVhdGVQcm9maWxlQWN0aW9ucyIsICJmbHV4IiwgInByb2ZpbGVCYXNlIiwgInByb2ZpbGVEYXRhIiwgInByb2ZpbGVQcm9wcyIsICJxdWVyeVZhcmlhYmxlcyIsICJvblN1Y2Nlc3MiLCAiZGF0YSIsICJhZGRQcm9maWxlIiwgImVycm9yIiwgInByb2ZpbGVJZCIsICJwcm9maWxlIiwgInByb2ZpbGVJZHMiLCAicHJvZmlsZXMiLCAiZGVsZXRlUHJvZmlsZSIsICJ1cGRhdGVQcm9maWxlIl0KfQo=
@@ -1,32 +0,0 @@
1
- export interface ProfileType {
2
- _id?: string;
3
- _key?: string;
4
- _rev?: string;
5
- _oldRev?: string;
6
- _from?: string;
7
- _to?: string;
8
- active?: boolean;
9
- gender?: string;
10
- hasLike?: boolean;
11
- hasView?: boolean;
12
- id?: string;
13
- images?: any[];
14
- imageCount?: number;
15
- imageId?: string;
16
- imageUrl?: string;
17
- likeCount?: number;
18
- name?: string;
19
- profileId?: string;
20
- tags?: any[];
21
- thumbUrl?: string;
22
- userId?: string;
23
- viewCount?: number;
24
- [key: string]: any;
25
- }
26
- export declare class ProfileValidationError extends Error {
27
- field?: string | undefined;
28
- constructor(message: string, field?: string | undefined);
29
- }
30
- export declare const validateProfileInput: (profile: unknown) => ProfileType;
31
- export declare const formatProfileOutput: (profile: ProfileType) => ProfileType;
32
- export declare const parseProfile: (profile: ProfileType) => ProfileType;
@@ -1,2 +0,0 @@
1
- import{parseArangoId as C,parseBoolean as s,parseChar as T,parseId as l,parseNum as p,parseString as x}from"@nlabs/utils";import{z as e}from"zod";import{parseDocument as E,removeEmptyKeys as U}from"../arangoAdapter/arangoAdapter";import{parseImage as V}from"../imageAdapter/imageAdapter";import{parseTag as $}from"../tagAdapter/tagAdapter";class g extends Error{constructor(i,n){super(i);this.field=n;this.name="ProfileValidationError"}}const L=e.object({_id:e.string().optional(),_key:e.string().optional(),_rev:e.string().optional(),_oldRev:e.string().optional(),_from:e.string().optional(),_to:e.string().optional(),active:e.boolean().optional(),gender:e.string().max(1).optional(),hasLike:e.boolean().optional(),hasView:e.boolean().optional(),id:e.string().optional(),images:e.array(e.any()).optional(),imageCount:e.number().optional(),imageId:e.string().optional(),imageUrl:e.string().optional(),likeCount:e.number().optional(),name:e.string().max(64).optional(),profileId:e.string().optional(),tags:e.array(e.any()).optional(),thumbUrl:e.string().optional(),userId:e.string().optional(),viewCount:e.number().optional()}).passthrough(),K=o=>{try{return L.parse(o)}catch(r){if(r instanceof e.ZodError){const i=r.issues.map(n=>`${n.path.join(".")}: ${n.message}`).join(", ");throw new g(`Profile validation failed: ${i}`)}throw r}},N=o=>o,O=o=>{try{return j(o)}catch(r){throw r instanceof g?r:new g(`Profile parsing failed: ${r instanceof Error?r.message:"Unknown error"}`)}},j=o=>{const{_id:r,_key:i,active:n,gender:m,hasLike:d,hasView:f,id:u,images:c,imageCount:h,imageId:y,imageUrl:P,likeCount:b,name:v,profileId:t,tags:I,thumbUrl:w,userId:k,viewCount:_}=o;return U({...E(o),...n!==void 0&&{active:s(n)},...m&&{gender:T(m,1)},...d!==void 0&&{hasLike:s(d)},...f!==void 0&&{hasView:s(f)},...(r||u||i||t)&&{id:C(r||u||`profiles/${i||t}`)},...c?.length&&{images:c.map(a=>V(a))},...h!==void 0&&{imageCount:p(h)},...y&&{imageId:l(y)},...P&&{imageUrl:P},...b!==void 0&&{likeCount:p(b)},...v&&{name:x(v,64)},...(i||t)&&{profileId:l(i||t||"")},...I?.length&&{tags:I.map(a=>$(a))},...w&&{thumbUrl:w},...k&&{userId:l(k)},..._!==void 0&&{viewCount:p(_)}})};export{g as ProfileValidationError,N as formatProfileOutput,O as parseProfile,K as validateProfileInput};
2
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2FkYXB0ZXJzL3Byb2ZpbGVBZGFwdGVyL3Byb2ZpbGVBZGFwdGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge3BhcnNlQXJhbmdvSWQsIHBhcnNlQm9vbGVhbiwgcGFyc2VDaGFyLCBwYXJzZUlkLCBwYXJzZU51bSwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7cGFyc2VEb2N1bWVudCwgcmVtb3ZlRW1wdHlLZXlzfSBmcm9tICcuLi9hcmFuZ29BZGFwdGVyL2FyYW5nb0FkYXB0ZXInO1xuaW1wb3J0IHtwYXJzZUltYWdlfSBmcm9tICcuLi9pbWFnZUFkYXB0ZXIvaW1hZ2VBZGFwdGVyJztcbmltcG9ydCB7cGFyc2VUYWd9IGZyb20gJy4uL3RhZ0FkYXB0ZXIvdGFnQWRhcHRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZmlsZVR5cGUge1xuICBfaWQ/OiBzdHJpbmc7XG4gIF9rZXk/OiBzdHJpbmc7XG4gIF9yZXY/OiBzdHJpbmc7XG4gIF9vbGRSZXY/OiBzdHJpbmc7XG4gIF9mcm9tPzogc3RyaW5nO1xuICBfdG8/OiBzdHJpbmc7XG4gIGFjdGl2ZT86IGJvb2xlYW47XG4gIGdlbmRlcj86IHN0cmluZztcbiAgaGFzTGlrZT86IGJvb2xlYW47XG4gIGhhc1ZpZXc/OiBib29sZWFuO1xuICBpZD86IHN0cmluZztcbiAgaW1hZ2VzPzogYW55W107XG4gIGltYWdlQ291bnQ/OiBudW1iZXI7XG4gIGltYWdlSWQ/OiBzdHJpbmc7XG4gIGltYWdlVXJsPzogc3RyaW5nO1xuICBsaWtlQ291bnQ/OiBudW1iZXI7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHByb2ZpbGVJZD86IHN0cmluZztcbiAgdGFncz86IGFueVtdO1xuICB0aHVtYlVybD86IHN0cmluZztcbiAgdXNlcklkPzogc3RyaW5nO1xuICB2aWV3Q291bnQ/OiBudW1iZXI7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGNsYXNzIFByb2ZpbGVWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgcHVibGljIGZpZWxkPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ1Byb2ZpbGVWYWxpZGF0aW9uRXJyb3InO1xuICB9XG59XG5cbmNvbnN0IFByb2ZpbGVJbnB1dFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9rZXk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX3Jldjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBfb2xkUmV2OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9mcm9tOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF90bzogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBhY3RpdmU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIGdlbmRlcjogei5zdHJpbmcoKS5tYXgoMSkub3B0aW9uYWwoKSxcbiAgaGFzTGlrZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgaGFzVmlldzogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgaW1hZ2VzOiB6LmFycmF5KHouYW55KCkpLm9wdGlvbmFsKCksXG4gIGltYWdlQ291bnQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgaW1hZ2VJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBpbWFnZVVybDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBsaWtlQ291bnQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgbmFtZTogei5zdHJpbmcoKS5tYXgoNjQpLm9wdGlvbmFsKCksXG4gIHByb2ZpbGVJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0YWdzOiB6LmFycmF5KHouYW55KCkpLm9wdGlvbmFsKCksXG4gIHRodW1iVXJsOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVzZXJJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB2aWV3Q291bnQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKVxufSkucGFzc3Rocm91Z2goKTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlUHJvZmlsZUlucHV0ID0gKHByb2ZpbGU6IHVua25vd24pOiBQcm9maWxlVHlwZSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdmFsaWRhdGVkID0gUHJvZmlsZUlucHV0U2NoZW1hLnBhcnNlKHByb2ZpbGUpO1xuICAgIHJldHVybiB2YWxpZGF0ZWQgYXMgUHJvZmlsZVR5cGU7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBpZihlcnJvciBpbnN0YW5jZW9mIHouWm9kRXJyb3IpIHtcbiAgICAgIGNvbnN0IGZpZWxkRXJyb3JzID0gZXJyb3IuaXNzdWVzLm1hcCgoZSkgPT4gYCR7ZS5wYXRoLmpvaW4oJy4nKX06ICR7ZS5tZXNzYWdlfWApLmpvaW4oJywgJyk7XG4gICAgICB0aHJvdyBuZXcgUHJvZmlsZVZhbGlkYXRpb25FcnJvcihgUHJvZmlsZSB2YWxpZGF0aW9uIGZhaWxlZDogJHtmaWVsZEVycm9yc31gKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRQcm9maWxlT3V0cHV0ID0gKHByb2ZpbGU6IFByb2ZpbGVUeXBlKTogUHJvZmlsZVR5cGUgPT4gcHJvZmlsZTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlUHJvZmlsZSA9IChwcm9maWxlOiBQcm9maWxlVHlwZSk6IFByb2ZpbGVUeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBwZXJmb3JtUHJvZmlsZVRyYW5zZm9ybWF0aW9uKHByb2ZpbGUpO1xuICAgIHJldHVybiBwYXJzZWQ7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBpZihlcnJvciBpbnN0YW5jZW9mIFByb2ZpbGVWYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgUHJvZmlsZVZhbGlkYXRpb25FcnJvcihgUHJvZmlsZSBwYXJzaW5nIGZhaWxlZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJ31gKTtcbiAgfVxufTtcblxuY29uc3QgcGVyZm9ybVByb2ZpbGVUcmFuc2Zvcm1hdGlvbiA9IChwcm9maWxlOiBQcm9maWxlVHlwZSk6IFByb2ZpbGVUeXBlID0+IHtcbiAgY29uc3Qge1xuICAgIF9pZCxcbiAgICBfa2V5LFxuICAgIGFjdGl2ZSxcbiAgICBnZW5kZXIsXG4gICAgaGFzTGlrZSxcbiAgICBoYXNWaWV3LFxuICAgIGlkLFxuICAgIGltYWdlcyxcbiAgICBpbWFnZUNvdW50LFxuICAgIGltYWdlSWQsXG4gICAgaW1hZ2VVcmwsXG4gICAgbGlrZUNvdW50LFxuICAgIG5hbWUsXG4gICAgcHJvZmlsZUlkLFxuICAgIHRhZ3MsXG4gICAgdGh1bWJVcmwsXG4gICAgdXNlcklkLFxuICAgIHZpZXdDb3VudFxuICB9ID0gcHJvZmlsZTtcblxuICBjb25zdCB0cmFuc2Zvcm1lZCA9IHJlbW92ZUVtcHR5S2V5cyh7XG4gICAgLi4ucGFyc2VEb2N1bWVudChwcm9maWxlKSxcbiAgICAuLi4oYWN0aXZlICE9PSB1bmRlZmluZWQgJiYge2FjdGl2ZTogcGFyc2VCb29sZWFuKGFjdGl2ZSl9KSxcbiAgICAuLi4oZ2VuZGVyICYmIHtnZW5kZXI6IHBhcnNlQ2hhcihnZW5kZXIsIDEpfSksXG4gICAgLi4uKGhhc0xpa2UgIT09IHVuZGVmaW5lZCAmJiB7aGFzTGlrZTogcGFyc2VCb29sZWFuKGhhc0xpa2UpfSksXG4gICAgLi4uKGhhc1ZpZXcgIT09IHVuZGVmaW5lZCAmJiB7aGFzVmlldzogcGFyc2VCb29sZWFuKGhhc1ZpZXcpfSksXG4gICAgLi4uKChfaWQgfHwgaWQgfHwgX2tleSB8fCBwcm9maWxlSWQpICYmIHtpZDogcGFyc2VBcmFuZ29JZChfaWQgfHwgaWQgfHwgYHByb2ZpbGVzLyR7X2tleSB8fCBwcm9maWxlSWR9YCl9KSxcbiAgICAuLi4oaW1hZ2VzPy5sZW5ndGggJiYge2ltYWdlczogaW1hZ2VzLm1hcCgoaW1hZ2UpID0+IHBhcnNlSW1hZ2UoaW1hZ2UpKX0pLFxuICAgIC4uLihpbWFnZUNvdW50ICE9PSB1bmRlZmluZWQgJiYge2ltYWdlQ291bnQ6IHBhcnNlTnVtKGltYWdlQ291bnQpfSksXG4gICAgLi4uKGltYWdlSWQgJiYge2ltYWdlSWQ6IHBhcnNlSWQoaW1hZ2VJZCl9KSxcbiAgICAuLi4oaW1hZ2VVcmwgJiYge2ltYWdlVXJsfSksXG4gICAgLi4uKGxpa2VDb3VudCAhPT0gdW5kZWZpbmVkICYmIHtsaWtlQ291bnQ6IHBhcnNlTnVtKGxpa2VDb3VudCl9KSxcbiAgICAuLi4obmFtZSAmJiB7bmFtZTogcGFyc2VTdHJpbmcobmFtZSwgNjQpfSksXG4gICAgLi4uKChfa2V5IHx8IHByb2ZpbGVJZCkgJiYge3Byb2ZpbGVJZDogcGFyc2VJZChfa2V5IHx8IHByb2ZpbGVJZCB8fCAnJyl9KSxcbiAgICAuLi4odGFncz8ubGVuZ3RoICYmIHt0YWdzOiB0YWdzLm1hcCgodGFnKSA9PiBwYXJzZVRhZyh0YWcpKX0pLFxuICAgIC4uLih0aHVtYlVybCAmJiB7dGh1bWJVcmx9KSxcbiAgICAuLi4odXNlcklkICYmIHt1c2VySWQ6IHBhcnNlSWQodXNlcklkKX0pLFxuICAgIC4uLih2aWV3Q291bnQgIT09IHVuZGVmaW5lZCAmJiB7dmlld0NvdW50OiBwYXJzZU51bSh2aWV3Q291bnQpfSlcbiAgfSk7XG5cbiAgcmV0dXJuIHRyYW5zZm9ybWVkIGFzIFByb2ZpbGVUeXBlO1xufTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxPQUFRLGlCQUFBQSxFQUFlLGdCQUFBQyxFQUFjLGFBQUFDLEVBQVcsV0FBQUMsRUFBUyxZQUFBQyxFQUFVLGVBQUFDLE1BQWtCLGVBQ3JGLE9B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YXIiLCAicGFyc2VJZCIsICJwYXJzZU51bSIsICJwYXJzZVN0cmluZyIsICJ6IiwgInBhcnNlRG9jdW1lbnQiLCAicmVtb3ZlRW1wdHlLZXlzIiwgInBhcnNlSW1hZ2UiLCAicGFyc2VUYWciLCAiUHJvZmlsZVZhbGlkYXRpb25FcnJvciIsICJtZXNzYWdlIiwgImZpZWxkIiwgIlByb2ZpbGVJbnB1dFNjaGVtYSIsICJ2YWxpZGF0ZVByb2ZpbGVJbnB1dCIsICJwcm9maWxlIiwgImVycm9yIiwgImZpZWxkRXJyb3JzIiwgImUiLCAiZm9ybWF0UHJvZmlsZU91dHB1dCIsICJwYXJzZVByb2ZpbGUiLCAicGVyZm9ybVByb2ZpbGVUcmFuc2Zvcm1hdGlvbiIsICJfaWQiLCAiX2tleSIsICJhY3RpdmUiLCAiZ2VuZGVyIiwgImhhc0xpa2UiLCAiaGFzVmlldyIsICJpZCIsICJpbWFnZXMiLCAiaW1hZ2VDb3VudCIsICJpbWFnZUlkIiwgImltYWdlVXJsIiwgImxpa2VDb3VudCIsICJuYW1lIiwgInByb2ZpbGVJZCIsICJ0YWdzIiwgInRodW1iVXJsIiwgInVzZXJJZCIsICJ2aWV3Q291bnQiLCAiaW1hZ2UiLCAidGFnIl0KfQo=
@@ -1,24 +0,0 @@
1
- import type { ProfileType } from '../adapters/profileAdapter/profileAdapter';
2
- export declare const PROFILE_CONSTANTS: {
3
- ADD_ITEM_ERROR: string;
4
- ADD_ITEM_SUCCESS: string;
5
- DELETE_ITEM_ERROR: string;
6
- DELETE_ITEM_SUCCESS: string;
7
- GET_ITEM_ERROR: string;
8
- GET_ITEM_SUCCESS: string;
9
- GET_LIST_ERROR: string;
10
- GET_LIST_SUCCESS: string;
11
- UPDATE_ITEM_ERROR: string;
12
- UPDATE_ITEM_SUCCESS: string;
13
- };
14
- export interface ProfileState {
15
- readonly error?: Error;
16
- readonly list: ProfileType[];
17
- readonly listMap: Record<string, ProfileType>;
18
- }
19
- export declare const initialProfileState: ProfileState;
20
- export declare const profileStore: {
21
- initialState: ProfileState;
22
- name: string;
23
- reducer: (state?: ProfileState, action?: {}, _next?: {}) => ProfileState;
24
- };