@kyro-cms/core 0.9.4 → 0.9.6
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.
- package/dist/api-handler-graphql.cjs +10 -10
- package/dist/api-handler-graphql.js +6 -6
- package/dist/api-handler-trpc.cjs +8 -8
- package/dist/api-handler-trpc.js +6 -6
- package/dist/api-handler.cjs +9 -9
- package/dist/api-handler.js +6 -6
- package/dist/{chunk-YFAVQQTU.js → chunk-AX2TZRQJ.js} +3 -3
- package/dist/{chunk-YFAVQQTU.js.map → chunk-AX2TZRQJ.js.map} +1 -1
- package/dist/{chunk-5H3MWQJS.js → chunk-CMXVTUYV.js} +12 -12
- package/dist/chunk-CMXVTUYV.js.map +1 -0
- package/dist/{chunk-E2763JUP.cjs → chunk-DRVOUQMT.cjs} +27 -27
- package/dist/chunk-DRVOUQMT.cjs.map +1 -0
- package/dist/{chunk-4M7X5HAB.cjs → chunk-FKKQUMXR.cjs} +109 -3
- package/dist/chunk-FKKQUMXR.cjs.map +1 -0
- package/dist/{chunk-PV2I2KMI.cjs → chunk-HVCUIII2.cjs} +21 -75
- package/dist/chunk-HVCUIII2.cjs.map +1 -0
- package/dist/{chunk-CJONKRHJ.js → chunk-NZEUU7QB.js} +108 -3
- package/dist/chunk-NZEUU7QB.js.map +1 -0
- package/dist/{chunk-NWUEVLQT.cjs → chunk-OZ3CCTTA.cjs} +5 -5
- package/dist/{chunk-NWUEVLQT.cjs.map → chunk-OZ3CCTTA.cjs.map} +1 -1
- package/dist/chunk-PONTBXR5.js +842 -0
- package/dist/chunk-PONTBXR5.js.map +1 -0
- package/dist/{chunk-CNKT4PME.cjs → chunk-QVJNSAQL.cjs} +71 -149
- package/dist/chunk-QVJNSAQL.cjs.map +1 -0
- package/dist/{chunk-OHC6UHFY.js → chunk-QX3WNQ7V.js} +18 -72
- package/dist/chunk-QX3WNQ7V.js.map +1 -0
- package/dist/chunk-RRKCIAPU.cjs +848 -0
- package/dist/chunk-RRKCIAPU.cjs.map +1 -0
- package/dist/{chunk-NI5D3F7H.cjs → chunk-U3VVLYXG.cjs} +55 -7
- package/dist/chunk-U3VVLYXG.cjs.map +1 -0
- package/dist/{chunk-IPTZM3VE.js → chunk-VLK5SJRI.js} +56 -134
- package/dist/chunk-VLK5SJRI.js.map +1 -0
- package/dist/{chunk-NFKRKH3P.js → chunk-X4BPPD6K.js} +52 -4
- package/dist/chunk-X4BPPD6K.js.map +1 -0
- package/dist/graphql/index.cjs +8 -4
- package/dist/graphql/index.d.cts +4 -1
- package/dist/graphql/index.d.ts +4 -1
- package/dist/graphql/index.js +2 -2
- package/dist/index.cjs +59 -59
- package/dist/index.js +7 -7
- package/dist/integration.cjs +2 -2
- package/dist/integration.js +1 -1
- package/dist/rest/index.cjs +4 -4
- package/dist/rest/index.js +2 -2
- package/dist/trpc/index.cjs +11 -11
- package/dist/trpc/index.js +2 -2
- package/package.json +2 -2
- package/dist/chunk-3HR772HI.cjs +0 -555
- package/dist/chunk-3HR772HI.cjs.map +0 -1
- package/dist/chunk-4M7X5HAB.cjs.map +0 -1
- package/dist/chunk-5H3MWQJS.js.map +0 -1
- package/dist/chunk-CJONKRHJ.js.map +0 -1
- package/dist/chunk-CNKT4PME.cjs.map +0 -1
- package/dist/chunk-E2763JUP.cjs.map +0 -1
- package/dist/chunk-IPTZM3VE.js.map +0 -1
- package/dist/chunk-L5UKKZQN.js +0 -552
- package/dist/chunk-L5UKKZQN.js.map +0 -1
- package/dist/chunk-NFKRKH3P.js.map +0 -1
- package/dist/chunk-NI5D3F7H.cjs.map +0 -1
- package/dist/chunk-OHC6UHFY.js.map +0 -1
- package/dist/chunk-PV2I2KMI.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api/graphql/schema.ts"],"names":["checkCollectionAccess","checkGlobalAccess","GraphQLString","GraphQLInt","GraphQLFloat","GraphQLBoolean","GraphQLList","GraphQLObjectType","GraphQLNonNull","GraphQLUnionType","GraphQLEnumType","GraphQLInputObjectType","GraphQLSchema","printSchema"],"mappings":";;;;;AAuCA,IAAM,iBAAN,MAAqB;AAAA,EACX,EAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA,uBAAa,GAAA,EAA8B;AAAA,EAC3C,OAAA,uBAAc,GAAA,EAAyB;AAAA,EAE/C,YAAY,IAAA,EAAqB;AAC/B,IAAA,IAAA,CAAK,KAAK,IAAA,CAAK,EAAA;AACf,IAAA,IAAA,CAAK,WAAW,IAAA,CAAK,QAAA;AACrB,IAAA,IAAA,CAAK,OAAO,IAAA,CAAK,IAAA;AAAA,EACnB;AAAA,EAEQ,YAAY,UAAA,EAA4B;AAC9C,IAAA,OAAO,UAAA;AAAA,EACT;AAAA,EAEA,MAAM,IAAA,CAAK,UAAA,EAAoB,EAAA,EAAsC;AACnE,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,WAAA,CAAY,UAAU,CAAA;AACvC,IAAA,IAAI,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,GAAG,CAAA;AAC/B,IAAA,IAAI,CAAC,KAAA,EAAO;AACV,MAAA,KAAA,uBAAY,GAAA,EAAI;AAChB,MAAA,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,GAAA,EAAK,KAAK,CAAA;AAAA,IAC5B;AACA,IAAA,IAAI,KAAA,CAAM,GAAA,CAAI,EAAE,CAAA,EAAG;AACjB,MAAA,OAAO,KAAA,CAAM,IAAI,EAAE,CAAA;AAAA,IACrB;AAEA,IAAA,IAAI,UAAA,GAAa,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA;AACrC,IAAA,IAAI,CAAC,UAAA,EAAY;AACf,MAAA,UAAA,uBAAiB,GAAA,EAAI;AACrB,MAAA,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,GAAA,EAAK,UAAU,CAAA;AAAA,IAClC;AACA,IAAA,UAAA,CAAW,IAAI,EAAE,CAAA;AAEjB,IAAA,KAAA,CAAM,GAAA,CAAI,IAAI,MAAS,CAAA;AACvB,IAAA,OAAO,MAAA;AAAA,EACT;AAAA,EAEA,MAAM,QAAA,GAA0B;AAC9B,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,GAAG,CAAA,IAAK,KAAK,OAAA,EAAS;AACrC,MAAA,IAAI,GAAA,CAAI,SAAS,CAAA,EAAG;AACpB,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,GAAG,CAAA;AACjC,MAAA,MAAM,IAAA,GAAO,MAAM,IAAA,CAAK,EAAA,CAAG,IAAA,CAAK;AAAA,QAC9B,UAAA,EAAY,GAAA;AAAA,QACZ,KAAA,EAAO,EAAE,EAAA,EAAI,EAAE,IAAI,KAAA,CAAM,IAAA,CAAK,GAAG,CAAA,EAAE,EAAE;AAAA,QACrC,OAAO,GAAA,CAAI,IAAA;AAAA,QACX,UAAU,IAAA,CAAK,QAAA;AAAA,QACf,KAAA,EAAO,CAAC,CAAC,IAAA,CAAK;AAAA,OACf,CAAA;AACD,MAAA,KAAA,MAAW,GAAA,IAAQ,IAAA,CAAK,IAAA,IAAQ,EAAC,EAAa;AAC5C,QAAA,IAAI,GAAA,IAAO,IAAI,EAAA,EAAI;AACjB,UAAA,KAAA,CAAM,GAAA,CAAI,GAAA,CAAI,EAAA,EAAI,GAAG,CAAA;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AACA,IAAA,IAAA,CAAK,QAAQ,KAAA,EAAM;AAAA,EACrB;AAAA,EAEA,UAAA,CAAW,YAAoB,EAAA,EAA6B;AAC1D,IAAA,OAAO,IAAA,CAAK,OAAO,GAAA,CAAI,IAAA,CAAK,YAAY,UAAU,CAAC,CAAA,EAAG,GAAA,CAAI,EAAE,CAAA;AAAA,EAC9D;AAAA,EAEA,aAAa,SAAA,CACX,MAAA,EACA,EAAA,EACY;AACZ,IAAA,MAAM,MAAA,GAAS,MAAM,EAAA,EAAG;AACxB,IAAA,MAAM,OAAO,QAAA,EAAS;AACtB,IAAA,OAAO,MAAA;AAAA,EACT;AACF,CAAA;AAMA,SAAS,QAAA,CAAS,SAAiB,IAAA,EAAqB;AACtD,EAAA,MAAM,GAAA,GAAM,IAAI,KAAA,CAAM,OAAO,CAAA;AAC7B,EAAC,GAAA,CAAY,UAAA,GAAa,EAAE,IAAA,EAAK;AACjC,EAAA,OAAO,GAAA;AACT;AAMA,eAAe,WAAA,CACb,MAAA,EACA,SAAA,EACA,OAAA,EACkC;AAClC,EAAA,MAAM,MAAA,GAAS,MAAMA,uCAAA,CAAsB,MAAA,EAAQ,WAAW,OAAO,CAAA;AACrE,EAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,IAAA,MAAM,QAAA,CAAS,MAAA,CAAO,KAAA,IAAS,eAAA,EAAiB,WAAW,CAAA;AAAA,EAC7D;AACA,EAAA,OAAO,MAAA,CAAO,UAAA;AAChB;AAEA,eAAe,oBAAA,CACb,MAAA,EACA,SAAA,EACA,OAAA,EACe;AACf,EAAA,MAAM,MAAA,GAAS,MAAMC,mCAAA,CAAkB,MAAA,EAAQ,WAAW,OAAO,CAAA;AACjE,EAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,IAAA,MAAM,QAAA,CAAS,MAAA,CAAO,KAAA,IAAS,eAAA,EAAiB,WAAW,CAAA;AAAA,EAC7D;AACF;AAMA,SAAS,mBACP,KAAA,EACA,QAAA,EACA,eAAA,EACA,WAAA,GAAc,OACd,MAAA,EACa;AACb,EAAA,QAAQ,MAAM,IAAA;AAAM,IAClB,KAAK,MAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,QAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,QAAA;AACH,MAAA,OAAOC,qBAAA;AAAA,IACT,KAAK,QAAA;AACH,MAAA,OAAO,KAAA,CAAM,UAAUC,kBAAA,GAAaC,oBAAA;AAAA,IACtC,KAAK,UAAA;AACH,MAAA,OAAOC,sBAAA;AAAA,IACT,KAAK,MAAA;AAAA,IACL,KAAK,UAAA;AACH,MAAA,OAAOH,qBAAA;AAAA,IACT,KAAK,cAAA;AACH,MAAA,IAAI,OAAO,KAAA,CAAM,UAAA,KAAe,QAAA,EAAU;AACxC,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,IAAI,MAAM,OAAA,EAAS;AACjB,YAAA,OAAO,IAAII,oBAAYJ,qBAAa,CAAA;AAAA,UACtC;AACA,UAAA,OAAOA,qBAAA;AAAA,QACT;AACA,QAAA,IAAI,eAAA,GAAkB,KAAA,CAAM,UAAU,CAAA,EAAG;AACvC,UAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,KAAA,CAAM,UAAU,CAAA;AAChD,UAAA,IAAI,MAAM,OAAA,EAAS;AACjB,YAAA,OAAO,IAAII,oBAAY,OAAO,CAAA;AAAA,UAChC;AACA,UAAA,OAAO,OAAA;AAAA,QACT;AACA,QAAA,MAAM,iBAAA,GAAoB,QAAA,CAAS,aAAA,CAAc,KAAA,CAAM,UAAU,CAAA;AACjE,QAAA,IAAI,iBAAA,EAAmB;AACrB,UAAA,MAAM,UAAU,CAAA,EAAG,KAAA,CAAM,WAAW,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA,IAAA,CAAA;AACtD,UAAA,MAAM,OAAA,GAAU,IAAIC,yBAAA,CAAkB;AAAA,YACpC,IAAA,EAAM,OAAA;AAAA,YACN,QAAQ,OAAO;AAAA,cACb,EAAA,EAAI,EAAE,IAAA,EAAML,qBAAA,EAAc;AAAA,cAC1B,GAAG,yBAAA,CAA0B,iBAAA,EAAmB,QAAA,EAAU,eAAe;AAAA,aAC3E;AAAA,WACD,CAAA;AACD,UAAA,IAAI,eAAA,EAAiB;AACnB,YAAA,eAAA,CAAgB,KAAA,CAAM,UAAU,CAAA,GAAI,OAAA;AAAA,UACtC;AACA,UAAA,IAAI,MAAM,OAAA,EAAS;AACjB,YAAA,OAAO,IAAII,oBAAY,OAAO,CAAA;AAAA,UAChC;AACA,UAAA,OAAO,OAAA;AAAA,QACT;AAAA,MACF;AACA,MAAA,OAAO,KAAA,CAAM,OAAA,GAAU,IAAIA,mBAAA,CAAYJ,qBAAa,CAAA,GAAIA,qBAAA;AAAA,IAC1D,KAAK,OAAA,EAAS;AACZ,MAAA,IAAI,aAAa,OAAOA,qBAAA;AACxB,MAAA,MAAM,YAAa,KAAA,CAAc,MAAA;AACjC,MAAA,IAAI,SAAA,IAAa,SAAA,CAAU,MAAA,GAAS,CAAA,EAAG;AACrC,QAAA,MAAM,WAAA,GAAc,GAAG,KAAA,CAAM,IAAA,EAAM,QAAQ,IAAA,EAAM,GAAG,KAAK,OAAO,CAAA,KAAA,CAAA;AAChE,QAAA,MAAM,WAAW,yBAAA,CAA0B,WAAA,EAAa,SAAA,EAAW,QAAA,EAAU,iBAAiB,MAAM,CAAA;AACpG,QAAA,OAAO,IAAII,oBAAY,QAAQ,CAAA;AAAA,MACjC;AACA,MAAA,OAAO,IAAIA,oBAAYJ,qBAAa,CAAA;AAAA,IACtC;AAAA,IACA,KAAK,OAAA,EAAS;AACZ,MAAA,IAAI,aAAa,OAAOA,qBAAA;AACxB,MAAA,MAAM,cAAe,KAAA,CAAc,MAAA;AACnC,MAAA,IAAI,WAAA,IAAe,WAAA,CAAY,MAAA,GAAS,CAAA,EAAG;AACzC,QAAA,MAAM,aAAA,GAAgB,GAAG,KAAA,CAAM,IAAA,EAAM,QAAQ,IAAA,EAAM,GAAG,KAAK,OAAO,CAAA,MAAA,CAAA;AAClE,QAAA,OAAO,yBAAA,CAA0B,aAAA,EAAe,WAAA,EAAa,QAAA,EAAU,iBAAiB,MAAM,CAAA;AAAA,MAChG;AACA,MAAA,OAAOA,qBAAA;AAAA,IACT;AAAA,IACA,KAAK,QAAA,EAAU;AACb,MAAA,IAAI,aAAa,OAAOA,qBAAA;AACxB,MAAA,MAAM,SAAU,KAAA,CAAc,MAAA;AAC9B,MAAA,IAAI,MAAA,IAAU,MAAA,CAAO,MAAA,GAAS,CAAA,EAAG;AAC/B,QAAA,MAAM,aAAkC,EAAC;AACzC,QAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,UAAA,MAAM,gBAAgB,CAAA,MAAA,EAAS,KAAA,CAAM,KAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA,CAAA;AAC5D,UAAA,MAAM,KAAA,GAAQ,IAAIK,yBAAA,CAAkB;AAAA,YAClC,IAAA,EAAM,aAAA;AAAA,YACN,QAAQ,MAAM;AACZ,cAAA,MAAM,GAAA,GAAoD;AAAA,gBACxD,WAAW,EAAE,IAAA,EAAM,IAAIC,sBAAA,CAAeN,qBAAa,CAAA,EAAE;AAAA,gBACrD,EAAA,EAAI,EAAE,IAAA,EAAMA,qBAAA;AAAc,eAC5B;AACA,cAAA,IAAI,MAAM,MAAA,EAAQ;AAChB,gBAAA,KAAA,MAAW,EAAA,IAAM,MAAM,MAAA,EAAQ;AAC7B,kBAAA,IAAI,CAAC,GAAG,IAAA,EAAM;AACd,kBAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,EAAA,EAAI,QAAA,EAAU,iBAAiB,MAAM,CAAA;AACvE,kBAAA,IAAI,QAAA,EAAU,GAAA,CAAI,EAAA,CAAG,IAAI,CAAA,GAAI,QAAA;AAAA,gBAC/B;AAAA,cACF;AACA,cAAA,OAAO,GAAA;AAAA,YACT;AAAA,WACD,CAAA;AACD,UAAA,UAAA,CAAW,KAAK,KAAK,CAAA;AAAA,QACvB;AACA,QAAA,IAAI,UAAA,CAAW,SAAS,CAAA,EAAG;AACzB,UAAA,MAAM,SAAA,GAAY,GAAG,KAAA,CAAM,IAAA,EAAM,QAAQ,IAAA,EAAM,GAAG,KAAK,QAAQ,CAAA,MAAA,CAAA;AAC/D,UAAA,OAAO,IAAIO,wBAAA,CAAiB;AAAA,YAC1B,IAAA,EAAM,SAAA;AAAA,YACN,KAAA,EAAO,UAAA;AAAA,YACP,YAAY,KAAA,EAAY;AACtB,cAAA,MAAM,SAAA,GAAY,UAAU,KAAA,EAAO,SAAA,IAAa,IAAI,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA,CAAA;AACtE,cAAA,MAAM,YAAY,UAAA,CAAW,IAAA;AAAA,gBAC3B,CAAC,EAAA,KAAO,EAAA,CAAG,IAAA,KAAS;AAAA,eACtB;AACA,cAAA,OAAO,WAAW,IAAA,IAAQ,MAAA;AAAA,YAC5B;AAAA,WACD,CAAA;AAAA,QACH;AAAA,MACF;AACA,MAAA,OAAO,IAAIH,oBAAYJ,qBAAa,CAAA;AAAA,IACtC;AAAA,IACA,KAAK,KAAA;AAAA,IACL,KAAK,aAAA;AAAA,IACL,KAAK,MAAA;AACH,MAAA,OAAOA,qBAAA;AAAA,IACT;AACE,MAAA,OAAOA,qBAAA;AAAA;AAEb;AAEA,SAAS,yBAAA,CACP,MAAA,EACA,QAAA,EACA,eAAA,EACA,MAAA,EAC8C;AAC9C,EAAA,MAAM,SAAuD,EAAC;AAE9D,EAAA,KAAA,MAAW,KAAA,IAAS,OAAO,MAAA,EAAQ;AACjC,IAAA,IAAI,KAAA,CAAM,IAAA,IAAQ,KAAA,CAAM,KAAA,EAAO,WAAW,IAAA,EAAM;AAC9C,MAAA,MAAM,EAAA,GAAK,gBAAA,CAAiB,KAAA,EAAO,QAAA,EAAU,iBAAiB,MAAM,CAAA;AACpE,MAAA,IAAI,EAAA,EAAI,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA,GAAI,EAAA;AAAA,IAC/B;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;AAMA,SAAS,cACP,MAAA,EAC6B;AAC7B,EAAA,MAAM,UAAA,GAAgD;AAAA,IACpD,EAAA,EAAI,EAAE,KAAA,EAAO,IAAA,EAAK;AAAA,IAClB,SAAA,EAAW,EAAE,KAAA,EAAO,WAAA,EAAY;AAAA,IAChC,SAAA,EAAW,EAAE,KAAA,EAAO,WAAA;AAAY,GAClC;AAEA,EAAA,KAAA,MAAW,KAAA,IAAS,OAAO,MAAA,EAAQ;AACjC,IAAA,IAAI,MAAM,IAAA,EAAM;AACd,MAAA,UAAA,CAAW,MAAM,IAAI,CAAA,GAAI,EAAE,KAAA,EAAO,MAAM,IAAA,EAAK;AAC7C,MAAA,UAAA,CAAW,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,IAAA,CAAM,CAAA,GAAI,EAAE,KAAA,EAAO,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,CAAA,EAAG;AAC3D,MAAA,UAAA,CAAW,CAAA,EAAG,KAAA,CAAM,IAAI,CAAA,KAAA,CAAO,CAAA,GAAI,EAAE,KAAA,EAAO,CAAA,CAAA,EAAI,KAAA,CAAM,IAAI,CAAA,CAAA,EAAG;AAAA,IAC/D;AAAA,EACF;AAEA,EAAA,OAAO,IAAIQ,uBAAA,CAAgB;AAAA,IACzB,MAAM,CAAA,EAAG,MAAA,CAAO,KAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA,KAAA,CAAA;AAAA,IACvC,MAAA,EAAQ;AAAA,GACT,CAAA;AACH;AAMA,SAAS,oBAAA,CACP,OACA,UAAA,EACoC;AACpC,EAAA,MAAM,QAAA,GAAW,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,KAAA,CAAM,MAAM,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAA,IAAK,OAAO,CAAA,OAAA,CAAA;AAE3E,EAAA,MAAM,SAAA,GAAmD;AAAA,IACvD,MAAA,EAAQ,EAAE,IAAA,EAAMR,qBAAA,EAAc;AAAA,IAC9B,UAAA,EAAY,EAAE,IAAA,EAAMA,qBAAA,EAAc;AAAA,IAClC,QAAA,EAAU,EAAE,IAAA,EAAMA,qBAAA,EAAc;AAAA,IAChC,YAAA,EAAc,EAAE,IAAA,EAAMA,qBAAA,EAAc;AAAA,IACpC,IAAI,EAAE,IAAA,EAAM,IAAII,mBAAA,CAAYJ,qBAAa,CAAA,EAAE;AAAA,IAC3C,QAAQ,EAAE,IAAA,EAAM,IAAII,mBAAA,CAAYJ,qBAAa,CAAA,EAAE;AAAA,IAC/C,MAAA,EAAQ,EAAE,IAAA,EAAMG,sBAAA;AAAe,GACjC;AAEA,EAAA,MAAM,SAAA,GAAmD;AAAA,IACvD,MAAA,EAAQ,EAAE,IAAA,EAAMD,oBAAA,EAAa;AAAA,IAC7B,UAAA,EAAY,EAAE,IAAA,EAAMA,oBAAA,EAAa;AAAA,IACjC,YAAA,EAAc,EAAE,IAAA,EAAMA,oBAAA,EAAa;AAAA,IACnC,SAAA,EAAW,EAAE,IAAA,EAAMA,oBAAA,EAAa;AAAA,IAChC,kBAAA,EAAoB,EAAE,IAAA,EAAMA,oBAAA,EAAa;AAAA,IACzC,eAAA,EAAiB,EAAE,IAAA,EAAMA,oBAAA,EAAa;AAAA,IACtC,IAAI,EAAE,IAAA,EAAM,IAAIE,mBAAA,CAAYF,oBAAY,CAAA,EAAE;AAAA,IAC1C,QAAQ,EAAE,IAAA,EAAM,IAAIE,mBAAA,CAAYF,oBAAY,CAAA,EAAE;AAAA,IAC9C,MAAA,EAAQ,EAAE,IAAA,EAAMC,sBAAA;AAAe,GACjC;AAEA,EAAA,MAAM,OAAA,GAAiD;AAAA,IACrD,MAAA,EAAQ,EAAE,IAAA,EAAMA,sBAAA,EAAe;AAAA,IAC/B,MAAA,EAAQ,EAAE,IAAA,EAAMA,sBAAA;AAAe,GACjC;AAEA,EAAA,MAAM,OAAA,GAAiD;AAAA,IACrD,MAAA,EAAQ,EAAE,IAAA,EAAMH,qBAAA,EAAc;AAAA,IAC9B,UAAA,EAAY,EAAE,IAAA,EAAMA,qBAAA,EAAc;AAAA,IAClC,YAAA,EAAc,EAAE,IAAA,EAAMA,qBAAA,EAAc;AAAA,IACpC,SAAA,EAAW,EAAE,IAAA,EAAMA,qBAAA,EAAc;AAAA,IACjC,MAAA,EAAQ,EAAE,IAAA,EAAMG,sBAAA;AAAe,GACjC;AAEA,EAAA,MAAM,WAAA,GAAqD;AAAA,IACzD,MAAA,EAAQ,EAAE,IAAA,EAAMH,qBAAA,EAAc;AAAA,IAC9B,UAAA,EAAY,EAAE,IAAA,EAAMA,qBAAA,EAAc;AAAA,IAClC,IAAI,EAAE,IAAA,EAAM,IAAII,mBAAA,CAAYJ,qBAAa,CAAA,EAAE;AAAA,IAC3C,QAAQ,EAAE,IAAA,EAAM,IAAII,mBAAA,CAAYJ,qBAAa,CAAA,EAAE;AAAA,IAC/C,MAAA,EAAQ,EAAE,IAAA,EAAMG,sBAAA;AAAe,GACjC;AAEA,EAAA,MAAM,OAAA,GAAiD;AAAA,IACrD,MAAA,EAAQ,EAAE,IAAA,EAAMA,sBAAA;AAAe,GACjC;AAEA,EAAA,IAAI,GAAA;AAEJ,EAAA,QAAQ,MAAM,IAAA;AAAM,IAClB,KAAK,MAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,MAAA;AAAA,IACL,KAAK,UAAA;AAAA,IACL,KAAK,QAAA;AAAA,IACL,KAAK,OAAA;AAAA,IACL,KAAK,QAAA;AACH,MAAA,GAAA,GAAM,SAAA;AACN,MAAA;AAAA,IACF,KAAK,QAAA;AACH,MAAA,GAAA,GAAM,SAAA;AACN,MAAA;AAAA,IACF,KAAK,UAAA;AACH,MAAA,GAAA,GAAM,OAAA;AACN,MAAA;AAAA,IACF,KAAK,MAAA;AACH,MAAA,GAAA,GAAM,OAAA;AACN,MAAA;AAAA,IACF,KAAK,cAAA;AACH,MAAA,GAAA,GAAM,WAAA;AACN,MAAA;AAAA,IACF,KAAK,MAAA;AAAA,IACL,KAAK,UAAA;AACH,MAAA,GAAA,GAAM,OAAA;AACN,MAAA;AAAA,IACF;AACE,MAAA,GAAA,GAAM,EAAE,MAAA,EAAQ,EAAE,IAAA,EAAMA,wBAAe,EAAE;AAAA;AAG7C,EAAA,OAAO,IAAIM,8BAAA,CAAuB;AAAA,IAChC,IAAA,EAAM,QAAA;AAAA,IACN,MAAA,EAAQ;AAAA,GACT,CAAA;AACH;AAEA,SAAS,yBAAA,CACP,QACA,UAAA,EACwB;AACxB,EAAA,MAAM,MAAA,GAAgD;AAAA,IACpD,KAAK,EAAE,IAAA,EAAM,IAAIL,mBAAA,CAAYJ,qBAAa,CAAA,EAAE;AAAA,IAC5C,IAAI,EAAE,IAAA,EAAM,IAAII,mBAAA,CAAYJ,qBAAa,CAAA;AAAE,GAC7C;AAEA,EAAA,KAAA,MAAW,KAAA,IAAS,OAAO,MAAA,EAAQ;AACjC,IAAA,IAAI,CAAC,MAAM,IAAA,EAAM;AACjB,IAAA,MAAM,UAAA,GAAa,oBAAA,CAAqB,KAAA,EAAO,UAAU,CAAA;AACzD,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,MAAA,CAAO,KAAA,CAAM,IAAI,CAAA,GAAI,EAAE,MAAM,UAAA,EAAW;AAAA,IAC1C;AAAA,EACF;AAEA,EAAA,OAAO,IAAIS,8BAAA,CAAuB;AAAA,IAChC,IAAA,EAAM,GAAG,UAAU,CAAA,OAAA,CAAA;AAAA,IACnB;AAAA,GACD,CAAA;AACH;AAEA,SAAS,gBAAgB,MAAA,EAAkD;AACzE,EAAA,IAAI,CAAC,MAAA,IAAU,OAAO,WAAW,QAAA,EAAU,OAAO,UAAU,EAAC;AAE7D,EAAA,MAAM,SAA8B,EAAC;AAErC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,EAAG;AACjD,IAAA,IAAI,GAAA,KAAQ,KAAA,IAAS,GAAA,KAAQ,IAAA,EAAM;AACnC,IAAA,MAAA,CAAO,GAAG,CAAA,GAAI,KAAA;AAAA,EAChB;AAEA,EAAA,OAAO,MAAA;AACT;AAMA,SAAS,yBAAA,CACP,IAAA,EACA,MAAA,EACA,QAAA,EACA,iBACA,MAAA,EACmB;AACnB,EAAA,OAAO,IAAIJ,yBAAA,CAAkB;AAAA,IAC3B,IAAA;AAAA,IACA,QAAQ,MAAM;AACZ,MAAA,MAAM,MAAoD,EAAC;AAC3D,MAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,QAAA,IAAI,CAAC,MAAM,IAAA,EAAM;AACjB,QAAA,IAAI,KAAA,CAAM,IAAA,KAAS,KAAA,IAAS,KAAA,CAAM,SAAS,aAAA,EAAe;AACxD,UAAA,MAAM,YAAa,KAAA,CAAc,MAAA;AACjC,UAAA,IAAI,SAAA,EAAW;AACb,YAAA,KAAA,MAAW,MAAM,SAAA,EAAW;AAC1B,cAAA,IAAI,CAAC,GAAG,IAAA,EAAM;AACd,cAAA,MAAM,EAAA,GAAK,gBAAA,CAAiB,EAAA,EAAI,QAAA,EAAU,iBAAiB,MAAM,CAAA;AACjE,cAAA,IAAI,EAAA,EAAI,GAAA,CAAI,EAAA,CAAG,IAAI,CAAA,GAAI,EAAA;AAAA,YACzB;AAAA,UACF;AAAA,QACF,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,MAAA,EAAQ;AAChC,UAAA,MAAM,OAAQ,KAAA,CAAc,IAAA;AAC5B,UAAA,IAAI,IAAA,EAAM;AACR,YAAA,KAAA,MAAW,OAAO,IAAA,EAAM;AACtB,cAAA,IAAI,IAAI,MAAA,EAAQ;AACd,gBAAA,KAAA,MAAW,EAAA,IAAM,IAAI,MAAA,EAAQ;AAC3B,kBAAA,IAAI,CAAC,GAAG,IAAA,EAAM;AACd,kBAAA,MAAM,EAAA,GAAK,gBAAA,CAAiB,EAAA,EAAI,QAAA,EAAU,iBAAiB,MAAM,CAAA;AACjE,kBAAA,IAAI,EAAA,EAAI,GAAA,CAAI,EAAA,CAAG,IAAI,CAAA,GAAI,EAAA;AAAA,gBACzB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF,CAAA,MAAO;AACL,UAAA,MAAM,EAAA,GAAK,gBAAA,CAAiB,KAAA,EAAO,QAAA,EAAU,iBAAiB,MAAM,CAAA;AACpE,UAAA,IAAI,EAAA,EAAI,GAAA,CAAI,KAAA,CAAM,IAAI,CAAA,GAAI,EAAA;AAAA,QAC5B;AAAA,MACF;AACA,MAAA,OAAO,GAAA;AAAA,IACT;AAAA,GACD,CAAA;AACH;AAEA,SAAS,gBAAA,CACP,KAAA,EACA,QAAA,EACA,eAAA,EACA,MAAA,EACqC;AACrC,EAAA,IAAI,CAAC,KAAA,CAAM,IAAA,EAAM,OAAO,IAAA;AACxB,EAAA,IAAI,KAAA,CAAM,IAAA,KAAS,cAAA,IAAkB,CAAE,MAAc,OAAA,EAAS;AAC5D,IAAA,MAAM,UAAU,kBAAA,CAAmB,KAAA,EAAO,QAAA,EAAU,eAAA,EAAiB,OAAO,MAAM,CAAA;AAClF,IAAA,OAAO;AAAA,MACL,MAAM,KAAA,CAAM,QAAA,GAAW,IAAIC,sBAAA,CAAe,OAAO,CAAA,GAAI,OAAA;AAAA,MACrD,WAAA,EAAa,KAAA,CAAM,KAAA,EAAO,WAAA,IAAe,KAAA,CAAM,KAAA;AAAA,MAC/C,OAAA,EAAS,CAAC,MAAA,KAAgB;AACxB,QAAA,MAAM,QAAA,GAAW,KAAA;AACjB,QAAA,MAAM,EAAA,GAAK,MAAA,GAAS,QAAA,CAAS,IAAI,CAAA;AACjC,QAAA,IAAI,CAAC,IAAI,OAAO,IAAA;AAChB,QAAA,IAAI,MAAA,IAAU,OAAO,EAAA,KAAO,QAAA,EAAU;AACpC,UAAA,MAAM,MAAA,GAAS,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,YAAY,EAAE,CAAA;AACxD,UAAA,IAAI,QAAQ,OAAO,MAAA;AACnB,UAAA,MAAA,CAAO,IAAA,CAAK,QAAA,CAAS,UAAA,EAAY,EAAE,CAAA;AAAA,QACrC;AACA,QAAA,OAAO,EAAE,EAAA,EAAG;AAAA,MACd;AAAA,KACF;AAAA,EACF;AACA,EAAA,IAAI,KAAA,CAAM,IAAA,KAAS,cAAA,IAAmB,KAAA,CAAc,OAAA,EAAS;AAC3D,IAAA,MAAM,UAAU,kBAAA,CAAmB,KAAA,EAAO,QAAA,EAAU,eAAA,EAAiB,OAAO,MAAM,CAAA;AAClF,IAAA,OAAO;AAAA,MACL,IAAA,EAAM,OAAA;AAAA,MACN,WAAA,EAAa,KAAA,CAAM,KAAA,EAAO,WAAA,IAAe,KAAA,CAAM,KAAA;AAAA,MAC/C,OAAA,EAAS,CAAC,MAAA,KAAgB;AACxB,QAAA,MAAM,QAAA,GAAW,KAAA;AACjB,QAAA,MAAM,GAAA,GAAgB,MAAA,GAAS,QAAA,CAAS,IAAI,KAAK,EAAC;AAClD,QAAA,IAAI,CAAC,GAAA,CAAI,MAAA,EAAQ,OAAO,EAAC;AACzB,QAAA,IAAI,MAAA,EAAQ;AACV,UAAA,MAAM,UAAiB,EAAC;AACxB,UAAA,KAAA,MAAW,MAAM,GAAA,EAAK;AACpB,YAAA,MAAM,MAAA,GAAS,MAAA,CAAO,UAAA,CAAW,QAAA,CAAS,YAAY,EAAE,CAAA;AACxD,YAAA,IAAI,MAAA,EAAQ,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA;AAAA,iBAC1B;AACH,cAAA,MAAA,CAAO,IAAA,CAAK,QAAA,CAAS,UAAA,EAAY,EAAE,CAAA;AACnC,cAAA,OAAA,CAAQ,IAAA,CAAK,EAAE,EAAA,EAAI,CAAA;AAAA,YACrB;AAAA,UACF;AACA,UAAA,OAAO,OAAA;AAAA,QACT;AACA,QAAA,OAAO,IAAI,GAAA,CAAI,CAAC,EAAA,MAAgB,EAAE,IAAG,CAAE,CAAA;AAAA,MACzC;AAAA,KACF;AAAA,EACF;AACA,EAAA,OAAO;AAAA,IACL,MAAM,KAAA,CAAM,QAAA,GACR,IAAIA,sBAAA,CAAe,kBAAA,CAAmB,OAAO,QAAA,EAAU,eAAA,EAAiB,KAAA,EAAO,MAAM,CAAQ,CAAA,GAC5F,kBAAA,CAAmB,OAAO,QAAA,EAAU,eAAA,EAAiB,OAAO,MAAM,CAAA;AAAA,IACvE,WAAA,EAAa,KAAA,CAAM,KAAA,EAAO,WAAA,IAAe,KAAA,CAAM;AAAA,GACjD;AACF;AAgBO,SAAS,mBACd,OAAA,EACe;AACf,EAAA,MAAM,EAAE,UAAU,EAAA,EAAI,IAAA,EAAM,KAAK,QAAA,EAAU,MAAA,EAAQ,UAAS,GAAI,OAAA;AAGhE,EAAA,MAAM,SAAA,GAAY,UAAU,MAAA,EAAQ,SAAA;AACpC,EAAA,IAAI,SAAA,EAAW,mBAAmB,KAAA,EAAO;AACvC,IAAA,MAAM,IAAI,MAAM,yBAAyB,CAAA;AAAA,EAC3C;AAEA,EAAA,MAAM,WAAA,GAAc,SAAS,cAAA,EAAe;AAC5C,EAAA,MAAM,OAAA,GAAU,SAAS,UAAA,EAAW;AAGpC,EAAA,MAAM,iBAAiB,IAAI,cAAA,CAAe,EAAE,EAAA,EAAI,QAAA,EAAU,MAAM,CAAA;AAGhE,EAAA,MAAM,kBAAqD,EAAC;AAC5D,EAAA,MAAM,uBAA+D,EAAC;AAEtE,EAAA,KAAA,MAAW,cAAc,WAAA,EAAa;AAEpC,IAAA,eAAA,CAAgB,UAAA,CAAW,IAAI,CAAA,GAAI,IAAID,yBAAA,CAAkB;AAAA,MACvD,MAAM,CAAA,EAAG,UAAA,CAAW,KAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA,KAAA,CAAA;AAAA,MAC3C,QAAQ,OAAO;AAAA,QACb,EAAA,EAAI,EAAE,IAAA,EAAML,qBAAA,EAAc;AAAA,QAC1B,GAAG,yBAAA,CAA0B,UAAA,EAAY,QAAA,EAAU,iBAAiB,cAAc,CAAA;AAAA,QAClF,GAAI,WAAW,UAAA,GACX;AAAA,UACE,SAAA,EAAW,EAAE,IAAA,EAAMA,qBAAA,EAAc;AAAA,UACjC,SAAA,EAAW,EAAE,IAAA,EAAMA,qBAAA;AAAc,YAEnC,EAAC;AAAA,QACL,GAAI,WAAW,YAAA,GACX;AAAA,UACE,QAAA,EAAU,EAAE,IAAA,EAAMA,qBAAA;AAAc,YAElC;AAAC,OACP;AAAA,KACD,CAAA;AAGD,IAAA,MAAM,cAAqD,EAAC;AAC5D,IAAA,KAAA,MAAW,KAAA,IAAS,WAAW,MAAA,EAAQ;AACrC,MAAA,IAAI,KAAA,CAAM,IAAA,IAAQ,KAAA,CAAM,IAAA,KAAS,IAAA,EAAM;AACrC,QAAA,WAAA,CAAY,KAAA,CAAM,IAAI,CAAA,GAAI;AAAA,UACxB,IAAA,EAAM,kBAAA,CAAmB,KAAA,EAAO,QAAA,EAAU,iBAAiB,IAAI;AAAA,SACjE;AAAA,MACF;AAAA,IACF;AAEA,IAAA,oBAAA,CAAqB,UAAA,CAAW,IAAI,CAAA,GAAI,IAAIS,8BAAA,CAAuB;AAAA,MACjE,MAAM,CAAA,EAAG,UAAA,CAAW,KAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA,MAAA,CAAA;AAAA,MAC3C,QAAQ,MAAM;AAAA,KACf,CAAA;AAAA,EACH;AAGA,EAAA,MAAM,cAAiD,EAAC;AACxD,EAAA,MAAM,mBAA2D,EAAC;AAElE,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,WAAA,CAAY,MAAA,CAAO,IAAI,CAAA,GAAI,IAAIJ,yBAAA,CAAkB;AAAA,MAC/C,MAAM,CAAA,EAAG,MAAA,CAAO,KAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA,YAAA,CAAA;AAAA,MACvC,QAAQ,OAAO;AAAA,QACb,EAAA,EAAI,EAAE,IAAA,EAAML,qBAAA,EAAc;AAAA,QAC1B,GAAG,yBAAA;AAAA,UACD,EAAE,IAAA,EAAM,MAAA,CAAO,IAAA,EAAM,MAAA,EAAQ,OAAO,MAAA,EAAO;AAAA,UAC3C,QAAA;AAAA,UACA,eAAA;AAAA,UACA;AAAA;AACF,OACF;AAAA,KACD,CAAA;AAED,IAAA,gBAAA,CAAiB,MAAA,CAAO,IAAI,CAAA,GAAI,IAAIS,8BAAA,CAAuB;AAAA,MACzD,MAAM,CAAA,EAAG,MAAA,CAAO,KAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA,aAAA,CAAA;AAAA,MACvC,QAAQ,MAAM;AACZ,QAAA,MAAM,cAAqD,EAAC;AAC5D,QAAA,KAAA,MAAW,KAAA,IAAS,OAAO,MAAA,EAAQ;AACjC,UAAA,IAAI,KAAA,CAAM,IAAA,IAAQ,KAAA,CAAM,IAAA,KAAS,IAAA,EAAM;AACrC,YAAA,WAAA,CAAY,KAAA,CAAM,IAAI,CAAA,GAAI;AAAA,cACxB,IAAA,EAAM,kBAAA,CAAmB,KAAA,EAAO,QAAA,EAAU,iBAAiB,IAAI;AAAA,aACjE;AAAA,UACF;AAAA,QACF;AACA,QAAA,OAAO,WAAA;AAAA,MACT;AAAA,KACD,CAAA;AAAA,EACH;AAGA,EAAA,MAAM,cAA4D,EAAC;AAGnE,EAAA,KAAA,MAAW,cAAc,WAAA,EAAa;AACpC,IAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,UAAA,CAAW,IAAI,CAAA;AAC5C,IAAA,IAAI,CAAC,IAAA,EAAM;AAGX,IAAA,MAAM,UAAA,GAAa,0BAA0B,UAAA,EAAY,UAAA,CAAW,KAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA;AAC3F,IAAA,MAAM,QAAA,GAAW,cAAc,UAAU,CAAA;AAGzC,IAAA,WAAA,CAAY,CAAA,EAAG,WAAW,IAAA,CAAK,OAAA,CAAQ,MAAM,GAAG,CAAC,MAAM,CAAA,GAAI;AAAA,MACzD,IAAA,EAAM,IAAIJ,yBAAA,CAAkB;AAAA,QAC1B,MAAM,CAAA,EAAG,UAAA,CAAW,KAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA,YAAA,CAAA;AAAA,QAC3C,MAAA,EAAQ;AAAA,UACN,MAAM,EAAE,IAAA,EAAM,IAAID,mBAAA,CAAY,IAAI,CAAA,EAAE;AAAA,UACpC,SAAA,EAAW,EAAE,IAAA,EAAMH,kBAAA,EAAW;AAAA,UAC9B,IAAA,EAAM,EAAE,IAAA,EAAMA,kBAAA,EAAW;AAAA,UACzB,UAAA,EAAY,EAAE,IAAA,EAAMA,kBAAA,EAAW;AAAA,UAC/B,WAAA,EAAa,EAAE,IAAA,EAAME,sBAAA,EAAe;AAAA,UACpC,WAAA,EAAa,EAAE,IAAA,EAAMA,sBAAA;AAAe;AACtC,OACD,CAAA;AAAA,MACD,IAAA,EAAM;AAAA,QACJ,KAAA,EAAO,EAAE,IAAA,EAAM,UAAA,EAAW;AAAA,QAC1B,IAAA,EAAM,EAAE,IAAA,EAAM,QAAA,IAAYH,qBAAA,EAAc;AAAA,QACxC,KAAA,EAAO,EAAE,IAAA,EAAMC,kBAAA,EAAW;AAAA,QAC1B,IAAA,EAAM,EAAE,IAAA,EAAMA,kBAAA,EAAW;AAAA,QACzB,KAAA,EAAO,EAAE,IAAA,EAAME,sBAAA;AAAe,OAChC;AAAA,MACA,OAAA,EAAS,OAAO,CAAA,EAAQ,IAAA,EAAW,GAAA,KAAa;AAC9C,QAAA,MAAM,UAAA,GAAa,MAAM,WAAA,CAAY,UAAA,EAAY,MAAA,EAAQ;AAAA,UACvD,IAAA;AAAA,UACA,GAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACD,CAAA;AAED,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,EAAA,CAAG,gBAAA,CAAiB,EAAE,QAAA,EAAU,QAAA,EAAU,QAAQ,IAAA,EAAM,EAAA,IAAM,EAAA,EAAI,IAAA,EAAM,MAAM,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,IAAA,KAAS,eAAe,CAAA;AAAA,QAClI;AAEA,QAAA,IAAI,QAA6B,EAAC;AAClC,QAAA,IAAI,KAAK,KAAA,EAAO;AACd,UAAA,IAAI,OAAO,IAAA,CAAK,KAAA,KAAU,QAAA,EAAU;AAClC,YAAA,IAAI;AAAE,cAAA,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA;AAAA,YAAG,CAAA,CAAA,MAAQ;AAAA,YAAC;AAAA,UACjD,CAAA,MAAO;AACL,YAAA,KAAA,GAAQ,eAAA,CAAgB,KAAK,KAAK,CAAA;AAAA,UACpC;AAAA,QACF;AAEA,QAAA,IAAI,UAAA,EAAY;AACd,UAAA,KAAA,GAAQ,EAAE,GAAG,KAAA,EAAO,GAAG,UAAA,EAAW;AAAA,QACpC;AAEA,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,IAAS,CAAC,CAAC,IAAA;AAEhC,QAAA,OAAO,cAAA,CAAe,SAAA,CAAU,cAAA,EAAgB,YAAY;AAC1D,UAAA,OAAO,GAAG,IAAA,CAAK;AAAA,YACb,YAAY,UAAA,CAAW,IAAA;AAAA,YACvB,KAAA;AAAA,YACA,MAAM,IAAA,CAAK,IAAA;AAAA,YACX,KAAA,EAAO,KAAK,KAAA,IAAS,EAAA;AAAA,YACrB,IAAA,EAAM,KAAK,IAAA,IAAQ,CAAA;AAAA,YACnB,QAAA;AAAA,YACA,KAAA,EAAO;AAAA,WACR,CAAA;AAAA,QACH,CAAC,CAAA;AAAA,MACH;AAAA,KACF;AAGA,IAAA,WAAA,CAAY,CAAA,EAAG,WAAW,IAAA,CAAK,OAAA,CAAQ,MAAM,GAAG,CAAC,UAAU,CAAA,GAAI;AAAA,MAC7D,IAAA;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,IAAI,EAAE,IAAA,EAAM,IAAIG,sBAAA,CAAeN,qBAAa,CAAA,EAAE;AAAA,QAC9C,KAAA,EAAO,EAAE,IAAA,EAAMG,sBAAA;AAAe,OAChC;AAAA,MACA,OAAA,EAAS,OAAO,CAAA,EAAQ,IAAA,EAAW,GAAA,KAAa;AAC9C,QAAe,MAAM,WAAA,CAAY,UAAA,EAAY,MAAA,EAAQ;AAAA,UACnD,IAAA;AAAA,UACA,GAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACD;AAED,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,EAAA,CAAG,gBAAA,CAAiB,EAAE,QAAA,EAAU,QAAA,EAAU,QAAQ,IAAA,EAAM,EAAA,IAAM,EAAA,EAAI,IAAA,EAAM,MAAM,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,IAAA,KAAS,eAAe,CAAA;AAAA,QAClI;AAEA,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,IAAS,CAAC,CAAC,IAAA;AAChC,QAAA,OAAO,cAAA,CAAe,SAAA,CAAU,cAAA,EAAgB,YAAY;AAC1D,UAAA,MAAM,GAAA,GAAM,MAAM,EAAA,CAAG,QAAA,CAAS;AAAA,YAC5B,YAAY,UAAA,CAAW,IAAA;AAAA,YACvB,IAAI,IAAA,CAAK,EAAA;AAAA,YACT,QAAA;AAAA,YACA,KAAA,EAAO;AAAA,WACR,CAAA;AACD,UAAA,OAAO,GAAA;AAAA,QACT,CAAC,CAAA;AAAA,MACH;AAAA,KACF;AAGA,IAAA,WAAA,CAAY,CAAA,EAAG,WAAW,IAAA,CAAK,OAAA,CAAQ,MAAM,GAAG,CAAC,OAAO,CAAA,GAAI;AAAA,MAC1D,IAAA,EAAM,IAAIE,yBAAA,CAAkB;AAAA,QAC1B,MAAM,CAAA,EAAG,UAAA,CAAW,KAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA,MAAA,CAAA;AAAA,QAC3C,MAAA,EAAQ;AAAA,UACN,SAAA,EAAW,EAAE,IAAA,EAAMJ,kBAAA;AAAW;AAChC,OACD,CAAA;AAAA,MACD,IAAA,EAAM;AAAA,QACJ,KAAA,EAAO,EAAE,IAAA,EAAMD,qBAAA;AAAc,OAC/B;AAAA,MACA,OAAA,EAAS,OAAO,CAAA,EAAQ,IAAA,EAAW,GAAA,KAAa;AAC9C,QAAA,MAAM,WAAA,CAAY,YAAY,MAAA,EAAQ;AAAA,UACpC,IAAA;AAAA,UACA,GAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,IAAI,QAAQ,EAAC;AACb,QAAA,IAAI,KAAK,KAAA,EAAO;AACd,UAAA,IAAI,OAAO,IAAA,CAAK,KAAA,KAAU,QAAA,EAAU;AAClC,YAAA,IAAI;AAAE,cAAA,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA;AAAA,YAAG,CAAA,CAAA,MAAQ;AAAA,YAAC;AAAA,UACjD,CAAA,MAAO;AACL,YAAA,KAAA,GAAQ,eAAA,CAAgB,KAAK,KAAK,CAAA;AAAA,UACpC;AAAA,QACF;AACA,QAAA,MAAM,KAAA,GAAQ,MAAM,EAAA,CAAG,KAAA,CAAM;AAAA,UAC3B,YAAY,UAAA,CAAW,IAAA;AAAA,UACvB,KAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,OAAO,EAAE,WAAW,KAAA,EAAM;AAAA,MAC5B;AAAA,KACF;AAAA,EACF;AAGA,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,MAAM,IAAA,GAAO,WAAA,CAAY,MAAA,CAAO,IAAI,CAAA;AACpC,IAAA,IAAI,CAAC,IAAA,EAAM;AAEX,IAAA,WAAA,CAAY,CAAA,EAAG,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAM,GAAG,CAAC,KAAK,CAAA,GAAI;AAAA,MACpD,IAAA;AAAA,MACA,SAAS,YAAY;AACnB,QAAA,MAAM,oBAAA,CAAqB,QAAQ,MAAA,EAAQ;AAAA,UACzC,IAAA;AAAA,UACA,GAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,EAAA,CAAG,gBAAA,CAAiB,EAAE,QAAA,EAAU,QAAA,EAAU,QAAQ,IAAA,EAAM,EAAA,IAAM,EAAA,EAAI,IAAA,EAAM,MAAM,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,IAAA,KAAS,eAAe,CAAA;AAAA,QAClI;AACA,QAAA,OAAO,GAAG,OAAA,CAAQ;AAAA,UAChB,UAAA,EAAY,CAAA,SAAA,EAAY,MAAA,CAAO,IAAI,CAAA,CAAA;AAAA,UACnC,OAAO,EAAC;AAAA,UACR;AAAA,SACD,CAAA;AAAA,MACH;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,KAAA,GAAQ,IAAIK,yBAAA,CAAkB;AAAA,IAClC,IAAA,EAAM,OAAA;AAAA,IACN,MAAA,EAAQ;AAAA,GACT,CAAA;AAGD,EAAA,MAAM,iBAA+D,EAAC;AAEtE,EAAA,KAAA,MAAW,cAAc,WAAA,EAAa;AACpC,IAAA,MAAM,IAAA,GAAO,eAAA,CAAgB,UAAA,CAAW,IAAI,CAAA;AAC5C,IAAA,MAAM,SAAA,GAAY,oBAAA,CAAqB,UAAA,CAAW,IAAI,CAAA;AACtD,IAAA,IAAI,CAAC,IAAA,IAAQ,CAAC,SAAA,EAAW;AAGzB,IAAA,cAAA,CAAe,CAAA,EAAG,WAAW,IAAA,CAAK,OAAA,CAAQ,MAAM,GAAG,CAAC,QAAQ,CAAA,GAAI;AAAA,MAC9D,IAAA,EAAM,IAAIA,yBAAA,CAAkB;AAAA,QAC1B,MAAM,CAAA,EAAG,UAAA,CAAW,KAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA,cAAA,CAAA;AAAA,QAC3C,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK,EAAE,IAAA,EAAK;AAAA,UACZ,OAAA,EAAS,EAAE,IAAA,EAAML,qBAAA;AAAc;AACjC,OACD,CAAA;AAAA,MACD,IAAA,EAAM;AAAA,QACJ,MAAM,EAAE,IAAA,EAAM,IAAIM,sBAAA,CAAe,SAAS,CAAA,EAAE;AAAA,QAC5C,KAAA,EAAO,EAAE,IAAA,EAAMH,sBAAA;AAAe,OAChC;AAAA,MACA,OAAA,EAAS,OAAO,CAAA,EAAQ,IAAA,EAAW,GAAA,KAAa;AAC9C,QAAA,MAAM,WAAA,CAAY,YAAY,QAAA,EAAU;AAAA,UACtC,IAAA;AAAA,UACA,GAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,EAAA,CAAG,gBAAA,CAAiB,EAAE,QAAA,EAAU,QAAA,EAAU,QAAQ,IAAA,EAAM,EAAA,IAAM,EAAA,EAAI,IAAA,EAAM,MAAM,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,IAAA,KAAS,eAAe,CAAA;AAAA,QAClI;AACA,QAAA,MAAM,MAAA,GAAS,QAAA,CAAS,kBAAA,CAAmB,UAAA,CAAW,IAAI,CAAA;AAE1D,QAAA,MAAM,SAAA,GAAY,MAAA,CAAO,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AAExC,QAAA,MAAM,GAAA,GAAM,MAAM,EAAA,CAAG,MAAA,CAAO;AAAA,UAC1B,YAAY,UAAA,CAAW,IAAA;AAAA,UACvB,IAAA,EAAM,SAAA;AAAA,UACN;AAAA,SACD,CAAA;AAED,QAAA,OAAO,EAAE,GAAA,EAAK,OAAA,EAAS,sBAAA,EAAuB;AAAA,MAChD;AAAA,KACF;AAGA,IAAA,cAAA,CAAe,CAAA,EAAG,WAAW,IAAA,CAAK,OAAA,CAAQ,MAAM,GAAG,CAAC,QAAQ,CAAA,GAAI;AAAA,MAC9D,IAAA,EAAM,IAAIE,yBAAA,CAAkB;AAAA,QAC1B,MAAM,CAAA,EAAG,UAAA,CAAW,KAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA,cAAA,CAAA;AAAA,QAC3C,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK,EAAE,IAAA,EAAK;AAAA,UACZ,OAAA,EAAS,EAAE,IAAA,EAAML,qBAAA;AAAc;AACjC,OACD,CAAA;AAAA,MACD,IAAA,EAAM;AAAA,QACJ,IAAI,EAAE,IAAA,EAAM,IAAIM,sBAAA,CAAeN,qBAAa,CAAA,EAAE;AAAA,QAC9C,MAAM,EAAE,IAAA,EAAM,IAAIM,sBAAA,CAAe,SAAS,CAAA,EAAE;AAAA,QAC5C,aAAA,EAAe,EAAE,IAAA,EAAMN,qBAAA,EAAc;AAAA,QACrC,KAAA,EAAO,EAAE,IAAA,EAAMG,sBAAA;AAAe,OAChC;AAAA,MACA,OAAA,EAAS,OAAO,CAAA,EAAQ,IAAA,EAAW,GAAA,KAAa;AAC9C,QAAA,MAAM,WAAA,CAAY,YAAY,QAAA,EAAU;AAAA,UACtC,IAAA;AAAA,UACA,GAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,EAAA,CAAG,gBAAA,CAAiB,EAAE,QAAA,EAAU,QAAA,EAAU,QAAQ,IAAA,EAAM,EAAA,IAAM,EAAA,EAAI,IAAA,EAAM,MAAM,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,IAAA,KAAS,eAAe,CAAA;AAAA,QAClI;AAGA,QAAA,IAAI,KAAK,aAAA,EAAe;AACtB,UAAA,MAAM,WAAA,GAAc,MAAM,EAAA,CAAG,QAAA,CAA8B;AAAA,YACzD,YAAY,UAAA,CAAW,IAAA;AAAA,YACvB,IAAI,IAAA,CAAK,EAAA;AAAA,YACT,QAAA;AAAA,YACA,KAAA,EAAO;AAAA,WACR,CAAA;AACD,UAAA,IAAI,eAAe,WAAA,CAAY,SAAA,IAAa,IAAA,CAAK,aAAA,KAAkB,YAAY,SAAA,EAAW;AACxF,YAAA,MAAM,QAAA;AAAA,cACJ,CAAA,8CAAA,EAAiD,IAAA,CAAK,aAAa,CAAA,qBAAA,EAAwB,YAAY,SAAS,CAAA,CAAA;AAAA,cAChH;AAAA,aACF;AAAA,UACF;AAAA,QACF;AAEA,QAAA,MAAM,MAAA,GAAS,QAAA,CAAS,kBAAA,CAAmB,UAAA,CAAW,IAAI,CAAA;AAE1D,QAAA,MAAM,SAAA,GAAY,MAAA,CAAO,KAAA,CAAM,IAAA,CAAK,IAAI,CAAA;AAExC,QAAA,MAAM,GAAA,GAAM,MAAM,EAAA,CAAG,MAAA,CAAO;AAAA,UAC1B,YAAY,UAAA,CAAW,IAAA;AAAA,UACvB,IAAI,IAAA,CAAK,EAAA;AAAA,UACT,IAAA,EAAM,SAAA;AAAA,UACN;AAAA,SACD,CAAA;AAED,QAAA,OAAO,EAAE,GAAA,EAAK,OAAA,EAAS,sBAAA,EAAuB;AAAA,MAChD;AAAA,KACF;AAGA,IAAA,cAAA,CAAe,CAAA,EAAG,WAAW,IAAA,CAAK,OAAA,CAAQ,MAAM,GAAG,CAAC,QAAQ,CAAA,GAAI;AAAA,MAC9D,IAAA,EAAM,IAAIE,yBAAA,CAAkB;AAAA,QAC1B,MAAM,CAAA,EAAG,UAAA,CAAW,KAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA,cAAA,CAAA;AAAA,QAC3C,MAAA,EAAQ;AAAA,UACN,GAAA,EAAK,EAAE,IAAA,EAAK;AAAA,UACZ,OAAA,EAAS,EAAE,IAAA,EAAML,qBAAA;AAAc;AACjC,OACD,CAAA;AAAA,MACD,IAAA,EAAM;AAAA,QACJ,IAAI,EAAE,IAAA,EAAM,IAAIM,sBAAA,CAAeN,qBAAa,CAAA;AAAE,OAChD;AAAA,MACA,OAAA,EAAS,OAAO,CAAA,EAAQ,IAAA,EAAW,GAAA,KAAa;AAC9C,QAAA,MAAM,WAAA,CAAY,YAAY,QAAA,EAAU;AAAA,UACtC,IAAA;AAAA,UACA,GAAA;AAAA,UACA,QAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,EAAA,CAAG,gBAAA,CAAiB,EAAE,QAAA,EAAU,QAAA,EAAU,QAAQ,IAAA,EAAM,EAAA,IAAM,EAAA,EAAI,IAAA,EAAM,MAAM,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,IAAA,KAAS,eAAe,CAAA;AAAA,QAClI;AACA,QAAA,MAAM,GAAA,GAAM,MAAM,EAAA,CAAG,MAAA,CAAO;AAAA,UAC1B,YAAY,UAAA,CAAW,IAAA;AAAA,UACvB,IAAI,IAAA,CAAK,EAAA;AAAA,UACT;AAAA,SACD,CAAA;AAED,QAAA,OAAO,EAAE,GAAA,EAAK,OAAA,EAAS,sBAAA,EAAuB;AAAA,MAChD;AAAA,KACF;AAAA,EACF;AAGA,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,MAAM,SAAA,GAAY,gBAAA,CAAiB,MAAA,CAAO,IAAI,CAAA;AAC9C,IAAA,IAAI,CAAC,SAAA,EAAW;AAEhB,IAAA,cAAA,CAAe,CAAA,EAAG,OAAO,IAAA,CAAK,OAAA,CAAQ,MAAM,GAAG,CAAC,QAAQ,CAAA,GAAI;AAAA,MAC1D,IAAA,EAAM,IAAIK,yBAAA,CAAkB;AAAA,QAC1B,MAAM,CAAA,EAAG,MAAA,CAAO,KAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA,cAAA,CAAA;AAAA,QACvC,MAAA,EAAQ;AAAA,UACN,KAAK,EAAE,IAAA,EAAM,YAAY,MAAA,CAAO,IAAI,KAAKL,qBAAA,EAAc;AAAA,UACvD,OAAA,EAAS,EAAE,IAAA,EAAMA,qBAAA;AAAc;AACjC,OACD,CAAA;AAAA,MACD,IAAA,EAAM;AAAA,QACJ,MAAM,EAAE,IAAA,EAAM,IAAIM,sBAAA,CAAe,SAAS,CAAA;AAAE,OAC9C;AAAA,MACA,OAAA,EAAS,OAAO,CAAA,EAAQ,IAAA,EAAW,GAAA,KAAa;AAC9C,QAAA,MAAM,oBAAA,CAAqB,QAAQ,QAAA,EAAU;AAAA,UAC3C,IAAA;AAAA,UACA,GAAA;AAAA,UACA;AAAA,SACD,CAAA;AACD,QAAA,IAAI,QAAA,EAAU;AACZ,UAAA,EAAA,CAAG,gBAAA,CAAiB,EAAE,QAAA,EAAU,QAAA,EAAU,QAAQ,IAAA,EAAM,EAAA,IAAM,EAAA,EAAI,IAAA,EAAM,MAAM,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,IAAA,KAAS,eAAe,CAAA;AAAA,QAClI;AAEA,QAAA,MAAM,GAAA,GAAM,MAAM,EAAA,CAAG,OAAA,CAAQ;AAAA,UAC3B,UAAA,EAAY,CAAA,SAAA,EAAY,MAAA,CAAO,IAAI,CAAA,CAAA;AAAA,UACnC,OAAO,EAAC;AAAA,UACR;AAAA,SACD,CAAA;AAED,QAAA,IAAI,MAAA;AACJ,QAAA,IAAI,GAAA,EAAK;AACP,UAAA,MAAA,GAAS,MAAM,GAAG,MAAA,CAAO;AAAA,YACvB,UAAA,EAAY,CAAA,SAAA,EAAY,MAAA,CAAO,IAAI,CAAA,CAAA;AAAA,YACnC,IAAI,GAAA,CAAI,EAAA;AAAA,YACR,MAAM,IAAA,CAAK,IAAA;AAAA,YACX;AAAA,WACD,CAAA;AAAA,QACH,CAAA,MAAO;AACL,UAAA,MAAA,GAAS,MAAM,GAAG,MAAA,CAAO;AAAA,YACvB,UAAA,EAAY,CAAA,SAAA,EAAY,MAAA,CAAO,IAAI,CAAA,CAAA;AAAA,YACnC,MAAM,IAAA,CAAK,IAAA;AAAA,YACX;AAAA,WACD,CAAA;AAAA,QACH;AAEA,QAAA,OAAO,EAAE,GAAA,EAAK,MAAA,EAAQ,OAAA,EAAS,sBAAA,EAAuB;AAAA,MACxD;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,QAAA,GAAW,IAAID,yBAAA,CAAkB;AAAA,IACrC,IAAA,EAAM,UAAA;AAAA,IACN,MAAA,EAAQ;AAAA,GACT,CAAA;AAED,EAAA,OAAO,IAAIK,qBAAA,CAAc;AAAA,IACvB,KAAA,EAAO,KAAA;AAAA,IACP,QAAA,EAAU;AAAA,GACX,CAAA;AACH;AAMO,SAAS,mBAAA,CACd,QAAA,EACA,EAAA,EACA,OAAA,EAMiC;AACjC,EAAA,MAAM,SAAS,kBAAA,CAAmB;AAAA,IAChC,QAAA;AAAA,IACA,EAAA;AAAA,IACA,MAAM,OAAA,EAAS,IAAA;AAAA,IACf,KAAK,OAAA,EAAS,GAAA;AAAA,IACd,UAAU,OAAA,EAAS,QAAA;AAAA,IACnB,QAAQ,OAAA,EAAS;AAAA,GAClB,CAAA;AACD,EAAA,OAAO,MAAA,CAAO,OAAO,MAAA,EAAQ,EAAE,KAAKC,mBAAA,CAAY,MAAM,GAAG,CAAA;AAC3D","file":"chunk-RRKCIAPU.cjs","sourcesContent":["import {\n GraphQLSchema,\n GraphQLObjectType,\n GraphQLString,\n GraphQLInt,\n GraphQLBoolean,\n GraphQLFloat,\n GraphQLList,\n GraphQLNonNull,\n GraphQLInputObjectType,\n GraphQLEnumType,\n GraphQLUnionType,\n type GraphQLFieldConfig,\n type GraphQLType,\n type GraphQLOutputType,\n printSchema,\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 type { WhereClause } from \"../../access/types.js\";\nimport { checkCollectionAccess, checkGlobalAccess } from \"../../access/checker.js\";\nimport type { AccessContext } from \"../../access/checker.js\";\nimport type { User, Request } from \"../../hooks/types.js\";\n\n// ============================================================================\n// Simple DataLoader for Relationship N+1 Prevention\n// ============================================================================\n\ninterface LoaderOptions {\n db: BaseAdapter;\n tenantID?: string;\n user?: User;\n}\n\nclass 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\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 // Mark as pending so batch knows\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 // Placeholder — will be batch-resolved\n cache.set(id, undefined);\n return undefined;\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 }\n }\n }\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 static async withBatch<T>(\n loader: RelationLoader,\n fn: () => Promise<T>,\n ): Promise<T> {\n const result = await fn();\n await loader.flushAll();\n return result;\n }\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 Check — wraps shared checker with GraphQL error throwing\n// ============================================================================\n\nasync function checkAccess(\n config: { access?: any; slug: string },\n operation: \"read\" | \"create\" | \"update\" | \"delete\",\n context: AccessContext,\n): Promise<WhereClause | undefined> {\n const result = await checkCollectionAccess(config, operation, context);\n if (!result.allowed) {\n throw gqlError(result.error || \"Access denied\", \"FORBIDDEN\");\n }\n return result.extraWhere;\n}\n\nasync function checkGqlGlobalAccess(\n config: { access?: any; slug: string },\n operation: \"read\" | \"update\",\n context: AccessContext,\n): Promise<void> {\n const result = await checkGlobalAccess(config, operation, context);\n if (!result.allowed) {\n throw gqlError(result.error || \"Access denied\", \"FORBIDDEN\");\n }\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 loader?: RelationLoader,\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 case \"upload\":\n return GraphQLString;\n case \"number\":\n return field.integer ? GraphQLInt : GraphQLFloat;\n case \"checkbox\":\n return GraphQLBoolean;\n case \"json\":\n case \"richtext\":\n return GraphQLString;\n case \"relationship\":\n if (typeof field.relationTo === \"string\") {\n if (isInputType) {\n if (field.hasMany) {\n return new GraphQLList(GraphQLString);\n }\n return GraphQLString;\n }\n if (collectionTypes?.[field.relationTo]) {\n const refType = collectionTypes[field.relationTo];\n if (field.hasMany) {\n return new GraphQLList(refType);\n }\n return refType;\n }\n const relatedCollection = registry.getCollection(field.relationTo);\n if (relatedCollection) {\n const refName = `${field.relationTo.replace(/-/g, \"_\")}_ref`;\n const refType = new GraphQLObjectType({\n name: refName,\n fields: () => ({\n id: { type: GraphQLString },\n ...buildFieldsFromCollection(relatedCollection, registry, collectionTypes),\n }),\n });\n if (collectionTypes) {\n collectionTypes[field.relationTo] = refType;\n }\n if (field.hasMany) {\n return new GraphQLList(refType);\n }\n return refType;\n }\n }\n return field.hasMany ? new GraphQLList(GraphQLString) : GraphQLString;\n case \"array\": {\n if (isInputType) return GraphQLString;\n const arrFields = (field as any).fields as Field[] | undefined;\n if (arrFields && arrFields.length > 0) {\n const arrTypeName = `${field.name?.replace(/-/g, \"_\") || \"array\"}_item`;\n const itemType = fieldsToGraphQLObjectType(arrTypeName, arrFields, registry, collectionTypes, loader);\n return new GraphQLList(itemType);\n }\n return new GraphQLList(GraphQLString);\n }\n case \"group\": {\n if (isInputType) return GraphQLString;\n const groupFields = (field as any).fields as Field[] | undefined;\n if (groupFields && groupFields.length > 0) {\n const groupTypeName = `${field.name?.replace(/-/g, \"_\") || \"group\"}_group`;\n return fieldsToGraphQLObjectType(groupTypeName, groupFields, registry, collectionTypes, loader);\n }\n return GraphQLString;\n }\n case \"blocks\": {\n if (isInputType) return GraphQLString;\n const blocks = (field as any).blocks as Array<{ slug: string; label: string; fields: Field[] }> | undefined;\n if (blocks && blocks.length > 0) {\n const blockTypes: GraphQLObjectType[] = [];\n for (const block of blocks) {\n const blockTypeName = `Block_${block.slug.replace(/-/g, \"_\")}`;\n const bType = new GraphQLObjectType({\n name: blockTypeName,\n fields: () => {\n const out: Record<string, GraphQLFieldConfig<any, any>> = {\n blockType: { type: new GraphQLNonNull(GraphQLString) },\n id: { type: GraphQLString },\n };\n if (block.fields) {\n for (const bf of block.fields) {\n if (!bf.name) continue;\n const bfConfig = buildFieldConfig(bf, registry, collectionTypes, loader);\n if (bfConfig) out[bf.name] = bfConfig;\n }\n }\n return out;\n },\n });\n blockTypes.push(bType);\n }\n if (blockTypes.length > 0) {\n const unionName = `${field.name?.replace(/-/g, \"_\") || \"blocks\"}_union`;\n return new GraphQLUnionType({\n name: unionName,\n types: blockTypes,\n resolveType(value: any) {\n const blockName = `Block_${(value?.blockType || \"\").replace(/-/g, \"_\")}`;\n const blockType = blockTypes.find(\n (bt) => bt.name === blockName,\n );\n return blockType?.name || undefined;\n },\n });\n }\n }\n return new GraphQLList(GraphQLString);\n }\n case \"row\":\n case \"collapsible\":\n case \"tabs\":\n return GraphQLString;\n default:\n return GraphQLString;\n }\n}\n\nfunction buildFieldsFromCollection(\n config: CollectionConfig,\n registry: Registry,\n collectionTypes?: Record<string, GraphQLObjectType>,\n loader?: RelationLoader,\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 fc = buildFieldConfig(field, registry, collectionTypes, loader);\n if (fc) fields[field.name] = fc;\n }\n }\n\n return fields;\n}\n\n// ============================================================================\n// Sort Enum Builder\n// ============================================================================\n\nfunction buildSortEnum(\n config: CollectionConfig,\n): GraphQLEnumType | undefined {\n const sortFields: Record<string, { value: string }> = {\n id: { value: \"id\" },\n createdAt: { value: \"createdAt\" },\n updatedAt: { value: \"updatedAt\" },\n };\n\n for (const field of config.fields) {\n if (field.name) {\n sortFields[field.name] = { value: field.name };\n sortFields[`${field.name}_asc`] = { value: `${field.name}` };\n sortFields[`${field.name}_desc`] = { value: `-${field.name}` };\n }\n }\n\n return new GraphQLEnumType({\n name: `${config.slug.replace(/-/g, \"_\")}_sort`,\n values: sortFields,\n });\n}\n\n// ============================================================================\n// Typed Filter Input Builders\n// ============================================================================\n\nfunction buildFieldFilterType(\n field: Field,\n namePrefix: string,\n): GraphQLInputObjectType | undefined {\n const safeName = `${namePrefix}_${field.name?.replace(/-/g, \"_\") || \"field\"}_filter`;\n\n const stringOps: Record<string, { type: GraphQLType }> = {\n equals: { type: GraphQLString },\n not_equals: { type: GraphQLString },\n contains: { type: GraphQLString },\n not_contains: { type: GraphQLString },\n in: { type: new GraphQLList(GraphQLString) },\n not_in: { type: new GraphQLList(GraphQLString) },\n exists: { type: GraphQLBoolean },\n };\n\n const numberOps: Record<string, { type: GraphQLType }> = {\n equals: { type: GraphQLFloat },\n not_equals: { type: GraphQLFloat },\n greater_than: { type: GraphQLFloat },\n less_than: { type: GraphQLFloat },\n greater_than_equal: { type: GraphQLFloat },\n less_than_equal: { type: GraphQLFloat },\n in: { type: new GraphQLList(GraphQLFloat) },\n not_in: { type: new GraphQLList(GraphQLFloat) },\n exists: { type: GraphQLBoolean },\n };\n\n const boolOps: Record<string, { type: GraphQLType }> = {\n equals: { type: GraphQLBoolean },\n exists: { type: GraphQLBoolean },\n };\n\n const dateOps: Record<string, { type: GraphQLType }> = {\n equals: { type: GraphQLString },\n not_equals: { type: GraphQLString },\n greater_than: { type: GraphQLString },\n less_than: { type: GraphQLString },\n exists: { type: GraphQLBoolean },\n };\n\n const relationOps: Record<string, { type: GraphQLType }> = {\n equals: { type: GraphQLString },\n not_equals: { type: GraphQLString },\n in: { type: new GraphQLList(GraphQLString) },\n not_in: { type: new GraphQLList(GraphQLString) },\n exists: { type: GraphQLBoolean },\n };\n\n const jsonOps: Record<string, { type: GraphQLType }> = {\n exists: { type: GraphQLBoolean },\n };\n\n let ops: Record<string, { type: GraphQLType }>;\n\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 \"select\":\n case \"radio\":\n case \"upload\":\n ops = stringOps;\n break;\n case \"number\":\n ops = numberOps;\n break;\n case \"checkbox\":\n ops = boolOps;\n break;\n case \"date\":\n ops = dateOps;\n break;\n case \"relationship\":\n ops = relationOps;\n break;\n case \"json\":\n case \"richtext\":\n ops = jsonOps;\n break;\n default:\n ops = { exists: { type: GraphQLBoolean } };\n }\n\n return new GraphQLInputObjectType({\n name: safeName,\n fields: ops as any,\n });\n}\n\nfunction buildCollectionFilterType(\n config: CollectionConfig,\n namePrefix: string,\n): GraphQLInputObjectType {\n const fields: Record<string, { type: GraphQLType }> = {\n AND: { type: new GraphQLList(GraphQLString) },\n OR: { type: new GraphQLList(GraphQLString) },\n };\n\n for (const field of config.fields) {\n if (!field.name) continue;\n const filterType = buildFieldFilterType(field, namePrefix);\n if (filterType) {\n fields[field.name] = { type: filterType };\n }\n }\n\n return new GraphQLInputObjectType({\n name: `${namePrefix}_filter`,\n fields: fields as any,\n });\n}\n\nfunction translateFilter(filter: Record<string, any>): Record<string, any> {\n if (!filter || typeof filter !== \"object\") return filter || {};\n \n const result: Record<string, any> = {};\n \n for (const [key, value] of Object.entries(filter)) {\n if (key === \"AND\" || key === \"OR\") continue; // compound operators not yet supported at DB level\n result[key] = value;\n }\n \n return result;\n}\n\n// ============================================================================\n// Complex Field Type Helpers\n// ============================================================================\n\nfunction fieldsToGraphQLObjectType(\n name: string,\n fields: Field[],\n registry: Registry,\n collectionTypes?: Record<string, any>,\n loader?: RelationLoader,\n): GraphQLObjectType {\n return new GraphQLObjectType({\n name,\n fields: () => {\n const out: Record<string, GraphQLFieldConfig<any, any>> = {};\n for (const field of fields) {\n if (!field.name) continue;\n if (field.type === \"row\" || field.type === \"collapsible\") {\n const subFields = (field as any).fields as Field[];\n if (subFields) {\n for (const sf of subFields) {\n if (!sf.name) continue;\n const fc = buildFieldConfig(sf, registry, collectionTypes, loader);\n if (fc) out[sf.name] = fc;\n }\n }\n } else if (field.type === \"tabs\") {\n const tabs = (field as any).tabs as Array<{ label: string; fields: Field[] }>;\n if (tabs) {\n for (const tab of tabs) {\n if (tab.fields) {\n for (const sf of tab.fields) {\n if (!sf.name) continue;\n const fc = buildFieldConfig(sf, registry, collectionTypes, loader);\n if (fc) out[sf.name] = fc;\n }\n }\n }\n }\n } else {\n const fc = buildFieldConfig(field, registry, collectionTypes, loader);\n if (fc) out[field.name] = fc;\n }\n }\n return out;\n },\n });\n}\n\nfunction buildFieldConfig(\n field: Field,\n registry: Registry,\n collectionTypes?: Record<string, any>,\n loader?: RelationLoader,\n): GraphQLFieldConfig<any, any> | null {\n if (!field.name) return null;\n if (field.type === \"relationship\" && !(field as any).hasMany) {\n const gqlType = fieldToGraphQLType(field, registry, collectionTypes, false, loader) as GraphQLOutputType;\n return {\n type: field.required ? new GraphQLNonNull(gqlType) : gqlType,\n description: field.admin?.description || field.label,\n resolve: (source: any) => {\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 loader.load(relField.relationTo, id);\n }\n return { id };\n },\n };\n }\n if (field.type === \"relationship\" && (field as any).hasMany) {\n const gqlType = fieldToGraphQLType(field, registry, collectionTypes, false, loader) as GraphQLOutputType;\n return {\n type: gqlType,\n description: field.admin?.description || field.label,\n resolve: (source: any) => {\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 loader.load(relField.relationTo, id);\n results.push({ id });\n }\n }\n return results;\n }\n return ids.map((id: string) => ({ id }));\n },\n };\n }\n return {\n type: field.required\n ? new GraphQLNonNull(fieldToGraphQLType(field, registry, collectionTypes, false, loader) as any)\n : (fieldToGraphQLType(field, registry, collectionTypes, false, loader) as any),\n description: field.admin?.description || field.label,\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 // Create DataLoader for relationship resolution\n const relationLoader = new RelationLoader({ db, tenantID, user });\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: `${collection.slug.replace(/-/g, \"_\")}_type`,\n fields: () => ({\n id: { type: GraphQLString },\n ...buildFieldsFromCollection(collection, registry, collectionTypes, relationLoader),\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: `${collection.slug.replace(/-/g, \"_\")}_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: `${global.slug.replace(/-/g, \"_\")}_global_type`,\n fields: () => ({\n id: { type: GraphQLString },\n ...buildFieldsFromCollection(\n { slug: global.slug, fields: global.fields } as CollectionConfig,\n registry,\n collectionTypes,\n relationLoader,\n ),\n }),\n });\n\n globalInputTypes[global.slug] = new GraphQLInputObjectType({\n name: `${global.slug.replace(/-/g, \"_\")}_global_input`,\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 // Filter and sort types for this collection\n const filterType = buildCollectionFilterType(collection, collection.slug.replace(/-/g, \"_\"));\n const sortEnum = buildSortEnum(collection);\n\n // FindMany query\n queryFields[`${collection.slug.replace(/-/g, \"_\")}Find`] = {\n type: new GraphQLObjectType({\n name: `${collection.slug.replace(/-/g, \"_\")}_find_result`,\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: filterType },\n sort: { type: sortEnum || GraphQLString },\n limit: { type: GraphQLInt },\n page: { type: GraphQLInt },\n draft: { type: GraphQLBoolean },\n },\n resolve: async (_: any, args: any, ctx: any) => {\n const extraWhere = await checkAccess(collection, \"read\", {\n user,\n req,\n tenantID,\n apiKey,\n });\n\n if (tenantID) {\n db.setTenantContext({ tenantId: tenantID, userId: user?.id ?? '', role: user?.role, isSuperAdmin: user?.role === 'super_admin' });\n }\n\n let where: Record<string, any> = {};\n if (args.where) {\n if (typeof args.where === \"string\") {\n try { where = JSON.parse(args.where); } catch {}\n } else {\n where = translateFilter(args.where);\n }\n }\n\n if (extraWhere) {\n where = { ...where, ...extraWhere };\n }\n\n const isDraft = args.draft ?? !!user;\n\n return RelationLoader.withBatch(relationLoader, async () => {\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,\n draft: isDraft,\n });\n });\n },\n };\n\n // FindByID query\n queryFields[`${collection.slug.replace(/-/g, \"_\")}FindByID`] = {\n type,\n args: {\n id: { type: new GraphQLNonNull(GraphQLString) },\n draft: { type: GraphQLBoolean },\n },\n resolve: async (_: any, args: any, ctx: any) => {\n const access = await checkAccess(collection, \"read\", {\n user,\n req,\n tenantID,\n apiKey,\n });\n\n if (tenantID) {\n db.setTenantContext({ tenantId: tenantID, userId: user?.id ?? '', role: user?.role, isSuperAdmin: user?.role === 'super_admin' });\n }\n\n const isDraft = args.draft ?? !!user;\n return RelationLoader.withBatch(relationLoader, async () => {\n const doc = await db.findByID({\n collection: collection.slug,\n id: args.id,\n tenantID,\n draft: isDraft,\n });\n return doc;\n });\n },\n };\n\n // Count query\n queryFields[`${collection.slug.replace(/-/g, \"_\")}Count`] = {\n type: new GraphQLObjectType({\n name: `${collection.slug.replace(/-/g, \"_\")}_count`,\n fields: {\n totalDocs: { type: GraphQLInt },\n },\n }),\n args: {\n where: { type: GraphQLString },\n },\n resolve: async (_: any, args: any, ctx: any) => {\n await checkAccess(collection, \"read\", {\n user,\n req,\n tenantID,\n apiKey,\n });\n let where = {};\n if (args.where) {\n if (typeof args.where === \"string\") {\n try { where = JSON.parse(args.where); } catch {}\n } else {\n where = translateFilter(args.where);\n }\n }\n const count = await db.count({\n collection: collection.slug,\n where,\n 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[`${global.slug.replace(/-/g, \"_\")}Get`] = {\n type,\n resolve: async () => {\n await checkGqlGlobalAccess(global, \"read\", {\n user,\n req,\n tenantID,\n });\n if (tenantID) {\n db.setTenantContext({ tenantId: tenantID, userId: user?.id ?? '', role: user?.role, isSuperAdmin: user?.role === 'super_admin' });\n }\n return db.findOne({\n collection: `_globals_${global.slug}`,\n where: {},\n 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[`${collection.slug.replace(/-/g, \"_\")}Create`] = {\n type: new GraphQLObjectType({\n name: `${collection.slug.replace(/-/g, \"_\")}_create_result`,\n fields: {\n doc: { type },\n message: { type: GraphQLString },\n },\n }),\n args: {\n data: { type: new GraphQLNonNull(inputType) },\n draft: { type: GraphQLBoolean },\n },\n resolve: async (_: any, args: any, ctx: any) => {\n await checkAccess(collection, \"create\", {\n user,\n req,\n tenantID,\n apiKey,\n });\n if (tenantID) {\n db.setTenantContext({ tenantId: tenantID, userId: user?.id ?? '', role: user?.role, isSuperAdmin: 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,\n });\n\n return { doc, message: \"Created successfully\" };\n },\n };\n\n // Update mutation\n mutationFields[`${collection.slug.replace(/-/g, \"_\")}Update`] = {\n type: new GraphQLObjectType({\n name: `${collection.slug.replace(/-/g, \"_\")}_update_result`,\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 draft: { type: GraphQLBoolean },\n },\n resolve: async (_: any, args: any, ctx: any) => {\n await checkAccess(collection, \"update\", {\n user,\n req,\n tenantID,\n apiKey,\n });\n if (tenantID) {\n db.setTenantContext({ tenantId: tenantID, userId: user?.id ?? '', role: user?.role, isSuperAdmin: 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,\n draft: true,\n });\n if (originalDoc && originalDoc.updatedAt && args.baseUpdatedAt !== originalDoc.updatedAt) {\n throw gqlError(\n `Revision conflict: document has changed since ${args.baseUpdatedAt}. Current updatedAt: ${originalDoc.updatedAt}`,\n \"CONFLICT\",\n );\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,\n });\n\n return { doc, message: \"Updated successfully\" };\n },\n };\n\n // Delete mutation\n mutationFields[`${collection.slug.replace(/-/g, \"_\")}Delete`] = {\n type: new GraphQLObjectType({\n name: `${collection.slug.replace(/-/g, \"_\")}_delete_result`,\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, ctx: any) => {\n await checkAccess(collection, \"delete\", {\n user,\n req,\n tenantID,\n apiKey,\n });\n if (tenantID) {\n db.setTenantContext({ tenantId: tenantID, userId: user?.id ?? '', role: user?.role, isSuperAdmin: user?.role === 'super_admin' });\n }\n const doc = await db.delete({\n collection: collection.slug,\n id: args.id,\n 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[`${global.slug.replace(/-/g, \"_\")}Update`] = {\n type: new GraphQLObjectType({\n name: `${global.slug.replace(/-/g, \"_\")}_update_result`,\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, ctx: any) => {\n await checkGqlGlobalAccess(global, \"update\", {\n user,\n req,\n tenantID,\n });\n if (tenantID) {\n db.setTenantContext({ tenantId: tenantID, userId: user?.id ?? '', role: user?.role, isSuperAdmin: user?.role === 'super_admin' });\n }\n\n const doc = await db.findOne({\n collection: `_globals_${global.slug}`,\n where: {},\n 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,\n });\n } else {\n result = await db.create({\n collection: `_globals_${global.slug}`,\n data: args.data,\n 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 & { sdl: string } {\n const schema = buildGraphQLSchema({\n registry,\n db,\n user: options?.user,\n req: options?.req,\n tenantID: options?.tenantID,\n apiKey: options?.apiKey,\n });\n return Object.assign(schema, { sdl: printSchema(schema) });\n}\n"]}
|
|
@@ -11,15 +11,15 @@ var fs__default = /*#__PURE__*/_interopDefault(fs);
|
|
|
11
11
|
|
|
12
12
|
// src/integration.ts
|
|
13
13
|
var API_HANDLER_ENTRYPOINT = path__default.default.resolve(
|
|
14
|
-
new URL(".", (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-
|
|
14
|
+
new URL(".", (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-U3VVLYXG.cjs', document.baseURI).href))).pathname,
|
|
15
15
|
"api-handler.js"
|
|
16
16
|
);
|
|
17
17
|
var GRAPHQL_HANDLER_ENTRYPOINT = path__default.default.resolve(
|
|
18
|
-
new URL(".", (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-
|
|
18
|
+
new URL(".", (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-U3VVLYXG.cjs', document.baseURI).href))).pathname,
|
|
19
19
|
"api-handler-graphql.js"
|
|
20
20
|
);
|
|
21
21
|
var TRPC_HANDLER_ENTRYPOINT = path__default.default.resolve(
|
|
22
|
-
new URL(".", (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-
|
|
22
|
+
new URL(".", (typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-U3VVLYXG.cjs', document.baseURI).href))).pathname,
|
|
23
23
|
"api-handler-trpc.js"
|
|
24
24
|
);
|
|
25
25
|
function kyro(options = {}) {
|
|
@@ -48,13 +48,61 @@ function kyro(options = {}) {
|
|
|
48
48
|
updateConfig({
|
|
49
49
|
vite: {
|
|
50
50
|
ssr: {
|
|
51
|
-
external: [
|
|
51
|
+
external: [
|
|
52
|
+
"better-sqlite3",
|
|
53
|
+
"pg",
|
|
54
|
+
"mongodb",
|
|
55
|
+
"ioredis",
|
|
56
|
+
"sharp",
|
|
57
|
+
"ssh2",
|
|
58
|
+
"cpu-features",
|
|
59
|
+
"ssh2-sftp-client",
|
|
60
|
+
"nodemailer",
|
|
61
|
+
"jsonwebtoken",
|
|
62
|
+
"@mapbox/node-pre-gyp",
|
|
63
|
+
"mock-aws-s3",
|
|
64
|
+
"aws-sdk",
|
|
65
|
+
"nock"
|
|
66
|
+
]
|
|
52
67
|
},
|
|
53
68
|
build: {
|
|
54
69
|
rollupOptions: {
|
|
55
|
-
external: [
|
|
70
|
+
external: [
|
|
71
|
+
"better-sqlite3",
|
|
72
|
+
"pg",
|
|
73
|
+
"mongodb",
|
|
74
|
+
"ioredis",
|
|
75
|
+
"sharp",
|
|
76
|
+
"ssh2",
|
|
77
|
+
"cpu-features",
|
|
78
|
+
"ssh2-sftp-client",
|
|
79
|
+
"nodemailer",
|
|
80
|
+
"jsonwebtoken",
|
|
81
|
+
"@mapbox/node-pre-gyp",
|
|
82
|
+
"mock-aws-s3",
|
|
83
|
+
"aws-sdk",
|
|
84
|
+
"nock"
|
|
85
|
+
]
|
|
56
86
|
}
|
|
57
87
|
},
|
|
88
|
+
optimizeDeps: {
|
|
89
|
+
exclude: [
|
|
90
|
+
"better-sqlite3",
|
|
91
|
+
"pg",
|
|
92
|
+
"mongodb",
|
|
93
|
+
"ioredis",
|
|
94
|
+
"sharp",
|
|
95
|
+
"ssh2",
|
|
96
|
+
"cpu-features",
|
|
97
|
+
"ssh2-sftp-client",
|
|
98
|
+
"nodemailer",
|
|
99
|
+
"jsonwebtoken",
|
|
100
|
+
"@mapbox/node-pre-gyp",
|
|
101
|
+
"mock-aws-s3",
|
|
102
|
+
"aws-sdk",
|
|
103
|
+
"nock"
|
|
104
|
+
]
|
|
105
|
+
},
|
|
58
106
|
plugins: [
|
|
59
107
|
{
|
|
60
108
|
name: "use-sync-external-store-shim-fix",
|
|
@@ -137,5 +185,5 @@ export function useSyncExternalStoreWithSelector(subscribe, getSnapshot, getServ
|
|
|
137
185
|
}
|
|
138
186
|
|
|
139
187
|
exports.kyro = kyro;
|
|
140
|
-
//# sourceMappingURL=chunk-
|
|
141
|
-
//# sourceMappingURL=chunk-
|
|
188
|
+
//# sourceMappingURL=chunk-U3VVLYXG.cjs.map
|
|
189
|
+
//# sourceMappingURL=chunk-U3VVLYXG.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/integration.ts"],"names":["path","fs"],"mappings":"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","file":"chunk-U3VVLYXG.cjs","sourcesContent":["import type { AstroIntegration } from \"astro\";\nimport path from \"path\";\nimport fs from \"fs\";\n\nconst API_HANDLER_ENTRYPOINT = path.resolve(\n new URL(\".\", import.meta.url).pathname,\n \"api-handler.js\",\n);\nconst GRAPHQL_HANDLER_ENTRYPOINT = path.resolve(\n new URL(\".\", import.meta.url).pathname,\n \"api-handler-graphql.js\",\n);\nconst TRPC_HANDLER_ENTRYPOINT = path.resolve(\n new URL(\".\", import.meta.url).pathname,\n \"api-handler-trpc.js\",\n);\n\nexport interface KyroIntegrationOptions {\n configPath?: string;\n apiPath?: string;\n adminPath?: string;\n admin?: boolean;\n enableGraphQL?: boolean;\n enableTRPC?: boolean;\n enableWebSocket?: boolean;\n}\n\nexport default function kyro(options: KyroIntegrationOptions = {}): AstroIntegration {\n const {\n configPath = \"./kyro.config.ts\",\n apiPath = \"/api\",\n adminPath = \"/admin\",\n admin = true,\n enableGraphQL = false,\n enableTRPC = false,\n enableWebSocket = false,\n } = options;\n\n return {\n name: \"@kyro-cms/core\",\n hooks: {\n \"astro:config:setup\": async ({ config, updateConfig, injectRoute, logger }) => {\n logger.info(`Setting up Kyro CMS (API: ${apiPath}, Admin: ${adminPath})`);\n \n if (apiPath === adminPath) {\n throw new Error(`Kyro CMS: apiPath and adminPath cannot be the same (\"${apiPath}\")`);\n }\n\n const resolvedConfigPath = path.resolve(config.root.pathname, configPath);\n \n let finalConfigPath = resolvedConfigPath;\n if (!fs.existsSync(resolvedConfigPath)) {\n logger.warn(`Kyro config file not found at ${configPath}. The API will fail to boot if collections are needed.`);\n }\n \n updateConfig({\n vite: {\n ssr: {\n external: [\n \"better-sqlite3\",\n \"pg\",\n \"mongodb\",\n \"ioredis\",\n \"sharp\",\n \"ssh2\",\n \"cpu-features\",\n \"ssh2-sftp-client\",\n \"nodemailer\",\n \"jsonwebtoken\",\n \"@mapbox/node-pre-gyp\",\n \"mock-aws-s3\",\n \"aws-sdk\",\n \"nock\",\n ],\n },\n build: {\n rollupOptions: {\n external: [\n \"better-sqlite3\",\n \"pg\",\n \"mongodb\",\n \"ioredis\",\n \"sharp\",\n \"ssh2\",\n \"cpu-features\",\n \"ssh2-sftp-client\",\n \"nodemailer\",\n \"jsonwebtoken\",\n \"@mapbox/node-pre-gyp\",\n \"mock-aws-s3\",\n \"aws-sdk\",\n \"nock\",\n ],\n },\n },\n optimizeDeps: {\n exclude: [\n \"better-sqlite3\",\n \"pg\",\n \"mongodb\",\n \"ioredis\",\n \"sharp\",\n \"ssh2\",\n \"cpu-features\",\n \"ssh2-sftp-client\",\n \"nodemailer\",\n \"jsonwebtoken\",\n \"@mapbox/node-pre-gyp\",\n \"mock-aws-s3\",\n \"aws-sdk\",\n \"nock\",\n ],\n },\n plugins: [\n {\n name: \"use-sync-external-store-shim-fix\",\n enforce: \"pre\" as const,\n resolveId(id: string) {\n if (\n id === \"use-sync-external-store/shim\" ||\n id === \"use-sync-external-store/shim/index.js\"\n ) {\n return \"\\0virtual:use-sync-external-store-shim\";\n }\n if (\n id === \"use-sync-external-store/shim/with-selector\" ||\n id === \"use-sync-external-store/shim/with-selector.js\"\n ) {\n return \"\\0virtual:use-sync-external-store-shim-with-selector\";\n }\n },\n load(id: string) {\n if (id === \"\\0virtual:use-sync-external-store-shim\") {\n return `export { useSyncExternalStore } from \"react\";`;\n }\n if (id === \"\\0virtual:use-sync-external-store-shim-with-selector\") {\n return `\nimport { useSyncExternalStore, useMemo } from \"react\";\nexport function useSyncExternalStoreWithSelector(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {\n const memoizedSelector = useMemo(() => {\n let last, lastSnap, hasMemo = false;\n return (snap) => {\n if (!hasMemo || !Object.is(lastSnap, snap)) {\n const next = selector(snap);\n if (!hasMemo || !(isEqual ? isEqual(last, next) : Object.is(last, next))) {\n last = next; lastSnap = snap; hasMemo = true;\n }\n }\n return last;\n };\n }, [selector, isEqual]);\n const getSelection = () => memoizedSelector(getSnapshot());\n const getServerSelection = getServerSnapshot != null ? () => memoizedSelector(getServerSnapshot()) : undefined;\n return useSyncExternalStore(subscribe, getSelection, getServerSelection);\n}\n`;\n }\n },\n },\n ],\n resolve: {\n alias: {\n \"kyro:config\": finalConfigPath,\n },\n },\n define: {\n __KYRO_API_PATH__: JSON.stringify(apiPath),\n __KYRO_ADMIN_PATH__: JSON.stringify(adminPath),\n __KYRO_ENABLE_GRAPHQL__: JSON.stringify(enableGraphQL),\n __KYRO_ENABLE_TRPC__: JSON.stringify(enableTRPC),\n __KYRO_ENABLE_WS__: JSON.stringify(enableWebSocket),\n },\n },\n });\n \n injectRoute({\n pattern: `${apiPath}/[...path]`,\n entrypoint: API_HANDLER_ENTRYPOINT,\n });\n\n if (enableGraphQL) {\n injectRoute({\n pattern: `${apiPath}/graphql`,\n entrypoint: GRAPHQL_HANDLER_ENTRYPOINT,\n });\n logger.info(`GraphQL endpoint enabled at ${apiPath}/graphql`);\n }\n\n if (enableTRPC) {\n injectRoute({\n pattern: `${apiPath}/trpc/[...path]`,\n entrypoint: TRPC_HANDLER_ENTRYPOINT,\n });\n logger.info(`tRPC endpoint enabled at ${apiPath}/trpc`);\n }\n\n if (enableWebSocket) {\n logger.info(`WebSocket support enabled (auto-starts at first request)`);\n }\n },\n },\n };\n}\n"]}
|