convex-cms 0.0.1

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 (379) hide show
  1. package/dist/cli/commands/admin.d.ts +16 -0
  2. package/dist/cli/commands/admin.d.ts.map +1 -0
  3. package/dist/cli/commands/admin.js +88 -0
  4. package/dist/cli/commands/admin.js.map +1 -0
  5. package/dist/cli/index.d.ts +3 -0
  6. package/dist/cli/index.d.ts.map +1 -0
  7. package/dist/cli/index.js +18 -0
  8. package/dist/cli/index.js.map +1 -0
  9. package/dist/cli/utils/detectConvexUrl.d.ts +13 -0
  10. package/dist/cli/utils/detectConvexUrl.d.ts.map +1 -0
  11. package/dist/cli/utils/detectConvexUrl.js +48 -0
  12. package/dist/cli/utils/detectConvexUrl.js.map +1 -0
  13. package/dist/cli/utils/openBrowser.d.ts +7 -0
  14. package/dist/cli/utils/openBrowser.d.ts.map +1 -0
  15. package/dist/cli/utils/openBrowser.js +17 -0
  16. package/dist/cli/utils/openBrowser.js.map +1 -0
  17. package/dist/client/admin-config.d.ts +126 -0
  18. package/dist/client/admin-config.d.ts.map +1 -0
  19. package/dist/client/admin-config.js +117 -0
  20. package/dist/client/admin-config.js.map +1 -0
  21. package/dist/client/adminApi.d.ts +2273 -0
  22. package/dist/client/adminApi.d.ts.map +1 -0
  23. package/dist/client/adminApi.js +716 -0
  24. package/dist/client/adminApi.js.map +1 -0
  25. package/dist/client/agentTools.d.ts +933 -0
  26. package/dist/client/agentTools.d.ts.map +1 -0
  27. package/dist/client/agentTools.js +1004 -0
  28. package/dist/client/agentTools.js.map +1 -0
  29. package/dist/client/argTypes.d.ts +212 -0
  30. package/dist/client/argTypes.d.ts.map +1 -0
  31. package/dist/client/argTypes.js +5 -0
  32. package/dist/client/argTypes.js.map +1 -0
  33. package/dist/client/field-types.d.ts +55 -0
  34. package/dist/client/field-types.d.ts.map +1 -0
  35. package/dist/client/field-types.js +152 -0
  36. package/dist/client/field-types.js.map +1 -0
  37. package/dist/client/index.d.ts +189 -0
  38. package/dist/client/index.d.ts.map +1 -0
  39. package/dist/client/index.js +668 -0
  40. package/dist/client/index.js.map +1 -0
  41. package/dist/client/queryBuilder.d.ts +765 -0
  42. package/dist/client/queryBuilder.d.ts.map +1 -0
  43. package/dist/client/queryBuilder.js +970 -0
  44. package/dist/client/queryBuilder.js.map +1 -0
  45. package/dist/client/schema/codegen.d.ts +128 -0
  46. package/dist/client/schema/codegen.d.ts.map +1 -0
  47. package/dist/client/schema/codegen.js +318 -0
  48. package/dist/client/schema/codegen.js.map +1 -0
  49. package/dist/client/schema/defineContentType.d.ts +221 -0
  50. package/dist/client/schema/defineContentType.d.ts.map +1 -0
  51. package/dist/client/schema/defineContentType.js +380 -0
  52. package/dist/client/schema/defineContentType.js.map +1 -0
  53. package/dist/client/schema/index.d.ts +85 -0
  54. package/dist/client/schema/index.d.ts.map +1 -0
  55. package/dist/client/schema/index.js +92 -0
  56. package/dist/client/schema/index.js.map +1 -0
  57. package/dist/client/schema/schemaDrift.d.ts +199 -0
  58. package/dist/client/schema/schemaDrift.d.ts.map +1 -0
  59. package/dist/client/schema/schemaDrift.js +340 -0
  60. package/dist/client/schema/schemaDrift.js.map +1 -0
  61. package/dist/client/schema/typedClient.d.ts +401 -0
  62. package/dist/client/schema/typedClient.d.ts.map +1 -0
  63. package/dist/client/schema/typedClient.js +269 -0
  64. package/dist/client/schema/typedClient.js.map +1 -0
  65. package/dist/client/schema/types.d.ts +477 -0
  66. package/dist/client/schema/types.d.ts.map +1 -0
  67. package/dist/client/schema/types.js +39 -0
  68. package/dist/client/schema/types.js.map +1 -0
  69. package/dist/client/types.d.ts +449 -0
  70. package/dist/client/types.d.ts.map +1 -0
  71. package/dist/client/types.js +149 -0
  72. package/dist/client/types.js.map +1 -0
  73. package/dist/client/workflows.d.ts +51 -0
  74. package/dist/client/workflows.d.ts.map +1 -0
  75. package/dist/client/workflows.js +103 -0
  76. package/dist/client/workflows.js.map +1 -0
  77. package/dist/client/wrapper.d.ts +2198 -0
  78. package/dist/client/wrapper.d.ts.map +1 -0
  79. package/dist/client/wrapper.js +2651 -0
  80. package/dist/client/wrapper.js.map +1 -0
  81. package/dist/component/_generated/api.d.ts +124 -0
  82. package/dist/component/_generated/api.d.ts.map +1 -0
  83. package/dist/component/_generated/api.js +31 -0
  84. package/dist/component/_generated/api.js.map +1 -0
  85. package/dist/component/_generated/component.d.ts +4321 -0
  86. package/dist/component/_generated/component.d.ts.map +1 -0
  87. package/dist/component/_generated/component.js +11 -0
  88. package/dist/component/_generated/component.js.map +1 -0
  89. package/dist/component/_generated/dataModel.d.ts +46 -0
  90. package/dist/component/_generated/dataModel.d.ts.map +1 -0
  91. package/dist/component/_generated/dataModel.js +11 -0
  92. package/dist/component/_generated/dataModel.js.map +1 -0
  93. package/dist/component/_generated/server.d.ts +121 -0
  94. package/dist/component/_generated/server.d.ts.map +1 -0
  95. package/dist/component/_generated/server.js +78 -0
  96. package/dist/component/_generated/server.js.map +1 -0
  97. package/dist/component/auditLog.d.ts +410 -0
  98. package/dist/component/auditLog.d.ts.map +1 -0
  99. package/dist/component/auditLog.js +607 -0
  100. package/dist/component/auditLog.js.map +1 -0
  101. package/dist/component/authorization.d.ts +323 -0
  102. package/dist/component/authorization.d.ts.map +1 -0
  103. package/dist/component/authorization.js +464 -0
  104. package/dist/component/authorization.js.map +1 -0
  105. package/dist/component/authorizationHooks.d.ts +184 -0
  106. package/dist/component/authorizationHooks.d.ts.map +1 -0
  107. package/dist/component/authorizationHooks.js +521 -0
  108. package/dist/component/authorizationHooks.js.map +1 -0
  109. package/dist/component/bulkOperations.d.ts +200 -0
  110. package/dist/component/bulkOperations.d.ts.map +1 -0
  111. package/dist/component/bulkOperations.js +568 -0
  112. package/dist/component/bulkOperations.js.map +1 -0
  113. package/dist/component/contentEntries.d.ts +719 -0
  114. package/dist/component/contentEntries.d.ts.map +1 -0
  115. package/dist/component/contentEntries.js +1617 -0
  116. package/dist/component/contentEntries.js.map +1 -0
  117. package/dist/component/contentEntryMutations.d.ts +505 -0
  118. package/dist/component/contentEntryMutations.d.ts.map +1 -0
  119. package/dist/component/contentEntryMutations.js +1009 -0
  120. package/dist/component/contentEntryMutations.js.map +1 -0
  121. package/dist/component/contentEntryValidation.d.ts +115 -0
  122. package/dist/component/contentEntryValidation.d.ts.map +1 -0
  123. package/dist/component/contentEntryValidation.js +546 -0
  124. package/dist/component/contentEntryValidation.js.map +1 -0
  125. package/dist/component/contentLock.d.ts +328 -0
  126. package/dist/component/contentLock.d.ts.map +1 -0
  127. package/dist/component/contentLock.js +471 -0
  128. package/dist/component/contentLock.js.map +1 -0
  129. package/dist/component/contentTypeMigration.d.ts +411 -0
  130. package/dist/component/contentTypeMigration.d.ts.map +1 -0
  131. package/dist/component/contentTypeMigration.js +805 -0
  132. package/dist/component/contentTypeMigration.js.map +1 -0
  133. package/dist/component/contentTypeMutations.d.ts +975 -0
  134. package/dist/component/contentTypeMutations.d.ts.map +1 -0
  135. package/dist/component/contentTypeMutations.js +768 -0
  136. package/dist/component/contentTypeMutations.js.map +1 -0
  137. package/dist/component/contentTypes.d.ts +538 -0
  138. package/dist/component/contentTypes.d.ts.map +1 -0
  139. package/dist/component/contentTypes.js +304 -0
  140. package/dist/component/contentTypes.js.map +1 -0
  141. package/dist/component/convex.config.d.ts +42 -0
  142. package/dist/component/convex.config.d.ts.map +1 -0
  143. package/dist/component/convex.config.js +43 -0
  144. package/dist/component/convex.config.js.map +1 -0
  145. package/dist/component/documentTypes.d.ts +186 -0
  146. package/dist/component/documentTypes.d.ts.map +1 -0
  147. package/dist/component/documentTypes.js +23 -0
  148. package/dist/component/documentTypes.js.map +1 -0
  149. package/dist/component/eventEmitter.d.ts +281 -0
  150. package/dist/component/eventEmitter.d.ts.map +1 -0
  151. package/dist/component/eventEmitter.js +300 -0
  152. package/dist/component/eventEmitter.js.map +1 -0
  153. package/dist/component/exportImport.d.ts +1120 -0
  154. package/dist/component/exportImport.d.ts.map +1 -0
  155. package/dist/component/exportImport.js +931 -0
  156. package/dist/component/exportImport.js.map +1 -0
  157. package/dist/component/index.d.ts +28 -0
  158. package/dist/component/index.d.ts.map +1 -0
  159. package/dist/component/index.js +142 -0
  160. package/dist/component/index.js.map +1 -0
  161. package/dist/component/lib/deepReferenceResolver.d.ts +252 -0
  162. package/dist/component/lib/deepReferenceResolver.d.ts.map +1 -0
  163. package/dist/component/lib/deepReferenceResolver.js +601 -0
  164. package/dist/component/lib/deepReferenceResolver.js.map +1 -0
  165. package/dist/component/lib/errors.d.ts +306 -0
  166. package/dist/component/lib/errors.d.ts.map +1 -0
  167. package/dist/component/lib/errors.js +407 -0
  168. package/dist/component/lib/errors.js.map +1 -0
  169. package/dist/component/lib/index.d.ts +10 -0
  170. package/dist/component/lib/index.d.ts.map +1 -0
  171. package/dist/component/lib/index.js +33 -0
  172. package/dist/component/lib/index.js.map +1 -0
  173. package/dist/component/lib/mediaReferenceResolver.d.ts +217 -0
  174. package/dist/component/lib/mediaReferenceResolver.d.ts.map +1 -0
  175. package/dist/component/lib/mediaReferenceResolver.js +326 -0
  176. package/dist/component/lib/mediaReferenceResolver.js.map +1 -0
  177. package/dist/component/lib/metadataExtractor.d.ts +245 -0
  178. package/dist/component/lib/metadataExtractor.d.ts.map +1 -0
  179. package/dist/component/lib/metadataExtractor.js +548 -0
  180. package/dist/component/lib/metadataExtractor.js.map +1 -0
  181. package/dist/component/lib/mutationAuth.d.ts +95 -0
  182. package/dist/component/lib/mutationAuth.d.ts.map +1 -0
  183. package/dist/component/lib/mutationAuth.js +146 -0
  184. package/dist/component/lib/mutationAuth.js.map +1 -0
  185. package/dist/component/lib/queries.d.ts +17 -0
  186. package/dist/component/lib/queries.d.ts.map +1 -0
  187. package/dist/component/lib/queries.js +49 -0
  188. package/dist/component/lib/queries.js.map +1 -0
  189. package/dist/component/lib/ragContentChunker.d.ts +423 -0
  190. package/dist/component/lib/ragContentChunker.d.ts.map +1 -0
  191. package/dist/component/lib/ragContentChunker.js +897 -0
  192. package/dist/component/lib/ragContentChunker.js.map +1 -0
  193. package/dist/component/lib/referenceResolver.d.ts +175 -0
  194. package/dist/component/lib/referenceResolver.d.ts.map +1 -0
  195. package/dist/component/lib/referenceResolver.js +293 -0
  196. package/dist/component/lib/referenceResolver.js.map +1 -0
  197. package/dist/component/lib/slugGenerator.d.ts +71 -0
  198. package/dist/component/lib/slugGenerator.d.ts.map +1 -0
  199. package/dist/component/lib/slugGenerator.js +207 -0
  200. package/dist/component/lib/slugGenerator.js.map +1 -0
  201. package/dist/component/lib/slugUniqueness.d.ts +131 -0
  202. package/dist/component/lib/slugUniqueness.d.ts.map +1 -0
  203. package/dist/component/lib/slugUniqueness.js +229 -0
  204. package/dist/component/lib/slugUniqueness.js.map +1 -0
  205. package/dist/component/lib/softDelete.d.ts +18 -0
  206. package/dist/component/lib/softDelete.d.ts.map +1 -0
  207. package/dist/component/lib/softDelete.js +29 -0
  208. package/dist/component/lib/softDelete.js.map +1 -0
  209. package/dist/component/localeFallbackChain.d.ts +410 -0
  210. package/dist/component/localeFallbackChain.d.ts.map +1 -0
  211. package/dist/component/localeFallbackChain.js +467 -0
  212. package/dist/component/localeFallbackChain.js.map +1 -0
  213. package/dist/component/localeFields.d.ts +508 -0
  214. package/dist/component/localeFields.d.ts.map +1 -0
  215. package/dist/component/localeFields.js +592 -0
  216. package/dist/component/localeFields.js.map +1 -0
  217. package/dist/component/mediaAssetMutations.d.ts +235 -0
  218. package/dist/component/mediaAssetMutations.d.ts.map +1 -0
  219. package/dist/component/mediaAssetMutations.js +558 -0
  220. package/dist/component/mediaAssetMutations.js.map +1 -0
  221. package/dist/component/mediaAssets.d.ts +168 -0
  222. package/dist/component/mediaAssets.d.ts.map +1 -0
  223. package/dist/component/mediaAssets.js +618 -0
  224. package/dist/component/mediaAssets.js.map +1 -0
  225. package/dist/component/mediaFolderMutations.d.ts +642 -0
  226. package/dist/component/mediaFolderMutations.d.ts.map +1 -0
  227. package/dist/component/mediaFolderMutations.js +849 -0
  228. package/dist/component/mediaFolderMutations.js.map +1 -0
  229. package/dist/component/mediaUploadMutations.d.ts +136 -0
  230. package/dist/component/mediaUploadMutations.d.ts.map +1 -0
  231. package/dist/component/mediaUploadMutations.js +205 -0
  232. package/dist/component/mediaUploadMutations.js.map +1 -0
  233. package/dist/component/mediaVariantMutations.d.ts +468 -0
  234. package/dist/component/mediaVariantMutations.d.ts.map +1 -0
  235. package/dist/component/mediaVariantMutations.js +737 -0
  236. package/dist/component/mediaVariantMutations.js.map +1 -0
  237. package/dist/component/mediaVariants.d.ts +525 -0
  238. package/dist/component/mediaVariants.d.ts.map +1 -0
  239. package/dist/component/mediaVariants.js +661 -0
  240. package/dist/component/mediaVariants.js.map +1 -0
  241. package/dist/component/ragContentIndexer.d.ts +595 -0
  242. package/dist/component/ragContentIndexer.d.ts.map +1 -0
  243. package/dist/component/ragContentIndexer.js +794 -0
  244. package/dist/component/ragContentIndexer.js.map +1 -0
  245. package/dist/component/rateLimitHooks.d.ts +266 -0
  246. package/dist/component/rateLimitHooks.d.ts.map +1 -0
  247. package/dist/component/rateLimitHooks.js +412 -0
  248. package/dist/component/rateLimitHooks.js.map +1 -0
  249. package/dist/component/roles.d.ts +649 -0
  250. package/dist/component/roles.d.ts.map +1 -0
  251. package/dist/component/roles.js +884 -0
  252. package/dist/component/roles.js.map +1 -0
  253. package/dist/component/scheduledPublish.d.ts +182 -0
  254. package/dist/component/scheduledPublish.d.ts.map +1 -0
  255. package/dist/component/scheduledPublish.js +304 -0
  256. package/dist/component/scheduledPublish.js.map +1 -0
  257. package/dist/component/schema.d.ts +4114 -0
  258. package/dist/component/schema.d.ts.map +1 -0
  259. package/dist/component/schema.js +469 -0
  260. package/dist/component/schema.js.map +1 -0
  261. package/dist/component/taxonomies.d.ts +476 -0
  262. package/dist/component/taxonomies.d.ts.map +1 -0
  263. package/dist/component/taxonomies.js +785 -0
  264. package/dist/component/taxonomies.js.map +1 -0
  265. package/dist/component/taxonomyMutations.d.ts +206 -0
  266. package/dist/component/taxonomyMutations.d.ts.map +1 -0
  267. package/dist/component/taxonomyMutations.js +1001 -0
  268. package/dist/component/taxonomyMutations.js.map +1 -0
  269. package/dist/component/trash.d.ts +265 -0
  270. package/dist/component/trash.d.ts.map +1 -0
  271. package/dist/component/trash.js +621 -0
  272. package/dist/component/trash.js.map +1 -0
  273. package/dist/component/types.d.ts +4 -0
  274. package/dist/component/types.d.ts.map +1 -0
  275. package/dist/component/types.js +2 -0
  276. package/dist/component/types.js.map +1 -0
  277. package/dist/component/userContext.d.ts +508 -0
  278. package/dist/component/userContext.d.ts.map +1 -0
  279. package/dist/component/userContext.js +615 -0
  280. package/dist/component/userContext.js.map +1 -0
  281. package/dist/component/validation.d.ts +387 -0
  282. package/dist/component/validation.d.ts.map +1 -0
  283. package/dist/component/validation.js +1052 -0
  284. package/dist/component/validation.js.map +1 -0
  285. package/dist/component/validators.d.ts +4645 -0
  286. package/dist/component/validators.d.ts.map +1 -0
  287. package/dist/component/validators.js +641 -0
  288. package/dist/component/validators.js.map +1 -0
  289. package/dist/component/versionMutations.d.ts +216 -0
  290. package/dist/component/versionMutations.d.ts.map +1 -0
  291. package/dist/component/versionMutations.js +321 -0
  292. package/dist/component/versionMutations.js.map +1 -0
  293. package/dist/component/webhookTrigger.d.ts +770 -0
  294. package/dist/component/webhookTrigger.d.ts.map +1 -0
  295. package/dist/component/webhookTrigger.js +1413 -0
  296. package/dist/component/webhookTrigger.js.map +1 -0
  297. package/dist/react/index.d.ts +316 -0
  298. package/dist/react/index.d.ts.map +1 -0
  299. package/dist/react/index.js +558 -0
  300. package/dist/react/index.js.map +1 -0
  301. package/dist/test.d.ts +2230 -0
  302. package/dist/test.d.ts.map +1 -0
  303. package/dist/test.js +1107 -0
  304. package/dist/test.js.map +1 -0
  305. package/package.json +95 -0
  306. package/src/cli/commands/admin.ts +104 -0
  307. package/src/cli/index.ts +21 -0
  308. package/src/cli/utils/detectConvexUrl.ts +54 -0
  309. package/src/cli/utils/openBrowser.ts +16 -0
  310. package/src/client/admin-config.ts +138 -0
  311. package/src/client/adminApi.ts +942 -0
  312. package/src/client/agentTools.ts +1311 -0
  313. package/src/client/argTypes.ts +316 -0
  314. package/src/client/field-types.ts +187 -0
  315. package/src/client/index.ts +1301 -0
  316. package/src/client/queryBuilder.ts +1100 -0
  317. package/src/client/schema/codegen.ts +500 -0
  318. package/src/client/schema/defineContentType.ts +501 -0
  319. package/src/client/schema/index.ts +169 -0
  320. package/src/client/schema/schemaDrift.ts +574 -0
  321. package/src/client/schema/typedClient.ts +688 -0
  322. package/src/client/schema/types.ts +666 -0
  323. package/src/client/types.ts +723 -0
  324. package/src/client/workflows.ts +141 -0
  325. package/src/client/wrapper.ts +4304 -0
  326. package/src/component/_generated/api.ts +140 -0
  327. package/src/component/_generated/component.ts +5029 -0
  328. package/src/component/_generated/dataModel.ts +60 -0
  329. package/src/component/_generated/server.ts +156 -0
  330. package/src/component/authorization.ts +647 -0
  331. package/src/component/authorizationHooks.ts +668 -0
  332. package/src/component/bulkOperations.ts +687 -0
  333. package/src/component/contentEntries.ts +1976 -0
  334. package/src/component/contentEntryMutations.ts +1223 -0
  335. package/src/component/contentEntryValidation.ts +707 -0
  336. package/src/component/contentLock.ts +550 -0
  337. package/src/component/contentTypeMigration.ts +1064 -0
  338. package/src/component/contentTypeMutations.ts +969 -0
  339. package/src/component/contentTypes.ts +346 -0
  340. package/src/component/convex.config.ts +44 -0
  341. package/src/component/documentTypes.ts +240 -0
  342. package/src/component/eventEmitter.ts +485 -0
  343. package/src/component/exportImport.ts +1169 -0
  344. package/src/component/index.ts +491 -0
  345. package/src/component/lib/deepReferenceResolver.ts +999 -0
  346. package/src/component/lib/errors.ts +816 -0
  347. package/src/component/lib/index.ts +145 -0
  348. package/src/component/lib/mediaReferenceResolver.ts +495 -0
  349. package/src/component/lib/metadataExtractor.ts +792 -0
  350. package/src/component/lib/mutationAuth.ts +199 -0
  351. package/src/component/lib/queries.ts +79 -0
  352. package/src/component/lib/ragContentChunker.ts +1371 -0
  353. package/src/component/lib/referenceResolver.ts +430 -0
  354. package/src/component/lib/slugGenerator.ts +262 -0
  355. package/src/component/lib/slugUniqueness.ts +333 -0
  356. package/src/component/lib/softDelete.ts +44 -0
  357. package/src/component/localeFallbackChain.ts +673 -0
  358. package/src/component/localeFields.ts +896 -0
  359. package/src/component/mediaAssetMutations.ts +725 -0
  360. package/src/component/mediaAssets.ts +932 -0
  361. package/src/component/mediaFolderMutations.ts +1046 -0
  362. package/src/component/mediaUploadMutations.ts +224 -0
  363. package/src/component/mediaVariantMutations.ts +900 -0
  364. package/src/component/mediaVariants.ts +793 -0
  365. package/src/component/ragContentIndexer.ts +1067 -0
  366. package/src/component/rateLimitHooks.ts +572 -0
  367. package/src/component/roles.ts +1360 -0
  368. package/src/component/scheduledPublish.ts +358 -0
  369. package/src/component/schema.ts +617 -0
  370. package/src/component/taxonomies.ts +949 -0
  371. package/src/component/taxonomyMutations.ts +1210 -0
  372. package/src/component/trash.ts +724 -0
  373. package/src/component/userContext.ts +898 -0
  374. package/src/component/validation.ts +1388 -0
  375. package/src/component/validators.ts +949 -0
  376. package/src/component/versionMutations.ts +392 -0
  377. package/src/component/webhookTrigger.ts +1922 -0
  378. package/src/react/index.ts +898 -0
  379. package/src/test.ts +1580 -0
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Media Reference Resolution Utilities
3
+ *
4
+ * Provides functions for resolving and validating media asset references.
5
+ * These utilities help with fetching referenced media assets and validating
6
+ * MIME type constraints for media fields.
7
+ */
8
+ import { QueryCtx } from "../_generated/server.js";
9
+ /**
10
+ * A single media reference value (media asset ID as string)
11
+ */
12
+ export type SingleMediaReference = string;
13
+ /**
14
+ * Multiple media reference values (array of media asset IDs) - used for galleries
15
+ */
16
+ export type MultipleMediaReferences = string[];
17
+ /**
18
+ * Media field value - either single or multiple based on field configuration
19
+ */
20
+ export type MediaReferenceValue = SingleMediaReference | MultipleMediaReferences;
21
+ /**
22
+ * A resolved media reference with full asset data
23
+ */
24
+ export interface ResolvedMediaReference {
25
+ /** The media asset ID */
26
+ id: string;
27
+ /** The storage ID for the file */
28
+ storageId: string;
29
+ /** The resolved public URL for the asset */
30
+ url: string | null;
31
+ /** Original filename (name field) */
32
+ name: string;
33
+ /** MIME type of the file */
34
+ mimeType: string;
35
+ /** File size in bytes */
36
+ size: number;
37
+ /** Classified media type */
38
+ type: "image" | "video" | "audio" | "document" | "other";
39
+ /** Human-readable title */
40
+ title?: string;
41
+ /** Description/caption */
42
+ description?: string;
43
+ /** Alt text for accessibility */
44
+ altText?: string;
45
+ /** Image dimensions (if applicable) */
46
+ width?: number;
47
+ height?: number;
48
+ /** Duration in seconds (for video/audio) */
49
+ duration?: number;
50
+ /** Whether the asset exists and is not deleted */
51
+ exists: boolean;
52
+ }
53
+ /**
54
+ * Options for resolving media references
55
+ */
56
+ export interface MediaResolveOptions {
57
+ /** Include soft-deleted assets (default: false) */
58
+ includeDeleted?: boolean;
59
+ }
60
+ /**
61
+ * Result of a media resolution operation
62
+ */
63
+ export interface MediaResolveResult {
64
+ /** Successfully resolved media references */
65
+ resolved: ResolvedMediaReference[];
66
+ /** IDs that could not be resolved (not found or deleted) */
67
+ unresolved: string[];
68
+ }
69
+ /**
70
+ * Result of validating a media reference
71
+ */
72
+ export interface MediaValidationResult {
73
+ /** Whether the reference is valid */
74
+ valid: boolean;
75
+ /** Error message if not valid */
76
+ error?: string;
77
+ /** The MIME type of the referenced asset (if found) */
78
+ mimeType?: string;
79
+ }
80
+ /**
81
+ * Resolve a single media reference to its full asset data.
82
+ *
83
+ * @param ctx - Convex query context
84
+ * @param mediaId - The media asset ID to resolve
85
+ * @param options - Resolution options
86
+ * @returns The resolved media reference or null if not found
87
+ *
88
+ * @example
89
+ * ```typescript
90
+ * // In a query handler:
91
+ * const image = await resolveMediaReference(ctx, entry.data.featuredImage);
92
+ * if (image) {
93
+ * console.log("Image URL:", image.url);
94
+ * console.log("Alt text:", image.altText);
95
+ * }
96
+ * ```
97
+ */
98
+ export declare function resolveMediaReference(ctx: QueryCtx, mediaId: string, options?: MediaResolveOptions): Promise<ResolvedMediaReference | null>;
99
+ /**
100
+ * Resolve multiple media references to their full asset data.
101
+ *
102
+ * @param ctx - Convex query context
103
+ * @param mediaIds - Array of media asset IDs to resolve
104
+ * @param options - Resolution options
105
+ * @returns Result with resolved references and unresolved IDs
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * // In a query handler - resolving a gallery:
110
+ * const result = await resolveMediaReferences(ctx, entry.data.galleryImages);
111
+ *
112
+ * console.log("Found:", result.resolved.length, "images");
113
+ * console.log("Missing:", result.unresolved);
114
+ *
115
+ * for (const image of result.resolved) {
116
+ * console.log(image.url, image.width, "x", image.height);
117
+ * }
118
+ * ```
119
+ */
120
+ export declare function resolveMediaReferences(ctx: QueryCtx, mediaIds: string[], options?: MediaResolveOptions): Promise<MediaResolveResult>;
121
+ /**
122
+ * Check if a media reference ID points to a valid, existing media asset.
123
+ *
124
+ * @param ctx - Convex query context
125
+ * @param mediaId - The media asset ID to check
126
+ * @param allowedMimeTypes - Optional array of allowed MIME types
127
+ * @returns Object with validity status and optional error message
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * // Validate a media reference before saving:
132
+ * const check = await isValidMediaReference(ctx, imageId, ["image/jpeg", "image/png"]);
133
+ * if (!check.valid) {
134
+ * throw new Error(check.error);
135
+ * }
136
+ * ```
137
+ */
138
+ export declare function isValidMediaReference(ctx: QueryCtx, mediaId: string, allowedMimeTypes?: string[]): Promise<MediaValidationResult>;
139
+ /**
140
+ * Validate all media references in a content entry's data.
141
+ *
142
+ * Iterates through all media fields and validates that each reference
143
+ * points to a valid, existing media asset with an allowed MIME type.
144
+ *
145
+ * @param ctx - Convex query context
146
+ * @param data - The content entry data containing media fields
147
+ * @param fields - Array of field definitions (to identify media fields)
148
+ * @returns Object with overall validity and array of errors
149
+ *
150
+ * @example
151
+ * ```typescript
152
+ * // Validate all media references before creating/updating an entry:
153
+ * const validation = await validateAllMediaReferences(ctx, data, contentType.fields);
154
+ * if (!validation.valid) {
155
+ * throw new Error(validation.errors.join(", "));
156
+ * }
157
+ * ```
158
+ */
159
+ export declare function validateAllMediaReferences(ctx: QueryCtx, data: Record<string, unknown>, fields: Array<{
160
+ name: string;
161
+ type: string;
162
+ options?: {
163
+ allowedMimeTypes?: string[];
164
+ multiple?: boolean;
165
+ };
166
+ }>): Promise<{
167
+ valid: boolean;
168
+ errors: string[];
169
+ }>;
170
+ /**
171
+ * Extract all media asset IDs from a content entry's data.
172
+ *
173
+ * @param data - The content entry data
174
+ * @param fields - Array of field definitions
175
+ * @returns Array of all media asset IDs found in the data
176
+ */
177
+ export declare function extractMediaIds(data: Record<string, unknown>, fields: Array<{
178
+ name: string;
179
+ type: string;
180
+ options?: {
181
+ multiple?: boolean;
182
+ };
183
+ }>): string[];
184
+ /**
185
+ * Get the MIME type for a media asset ID.
186
+ *
187
+ * This is a helper function for validation purposes.
188
+ *
189
+ * @param ctx - Convex query context
190
+ * @param mediaId - The media asset ID
191
+ * @returns The MIME type or null if not found
192
+ */
193
+ export declare function getMediaMimeType(ctx: QueryCtx, mediaId: string): Promise<string | null>;
194
+ /**
195
+ * Check if a MIME type matches a pattern (supports wildcards like "image/*").
196
+ *
197
+ * @param mimeType - The MIME type to check
198
+ * @param pattern - The pattern to match against (e.g., "image/*", "image/jpeg")
199
+ * @returns Whether the MIME type matches the pattern
200
+ *
201
+ * @example
202
+ * ```typescript
203
+ * matchesMimeTypePattern("image/jpeg", "image/*"); // true
204
+ * matchesMimeTypePattern("image/jpeg", "image/jpeg"); // true
205
+ * matchesMimeTypePattern("image/jpeg", "video/*"); // false
206
+ * ```
207
+ */
208
+ export declare function matchesMimeTypePattern(mimeType: string, pattern: string): boolean;
209
+ /**
210
+ * Check if a MIME type matches any of the given patterns.
211
+ *
212
+ * @param mimeType - The MIME type to check
213
+ * @param patterns - Array of patterns to match against
214
+ * @returns Whether the MIME type matches any pattern
215
+ */
216
+ export declare function matchesAnyMimeTypePattern(mimeType: string, patterns: string[]): boolean;
217
+ //# sourceMappingURL=mediaReferenceResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediaReferenceResolver.d.ts","sourceRoot":"","sources":["../../../src/component/lib/mediaReferenceResolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,326 @@
1
+ /**
2
+ * Media Reference Resolution Utilities
3
+ *
4
+ * Provides functions for resolving and validating media asset references.
5
+ * These utilities help with fetching referenced media assets and validating
6
+ * MIME type constraints for media fields.
7
+ */
8
+ import { isDeleted } from "./softDelete.js";
9
+ import { classifyMimeType } from "./metadataExtractor.js";
10
+ // =============================================================================
11
+ // Core Resolution Functions
12
+ // =============================================================================
13
+ /**
14
+ * Resolve a single media reference to its full asset data.
15
+ *
16
+ * @param ctx - Convex query context
17
+ * @param mediaId - The media asset ID to resolve
18
+ * @param options - Resolution options
19
+ * @returns The resolved media reference or null if not found
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * // In a query handler:
24
+ * const image = await resolveMediaReference(ctx, entry.data.featuredImage);
25
+ * if (image) {
26
+ * console.log("Image URL:", image.url);
27
+ * console.log("Alt text:", image.altText);
28
+ * }
29
+ * ```
30
+ */
31
+ export async function resolveMediaReference(ctx, mediaId, options = {}) {
32
+ const { includeDeleted = false } = options;
33
+ try {
34
+ // Get the media item
35
+ const item = await ctx.db.get(mediaId);
36
+ if (!item) {
37
+ return null;
38
+ }
39
+ // Only assets can be resolved as media references
40
+ if (item.kind !== "asset") {
41
+ return null;
42
+ }
43
+ // Check soft-delete status
44
+ if (!includeDeleted && isDeleted(item)) {
45
+ return null;
46
+ }
47
+ // Resolve the storage URL
48
+ const url = await ctx.storage.getUrl(item.storageId);
49
+ return {
50
+ id: mediaId,
51
+ storageId: item.storageId,
52
+ url,
53
+ name: item.name,
54
+ mimeType: item.mimeType,
55
+ size: item.size ?? 0,
56
+ type: classifyMimeType(item.mimeType),
57
+ title: item.title,
58
+ description: item.description,
59
+ altText: item.altText,
60
+ width: item.width,
61
+ height: item.height,
62
+ duration: item.duration,
63
+ exists: true,
64
+ };
65
+ }
66
+ catch {
67
+ // Invalid ID format or other error
68
+ return null;
69
+ }
70
+ }
71
+ /**
72
+ * Resolve multiple media references to their full asset data.
73
+ *
74
+ * @param ctx - Convex query context
75
+ * @param mediaIds - Array of media asset IDs to resolve
76
+ * @param options - Resolution options
77
+ * @returns Result with resolved references and unresolved IDs
78
+ *
79
+ * @example
80
+ * ```typescript
81
+ * // In a query handler - resolving a gallery:
82
+ * const result = await resolveMediaReferences(ctx, entry.data.galleryImages);
83
+ *
84
+ * console.log("Found:", result.resolved.length, "images");
85
+ * console.log("Missing:", result.unresolved);
86
+ *
87
+ * for (const image of result.resolved) {
88
+ * console.log(image.url, image.width, "x", image.height);
89
+ * }
90
+ * ```
91
+ */
92
+ export async function resolveMediaReferences(ctx, mediaIds, options = {}) {
93
+ const resolved = [];
94
+ const unresolved = [];
95
+ // Resolve each reference in parallel for efficiency
96
+ const promises = mediaIds.map(async (id) => {
97
+ const result = await resolveMediaReference(ctx, id, options);
98
+ return { id, result };
99
+ });
100
+ const results = await Promise.all(promises);
101
+ for (const { id, result } of results) {
102
+ if (result) {
103
+ resolved.push(result);
104
+ }
105
+ else {
106
+ unresolved.push(id);
107
+ }
108
+ }
109
+ return { resolved, unresolved };
110
+ }
111
+ // =============================================================================
112
+ // Validation Functions
113
+ // =============================================================================
114
+ /**
115
+ * Check if a media reference ID points to a valid, existing media asset.
116
+ *
117
+ * @param ctx - Convex query context
118
+ * @param mediaId - The media asset ID to check
119
+ * @param allowedMimeTypes - Optional array of allowed MIME types
120
+ * @returns Object with validity status and optional error message
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * // Validate a media reference before saving:
125
+ * const check = await isValidMediaReference(ctx, imageId, ["image/jpeg", "image/png"]);
126
+ * if (!check.valid) {
127
+ * throw new Error(check.error);
128
+ * }
129
+ * ```
130
+ */
131
+ export async function isValidMediaReference(ctx, mediaId, allowedMimeTypes) {
132
+ try {
133
+ // Get the media item
134
+ const item = await ctx.db.get(mediaId);
135
+ if (!item) {
136
+ return { valid: false, error: `Media asset not found: ${mediaId}` };
137
+ }
138
+ // Only assets can be validated as media references
139
+ if (item.kind !== "asset") {
140
+ return {
141
+ valid: false,
142
+ error: `Media reference is a folder, not an asset: ${mediaId}`,
143
+ };
144
+ }
145
+ // Check soft-delete status
146
+ if (isDeleted(item)) {
147
+ return {
148
+ valid: false,
149
+ error: `Media asset has been deleted: ${mediaId}`,
150
+ };
151
+ }
152
+ // If MIME type constraints specified, check them
153
+ if (allowedMimeTypes && allowedMimeTypes.length > 0) {
154
+ // Support wildcard patterns like "image/*"
155
+ const isAllowed = allowedMimeTypes.some((pattern) => {
156
+ if (pattern.endsWith("/*")) {
157
+ // Wildcard pattern: "image/*" matches "image/jpeg", "image/png", etc.
158
+ const prefix = pattern.slice(0, -1); // Remove the trailing "*"
159
+ return item.mimeType.startsWith(prefix);
160
+ }
161
+ return item.mimeType === pattern;
162
+ });
163
+ if (!isAllowed) {
164
+ return {
165
+ valid: false,
166
+ error: `Media asset MIME type "${item.mimeType}" is not allowed. Expected: ${allowedMimeTypes.join(", ")}`,
167
+ mimeType: item.mimeType,
168
+ };
169
+ }
170
+ }
171
+ return { valid: true, mimeType: item.mimeType };
172
+ }
173
+ catch {
174
+ return { valid: false, error: `Invalid media asset ID format: ${mediaId}` };
175
+ }
176
+ }
177
+ /**
178
+ * Validate all media references in a content entry's data.
179
+ *
180
+ * Iterates through all media fields and validates that each reference
181
+ * points to a valid, existing media asset with an allowed MIME type.
182
+ *
183
+ * @param ctx - Convex query context
184
+ * @param data - The content entry data containing media fields
185
+ * @param fields - Array of field definitions (to identify media fields)
186
+ * @returns Object with overall validity and array of errors
187
+ *
188
+ * @example
189
+ * ```typescript
190
+ * // Validate all media references before creating/updating an entry:
191
+ * const validation = await validateAllMediaReferences(ctx, data, contentType.fields);
192
+ * if (!validation.valid) {
193
+ * throw new Error(validation.errors.join(", "));
194
+ * }
195
+ * ```
196
+ */
197
+ export async function validateAllMediaReferences(ctx, data, fields) {
198
+ const errors = [];
199
+ // Find all media fields
200
+ const mediaFields = fields.filter((f) => f.type === "media");
201
+ for (const field of mediaFields) {
202
+ const value = data[field.name];
203
+ if (value === null || value === undefined) {
204
+ continue; // Skip empty values (required validation is separate)
205
+ }
206
+ const allowedMimeTypes = field.options?.allowedMimeTypes;
207
+ const multiple = field.options?.multiple ?? false;
208
+ if (multiple) {
209
+ // Validate array of media references (gallery)
210
+ if (!Array.isArray(value)) {
211
+ errors.push(`${field.name}: Expected array of media asset IDs`);
212
+ continue;
213
+ }
214
+ for (const mediaId of value) {
215
+ if (typeof mediaId !== "string") {
216
+ errors.push(`${field.name}: Invalid media asset ID type`);
217
+ continue;
218
+ }
219
+ const check = await isValidMediaReference(ctx, mediaId, allowedMimeTypes);
220
+ if (!check.valid) {
221
+ errors.push(`${field.name}: ${check.error}`);
222
+ }
223
+ }
224
+ }
225
+ else {
226
+ // Validate single media reference
227
+ if (typeof value !== "string") {
228
+ errors.push(`${field.name}: Expected string media asset ID`);
229
+ continue;
230
+ }
231
+ const check = await isValidMediaReference(ctx, value, allowedMimeTypes);
232
+ if (!check.valid) {
233
+ errors.push(`${field.name}: ${check.error}`);
234
+ }
235
+ }
236
+ }
237
+ return {
238
+ valid: errors.length === 0,
239
+ errors,
240
+ };
241
+ }
242
+ // =============================================================================
243
+ // Utility Functions
244
+ // =============================================================================
245
+ /**
246
+ * Extract all media asset IDs from a content entry's data.
247
+ *
248
+ * @param data - The content entry data
249
+ * @param fields - Array of field definitions
250
+ * @returns Array of all media asset IDs found in the data
251
+ */
252
+ export function extractMediaIds(data, fields) {
253
+ const ids = [];
254
+ const mediaFields = fields.filter((f) => f.type === "media");
255
+ for (const field of mediaFields) {
256
+ const value = data[field.name];
257
+ if (value === null || value === undefined) {
258
+ continue;
259
+ }
260
+ const multiple = field.options?.multiple ?? false;
261
+ if (multiple && Array.isArray(value)) {
262
+ for (const id of value) {
263
+ if (typeof id === "string") {
264
+ ids.push(id);
265
+ }
266
+ }
267
+ }
268
+ else if (typeof value === "string") {
269
+ ids.push(value);
270
+ }
271
+ }
272
+ return ids;
273
+ }
274
+ /**
275
+ * Get the MIME type for a media asset ID.
276
+ *
277
+ * This is a helper function for validation purposes.
278
+ *
279
+ * @param ctx - Convex query context
280
+ * @param mediaId - The media asset ID
281
+ * @returns The MIME type or null if not found
282
+ */
283
+ export async function getMediaMimeType(ctx, mediaId) {
284
+ try {
285
+ const item = await ctx.db.get(mediaId);
286
+ if (!item || item.kind !== "asset" || isDeleted(item)) {
287
+ return null;
288
+ }
289
+ return item.mimeType;
290
+ }
291
+ catch {
292
+ return null;
293
+ }
294
+ }
295
+ /**
296
+ * Check if a MIME type matches a pattern (supports wildcards like "image/*").
297
+ *
298
+ * @param mimeType - The MIME type to check
299
+ * @param pattern - The pattern to match against (e.g., "image/*", "image/jpeg")
300
+ * @returns Whether the MIME type matches the pattern
301
+ *
302
+ * @example
303
+ * ```typescript
304
+ * matchesMimeTypePattern("image/jpeg", "image/*"); // true
305
+ * matchesMimeTypePattern("image/jpeg", "image/jpeg"); // true
306
+ * matchesMimeTypePattern("image/jpeg", "video/*"); // false
307
+ * ```
308
+ */
309
+ export function matchesMimeTypePattern(mimeType, pattern) {
310
+ if (pattern.endsWith("/*")) {
311
+ const prefix = pattern.slice(0, -1);
312
+ return mimeType.startsWith(prefix);
313
+ }
314
+ return mimeType === pattern;
315
+ }
316
+ /**
317
+ * Check if a MIME type matches any of the given patterns.
318
+ *
319
+ * @param mimeType - The MIME type to check
320
+ * @param patterns - Array of patterns to match against
321
+ * @returns Whether the MIME type matches any pattern
322
+ */
323
+ export function matchesAnyMimeTypePattern(mimeType, patterns) {
324
+ return patterns.some((pattern) => matchesMimeTypePattern(mimeType, pattern));
325
+ }
326
+ //# sourceMappingURL=mediaReferenceResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediaReferenceResolver.js","sourceRoot":"","sources":["../../../src/component/lib/mediaReferenceResolver.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAsF1D,gFAAgF;AAChF,4BAA4B;AAC5B,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,GAAa,EACb,OAAe,EACf,UAA+B,EAAE;IAEjC,MAAM,EAAE,cAAc,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAE3C,IAAI,CAAC;QACJ,qBAAqB;QACrB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAA2B,CAAC,CAAC;QAE3D,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACb,CAAC;QAED,kDAAkD;QAClD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACb,CAAC;QAED,2BAA2B;QAC3B,IAAI,CAAC,cAAc,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC;QACb,CAAC;QAED,0BAA0B;QAC1B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAErD,OAAO;YACN,EAAE,EAAE,OAAO;YACX,SAAS,EAAE,IAAI,CAAC,SAAmB;YACnC,GAAG;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;YACpB,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC;YACrC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI;SACZ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,mCAAmC;QACnC,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC3C,GAAa,EACb,QAAkB,EAClB,UAA+B,EAAE;IAEjC,MAAM,QAAQ,GAA6B,EAAE,CAAC;IAC9C,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,oDAAoD;IACpD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QAC7D,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE5C,KAAK,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACtC,IAAI,MAAM,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACP,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;IACF,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AACjC,CAAC;AAED,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,GAAa,EACb,OAAe,EACf,gBAA2B;IAE3B,IAAI,CAAC;QACJ,qBAAqB;QACrB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAA2B,CAAC,CAAC;QAE3D,IAAI,CAAC,IAAI,EAAE,CAAC;YACX,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,OAAO,EAAE,EAAE,CAAC;QACrE,CAAC;QAED,mDAAmD;QACnD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC3B,OAAO;gBACN,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,8CAA8C,OAAO,EAAE;aAC9D,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,OAAO;gBACN,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,iCAAiC,OAAO,EAAE;aACjD,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,2CAA2C;YAC3C,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBACnD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,sEAAsE;oBACtE,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,0BAA0B;oBAC/D,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACzC,CAAC;gBACD,OAAO,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC;YAClC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,OAAO;oBACN,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,0BACN,IAAI,CAAC,QACN,+BAA+B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC5D,QAAQ,EAAE,IAAI,CAAC,QAAQ;iBACvB,CAAC;YACH,CAAC;QACF,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,OAAO,EAAE,EAAE,CAAC;IAC7E,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC/C,GAAa,EACb,IAA6B,EAC7B,MAOE;IAEF,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,wBAAwB;IACxB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAE7D,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC3C,SAAS,CAAC,sDAAsD;QACjE,CAAC;QAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC;QACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,QAAQ,IAAI,KAAK,CAAC;QAElD,IAAI,QAAQ,EAAE,CAAC;YACd,+CAA+C;YAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,qCAAqC,CAAC,CAAC;gBAChE,SAAS;YACV,CAAC;YAED,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;gBAC7B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACjC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,+BAA+B,CAAC,CAAC;oBAC1D,SAAS;gBACV,CAAC;gBAED,MAAM,KAAK,GAAG,MAAM,qBAAqB,CACxC,GAAG,EACH,OAAO,EACP,gBAAgB,CAChB,CAAC;gBACF,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;oBAClB,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC9C,CAAC;YACF,CAAC;QACF,CAAC;aAAM,CAAC;YACP,kCAAkC;YAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,kCAAkC,CAAC,CAAC;gBAC7D,SAAS;YACV,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;YACxE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9C,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO;QACN,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QAC1B,MAAM;KACN,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC9B,IAA6B,EAC7B,MAIE;IAEF,MAAM,GAAG,GAAa,EAAE,CAAC;IAEzB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAE7D,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE/B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC3C,SAAS;QACV,CAAC;QAED,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,QAAQ,IAAI,KAAK,CAAC;QAElD,IAAI,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;gBACxB,IAAI,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;oBAC5B,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACd,CAAC;YACF,CAAC;QACF,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACtC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACF,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,GAAa,EACb,OAAe;IAEf,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAA2B,CAAC,CAAC;QAE3D,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACvD,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,sBAAsB,CACrC,QAAgB,EAChB,OAAe;IAEf,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,QAAQ,KAAK,OAAO,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CACxC,QAAgB,EAChB,QAAkB;IAElB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9E,CAAC"}