@nlabs/metropolisjs 0.1.1 → 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 (326) 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 +1343 -0
  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/factory-pattern-usage.ts +283 -0
  19. package/examples/i18n-import-examples.ts +86 -0
  20. package/examples/i18n-namespace-usage.ts +118 -0
  21. package/examples/i18next-singleton-demo.ts +187 -0
  22. package/examples/permission-system-usage.tsx +415 -0
  23. package/examples/project-details.tsx +397 -0
  24. package/examples/shared-i18n-usage.tsx +203 -0
  25. package/examples/signup-error-handling.ts +100 -0
  26. package/examples/translation-types.ts +86 -0
  27. package/examples/translation-usage.tsx +336 -0
  28. package/factoryPatternGuide.md +244 -0
  29. package/index.js +1 -0
  30. package/jest.config.mjs +28 -0
  31. package/lex.config.mjs +26 -0
  32. package/lib/__tests__/e2e/helpers/testGraphQLServer.d.ts +22 -0
  33. package/lib/__tests__/e2e/helpers/testGraphQLServer.d.ts.map +1 -0
  34. package/lib/__tests__/e2e/helpers/testGraphQLServer.js +197 -0
  35. package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.d.ts +3 -0
  36. package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.d.ts.map +1 -0
  37. package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.js +52 -0
  38. package/lib/actions/appActions/appActions.d.ts +29 -0
  39. package/lib/actions/appActions/appActions.d.ts.map +1 -0
  40. package/lib/actions/appActions/appActions.js +159 -0
  41. package/lib/actions/connectionActions/connectionActions.d.ts +19 -0
  42. package/lib/actions/connectionActions/connectionActions.d.ts.map +1 -0
  43. package/lib/actions/connectionActions/connectionActions.js +131 -0
  44. package/lib/actions/contentActions/contentActions.d.ts +34 -0
  45. package/lib/actions/contentActions/contentActions.d.ts.map +1 -0
  46. package/lib/actions/contentActions/contentActions.js +314 -0
  47. package/lib/actions/conversationActions/conversationActions.d.ts +30 -0
  48. package/lib/actions/conversationActions/conversationActions.d.ts.map +1 -0
  49. package/lib/actions/conversationActions/conversationActions.js +225 -0
  50. package/lib/actions/eventActions/eventActions.d.ts +65 -0
  51. package/lib/actions/eventActions/eventActions.d.ts.map +1 -0
  52. package/lib/actions/eventActions/eventActions.js +436 -0
  53. package/lib/actions/groupActions/groupActions.d.ts +30 -0
  54. package/lib/actions/groupActions/groupActions.d.ts.map +1 -0
  55. package/lib/actions/groupActions/groupActions.js +229 -0
  56. package/lib/actions/imageActions/imageActions.d.ts +62 -0
  57. package/lib/actions/imageActions/imageActions.d.ts.map +1 -0
  58. package/lib/actions/imageActions/imageActions.js +593 -0
  59. package/lib/actions/index.d.ts +21 -0
  60. package/lib/actions/index.d.ts.map +1 -0
  61. package/lib/actions/index.js +22 -0
  62. package/lib/actions/locationActions/locationActions.d.ts +60 -0
  63. package/lib/actions/locationActions/locationActions.d.ts.map +1 -0
  64. package/lib/actions/locationActions/locationActions.js +388 -0
  65. package/lib/actions/messageActions/messageActions.d.ts +38 -0
  66. package/lib/actions/messageActions/messageActions.d.ts.map +1 -0
  67. package/lib/actions/messageActions/messageActions.js +235 -0
  68. package/lib/actions/permissionActions/permissionActions.d.ts +34 -0
  69. package/lib/actions/permissionActions/permissionActions.d.ts.map +1 -0
  70. package/lib/actions/permissionActions/permissionActions.js +330 -0
  71. package/lib/actions/personaActions/personaActions.d.ts +65 -0
  72. package/lib/actions/personaActions/personaActions.d.ts.map +1 -0
  73. package/lib/actions/personaActions/personaActions.js +572 -0
  74. package/lib/actions/postActions/postActions.d.ts +36 -0
  75. package/lib/actions/postActions/postActions.d.ts.map +1 -0
  76. package/lib/actions/postActions/postActions.js +447 -0
  77. package/lib/actions/reactionActions/reactionActions.d.ts +38 -0
  78. package/lib/actions/reactionActions/reactionActions.d.ts.map +1 -0
  79. package/lib/actions/reactionActions/reactionActions.js +413 -0
  80. package/lib/actions/sseActions/sseActions.d.ts +38 -0
  81. package/lib/actions/sseActions/sseActions.d.ts.map +1 -0
  82. package/lib/actions/sseActions/sseActions.js +148 -0
  83. package/lib/actions/subscriptionActions/subscriptionActions.d.ts +24 -0
  84. package/lib/actions/subscriptionActions/subscriptionActions.d.ts.map +1 -0
  85. package/lib/actions/subscriptionActions/subscriptionActions.js +329 -0
  86. package/lib/actions/tagActions/tagActions.d.ts +37 -0
  87. package/lib/actions/tagActions/tagActions.d.ts.map +1 -0
  88. package/lib/actions/tagActions/tagActions.js +347 -0
  89. package/lib/actions/translationActions/translationActions.d.ts +38 -0
  90. package/lib/actions/translationActions/translationActions.d.ts.map +1 -0
  91. package/lib/actions/translationActions/translationActions.js +189 -0
  92. package/lib/actions/userActions/userActions.d.ts +78 -0
  93. package/lib/actions/userActions/userActions.d.ts.map +1 -0
  94. package/lib/actions/userActions/userActions.js +844 -0
  95. package/lib/actions/videoActions/videoActions.d.ts +41 -0
  96. package/lib/actions/videoActions/videoActions.d.ts.map +1 -0
  97. package/lib/actions/videoActions/videoActions.js +532 -0
  98. package/lib/actions/websocketActions/websocketActions.d.ts +30 -0
  99. package/lib/actions/websocketActions/websocketActions.d.ts.map +1 -0
  100. package/lib/actions/websocketActions/websocketActions.js +377 -0
  101. package/lib/adapters/appAdapter/appAdapter.d.ts +8 -0
  102. package/lib/adapters/appAdapter/appAdapter.d.ts.map +1 -0
  103. package/lib/adapters/appAdapter/appAdapter.js +90 -0
  104. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts +21 -0
  105. package/lib/adapters/arangoAdapter/arangoAdapter.d.ts.map +1 -0
  106. package/lib/adapters/arangoAdapter/arangoAdapter.js +75 -0
  107. package/lib/adapters/contentAdapter/contentAdapter.d.ts +32 -0
  108. package/lib/adapters/contentAdapter/contentAdapter.d.ts.map +1 -0
  109. package/lib/adapters/contentAdapter/contentAdapter.js +107 -0
  110. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts +24 -0
  111. package/lib/adapters/conversationAdapter/conversationAdapter.d.ts.map +1 -0
  112. package/lib/adapters/conversationAdapter/conversationAdapter.js +75 -0
  113. package/lib/adapters/eventAdapter/eventAdapter.d.ts +46 -0
  114. package/lib/adapters/eventAdapter/eventAdapter.d.ts.map +1 -0
  115. package/lib/adapters/eventAdapter/eventAdapter.js +162 -0
  116. package/lib/adapters/fileAdapter/fileAdapter.d.ts +30 -0
  117. package/lib/adapters/fileAdapter/fileAdapter.d.ts.map +1 -0
  118. package/lib/adapters/fileAdapter/fileAdapter.js +118 -0
  119. package/lib/adapters/groupAdapter/groupAdapter.d.ts +28 -0
  120. package/lib/adapters/groupAdapter/groupAdapter.d.ts.map +1 -0
  121. package/lib/adapters/groupAdapter/groupAdapter.js +66 -0
  122. package/lib/adapters/imageAdapter/imageAdapter.d.ts +38 -0
  123. package/lib/adapters/imageAdapter/imageAdapter.d.ts.map +1 -0
  124. package/lib/adapters/imageAdapter/imageAdapter.js +134 -0
  125. package/lib/adapters/index.d.ts +34 -0
  126. package/lib/adapters/index.d.ts.map +1 -0
  127. package/lib/adapters/index.js +19 -0
  128. package/lib/adapters/locationAdapter/locationAdapter.d.ts +28 -0
  129. package/lib/adapters/locationAdapter/locationAdapter.d.ts.map +1 -0
  130. package/lib/adapters/locationAdapter/locationAdapter.js +95 -0
  131. package/lib/adapters/messageAdapter/messageAdapter.d.ts +31 -0
  132. package/lib/adapters/messageAdapter/messageAdapter.d.ts.map +1 -0
  133. package/lib/adapters/messageAdapter/messageAdapter.js +82 -0
  134. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts +41 -0
  135. package/lib/adapters/permissionAdapter/permissionAdapter.d.ts.map +1 -0
  136. package/lib/adapters/permissionAdapter/permissionAdapter.js +120 -0
  137. package/lib/adapters/personaAdapter/personaAdapter.d.ts +44 -0
  138. package/lib/adapters/personaAdapter/personaAdapter.d.ts.map +1 -0
  139. package/lib/adapters/personaAdapter/personaAdapter.js +161 -0
  140. package/lib/adapters/postAdapter/postAdapter.d.ts +33 -0
  141. package/lib/adapters/postAdapter/postAdapter.d.ts.map +1 -0
  142. package/lib/adapters/postAdapter/postAdapter.js +115 -0
  143. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts +23 -0
  144. package/lib/adapters/reactionAdapter/reactionAdapter.d.ts.map +1 -0
  145. package/lib/adapters/reactionAdapter/reactionAdapter.js +81 -0
  146. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts +17 -0
  147. package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts.map +1 -0
  148. package/lib/adapters/reaktorAdapter/reaktorAdapter.js +58 -0
  149. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts +24 -0
  150. package/lib/adapters/sessionAdapter/sessionAdapter.d.ts.map +1 -0
  151. package/lib/adapters/sessionAdapter/sessionAdapter.js +80 -0
  152. package/lib/adapters/tagAdapter/tagAdapter.d.ts +21 -0
  153. package/lib/adapters/tagAdapter/tagAdapter.d.ts.map +1 -0
  154. package/lib/adapters/tagAdapter/tagAdapter.js +98 -0
  155. package/lib/adapters/translationAdapter/translationAdapter.d.ts +21 -0
  156. package/lib/adapters/translationAdapter/translationAdapter.d.ts.map +1 -0
  157. package/lib/adapters/translationAdapter/translationAdapter.js +55 -0
  158. package/lib/adapters/userAdapter/userAdapter.d.ts +67 -0
  159. package/lib/adapters/userAdapter/userAdapter.d.ts.map +1 -0
  160. package/lib/adapters/userAdapter/userAdapter.js +302 -0
  161. package/lib/adapters/videoAdapter/videoAdapter.d.ts +8 -0
  162. package/lib/adapters/videoAdapter/videoAdapter.d.ts.map +1 -0
  163. package/lib/adapters/videoAdapter/videoAdapter.js +194 -0
  164. package/lib/config/index.d.ts +44 -0
  165. package/lib/config/index.d.ts.map +1 -0
  166. package/lib/config/index.js +97 -0
  167. package/lib/constants/Collections.d.ts +44 -0
  168. package/lib/constants/Collections.d.ts.map +1 -0
  169. package/lib/constants/Collections.js +40 -0
  170. package/lib/constants/MetropolisConstants.d.ts +15 -0
  171. package/lib/constants/MetropolisConstants.d.ts.map +1 -0
  172. package/lib/constants/MetropolisConstants.js +15 -0
  173. package/lib/graphql/message.d.ts +3 -0
  174. package/lib/graphql/message.d.ts.map +1 -0
  175. package/lib/graphql/message.js +20 -0
  176. package/lib/graphql/notification.d.ts +3 -0
  177. package/lib/graphql/notification.d.ts.map +1 -0
  178. package/lib/graphql/notification.js +20 -0
  179. package/lib/graphql/session.d.ts +2 -0
  180. package/lib/graphql/session.d.ts.map +1 -0
  181. package/lib/graphql/session.js +17 -0
  182. package/lib/index.d.ts +52 -0
  183. package/lib/index.d.ts.map +1 -0
  184. package/lib/index.js +248 -0
  185. package/lib/stores/appStore.d.ts +23 -0
  186. package/lib/stores/appStore.d.ts.map +1 -0
  187. package/lib/stores/appStore.js +23 -0
  188. package/lib/stores/contentStore.d.ts +36 -0
  189. package/lib/stores/contentStore.d.ts.map +1 -0
  190. package/lib/stores/contentStore.js +139 -0
  191. package/lib/stores/conversationStore.d.ts +38 -0
  192. package/lib/stores/conversationStore.d.ts.map +1 -0
  193. package/lib/stores/conversationStore.js +117 -0
  194. package/lib/stores/eventStore.d.ts +37 -0
  195. package/lib/stores/eventStore.d.ts.map +1 -0
  196. package/lib/stores/eventStore.js +47 -0
  197. package/lib/stores/groupStore.d.ts +37 -0
  198. package/lib/stores/groupStore.d.ts.map +1 -0
  199. package/lib/stores/groupStore.js +68 -0
  200. package/lib/stores/imageStore.d.ts +40 -0
  201. package/lib/stores/imageStore.d.ts.map +1 -0
  202. package/lib/stores/imageStore.js +53 -0
  203. package/lib/stores/index.d.ts +24 -0
  204. package/lib/stores/index.d.ts.map +1 -0
  205. package/lib/stores/index.js +24 -0
  206. package/lib/stores/locationStore.d.ts +34 -0
  207. package/lib/stores/locationStore.d.ts.map +1 -0
  208. package/lib/stores/locationStore.js +42 -0
  209. package/lib/stores/messageStore.d.ts +51 -0
  210. package/lib/stores/messageStore.d.ts.map +1 -0
  211. package/lib/stores/messageStore.js +137 -0
  212. package/lib/stores/notificationStore.d.ts +33 -0
  213. package/lib/stores/notificationStore.d.ts.map +1 -0
  214. package/lib/stores/notificationStore.js +55 -0
  215. package/lib/stores/permissionStore.d.ts +37 -0
  216. package/lib/stores/permissionStore.d.ts.map +1 -0
  217. package/lib/stores/permissionStore.js +117 -0
  218. package/lib/stores/personaStore.d.ts +26 -0
  219. package/lib/stores/personaStore.d.ts.map +1 -0
  220. package/lib/stores/personaStore.js +118 -0
  221. package/lib/stores/postStore.d.ts +34 -0
  222. package/lib/stores/postStore.d.ts.map +1 -0
  223. package/lib/stores/postStore.js +53 -0
  224. package/lib/stores/reactionStore.d.ts +25 -0
  225. package/lib/stores/reactionStore.d.ts.map +1 -0
  226. package/lib/stores/reactionStore.js +28 -0
  227. package/lib/stores/subscriptionStore.d.ts +41 -0
  228. package/lib/stores/subscriptionStore.d.ts.map +1 -0
  229. package/lib/stores/subscriptionStore.js +85 -0
  230. package/lib/stores/tagStore.d.ts +34 -0
  231. package/lib/stores/tagStore.d.ts.map +1 -0
  232. package/lib/stores/tagStore.js +87 -0
  233. package/lib/stores/translationStore.d.ts +42 -0
  234. package/lib/stores/translationStore.d.ts.map +1 -0
  235. package/lib/stores/translationStore.js +122 -0
  236. package/lib/stores/userStore.d.ts +74 -0
  237. package/lib/stores/userStore.d.ts.map +1 -0
  238. package/lib/stores/userStore.js +319 -0
  239. package/lib/stores/videoStore.d.ts +39 -0
  240. package/lib/stores/videoStore.d.ts.map +1 -0
  241. package/lib/stores/videoStore.js +132 -0
  242. package/lib/stores/websocketStore.d.ts +24 -0
  243. package/lib/stores/websocketStore.d.ts.map +1 -0
  244. package/lib/stores/websocketStore.js +51 -0
  245. package/lib/types/apps.types.d.ts +17 -0
  246. package/lib/types/apps.types.d.ts.map +1 -0
  247. package/lib/types/apps.types.js +6 -0
  248. package/lib/types/common.types.d.ts +31 -0
  249. package/lib/types/common.types.d.ts.map +1 -0
  250. package/lib/types/common.types.js +6 -0
  251. package/lib/types/conversations.types.d.ts +17 -0
  252. package/lib/types/conversations.types.d.ts.map +1 -0
  253. package/lib/types/conversations.types.js +6 -0
  254. package/lib/types/edges.types.d.ts +38 -0
  255. package/lib/types/edges.types.d.ts.map +1 -0
  256. package/lib/types/edges.types.js +6 -0
  257. package/lib/types/groups.types.d.ts +19 -0
  258. package/lib/types/groups.types.d.ts.map +1 -0
  259. package/lib/types/groups.types.js +6 -0
  260. package/lib/types/index.d.ts +12 -0
  261. package/lib/types/index.d.ts.map +1 -0
  262. package/lib/types/index.js +12 -0
  263. package/lib/types/subscriptions.types.d.ts +32 -0
  264. package/lib/types/subscriptions.types.d.ts.map +1 -0
  265. package/lib/types/subscriptions.types.js +6 -0
  266. package/lib/types/videos.types.d.ts +61 -0
  267. package/lib/types/videos.types.d.ts.map +1 -0
  268. package/lib/types/videos.types.js +6 -0
  269. package/lib/utils/MetropolisProvider.d.ts +58 -0
  270. package/lib/utils/MetropolisProvider.d.ts.map +1 -0
  271. package/lib/utils/MetropolisProvider.js +31 -0
  272. package/lib/utils/actionFactory.d.ts +24 -0
  273. package/lib/utils/actionFactory.d.ts.map +1 -0
  274. package/lib/utils/actionFactory.js +95 -0
  275. package/lib/utils/api.d.ts +44 -0
  276. package/lib/utils/api.d.ts.map +1 -0
  277. package/lib/utils/api.js +253 -0
  278. package/lib/utils/app.d.ts +7 -0
  279. package/lib/utils/app.d.ts.map +1 -0
  280. package/lib/utils/app.js +15 -0
  281. package/lib/utils/baseActionFactory.d.ts +16 -0
  282. package/lib/utils/baseActionFactory.d.ts.map +1 -0
  283. package/lib/utils/baseActionFactory.js +72 -0
  284. package/lib/utils/configUtils.d.ts +11 -0
  285. package/lib/utils/configUtils.d.ts.map +1 -0
  286. package/lib/utils/configUtils.js +20 -0
  287. package/lib/utils/dateUtils.d.ts +3 -0
  288. package/lib/utils/dateUtils.d.ts.map +1 -0
  289. package/lib/utils/dateUtils.js +11 -0
  290. package/lib/utils/file.d.ts +3 -0
  291. package/lib/utils/file.d.ts.map +1 -0
  292. package/lib/utils/file.js +156 -0
  293. package/lib/utils/i18n.d.ts +7 -0
  294. package/lib/utils/i18n.d.ts.map +1 -0
  295. package/lib/utils/i18n.js +96 -0
  296. package/lib/utils/index.d.ts +20 -0
  297. package/lib/utils/index.d.ts.map +1 -0
  298. package/lib/utils/index.js +26 -0
  299. package/lib/utils/location.d.ts +10 -0
  300. package/lib/utils/location.d.ts.map +1 -0
  301. package/lib/utils/location.js +82 -0
  302. package/lib/utils/permissionUtils.d.ts +22 -0
  303. package/lib/utils/permissionUtils.d.ts.map +1 -0
  304. package/lib/utils/permissionUtils.js +72 -0
  305. package/lib/utils/requestCache.d.ts +8 -0
  306. package/lib/utils/requestCache.d.ts.map +1 -0
  307. package/lib/utils/requestCache.js +53 -0
  308. package/lib/utils/session.d.ts +14 -0
  309. package/lib/utils/session.d.ts.map +1 -0
  310. package/lib/utils/session.js +107 -0
  311. package/lib/utils/useConversationTyping.d.ts +26 -0
  312. package/lib/utils/useConversationTyping.d.ts.map +1 -0
  313. package/lib/utils/useConversationTyping.js +117 -0
  314. package/lib/utils/useMetropolis.d.ts +67 -0
  315. package/lib/utils/useMetropolis.d.ts.map +1 -0
  316. package/lib/utils/useMetropolis.js +311 -0
  317. package/lib/utils/useTranslations.d.ts +16 -0
  318. package/lib/utils/useTranslations.d.ts.map +1 -0
  319. package/lib/utils/useTranslations.js +105 -0
  320. package/lib/utils/validatorFactory.d.ts +49 -0
  321. package/lib/utils/validatorFactory.d.ts.map +1 -0
  322. package/lib/utils/validatorFactory.js +95 -0
  323. package/package.json +75 -28
  324. package/temp_signin.ts +73 -0
  325. package/tsconfig.lint.json +25 -0
  326. package/tsconfig.test.json +14 -0
@@ -0,0 +1,302 @@
1
+ import { parseArangoId, parseChar, parseEmail, parseId, parseNum, parseString, parseVarChar } from '@nlabs/utils';
2
+ import { z } from 'zod';
3
+ import { parseDocument, removeEmptyKeys } from '../arangoAdapter/arangoAdapter.js';
4
+ import { parseReaktorDate, parseReaktorItemId, parseReaktorName, parseReaktorType } from '../reaktorAdapter/reaktorAdapter.js';
5
+ export class UserValidationError extends Error {
6
+ field;
7
+ constructor(message, field){
8
+ super(message), this.field = field;
9
+ this.name = 'UserValidationError';
10
+ }
11
+ }
12
+ const UserInputSchema = z.object({
13
+ _id: z.string().optional(),
14
+ _key: z.string().optional(),
15
+ active: z.boolean().optional(),
16
+ added: z.number().optional(),
17
+ bankId: z.string().max(160).optional(),
18
+ city: z.string().max(160).optional(),
19
+ country: z.string().length(2).optional(),
20
+ currency: z.string().length(3).optional(),
21
+ deviceToken: z.string().max(160).optional(),
22
+ dob: z.number().optional(),
23
+ birthdate: z.number().optional(),
24
+ email: z.email().optional(),
25
+ firstName: z.string().max(160).optional(),
26
+ gender: z.string().length(1).optional(),
27
+ id: z.string().optional(),
28
+ imageId: z.string().optional(),
29
+ lastName: z.string().max(160).optional(),
30
+ lastActive: z.number().optional(),
31
+ locale: z.string().max(5).optional(),
32
+ mailingList: z.boolean().optional(),
33
+ name: z.string().max(160).optional(),
34
+ password: z.string().max(160).optional(),
35
+ phone: z.string().max(20).optional(),
36
+ planExpires: z.number().optional(),
37
+ planId: z.string().max(160).optional(),
38
+ planStatus: z.string().max(160).optional(),
39
+ planSubscriptionId: z.string().max(160).optional(),
40
+ salt: z.string().max(160).optional(),
41
+ state: z.string().length(2).optional(),
42
+ street1: z.string().max(160).optional(),
43
+ street2: z.string().max(160).optional(),
44
+ stripeAccountId: z.string().max(160).optional(),
45
+ stripeCardBrand: z.string().max(160).optional(),
46
+ stripeCardId: z.string().max(160).optional(),
47
+ stripeCardLast4: z.string().max(4).optional(),
48
+ stripeCustomerId: z.string().max(160).optional(),
49
+ timezone: z.string().max(160).optional(),
50
+ type: z.string().max(160).optional(),
51
+ updated: z.number().optional(),
52
+ userAccess: z.number().optional(),
53
+ userId: z.string().optional(),
54
+ username: z.string().max(160).optional(),
55
+ verifiedEmail: z.boolean().optional(),
56
+ verifiedEmailCode: z.number().optional(),
57
+ verifiedEmailExpires: z.number().optional(),
58
+ verifiedPhone: z.boolean().optional(),
59
+ verifiedPhoneExpires: z.number().optional(),
60
+ verifiedSmsCode: z.number().optional(),
61
+ zip: z.string().max(20).optional()
62
+ }).loose();
63
+ const validatePhone = (phone)=>{
64
+ if (!phone) {
65
+ return undefined;
66
+ }
67
+ const cleaned = phone.replace(/\D/g, '');
68
+ if (cleaned.length < 10 || cleaned.length > 15) {
69
+ throw new UserValidationError('Invalid phone number format', 'phone');
70
+ }
71
+ return `+${cleaned}`;
72
+ };
73
+ const validateCountry = (country)=>{
74
+ if (!country) {
75
+ return undefined;
76
+ }
77
+ const upper = country.toUpperCase();
78
+ if (!/^[A-Z]{2}$/.test(upper)) {
79
+ throw new UserValidationError('Country must be a 2-letter ISO code', 'country');
80
+ }
81
+ return upper;
82
+ };
83
+ const validateState = (state)=>{
84
+ if (!state) {
85
+ return undefined;
86
+ }
87
+ const upper = state.toUpperCase();
88
+ if (!/^[A-Z]{2}$/.test(upper)) {
89
+ throw new UserValidationError('State must be a 2-letter code', 'state');
90
+ }
91
+ return upper;
92
+ };
93
+ const validateGender = (gender)=>{
94
+ if (!gender) {
95
+ return undefined;
96
+ }
97
+ const upper = gender.toUpperCase();
98
+ if (!/^[MF]$/.test(upper)) {
99
+ throw new UserValidationError('Gender must be M or F', 'gender');
100
+ }
101
+ return upper;
102
+ };
103
+ const userCache = new Map();
104
+ export const validateUserInput = (user)=>{
105
+ try {
106
+ const validated = UserInputSchema.parse(user);
107
+ return validated;
108
+ } catch (error) {
109
+ if (error instanceof z.ZodError) {
110
+ const fieldErrors = error.issues.map((e)=>`${e.path.join('.')}: ${e.message}`).join(', ');
111
+ throw new UserValidationError(`User validation failed: ${fieldErrors}`);
112
+ }
113
+ throw error;
114
+ }
115
+ };
116
+ export const formatUserOutput = (user)=>{
117
+ const { password, salt, verifiedEmailCode, verifiedSmsCode, ...safeUser } = user;
118
+ return safeUser;
119
+ };
120
+ export const parseUser = (user)=>{
121
+ try {
122
+ const parsed = performUserTransformation(user);
123
+ return parsed;
124
+ } catch (error) {
125
+ if (error instanceof UserValidationError) {
126
+ throw error;
127
+ }
128
+ throw new UserValidationError(`User parsing failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
129
+ }
130
+ };
131
+ const performUserTransformation = (user)=>{
132
+ const { _id, _key, active, bankId, city, country, currency, deviceToken, dob, birthdate, email, firstName, gender, id, imageId, lastName, lastActive, locale, mailingList, name, password, phone, planExpires, planId, planStatus, planSubscriptionId, salt, state, street1, street2, stripeAccountId, stripeCardBrand, stripeCardId, stripeCardLast4, stripeCustomerId, timezone, type, userAccess, userId, username, verifiedEmail, verifiedEmailCode, verifiedEmailExpires, verifiedPhone, verifiedPhoneExpires, verifiedSmsCode, zip } = user;
133
+ const normalizedDob = birthdate ?? dob;
134
+ const normalizedFirst = firstName;
135
+ const normalizedLast = lastName;
136
+ const transformed = {
137
+ ...parseDocument(user),
138
+ ...(_id || id || _key || userId) && {
139
+ id: parseArangoId(_id || id || `users/${_key || userId}`)
140
+ },
141
+ ...(_key || userId) && {
142
+ userId: parseId(_key || userId || '')
143
+ },
144
+ ...active !== undefined && {
145
+ active: !!active
146
+ },
147
+ ...bankId && {
148
+ bankId: parseVarChar(bankId, 160)
149
+ },
150
+ ...city && {
151
+ city: parseVarChar(city, 160)
152
+ },
153
+ ...country && {
154
+ country: validateCountry(country)
155
+ },
156
+ ...currency && {
157
+ currency: parseChar(currency, 3).toUpperCase()
158
+ },
159
+ ...deviceToken && {
160
+ deviceToken: parseVarChar(deviceToken, 160)
161
+ },
162
+ ...normalizedDob !== undefined && {
163
+ birthdate: parseReaktorDate(normalizedDob),
164
+ dob: parseReaktorDate(normalizedDob)
165
+ },
166
+ ...email && {
167
+ email: parseEmail(email)
168
+ },
169
+ ...normalizedFirst && {
170
+ firstName: parseVarChar(normalizedFirst, 160)
171
+ },
172
+ ...gender && {
173
+ gender: validateGender(gender)
174
+ },
175
+ ...imageId && {
176
+ imageId: parseReaktorItemId(imageId)
177
+ },
178
+ ...normalizedLast && {
179
+ lastName: parseVarChar(normalizedLast, 160)
180
+ },
181
+ ...lastActive !== undefined && {
182
+ lastActive: parseReaktorDate(lastActive)
183
+ },
184
+ ...locale && {
185
+ locale: parseString(locale, 5)
186
+ },
187
+ ...mailingList !== undefined && {
188
+ mailingList: !!mailingList
189
+ },
190
+ ...name && {
191
+ name: parseReaktorName(name)
192
+ },
193
+ ...password && {
194
+ password: parseVarChar(password, 160)
195
+ },
196
+ ...phone && {
197
+ phone: validatePhone(phone)
198
+ },
199
+ ...planExpires !== undefined && {
200
+ planExpires: parseReaktorDate(planExpires)
201
+ },
202
+ ...planId && {
203
+ planId: parseVarChar(planId, 160)
204
+ },
205
+ ...planStatus && {
206
+ planStatus: parseVarChar(planStatus, 160)
207
+ },
208
+ ...planSubscriptionId && {
209
+ planSubscriptionId: parseVarChar(planSubscriptionId, 160)
210
+ },
211
+ ...salt && {
212
+ salt: parseVarChar(salt, 160)
213
+ },
214
+ ...state && {
215
+ state: validateState(state)
216
+ },
217
+ ...street1 && {
218
+ street1: parseVarChar(street1, 160)
219
+ },
220
+ ...street2 && {
221
+ street2: parseVarChar(street2, 160)
222
+ },
223
+ ...stripeAccountId && {
224
+ stripeAccountId: parseVarChar(stripeAccountId, 160)
225
+ },
226
+ ...stripeCardBrand && {
227
+ stripeCardBrand: parseVarChar(stripeCardBrand, 160)
228
+ },
229
+ ...stripeCardId && {
230
+ stripeCardId: parseVarChar(stripeCardId, 160)
231
+ },
232
+ ...stripeCardLast4 && {
233
+ stripeCardLast4: parseVarChar(stripeCardLast4, 4)
234
+ },
235
+ ...stripeCustomerId && {
236
+ stripeCustomerId: parseVarChar(stripeCustomerId, 160)
237
+ },
238
+ ...timezone && {
239
+ timezone: parseString(timezone, 160)
240
+ },
241
+ ...type && {
242
+ type: parseReaktorType(type)
243
+ },
244
+ ...userAccess !== undefined && {
245
+ userAccess: userAccess ? parseNum(userAccess) : 0
246
+ },
247
+ ...username && {
248
+ username: parseVarChar(username, 160)
249
+ },
250
+ ...verifiedEmail !== undefined && {
251
+ verifiedEmail: !!verifiedEmail
252
+ },
253
+ ...verifiedEmailCode !== undefined && {
254
+ verifiedEmailCode: parseNum(verifiedEmailCode, 10)
255
+ },
256
+ ...verifiedEmailExpires !== undefined && {
257
+ verifiedEmailExpires: parseNum(verifiedEmailExpires, 10)
258
+ },
259
+ ...verifiedPhone !== undefined && {
260
+ verifiedPhone: !!verifiedPhone
261
+ },
262
+ ...verifiedPhoneExpires !== undefined && {
263
+ verifiedPhoneExpires: parseNum(verifiedPhoneExpires, 10)
264
+ },
265
+ ...verifiedSmsCode !== undefined && {
266
+ verifiedSmsCode: parseNum(verifiedSmsCode, 10)
267
+ },
268
+ ...zip && {
269
+ zip: parseVarChar(zip, 20)
270
+ }
271
+ };
272
+ const result = removeEmptyKeys(transformed);
273
+ if (user._id) {
274
+ result.id = user._id;
275
+ result._id = user._id;
276
+ } else if (user.id && !result.id) {
277
+ result.id = user.id;
278
+ result._id = user.id;
279
+ }
280
+ if (user._key) {
281
+ result.userId = user._key;
282
+ result._key = user._key;
283
+ } else if (user.userId && !result.userId) {
284
+ result.userId = user.userId;
285
+ result._key = user.userId;
286
+ }
287
+ if (user.userId && !result._key) {
288
+ result._key = user.userId;
289
+ }
290
+ if (user.id && !result._id) {
291
+ result._id = user.id;
292
+ }
293
+ return result;
294
+ };
295
+ export const clearUserCache = ()=>{
296
+ userCache.clear();
297
+ };
298
+ export const getUserCacheSize = ()=>userCache.size;
299
+ export { userCache };
300
+ export const parseUserLegacy = (user)=>parseUser(user);
301
+
302
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWRhcHRlcnMvdXNlckFkYXB0ZXIvdXNlckFkYXB0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtwYXJzZUFyYW5nb0lkLCBwYXJzZUNoYXIsIHBhcnNlRW1haWwsIHBhcnNlSWQsIHBhcnNlTnVtLCBwYXJzZVN0cmluZywgcGFyc2VWYXJDaGFyfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuXG5pbXBvcnQge3BhcnNlRG9jdW1lbnQsIHJlbW92ZUVtcHR5S2V5c30gZnJvbSAnLi4vYXJhbmdvQWRhcHRlci9hcmFuZ29BZGFwdGVyLmpzJztcbmltcG9ydCB7cGFyc2VSZWFrdG9yRGF0ZSwgcGFyc2VSZWFrdG9ySXRlbUlkLCBwYXJzZVJlYWt0b3JOYW1lLCBwYXJzZVJlYWt0b3JUeXBlfSBmcm9tICcuLi9yZWFrdG9yQWRhcHRlci9yZWFrdG9yQWRhcHRlci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlciB7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbiAgX2lkPzogc3RyaW5nO1xuICBfa2V5Pzogc3RyaW5nO1xuICBhY3RpdmU/OiBib29sZWFuO1xuICBhZGRlZD86IG51bWJlcjtcbiAgYmFua0lkPzogc3RyaW5nO1xuICBjaXR5Pzogc3RyaW5nO1xuICBjb3VudHJ5Pzogc3RyaW5nO1xuICBjdXJyZW5jeT86IHN0cmluZztcbiAgZGV2aWNlVG9rZW4/OiBzdHJpbmc7XG4gIGRvYj86IG51bWJlcjtcbiAgYmlydGhkYXRlPzogbnVtYmVyO1xuICBlbWFpbD86IHN0cmluZztcbiAgZmlyc3ROYW1lPzogc3RyaW5nO1xuICBnZW5kZXI/OiBzdHJpbmc7XG4gIGlkPzogc3RyaW5nO1xuICBpbWFnZUlkPzogc3RyaW5nO1xuICBsYXN0TmFtZT86IHN0cmluZztcbiAgbGFzdEFjdGl2ZT86IG51bWJlcjtcbiAgbG9jYWxlPzogc3RyaW5nO1xuICBtYWlsaW5nTGlzdD86IGJvb2xlYW47XG4gIG1vZGlmaWVkPzogbnVtYmVyO1xuICBuYW1lPzogc3RyaW5nO1xuICBwYXNzd29yZD86IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG4gIHBsYW5FeHBpcmVzPzogbnVtYmVyO1xuICBwbGFuSWQ/OiBzdHJpbmc7XG4gIHBsYW5TdGF0dXM/OiBzdHJpbmc7XG4gIHBsYW5TdWJzY3JpcHRpb25JZD86IHN0cmluZztcbiAgc2FsdD86IHN0cmluZztcbiAgc3RhdGU/OiBzdHJpbmc7XG4gIHN0cmVldDE/OiBzdHJpbmc7XG4gIHN0cmVldDI/OiBzdHJpbmc7XG4gIHN0cmlwZUFjY291bnRJZD86IHN0cmluZztcbiAgc3RyaXBlQ2FyZEJyYW5kPzogc3RyaW5nO1xuICBzdHJpcGVDYXJkSWQ/OiBzdHJpbmc7XG4gIHN0cmlwZUNhcmRMYXN0ND86IHN0cmluZztcbiAgc3RyaXBlQ3VzdG9tZXJJZD86IHN0cmluZztcbiAgdGltZXpvbmU/OiBzdHJpbmc7XG4gIHRodW1iVXJsPzogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICB1cGRhdGVkPzogbnVtYmVyO1xuICB1c2VyQWNjZXNzPzogbnVtYmVyO1xuICB1c2VySWQ/OiBzdHJpbmc7XG4gIHVzZXJuYW1lPzogc3RyaW5nO1xuICB2ZXJpZmllZEVtYWlsPzogYm9vbGVhbjtcbiAgdmVyaWZpZWRFbWFpbENvZGU/OiBudW1iZXI7XG4gIHZlcmlmaWVkRW1haWxFeHBpcmVzPzogbnVtYmVyO1xuICB2ZXJpZmllZFBob25lPzogYm9vbGVhbjtcbiAgdmVyaWZpZWRQaG9uZUV4cGlyZXM/OiBudW1iZXI7XG4gIHZlcmlmaWVkU21zQ29kZT86IG51bWJlcjtcbiAgemlwPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgVXNlclZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBwdWJsaWMgZmllbGQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnVXNlclZhbGlkYXRpb25FcnJvcic7XG4gIH1cbn1cblxuY29uc3QgVXNlcklucHV0U2NoZW1hID0gei5vYmplY3Qoe1xuICBfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX2tleTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBhY3RpdmU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIGFkZGVkOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGJhbmtJZDogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBjaXR5OiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIGNvdW50cnk6IHouc3RyaW5nKCkubGVuZ3RoKDIpLm9wdGlvbmFsKCksXG4gIGN1cnJlbmN5OiB6LnN0cmluZygpLmxlbmd0aCgzKS5vcHRpb25hbCgpLFxuICBkZXZpY2VUb2tlbjogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBkb2I6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgYmlydGhkYXRlOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGVtYWlsOiB6LmVtYWlsKCkub3B0aW9uYWwoKSxcbiAgZmlyc3ROYW1lOiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIGdlbmRlcjogei5zdHJpbmcoKS5sZW5ndGgoMSkub3B0aW9uYWwoKSxcbiAgaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgaW1hZ2VJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBsYXN0TmFtZTogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBsYXN0QWN0aXZlOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGxvY2FsZTogei5zdHJpbmcoKS5tYXgoNSkub3B0aW9uYWwoKSxcbiAgbWFpbGluZ0xpc3Q6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIG5hbWU6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgcGFzc3dvcmQ6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgcGhvbmU6IHouc3RyaW5nKCkubWF4KDIwKS5vcHRpb25hbCgpLFxuICBwbGFuRXhwaXJlczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBwbGFuSWQ6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgcGxhblN0YXR1czogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBwbGFuU3Vic2NyaXB0aW9uSWQ6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgc2FsdDogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBzdGF0ZTogei5zdHJpbmcoKS5sZW5ndGgoMikub3B0aW9uYWwoKSxcbiAgc3RyZWV0MTogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBzdHJlZXQyOiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIHN0cmlwZUFjY291bnRJZDogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBzdHJpcGVDYXJkQnJhbmQ6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgc3RyaXBlQ2FyZElkOiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIHN0cmlwZUNhcmRMYXN0NDogei5zdHJpbmcoKS5tYXgoNCkub3B0aW9uYWwoKSxcbiAgc3RyaXBlQ3VzdG9tZXJJZDogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICB0aW1lem9uZTogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICB0eXBlOiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIHVwZGF0ZWQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdXNlckFjY2Vzczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB1c2VySWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdXNlcm5hbWU6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgdmVyaWZpZWRFbWFpbDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgdmVyaWZpZWRFbWFpbENvZGU6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdmVyaWZpZWRFbWFpbEV4cGlyZXM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdmVyaWZpZWRQaG9uZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgdmVyaWZpZWRQaG9uZUV4cGlyZXM6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgdmVyaWZpZWRTbXNDb2RlOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHppcDogei5zdHJpbmcoKS5tYXgoMjApLm9wdGlvbmFsKClcbn0pLmxvb3NlKCk7XG5cbmNvbnN0IHZhbGlkYXRlUGhvbmUgPSAocGhvbmU/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBpZighcGhvbmUpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IGNsZWFuZWQgPSBwaG9uZS5yZXBsYWNlKC9cXEQvZywgJycpO1xuICBpZihjbGVhbmVkLmxlbmd0aCA8IDEwIHx8IGNsZWFuZWQubGVuZ3RoID4gMTUpIHtcbiAgICB0aHJvdyBuZXcgVXNlclZhbGlkYXRpb25FcnJvcignSW52YWxpZCBwaG9uZSBudW1iZXIgZm9ybWF0JywgJ3Bob25lJyk7XG4gIH1cbiAgcmV0dXJuIGArJHtjbGVhbmVkfWA7XG59O1xuXG5jb25zdCB2YWxpZGF0ZUNvdW50cnkgPSAoY291bnRyeT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmKCFjb3VudHJ5KSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCB1cHBlciA9IGNvdW50cnkudG9VcHBlckNhc2UoKTtcbiAgaWYoIS9eW0EtWl17Mn0kLy50ZXN0KHVwcGVyKSkge1xuICAgIHRocm93IG5ldyBVc2VyVmFsaWRhdGlvbkVycm9yKCdDb3VudHJ5IG11c3QgYmUgYSAyLWxldHRlciBJU08gY29kZScsICdjb3VudHJ5Jyk7XG4gIH1cbiAgcmV0dXJuIHVwcGVyO1xufTtcblxuY29uc3QgdmFsaWRhdGVTdGF0ZSA9IChzdGF0ZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmKCFzdGF0ZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgdXBwZXIgPSBzdGF0ZS50b1VwcGVyQ2FzZSgpO1xuICBpZighL15bQS1aXXsyfSQvLnRlc3QodXBwZXIpKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJWYWxpZGF0aW9uRXJyb3IoJ1N0YXRlIG11c3QgYmUgYSAyLWxldHRlciBjb2RlJywgJ3N0YXRlJyk7XG4gIH1cbiAgcmV0dXJuIHVwcGVyO1xufTtcblxuY29uc3QgdmFsaWRhdGVHZW5kZXIgPSAoZ2VuZGVyPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYoIWdlbmRlcikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgdXBwZXIgPSBnZW5kZXIudG9VcHBlckNhc2UoKTtcbiAgaWYoIS9eW01GXSQvLnRlc3QodXBwZXIpKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJWYWxpZGF0aW9uRXJyb3IoJ0dlbmRlciBtdXN0IGJlIE0gb3IgRicsICdnZW5kZXInKTtcbiAgfVxuICByZXR1cm4gdXBwZXI7XG59O1xuXG5jb25zdCB1c2VyQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgVXNlcj4oKTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlVXNlcklucHV0ID0gKHVzZXI6IHVua25vd24pOiBVc2VyID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB2YWxpZGF0ZWQgPSBVc2VySW5wdXRTY2hlbWEucGFyc2UodXNlcik7XG4gICAgcmV0dXJuIHZhbGlkYXRlZCBhcyBVc2VyO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgaWYoZXJyb3IgaW5zdGFuY2VvZiB6LlpvZEVycm9yKSB7XG4gICAgICBjb25zdCBmaWVsZEVycm9ycyA9IGVycm9yLmlzc3Vlcy5tYXAoKGUpID0+IGAke2UucGF0aC5qb2luKCcuJyl9OiAke2UubWVzc2FnZX1gKS5qb2luKCcsICcpO1xuICAgICAgdGhyb3cgbmV3IFVzZXJWYWxpZGF0aW9uRXJyb3IoYFVzZXIgdmFsaWRhdGlvbiBmYWlsZWQ6ICR7ZmllbGRFcnJvcnN9YCk7XG4gICAgfVxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0VXNlck91dHB1dCA9ICh1c2VyOiBVc2VyKTogVXNlciA9PiB7XG4gIGNvbnN0IHtwYXNzd29yZCwgc2FsdCwgdmVyaWZpZWRFbWFpbENvZGUsIHZlcmlmaWVkU21zQ29kZSwgLi4uc2FmZVVzZXJ9ID0gdXNlcjtcbiAgcmV0dXJuIHNhZmVVc2VyO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlVXNlciA9ICh1c2VyOiBVc2VyKTogVXNlciA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGVyZm9ybVVzZXJUcmFuc2Zvcm1hdGlvbih1c2VyKTtcbiAgICByZXR1cm4gcGFyc2VkO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgaWYoZXJyb3IgaW5zdGFuY2VvZiBVc2VyVmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFVzZXJWYWxpZGF0aW9uRXJyb3IoYFVzZXIgcGFyc2luZyBmYWlsZWQ6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcid9YCk7XG4gIH1cbn07XG5cbmNvbnN0IHBlcmZvcm1Vc2VyVHJhbnNmb3JtYXRpb24gPSAodXNlcjogVXNlcik6IFVzZXIgPT4ge1xuICBjb25zdCB7XG4gICAgX2lkLFxuICAgIF9rZXksXG4gICAgYWN0aXZlLFxuICAgIGJhbmtJZCxcbiAgICBjaXR5LFxuICAgIGNvdW50cnksXG4gICAgY3VycmVuY3ksXG4gICAgZGV2aWNlVG9rZW4sXG4gICAgZG9iLFxuICAgIGJpcnRoZGF0ZSxcbiAgICBlbWFpbCxcbiAgICBmaXJzdE5hbWUsXG4gICAgZ2VuZGVyLFxuICAgIGlkLFxuICAgIGltYWdlSWQsXG4gICAgbGFzdE5hbWUsXG4gICAgbGFzdEFjdGl2ZSxcbiAgICBsb2NhbGUsXG4gICAgbWFpbGluZ0xpc3QsXG4gICAgbmFtZSxcbiAgICBwYXNzd29yZCxcbiAgICBwaG9uZSxcbiAgICBwbGFuRXhwaXJlcyxcbiAgICBwbGFuSWQsXG4gICAgcGxhblN0YXR1cyxcbiAgICBwbGFuU3Vic2NyaXB0aW9uSWQsXG4gICAgc2FsdCxcbiAgICBzdGF0ZSxcbiAgICBzdHJlZXQxLFxuICAgIHN0cmVldDIsXG4gICAgc3RyaXBlQWNjb3VudElkLFxuICAgIHN0cmlwZUNhcmRCcmFuZCxcbiAgICBzdHJpcGVDYXJkSWQsXG4gICAgc3RyaXBlQ2FyZExhc3Q0LFxuICAgIHN0cmlwZUN1c3RvbWVySWQsXG4gICAgdGltZXpvbmUsXG4gICAgdHlwZSxcbiAgICB1c2VyQWNjZXNzLFxuICAgIHVzZXJJZCxcbiAgICB1c2VybmFtZSxcbiAgICB2ZXJpZmllZEVtYWlsLFxuICAgIHZlcmlmaWVkRW1haWxDb2RlLFxuICAgIHZlcmlmaWVkRW1haWxFeHBpcmVzLFxuICAgIHZlcmlmaWVkUGhvbmUsXG4gICAgdmVyaWZpZWRQaG9uZUV4cGlyZXMsXG4gICAgdmVyaWZpZWRTbXNDb2RlLFxuICAgIHppcFxuICB9ID0gdXNlcjtcbiAgY29uc3Qgbm9ybWFsaXplZERvYiA9IGJpcnRoZGF0ZSA/PyBkb2I7XG4gIGNvbnN0IG5vcm1hbGl6ZWRGaXJzdCA9IGZpcnN0TmFtZTtcbiAgY29uc3Qgbm9ybWFsaXplZExhc3QgPSBsYXN0TmFtZTtcbiAgY29uc3QgdHJhbnNmb3JtZWQgPSB7XG4gICAgLi4ucGFyc2VEb2N1bWVudCh1c2VyKSxcbiAgICAuLi4oKF9pZCB8fCBpZCB8fCBfa2V5IHx8IHVzZXJJZCkgJiYge2lkOiBwYXJzZUFyYW5nb0lkKF9pZCB8fCBpZCB8fCBgdXNlcnMvJHtfa2V5IHx8IHVzZXJJZH1gKX0pLFxuICAgIC4uLigoX2tleSB8fCB1c2VySWQpICYmIHt1c2VySWQ6IHBhcnNlSWQoX2tleSB8fCB1c2VySWQgfHwgJycpfSksXG4gICAgLi4uKGFjdGl2ZSAhPT0gdW5kZWZpbmVkICYmIHthY3RpdmU6ICEhYWN0aXZlfSksXG4gICAgLi4uKGJhbmtJZCAmJiB7YmFua0lkOiBwYXJzZVZhckNoYXIoYmFua0lkLCAxNjApfSksXG4gICAgLi4uKGNpdHkgJiYge2NpdHk6IHBhcnNlVmFyQ2hhcihjaXR5LCAxNjApfSksXG4gICAgLi4uKGNvdW50cnkgJiYge2NvdW50cnk6IHZhbGlkYXRlQ291bnRyeShjb3VudHJ5KX0pLFxuICAgIC4uLihjdXJyZW5jeSAmJiB7Y3VycmVuY3k6IHBhcnNlQ2hhcihjdXJyZW5jeSwgMykudG9VcHBlckNhc2UoKX0pLFxuICAgIC4uLihkZXZpY2VUb2tlbiAmJiB7ZGV2aWNlVG9rZW46IHBhcnNlVmFyQ2hhcihkZXZpY2VUb2tlbiwgMTYwKX0pLFxuICAgIC4uLihub3JtYWxpemVkRG9iICE9PSB1bmRlZmluZWQgJiYge2JpcnRoZGF0ZTogcGFyc2VSZWFrdG9yRGF0ZShub3JtYWxpemVkRG9iKSwgZG9iOiBwYXJzZVJlYWt0b3JEYXRlKG5vcm1hbGl6ZWREb2IpfSksXG4gICAgLi4uKGVtYWlsICYmIHtlbWFpbDogcGFyc2VFbWFpbChlbWFpbCl9KSxcbiAgICAuLi4obm9ybWFsaXplZEZpcnN0ICYmIHtmaXJzdE5hbWU6IHBhcnNlVmFyQ2hhcihub3JtYWxpemVkRmlyc3QsIDE2MCl9KSxcbiAgICAuLi4oZ2VuZGVyICYmIHtnZW5kZXI6IHZhbGlkYXRlR2VuZGVyKGdlbmRlcil9KSxcbiAgICAuLi4oaW1hZ2VJZCAmJiB7aW1hZ2VJZDogcGFyc2VSZWFrdG9ySXRlbUlkKGltYWdlSWQpfSksXG4gICAgLi4uKG5vcm1hbGl6ZWRMYXN0ICYmIHtsYXN0TmFtZTogcGFyc2VWYXJDaGFyKG5vcm1hbGl6ZWRMYXN0LCAxNjApfSksXG4gICAgLi4uKGxhc3RBY3RpdmUgIT09IHVuZGVmaW5lZCAmJiB7bGFzdEFjdGl2ZTogcGFyc2VSZWFrdG9yRGF0ZShsYXN0QWN0aXZlKX0pLFxuICAgIC4uLihsb2NhbGUgJiYge2xvY2FsZTogcGFyc2VTdHJpbmcobG9jYWxlLCA1KX0pLFxuICAgIC4uLihtYWlsaW5nTGlzdCAhPT0gdW5kZWZpbmVkICYmIHttYWlsaW5nTGlzdDogISFtYWlsaW5nTGlzdH0pLFxuICAgIC4uLihuYW1lICYmIHtuYW1lOiBwYXJzZVJlYWt0b3JOYW1lKG5hbWUpfSksXG4gICAgLi4uKHBhc3N3b3JkICYmIHtwYXNzd29yZDogcGFyc2VWYXJDaGFyKHBhc3N3b3JkLCAxNjApfSksXG4gICAgLi4uKHBob25lICYmIHtwaG9uZTogdmFsaWRhdGVQaG9uZShwaG9uZSl9KSxcbiAgICAuLi4ocGxhbkV4cGlyZXMgIT09IHVuZGVmaW5lZCAmJiB7cGxhbkV4cGlyZXM6IHBhcnNlUmVha3RvckRhdGUocGxhbkV4cGlyZXMpfSksXG4gICAgLi4uKHBsYW5JZCAmJiB7cGxhbklkOiBwYXJzZVZhckNoYXIocGxhbklkLCAxNjApfSksXG4gICAgLi4uKHBsYW5TdGF0dXMgJiYge3BsYW5TdGF0dXM6IHBhcnNlVmFyQ2hhcihwbGFuU3RhdHVzLCAxNjApfSksXG4gICAgLi4uKHBsYW5TdWJzY3JpcHRpb25JZCAmJiB7cGxhblN1YnNjcmlwdGlvbklkOiBwYXJzZVZhckNoYXIocGxhblN1YnNjcmlwdGlvbklkLCAxNjApfSksXG4gICAgLi4uKHNhbHQgJiYge3NhbHQ6IHBhcnNlVmFyQ2hhcihzYWx0LCAxNjApfSksXG4gICAgLi4uKHN0YXRlICYmIHtzdGF0ZTogdmFsaWRhdGVTdGF0ZShzdGF0ZSl9KSxcbiAgICAuLi4oc3RyZWV0MSAmJiB7c3RyZWV0MTogcGFyc2VWYXJDaGFyKHN0cmVldDEsIDE2MCl9KSxcbiAgICAuLi4oc3RyZWV0MiAmJiB7c3RyZWV0MjogcGFyc2VWYXJDaGFyKHN0cmVldDIsIDE2MCl9KSxcbiAgICAuLi4oc3RyaXBlQWNjb3VudElkICYmIHtzdHJpcGVBY2NvdW50SWQ6IHBhcnNlVmFyQ2hhcihzdHJpcGVBY2NvdW50SWQsIDE2MCl9KSxcbiAgICAuLi4oc3RyaXBlQ2FyZEJyYW5kICYmIHtzdHJpcGVDYXJkQnJhbmQ6IHBhcnNlVmFyQ2hhcihzdHJpcGVDYXJkQnJhbmQsIDE2MCl9KSxcbiAgICAuLi4oc3RyaXBlQ2FyZElkICYmIHtzdHJpcGVDYXJkSWQ6IHBhcnNlVmFyQ2hhcihzdHJpcGVDYXJkSWQsIDE2MCl9KSxcbiAgICAuLi4oc3RyaXBlQ2FyZExhc3Q0ICYmIHtzdHJpcGVDYXJkTGFzdDQ6IHBhcnNlVmFyQ2hhcihzdHJpcGVDYXJkTGFzdDQsIDQpfSksXG4gICAgLi4uKHN0cmlwZUN1c3RvbWVySWQgJiYge3N0cmlwZUN1c3RvbWVySWQ6IHBhcnNlVmFyQ2hhcihzdHJpcGVDdXN0b21lcklkLCAxNjApfSksXG4gICAgLi4uKHRpbWV6b25lICYmIHt0aW1lem9uZTogcGFyc2VTdHJpbmcodGltZXpvbmUsIDE2MCl9KSxcbiAgICAuLi4odHlwZSAmJiB7dHlwZTogcGFyc2VSZWFrdG9yVHlwZSh0eXBlKX0pLFxuICAgIC4uLih1c2VyQWNjZXNzICE9PSB1bmRlZmluZWQgJiYge3VzZXJBY2Nlc3M6IHVzZXJBY2Nlc3MgPyBwYXJzZU51bSh1c2VyQWNjZXNzKSA6IDB9KSxcbiAgICAuLi4odXNlcm5hbWUgJiYge3VzZXJuYW1lOiBwYXJzZVZhckNoYXIodXNlcm5hbWUsIDE2MCl9KSxcbiAgICAuLi4odmVyaWZpZWRFbWFpbCAhPT0gdW5kZWZpbmVkICYmIHt2ZXJpZmllZEVtYWlsOiAhIXZlcmlmaWVkRW1haWx9KSxcbiAgICAuLi4odmVyaWZpZWRFbWFpbENvZGUgIT09IHVuZGVmaW5lZCAmJiB7dmVyaWZpZWRFbWFpbENvZGU6IHBhcnNlTnVtKHZlcmlmaWVkRW1haWxDb2RlLCAxMCl9KSxcbiAgICAuLi4odmVyaWZpZWRFbWFpbEV4cGlyZXMgIT09IHVuZGVmaW5lZCAmJiB7dmVyaWZpZWRFbWFpbEV4cGlyZXM6IHBhcnNlTnVtKHZlcmlmaWVkRW1haWxFeHBpcmVzLCAxMCl9KSxcbiAgICAuLi4odmVyaWZpZWRQaG9uZSAhPT0gdW5kZWZpbmVkICYmIHt2ZXJpZmllZFBob25lOiAhIXZlcmlmaWVkUGhvbmV9KSxcbiAgICAuLi4odmVyaWZpZWRQaG9uZUV4cGlyZXMgIT09IHVuZGVmaW5lZCAmJiB7dmVyaWZpZWRQaG9uZUV4cGlyZXM6IHBhcnNlTnVtKHZlcmlmaWVkUGhvbmVFeHBpcmVzLCAxMCl9KSxcbiAgICAuLi4odmVyaWZpZWRTbXNDb2RlICE9PSB1bmRlZmluZWQgJiYge3ZlcmlmaWVkU21zQ29kZTogcGFyc2VOdW0odmVyaWZpZWRTbXNDb2RlLCAxMCl9KSxcbiAgICAuLi4oemlwICYmIHt6aXA6IHBhcnNlVmFyQ2hhcih6aXAsIDIwKX0pXG4gIH07XG5cbiAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlRW1wdHlLZXlzKHRyYW5zZm9ybWVkKTtcblxuICBpZih1c2VyLl9pZCkge1xuICAgIHJlc3VsdC5pZCA9IHVzZXIuX2lkO1xuICAgIHJlc3VsdC5faWQgPSB1c2VyLl9pZDtcbiAgfSBlbHNlIGlmKHVzZXIuaWQgJiYgIXJlc3VsdC5pZCkge1xuICAgIHJlc3VsdC5pZCA9IHVzZXIuaWQ7XG4gICAgcmVzdWx0Ll9pZCA9IHVzZXIuaWQ7XG4gIH1cblxuICBpZih1c2VyLl9rZXkpIHtcbiAgICByZXN1bHQudXNlcklkID0gdXNlci5fa2V5O1xuICAgIHJlc3VsdC5fa2V5ID0gdXNlci5fa2V5O1xuICB9IGVsc2UgaWYodXNlci51c2VySWQgJiYgIXJlc3VsdC51c2VySWQpIHtcbiAgICByZXN1bHQudXNlcklkID0gdXNlci51c2VySWQ7XG4gICAgcmVzdWx0Ll9rZXkgPSB1c2VyLnVzZXJJZDtcbiAgfVxuXG4gIGlmKHVzZXIudXNlcklkICYmICFyZXN1bHQuX2tleSkge1xuICAgIHJlc3VsdC5fa2V5ID0gdXNlci51c2VySWQ7XG4gIH1cblxuICBpZih1c2VyLmlkICYmICFyZXN1bHQuX2lkKSB7XG4gICAgcmVzdWx0Ll9pZCA9IHVzZXIuaWQ7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFyVXNlckNhY2hlID0gKCk6IHZvaWQgPT4ge1xuICB1c2VyQ2FjaGUuY2xlYXIoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRVc2VyQ2FjaGVTaXplID0gKCk6IG51bWJlciA9PiB1c2VyQ2FjaGUuc2l6ZTtcblxuZXhwb3J0IHt1c2VyQ2FjaGV9O1xuXG5leHBvcnQgY29uc3QgcGFyc2VVc2VyTGVnYWN5ID0gKHVzZXI6IFVzZXIpOiBVc2VyID0+IHBhcnNlVXNlcih1c2VyKTtcbiJdLCJuYW1lcyI6WyJwYXJzZUFyYW5nb0lkIiwicGFyc2VDaGFyIiwicGFyc2VFbWFpbCIsInBhcnNlSWQiLCJwYXJzZU51bSIsInBhcnNlU3RyaW5nIiwicGFyc2VWYXJDaGFyIiwieiIsInBhcnNlRG9jdW1lbnQiLCJyZW1vdmVFbXB0eUtleXMiLCJwYXJzZVJlYWt0b3JEYXRlIiwicGFyc2VSZWFrdG9ySXRlbUlkIiwicGFyc2VSZWFrdG9yTmFtZSIsInBhcnNlUmVha3RvclR5cGUiLCJVc2VyVmFsaWRhdGlvbkVycm9yIiwiRXJyb3IiLCJtZXNzYWdlIiwiZmllbGQiLCJuYW1lIiwiVXNlcklucHV0U2NoZW1hIiwib2JqZWN0IiwiX2lkIiwic3RyaW5nIiwib3B0aW9uYWwiLCJfa2V5IiwiYWN0aXZlIiwiYm9vbGVhbiIsImFkZGVkIiwibnVtYmVyIiwiYmFua0lkIiwibWF4IiwiY2l0eSIsImNvdW50cnkiLCJsZW5ndGgiLCJjdXJyZW5jeSIsImRldmljZVRva2VuIiwiZG9iIiwiYmlydGhkYXRlIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJnZW5kZXIiLCJpZCIsImltYWdlSWQiLCJsYXN0TmFtZSIsImxhc3RBY3RpdmUiLCJsb2NhbGUiLCJtYWlsaW5nTGlzdCIsInBhc3N3b3JkIiwicGhvbmUiLCJwbGFuRXhwaXJlcyIsInBsYW5JZCIsInBsYW5TdGF0dXMiLCJwbGFuU3Vic2NyaXB0aW9uSWQiLCJzYWx0Iiwic3RhdGUiLCJzdHJlZXQxIiwic3RyZWV0MiIsInN0cmlwZUFjY291bnRJZCIsInN0cmlwZUNhcmRCcmFuZCIsInN0cmlwZUNhcmRJZCIsInN0cmlwZUNhcmRMYXN0NCIsInN0cmlwZUN1c3RvbWVySWQiLCJ0aW1lem9uZSIsInR5cGUiLCJ1cGRhdGVkIiwidXNlckFjY2VzcyIsInVzZXJJZCIsInVzZXJuYW1lIiwidmVyaWZpZWRFbWFpbCIsInZlcmlmaWVkRW1haWxDb2RlIiwidmVyaWZpZWRFbWFpbEV4cGlyZXMiLCJ2ZXJpZmllZFBob25lIiwidmVyaWZpZWRQaG9uZUV4cGlyZXMiLCJ2ZXJpZmllZFNtc0NvZGUiLCJ6aXAiLCJsb29zZSIsInZhbGlkYXRlUGhvbmUiLCJ1bmRlZmluZWQiLCJjbGVhbmVkIiwicmVwbGFjZSIsInZhbGlkYXRlQ291bnRyeSIsInVwcGVyIiwidG9VcHBlckNhc2UiLCJ0ZXN0IiwidmFsaWRhdGVTdGF0ZSIsInZhbGlkYXRlR2VuZGVyIiwidXNlckNhY2hlIiwiTWFwIiwidmFsaWRhdGVVc2VySW5wdXQiLCJ1c2VyIiwidmFsaWRhdGVkIiwicGFyc2UiLCJlcnJvciIsIlpvZEVycm9yIiwiZmllbGRFcnJvcnMiLCJpc3N1ZXMiLCJtYXAiLCJlIiwicGF0aCIsImpvaW4iLCJmb3JtYXRVc2VyT3V0cHV0Iiwic2FmZVVzZXIiLCJwYXJzZVVzZXIiLCJwYXJzZWQiLCJwZXJmb3JtVXNlclRyYW5zZm9ybWF0aW9uIiwibm9ybWFsaXplZERvYiIsIm5vcm1hbGl6ZWRGaXJzdCIsIm5vcm1hbGl6ZWRMYXN0IiwidHJhbnNmb3JtZWQiLCJyZXN1bHQiLCJjbGVhclVzZXJDYWNoZSIsImNsZWFyIiwiZ2V0VXNlckNhY2hlU2l6ZSIsInNpemUiLCJwYXJzZVVzZXJMZWdhY3kiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLGFBQWEs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
@@ -0,0 +1,8 @@
1
+ import type { VideoType } from '../../types/videos.types.js';
2
+ export declare class VideoValidationError extends Error {
3
+ field?: string;
4
+ constructor(message: string, field?: string);
5
+ }
6
+ export declare const validateVideoInput: (video: unknown) => VideoType;
7
+ export declare const parseVideo: (video: VideoType) => VideoType;
8
+ //# sourceMappingURL=videoAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/videoAdapter/videoAdapter.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,6BAA6B,CAAC;AAE3D,qBAAa,oBAAqB,SAAQ,KAAK;IACT,KAAK,CAAC,EAAE,MAAM;gBAAtC,OAAO,EAAE,MAAM,EAAS,KAAK,CAAC,EAAE,MAAM;CAInD;AA2CD,eAAO,MAAM,kBAAkB,GAAI,OAAO,OAAO,KAAG,SAWnD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,OAAO,SAAS,KAAG,SAU7C,CAAC"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Copyright (c) 2026-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { parseArangoId, parseId, parseNum, parseString } from '@nlabs/utils';
5
+ import { z } from 'zod';
6
+ import { parseDocument, removeEmptyKeys } from '../arangoAdapter/arangoAdapter.js';
7
+ import { parseReaktorItemId } from '../reaktorAdapter/reaktorAdapter.js';
8
+ export class VideoValidationError extends Error {
9
+ field;
10
+ constructor(message, field){
11
+ super(message), this.field = field;
12
+ this.name = 'VideoValidationError';
13
+ }
14
+ }
15
+ const VideoInputSchema = z.object({
16
+ _id: z.string().optional(),
17
+ _key: z.string().optional(),
18
+ base64: z.string().optional(),
19
+ description: z.string().optional(),
20
+ duration: z.number().optional(),
21
+ externalId: z.string().optional(),
22
+ externalUrl: z.string().optional(),
23
+ fileName: z.string().optional(),
24
+ fileSize: z.number().optional(),
25
+ fileType: z.string().optional(),
26
+ format: z.string().optional(),
27
+ height: z.number().optional(),
28
+ hlsUrl: z.string().optional(),
29
+ itemId: z.string().optional(),
30
+ itemType: z.string().optional(),
31
+ mediaConvertJobId: z.string().optional(),
32
+ mimeType: z.string().optional(),
33
+ name: z.string().optional(),
34
+ playbackFileType: z.string().optional(),
35
+ playbackUrl: z.string().optional(),
36
+ privacy: z.string().optional(),
37
+ provider: z.string().optional(),
38
+ processingError: z.string().optional(),
39
+ processingStatus: z.string().optional(),
40
+ size: z.number().optional(),
41
+ sourceKey: z.string().optional(),
42
+ streamType: z.string().optional(),
43
+ thumbBase64: z.string().optional(),
44
+ thumbFileType: z.string().optional(),
45
+ thumbUrl: z.string().optional(),
46
+ type: z.string().optional(),
47
+ uploadId: z.string().optional(),
48
+ uploadKey: z.string().optional(),
49
+ uploadStatus: z.string().optional(),
50
+ url: z.string().optional(),
51
+ userId: z.string().optional(),
52
+ videoId: z.string().optional(),
53
+ width: z.number().optional()
54
+ }).loose();
55
+ export const validateVideoInput = (video)=>{
56
+ try {
57
+ const validated = VideoInputSchema.parse(video);
58
+ return validated;
59
+ } catch (error) {
60
+ if (error instanceof z.ZodError) {
61
+ const fieldErrors = error.issues.map((e)=>`${e.path.join('.')}: ${e.message}`).join(', ');
62
+ throw new VideoValidationError(`Video validation failed: ${fieldErrors}`);
63
+ }
64
+ throw error;
65
+ }
66
+ };
67
+ export const parseVideo = (video)=>{
68
+ try {
69
+ const parsed = performVideoTransformation(video);
70
+ return parsed;
71
+ } catch (error) {
72
+ if (error instanceof VideoValidationError) {
73
+ throw error;
74
+ }
75
+ throw new VideoValidationError(`Video parsing failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
76
+ }
77
+ };
78
+ const performVideoTransformation = (video)=>{
79
+ const { _id, _key, base64, description, duration, externalId, externalUrl, fileName, fileSize, fileType, format, height, hlsUrl, itemId, itemType, mediaConvertJobId, mimeType, name, playbackFileType, playbackUrl, privacy, provider, processingError, processingStatus, size, sourceKey, streamType, thumbBase64, thumbFileType, thumbUrl, url, uploadId, uploadKey, uploadStatus, userId, videoId, width } = video;
80
+ const transformed = removeEmptyKeys({
81
+ ...parseDocument(video),
82
+ ...base64 && {
83
+ base64: parseString(base64, 100000000)
84
+ },
85
+ ...description && {
86
+ description: parseString(description, 1000)
87
+ },
88
+ ...duration !== undefined && {
89
+ duration: parseNum(duration)
90
+ },
91
+ ...externalId && {
92
+ externalId: parseString(externalId, 255)
93
+ },
94
+ ...externalUrl && {
95
+ externalUrl: parseString(externalUrl, 500)
96
+ },
97
+ ...fileName && {
98
+ fileName: parseString(fileName, 255)
99
+ },
100
+ ...fileSize !== undefined && {
101
+ fileSize: parseNum(fileSize)
102
+ },
103
+ ...fileType && {
104
+ fileType: parseString(fileType, 100)
105
+ },
106
+ ...format && {
107
+ format: parseString(format, 50)
108
+ },
109
+ ...height !== undefined && {
110
+ height: parseNum(height)
111
+ },
112
+ ...hlsUrl && {
113
+ hlsUrl: parseString(hlsUrl, 4096)
114
+ },
115
+ ...(_id || _key || videoId) && {
116
+ id: parseArangoId(_id || `videos/${_key || videoId}`)
117
+ },
118
+ ...itemId && {
119
+ itemId: parseReaktorItemId(itemId)
120
+ },
121
+ ...itemType && {
122
+ itemType: parseString(itemType, 32)
123
+ },
124
+ ...mediaConvertJobId && {
125
+ mediaConvertJobId: parseString(mediaConvertJobId, 128)
126
+ },
127
+ ...mimeType && {
128
+ mimeType: parseString(mimeType, 100)
129
+ },
130
+ ...name && {
131
+ name: parseString(name, 255)
132
+ },
133
+ ...playbackFileType && {
134
+ playbackFileType: parseString(playbackFileType, 100)
135
+ },
136
+ ...playbackUrl && {
137
+ playbackUrl: parseString(playbackUrl, 4096)
138
+ },
139
+ ...privacy && {
140
+ privacy: parseString(privacy, 32)
141
+ },
142
+ ...provider && {
143
+ provider: parseString(provider, 50)
144
+ },
145
+ ...processingError && {
146
+ processingError: parseString(processingError, 1000)
147
+ },
148
+ ...processingStatus && {
149
+ processingStatus: parseString(processingStatus, 64)
150
+ },
151
+ ...size !== undefined && {
152
+ size: parseNum(size)
153
+ },
154
+ ...sourceKey && {
155
+ sourceKey: parseString(sourceKey, 2000)
156
+ },
157
+ ...streamType && {
158
+ streamType: parseString(streamType, 64)
159
+ },
160
+ ...thumbBase64 && {
161
+ thumbBase64: parseString(thumbBase64, 10000000)
162
+ },
163
+ ...thumbFileType && {
164
+ thumbFileType: parseString(thumbFileType, 100)
165
+ },
166
+ ...thumbUrl && {
167
+ thumbUrl: parseString(thumbUrl, 4096)
168
+ },
169
+ ...url && {
170
+ url: parseString(url, 4096)
171
+ },
172
+ ...uploadId && {
173
+ uploadId: parseString(uploadId, 2048)
174
+ },
175
+ ...uploadKey && {
176
+ uploadKey: parseString(uploadKey, 2000)
177
+ },
178
+ ...uploadStatus && {
179
+ uploadStatus: parseString(uploadStatus, 64)
180
+ },
181
+ ...userId && {
182
+ userId: parseId(userId)
183
+ },
184
+ ...(_key || videoId) && {
185
+ videoId: parseId(_key || videoId || '')
186
+ },
187
+ ...width !== undefined && {
188
+ width: parseNum(width)
189
+ }
190
+ });
191
+ return transformed;
192
+ };
193
+
194
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWRhcHRlcnMvdmlkZW9BZGFwdGVyL3ZpZGVvQWRhcHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNi1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtwYXJzZUFyYW5nb0lkLCBwYXJzZUlkLCBwYXJzZU51bSwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7cGFyc2VEb2N1bWVudCwgcmVtb3ZlRW1wdHlLZXlzfSBmcm9tICcuLi9hcmFuZ29BZGFwdGVyL2FyYW5nb0FkYXB0ZXIuanMnO1xuaW1wb3J0IHtwYXJzZVJlYWt0b3JEYXRlLCBwYXJzZVJlYWt0b3JJdGVtSWR9IGZyb20gJy4uL3JlYWt0b3JBZGFwdGVyL3JlYWt0b3JBZGFwdGVyLmpzJztcblxuaW1wb3J0IHR5cGUge1ZpZGVvVHlwZX0gZnJvbSAnLi4vLi4vdHlwZXMvdmlkZW9zLnR5cGVzLmpzJztcblxuZXhwb3J0IGNsYXNzIFZpZGVvVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHB1YmxpYyBmaWVsZD86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdWaWRlb1ZhbGlkYXRpb25FcnJvcic7XG4gIH1cbn1cblxuY29uc3QgVmlkZW9JbnB1dFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9rZXk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgYmFzZTY0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGR1cmF0aW9uOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGV4dGVybmFsSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZXh0ZXJuYWxVcmw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZmlsZU5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZmlsZVNpemU6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgZmlsZVR5cGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZm9ybWF0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGhlaWdodDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBobHNVcmw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgaXRlbUlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGl0ZW1UeXBlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG1lZGlhQ29udmVydEpvYklkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG1pbWVUeXBlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcGxheWJhY2tGaWxlVHlwZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBwbGF5YmFja1VybDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBwcml2YWN5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHByb3ZpZGVyOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHByb2Nlc3NpbmdFcnJvcjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBwcm9jZXNzaW5nU3RhdHVzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHNpemU6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgc291cmNlS2V5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHN0cmVhbVR5cGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdGh1bWJCYXNlNjQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdGh1bWJGaWxlVHlwZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0aHVtYlVybDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB0eXBlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVwbG9hZElkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVwbG9hZEtleTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB1cGxvYWRTdGF0dXM6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdXJsOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVzZXJJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB2aWRlb0lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHdpZHRoOiB6Lm51bWJlcigpLm9wdGlvbmFsKClcbn0pLmxvb3NlKCk7XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVZpZGVvSW5wdXQgPSAodmlkZW86IHVua25vd24pOiBWaWRlb1R5cGUgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHZhbGlkYXRlZCA9IFZpZGVvSW5wdXRTY2hlbWEucGFyc2UodmlkZW8pO1xuICAgIHJldHVybiB2YWxpZGF0ZWQgYXMgVmlkZW9UeXBlO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgaWYoZXJyb3IgaW5zdGFuY2VvZiB6LlpvZEVycm9yKSB7XG4gICAgICBjb25zdCBmaWVsZEVycm9ycyA9IGVycm9yLmlzc3Vlcy5tYXAoKGUpID0+IGAke2UucGF0aC5qb2luKCcuJyl9OiAke2UubWVzc2FnZX1gKS5qb2luKCcsICcpO1xuICAgICAgdGhyb3cgbmV3IFZpZGVvVmFsaWRhdGlvbkVycm9yKGBWaWRlbyB2YWxpZGF0aW9uIGZhaWxlZDogJHtmaWVsZEVycm9yc31gKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZVZpZGVvID0gKHZpZGVvOiBWaWRlb1R5cGUpOiBWaWRlb1R5cGUgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBlcmZvcm1WaWRlb1RyYW5zZm9ybWF0aW9uKHZpZGVvKTtcbiAgICByZXR1cm4gcGFyc2VkO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgaWYoZXJyb3IgaW5zdGFuY2VvZiBWaWRlb1ZhbGlkYXRpb25FcnJvcikge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIHRocm93IG5ldyBWaWRlb1ZhbGlkYXRpb25FcnJvcihgVmlkZW8gcGFyc2luZyBmYWlsZWQ6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcid9YCk7XG4gIH1cbn07XG5cbmNvbnN0IHBlcmZvcm1WaWRlb1RyYW5zZm9ybWF0aW9uID0gKHZpZGVvOiBWaWRlb1R5cGUpOiBWaWRlb1R5cGUgPT4ge1xuICBjb25zdCB7XG4gICAgX2lkLFxuICAgIF9rZXksXG4gICAgYmFzZTY0LFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIGR1cmF0aW9uLFxuICAgIGV4dGVybmFsSWQsXG4gICAgZXh0ZXJuYWxVcmwsXG4gICAgZmlsZU5hbWUsXG4gICAgZmlsZVNpemUsXG4gICAgZmlsZVR5cGUsXG4gICAgZm9ybWF0LFxuICAgIGhlaWdodCxcbiAgICBobHNVcmwsXG4gICAgaXRlbUlkLFxuICAgIGl0ZW1UeXBlLFxuICAgIG1lZGlhQ29udmVydEpvYklkLFxuICAgIG1pbWVUeXBlLFxuICAgIG5hbWUsXG4gICAgcGxheWJhY2tGaWxlVHlwZSxcbiAgICBwbGF5YmFja1VybCxcbiAgICBwcml2YWN5LFxuICAgIHByb3ZpZGVyLFxuICAgIHByb2Nlc3NpbmdFcnJvcixcbiAgICBwcm9jZXNzaW5nU3RhdHVzLFxuICAgIHNpemUsXG4gICAgc291cmNlS2V5LFxuICAgIHN0cmVhbVR5cGUsXG4gICAgdGh1bWJCYXNlNjQsXG4gICAgdGh1bWJGaWxlVHlwZSxcbiAgICB0aHVtYlVybCxcbiAgICB1cmwsXG4gICAgdXBsb2FkSWQsXG4gICAgdXBsb2FkS2V5LFxuICAgIHVwbG9hZFN0YXR1cyxcbiAgICB1c2VySWQsXG4gICAgdmlkZW9JZCxcbiAgICB3aWR0aFxuICB9ID0gdmlkZW87XG5cbiAgY29uc3QgdHJhbnNmb3JtZWQgPSByZW1vdmVFbXB0eUtleXMoe1xuICAgIC4uLnBhcnNlRG9jdW1lbnQodmlkZW8pLFxuICAgIC4uLihiYXNlNjQgJiYge2Jhc2U2NDogcGFyc2VTdHJpbmcoYmFzZTY0LCAxMDAwMDAwMDApfSksXG4gICAgLi4uKGRlc2NyaXB0aW9uICYmIHtkZXNjcmlwdGlvbjogcGFyc2VTdHJpbmcoZGVzY3JpcHRpb24sIDEwMDApfSksXG4gICAgLi4uKGR1cmF0aW9uICE9PSB1bmRlZmluZWQgJiYge2R1cmF0aW9uOiBwYXJzZU51bShkdXJhdGlvbil9KSxcbiAgICAuLi4oZXh0ZXJuYWxJZCAmJiB7ZXh0ZXJuYWxJZDogcGFyc2VTdHJpbmcoZXh0ZXJuYWxJZCwgMjU1KX0pLFxuICAgIC4uLihleHRlcm5hbFVybCAmJiB7ZXh0ZXJuYWxVcmw6IHBhcnNlU3RyaW5nKGV4dGVybmFsVXJsLCA1MDApfSksXG4gICAgLi4uKGZpbGVOYW1lICYmIHtmaWxlTmFtZTogcGFyc2VTdHJpbmcoZmlsZU5hbWUsIDI1NSl9KSxcbiAgICAuLi4oZmlsZVNpemUgIT09IHVuZGVmaW5lZCAmJiB7ZmlsZVNpemU6IHBhcnNlTnVtKGZpbGVTaXplKX0pLFxuICAgIC4uLihmaWxlVHlwZSAmJiB7ZmlsZVR5cGU6IHBhcnNlU3RyaW5nKGZpbGVUeXBlLCAxMDApfSksXG4gICAgLi4uKGZvcm1hdCAmJiB7Zm9ybWF0OiBwYXJzZVN0cmluZyhmb3JtYXQsIDUwKX0pLFxuICAgIC4uLihoZWlnaHQgIT09IHVuZGVmaW5lZCAmJiB7aGVpZ2h0OiBwYXJzZU51bShoZWlnaHQpfSksXG4gICAgLi4uKGhsc1VybCAmJiB7aGxzVXJsOiBwYXJzZVN0cmluZyhobHNVcmwsIDQwOTYpfSksXG4gICAgLi4uKChfaWQgfHwgX2tleSB8fCB2aWRlb0lkKSAmJiB7aWQ6IHBhcnNlQXJhbmdvSWQoX2lkIHx8IGB2aWRlb3MvJHtfa2V5IHx8IHZpZGVvSWR9YCl9KSxcbiAgICAuLi4oaXRlbUlkICYmIHtpdGVtSWQ6IHBhcnNlUmVha3Rvckl0ZW1JZChpdGVtSWQpfSksXG4gICAgLi4uKGl0ZW1UeXBlICYmIHtpdGVtVHlwZTogcGFyc2VTdHJpbmcoaXRlbVR5cGUsIDMyKX0pLFxuICAgIC4uLihtZWRpYUNvbnZlcnRKb2JJZCAmJiB7bWVkaWFDb252ZXJ0Sm9iSWQ6IHBhcnNlU3RyaW5nKG1lZGlhQ29udmVydEpvYklkLCAxMjgpfSksXG4gICAgLi4uKG1pbWVUeXBlICYmIHttaW1lVHlwZTogcGFyc2VTdHJpbmcobWltZVR5cGUsIDEwMCl9KSxcbiAgICAuLi4obmFtZSAmJiB7bmFtZTogcGFyc2VTdHJpbmcobmFtZSwgMjU1KX0pLFxuICAgIC4uLihwbGF5YmFja0ZpbGVUeXBlICYmIHtwbGF5YmFja0ZpbGVUeXBlOiBwYXJzZVN0cmluZyhwbGF5YmFja0ZpbGVUeXBlLCAxMDApfSksXG4gICAgLi4uKHBsYXliYWNrVXJsICYmIHtwbGF5YmFja1VybDogcGFyc2VTdHJpbmcocGxheWJhY2tVcmwsIDQwOTYpfSksXG4gICAgLi4uKHByaXZhY3kgJiYge3ByaXZhY3k6IHBhcnNlU3RyaW5nKHByaXZhY3ksIDMyKX0pLFxuICAgIC4uLihwcm92aWRlciAmJiB7cHJvdmlkZXI6IHBhcnNlU3RyaW5nKHByb3ZpZGVyLCA1MCl9KSxcbiAgICAuLi4ocHJvY2Vzc2luZ0Vycm9yICYmIHtwcm9jZXNzaW5nRXJyb3I6IHBhcnNlU3RyaW5nKHByb2Nlc3NpbmdFcnJvciwgMTAwMCl9KSxcbiAgICAuLi4ocHJvY2Vzc2luZ1N0YXR1cyAmJiB7cHJvY2Vzc2luZ1N0YXR1czogcGFyc2VTdHJpbmcocHJvY2Vzc2luZ1N0YXR1cywgNjQpfSksXG4gICAgLi4uKHNpemUgIT09IHVuZGVmaW5lZCAmJiB7c2l6ZTogcGFyc2VOdW0oc2l6ZSl9KSxcbiAgICAuLi4oc291cmNlS2V5ICYmIHtzb3VyY2VLZXk6IHBhcnNlU3RyaW5nKHNvdXJjZUtleSwgMjAwMCl9KSxcbiAgICAuLi4oc3RyZWFtVHlwZSAmJiB7c3RyZWFtVHlwZTogcGFyc2VTdHJpbmcoc3RyZWFtVHlwZSwgNjQpfSksXG4gICAgLi4uKHRodW1iQmFzZTY0ICYmIHt0aHVtYkJhc2U2NDogcGFyc2VTdHJpbmcodGh1bWJCYXNlNjQsIDEwMDAwMDAwKX0pLFxuICAgIC4uLih0aHVtYkZpbGVUeXBlICYmIHt0aHVtYkZpbGVUeXBlOiBwYXJzZVN0cmluZyh0aHVtYkZpbGVUeXBlLCAxMDApfSksXG4gICAgLi4uKHRodW1iVXJsICYmIHt0aHVtYlVybDogcGFyc2VTdHJpbmcodGh1bWJVcmwsIDQwOTYpfSksXG4gICAgLi4uKHVybCAmJiB7dXJsOiBwYXJzZVN0cmluZyh1cmwsIDQwOTYpfSksXG4gICAgLi4uKHVwbG9hZElkICYmIHt1cGxvYWRJZDogcGFyc2VTdHJpbmcodXBsb2FkSWQsIDIwNDgpfSksXG4gICAgLi4uKHVwbG9hZEtleSAmJiB7dXBsb2FkS2V5OiBwYXJzZVN0cmluZyh1cGxvYWRLZXksIDIwMDApfSksXG4gICAgLi4uKHVwbG9hZFN0YXR1cyAmJiB7dXBsb2FkU3RhdHVzOiBwYXJzZVN0cmluZyh1cGxvYWRTdGF0dXMsIDY0KX0pLFxuICAgIC4uLih1c2VySWQgJiYge3VzZXJJZDogcGFyc2VJZCh1c2VySWQpfSksXG4gICAgLi4uKChfa2V5IHx8IHZpZGVvSWQpICYmIHt2aWRlb0lkOiBwYXJzZUlkKF9rZXkgfHwgdmlkZW9JZCB8fCAnJyl9KSxcbiAgICAuLi4od2lkdGggIT09IHVuZGVmaW5lZCAmJiB7d2lkdGg6IHBhcnNlTnVtKHdpZHRoKX0pXG4gIH0pO1xuXG4gIHJldHVybiB0cmFuc2Zvcm1lZDtcbn07XG4iXSwibmFtZXMiOlsicGFyc2VBcmFuZ29JZCIsInBhcnNlSWQiLCJwYXJzZU51bSIsInBhcnNlU3RyaW5nIiwieiIsInBhcnNlRG9jdW1lbnQiLCJyZW1vdmVFbXB0eUtleXMiLCJwYXJzZVJlYWt0b3JJdGVtSWQiLCJWaWRlb1ZhbGlkYXRpb25FcnJvciIsIkVycm9yIiwibWVzc2FnZSIsImZpZWxkIiwibmFtZSIsIlZpZGVvSW5wdXRTY2hlbWEiLCJvYmplY3QiLCJfaWQiLCJzdHJpbmciLCJvcHRpb25hbCIsIl9rZXkiLCJiYXNlNjQiLCJkZXNjcmlwdGlvbiIsImR1cmF0aW9uIiwibnVtYmVyIiwiZXh0ZXJuYWxJZCIsImV4dGVybmFsVXJsIiwiZmlsZU5hbWUiLCJmaWxlU2l6ZSIsImZpbGVUeXBlIiwiZm9ybWF0IiwiaGVpZ2h0IiwiaGxzVXJsIiwiaXRlbUlkIiwiaXRlbVR5cGUiLCJtZWRpYUNvbnZlcnRKb2JJZCIsIm1pbWVUeXBlIiwicGxheWJhY2tGaWxlVHlwZSIsInBsYXliYWNrVXJsIiwicHJpdmFjeSIsInByb3ZpZGVyIiwicHJvY2Vzc2luZ0Vycm9yIiwicHJvY2Vzc2luZ1N0YXR1cyIsInNpemUiLCJzb3VyY2VLZXkiLCJzdHJlYW1UeXBlIiwidGh1bWJCYXNlNjQiLCJ0aHVtYkZpbGVUeXBlIiwidGh1bWJVcmwiLCJ0eXBlIiwidXBsb2FkSWQiLCJ1cGxvYWRLZXkiLCJ1cGxvYWRTdGF0dXMiLCJ1cmwiLCJ1c2VySWQiLCJ2aWRlb0lkIiwid2lkdGgiLCJsb29zZSIsInZhbGlkYXRlVmlkZW9JbnB1dCIsInZpZGVvIiwidmFsaWRhdGVkIiwicGFyc2UiLCJlcnJvciIsIlpvZEVycm9yIiwiZmllbGRFcnJvcnMiLCJpc3N1ZXMiLCJtYXAiLCJlIiwicGF0aCIsImpvaW4iLCJwYXJzZVZpZGVvIiwicGFyc2VkIiwicGVyZm9ybVZpZGVvVHJhbnNmb3JtYXRpb24iLCJ0cmFuc2Zvcm1lZCIsInVuZGVmaW5lZCIsImlkIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxhQUFhLEVBQUVDLE9BQU8sRUFBRUMsUUFBUSxFQUFFQyxXQUFXLFFBQU8sZUFBZTtBQUMzRSxTQUFR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
@@ -0,0 +1,44 @@
1
+ import type { MetropolisAdapters } from '../utils/MetropolisProvider.js';
2
+ export interface ConfigAppSessionType {
3
+ readonly maxMinutes?: number;
4
+ readonly minMinutes?: number;
5
+ readonly refreshAfterRatio?: number;
6
+ }
7
+ export interface ConfigAppUrls {
8
+ readonly websocket?: string;
9
+ }
10
+ export interface ConfigAppApiType {
11
+ readonly public?: string;
12
+ readonly url?: string;
13
+ readonly uploadImage?: string;
14
+ }
15
+ export interface ConfigAppType {
16
+ readonly api?: ConfigAppApiType;
17
+ readonly name?: string;
18
+ readonly session?: ConfigAppSessionType;
19
+ readonly urls?: ConfigAppUrls;
20
+ readonly version?: string;
21
+ }
22
+ export interface MetropolisConfiguration {
23
+ readonly local?: MetropolisEnvironmentConfiguration;
24
+ readonly development?: MetropolisEnvironmentConfiguration;
25
+ readonly production?: MetropolisEnvironmentConfiguration;
26
+ readonly test?: MetropolisEnvironmentConfiguration;
27
+ }
28
+ export interface MetropolisEnvironmentConfiguration {
29
+ readonly adapters?: MetropolisAdapters;
30
+ readonly app?: Partial<ConfigAppType>;
31
+ readonly environment?: string;
32
+ readonly isAuth?: () => boolean;
33
+ }
34
+ /**
35
+ * Gets the default configuration for a specific environment.
36
+ */
37
+ export declare const getDefaultConfig: (environment?: string) => MetropolisEnvironmentConfiguration;
38
+ /**
39
+ * Resolves the environment-specific configuration from a MetropolisConfiguration object.
40
+ * This function determines which environment to use based on process.env and merges
41
+ * the appropriate configuration.
42
+ */
43
+ export declare const resolveEnvironmentConfig: (config: MetropolisConfiguration, environment?: string) => MetropolisEnvironmentConfiguration;
44
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,gCAAgC,CAAC;AAEvE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,kCAAkC,CAAC;IACpD,QAAQ,CAAC,WAAW,CAAC,EAAE,kCAAkC,CAAC;IAC1D,QAAQ,CAAC,UAAU,CAAC,EAAE,kCAAkC,CAAC;IACzD,QAAQ,CAAC,IAAI,CAAC,EAAE,kCAAkC,CAAC;CACpD;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC;CACjC;AAgED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,cAAc,MAAM,KAAG,kCAKvD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,GACnC,QAAQ,uBAAuB,EAC/B,cAAc,MAAM,KACnB,kCAuBF,CAAC"}