@kyro-cms/core 0.10.3 → 0.10.5

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 (301) hide show
  1. package/dist/api-handler-graphql.cjs +1 -49
  2. package/dist/api-handler-graphql.js +1 -46
  3. package/dist/api-handler-trpc.cjs +1 -38
  4. package/dist/api-handler-trpc.js +1 -36
  5. package/dist/api-handler.cjs +1 -44
  6. package/dist/api-handler.js +1 -27
  7. package/dist/bootstrap-IVQWSJXZ.js +1 -0
  8. package/dist/bootstrap-OHGQGMRV.cjs +1 -0
  9. package/dist/chunk-2BTRHVT3.cjs +20 -0
  10. package/dist/chunk-2W4FK6CJ.js +122 -0
  11. package/dist/chunk-4ORJMSJU.cjs +1 -0
  12. package/dist/chunk-5J6HXUF6.js +1 -0
  13. package/dist/chunk-65G73T7Z.cjs +2 -0
  14. package/dist/chunk-6CLRVJPP.cjs +133 -0
  15. package/dist/chunk-7N6NKCRT.js +1 -0
  16. package/dist/chunk-7WOX27LK.js +259 -0
  17. package/dist/chunk-AE6GXUT7.js +1 -0
  18. package/dist/chunk-AHSFSERC.cjs +1 -0
  19. package/dist/chunk-AJAZ7D3W.cjs +259 -0
  20. package/dist/chunk-ATLSIYRH.cjs +1 -0
  21. package/dist/chunk-AU6IWTBO.js +2 -0
  22. package/dist/chunk-CIE3XMLH.cjs +2 -0
  23. package/dist/chunk-CVVW4LXZ.cjs +1 -0
  24. package/dist/chunk-DV4LFLPL.cjs +1 -0
  25. package/dist/chunk-ELICKLFM.cjs +3 -0
  26. package/dist/chunk-EQUQJBPP.cjs +2 -0
  27. package/dist/chunk-ET6NN2V2.cjs +122 -0
  28. package/dist/chunk-F3Z67QWS.cjs +86 -0
  29. package/dist/chunk-F7SR5IDT.cjs +1 -0
  30. package/dist/chunk-FO3HLBC7.js +1 -0
  31. package/dist/chunk-G6A7OSIG.js +2 -0
  32. package/dist/chunk-GFU7AOI3.cjs +1 -0
  33. package/dist/chunk-GYQMNXXW.cjs +114 -0
  34. package/dist/chunk-HLSB2MCK.js +1 -0
  35. package/dist/chunk-HVXO3OFB.cjs +1 -0
  36. package/dist/chunk-ISWMETHJ.cjs +1 -0
  37. package/dist/chunk-K6WUOU6P.js +1 -0
  38. package/dist/chunk-KDNYHLD2.js +1 -0
  39. package/dist/chunk-L6CZYN3L.cjs +20 -0
  40. package/dist/chunk-LZ6YFYQM.js +20 -0
  41. package/dist/chunk-MIOMMB23.cjs +1 -0
  42. package/dist/chunk-MSSRVZH6.js +1 -0
  43. package/dist/chunk-NGBJKZMT.js +90 -0
  44. package/dist/chunk-NRLIGDYF.js +1 -0
  45. package/dist/chunk-NY47CFVP.cjs +1 -0
  46. package/dist/chunk-NZ35PV5R.js +2 -0
  47. package/dist/chunk-OG7CNQGU.js +1 -0
  48. package/dist/chunk-P7CESLDJ.js +1 -0
  49. package/dist/chunk-POWTSLKC.js +21 -0
  50. package/dist/chunk-PP5S2UBV.js +0 -0
  51. package/dist/chunk-PWGS2GPI.js +86 -0
  52. package/dist/chunk-Q3Q7BJVQ.cjs +1 -0
  53. package/dist/chunk-Q4CSLXCO.cjs +90 -0
  54. package/dist/chunk-QRXDCV6K.js +0 -0
  55. package/dist/chunk-R6UUTH3T.js +2 -0
  56. package/dist/chunk-RHCWCG3O.js +114 -0
  57. package/dist/chunk-SL3LZQCF.js +1 -0
  58. package/dist/chunk-TD6RULJU.cjs +21 -0
  59. package/dist/chunk-UBHFUFD4.cjs +1 -0
  60. package/dist/chunk-UBRYJP2G.js +1 -0
  61. package/dist/chunk-UDSJGML2.cjs +2 -0
  62. package/dist/chunk-UHFDH3PG.js +20 -0
  63. package/dist/chunk-UJNSOOYZ.cjs +1 -0
  64. package/dist/chunk-UVTS2IWM.js +1 -0
  65. package/dist/chunk-V65NPSR5.cjs +1 -0
  66. package/dist/chunk-VKXQUYYV.js +133 -0
  67. package/dist/chunk-WIZ6C5QZ.cjs +1 -0
  68. package/dist/chunk-Y7K26TBA.cjs +1 -0
  69. package/dist/chunk-ZAQOSRP6.js +1 -0
  70. package/dist/chunk-ZELCS7IC.js +3 -0
  71. package/dist/cli/index.cjs +35 -405
  72. package/dist/cli/index.js +35 -402
  73. package/dist/client.cjs +1 -55
  74. package/dist/client.js +1 -6
  75. package/dist/drizzle/index.cjs +1 -50
  76. package/dist/drizzle/index.d.cts +1 -2
  77. package/dist/drizzle/index.d.ts +1 -2
  78. package/dist/drizzle/index.js +1 -9
  79. package/dist/fields/index.cjs +1 -89
  80. package/dist/fields/index.js +1 -4
  81. package/dist/graphql/index.cjs +1 -31
  82. package/dist/graphql/index.d.cts +1 -1
  83. package/dist/graphql/index.d.ts +1 -1
  84. package/dist/graphql/index.js +1 -6
  85. package/dist/{index-jLs0zlft.d.ts → index-DXr33e0x.d.ts} +1 -1
  86. package/dist/{index-DHbywDs-.d.cts → index-DuuUzWBq.d.cts} +1 -1
  87. package/dist/index.cjs +29 -2464
  88. package/dist/index.d.cts +2 -2
  89. package/dist/index.d.ts +2 -2
  90. package/dist/index.js +29 -1929
  91. package/dist/integration.cjs +1 -10
  92. package/dist/integration.js +1 -4
  93. package/dist/media-L5XDD47D.js +1 -0
  94. package/dist/media-OUBQTIQP.cjs +1 -0
  95. package/dist/mongo-auth-adapter-LG5O4LIH.js +1 -0
  96. package/dist/mongo-auth-adapter-YPONSOCY.cjs +1 -0
  97. package/dist/mongodb/index.cjs +1 -29
  98. package/dist/mongodb/index.d.cts +1 -2
  99. package/dist/mongodb/index.d.ts +1 -2
  100. package/dist/mongodb/index.js +1 -8
  101. package/dist/postgres-auth-adapter-33QOIRXT.js +1 -0
  102. package/dist/postgres-auth-adapter-JKDYYULH.cjs +1 -0
  103. package/dist/redis-adapter-KECGVSVX.cjs +1 -0
  104. package/dist/redis-adapter-VAXP43GR.js +1 -0
  105. package/dist/rest/index.cjs +1 -31
  106. package/dist/rest/index.d.cts +1 -1
  107. package/dist/rest/index.d.ts +1 -1
  108. package/dist/rest/index.js +1 -18
  109. package/dist/schema-HIUSHSUI.cjs +1 -0
  110. package/dist/schema-KFYUM674.js +1 -0
  111. package/dist/sqlite-adapter-FP45QCYK.js +1 -0
  112. package/dist/sqlite-adapter-Z3IBBI4X.cjs +1 -0
  113. package/dist/templates/index.cjs +1 -207
  114. package/dist/templates/index.js +1 -6
  115. package/dist/trpc/index.cjs +1 -48
  116. package/dist/trpc/index.js +1 -7
  117. package/dist/ws/index.cjs +1 -25
  118. package/dist/ws/index.js +1 -4
  119. package/package.json +49 -12
  120. package/dist/api-handler-graphql.cjs.map +0 -1
  121. package/dist/api-handler-graphql.js.map +0 -1
  122. package/dist/api-handler-trpc.cjs.map +0 -1
  123. package/dist/api-handler-trpc.js.map +0 -1
  124. package/dist/api-handler.cjs.map +0 -1
  125. package/dist/api-handler.js.map +0 -1
  126. package/dist/bootstrap-FUAPY2OF.cjs +0 -32
  127. package/dist/bootstrap-FUAPY2OF.cjs.map +0 -1
  128. package/dist/bootstrap-OXNVM7FP.js +0 -7
  129. package/dist/bootstrap-OXNVM7FP.js.map +0 -1
  130. package/dist/chunk-2HFJUUFZ.js +0 -250
  131. package/dist/chunk-2HFJUUFZ.js.map +0 -1
  132. package/dist/chunk-354ISGA4.js +0 -6457
  133. package/dist/chunk-354ISGA4.js.map +0 -1
  134. package/dist/chunk-3AKCVYDB.js +0 -162
  135. package/dist/chunk-3AKCVYDB.js.map +0 -1
  136. package/dist/chunk-3KTWGODI.cjs +0 -178
  137. package/dist/chunk-3KTWGODI.cjs.map +0 -1
  138. package/dist/chunk-3P5AHK2U.cjs +0 -2749
  139. package/dist/chunk-3P5AHK2U.cjs.map +0 -1
  140. package/dist/chunk-3YELQL7Z.cjs +0 -4
  141. package/dist/chunk-3YELQL7Z.cjs.map +0 -1
  142. package/dist/chunk-4CV4JOE5.js +0 -24
  143. package/dist/chunk-4CV4JOE5.js.map +0 -1
  144. package/dist/chunk-4OCMVGEY.cjs +0 -173
  145. package/dist/chunk-4OCMVGEY.cjs.map +0 -1
  146. package/dist/chunk-4PWRCMTQ.cjs +0 -15
  147. package/dist/chunk-4PWRCMTQ.cjs.map +0 -1
  148. package/dist/chunk-526M5MOA.js +0 -103
  149. package/dist/chunk-526M5MOA.js.map +0 -1
  150. package/dist/chunk-53NYVYVX.js +0 -3243
  151. package/dist/chunk-53NYVYVX.js.map +0 -1
  152. package/dist/chunk-5GFQPHGT.cjs +0 -156
  153. package/dist/chunk-5GFQPHGT.cjs.map +0 -1
  154. package/dist/chunk-5RPRLTTN.js +0 -861
  155. package/dist/chunk-5RPRLTTN.js.map +0 -1
  156. package/dist/chunk-7OGPN7MP.js +0 -352
  157. package/dist/chunk-7OGPN7MP.js.map +0 -1
  158. package/dist/chunk-7OS7TX2Q.cjs +0 -495
  159. package/dist/chunk-7OS7TX2Q.cjs.map +0 -1
  160. package/dist/chunk-ADLJSJSN.cjs +0 -13
  161. package/dist/chunk-ADLJSJSN.cjs.map +0 -1
  162. package/dist/chunk-AN2L2CJZ.js +0 -2728
  163. package/dist/chunk-AN2L2CJZ.js.map +0 -1
  164. package/dist/chunk-BYBMTIMT.js +0 -419
  165. package/dist/chunk-BYBMTIMT.js.map +0 -1
  166. package/dist/chunk-CF7OL6HR.js +0 -355
  167. package/dist/chunk-CF7OL6HR.js.map +0 -1
  168. package/dist/chunk-CJX74IYK.js +0 -489
  169. package/dist/chunk-CJX74IYK.js.map +0 -1
  170. package/dist/chunk-CKVOU6MX.cjs +0 -52
  171. package/dist/chunk-CKVOU6MX.cjs.map +0 -1
  172. package/dist/chunk-CZLDE2OZ.cjs +0 -28
  173. package/dist/chunk-CZLDE2OZ.cjs.map +0 -1
  174. package/dist/chunk-DPA3KWPY.cjs +0 -205
  175. package/dist/chunk-DPA3KWPY.cjs.map +0 -1
  176. package/dist/chunk-EEJUFDMF.cjs +0 -424
  177. package/dist/chunk-EEJUFDMF.cjs.map +0 -1
  178. package/dist/chunk-FIAMXNTH.js +0 -220
  179. package/dist/chunk-FIAMXNTH.js.map +0 -1
  180. package/dist/chunk-GAOXD3XT.js +0 -175
  181. package/dist/chunk-GAOXD3XT.js.map +0 -1
  182. package/dist/chunk-GTGRLD4Y.js +0 -3
  183. package/dist/chunk-GTGRLD4Y.js.map +0 -1
  184. package/dist/chunk-GUUB5EAG.cjs +0 -223
  185. package/dist/chunk-GUUB5EAG.cjs.map +0 -1
  186. package/dist/chunk-GXFOGU7N.cjs +0 -359
  187. package/dist/chunk-GXFOGU7N.cjs.map +0 -1
  188. package/dist/chunk-GYIJ3JJM.cjs +0 -1069
  189. package/dist/chunk-GYIJ3JJM.cjs.map +0 -1
  190. package/dist/chunk-GZS4LMR7.js +0 -422
  191. package/dist/chunk-GZS4LMR7.js.map +0 -1
  192. package/dist/chunk-HY6B7B5A.js +0 -150
  193. package/dist/chunk-HY6B7B5A.js.map +0 -1
  194. package/dist/chunk-IDVRRRAK.cjs +0 -824
  195. package/dist/chunk-IDVRRRAK.cjs.map +0 -1
  196. package/dist/chunk-ISKYUUP4.cjs +0 -6486
  197. package/dist/chunk-ISKYUUP4.cjs.map +0 -1
  198. package/dist/chunk-KC2GDBLS.cjs +0 -84
  199. package/dist/chunk-KC2GDBLS.cjs.map +0 -1
  200. package/dist/chunk-L4EZKIEX.js +0 -185
  201. package/dist/chunk-L4EZKIEX.js.map +0 -1
  202. package/dist/chunk-LNTFRAHF.cjs +0 -473
  203. package/dist/chunk-LNTFRAHF.cjs.map +0 -1
  204. package/dist/chunk-MTIRYI7F.cjs +0 -4
  205. package/dist/chunk-MTIRYI7F.cjs.map +0 -1
  206. package/dist/chunk-N4GN6Q3V.cjs +0 -869
  207. package/dist/chunk-N4GN6Q3V.cjs.map +0 -1
  208. package/dist/chunk-N4H37VN4.cjs +0 -259
  209. package/dist/chunk-N4H37VN4.cjs.map +0 -1
  210. package/dist/chunk-N5QSHUA6.js +0 -1135
  211. package/dist/chunk-N5QSHUA6.js.map +0 -1
  212. package/dist/chunk-NKPKR5BW.cjs +0 -188
  213. package/dist/chunk-NKPKR5BW.cjs.map +0 -1
  214. package/dist/chunk-NQJJYRLP.cjs +0 -110
  215. package/dist/chunk-NQJJYRLP.cjs.map +0 -1
  216. package/dist/chunk-OJ2AM75W.cjs +0 -253
  217. package/dist/chunk-OJ2AM75W.cjs.map +0 -1
  218. package/dist/chunk-OX6GOIPH.js +0 -516
  219. package/dist/chunk-OX6GOIPH.js.map +0 -1
  220. package/dist/chunk-P2YW545G.js +0 -11
  221. package/dist/chunk-P2YW545G.js.map +0 -1
  222. package/dist/chunk-PHJRNPHY.cjs +0 -3291
  223. package/dist/chunk-PHJRNPHY.cjs.map +0 -1
  224. package/dist/chunk-Q72BOAPK.js +0 -817
  225. package/dist/chunk-Q72BOAPK.js.map +0 -1
  226. package/dist/chunk-QU2RFFH4.js +0 -3
  227. package/dist/chunk-QU2RFFH4.js.map +0 -1
  228. package/dist/chunk-RP7VZUEL.js +0 -49
  229. package/dist/chunk-RP7VZUEL.js.map +0 -1
  230. package/dist/chunk-SHTTJMLT.cjs +0 -361
  231. package/dist/chunk-SHTTJMLT.cjs.map +0 -1
  232. package/dist/chunk-THBQG64D.cjs +0 -425
  233. package/dist/chunk-THBQG64D.cjs.map +0 -1
  234. package/dist/chunk-TQG7G7YI.cjs +0 -526
  235. package/dist/chunk-TQG7G7YI.cjs.map +0 -1
  236. package/dist/chunk-U3VVLYXG.cjs +0 -189
  237. package/dist/chunk-U3VVLYXG.cjs.map +0 -1
  238. package/dist/chunk-UUDTPZX6.js +0 -193
  239. package/dist/chunk-UUDTPZX6.js.map +0 -1
  240. package/dist/chunk-VKREAIBA.cjs +0 -1139
  241. package/dist/chunk-VKREAIBA.cjs.map +0 -1
  242. package/dist/chunk-WDTTHKDS.js +0 -458
  243. package/dist/chunk-WDTTHKDS.js.map +0 -1
  244. package/dist/chunk-WXVB364T.js +0 -218
  245. package/dist/chunk-WXVB364T.js.map +0 -1
  246. package/dist/chunk-X4BPPD6K.js +0 -181
  247. package/dist/chunk-X4BPPD6K.js.map +0 -1
  248. package/dist/chunk-XEB7PH2E.js +0 -81
  249. package/dist/chunk-XEB7PH2E.js.map +0 -1
  250. package/dist/chunk-XHAAAEXX.js +0 -1055
  251. package/dist/chunk-XHAAAEXX.js.map +0 -1
  252. package/dist/chunk-YT7HXXVN.js +0 -13
  253. package/dist/chunk-YT7HXXVN.js.map +0 -1
  254. package/dist/cli/index.cjs.map +0 -1
  255. package/dist/cli/index.js.map +0 -1
  256. package/dist/client.cjs.map +0 -1
  257. package/dist/client.js.map +0 -1
  258. package/dist/drizzle/index.cjs.map +0 -1
  259. package/dist/drizzle/index.js.map +0 -1
  260. package/dist/fields/index.cjs.map +0 -1
  261. package/dist/fields/index.js.map +0 -1
  262. package/dist/graphql/index.cjs.map +0 -1
  263. package/dist/graphql/index.js.map +0 -1
  264. package/dist/index.cjs.map +0 -1
  265. package/dist/index.js.map +0 -1
  266. package/dist/integration.cjs.map +0 -1
  267. package/dist/integration.js.map +0 -1
  268. package/dist/media-7WDX4BDJ.js +0 -4
  269. package/dist/media-7WDX4BDJ.js.map +0 -1
  270. package/dist/media-TUSLVRQ6.cjs +0 -17
  271. package/dist/media-TUSLVRQ6.cjs.map +0 -1
  272. package/dist/mongo-auth-adapter-GT4S7SCU.cjs +0 -17
  273. package/dist/mongo-auth-adapter-GT4S7SCU.cjs.map +0 -1
  274. package/dist/mongo-auth-adapter-M7VV4LNB.js +0 -4
  275. package/dist/mongo-auth-adapter-M7VV4LNB.js.map +0 -1
  276. package/dist/mongodb/index.cjs.map +0 -1
  277. package/dist/mongodb/index.js.map +0 -1
  278. package/dist/postgres-auth-adapter-AFAPISH7.js +0 -5
  279. package/dist/postgres-auth-adapter-AFAPISH7.js.map +0 -1
  280. package/dist/postgres-auth-adapter-SFDTLONT.cjs +0 -14
  281. package/dist/postgres-auth-adapter-SFDTLONT.cjs.map +0 -1
  282. package/dist/redis-adapter-UQX4EE3B.cjs +0 -13
  283. package/dist/redis-adapter-UQX4EE3B.cjs.map +0 -1
  284. package/dist/redis-adapter-XALOGWY3.js +0 -4
  285. package/dist/redis-adapter-XALOGWY3.js.map +0 -1
  286. package/dist/rest/index.cjs.map +0 -1
  287. package/dist/rest/index.js.map +0 -1
  288. package/dist/schema-6QL3USNB.cjs +0 -67
  289. package/dist/schema-6QL3USNB.cjs.map +0 -1
  290. package/dist/schema-FNNWEAAW.js +0 -6
  291. package/dist/schema-FNNWEAAW.js.map +0 -1
  292. package/dist/sqlite-adapter-AQB5TCGV.cjs +0 -13
  293. package/dist/sqlite-adapter-AQB5TCGV.cjs.map +0 -1
  294. package/dist/sqlite-adapter-N5H6IM2X.js +0 -4
  295. package/dist/sqlite-adapter-N5H6IM2X.js.map +0 -1
  296. package/dist/templates/index.cjs.map +0 -1
  297. package/dist/templates/index.js.map +0 -1
  298. package/dist/trpc/index.cjs.map +0 -1
  299. package/dist/trpc/index.js.map +0 -1
  300. package/dist/ws/index.cjs.map +0 -1
  301. package/dist/ws/index.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/api/graphql/schema.ts"],"names":["GraphQLScalarType","Kind","hasApiKeyPermission","result","evaluateAccess","hasPermission","GraphQLString","GraphQLList","GraphQLInt","GraphQLFloat","GraphQLBoolean","GraphQLObjectType","gqlType","GraphQLNonNull","id","GraphQLInputObjectType","GraphQLSchema"],"mappings":"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","file":"chunk-N4GN6Q3V.cjs","sourcesContent":["import {\n GraphQLSchema,\n GraphQLObjectType,\n GraphQLString,\n GraphQLInt,\n GraphQLBoolean,\n GraphQLFloat,\n GraphQLList,\n GraphQLNonNull,\n GraphQLInputObjectType,\n GraphQLUnionType,\n GraphQLScalarType,\n type GraphQLFieldConfig,\n type GraphQLType,\n type GraphQLOutputType,\n type GraphQLInputType,\n type GraphQLInputFieldConfig,\n Kind,\n} from \"graphql\";\nimport type {\n CollectionConfig,\n GlobalConfig,\n BaseAdapter,\n} from \"../../registry/types.js\";\nimport { Registry } from \"../../registry/index.js\";\nimport type { Field, SelectField } from \"../../fields/types.js\";\nimport { evaluateAccess, type WhereClause } from \"../../access/types.js\";\nimport type { User, Request } from \"../../hooks/types.js\";\nimport type { TenantContext } from \"../../auth/rls/tenant.js\";\nimport { hasApiKeyPermission } from \"../../auth/api-key.js\";\nimport { hasPermission } from \"../../auth/rbac/checker.js\";\n\n// ============================================================================\n// Batch Loading — DataLoader-style deferred batcher\n// ============================================================================\n\ninterface LoaderOptions {\n db: BaseAdapter;\n tenantID?: string;\n user?: User;\n}\n\nexport class RelationLoader {\n private db: BaseAdapter;\n private tenantID?: string;\n private user?: User;\n private caches = new Map<string, Map<string, any>>();\n private pending = new Map<string, Set<string>>();\n private waiting = new Map<string, (value: any) => void>();\n private flushScheduled = false;\n\n constructor(opts: LoaderOptions) {\n this.db = opts.db;\n this.tenantID = opts.tenantID;\n this.user = opts.user;\n }\n\n private getCacheKey(collection: string): string {\n return collection;\n }\n\n async load(collection: string, id: string): Promise<any | undefined> {\n const key = this.getCacheKey(collection);\n let cache = this.caches.get(key);\n if (!cache) {\n cache = new Map();\n this.caches.set(key, cache);\n }\n if (cache.has(id)) {\n return cache.get(id);\n }\n\n let pendingSet = this.pending.get(key);\n if (!pendingSet) {\n pendingSet = new Set();\n this.pending.set(key, pendingSet);\n }\n pendingSet.add(id);\n cache.set(id, undefined);\n\n if (!this.flushScheduled) {\n this.flushScheduled = true;\n queueMicrotask(() => {\n this.flushScheduled = false;\n this.flushAll();\n });\n }\n\n return new Promise((resolve) => {\n this.waiting.set(`${key}:${id}`, resolve);\n });\n }\n\n async flushAll(): Promise<void> {\n for (const [key, ids] of this.pending) {\n if (ids.size === 0) continue;\n const cache = this.caches.get(key)!;\n const docs = await this.db.find({\n collection: key,\n where: { id: { in: Array.from(ids) } },\n limit: ids.size,\n tenantID: this.tenantID,\n draft: !!this.user,\n });\n for (const doc of (docs.docs || []) as any[]) {\n if (doc && doc.id) {\n cache.set(doc.id, doc);\n const resolve = this.waiting.get(`${key}:${doc.id}`);\n if (resolve) {\n resolve(doc);\n this.waiting.delete(`${key}:${doc.id}`);\n }\n }\n }\n }\n\n for (const [keyId, resolve] of this.waiting) {\n resolve(undefined);\n }\n this.waiting.clear();\n this.pending.clear();\n }\n\n resolveOne(collection: string, id: string): any | undefined {\n return this.caches.get(this.getCacheKey(collection))?.get(id);\n }\n}\n\n// ============================================================================\n// JSON Scalar — for free-form data (tabs, json, richtext, blocks)\n// ============================================================================\n\nconst GraphQLJSON = new GraphQLScalarType({\n name: \"JSON\",\n description: \"Arbitrary JSON value\",\n serialize(value: any): any {\n return value;\n },\n parseValue(value: any): any {\n return value;\n },\n parseLiteral(ast: any): any {\n switch (ast.kind) {\n case Kind.STRING: return ast.value;\n case Kind.INT:\n case Kind.FLOAT: return parseFloat(ast.value);\n case Kind.BOOLEAN: return ast.value;\n case Kind.OBJECT: {\n const obj: any = {};\n for (const field of ast.fields) {\n obj[field.name.value] = GraphQLJSON.parseLiteral(field.value);\n }\n return obj;\n }\n case Kind.LIST: return ast.values.map((v: any) => GraphQLJSON.parseLiteral(v));\n case Kind.NULL: return null;\n default: return null;\n }\n },\n});\n\n// ============================================================================\n// GraphQL Context — passed through Yoga/execute contextValue per request\n// ============================================================================\n\nexport interface GraphQLContext {\n db: BaseAdapter;\n registry: Registry;\n user?: User;\n req?: Request;\n tenantID?: string;\n apiKey?: any;\n relationLoader: RelationLoader;\n}\n\n// ============================================================================\n// Depth Limiting — prevents runaway deeply-nested queries\n// ============================================================================\n\nexport function depthLimit(maxDepth: number) {\n return (validationContext: any) => {\n let depth = 0;\n return {\n Field() {\n depth++;\n if (depth > maxDepth) {\n validationContext.reportError(\n new Error(`Query exceeds max depth of ${maxDepth}`),\n );\n }\n },\n leaveField() { depth--; },\n };\n };\n}\n\n// ============================================================================\n// Naming Helpers\n// ============================================================================\n\nfunction toPascal(slug: string): string {\n return slug.split(/[-_]/).map(s => s.charAt(0).toUpperCase() + s.slice(1)).join('');\n}\n\nfunction toCamel(slug: string): string {\n const p = toPascal(slug);\n return p.charAt(0).toLowerCase() + p.slice(1);\n}\n\nfunction toSingular(slug: string): string {\n return slug.endsWith('s') && slug.length > 1 ? slug.slice(0, -1) : slug;\n}\n\n// ============================================================================\n// GraphQL Error Helpers\n// ============================================================================\n\nfunction gqlError(message: string, code: string): Error {\n const err = new Error(message);\n (err as any).extensions = { code };\n return err;\n}\n\n// ============================================================================\n// Access Control Helper\n// ============================================================================\n\nasync function checkGraphQLAccess(\n collection: { access?: any; slug: string },\n operation: \"read\" | \"create\" | \"update\" | \"delete\",\n context: { user?: User; req?: Request; tenantID?: string; apiKey?: any },\n): Promise<{ allowed: boolean; extraWhere?: WhereClause }> {\n const accessRule = collection.access?.[operation];\n\n // API key authentication — the key's own permissions govern access\n if (context.apiKey) {\n if (context.apiKey.permissions?.length > 0) {\n const resource = collection.slug;\n const action = operation === \"read\" ? \"read\" : operation === \"create\" ? \"create\" : \"update\";\n const permission = `${resource}:${action}`;\n if (\n !hasApiKeyPermission(context.apiKey.permissions, permission) &&\n !hasApiKeyPermission(context.apiKey.permissions, `${resource}:admin`)\n ) {\n return { allowed: false };\n }\n return { allowed: true };\n }\n // Unrestricted key (no explicit permissions) — check accessRule if present, otherwise allow\n if (accessRule) {\n const result = await evaluateAccess(accessRule, {\n req: context.req!,\n user: context.user,\n tenantID: context.tenantID,\n });\n if (typeof result === \"boolean\") {\n return { allowed: result };\n }\n return { allowed: true, extraWhere: result };\n }\n return { allowed: true };\n }\n\n // RBAC check for authenticated users (no API key)\n if (context.user) {\n const resource = collection.slug;\n const action = operation === \"read\" ? \"read\" : operation === \"create\" ? \"create\" : operation === \"update\" ? \"update\" : \"delete\";\n const permission = `${resource}:${action}`;\n const userHasPermission = hasPermission(\n { id: context.user.id, email: context.user.email, role: context.user.role } as any,\n permission,\n );\n if (!userHasPermission && !hasPermission(\n { id: context.user.id, email: context.user.email, role: context.user.role } as any,\n `${resource}:admin`,\n )) {\n if (!accessRule) {\n return { allowed: false };\n }\n }\n }\n\n if (!accessRule) {\n if (!context.user) {\n return { allowed: false };\n }\n return { allowed: true };\n }\n\n const result = await evaluateAccess(accessRule, {\n req: context.req!,\n user: context.user,\n tenantID: context.tenantID,\n });\n\n if (typeof result === \"boolean\") {\n return { allowed: result };\n }\n\n return { allowed: true, extraWhere: result };\n}\n\nasync function checkGlobalAccess(\n global: { access?: any; slug?: string },\n operation: \"read\" | \"update\",\n context: { user?: User; req?: Request; tenantID?: string; apiKey?: any },\n): Promise<{ allowed: boolean }> {\n const accessRule = global.access?.[operation];\n\n // API key authentication — the key's own permissions govern access\n if (context.apiKey) {\n if (context.apiKey.permissions?.length > 0) {\n const resource = global.slug;\n const permission = `${resource}:${operation}`;\n if (\n !hasApiKeyPermission(context.apiKey.permissions, permission) &&\n !hasApiKeyPermission(context.apiKey.permissions, `${resource}:admin`) &&\n !hasApiKeyPermission(context.apiKey.permissions, `${resource}:*`)\n ) {\n return { allowed: false };\n }\n return { allowed: true };\n }\n if (accessRule) {\n const result = await evaluateAccess(accessRule, {\n req: context.req!,\n user: context.user,\n tenantID: context.tenantID,\n });\n return { allowed: typeof result === \"boolean\" ? result : true };\n }\n return { allowed: true };\n }\n\n if (!accessRule) {\n if (!context.user) {\n return { allowed: false };\n }\n const userRole = context.user.role;\n if (userRole === \"super_admin\" || userRole === \"admin\") {\n return { allowed: true };\n }\n return { allowed: false };\n }\n\n const result = await evaluateAccess(accessRule, {\n req: context.req!,\n user: context.user,\n tenantID: context.tenantID,\n });\n\n if (typeof result === \"boolean\") {\n return { allowed: result };\n }\n\n return { allowed: true };\n}\n\n// ============================================================================\n// Media URL Helpers\n// ============================================================================\n\nfunction resolveMediaUrl(url: string | null | undefined, origin?: string): string | null {\n if (!url) return null;\n if (url.startsWith(\"http://\") || url.startsWith(\"https://\") || url.startsWith(\"blob:\") || url.startsWith(\"data:\")) return url;\n const base = (process.env.KYRO_BASE_URL || origin || \"http://localhost:4321\").replace(/\\/+$/, \"\");\n return `${base}${url.startsWith(\"/\") ? \"\" : \"/\"}${url}`;\n}\n\nfunction processMediaDoc(doc: any, origin?: string): any {\n if (!doc) return doc;\n if (doc.url) doc.url = resolveMediaUrl(doc.url, origin);\n if (doc.thumbnailUrl) doc.thumbnailUrl = resolveMediaUrl(doc.thumbnailUrl, origin);\n return doc;\n}\n\n// ============================================================================\n// Field → GraphQL Type Mapping\n// ============================================================================\n\nfunction fieldToGraphQLType(\n field: Field,\n registry: Registry,\n collectionTypes?: Record<string, GraphQLObjectType>,\n isInputType = false,\n): GraphQLType {\n switch (field.type) {\n case \"text\":\n case \"email\":\n case \"password\":\n case \"textarea\":\n case \"color\":\n case \"code\":\n case \"markdown\":\n case \"date\":\n case \"select\":\n case \"radio\":\n return GraphQLString;\n case \"upload\": {\n const uploadField = field as any;\n if (isInputType) {\n return uploadField.hasMany ? new GraphQLList(GraphQLString) : GraphQLString;\n }\n if (uploadField.relationTo && collectionTypes?.[uploadField.relationTo]) {\n const refType = collectionTypes[uploadField.relationTo];\n return uploadField.hasMany ? new GraphQLList(refType) : refType;\n }\n return GraphQLJSON;\n }\n case \"image\": {\n if (isInputType) return GraphQLString;\n const imageField = field as any;\n if (imageField.relationTo && collectionTypes?.[imageField.relationTo]) {\n return collectionTypes[imageField.relationTo];\n }\n return GraphQLJSON;\n }\n case \"number\":\n return field.integer ? GraphQLInt : GraphQLFloat;\n case \"checkbox\":\n return GraphQLBoolean;\n case \"json\":\n case \"richtext\":\n case \"blocks\":\n case \"tabs\":\n return isInputType ? GraphQLJSON : GraphQLJSON;\n case \"relationship\":\n if (typeof field.relationTo === \"string\") {\n if (isInputType) {\n return field.hasMany ? new GraphQLList(GraphQLString) : GraphQLString;\n }\n if (collectionTypes?.[field.relationTo]) {\n return field.hasMany ? new GraphQLList(collectionTypes[field.relationTo]) : collectionTypes[field.relationTo];\n }\n const relatedCollection = registry.getCollection(field.relationTo);\n if (relatedCollection) {\n return new GraphQLObjectType({\n name: `${toPascal(field.relationTo)}Ref`,\n fields: () => ({\n id: { type: GraphQLString },\n ...buildFieldsFromCollection(relatedCollection, registry, collectionTypes),\n }),\n });\n }\n }\n return GraphQLString;\n case \"array\":\n return new GraphQLList(GraphQLString);\n case \"group\":\n return isInputType ? GraphQLJSON : GraphQLJSON;\n default:\n return GraphQLString;\n }\n}\n\nfunction buildFieldsFromCollection(\n config: CollectionConfig,\n registry: Registry,\n collectionTypes?: Record<string, GraphQLObjectType>,\n): Record<string, GraphQLFieldConfig<any, any>> {\n const fields: Record<string, GraphQLFieldConfig<any, any>> = {};\n\n for (const field of config.fields) {\n if (field.name && field.admin?.hidden !== true) {\n const fieldConfig = buildFieldConfig(field, registry, collectionTypes);\n if (fieldConfig) {\n fields[field.name] = fieldConfig;\n }\n }\n }\n\n return fields;\n}\n\n// ============================================================================\n// Field Config Builder — builds GraphQL field configs with custom resolvers\n// ============================================================================\n\nfunction buildFieldConfig(\n field: Field,\n registry: Registry,\n collectionTypes?: Record<string, any>,\n): GraphQLFieldConfig<any, any> | null {\n if (!field.name) return null;\n const deprecationReason = (field as any).deprecated || undefined;\n if (field.type === \"upload\") {\n const gqlType = fieldToGraphQLType(field, registry, collectionTypes, false) as GraphQLOutputType;\n const uploadField = field as any;\n return {\n type: field.required ? new GraphQLNonNull(gqlType) : gqlType,\n description: field.admin?.description || field.label,\n deprecationReason,\n resolve: async (source: any, args: any, ctx: any) => {\n const loader: RelationLoader | undefined = ctx?.relationLoader;\n const value = source?.[uploadField.name];\n const origin = ctx?.req?.url ? new URL(ctx.req.url).origin : undefined;\n if (!value) return null;\n if (uploadField.hasMany) {\n const items: any[] = Array.isArray(value) ? value : [];\n return Promise.all(items.map(async (item: any) => {\n const id = typeof item === \"string\" ? item : item?.id;\n if (!id) return processMediaDoc(item, origin);\n if (typeof item === \"object\" && item?.url) return processMediaDoc(item, origin);\n if (loader) {\n const cached = loader.resolveOne(uploadField.relationTo, id);\n if (cached) return processMediaDoc(cached, origin);\n const loaded = await loader.load(uploadField.relationTo, id);\n if (loaded) return processMediaDoc(loaded, origin);\n }\n return { id };\n }));\n }\n const id = typeof value === \"string\" ? value : value?.id;\n if (!id) return processMediaDoc(value, origin);\n if (typeof value === \"object\" && value?.url) return processMediaDoc(value, origin);\n if (loader) {\n const cached = loader.resolveOne(uploadField.relationTo, id);\n if (cached) return processMediaDoc(cached, origin);\n const loaded = await loader.load(uploadField.relationTo, id);\n if (loaded) return processMediaDoc(loaded, origin);\n }\n return { id };\n },\n };\n }\n if (field.type === \"relationship\" && !(field as any).hasMany) {\n const gqlType = fieldToGraphQLType(field, registry, collectionTypes, false) as GraphQLOutputType;\n return {\n type: field.required ? new GraphQLNonNull(gqlType) : gqlType,\n description: field.admin?.description || field.label,\n deprecationReason,\n resolve: async (source: any, args: any, ctx: any) => {\n const loader: RelationLoader | undefined = ctx?.relationLoader;\n const relField = field as any;\n const id = source?.[relField.name];\n if (!id) return null;\n if (loader && typeof id === \"string\") {\n const cached = loader.resolveOne(relField.relationTo, id);\n if (cached) return cached;\n const loaded = await loader.load(relField.relationTo, id);\n if (loaded) return loaded;\n }\n return { id };\n },\n };\n }\n if (field.type === \"relationship\" && (field as any).hasMany) {\n const gqlType = fieldToGraphQLType(field, registry, collectionTypes, false) as GraphQLOutputType;\n return {\n type: gqlType,\n description: field.admin?.description || field.label,\n deprecationReason,\n resolve: async (source: any, args: any, ctx: any) => {\n const loader: RelationLoader | undefined = ctx?.relationLoader;\n const relField = field as any;\n const ids: string[] = source?.[relField.name] || [];\n if (!ids.length) return [];\n if (loader) {\n const results: any[] = [];\n for (const id of ids) {\n const cached = loader.resolveOne(relField.relationTo, id);\n if (cached) results.push(cached);\n else {\n const loaded = await loader.load(relField.relationTo, id);\n results.push(loaded || { id });\n }\n }\n return results;\n }\n return ids.map((id: string) => ({ id }));\n },\n };\n }\n // Default: build a simple field config without custom resolver\n const gqlType = fieldToGraphQLType(field, registry, collectionTypes, false) as GraphQLOutputType;\n return {\n type: field.required ? new GraphQLNonNull(gqlType) : gqlType,\n description: field.admin?.description || field.label,\n deprecationReason,\n };\n}\n\n// ============================================================================\n// GraphQL Schema Builder\n// ============================================================================\n\nexport interface GraphQLSchemaOptions {\n registry: Registry;\n db: BaseAdapter;\n user?: User;\n req?: Request;\n tenantID?: string;\n apiKey?: any;\n settings?: Record<string, any>;\n}\n\nexport function buildGraphQLSchema(\n options: GraphQLSchemaOptions,\n): GraphQLSchema {\n const { registry, db, user, req, tenantID, apiKey, settings } = options;\n\n // Check if GraphQL is disabled in settings\n const apiAccess = settings?.access?.apiAccess;\n if (apiAccess?.graphqlEnabled === false) {\n throw new Error(\"GraphQL API is disabled\");\n }\n\n const collections = registry.getCollections();\n const globals = registry.getGlobals();\n\n // Build collection types\n const collectionTypes: Record<string, GraphQLObjectType> = {};\n const collectionInputTypes: Record<string, GraphQLInputObjectType> = {};\n\n for (const collection of collections) {\n // Output type\n collectionTypes[collection.slug] = new GraphQLObjectType({\n name: toPascal(toSingular(collection.slug)),\n fields: () => ({\n id: { type: GraphQLString },\n ...buildFieldsFromCollection(collection, registry, collectionTypes),\n ...(collection.timestamps\n ? {\n createdAt: { type: GraphQLString },\n updatedAt: { type: GraphQLString },\n }\n : {}),\n ...(collection.tenantScoped\n ? {\n tenantID: { type: GraphQLString },\n }\n : {}),\n }),\n });\n\n // Input type for create/update\n const inputFields: Record<string, { type: GraphQLType }> = {};\n for (const field of collection.fields) {\n if (field.name && field.name !== \"id\") {\n inputFields[field.name] = {\n type: fieldToGraphQLType(field, registry, collectionTypes, true) as any,\n };\n }\n }\n\n collectionInputTypes[collection.slug] = new GraphQLInputObjectType({\n name: `${toPascal(toSingular(collection.slug))}Input`,\n fields: () => inputFields as any,\n });\n }\n\n // Build global types and input types\n const globalTypes: Record<string, GraphQLObjectType> = {};\n const globalInputTypes: Record<string, GraphQLInputObjectType> = {};\n\n for (const global of globals) {\n globalTypes[global.slug] = new GraphQLObjectType({\n name: `${toPascal(global.slug)}Global`,\n fields: () => ({\n id: { type: GraphQLString },\n ...buildFieldsFromCollection(\n { slug: global.slug, fields: global.fields } as CollectionConfig,\n registry,\n collectionTypes,\n ),\n }),\n });\n\n globalInputTypes[global.slug] = new GraphQLInputObjectType({\n name: `${toPascal(global.slug)}GlobalInput`,\n fields: () => {\n const inputFields: Record<string, { type: GraphQLType }> = {};\n for (const field of global.fields) {\n if (field.name && field.name !== \"id\") {\n inputFields[field.name] = {\n type: fieldToGraphQLType(field, registry, collectionTypes, true) as any,\n };\n }\n }\n return inputFields as any;\n },\n });\n }\n\n // Build query type\n const queryFields: Record<string, GraphQLFieldConfig<any, any>> = {};\n\n // List queries for each collection\n for (const collection of collections) {\n const type = collectionTypes[collection.slug];\n if (!type) continue;\n\n // FindMany query\n queryFields[toCamel(collection.slug)] = {\n type: new GraphQLObjectType({\n name: `${toPascal(toSingular(collection.slug))}FindResult`,\n fields: {\n docs: { type: new GraphQLList(type) },\n totalDocs: { type: GraphQLInt },\n page: { type: GraphQLInt },\n totalPages: { type: GraphQLInt },\n hasNextPage: { type: GraphQLBoolean },\n hasPrevPage: { type: GraphQLBoolean },\n },\n }),\n args: {\n where: { type: GraphQLString },\n sort: { type: GraphQLString },\n limit: { type: GraphQLInt },\n page: { type: GraphQLInt },\n draft: { type: GraphQLBoolean },\n },\n resolve: async (_: any, args: any, context: any) => {\n const access = await checkGraphQLAccess(collection, \"read\", {\n user: context.user,\n req: context.req,\n tenantID: context.tenantID,\n apiKey: context.apiKey,\n });\n if (!access.allowed) {\n throw new Error(\"Access denied\");\n }\n\n if (context.tenantID) {\n db.setTenantContext({ tenantId: context.tenantID, userId: context.user?.id ?? '', role: context.user?.role, isSuperAdmin: context.user?.role === 'super_admin' });\n }\n\n let where = {};\n if (args.where) {\n try {\n where = JSON.parse(args.where);\n } catch {}\n }\n\n if (access.extraWhere) {\n where = { ...where, ...access.extraWhere };\n }\n\n const isDraft = args.draft ?? !!context.user;\n\n return db.find({\n collection: collection.slug,\n where,\n sort: args.sort,\n limit: args.limit || 10,\n page: args.page || 1,\n tenantID: context.tenantID,\n draft: isDraft,\n });\n },\n };\n\n // FindByID query\n queryFields[toCamel(toSingular(collection.slug))] = {\n type,\n args: {\n id: { type: GraphQLString },\n slug: { type: GraphQLString },\n draft: { type: GraphQLBoolean },\n },\n resolve: async (_: any, args: any, context: any) => {\n if (!args.id && !args.slug) {\n throw new Error(\"Either id or slug is required\");\n }\n\n const access = await checkGraphQLAccess(collection, \"read\", {\n user: context.user,\n req: context.req,\n tenantID: context.tenantID,\n apiKey: context.apiKey,\n });\n if (!access.allowed) {\n throw new Error(\"Access denied\");\n }\n\n if (context.tenantID) {\n db.setTenantContext({ tenantId: context.tenantID, userId: context.user?.id ?? '', role: context.user?.role, isSuperAdmin: context.user?.role === 'super_admin' });\n }\n\n const isDraft = args.draft ?? !!context.user;\n\n if (args.id) {\n return db.findByID({\n collection: collection.slug,\n id: args.id,\n tenantID: context.tenantID,\n draft: isDraft,\n });\n }\n\n const result = await db.find({\n collection: collection.slug,\n where: { slug: { equals: args.slug } },\n limit: 1,\n page: 1,\n tenantID: context.tenantID,\n draft: isDraft,\n });\n return result.docs?.[0] || null;\n },\n };\n\n // Count query\n queryFields[`count${toPascal(collection.slug)}`] = {\n type: new GraphQLObjectType({\n name: `${toPascal(toSingular(collection.slug))}Count`,\n fields: {\n totalDocs: { type: GraphQLInt },\n },\n }),\n args: {\n where: { type: GraphQLString },\n },\n resolve: async (_: any, args: any, context: any) => {\n const access = await checkGraphQLAccess(collection, \"read\", {\n user: context.user,\n req: context.req,\n tenantID: context.tenantID,\n apiKey: context.apiKey,\n });\n if (!access.allowed) {\n return { totalDocs: 0 };\n }\n let where = {};\n if (args.where) {\n try {\n where = JSON.parse(args.where);\n } catch {}\n }\n const count = await db.count({\n collection: collection.slug,\n where,\n tenantID: context.tenantID,\n });\n return { totalDocs: count };\n },\n };\n }\n\n // Global queries\n for (const global of globals) {\n const type = globalTypes[global.slug];\n if (!type) continue;\n\n queryFields[toCamel(toSingular(global.slug))] = {\n type,\n resolve: async (_: any, args: any, context: any) => {\n const access = await checkGlobalAccess(global, \"read\", {\n user: context.user,\n req: context.req,\n tenantID: context.tenantID,\n apiKey: context.apiKey,\n });\n if (!access.allowed) {\n throw new Error(\"Access denied: cannot read global\");\n }\n if (context.tenantID) {\n db.setTenantContext({ tenantId: context.tenantID, userId: context.user?.id ?? '', role: context.user?.role, isSuperAdmin: context.user?.role === 'super_admin' });\n }\n return db.findOne({\n collection: `_globals_${global.slug}`,\n where: {},\n tenantID: context.tenantID,\n });\n },\n };\n }\n\n const Query = new GraphQLObjectType({\n name: \"Query\",\n fields: queryFields,\n });\n\n // Build mutation type\n const mutationFields: Record<string, GraphQLFieldConfig<any, any>> = {};\n\n for (const collection of collections) {\n const type = collectionTypes[collection.slug];\n const inputType = collectionInputTypes[collection.slug];\n if (!type || !inputType) continue;\n\n // Create mutation\n mutationFields[`create${toPascal(toSingular(collection.slug))}`] = {\n type: new GraphQLObjectType({\n name: `${toPascal(toSingular(collection.slug))}CreateResult`,\n fields: {\n doc: { type },\n message: { type: GraphQLString },\n },\n }),\n args: {\n data: { type: new GraphQLNonNull(inputType) },\n },\n resolve: async (_: any, args: any, context: any) => {\n const access = await checkGraphQLAccess(collection, \"create\", {\n user: context.user,\n req: context.req,\n tenantID: context.tenantID,\n apiKey: context.apiKey,\n });\n if (!access.allowed) {\n throw new Error(\"Access denied: cannot create\");\n }\n if (context.tenantID) {\n db.setTenantContext({ tenantId: context.tenantID, userId: context.user?.id ?? '', role: context.user?.role, isSuperAdmin: context.user?.role === 'super_admin' });\n }\n const schema = registry.getCreateZodSchema(collection.slug);\n\n const validated = schema.parse(args.data);\n\n const doc = await db.create({\n collection: collection.slug,\n data: validated,\n tenantID: context.tenantID,\n });\n\n return { doc, message: \"Created successfully\" };\n },\n };\n\n // Update mutation\n mutationFields[`update${toPascal(toSingular(collection.slug))}`] = {\n type: new GraphQLObjectType({\n name: `${toPascal(toSingular(collection.slug))}UpdateResult`,\n fields: {\n doc: { type },\n message: { type: GraphQLString },\n },\n }),\n args: {\n id: { type: new GraphQLNonNull(GraphQLString) },\n data: { type: new GraphQLNonNull(inputType) },\n baseUpdatedAt: { type: GraphQLString },\n },\n resolve: async (_: any, args: any, context: any) => {\n const access = await checkGraphQLAccess(collection, \"update\", {\n user: context.user,\n req: context.req,\n tenantID: context.tenantID,\n apiKey: context.apiKey,\n });\n if (!access.allowed) {\n throw new Error(\"Access denied: cannot update\");\n }\n if (context.tenantID) {\n db.setTenantContext({ tenantId: context.tenantID, userId: context.user?.id ?? '', role: context.user?.role, isSuperAdmin: context.user?.role === 'super_admin' });\n }\n\n // Revision conflict detection\n if (args.baseUpdatedAt) {\n const originalDoc = await db.findByID<Record<string, any>>({\n collection: collection.slug,\n id: args.id,\n tenantID: context.tenantID,\n draft: true,\n });\n if (originalDoc && originalDoc.updatedAt && args.baseUpdatedAt !== originalDoc.updatedAt) {\n throw new Error(`Revision conflict: document has changed since ${args.baseUpdatedAt}. Current updatedAt: ${originalDoc.updatedAt}`);\n }\n }\n\n const schema = registry.getUpdateZodSchema(collection.slug);\n\n const validated = schema.parse(args.data);\n\n const doc = await db.update({\n collection: collection.slug,\n id: args.id,\n data: validated,\n tenantID: context.tenantID,\n });\n\n return { doc, message: \"Updated successfully\" };\n },\n };\n\n // Delete mutation\n mutationFields[`delete${toPascal(toSingular(collection.slug))}`] = {\n type: new GraphQLObjectType({\n name: `${toPascal(toSingular(collection.slug))}DeleteResult`,\n fields: {\n doc: { type },\n message: { type: GraphQLString },\n },\n }),\n args: {\n id: { type: new GraphQLNonNull(GraphQLString) },\n },\n resolve: async (_: any, args: any, context: any) => {\n const access = await checkGraphQLAccess(collection, \"delete\", {\n user: context.user,\n req: context.req,\n tenantID: context.tenantID,\n apiKey: context.apiKey,\n });\n if (!access.allowed) {\n throw new Error(\"Access denied: cannot delete\");\n }\n if (context.tenantID) {\n db.setTenantContext({ tenantId: context.tenantID, userId: context.user?.id ?? '', role: context.user?.role, isSuperAdmin: context.user?.role === 'super_admin' });\n }\n const doc = await db.delete({\n collection: collection.slug,\n id: args.id,\n tenantID: context.tenantID,\n });\n\n return { doc, message: \"Deleted successfully\" };\n },\n };\n }\n\n // Global mutations\n for (const global of globals) {\n const inputType = globalInputTypes[global.slug];\n if (!inputType) continue;\n\n mutationFields[`update${toPascal(global.slug)}`] = {\n type: new GraphQLObjectType({\n name: `${toPascal(global.slug)}UpdateResult`,\n fields: {\n doc: { type: globalTypes[global.slug] || GraphQLString },\n message: { type: GraphQLString },\n },\n }),\n args: {\n data: { type: new GraphQLNonNull(inputType) },\n },\n resolve: async (_: any, args: any, context: any) => {\n const access = await checkGlobalAccess(global, \"update\", {\n user: context.user,\n req: context.req,\n tenantID: context.tenantID,\n apiKey: context.apiKey,\n });\n if (!access.allowed) {\n throw new Error(\"Access denied: cannot update global\");\n }\n if (context.tenantID) {\n db.setTenantContext({ tenantId: context.tenantID, userId: context.user?.id ?? '', role: context.user?.role, isSuperAdmin: context.user?.role === 'super_admin' });\n }\n\n const doc = await db.findOne({\n collection: `_globals_${global.slug}`,\n where: {},\n tenantID: context.tenantID,\n });\n\n let result;\n if (doc) {\n result = await db.update({\n collection: `_globals_${global.slug}`,\n id: doc.id,\n data: args.data,\n tenantID: context.tenantID,\n });\n } else {\n result = await db.create({\n collection: `_globals_${global.slug}`,\n data: args.data,\n tenantID: context.tenantID,\n });\n }\n\n return { doc: result, message: \"Updated successfully\" };\n },\n };\n }\n\n const Mutation = new GraphQLObjectType({\n name: \"Mutation\",\n fields: mutationFields,\n });\n\n return new GraphQLSchema({\n query: Query,\n mutation: Mutation,\n });\n}\n\n// ============================================================================\n// Factory\n// ============================================================================\n\nexport function createGraphQLSchema(\n registry: Registry,\n db: BaseAdapter,\n options?: {\n user?: User;\n req?: Request;\n tenantID?: string;\n apiKey?: any;\n },\n): GraphQLSchema {\n return buildGraphQLSchema({\n registry,\n db,\n user: options?.user,\n req: options?.req,\n tenantID: options?.tenantID,\n apiKey: options?.apiKey,\n });\n}\n"]}
@@ -1,259 +0,0 @@
1
- 'use strict';
2
-
3
- // src/styling/index.ts
4
- var CSSGenerator = class {
5
- constructor(config) {
6
- this.config = config;
7
- }
8
- config;
9
- css = [];
10
- addRule(selector, properties) {
11
- const props = Object.entries(properties).map(([k, v]) => ` ${k}: ${v};`).join("\n");
12
- this.css.push(`${selector} {
13
- ${props}
14
- }`);
15
- return this;
16
- }
17
- addMediaQuery(breakpoint, rules) {
18
- this.css.push(`@media (min-width: ${breakpoint}) {
19
- ${rules.join("\n ")}
20
- }`);
21
- return this;
22
- }
23
- generate() {
24
- return this.css.join("\n\n");
25
- }
26
- };
27
- function generateTailwindConfig(theme) {
28
- return {
29
- theme: {
30
- extend: {
31
- colors: theme.colors || {},
32
- fontFamily: theme.fonts || {},
33
- spacing: theme.spacing || {},
34
- borderRadius: theme.borderRadius || {},
35
- boxShadow: theme.shadows || {},
36
- screens: theme.breakpoints || {}
37
- }
38
- }
39
- };
40
- }
41
- var defaultLightTheme = {
42
- colors: {
43
- primary: "#3b82f6",
44
- secondary: "#6366f1",
45
- accent: "#ec4899",
46
- background: "#ffffff",
47
- surface: "#f9fafb",
48
- text: "#111827",
49
- textMuted: "#6b7280",
50
- border: "#e5e7eb",
51
- error: "#ef4444",
52
- warning: "#f59e0b",
53
- success: "#10b981",
54
- info: "#3b82f6"
55
- },
56
- fonts: {
57
- sans: "system-ui, -apple-system, sans-serif",
58
- serif: "Georgia, serif",
59
- mono: "Menlo, monospace"
60
- },
61
- spacing: {
62
- xs: "0.25rem",
63
- sm: "0.5rem",
64
- md: "1rem",
65
- lg: "1.5rem",
66
- xl: "2rem",
67
- "2xl": "3rem",
68
- "3xl": "4rem"
69
- },
70
- borderRadius: {
71
- sm: "0.125rem",
72
- md: "0.375rem",
73
- lg: "0.5rem",
74
- xl: "0.75rem",
75
- full: "9999px"
76
- },
77
- shadows: {
78
- sm: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
79
- md: "0 4px 6px -1px rgb(0 0 0 / 0.1)",
80
- lg: "0 10px 15px -3px rgb(0 0 0 / 0.1)",
81
- xl: "0 20px 25px -5px rgb(0 0 0 / 0.1)"
82
- }
83
- };
84
- var defaultDarkTheme = {
85
- colors: {
86
- primary: "#60a5fa",
87
- secondary: "#818cf8",
88
- accent: "#f472b6",
89
- background: "#111827",
90
- surface: "#1f2937",
91
- text: "#f9fafb",
92
- textMuted: "#9ca3af",
93
- border: "#374151",
94
- error: "#f87171",
95
- warning: "#fbbf24",
96
- success: "#34d399",
97
- info: "#60a5fa"
98
- },
99
- fonts: defaultLightTheme.fonts,
100
- spacing: defaultLightTheme.spacing,
101
- borderRadius: defaultLightTheme.borderRadius,
102
- shadows: {
103
- sm: "0 1px 2px 0 rgb(0 0 0 / 0.3)",
104
- md: "0 4px 6px -1px rgb(0 0 0 / 0.4)",
105
- lg: "0 10px 15px -3px rgb(0 0 0 / 0.5)",
106
- xl: "0 20px 25px -5px rgb(0 0 0 / 0.6)"
107
- }
108
- };
109
- var ecommerce2026Theme = {
110
- colors: {
111
- primary: "#FF6B35",
112
- secondary: "#1A1A2E",
113
- accent: "#16C79A",
114
- background: "#FFFFFF",
115
- surface: "#F8F9FA",
116
- text: "#1A1A2E",
117
- textMuted: "#6B7280",
118
- border: "#E5E7EB",
119
- error: "#EF4444",
120
- warning: "#F59E0B",
121
- success: "#16C79A",
122
- info: "#3B82F6"
123
- },
124
- fonts: {
125
- sans: '"Inter", "Satoshi", system-ui, sans-serif',
126
- serif: '"Playfair Display", Georgia, serif',
127
- mono: '"JetBrains Mono", monospace'
128
- },
129
- spacing: {
130
- xs: "0.125rem",
131
- sm: "0.25rem",
132
- md: "0.5rem",
133
- lg: "1rem",
134
- xl: "1.5rem",
135
- "2xl": "2rem",
136
- "3xl": "3rem",
137
- "4xl": "4rem"
138
- },
139
- borderRadius: {
140
- sm: "0",
141
- md: "0",
142
- lg: "0",
143
- xl: "0",
144
- full: "9999px"
145
- },
146
- shadows: {
147
- sm: "0 1px 2px rgba(0,0,0,0.05)",
148
- md: "0 4px 6px rgba(0,0,0,0.07)",
149
- lg: "0 10px 15px rgba(0,0,0,0.1)",
150
- xl: "0 20px 25px rgba(0,0,0,0.15)"
151
- }
152
- };
153
- function generateCSSVariables(theme) {
154
- const variables = [];
155
- if (theme.colors) {
156
- for (const [key, value] of Object.entries(theme.colors)) {
157
- variables.push(` --color-${key}: ${value};`);
158
- }
159
- }
160
- if (theme.fonts) {
161
- for (const [key, value] of Object.entries(theme.fonts)) {
162
- variables.push(` --font-${key}: ${value};`);
163
- }
164
- }
165
- if (theme.spacing) {
166
- for (const [key, value] of Object.entries(theme.spacing)) {
167
- variables.push(` --spacing-${key}: ${value};`);
168
- }
169
- }
170
- if (theme.borderRadius) {
171
- for (const [key, value] of Object.entries(theme.borderRadius)) {
172
- variables.push(` --radius-${key}: ${value};`);
173
- }
174
- }
175
- if (theme.shadows) {
176
- for (const [key, value] of Object.entries(theme.shadows)) {
177
- variables.push(` --shadow-${key}: ${value};`);
178
- }
179
- }
180
- return `:root {
181
- ${variables.join("\n")}
182
- }`;
183
- }
184
- function createAdminStyling(config) {
185
- const cssVars = generateCSSVariables(config.theme || defaultLightTheme);
186
- const componentStyles = [];
187
- if (config.componentOverrides) {
188
- for (const [selector, styles] of Object.entries(config.componentOverrides)) {
189
- const props = Object.entries(styles).map(([k, v]) => ` ${k}: ${v};`).join("\n");
190
- componentStyles.push(`${selector} {
191
- ${props}
192
- }`);
193
- }
194
- }
195
- return `
196
- ${cssVars}
197
- ${config.customStyles || ""}
198
- ${componentStyles.join("\n")}
199
- `;
200
- }
201
- var defaultFieldStyling = {
202
- text: {
203
- wrapper: { marginBottom: "var(--spacing-md)" },
204
- label: {
205
- display: "block",
206
- marginBottom: "var(--spacing-xs)",
207
- fontWeight: "500",
208
- color: "var(--color-text)"
209
- },
210
- input: {
211
- width: "100%",
212
- padding: "var(--spacing-sm) var(--spacing-md)",
213
- border: "1px solid var(--color-border)",
214
- borderRadius: "var(--radius-md)",
215
- fontSize: "0.875rem"
216
- },
217
- error: {
218
- color: "var(--color-error)",
219
- fontSize: "0.75rem",
220
- marginTop: "var(--spacing-xs)"
221
- }
222
- },
223
- number: {
224
- wrapper: { marginBottom: "var(--spacing-md)" },
225
- label: { display: "block", marginBottom: "var(--spacing-xs)", fontWeight: "500" },
226
- input: {
227
- width: "100%",
228
- padding: "var(--spacing-sm) var(--spacing-md)",
229
- border: "1px solid var(--color-border)",
230
- borderRadius: "var(--radius-md)"
231
- }
232
- },
233
- checkbox: {
234
- wrapper: { display: "flex", alignItems: "center", gap: "var(--spacing-sm)" },
235
- input: { width: "1rem", height: "1rem" },
236
- label: { cursor: "pointer" }
237
- },
238
- select: {
239
- wrapper: { marginBottom: "var(--spacing-md)" },
240
- input: {
241
- width: "100%",
242
- padding: "var(--spacing-sm) var(--spacing-md)",
243
- border: "1px solid var(--color-border)",
244
- borderRadius: "var(--radius-md)",
245
- backgroundColor: "white"
246
- }
247
- }
248
- };
249
-
250
- exports.CSSGenerator = CSSGenerator;
251
- exports.createAdminStyling = createAdminStyling;
252
- exports.defaultDarkTheme = defaultDarkTheme;
253
- exports.defaultFieldStyling = defaultFieldStyling;
254
- exports.defaultLightTheme = defaultLightTheme;
255
- exports.ecommerce2026Theme = ecommerce2026Theme;
256
- exports.generateCSSVariables = generateCSSVariables;
257
- exports.generateTailwindConfig = generateTailwindConfig;
258
- //# sourceMappingURL=chunk-N4H37VN4.cjs.map
259
- //# sourceMappingURL=chunk-N4H37VN4.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/styling/index.ts"],"names":[],"mappings":"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","file":"chunk-N4H37VN4.cjs","sourcesContent":["// ============================================================================\n// Styling System Abstraction\n// ============================================================================\n\nexport type StylingMode = 'css' | 'tailwind' | 'css-in-js' | 'styled-components' | 'vanilla-extract';\n\nexport interface StylingConfig {\n mode: StylingMode;\n theme?: ThemeConfig;\n customProperties?: Record<string, string>;\n}\n\nexport interface ThemeConfig {\n colors?: ThemeColors;\n fonts?: ThemeFonts;\n spacing?: ThemeSpacing;\n borderRadius?: ThemeBorderRadius;\n shadows?: ThemeShadows;\n breakpoints?: Record<string, string>;\n}\n\nexport interface ThemeColors {\n primary?: string;\n secondary?: string;\n accent?: string;\n background?: string;\n surface?: string;\n text?: string;\n textMuted?: string;\n border?: string;\n error?: string;\n warning?: string;\n success?: string;\n info?: string;\n}\n\nexport interface ThemeFonts {\n sans?: string;\n serif?: string;\n mono?: string;\n}\n\nexport interface ThemeSpacing {\n xs?: string;\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n '2xl'?: string;\n '3xl'?: string;\n '4xl'?: string;\n}\n\nexport interface ThemeBorderRadius {\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n full?: string;\n}\n\nexport interface ThemeShadows {\n sm?: string;\n md?: string;\n lg?: string;\n xl?: string;\n}\n\n// ============================================================================\n// CSS Generator\n// ============================================================================\n\nexport class CSSGenerator {\n private css: string[] = [];\n\n constructor(private config: StylingConfig) {}\n\n addRule(selector: string, properties: Record<string, string>): this {\n const props = Object.entries(properties)\n .map(([k, v]) => ` ${k}: ${v};`)\n .join('\\n');\n this.css.push(`${selector} {\\n${props}\\n}`);\n return this;\n }\n\n addMediaQuery(breakpoint: string, rules: string[]): this {\n this.css.push(`@media (min-width: ${breakpoint}) {\\n ${rules.join('\\n ')}\\n}`);\n return this;\n }\n\n generate(): string {\n return this.css.join('\\n\\n');\n }\n}\n\n// ============================================================================\n// Tailwind Config Generator\n// ============================================================================\n\nexport function generateTailwindConfig(theme: ThemeConfig): Record<string, any> {\n return {\n theme: {\n extend: {\n colors: theme.colors || {},\n fontFamily: theme.fonts || {},\n spacing: theme.spacing || {},\n borderRadius: theme.borderRadius || {},\n boxShadow: theme.shadows || {},\n screens: theme.breakpoints || {},\n },\n },\n };\n}\n\n// ============================================================================\n// Default Themes\n// ============================================================================\n\nexport const defaultLightTheme: ThemeConfig = {\n colors: {\n primary: '#3b82f6',\n secondary: '#6366f1',\n accent: '#ec4899',\n background: '#ffffff',\n surface: '#f9fafb',\n text: '#111827',\n textMuted: '#6b7280',\n border: '#e5e7eb',\n error: '#ef4444',\n warning: '#f59e0b',\n success: '#10b981',\n info: '#3b82f6',\n },\n fonts: {\n sans: 'system-ui, -apple-system, sans-serif',\n serif: 'Georgia, serif',\n mono: 'Menlo, monospace',\n },\n spacing: {\n xs: '0.25rem',\n sm: '0.5rem',\n md: '1rem',\n lg: '1.5rem',\n xl: '2rem',\n '2xl': '3rem',\n '3xl': '4rem',\n },\n borderRadius: {\n sm: '0.125rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n full: '9999px',\n },\n shadows: {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.1)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.1)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.1)',\n },\n};\n\nexport const defaultDarkTheme: ThemeConfig = {\n colors: {\n primary: '#60a5fa',\n secondary: '#818cf8',\n accent: '#f472b6',\n background: '#111827',\n surface: '#1f2937',\n text: '#f9fafb',\n textMuted: '#9ca3af',\n border: '#374151',\n error: '#f87171',\n warning: '#fbbf24',\n success: '#34d399',\n info: '#60a5fa',\n },\n fonts: defaultLightTheme.fonts,\n spacing: defaultLightTheme.spacing,\n borderRadius: defaultLightTheme.borderRadius,\n shadows: {\n sm: '0 1px 2px 0 rgb(0 0 0 / 0.3)',\n md: '0 4px 6px -1px rgb(0 0 0 / 0.4)',\n lg: '0 10px 15px -3px rgb(0 0 0 / 0.5)',\n xl: '0 20px 25px -5px rgb(0 0 0 / 0.6)',\n },\n};\n\n// ============================================================================\n// E-Commerce Theme (2026 Design Engine)\n// ============================================================================\n\nexport const ecommerce2026Theme: ThemeConfig = {\n colors: {\n primary: '#FF6B35',\n secondary: '#1A1A2E',\n accent: '#16C79A',\n background: '#FFFFFF',\n surface: '#F8F9FA',\n text: '#1A1A2E',\n textMuted: '#6B7280',\n border: '#E5E7EB',\n error: '#EF4444',\n warning: '#F59E0B',\n success: '#16C79A',\n info: '#3B82F6',\n },\n fonts: {\n sans: '\"Inter\", \"Satoshi\", system-ui, sans-serif',\n serif: '\"Playfair Display\", Georgia, serif',\n mono: '\"JetBrains Mono\", monospace',\n },\n spacing: {\n xs: '0.125rem',\n sm: '0.25rem',\n md: '0.5rem',\n lg: '1rem',\n xl: '1.5rem',\n '2xl': '2rem',\n '3xl': '3rem',\n '4xl': '4rem',\n },\n borderRadius: {\n sm: '0',\n md: '0',\n lg: '0',\n xl: '0',\n full: '9999px',\n },\n shadows: {\n sm: '0 1px 2px rgba(0,0,0,0.05)',\n md: '0 4px 6px rgba(0,0,0,0.07)',\n lg: '0 10px 15px rgba(0,0,0,0.1)',\n xl: '0 20px 25px rgba(0,0,0,0.15)',\n },\n};\n\n// ============================================================================\n// CSS Variables Generator\n// ============================================================================\n\nexport function generateCSSVariables(theme: ThemeConfig): string {\n const variables: string[] = [];\n\n // Colors\n if (theme.colors) {\n for (const [key, value] of Object.entries(theme.colors)) {\n variables.push(` --color-${key}: ${value};`);\n }\n }\n\n // Fonts\n if (theme.fonts) {\n for (const [key, value] of Object.entries(theme.fonts)) {\n variables.push(` --font-${key}: ${value};`);\n }\n }\n\n // Spacing\n if (theme.spacing) {\n for (const [key, value] of Object.entries(theme.spacing)) {\n variables.push(` --spacing-${key}: ${value};`);\n }\n }\n\n // Border Radius\n if (theme.borderRadius) {\n for (const [key, value] of Object.entries(theme.borderRadius)) {\n variables.push(` --radius-${key}: ${value};`);\n }\n }\n\n // Shadows\n if (theme.shadows) {\n for (const [key, value] of Object.entries(theme.shadows)) {\n variables.push(` --shadow-${key}: ${value};`);\n }\n }\n\n return `:root {\\n${variables.join('\\n')}\\n}`;\n}\n\n// ============================================================================\n// Admin Styling Config\n// ============================================================================\n\nexport interface AdminStylingConfig {\n mode: StylingMode;\n theme?: ThemeConfig;\n customStyles?: string;\n componentOverrides?: Record<string, Record<string, string>>;\n}\n\nexport function createAdminStyling(config: AdminStylingConfig): string {\n const cssVars = generateCSSVariables(config.theme || defaultLightTheme);\n const componentStyles: string[] = [];\n\n // Generate component overrides\n if (config.componentOverrides) {\n for (const [selector, styles] of Object.entries(config.componentOverrides)) {\n const props = Object.entries(styles)\n .map(([k, v]) => ` ${k}: ${v};`)\n .join('\\n');\n componentStyles.push(`${selector} {\\n${props}\\n}`);\n }\n }\n\n return `\n ${cssVars}\n ${config.customStyles || ''}\n ${componentStyles.join('\\n')}\n `;\n}\n\n// ============================================================================\n// Field Styling\n// ============================================================================\n\nexport interface FieldStyling {\n wrapper?: Record<string, string>;\n label?: Record<string, string>;\n input?: Record<string, string>;\n error?: Record<string, string>;\n description?: Record<string, string>;\n}\n\nexport const defaultFieldStyling: Record<string, FieldStyling> = {\n text: {\n wrapper: { marginBottom: 'var(--spacing-md)' },\n label: { \n display: 'block', \n marginBottom: 'var(--spacing-xs)',\n fontWeight: '500',\n color: 'var(--color-text)',\n },\n input: {\n width: '100%',\n padding: 'var(--spacing-sm) var(--spacing-md)',\n border: '1px solid var(--color-border)',\n borderRadius: 'var(--radius-md)',\n fontSize: '0.875rem',\n },\n error: {\n color: 'var(--color-error)',\n fontSize: '0.75rem',\n marginTop: 'var(--spacing-xs)',\n },\n },\n number: {\n wrapper: { marginBottom: 'var(--spacing-md)' },\n label: { display: 'block', marginBottom: 'var(--spacing-xs)', fontWeight: '500' },\n input: {\n width: '100%',\n padding: 'var(--spacing-sm) var(--spacing-md)',\n border: '1px solid var(--color-border)',\n borderRadius: 'var(--radius-md)',\n },\n },\n checkbox: {\n wrapper: { display: 'flex', alignItems: 'center', gap: 'var(--spacing-sm)' },\n input: { width: '1rem', height: '1rem' },\n label: { cursor: 'pointer' },\n },\n select: {\n wrapper: { marginBottom: 'var(--spacing-md)' },\n input: {\n width: '100%',\n padding: 'var(--spacing-sm) var(--spacing-md)',\n border: '1px solid var(--color-border)',\n borderRadius: 'var(--radius-md)',\n backgroundColor: 'white',\n },\n },\n};\n"]}