payload-live-preview 1.0.2 → 1.0.4

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 (71) hide show
  1. package/README.md +150 -84
  2. package/dist/adapters/astro/RichText.astro +8 -4
  3. package/dist/adapters/astro/index.d.ts +84 -9
  4. package/dist/adapters/astro/index.js +1 -363
  5. package/dist/adapters/astro/index.js.map +1 -1
  6. package/dist/adapters/astro/middleware-entry.d.ts +1 -1
  7. package/dist/adapters/astro/middleware-entry.js +1 -296
  8. package/dist/adapters/astro/middleware-entry.js.map +1 -1
  9. package/dist/adapters/nextjs/index.d.ts +24 -10
  10. package/dist/adapters/nextjs/index.js +1 -305
  11. package/dist/adapters/nextjs/index.js.map +1 -1
  12. package/dist/adapters/nuxt/index.d.ts +20 -10
  13. package/dist/adapters/nuxt/index.js +1 -293
  14. package/dist/adapters/nuxt/index.js.map +1 -1
  15. package/dist/adapters/sveltekit/index.d.ts +22 -6
  16. package/dist/adapters/sveltekit/index.js +1 -272
  17. package/dist/adapters/sveltekit/index.js.map +1 -1
  18. package/dist/codegen-astro.js +1 -609
  19. package/dist/codegen-astro.js.map +1 -1
  20. package/dist/codegen-cli.js +1 -665
  21. package/dist/codegen-cli.js.map +1 -1
  22. package/dist/codegen.cjs +1 -550
  23. package/dist/codegen.cjs.map +1 -1
  24. package/dist/codegen.js +1 -546
  25. package/dist/codegen.js.map +1 -1
  26. package/dist/core.cjs +1 -3719
  27. package/dist/core.cjs.map +1 -1
  28. package/dist/core.d.cts +1210 -7
  29. package/dist/core.d.ts +1210 -7
  30. package/dist/core.js +1 -3692
  31. package/dist/core.js.map +1 -1
  32. package/dist/index.cjs +1 -4118
  33. package/dist/index.cjs.map +1 -1
  34. package/dist/index.d.cts +1359 -34
  35. package/dist/index.d.ts +1359 -34
  36. package/dist/index.js +1 -4075
  37. package/dist/index.js.map +1 -1
  38. package/dist/{middleware-BwIlf0jW.d.cts → middleware-CkSeLZ-9.d.ts} +35 -19
  39. package/dist/payload.cjs +1 -30
  40. package/dist/payload.cjs.map +1 -1
  41. package/dist/payload.d.cts +4 -3
  42. package/dist/payload.d.ts +4 -3
  43. package/dist/payload.js +1 -28
  44. package/dist/payload.js.map +1 -1
  45. package/package.json +55 -16
  46. package/dist/adapters/astro/index.cjs +0 -370
  47. package/dist/adapters/astro/index.cjs.map +0 -1
  48. package/dist/adapters/astro/index.d.cts +0 -105
  49. package/dist/adapters/astro/middleware-entry.cjs +0 -303
  50. package/dist/adapters/astro/middleware-entry.cjs.map +0 -1
  51. package/dist/adapters/astro/middleware-entry.d.cts +0 -15
  52. package/dist/adapters/nextjs/index.cjs +0 -309
  53. package/dist/adapters/nextjs/index.cjs.map +0 -1
  54. package/dist/adapters/nextjs/index.d.cts +0 -75
  55. package/dist/adapters/nuxt/index.cjs +0 -299
  56. package/dist/adapters/nuxt/index.cjs.map +0 -1
  57. package/dist/adapters/nuxt/index.d.cts +0 -126
  58. package/dist/adapters/sveltekit/index.cjs +0 -275
  59. package/dist/adapters/sveltekit/index.cjs.map +0 -1
  60. package/dist/adapters/sveltekit/index.d.cts +0 -80
  61. package/dist/bind-BSgxoQhN.d.cts +0 -1137
  62. package/dist/bind-BSgxoQhN.d.ts +0 -1137
  63. package/dist/codegen-astro.cjs +0 -612
  64. package/dist/codegen-astro.cjs.map +0 -1
  65. package/dist/codegen-astro.d.cts +0 -54
  66. package/dist/codegen-cli.cjs +0 -669
  67. package/dist/codegen-cli.cjs.map +0 -1
  68. package/dist/codegen-cli.d.cts +0 -19
  69. package/dist/middleware-BwIlf0jW.d.ts +0 -168
  70. package/dist/preview-request-DAvxm18T.d.cts +0 -68
  71. package/dist/preview-request-DAvxm18T.d.ts +0 -68
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/codegen/parser/extract-field.ts","../src/codegen/parser/extract-schema.ts","../src/codegen/emit/emit-types.ts","../src/codegen/index.ts","../src/codegen/cli.ts"],"names":["Node","SyntaxKind","Project","readStringProperty","literal","field","isAbsolute","resolve","mkdir","dirname","writeFile"],"mappings":";;;;;;;AA0BA,IAAM,eAAA,GAA6E;AAAA,EACjF,IAAA,EAAM,QAAA;AAAA,EACN,QAAA,EAAU,QAAA;AAAA,EACV,KAAA,EAAO,QAAA;AAAA,EACP,QAAA,EAAU,SAAA;AAAA,EACV,MAAA,EAAQ,QAAA;AAAA,EACR,QAAA,EAAU,SAAA;AAAA,EACV,IAAA,EAAM,QAAA;AAAA,EACN,IAAA,EAAM,QAAA;AAAA,EACN,KAAA,EAAO,SAAA;AAAA,EACP,EAAA,EAAI,SAAA;AAAA,EACJ,KAAA,EAAO;AACT,CAAA;AAEO,SAAS,aAAa,OAAA,EAA8D;AACzF,EAAA,MAAM,IAAA,GAAO,kBAAA,CAAmB,OAAA,EAAS,MAAM,CAAA;AAC/C,EAAA,IAAI,IAAA,KAAS,QAAW,OAAO,MAAA;AAI/B,EAAA,MAAM,mCAAmB,IAAI,GAAA,CAAI,CAAC,MAAA,EAAQ,KAAA,EAAO,aAAa,CAAC,CAAA;AAC/D,EAAA,MAAM,IAAA,GAAO,kBAAA,CAAmB,OAAA,EAAS,MAAM,CAAA;AAC/C,EAAA,IAAI,SAAS,MAAA,IAAa,CAAC,iBAAiB,GAAA,CAAI,IAAI,GAAG,OAAO,MAAA;AAE9D,EAAA,MAAM,QAAA,GAAW,mBAAA,CAAoB,OAAA,EAAS,UAAU,CAAA,IAAK,KAAA;AAC7D,EAAA,MAAM,SAAA,GAAY,mBAAA,CAAoB,OAAA,EAAS,WAAW,CAAA,IAAK,KAAA;AAC/D,EAAA,MAAM,OAAO,EAAE,IAAA,EAAM,IAAA,IAAQ,cAAA,EAAgB,UAAU,SAAA,EAAU;AAEjE,EAAA,QAAQ,IAAA;AAAM,IACZ,KAAK,OAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,IAAA,EAAM,OAAA;AAAA,QACN,MAAA,EAAQ,oBAAoB,OAAO;AAAA,OACrC;AAAA,IACF,KAAK,QAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,IAAA,EAAM,QAAA;AAAA,QACN,MAAA,EAAQ,cAAc,OAAO;AAAA,OAC/B;AAAA,IACF,KAAK,OAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,IAAA,EAAM,OAAA;AAAA,QACN,MAAA,EAAQ,oBAAoB,OAAO;AAAA,OACrC;AAAA,IACF,KAAK,MAAA;AAAA,IACL,KAAK,KAAA;AAAA,IACL,KAAK,aAAA,EAAe;AAGlB,MAAA,MAAM,SAAA,GAAY,kCAAkC,OAAO,CAAA;AAC3D,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,IAAA,EAAM,OAAA;AAAA,QACN,MAAA,EAAQ;AAAA,OACV;AAAA,IACF;AAAA,IACA,KAAK,cAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,IAAA,EAAM,cAAA;AAAA,QACN,MAAA,EAAQ,mBAAmB,OAAO,CAAA;AAAA,QAClC,OAAA,EAAS,mBAAA,CAAoB,OAAA,EAAS,SAAS,CAAA,IAAK;AAAA,OACtD;AAAA,IACF,KAAK,QAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,IAAA,EAAM,QAAA;AAAA,QACN,MAAA,EAAQ,wBAAA,CAAyB,OAAO,CAAA,IAAK;AAAA,OAC/C;AAAA,IACF,KAAK,MAAA;AACH,MAAA,OAAO,EAAE,GAAG,IAAA,EAAM,IAAA,EAAM,MAAA,EAAO;AAAA,IACjC,KAAK,QAAA;AACH,MAAA,OAAO;AAAA,QACL,GAAG,IAAA;AAAA,QACH,IAAA,EAAM,QAAA;AAAA,QACN,OAAA,EAAS,kBAAkB,OAAO,CAAA;AAAA,QAClC,OAAA,EAAS,mBAAA,CAAoB,OAAA,EAAS,SAAS,CAAA,IAAK;AAAA,OACtD;AAAA,IACF,SAAS;AACP,MAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,IAAI,CAAA,IAAK,SAAA;AACzC,MAAA,OAAO,EAAE,GAAG,IAAA,EAAM,IAAA,EAAM,UAAU,OAAA,EAAQ;AAAA,IAC5C;AAAA;AAEJ;AAEA,SAAS,oBAAoB,OAAA,EAA6D;AACxF,EAAA,MAAM,aAAA,GAAgB,iBAAA,CAAkB,OAAA,EAAS,QAAQ,CAAA;AACzD,EAAA,IAAI,CAAC,aAAA,EAAe,OAAO,EAAC;AAC5B,EAAA,MAAM,MAAwB,EAAC;AAC/B,EAAA,KAAA,MAAW,OAAA,IAAW,aAAA,CAAc,WAAA,EAAY,EAAG;AACjD,IAAA,IAAI,CAACA,YAAA,CAAK,yBAAA,CAA0B,OAAO,CAAA,EAAG;AAC9C,IAAA,MAAM,CAAA,GAAI,aAAa,OAAO,CAAA;AAC9B,IAAA,IAAI,CAAC,CAAA,EAAG;AAIR,IAAA,IAAI,CAAA,CAAE,IAAA,KAAS,OAAA,IAAW,CAAA,CAAE,SAAS,cAAA,EAAgB;AACnD,MAAA,GAAA,CAAI,IAAA,CAAK,GAAG,CAAA,CAAE,MAAM,CAAA;AAAA,IACtB,CAAA,MAAO;AACL,MAAA,GAAA,CAAI,KAAK,CAAC,CAAA;AAAA,IACZ;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,kCACP,OAAA,EAC2B;AAG3B,EAAA,MAAM,WAAA,GAAc,iBAAA,CAAkB,OAAA,EAAS,MAAM,CAAA;AACrD,EAAA,IAAI,WAAA,EAAa;AACf,IAAA,MAAM,MAAwB,EAAC;AAC/B,IAAA,KAAA,MAAW,UAAA,IAAc,WAAA,CAAY,WAAA,EAAY,EAAG;AAClD,MAAA,IAAI,CAACA,YAAA,CAAK,yBAAA,CAA0B,UAAU,CAAA,EAAG;AACjD,MAAA,MAAM,OAAA,GAAU,kBAAA,CAAmB,UAAA,EAAY,MAAM,CAAA;AACrD,MAAA,MAAM,SAAA,GAAY,oBAAoB,UAAU,CAAA;AAChD,MAAA,IAAI,YAAY,MAAA,EAAW;AACzB,QAAA,GAAA,CAAI,IAAA,CAAK;AAAA,UACP,IAAA,EAAM,OAAA;AAAA,UACN,IAAA,EAAM,OAAA;AAAA,UACN,QAAA,EAAU,KAAA;AAAA,UACV,SAAA,EAAW,KAAA;AAAA,UACX,MAAA,EAAQ;AAAA,SACT,CAAA;AAAA,MACH,CAAA,MAAO;AAEL,QAAA,GAAA,CAAI,IAAA,CAAK,GAAG,SAAS,CAAA;AAAA,MACvB;AAAA,IACF;AACA,IAAA,OAAO,GAAA;AAAA,EACT;AAEA,EAAA,OAAO,oBAAoB,OAAO,CAAA;AACpC;AAEA,SAAS,cAAc,OAAA,EAA6D;AAClF,EAAA,MAAM,aAAA,GAAgB,iBAAA,CAAkB,OAAA,EAAS,QAAQ,CAAA;AACzD,EAAA,IAAI,CAAC,aAAA,EAAe,OAAO,EAAC;AAC5B,EAAA,MAAM,MAAwB,EAAC;AAC/B,EAAA,KAAA,MAAW,OAAA,IAAW,aAAA,CAAc,WAAA,EAAY,EAAG;AACjD,IAAA,IAAI,CAACA,YAAA,CAAK,yBAAA,CAA0B,OAAO,CAAA,EAAG;AAC9C,IAAA,MAAM,IAAA,GAAO,kBAAA,CAAmB,OAAA,EAAS,MAAM,CAAA;AAC/C,IAAA,IAAI,SAAS,MAAA,EAAW;AACxB,IAAA,GAAA,CAAI,IAAA,CAAK;AAAA,MACP,IAAA;AAAA,MACA,QAAA,EAAU,aAAa,IAAI,CAAA;AAAA,MAC3B,MAAA,EAAQ,oBAAoB,OAAO;AAAA,KACpC,CAAA;AAAA,EACH;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,mBAAmB,OAAA,EAA8D;AACxF,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,WAAA,CAAY,YAAY,CAAA;AACjD,EAAA,IAAI,CAAC,QAAA,IAAY,CAACA,aAAK,oBAAA,CAAqB,QAAQ,GAAG,OAAO,SAAA;AAC9D,EAAA,MAAM,WAAA,GAAc,SAAS,cAAA,EAAe;AAC5C,EAAA,IAAI,eAAeA,YAAA,CAAK,eAAA,CAAgB,WAAW,CAAA,EAAG,OAAO,YAAY,eAAA,EAAgB;AACzF,EAAA,IAAI,WAAA,IAAeA,YAAA,CAAK,wBAAA,CAAyB,WAAW,CAAA,EAAG;AAC7D,IAAA,OAAO,WAAA,CACJ,WAAA,EAAY,CACZ,MAAA,CAAOA,YAAA,CAAK,eAAe,CAAA,CAC3B,GAAA,CAAI,CAAC,EAAA,KAAO,EAAA,CAAG,eAAA,EAAiB,CAAA;AAAA,EACrC;AACA,EAAA,OAAO,SAAA;AACT;AAEA,SAAS,yBAAyB,OAAA,EAAsD;AACtF,EAAA,MAAM,MAAA,GAAS,mBAAmB,OAAO,CAAA;AACzC,EAAA,IAAI,OAAO,MAAA,KAAW,QAAA,EAAU,OAAO,MAAA;AACvC,EAAA,OAAO,OAAO,CAAC,CAAA;AACjB;AAEA,SAAS,kBAAkB,OAAA,EAAqD;AAC9E,EAAA,MAAM,cAAA,GAAiB,iBAAA,CAAkB,OAAA,EAAS,SAAS,CAAA;AAC3D,EAAA,IAAI,CAAC,cAAA,EAAgB,OAAO,EAAC;AAC7B,EAAA,MAAM,MAAgB,EAAC;AACvB,EAAA,KAAA,MAAW,OAAA,IAAW,cAAA,CAAe,WAAA,EAAY,EAAG;AAClD,IAAA,IAAIA,YAAA,CAAK,eAAA,CAAgB,OAAO,CAAA,EAAG;AACjC,MAAA,GAAA,CAAI,IAAA,CAAK,OAAA,CAAQ,eAAA,EAAiB,CAAA;AAAA,IACpC,CAAA,MAAA,IAAWA,YAAA,CAAK,yBAAA,CAA0B,OAAO,CAAA,EAAG;AAClD,MAAA,MAAM,KAAA,GAAQ,kBAAA,CAAmB,OAAA,EAAS,OAAO,CAAA;AACjD,MAAA,IAAI,KAAA,KAAU,MAAA,EAAW,GAAA,CAAI,IAAA,CAAK,KAAK,CAAA;AAAA,IACzC;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,kBAAA,CAAmB,SAAkC,IAAA,EAAkC;AAC9F,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,WAAA,CAAY,IAAI,CAAA;AACzC,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,oBAAA,CAAqB,QAAQ,GAAG,OAAO,MAAA;AACzD,EAAA,MAAM,WAAA,GAAc,SAAS,cAAA,EAAe;AAC5C,EAAA,IAAI,eAAeA,YAAA,CAAK,eAAA,CAAgB,WAAW,CAAA,EAAG,OAAO,YAAY,eAAA,EAAgB;AACzF,EAAA,IAAI,WAAA,IAAeA,YAAA,CAAK,+BAAA,CAAgC,WAAW,CAAA,EAAG;AACpE,IAAA,OAAO,YAAY,eAAA,EAAgB;AAAA,EACrC;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,mBAAA,CAAoB,SAAkC,IAAA,EAAmC;AAChG,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,WAAA,CAAY,IAAI,CAAA;AACzC,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,oBAAA,CAAqB,QAAQ,GAAG,OAAO,MAAA;AACzD,EAAA,MAAM,WAAA,GAAc,SAAS,cAAA,EAAe;AAC5C,EAAA,IAAI,CAAC,aAAa,OAAO,MAAA;AACzB,EAAA,IAAI,WAAA,CAAY,OAAA,EAAQ,KAAMC,kBAAA,CAAW,aAAa,OAAO,IAAA;AAC7D,EAAA,IAAI,WAAA,CAAY,OAAA,EAAQ,KAAMA,kBAAA,CAAW,cAAc,OAAO,KAAA;AAC9D,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,iBAAA,CACP,SACA,IAAA,EACoC;AACpC,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,WAAA,CAAY,IAAI,CAAA;AACzC,EAAA,IAAI,CAAC,QAAA,IAAY,CAAC,oBAAA,CAAqB,QAAQ,GAAG,OAAO,MAAA;AACzD,EAAA,MAAM,WAAA,GAAc,SAAS,cAAA,EAAe;AAC5C,EAAA,IAAI,WAAA,IAAeD,YAAA,CAAK,wBAAA,CAAyB,WAAW,GAAG,OAAO,WAAA;AACtE,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,qBAAqB,IAAA,EAAwC;AACpE,EAAA,OAAOA,YAAA,CAAK,qBAAqB,IAAI,CAAA;AACvC;AAEA,SAAS,aAAa,IAAA,EAAsB;AAC1C,EAAA,OAAO,IAAA,CACJ,MAAM,SAAS,CAAA,CACf,OAAO,OAAO,CAAA,CACd,GAAA,CAAI,CAAC,IAAA,KAAS,IAAA,CAAK,OAAO,CAAC,CAAA,CAAE,aAAY,GAAI,IAAA,CAAK,MAAM,CAAC,CAAC,CAAA,CAC1D,IAAA,CAAK,EAAE,CAAA;AACZ;;;AC5NO,SAAS,cAAc,OAAA,EAAgD;AAC5E,EAAA,MAAM,OAAA,GACJ,OAAA,CAAQ,OAAA,IACR,IAAIE,eAAA;AAAA,IACF,OAAA,CAAQ,gBAAA,KAAqB,MAAA,GACzB,EAAE,gBAAA,EAAkB,QAAQ,gBAAA,EAAiB,GAC7C,EAAE,2BAAA,EAA6B,IAAA;AAAK,GAC1C;AACF,EAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,2BAAA,CAA4B,OAAA,CAAQ,UAAU,CAAA;AACzE,EAAA,IAAI,CAAC,UAAA,EAAY;AACf,IAAA,OAAO;AAAA,MACL,SAAS,EAAC;AAAA,MACV,aAAa,EAAC;AAAA,MACd,WAAA,EAAa,CAAC,CAAA,eAAA,EAAkB,OAAA,CAAQ,UAAU,CAAA,CAAE;AAAA,KACtD;AAAA,EACF;AAIA,EAAA,OAAA,CAAQ,6BAAA,EAA8B;AACtC,EAAA,MAAM,cAAwB,EAAC;AAE/B,EAAA,MAAM,aAAA,GAAgB,iBAAA,CAAkB,UAAA,EAAY,WAAW,CAAA;AAC/D,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,OAAO;AAAA,MACL,SAAS,EAAC;AAAA,MACV,aAAa,EAAC;AAAA,MACd,WAAA,EAAa;AAAA,QACX,GAAG,WAAA;AAAA,QACH;AAAA;AACF,KACF;AAAA,EACF;AAEA,EAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,aAAA,EAAe,SAAA,EAAW,WAAW,CAAA;AACrE,EAAA,MAAM,WAAA,GAAc,eAAA,CAAgB,aAAA,EAAe,aAAA,EAAe,WAAW,CAAA;AAE7E,EAAA,OAAO,EAAE,OAAA,EAAS,WAAA,EAAa,WAAA,EAAY;AAC7C;AAEA,SAAS,iBAAA,CACP,YACA,WAAA,EACqC;AACrC,EAAA,MAAM,aAAA,GAAgB,UAAA,CAAW,gBAAA,EAAiB,CAAE,IAAA,CAAK,CAAC,GAAA,KAAQ,GAAA,CAAI,OAAA,EAAQ,KAAM,SAAS,CAAA;AAC7F,EAAA,IAAI,CAAC,aAAA,EAAe;AAClB,IAAA,WAAA,CAAY,KAAK,0CAA0C,CAAA;AAC3D,IAAA,OAAO,MAAA;AAAA,EACT;AACA,EAAA,MAAM,YAAA,GAAe,cAAc,eAAA,EAAgB;AACnD,EAAA,KAAA,MAAW,QAAQ,YAAA,EAAc;AAC/B,IAAA,MAAM,SAAA,GAAY,sBAAsB,IAAI,CAAA;AAC5C,IAAA,IAAI,WAAW,OAAO,SAAA;AAAA,EACxB;AAEA,EAAA,KAAA,MAAW,IAAA,IAAQ,UAAA,CAAW,oBAAA,CAAqBD,kBAAAA,CAAW,cAAc,CAAA,EAAG;AAC7E,IAAA,MAAM,IAAA,GAAO,KAAK,aAAA,EAAc;AAChC,IAAA,IAAID,aAAK,YAAA,CAAa,IAAI,KAAK,IAAA,CAAK,OAAA,OAAc,aAAA,EAAe;AAC/D,MAAA,MAAM,GAAA,GAAM,IAAA,CAAK,YAAA,EAAa,CAAE,CAAC,CAAA;AACjC,MAAA,IAAI,GAAA,IAAOA,YAAAA,CAAK,yBAAA,CAA0B,GAAG,GAAG,OAAO,GAAA;AAAA,IACzD;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,sBAAsB,IAAA,EAAiD;AAC9E,EAAA,IAAIA,YAAAA,CAAK,kBAAA,CAAmB,IAAI,CAAA,EAAG;AACjC,IAAA,OAAO,gBAAA,CAAiB,IAAA,CAAK,aAAA,EAAe,CAAA;AAAA,EAC9C;AACA,EAAA,IAAIA,YAAAA,CAAK,qBAAA,CAAsB,IAAI,CAAA,EAAG;AACpC,IAAA,MAAM,WAAA,GAAc,KAAK,cAAA,EAAe;AACxC,IAAA,IAAI,WAAA,EAAa,OAAO,gBAAA,CAAiB,WAAW,CAAA;AAAA,EACtD;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,iBAAiB,IAAA,EAA6D;AACrF,EAAA,IAAI,CAAC,MAAM,OAAO,MAAA;AAClB,EAAA,IAAIA,YAAAA,CAAK,yBAAA,CAA0B,IAAI,CAAA,EAAG,OAAO,IAAA;AACjD,EAAA,IAAIA,YAAAA,CAAK,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAE/B,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,YAAA,EAAa,CAAE,CAAC,CAAA;AACjC,IAAA,IAAI,GAAA,IAAOA,YAAAA,CAAK,yBAAA,CAA0B,GAAG,GAAG,OAAO,GAAA;AAAA,EACzD;AACA,EAAA,IAAIA,YAAAA,CAAK,cAAA,CAAe,IAAI,CAAA,EAAG;AAC7B,IAAA,OAAO,gBAAA,CAAiB,IAAA,CAAK,aAAA,EAAe,CAAA;AAAA,EAC9C;AACA,EAAA,IAAIA,YAAAA,CAAK,qBAAA,CAAsB,IAAI,CAAA,EAAG;AACpC,IAAA,OAAO,gBAAA,CAAiB,IAAA,CAAK,aAAA,EAAe,CAAA;AAAA,EAC9C;AACA,EAAA,IAAIA,YAAAA,CAAK,YAAA,CAAa,IAAI,CAAA,EAAG;AAC3B,IAAA,OAAO,iCAAiC,IAAI,CAAA;AAAA,EAC9C;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,iCACP,UAAA,EACqC;AACrC,EAAA,KAAA,MAAW,IAAA,IAAQ,UAAA,CAAW,kBAAA,EAAmB,EAAG;AAClD,IAAA,MAAM,MAAA,GAAS,sBAAsB,IAAI,CAAA;AACzC,IAAA,IAAI,QAAQ,OAAO,MAAA;AAAA,EACrB;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,eAAA,CACP,aAAA,EACA,GAAA,EACA,WAAA,EAC0B;AAC1B,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,WAAA,CAAY,GAAG,CAAA;AAC9C,EAAA,IAAI,CAAC,QAAA,EAAU,OAAO,EAAC;AACvB,EAAA,IAAI,CAACA,YAAAA,CAAK,oBAAA,CAAqB,QAAQ,CAAA,SAAU,EAAC;AAClD,EAAA,MAAM,WAAA,GAAc,SAAS,cAAA,EAAe;AAC5C,EAAA,IAAI,CAAC,WAAA,EAAa,OAAO,EAAC;AAC1B,EAAA,MAAM,KAAA,GAAQ,sBAAsB,WAAW,CAAA;AAC/C,EAAA,IAAI,CAAC,KAAA,EAAO,OAAO,EAAC;AACpB,EAAA,OAAO,cAAA,CAAe,OAAO,WAAW,CAAA;AAC1C;AAEA,SAAS,cAAA,CACP,OACA,WAAA,EAC0B;AAC1B,EAAA,MAAM,MAAuB,EAAC;AAC9B,EAAA,KAAA,MAAW,OAAA,IAAW,KAAA,CAAM,WAAA,EAAY,EAAG;AAGzC,IAAA,IAAIA,YAAAA,CAAK,eAAA,CAAgB,OAAO,CAAA,EAAG;AACjC,MAAA,MAAM,aAAA,GAAgB,qBAAA,CAAsB,OAAA,CAAQ,aAAA,EAAe,CAAA;AACnE,MAAA,IAAI,CAAC,aAAA,EAAe;AAClB,QAAA,WAAA,CAAY,IAAA;AAAA,UACV,6BAA6B,OAAA,CAAQ,OAAA,GAAU,KAAA,CAAM,CAAA,EAAG,EAAE,CAAC,CAAA,sBAAA;AAAA,SAC7D;AACA,QAAA;AAAA,MACF;AACA,MAAA,GAAA,CAAI,IAAA,CAAK,GAAG,cAAA,CAAe,aAAA,EAAe,WAAW,CAAC,CAAA;AACtD,MAAA;AAAA,IACF;AACA,IAAA,MAAM,OAAA,GAAU,uBAAuB,OAAO,CAAA;AAC9C,IAAA,IAAI,CAAC,OAAA,EAAS;AACZ,MAAA,WAAA,CAAY,IAAA;AAAA,QACV,mCAAmC,OAAA,CAAQ,OAAA,GAAU,KAAA,CAAM,CAAA,EAAG,EAAE,CAAC,CAAA,uBAAA;AAAA,OACnE;AACA,MAAA;AAAA,IACF;AACA,IAAA,MAAM,IAAA,GAAOG,mBAAAA,CAAmB,OAAA,EAAS,MAAM,CAAA;AAC/C,IAAA,IAAI,SAAS,MAAA,EAAW;AACtB,MAAA,WAAA,CAAY,KAAK,CAAA,8DAAA,CAA2D,CAAA;AAC5E,MAAA;AAAA,IACF;AACA,IAAA,GAAA,CAAI,IAAA,CAAK;AAAA,MACP,IAAA;AAAA,MACA,QAAA,EAAU,aAAa,IAAI,CAAA;AAAA,MAC3B,MAAA,EAAQ,iBAAiB,OAAO;AAAA,KACjC,CAAA;AAAA,EACH;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,iBAAiB,WAAA,EAAiE;AACzF,EAAA,MAAM,cAAA,GAAiB,WAAA,CAAY,WAAA,CAAY,QAAQ,CAAA;AACvD,EAAA,IAAI,CAAC,kBAAkB,CAACH,YAAAA,CAAK,qBAAqB,cAAc,CAAA,SAAU,EAAC;AAC3E,EAAA,MAAM,WAAA,GAAc,eAAe,cAAA,EAAe;AAClD,EAAA,IAAI,CAAC,eAAe,CAACA,YAAAA,CAAK,yBAAyB,WAAW,CAAA,SAAU,EAAC;AACzE,EAAA,MAAM,MAAwB,EAAC;AAC/B,EAAA,KAAA,MAAW,OAAA,IAAW,WAAA,CAAY,WAAA,EAAY,EAAG;AAG/C,IAAA,IAAIA,YAAAA,CAAK,eAAA,CAAgB,OAAO,CAAA,EAAG;AACjC,MAAA,MAAM,QAAA,GAAW,qBAAA,CAAsB,OAAA,CAAQ,aAAA,EAAe,CAAA;AAC9D,MAAA,IAAI,CAAC,QAAA,EAAU;AACf,MAAA,KAAA,MAAW,KAAA,IAAS,QAAA,CAAS,WAAA,EAAY,EAAG;AAC1C,QAAA,MAAMI,QAAAA,GAAU,uBAAuB,KAAK,CAAA;AAC5C,QAAA,IAAI,CAACA,QAAAA,EAAS;AACd,QAAA,MAAMC,MAAAA,GAAQ,aAAaD,QAAO,CAAA;AAClC,QAAA,IAAI,CAACC,MAAAA,EAAO;AACZ,QAAA,IAAIA,MAAAA,CAAM,IAAA,KAAS,OAAA,IAAWA,MAAAA,CAAM,SAAS,cAAA,EAAgB;AAC3D,UAAA,GAAA,CAAI,IAAA,CAAK,GAAGA,MAAAA,CAAM,MAAM,CAAA;AAAA,QAC1B,CAAA,MAAO;AACL,UAAA,GAAA,CAAI,KAAKA,MAAK,CAAA;AAAA,QAChB;AAAA,MACF;AACA,MAAA;AAAA,IACF;AACA,IAAA,MAAM,OAAA,GAAU,uBAAuB,OAAO,CAAA;AAC9C,IAAA,IAAI,CAAC,OAAA,EAAS;AACd,IAAA,MAAM,KAAA,GAAQ,aAAa,OAAO,CAAA;AAClC,IAAA,IAAI,CAAC,KAAA,EAAO;AACZ,IAAA,IAAI,KAAA,CAAM,IAAA,KAAS,OAAA,IAAW,KAAA,CAAM,SAAS,cAAA,EAAgB;AAC3D,MAAA,GAAA,CAAI,IAAA,CAAK,GAAG,KAAA,CAAM,MAAM,CAAA;AAAA,IAC1B,CAAA,MAAO;AACL,MAAA,GAAA,CAAI,KAAK,KAAK,CAAA;AAAA,IAChB;AAAA,EACF;AACA,EAAA,OAAO,GAAA;AACT;AAEA,SAAS,uBAAuB,IAAA,EAAiD;AAC/E,EAAA,IAAIL,YAAAA,CAAK,yBAAA,CAA0B,IAAI,CAAA,EAAG,OAAO,IAAA;AACjD,EAAA,IAAIA,aAAK,YAAA,CAAa,IAAI,CAAA,EAAG,OAAO,iCAAiC,IAAI,CAAA;AACzE,EAAA,IAAIA,YAAAA,CAAK,eAAe,IAAI,CAAA,SAAU,sBAAA,CAAuB,IAAA,CAAK,eAAe,CAAA;AACjF,EAAA,IAAIA,YAAAA,CAAK,sBAAsB,IAAI,CAAA,SAAU,sBAAA,CAAuB,IAAA,CAAK,eAAe,CAAA;AACxF,EAAA,IAAIA,YAAAA,CAAK,gBAAA,CAAiB,IAAI,CAAA,EAAG;AAC/B,IAAA,MAAM,GAAA,GAAM,IAAA,CAAK,YAAA,EAAa,CAAE,CAAC,CAAA;AACjC,IAAA,IAAI,GAAA,EAAK,OAAO,sBAAA,CAAuB,GAAG,CAAA;AAAA,EAC5C;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAAS,sBAAsB,IAAA,EAAgD;AAC7E,EAAA,IAAIA,YAAAA,CAAK,wBAAA,CAAyB,IAAI,CAAA,EAAG,OAAO,IAAA;AAChD,EAAA,IAAIA,YAAAA,CAAK,eAAe,IAAI,CAAA,SAAU,qBAAA,CAAsB,IAAA,CAAK,eAAe,CAAA;AAChF,EAAA,IAAIA,YAAAA,CAAK,sBAAsB,IAAI,CAAA,SAAU,qBAAA,CAAsB,IAAA,CAAK,eAAe,CAAA;AACvF,EAAA,IAAIA,YAAAA,CAAK,YAAA,CAAa,IAAI,CAAA,EAAG;AAC3B,IAAA,KAAA,MAAW,IAAA,IAAQ,IAAA,CAAK,kBAAA,EAAmB,EAAG;AAC5C,MAAA,IAAIA,YAAAA,CAAK,qBAAA,CAAsB,IAAI,CAAA,EAAG;AACpC,QAAA,MAAM,WAAA,GAAc,KAAK,cAAA,EAAe;AACxC,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,MAAM,QAAA,GAAW,sBAAsB,WAAW,CAAA;AAClD,UAAA,IAAI,UAAU,OAAO,QAAA;AAAA,QACvB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEA,SAASG,mBAAAA,CAAmB,SAAkC,IAAA,EAAkC;AAC9F,EAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,WAAA,CAAY,IAAI,CAAA;AACzC,EAAA,IAAI,CAAC,QAAA,IAAY,CAACH,aAAK,oBAAA,CAAqB,QAAQ,GAAG,OAAO,MAAA;AAC9D,EAAA,MAAM,WAAA,GAAc,SAAS,cAAA,EAAe;AAC5C,EAAA,IAAI,eAAeA,YAAAA,CAAK,eAAA,CAAgB,WAAW,CAAA,EAAG,OAAO,YAAY,eAAA,EAAgB;AACzF,EAAA,OAAO,MAAA;AACT;;;ACjPA,IAAM,cAAA,GACJ,0IAAA;AAIK,SAAS,SAAA,CAAU,MAAA,EAAyB,OAAA,GAAuB,EAAC,EAAW;AACpF,EAAA,MAAM,QAAkB,EAAC;AACzB,EAAA,KAAA,CAAM,IAAA,CAAK,OAAA,CAAQ,MAAA,IAAU,cAAc,CAAA;AAC3C,EAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AACb,EAAA,KAAA,CAAM,KAAK,gFAAgF,CAAA;AAC3F,EAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AAIb,EAAA,MAAM,YAAA,uBAAmB,GAAA,EAAY;AACrC,EAAA,KAAA,MAAW,IAAA,IAAQ,CAAC,GAAG,MAAA,CAAO,SAAS,GAAG,MAAA,CAAO,WAAW,CAAA,EAAG;AAC7D,IAAA,QAAA,CAAS,IAAA,EAAM,KAAA,EAAO,YAAA,EAAc,OAAO,CAAA;AAC3C,IAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AAAA,EACf;AAGA,EAAA,IAAI,MAAA,CAAO,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG;AAC7B,IAAA,KAAA,CAAM,KAAK,gCAAgC,CAAA;AAC3C,IAAA,KAAA,MAAW,CAAA,IAAK,OAAO,OAAA,EAAS;AAC9B,MAAA,KAAA,CAAM,KAAK,CAAA,GAAA,EAAM,CAAA,CAAE,IAAI,CAAA,GAAA,EAAM,CAAA,CAAE,QAAQ,CAAA,CAAA,CAAG,CAAA;AAAA,IAC5C;AACA,IAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AACf,IAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AAAA,EACf;AACA,EAAA,IAAI,MAAA,CAAO,WAAA,CAAY,MAAA,GAAS,CAAA,EAAG;AACjC,IAAA,KAAA,CAAM,KAAK,oCAAoC,CAAA;AAC/C,IAAA,KAAA,MAAW,CAAA,IAAK,OAAO,WAAA,EAAa;AAClC,MAAA,KAAA,CAAM,KAAK,CAAA,GAAA,EAAM,CAAA,CAAE,IAAI,CAAA,GAAA,EAAM,CAAA,CAAE,QAAQ,CAAA,CAAA,CAAG,CAAA;AAAA,IAC5C;AACA,IAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AACf,IAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AAAA,EACf;AACA,EAAA,MAAM,cAAwB,EAAC;AAC/B,EAAA,IAAI,OAAO,OAAA,CAAQ,MAAA,GAAS,CAAA,EAAG,WAAA,CAAY,KAAK,sBAAsB,CAAA;AACtE,EAAA,IAAI,OAAO,WAAA,CAAY,MAAA,GAAS,CAAA,EAAG,WAAA,CAAY,KAAK,0BAA0B,CAAA;AAC9E,EAAA,IAAI,WAAA,CAAY,SAAS,CAAA,EAAG;AAC1B,IAAA,KAAA,CAAM,KAAK,CAAA,0BAAA,EAA6B,WAAA,CAAY,IAAA,CAAK,KAAK,CAAC,CAAA,CAAA,CAAG,CAAA;AAClE,IAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AAAA,EACf;AAEA,EAAA,OAAO,MAAM,IAAA,CAAK,IAAI,CAAA,CAAE,OAAA,CAAQ,WAAW,MAAM,CAAA;AACnD;AAEA,SAAS,QAAA,CACP,IAAA,EACA,KAAA,EACA,YAAA,EACA,OAAA,EACM;AACN,EAAA,eAAA,CAAgB,KAAK,QAAA,EAAU,IAAA,CAAK,MAAA,EAAQ,KAAA,EAAO,cAAc,OAAO,CAAA;AACxE,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,iBAAA,EAAoB,IAAA,CAAK,QAAQ,CAAA,EAAA,CAAI,CAAA;AAChD,EAAA,KAAA,MAAW,KAAA,IAAS,KAAK,MAAA,EAAQ;AAC/B,IAAA,eAAA,CAAgB,KAAA,EAAO,IAAA,CAAK,QAAA,EAAU,KAAA,EAAO,OAAO,CAAA;AAAA,EACtD;AACA,EAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AAChB;AAEA,SAAS,eAAA,CACP,MAAA,EACA,MAAA,EACA,KAAA,EACA,cACA,OAAA,EACM;AACN,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,MAAM,OAAA,GAAU,cAAA,CAAe,MAAA,EAAQ,KAAA,CAAM,IAAI,CAAA;AACjD,IAAA,IAAI,KAAA,CAAM,IAAA,KAAS,OAAA,IAAW,KAAA,CAAM,SAAS,OAAA,EAAS;AACpD,MAAA,IAAI,YAAA,CAAa,GAAA,CAAI,OAAO,CAAA,EAAG;AAC/B,MAAA,YAAA,CAAa,IAAI,OAAO,CAAA;AACxB,MAAA,eAAA,CAAgB,OAAA,EAAS,KAAA,CAAM,MAAA,EAAQ,KAAA,EAAO,cAAc,OAAO,CAAA;AACnE,MAAA,KAAA,CAAM,IAAA,CAAK,CAAA,iBAAA,EAAoB,OAAO,CAAA,EAAA,CAAI,CAAA;AAC1C,MAAA,KAAA,MAAW,KAAA,IAAS,MAAM,MAAA,EAAQ;AAChC,QAAA,eAAA,CAAgB,KAAA,EAAO,OAAA,EAAS,KAAA,EAAO,OAAO,CAAA;AAAA,MAChD;AACA,MAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AACd,MAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AAAA,IACf,CAAA,MAAA,IAAW,KAAA,CAAM,IAAA,KAAS,QAAA,EAAU;AAClC,MAAA,KAAA,MAAW,KAAA,IAAS,MAAM,MAAA,EAAQ;AAChC,QAAA,MAAM,aAAA,GAAgB,cAAA,CAAe,OAAA,EAAS,KAAA,CAAM,QAAQ,CAAA;AAC5D,QAAA,IAAI,YAAA,CAAa,GAAA,CAAI,aAAa,CAAA,EAAG;AACrC,QAAA,YAAA,CAAa,IAAI,aAAa,CAAA;AAC9B,QAAA,eAAA,CAAgB,aAAA,EAAe,KAAA,CAAM,MAAA,EAAQ,KAAA,EAAO,cAAc,OAAO,CAAA;AACzE,QAAA,kBAAA,CAAmB,aAAA,EAAe,KAAA,EAAO,KAAA,EAAO,OAAO,CAAA;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AACF;AAEA,SAAS,kBAAA,CACP,QAAA,EACA,KAAA,EACA,KAAA,EACA,OAAA,EACM;AACN,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,iBAAA,EAAoB,QAAQ,CAAA,EAAA,CAAI,CAAA;AAC3C,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,cAAA,EAAiB,KAAA,CAAM,IAAI,CAAA,EAAA,CAAI,CAAA;AAC1C,EAAA,KAAA,MAAW,KAAA,IAAS,MAAM,MAAA,EAAQ;AAChC,IAAA,eAAA,CAAgB,KAAA,EAAO,QAAA,EAAU,KAAA,EAAO,OAAO,CAAA;AAAA,EACjD;AACA,EAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AACd,EAAA,KAAA,CAAM,KAAK,EAAE,CAAA;AACf;AAEA,SAAS,eAAA,CACP,KAAA,EACA,MAAA,EACA,KAAA,EACA,OAAA,EACM;AACN,EAAA,IAAI,OAAA,CAAQ,yBAAA,IAA6B,KAAA,CAAM,SAAA,EAAW;AACxD,IAAA,KAAA,CAAM,KAAK,CAAA,mBAAA,CAAqB,CAAA;AAAA,EAClC;AACA,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,QAAA,GAAW,EAAA,GAAK,GAAA;AACvC,EAAA,KAAA,CAAM,IAAA,CAAK,CAAA,EAAA,EAAK,KAAA,CAAM,IAAI,CAAA,EAAG,QAAQ,CAAA,EAAA,EAAK,eAAA,CAAgB,KAAA,EAAO,MAAM,CAAC,CAAA,CAAA,CAAG,CAAA;AAC7E;AAEA,SAAS,eAAA,CAAgB,OAAuB,MAAA,EAAwB;AACtE,EAAA,QAAQ,MAAM,IAAA;AAAM,IAClB,KAAK,QAAA;AACH,MAAA,OAAO,KAAA,CAAM,OAAA;AAAA,IACf,KAAK,OAAA;AACH,MAAA,OAAO,CAAA,EAAG,cAAA,CAAe,MAAA,EAAQ,KAAA,CAAM,IAAI,CAAC,CAAA,EAAA,CAAA;AAAA,IAC9C,KAAK,QAAA,EAAU;AACb,MAAA,IAAI,KAAA,CAAM,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,WAAA;AACtC,MAAA,MAAM,WAAW,KAAA,CAAM,MAAA,CACpB,GAAA,CAAI,CAAC,MAAM,cAAA,CAAe,cAAA,CAAe,MAAA,EAAQ,KAAA,CAAM,IAAI,CAAA,EAAG,CAAA,CAAE,QAAQ,CAAC,CAAA,CACzE,KAAK,KAAK,CAAA;AACb,MAAA,OAAO,IAAI,QAAQ,CAAA,GAAA,CAAA;AAAA,IACrB;AAAA,IACA,KAAK,OAAA;AACH,MAAA,OAAO,cAAA,CAAe,MAAA,EAAQ,KAAA,CAAM,IAAI,CAAA;AAAA,IAC1C,KAAK,cAAA,EAAgB;AACnB,MAAA,MAAM,UAAA,GAAqB,MAAM,OAAA,CAAQ,KAAA,CAAM,MAAM,CAAA,GACjD,KAAA,CAAM,OAAO,GAAA,CAAI,CAAC,MAAM,CAAA,CAAA,EAAI,CAAC,GAAG,CAAA,CAAE,IAAA,CAAK,KAAK,CAAA,GAC5C,CAAA,CAAA,EAAI,MAAM,MAAgB,CAAA,CAAA,CAAA;AAC9B,MAAA,MAAM,IAAA,GAAO,uBAAuB,UAAU,CAAA,CAAA,CAAA;AAC9C,MAAA,OAAO,KAAA,CAAM,OAAA,GAAU,CAAA,EAAG,IAAI,CAAA,EAAA,CAAA,GAAO,IAAA;AAAA,IACvC;AAAA,IACA,KAAK,QAAA;AACH,MAAA,OAAO,cAAA;AAAA,IACT,KAAK,MAAA;AACH,MAAA,OAAO,SAAA;AAAA,IACT,KAAK,QAAA,EAAU;AACb,MAAA,IAAI,MAAM,OAAA,CAAQ,MAAA,KAAW,GAAG,OAAO,KAAA,CAAM,UAAU,UAAA,GAAa,QAAA;AACpE,MAAA,MAAM,OAAA,GAAU,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,CAAG,CAAA,CAAE,IAAA,CAAK,KAAK,CAAA;AAC7D,MAAA,OAAO,KAAA,CAAM,OAAA,GAAU,CAAA,CAAA,EAAI,OAAO,CAAA,GAAA,CAAA,GAAQ,OAAA;AAAA,IAC5C;AAAA;AAEJ;AAEA,SAAS,cAAA,CAAe,QAAgB,KAAA,EAAuB;AAC7D,EAAA,OAAO,CAAA,EAAG,MAAM,CAAA,EAAG,YAAA,CAAa,KAAK,CAAC,CAAA,CAAA;AACxC;;;ACvJA,eAAsB,cAAc,OAAA,EAA6D;AAC/F,EAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,GAAA,IAAO,OAAA,CAAQ,GAAA,EAAI;AACvC,EAAA,MAAM,UAAA,GAAaM,eAAA,CAAW,OAAA,CAAQ,UAAU,CAAA,GAC5C,QAAQ,UAAA,GACRC,YAAA,CAAQ,GAAA,EAAK,OAAA,CAAQ,UAAU,CAAA;AACnC,EAAA,MAAM,SAAS,aAAA,CAAc;AAAA,IAC3B,UAAA;AAAA,IACA,GAAI,QAAQ,OAAA,KAAY,MAAA,GAAY,EAAE,OAAA,EAAS,OAAA,CAAQ,OAAA,EAAQ,GAAI,EAAC;AAAA,IACpE,GAAI,QAAQ,gBAAA,KAAqB,MAAA,GAC7B,EAAE,gBAAA,EAAkB,OAAA,CAAQ,gBAAA,EAAiB,GAC7C;AAAC,GACN,CAAA;AACD,EAAA,MAAM,IAAA,GAAO,SAAA,CAAU,MAAA,EAAQ,OAAO,CAAA;AAEtC,EAAA,MAAM,MAAA,GAA8B,QAAQ,OAAA,GACxC;AAAA,IACE,IAAA;AAAA,IACA,aAAa,MAAA,CAAO,WAAA;AAAA,IACpB,MAAA;AAAA,IACA,OAAA,EAASD,eAAA,CAAW,OAAA,CAAQ,OAAO,CAAA,GAAI,QAAQ,OAAA,GAAUC,YAAA,CAAQ,GAAA,EAAK,OAAA,CAAQ,OAAO;AAAA,MAEvF,EAAE,IAAA,EAAM,WAAA,EAAa,MAAA,CAAO,aAAa,MAAA,EAAO;AAEpD,EAAA,IAAI,OAAO,OAAA,EAAS;AAClB,IAAA,MAAMC,cAAA,CAAMC,aAAQ,MAAA,CAAO,OAAO,GAAG,EAAE,SAAA,EAAW,MAAM,CAAA;AACxD,IAAA,MAAMC,kBAAA,CAAU,MAAA,CAAO,OAAA,EAAS,IAAA,EAAM,MAAM,CAAA;AAAA,EAC9C;AAEA,EAAA,OAAO,MAAA;AACT;;;ACzCA,SAAS,UAAU,IAAA,EAAqC;AACtD,EAAA,MAAM,MAAA,GAAqB;AAAA,IACzB,UAAA,EAAY,MAAA;AAAA,IACZ,OAAA,EAAS,MAAA;AAAA,IACT,gBAAA,EAAkB,MAAA;AAAA,IAClB,QAAA,EAAU,KAAA;AAAA,IACV,KAAA,EAAO;AAAA,GACT;AACA,EAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,MAAA,EAAQ,KAAK,CAAA,EAAG;AACvC,IAAA,MAAM,KAAA,GAAQ,KAAK,CAAC,CAAA;AACpB,IAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,QAAA,EAAU;AACxC,MAAA,MAAA,CAAO,QAAA,GAAW,IAAA;AAClB,MAAA;AAAA,IACF;AACA,IAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,SAAA,EAAW;AACzC,MAAA,MAAA,CAAO,KAAA,GAAQ,IAAA;AACf,MAAA;AAAA,IACF;AACA,IAAA,IAAI,KAAA,KAAU,UAAA,IAAc,KAAA,KAAU,IAAA,EAAM;AAC1C,MAAA,MAAA,CAAO,UAAA,GAAa,IAAA,CAAK,CAAA,GAAI,CAAC,CAAA;AAC9B,MAAA,CAAA,IAAK,CAAA;AACL,MAAA;AAAA,IACF;AACA,IAAA,IAAI,KAAA,KAAU,OAAA,IAAW,KAAA,KAAU,IAAA,EAAM;AACvC,MAAA,MAAA,CAAO,OAAA,GAAU,IAAA,CAAK,CAAA,GAAI,CAAC,CAAA;AAC3B,MAAA,CAAA,IAAK,CAAA;AACL,MAAA;AAAA,IACF;AACA,IAAA,IAAI,UAAU,YAAA,EAAc;AAC1B,MAAA,MAAA,CAAO,gBAAA,GAAmB,IAAA,CAAK,CAAA,GAAI,CAAC,CAAA;AACpC,MAAA,CAAA,IAAK,CAAA;AACL,MAAA;AAAA,IACF;AACA,IAAA,IAAI,KAAA,EAAO,UAAA,CAAW,WAAW,CAAA,EAAG;AAClC,MAAA,MAAA,CAAO,UAAA,GAAa,KAAA,CAAM,KAAA,CAAM,WAAA,CAAY,MAAM,CAAA;AAClD,MAAA;AAAA,IACF;AACA,IAAA,IAAI,KAAA,EAAO,UAAA,CAAW,QAAQ,CAAA,EAAG;AAC/B,MAAA,MAAA,CAAO,OAAA,GAAU,KAAA,CAAM,KAAA,CAAM,QAAA,CAAS,MAAM,CAAA;AAC5C,MAAA;AAAA,IACF;AACA,IAAA,IAAI,KAAA,EAAO,UAAA,CAAW,aAAa,CAAA,EAAG;AACpC,MAAA,MAAA,CAAO,gBAAA,GAAmB,KAAA,CAAM,KAAA,CAAM,aAAA,CAAc,MAAM,CAAA;AAC1D,MAAA;AAAA,IACF;AAAA,EACF;AACA,EAAA,OAAO,MAAA;AACT;AAEA,IAAM,SAAA,GAAY,CAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA,CAAA;AAiBlB,eAAsB,IAAI,IAAA,EAA0C;AAClE,EAAA,MAAM,IAAA,GAAO,UAAU,IAAI,CAAA;AAC3B,EAAA,IAAI,KAAK,QAAA,EAAU;AACjB,IAAA,OAAA,CAAQ,MAAA,CAAO,MAAM,SAAS,CAAA;AAC9B,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,IAAI,CAAC,IAAA,CAAK,UAAA,IAAc,CAAC,KAAK,OAAA,EAAS;AACrC,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,MACb;AAAA,KACF;AACA,IAAA,OAAO,CAAA;AAAA,EACT;AACA,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,MAAM,aAAA,CAAc;AAAA,MACjC,YAAY,IAAA,CAAK,UAAA;AAAA,MACjB,SAAS,IAAA,CAAK,OAAA;AAAA,MACd,GAAI,KAAK,gBAAA,KAAqB,KAAA,CAAA,GAAY,EAAE,gBAAA,EAAkB,IAAA,CAAK,gBAAA,EAAiB,GAAI;AAAC,KAC1F,CAAA;AACD,IAAA,MAAM,YAAY,MAAA,CAAO,MAAA,CAAO,QAAQ,MAAA,GAAS,MAAA,CAAO,OAAO,WAAA,CAAY,MAAA;AAC3E,IAAA,IAAI,CAAC,KAAK,KAAA,EAAO;AACf,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,QACb,CAAA,mBAAA,EAAsB,MAAA,CAAO,OAAO,CAAA,EAAA,EAC9B,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,MAAM,CAAA,UAAA,EAAa,MAAA,CAAO,MAAA,CAAO,WAAA,CAAY,MAAM,CAAA;AAAA;AAAA,OACjF;AACA,MAAA,KAAA,MAAW,UAAA,IAAc,OAAO,WAAA,EAAa;AAC3C,QAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,WAAA,EAAc,UAAU;AAAA,CAAI,CAAA;AAAA,MACnD;AAAA,IACF;AACA,IAAA,IAAI,cAAc,CAAA,EAAG;AACnB,MAAA,OAAA,CAAQ,MAAA,CAAO,KAAA;AAAA,QACb;AAAA,OACF;AACA,MAAA,OAAO,CAAA;AAAA,IACT;AACA,IAAA,OAAO,CAAA;AAAA,EACT,SAAS,GAAA,EAAK;AACZ,IAAA,MAAM,UAAU,GAAA,YAAe,KAAA,GAAQ,GAAA,CAAI,OAAA,GAAU,OAAO,GAAG,CAAA;AAC/D,IAAA,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,CAAA,aAAA,EAAgB,OAAO;AAAA,CAAI,CAAA;AAChD,IAAA,OAAO,CAAA;AAAA,EACT;AACF;AAEA,SAAS,eAAA,GAA2B;AAClC,EAAA,IAAI,OAAO,OAAA,KAAY,WAAA,EAAa,OAAO,KAAA;AAC3C,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA;AAC5B,EAAA,IAAI,CAAC,OAAO,OAAO,KAAA;AACnB,EAAA,OAAO,MAAM,QAAA,CAAS,aAAa,CAAA,IAAK,KAAA,CAAM,SAAS,aAAa,CAAA;AACtE;AAEA,IAAI,iBAAgB,EAAG;AAErB,EAAA,KAAK,GAAA,CAAI,QAAQ,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA,CAAE,IAAA,CAAK,CAAC,IAAA,KAAS;AAC7C,IAAA,OAAA,CAAQ,KAAK,IAAI,CAAA;AAAA,EACnB,CAAC,CAAA;AACH","file":"codegen-cli.cjs","sourcesContent":["/**\n * Field-level extraction from ts-morph object literals.\n *\n * Payload field definitions are TypeScript object literals like:\n *\n * ```ts\n * { name: 'heroTitle', type: 'text', required: true }\n * ```\n *\n * `extractField()` reads one such literal and produces a normalised\n * `ExtractedField`. It is intentionally tolerant — unknown field types\n * collapse to `unknown`, deeply-conditional fields surface as a\n * diagnostic rather than crashing the parser.\n *\n * @module @codegen/parser/extract-field\n */\n\nimport {\n Node,\n SyntaxKind,\n type ArrayLiteralExpression,\n type ObjectLiteralExpression,\n type PropertyAssignment,\n} from 'ts-morph';\nimport type { ExtractedBlock, ExtractedField, ExtractedScalarField } from './types';\n\nconst SCALAR_TYPE_MAP: Readonly<Record<string, ExtractedScalarField['typeRef']>> = {\n text: 'string',\n textarea: 'string',\n email: 'string',\n richText: 'unknown',\n number: 'number',\n checkbox: 'boolean',\n date: 'string',\n code: 'string',\n point: 'unknown',\n ui: 'unknown',\n radio: 'string',\n};\n\nexport function extractField(literal: ObjectLiteralExpression): ExtractedField | undefined {\n const type = readStringProperty(literal, 'type');\n if (type === undefined) return undefined;\n\n // Most fields carry a `name`. Structural containers (`tabs`,\n // `row`, `collapsible`) do not — they flatten into their parent.\n const STRUCTURAL_TYPES = new Set(['tabs', 'row', 'collapsible']);\n const name = readStringProperty(literal, 'name');\n if (name === undefined && !STRUCTURAL_TYPES.has(type)) return undefined;\n\n const required = readBooleanProperty(literal, 'required') ?? false;\n const localized = readBooleanProperty(literal, 'localized') ?? false;\n const base = { name: name ?? '__structural', required, localized };\n\n switch (type) {\n case 'array':\n return {\n ...base,\n kind: 'array',\n fields: extractNestedFields(literal),\n };\n case 'blocks':\n return {\n ...base,\n kind: 'blocks',\n blocks: extractBlocks(literal),\n };\n case 'group':\n return {\n ...base,\n kind: 'group',\n fields: extractNestedFields(literal),\n };\n case 'tabs':\n case 'row':\n case 'collapsible': {\n // Structural containers — flatten their inner fields up so they\n // appear at the parent's level (Payload does the same at runtime).\n const flattened = extractNestedFieldsFromStructural(literal);\n return {\n ...base,\n kind: 'group',\n fields: flattened,\n };\n }\n case 'relationship':\n return {\n ...base,\n kind: 'relationship',\n target: readRelationTarget(literal),\n hasMany: readBooleanProperty(literal, 'hasMany') ?? false,\n };\n case 'upload':\n return {\n ...base,\n kind: 'upload',\n target: readRelationTargetSingle(literal) ?? 'media',\n };\n case 'json':\n return { ...base, kind: 'json' };\n case 'select':\n return {\n ...base,\n kind: 'select',\n options: readSelectOptions(literal),\n hasMany: readBooleanProperty(literal, 'hasMany') ?? false,\n };\n default: {\n const typeRef = SCALAR_TYPE_MAP[type] ?? 'unknown';\n return { ...base, kind: 'scalar', typeRef };\n }\n }\n}\n\nfunction extractNestedFields(literal: ObjectLiteralExpression): readonly ExtractedField[] {\n const fieldsLiteral = readArrayProperty(literal, 'fields');\n if (!fieldsLiteral) return [];\n const out: ExtractedField[] = [];\n for (const element of fieldsLiteral.getElements()) {\n if (!Node.isObjectLiteralExpression(element)) continue;\n const f = extractField(element);\n if (!f) continue;\n // Structural containers carry the magic `__structural` sentinel\n // name — splat their child fields into the parent instead of\n // surfacing them as a nameless property.\n if (f.kind === 'group' && f.name === '__structural') {\n out.push(...f.fields);\n } else {\n out.push(f);\n }\n }\n return out;\n}\n\nfunction extractNestedFieldsFromStructural(\n literal: ObjectLiteralExpression,\n): readonly ExtractedField[] {\n // `tabs` is the awkward one — its inner shape is `tabs: [{ name, fields }, …]`\n // and each tab can either flatten via `name` or expose itself as a group.\n const tabsLiteral = readArrayProperty(literal, 'tabs');\n if (tabsLiteral) {\n const out: ExtractedField[] = [];\n for (const tabElement of tabsLiteral.getElements()) {\n if (!Node.isObjectLiteralExpression(tabElement)) continue;\n const tabName = readStringProperty(tabElement, 'name');\n const tabFields = extractNestedFields(tabElement);\n if (tabName !== undefined) {\n out.push({\n kind: 'group',\n name: tabName,\n required: false,\n localized: false,\n fields: tabFields,\n });\n } else {\n // Named-less tab — flatten its fields into the parent's surface.\n out.push(...tabFields);\n }\n }\n return out;\n }\n // `row` / `collapsible` — fields array sits directly on the literal.\n return extractNestedFields(literal);\n}\n\nfunction extractBlocks(literal: ObjectLiteralExpression): readonly ExtractedBlock[] {\n const blocksLiteral = readArrayProperty(literal, 'blocks');\n if (!blocksLiteral) return [];\n const out: ExtractedBlock[] = [];\n for (const element of blocksLiteral.getElements()) {\n if (!Node.isObjectLiteralExpression(element)) continue;\n const slug = readStringProperty(element, 'slug');\n if (slug === undefined) continue;\n out.push({\n slug,\n typeName: toPascalCase(slug),\n fields: extractNestedFields(element),\n });\n }\n return out;\n}\n\nfunction readRelationTarget(literal: ObjectLiteralExpression): string | readonly string[] {\n const property = literal.getProperty('relationTo');\n if (!property || !Node.isPropertyAssignment(property)) return 'unknown';\n const initialiser = property.getInitializer();\n if (initialiser && Node.isStringLiteral(initialiser)) return initialiser.getLiteralValue();\n if (initialiser && Node.isArrayLiteralExpression(initialiser)) {\n return initialiser\n .getElements()\n .filter(Node.isStringLiteral)\n .map((el) => el.getLiteralValue());\n }\n return 'unknown';\n}\n\nfunction readRelationTargetSingle(literal: ObjectLiteralExpression): string | undefined {\n const target = readRelationTarget(literal);\n if (typeof target === 'string') return target;\n return target[0];\n}\n\nfunction readSelectOptions(literal: ObjectLiteralExpression): readonly string[] {\n const optionsLiteral = readArrayProperty(literal, 'options');\n if (!optionsLiteral) return [];\n const out: string[] = [];\n for (const element of optionsLiteral.getElements()) {\n if (Node.isStringLiteral(element)) {\n out.push(element.getLiteralValue());\n } else if (Node.isObjectLiteralExpression(element)) {\n const value = readStringProperty(element, 'value');\n if (value !== undefined) out.push(value);\n }\n }\n return out;\n}\n\nfunction readStringProperty(literal: ObjectLiteralExpression, name: string): string | undefined {\n const property = literal.getProperty(name);\n if (!property || !isPropertyAssignment(property)) return undefined;\n const initialiser = property.getInitializer();\n if (initialiser && Node.isStringLiteral(initialiser)) return initialiser.getLiteralValue();\n if (initialiser && Node.isNoSubstitutionTemplateLiteral(initialiser)) {\n return initialiser.getLiteralValue();\n }\n return undefined;\n}\n\nfunction readBooleanProperty(literal: ObjectLiteralExpression, name: string): boolean | undefined {\n const property = literal.getProperty(name);\n if (!property || !isPropertyAssignment(property)) return undefined;\n const initialiser = property.getInitializer();\n if (!initialiser) return undefined;\n if (initialiser.getKind() === SyntaxKind.TrueKeyword) return true;\n if (initialiser.getKind() === SyntaxKind.FalseKeyword) return false;\n return undefined;\n}\n\nfunction readArrayProperty(\n literal: ObjectLiteralExpression,\n name: string,\n): ArrayLiteralExpression | undefined {\n const property = literal.getProperty(name);\n if (!property || !isPropertyAssignment(property)) return undefined;\n const initialiser = property.getInitializer();\n if (initialiser && Node.isArrayLiteralExpression(initialiser)) return initialiser;\n return undefined;\n}\n\nfunction isPropertyAssignment(node: Node): node is PropertyAssignment {\n return Node.isPropertyAssignment(node);\n}\n\nfunction toPascalCase(slug: string): string {\n return slug\n .split(/[-_\\s]+/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join('');\n}\n\nexport { toPascalCase };\n","/**\n * Schema-level extraction: open `payload.config.ts`, find every\n * collection and global definition, walk into them.\n *\n * The extractor is deliberately lenient. Payload configurations are\n * full TypeScript programs — a strict parser would have to model\n * conditional types, factory functions, plugin closures. Instead we\n * recognise the *common* shapes (object literal, identifier\n * referencing an imported literal, default export from a sibling\n * file) and emit a diagnostic for anything we can't unwrap.\n *\n * @module @codegen/parser/extract-schema\n */\n\nimport {\n Node,\n Project,\n SyntaxKind,\n type ArrayLiteralExpression,\n type Identifier,\n type ObjectLiteralExpression,\n type SourceFile,\n} from 'ts-morph';\nimport type { ExtractedField, ExtractedSchema, ExtractedSlug } from './types';\nimport { extractField, toPascalCase } from './extract-field';\n\nexport interface ExtractSchemaOptions {\n /** Absolute or relative path to `payload.config.ts`. */\n readonly configPath: string;\n /** When provided, used instead of constructing a fresh ts-morph project. */\n readonly project?: Project;\n /**\n * Optional path to a `tsconfig.json`. When set, ts-morph loads the\n * project's module-resolution configuration so cross-file imports\n * (Homepage from './globals') can be followed.\n */\n readonly tsConfigFilePath?: string;\n}\n\nexport function extractSchema(options: ExtractSchemaOptions): ExtractedSchema {\n const project =\n options.project ??\n new Project(\n options.tsConfigFilePath !== undefined\n ? { tsConfigFilePath: options.tsConfigFilePath }\n : { skipAddingFilesFromTsConfig: true },\n );\n const sourceFile = project.addSourceFileAtPathIfExists(options.configPath);\n if (!sourceFile) {\n return {\n globals: [],\n collections: [],\n diagnostics: [`Could not open ${options.configPath}`],\n };\n }\n // Pull in every transitively-imported file so cross-file identifier\n // resolution (e.g., `import { Homepage } from './globals'`) can\n // reach the underlying object literal.\n project.resolveSourceFileDependencies();\n const diagnostics: string[] = [];\n\n const configLiteral = findConfigLiteral(sourceFile, diagnostics);\n if (!configLiteral) {\n return {\n globals: [],\n collections: [],\n diagnostics: [\n ...diagnostics,\n 'Could not locate a buildConfig({...}) call or `export default {...}` in the config file.',\n ],\n };\n }\n\n const globals = extractSlugList(configLiteral, 'globals', diagnostics);\n const collections = extractSlugList(configLiteral, 'collections', diagnostics);\n\n return { globals, collections, diagnostics };\n}\n\nfunction findConfigLiteral(\n sourceFile: SourceFile,\n diagnostics: string[],\n): ObjectLiteralExpression | undefined {\n const defaultExport = sourceFile.getExportSymbols().find((sym) => sym.getName() === 'default');\n if (!defaultExport) {\n diagnostics.push('payload.config.ts has no default export.');\n return undefined;\n }\n const declarations = defaultExport.getDeclarations();\n for (const decl of declarations) {\n const candidate = unwrapToObjectLiteral(decl);\n if (candidate) return candidate;\n }\n // Fallback: scan the source file for the first `buildConfig({...})` call.\n for (const call of sourceFile.getDescendantsOfKind(SyntaxKind.CallExpression)) {\n const expr = call.getExpression();\n if (Node.isIdentifier(expr) && expr.getText() === 'buildConfig') {\n const arg = call.getArguments()[0];\n if (arg && Node.isObjectLiteralExpression(arg)) return arg;\n }\n }\n return undefined;\n}\n\nfunction unwrapToObjectLiteral(node: Node): ObjectLiteralExpression | undefined {\n if (Node.isExportAssignment(node)) {\n return unwrapExpression(node.getExpression());\n }\n if (Node.isVariableDeclaration(node)) {\n const initialiser = node.getInitializer();\n if (initialiser) return unwrapExpression(initialiser);\n }\n return undefined;\n}\n\nfunction unwrapExpression(node: Node | undefined): ObjectLiteralExpression | undefined {\n if (!node) return undefined;\n if (Node.isObjectLiteralExpression(node)) return node;\n if (Node.isCallExpression(node)) {\n // `buildConfig({...})` or `defineConfig({...})` — first arg.\n const arg = node.getArguments()[0];\n if (arg && Node.isObjectLiteralExpression(arg)) return arg;\n }\n if (Node.isAsExpression(node)) {\n return unwrapExpression(node.getExpression());\n }\n if (Node.isSatisfiesExpression(node)) {\n return unwrapExpression(node.getExpression());\n }\n if (Node.isIdentifier(node)) {\n return resolveIdentifierToObjectLiteral(node);\n }\n return undefined;\n}\n\nfunction resolveIdentifierToObjectLiteral(\n identifier: Identifier,\n): ObjectLiteralExpression | undefined {\n for (const decl of identifier.getDefinitionNodes()) {\n const result = unwrapToObjectLiteral(decl);\n if (result) return result;\n }\n return undefined;\n}\n\nfunction extractSlugList(\n configLiteral: ObjectLiteralExpression,\n key: 'globals' | 'collections',\n diagnostics: string[],\n): readonly ExtractedSlug[] {\n const property = configLiteral.getProperty(key);\n if (!property) return [];\n if (!Node.isPropertyAssignment(property)) return [];\n const initialiser = property.getInitializer();\n if (!initialiser) return [];\n const array = resolveToArrayLiteral(initialiser);\n if (!array) return [];\n return extractEntries(array, diagnostics);\n}\n\nfunction extractEntries(\n array: ArrayLiteralExpression,\n diagnostics: string[],\n): readonly ExtractedSlug[] {\n const out: ExtractedSlug[] = [];\n for (const element of array.getElements()) {\n // Handle `...someArray` spreads — common pattern in real Payload\n // configs that split globals/collections into named buckets.\n if (Node.isSpreadElement(element)) {\n const expandedArray = resolveToArrayLiteral(element.getExpression());\n if (!expandedArray) {\n diagnostics.push(\n `Could not resolve spread \"${element.getText().slice(0, 80)}\" to an array literal.`,\n );\n continue;\n }\n out.push(...extractEntries(expandedArray, diagnostics));\n continue;\n }\n const literal = resolveToObjectLiteral(element);\n if (!literal) {\n diagnostics.push(\n `Could not resolve config entry \"${element.getText().slice(0, 80)}\" to an object literal.`,\n );\n continue;\n }\n const slug = readStringProperty(literal, 'slug');\n if (slug === undefined) {\n diagnostics.push(`Skipping a config entry — no string \\`slug\\` field found.`);\n continue;\n }\n out.push({\n slug,\n typeName: toPascalCase(slug),\n fields: extractFieldList(literal),\n });\n }\n return out;\n}\n\nfunction extractFieldList(configEntry: ObjectLiteralExpression): readonly ExtractedField[] {\n const fieldsProperty = configEntry.getProperty('fields');\n if (!fieldsProperty || !Node.isPropertyAssignment(fieldsProperty)) return [];\n const initialiser = fieldsProperty.getInitializer();\n if (!initialiser || !Node.isArrayLiteralExpression(initialiser)) return [];\n const out: ExtractedField[] = [];\n for (const element of initialiser.getElements()) {\n // Allow spread elements for users who split fields into reusable\n // arrays (e.g., `...commonSeoFields`).\n if (Node.isSpreadElement(element)) {\n const expanded = resolveToArrayLiteral(element.getExpression());\n if (!expanded) continue;\n for (const inner of expanded.getElements()) {\n const literal = resolveToObjectLiteral(inner);\n if (!literal) continue;\n const field = extractField(literal);\n if (!field) continue;\n if (field.kind === 'group' && field.name === '__structural') {\n out.push(...field.fields);\n } else {\n out.push(field);\n }\n }\n continue;\n }\n const literal = resolveToObjectLiteral(element);\n if (!literal) continue;\n const field = extractField(literal);\n if (!field) continue;\n if (field.kind === 'group' && field.name === '__structural') {\n out.push(...field.fields);\n } else {\n out.push(field);\n }\n }\n return out;\n}\n\nfunction resolveToObjectLiteral(node: Node): ObjectLiteralExpression | undefined {\n if (Node.isObjectLiteralExpression(node)) return node;\n if (Node.isIdentifier(node)) return resolveIdentifierToObjectLiteral(node);\n if (Node.isAsExpression(node)) return resolveToObjectLiteral(node.getExpression());\n if (Node.isSatisfiesExpression(node)) return resolveToObjectLiteral(node.getExpression());\n if (Node.isCallExpression(node)) {\n const arg = node.getArguments()[0];\n if (arg) return resolveToObjectLiteral(arg);\n }\n return undefined;\n}\n\nfunction resolveToArrayLiteral(node: Node): ArrayLiteralExpression | undefined {\n if (Node.isArrayLiteralExpression(node)) return node;\n if (Node.isAsExpression(node)) return resolveToArrayLiteral(node.getExpression());\n if (Node.isSatisfiesExpression(node)) return resolveToArrayLiteral(node.getExpression());\n if (Node.isIdentifier(node)) {\n for (const decl of node.getDefinitionNodes()) {\n if (Node.isVariableDeclaration(decl)) {\n const initialiser = decl.getInitializer();\n if (initialiser) {\n const resolved = resolveToArrayLiteral(initialiser);\n if (resolved) return resolved;\n }\n }\n }\n }\n return undefined;\n}\n\nfunction readStringProperty(literal: ObjectLiteralExpression, name: string): string | undefined {\n const property = literal.getProperty(name);\n if (!property || !Node.isPropertyAssignment(property)) return undefined;\n const initialiser = property.getInitializer();\n if (initialiser && Node.isStringLiteral(initialiser)) return initialiser.getLiteralValue();\n return undefined;\n}\n","/**\n * Render `ExtractedSchema` to a TypeScript source string.\n *\n * The output is one self-contained `.ts` file that ships:\n *\n * - one `interface` per global and per collection,\n * - nested `interface` declarations for `group`/`array`/`blocks`,\n * - discriminated unions for `blocks` fields (one variant per slug),\n * - `PayloadCollections` / `PayloadGlobals` maps for slug-keyed\n * access (`PayloadCollections['posts']`), and\n * - a `PayloadSlug` alias.\n *\n * Nothing in the runtime depends on this output — consumers import\n * what they need by name.\n *\n * @module @codegen/emit/emit-types\n */\n\nimport type {\n ExtractedBlock,\n ExtractedField,\n ExtractedSchema,\n ExtractedSlug,\n} from '../parser/types';\nimport { toPascalCase } from '../parser/extract-field';\n\nexport interface EmitOptions {\n /** When true, includes a `@deprecated` JSDoc on localized fields. */\n readonly markLocalizedAsDeprecated?: boolean;\n /** Header text injected at the top of the output. Defaults sensibly. */\n readonly header?: string;\n}\n\nconst DEFAULT_HEADER =\n '// Auto-generated by payload-live-preview/codegen.\\n' +\n '// Do not edit by hand — run `pll-codegen` to regenerate.\\n' +\n '/* eslint-disable */';\n\nexport function emitTypes(schema: ExtractedSchema, options: EmitOptions = {}): string {\n const lines: string[] = [];\n lines.push(options.header ?? DEFAULT_HEADER);\n lines.push('');\n lines.push('import type { PayloadMedia, PayloadRelationship } from \"payload-live-preview\";');\n lines.push('');\n\n // Emit slug interfaces (globals + collections), each potentially\n // accompanied by nested interface declarations.\n const seenAuxNames = new Set<string>();\n for (const slug of [...schema.globals, ...schema.collections]) {\n emitSlug(slug, lines, seenAuxNames, options);\n lines.push('');\n }\n\n // Slug → type maps.\n if (schema.globals.length > 0) {\n lines.push('export type PayloadGlobals = {');\n for (const g of schema.globals) {\n lines.push(` '${g.slug}': ${g.typeName};`);\n }\n lines.push('};');\n lines.push('');\n }\n if (schema.collections.length > 0) {\n lines.push('export type PayloadCollections = {');\n for (const c of schema.collections) {\n lines.push(` '${c.slug}': ${c.typeName};`);\n }\n lines.push('};');\n lines.push('');\n }\n const slugAliases: string[] = [];\n if (schema.globals.length > 0) slugAliases.push('keyof PayloadGlobals');\n if (schema.collections.length > 0) slugAliases.push('keyof PayloadCollections');\n if (slugAliases.length > 0) {\n lines.push(`export type PayloadSlug = ${slugAliases.join(' | ')};`);\n lines.push('');\n }\n\n return lines.join('\\n').replace(/\\n{3,}/g, '\\n\\n');\n}\n\nfunction emitSlug(\n slug: ExtractedSlug,\n lines: string[],\n seenAuxNames: Set<string>,\n options: EmitOptions,\n): void {\n emitAuxiliaries(slug.typeName, slug.fields, lines, seenAuxNames, options);\n lines.push(`export interface ${slug.typeName} {`);\n for (const field of slug.fields) {\n emitFieldMember(field, slug.typeName, lines, options);\n }\n lines.push('}');\n}\n\nfunction emitAuxiliaries(\n prefix: string,\n fields: readonly ExtractedField[],\n lines: string[],\n seenAuxNames: Set<string>,\n options: EmitOptions,\n): void {\n for (const field of fields) {\n const auxName = nestedTypeName(prefix, field.name);\n if (field.kind === 'array' || field.kind === 'group') {\n if (seenAuxNames.has(auxName)) continue;\n seenAuxNames.add(auxName);\n emitAuxiliaries(auxName, field.fields, lines, seenAuxNames, options);\n lines.push(`export interface ${auxName} {`);\n for (const inner of field.fields) {\n emitFieldMember(inner, auxName, lines, options);\n }\n lines.push('}');\n lines.push('');\n } else if (field.kind === 'blocks') {\n for (const block of field.blocks) {\n const blockTypeName = nestedTypeName(auxName, block.typeName);\n if (seenAuxNames.has(blockTypeName)) continue;\n seenAuxNames.add(blockTypeName);\n emitAuxiliaries(blockTypeName, block.fields, lines, seenAuxNames, options);\n emitBlockInterface(blockTypeName, block, lines, options);\n }\n }\n }\n}\n\nfunction emitBlockInterface(\n typeName: string,\n block: ExtractedBlock,\n lines: string[],\n options: EmitOptions,\n): void {\n lines.push(`export interface ${typeName} {`);\n lines.push(` blockType: '${block.slug}';`);\n for (const field of block.fields) {\n emitFieldMember(field, typeName, lines, options);\n }\n lines.push('}');\n lines.push('');\n}\n\nfunction emitFieldMember(\n field: ExtractedField,\n parent: string,\n lines: string[],\n options: EmitOptions,\n): void {\n if (options.markLocalizedAsDeprecated && field.localized) {\n lines.push(` /** @localized */`);\n }\n const optional = field.required ? '' : '?';\n lines.push(` ${field.name}${optional}: ${renderFieldType(field, parent)};`);\n}\n\nfunction renderFieldType(field: ExtractedField, parent: string): string {\n switch (field.kind) {\n case 'scalar':\n return field.typeRef;\n case 'array':\n return `${nestedTypeName(parent, field.name)}[]`;\n case 'blocks': {\n if (field.blocks.length === 0) return 'unknown[]';\n const variants = field.blocks\n .map((b) => nestedTypeName(nestedTypeName(parent, field.name), b.typeName))\n .join(' | ');\n return `(${variants})[]`;\n }\n case 'group':\n return nestedTypeName(parent, field.name);\n case 'relationship': {\n const targetExpr: string = Array.isArray(field.target)\n ? field.target.map((t) => `'${t}'`).join(' | ')\n : `'${field.target as string}'`;\n const base = `PayloadRelationship<${targetExpr}>`;\n return field.hasMany ? `${base}[]` : base;\n }\n case 'upload':\n return 'PayloadMedia';\n case 'json':\n return 'unknown';\n case 'select': {\n if (field.options.length === 0) return field.hasMany ? 'string[]' : 'string';\n const literal = field.options.map((o) => `'${o}'`).join(' | ');\n return field.hasMany ? `(${literal})[]` : literal;\n }\n }\n}\n\nfunction nestedTypeName(parent: string, child: string): string {\n return `${parent}${toPascalCase(child)}`;\n}\n","/**\n * Programmatic codegen API.\n *\n * ```ts\n * import { generateTypes } from 'payload-live-preview/codegen';\n * const { code, diagnostics } = await generateTypes({\n * configPath: 'backend/src/payload.config.ts',\n * outFile: 'frontend/src/payload-types.ts',\n * });\n * ```\n *\n * @module @codegen\n */\n\nimport { mkdir, writeFile } from 'node:fs/promises';\nimport { dirname, isAbsolute, resolve } from 'node:path';\nimport { extractSchema, type ExtractSchemaOptions } from './parser/extract-schema';\nimport { emitTypes, type EmitOptions } from './emit/emit-types';\nimport type { ExtractedSchema } from './parser/types';\n\nexport interface GenerateTypesOptions\n extends Pick<ExtractSchemaOptions, 'configPath' | 'project' | 'tsConfigFilePath'>, EmitOptions {\n /**\n * If set, the generated code is written to this absolute or\n * cwd-relative path. The function still returns the rendered string\n * in `code` so callers can verify before writing.\n */\n readonly outFile?: string;\n /** Working directory used to resolve relative paths. Defaults to `process.cwd()`. */\n readonly cwd?: string;\n}\n\nexport interface GenerateTypesResult {\n readonly code: string;\n readonly diagnostics: readonly string[];\n readonly schema: ExtractedSchema;\n readonly outFile?: string;\n}\n\nexport async function generateTypes(options: GenerateTypesOptions): Promise<GenerateTypesResult> {\n const cwd = options.cwd ?? process.cwd();\n const configPath = isAbsolute(options.configPath)\n ? options.configPath\n : resolve(cwd, options.configPath);\n const schema = extractSchema({\n configPath,\n ...(options.project !== undefined ? { project: options.project } : {}),\n ...(options.tsConfigFilePath !== undefined\n ? { tsConfigFilePath: options.tsConfigFilePath }\n : {}),\n });\n const code = emitTypes(schema, options);\n\n const result: GenerateTypesResult = options.outFile\n ? {\n code,\n diagnostics: schema.diagnostics,\n schema,\n outFile: isAbsolute(options.outFile) ? options.outFile : resolve(cwd, options.outFile),\n }\n : { code, diagnostics: schema.diagnostics, schema };\n\n if (result.outFile) {\n await mkdir(dirname(result.outFile), { recursive: true });\n await writeFile(result.outFile, code, 'utf8');\n }\n\n return result;\n}\n\nexport { extractSchema } from './parser/extract-schema';\nexport { emitTypes } from './emit/emit-types';\nexport type { ExtractedSchema, ExtractedSlug, ExtractedField } from './parser/types';\n","#!/usr/bin/env node\n/**\n * `pll-codegen` CLI — runs the type generator from the command line.\n *\n * npx pll-codegen \\\n * --config backend/src/payload.config.ts \\\n * --out frontend/src/payload-types.ts\n *\n * Exit codes:\n * 0 — generation succeeded (warnings ok)\n * 1 — fatal error (config not found, parse error)\n * 2 — generation produced zero globals AND zero collections —\n * almost certainly a configuration mismatch\n *\n * @module @codegen/cli\n */\n\nimport { generateTypes } from './index';\n\ninterface ParsedArgs {\n configPath: string | undefined;\n outFile: string | undefined;\n tsConfigFilePath: string | undefined;\n showHelp: boolean;\n quiet: boolean;\n}\n\nfunction parseArgs(argv: readonly string[]): ParsedArgs {\n const parsed: ParsedArgs = {\n configPath: undefined,\n outFile: undefined,\n tsConfigFilePath: undefined,\n showHelp: false,\n quiet: false,\n };\n for (let i = 0; i < argv.length; i += 1) {\n const token = argv[i];\n if (token === '-h' || token === '--help') {\n parsed.showHelp = true;\n continue;\n }\n if (token === '-q' || token === '--quiet') {\n parsed.quiet = true;\n continue;\n }\n if (token === '--config' || token === '-c') {\n parsed.configPath = argv[i + 1];\n i += 1;\n continue;\n }\n if (token === '--out' || token === '-o') {\n parsed.outFile = argv[i + 1];\n i += 1;\n continue;\n }\n if (token === '--tsconfig') {\n parsed.tsConfigFilePath = argv[i + 1];\n i += 1;\n continue;\n }\n if (token?.startsWith('--config=')) {\n parsed.configPath = token.slice('--config='.length);\n continue;\n }\n if (token?.startsWith('--out=')) {\n parsed.outFile = token.slice('--out='.length);\n continue;\n }\n if (token?.startsWith('--tsconfig=')) {\n parsed.tsConfigFilePath = token.slice('--tsconfig='.length);\n continue;\n }\n }\n return parsed;\n}\n\nconst HELP_TEXT = `pll-codegen — generate TypeScript types from a Payload config\n\nUsage:\n pll-codegen --config <path> --out <path> [--quiet]\n\nOptions:\n -c, --config <path> Path to payload.config.ts (required)\n -o, --out <path> Output file for generated types (required)\n --tsconfig <path> Use this tsconfig for cross-file import resolution\n -q, --quiet Suppress non-error logging\n -h, --help Show this help\n\nExamples:\n pll-codegen --config backend/src/payload.config.ts --out frontend/src/payload-types.ts\n pll-codegen -c ./payload.config.ts -o ./generated.ts\n`;\n\nexport async function run(argv: readonly string[]): Promise<number> {\n const args = parseArgs(argv);\n if (args.showHelp) {\n process.stdout.write(HELP_TEXT);\n return 0;\n }\n if (!args.configPath || !args.outFile) {\n process.stderr.write(\n 'pll-codegen: --config and --out are required. Try `pll-codegen --help`.\\n',\n );\n return 1;\n }\n try {\n const result = await generateTypes({\n configPath: args.configPath,\n outFile: args.outFile,\n ...(args.tsConfigFilePath !== undefined ? { tsConfigFilePath: args.tsConfigFilePath } : {}),\n });\n const slugCount = result.schema.globals.length + result.schema.collections.length;\n if (!args.quiet) {\n process.stdout.write(\n `pll-codegen: wrote ${result.outFile} ` +\n `(${result.schema.globals.length} globals, ${result.schema.collections.length} collections)\\n`,\n );\n for (const diagnostic of result.diagnostics) {\n process.stderr.write(` warning: ${diagnostic}\\n`);\n }\n }\n if (slugCount === 0) {\n process.stderr.write(\n 'pll-codegen: no globals or collections found — check that the config path is correct.\\n',\n );\n return 2;\n }\n return 0;\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n process.stderr.write(`pll-codegen: ${message}\\n`);\n return 1;\n }\n}\n\nfunction isCliInvocation(): boolean {\n if (typeof process === 'undefined') return false;\n const entry = process.argv[1];\n if (!entry) return false;\n return entry.includes('pll-codegen') || entry.includes('codegen-cli');\n}\n\nif (isCliInvocation()) {\n // Direct invocation via the bin shim — run and exit with the code.\n void run(process.argv.slice(2)).then((code) => {\n process.exit(code);\n });\n}\n"]}
@@ -1,19 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * `pll-codegen` CLI — runs the type generator from the command line.
4
- *
5
- * npx pll-codegen \
6
- * --config backend/src/payload.config.ts \
7
- * --out frontend/src/payload-types.ts
8
- *
9
- * Exit codes:
10
- * 0 — generation succeeded (warnings ok)
11
- * 1 — fatal error (config not found, parse error)
12
- * 2 — generation produced zero globals AND zero collections —
13
- * almost certainly a configuration mismatch
14
- *
15
- * @module @codegen/cli
16
- */
17
- declare function run(argv: readonly string[]): Promise<number>;
18
-
19
- export { run };
@@ -1,168 +0,0 @@
1
- /**
2
- * Public types for the Astro adapter.
3
- *
4
- * @module @adapters/astro/types
5
- */
6
- interface LivePreviewAstroOptions {
7
- /**
8
- * How the integration wires the preview:
9
- *
10
- * - `'inline'` (default) — bake the runtime into every page at
11
- * build time. For `output: 'static'` projects.
12
- * - `'middleware'` — auto-register the preview middleware:
13
- * request-time injection into preview requests only, plus
14
- * `frame-ancestors` CSP management. For `output: 'server'`.
15
- * (`shouldInject` is unsupported here — options serialize into
16
- * the build.)
17
- */
18
- readonly mode?: 'inline' | 'middleware';
19
- /**
20
- * Trusted Payload admin origin(s). Required in production unless
21
- * `document.referrer` reliably exposes the parent origin.
22
- */
23
- readonly allowedOrigins?: readonly string[];
24
- /**
25
- * Payload server origin, e.g. `https://cms.example.com`. When set,
26
- * incoming updates are re-fetched through the Payload REST API so
27
- * relationship/upload fields render populated instead of as bare
28
- * IDs. Strongly recommended for Payload 3.x.
29
- */
30
- readonly serverURL?: string;
31
- /** REST API route prefix used with `serverURL`. Defaults to `/api`. */
32
- readonly apiRoute?: string;
33
- /** Population depth used with `serverURL`. Defaults to `1`. */
34
- readonly mergeDepth?: number;
35
- /**
36
- * Auto-inject the inline preview script. Default `true`. Disable to
37
- * embed the script manually via `renderLivePreviewScript()`.
38
- */
39
- readonly autoInject?: boolean;
40
- /**
41
- * When the middleware injects the script (integration-based
42
- * injection is always build-time and unaffected):
43
- *
44
- * - `'preview-only'` (default) — only into responses that look
45
- * like preview requests (`?preview=true` / `?draft=true` query,
46
- * `Sec-Fetch-Dest: iframe`, or a referer from `allowedOrigins`).
47
- * Normal production traffic passes through untouched.
48
- * - `'always'` — into every HTML response.
49
- */
50
- readonly inject?: 'preview-only' | 'always';
51
- /**
52
- * Query parameters that mark a request as a preview (values `true`
53
- * or `1`). Default: `['preview', 'draft', 'livePreview']`.
54
- */
55
- readonly previewQueryParams?: readonly string[];
56
- /**
57
- * Which signals count as a preview request. Default: all three
58
- * (`query`, `fetch-dest`, `referer`). Restrict to `['query']` when
59
- * an unsolicited iframe load must never trigger preview handling
60
- * (e.g. sites that serve `frame-ancestors 'none'` and only allow
61
- * preview via the explicit `?preview=true` URL).
62
- */
63
- readonly previewSignals?: readonly ('query' | 'fetch-dest' | 'referer')[];
64
- /**
65
- * Restrict auto-inject to requests where this function returns
66
- * `true`. Applied on top of the `inject` mode.
67
- */
68
- readonly shouldInject?: (request: Request) => boolean;
69
- /**
70
- * Content-Security-Policy management on preview responses:
71
- *
72
- * - `'frame-ancestors'` (default) — merge a `frame-ancestors`
73
- * directive allowing the admin origins to embed the page.
74
- * Existing CSP directives are preserved (union merge).
75
- * - `'full'` — additionally manage `script-src` with a
76
- * per-request nonce. Only useful when your whole page is
77
- * nonce-disciplined; see `strictDynamic`.
78
- * - `false` — never touch CSP headers.
79
- *
80
- * `true` is accepted as a legacy alias for `'frame-ancestors'`.
81
- */
82
- readonly manageCsp?: boolean | 'frame-ancestors' | 'full';
83
- /**
84
- * Add `'strict-dynamic'` to the managed `script-src` (only with
85
- * `manageCsp: 'full'`). ⚠️ Under CSP 3 this makes browsers ignore
86
- * `'self'` and host sources — every script on the page must then
87
- * carry the nonce or be loaded by a nonce-carrying script. Astro's
88
- * own hydration scripts do NOT carry it, so leave this off unless
89
- * you know your page is fully nonce-disciplined. Default `false`.
90
- */
91
- readonly strictDynamic?: boolean;
92
- /**
93
- * Extra `frame-ancestors` sources to merge with the auto-detected
94
- * ones. Always includes `'self'` and every entry in `allowedOrigins`.
95
- */
96
- readonly frameAncestorsExtra?: readonly string[];
97
- /**
98
- * Extra `script-src` sources (e.g., a CDN) appended after the nonce
99
- * (only with `manageCsp: 'full'`).
100
- */
101
- readonly scriptSrcExtra?: readonly string[];
102
- /**
103
- * Enable verbose debug logging in the injected client. Default: dev mode.
104
- */
105
- readonly debug?: boolean;
106
- /**
107
- * Debounce window for incoming updates. Default: 50 ms.
108
- */
109
- readonly debounceMs?: number;
110
- /**
111
- * Heartbeat timeout in ms. Default `0` (disabled — the Payload admin
112
- * sends no keepalive, so an idle timeout would cause false
113
- * disconnects).
114
- */
115
- readonly heartbeatMs?: number;
116
- }
117
-
118
- /**
119
- * Astro middleware for Payload Live Preview.
120
- *
121
- * Responsibilities (per request):
122
- *
123
- * 1. Generate a per-response CSP nonce and stash it on
124
- * `Astro.locals.livePreviewNonce` so consumers can reference it.
125
- * 2. On **preview requests only** (see `isPreviewRequest`), rewrite
126
- * the HTML response to inject the live-preview `<script>` tag.
127
- * Normal production traffic streams through untouched — no
128
- * buffering, no extra bytes.
129
- * 3. On preview requests, merge `frame-ancestors` into the
130
- * `Content-Security-Policy` header so the Payload admin may embed
131
- * the page. Full `script-src` nonce management is opt-in via
132
- * `manageCsp: 'full'`.
133
- *
134
- * Prerendered pages are skipped entirely: Astro runs middleware at
135
- * build time for those, where per-request nonces and response headers
136
- * are meaningless.
137
- *
138
- * @module @adapters/astro/middleware
139
- */
140
-
141
- type MiddlewareNext = () => Promise<Response>;
142
- interface MiddlewareContext {
143
- readonly request: Request;
144
- readonly locals: Record<string, unknown>;
145
- /** Present in Astro ≥ 5: `true` while prerendering at build time. */
146
- readonly isPrerendered?: boolean;
147
- }
148
- type LivePreviewMiddleware = (context: MiddlewareContext, next: MiddlewareNext) => Promise<Response>;
149
- /**
150
- * Key on `Astro.locals` carrying the request-scoped nonce. Consumers
151
- * can read `Astro.locals.livePreviewNonce` from `.astro` templates to
152
- * set the `nonce` attribute on their own scripts.
153
- */
154
- declare const NONCE_LOCALS_KEY = "livePreviewNonce";
155
- /**
156
- * Build the Astro-compatible middleware. Register it in
157
- * `src/middleware.ts`:
158
- *
159
- * ```ts
160
- * import { createLivePreviewMiddleware } from 'payload-live-preview/astro';
161
- * export const onRequest = createLivePreviewMiddleware({
162
- * allowedOrigins: [import.meta.env.PUBLIC_PAYLOAD_ADMIN_ORIGIN],
163
- * });
164
- * ```
165
- */
166
- declare function createLivePreviewMiddleware(options?: LivePreviewAstroOptions): LivePreviewMiddleware;
167
-
168
- export { type LivePreviewAstroOptions as L, NONCE_LOCALS_KEY as N, type LivePreviewMiddleware as a, createLivePreviewMiddleware as c };
@@ -1,68 +0,0 @@
1
- /**
2
- * Server-side preview-request detection.
3
- *
4
- * The live-preview runtime only ever activates inside the Payload
5
- * admin's iframe, but the *server* still has to decide whether to
6
- * inject the (sizeable) inline script into a given HTML response.
7
- * Injecting it into every page for every visitor buffers every
8
- * response and ships dead bytes to production traffic — so adapters
9
- * gate injection on this predicate by default, and consumers with
10
- * hand-rolled middleware can import it directly.
11
- *
12
- * A request counts as a preview when any of these hold:
13
- *
14
- * 1. A preview query parameter is present (`?preview=true`,
15
- * `?draft=true`, `?livePreview=true` — configurable).
16
- * 2. `Sec-Fetch-Dest: iframe` — the document is being loaded as an
17
- * iframe, which is exactly how the Payload admin embeds it.
18
- * (Sent by all evergreen browsers; absence never *excludes* a
19
- * request, presence includes it.)
20
- * 3. The `Referer` points at one of the given admin origins.
21
- *
22
- * @module @adapters/shared/preview-request
23
- */
24
- /** The individual signals the predicate can consider. */
25
- type PreviewSignal = 'query' | 'fetch-dest' | 'referer';
26
- interface PreviewRequestOptions {
27
- /**
28
- * Which signals count as "this is a preview request". Default: all
29
- * three. High-security setups that must never relax framing headers
30
- * for unsolicited iframe loads can restrict to `['query']` — then
31
- * only an explicit `?preview=true` (e.g. from `buildLivePreviewUrl`)
32
- * activates preview handling.
33
- */
34
- readonly signals?: readonly PreviewSignal[];
35
- /**
36
- * Query parameters (with values `true` or `1`) that mark a request
37
- * as a preview. Default: `['preview', 'draft', 'livePreview']`.
38
- */
39
- readonly queryParams?: readonly string[];
40
- /**
41
- * Treat `Sec-Fetch-Dest: iframe` as a preview signal. Default `true`.
42
- * Legacy alias for excluding `'fetch-dest'` from `signals`.
43
- */
44
- readonly checkFetchDest?: boolean;
45
- /**
46
- * Admin origins whose `Referer` marks a request as a preview,
47
- * e.g. `['https://cms.example.com']`.
48
- */
49
- readonly adminOrigins?: readonly string[];
50
- }
51
- /**
52
- * The minimal request surface the predicate needs. The standard
53
- * `Request` satisfies it structurally, and server frameworks without
54
- * fetch-style requests (e.g. Nitro/H3) can supply a tiny shim.
55
- */
56
- interface PreviewRequestLike {
57
- readonly url: string;
58
- readonly headers: {
59
- get(name: string): string | null;
60
- };
61
- }
62
- /**
63
- * Decide whether `request` is a live-preview request. See the module
64
- * docblock for the exact signals.
65
- */
66
- declare function isPreviewRequest(request: PreviewRequestLike, options?: PreviewRequestOptions): boolean;
67
-
68
- export { type PreviewRequestLike as P, type PreviewRequestOptions as a, isPreviewRequest as i };
@@ -1,68 +0,0 @@
1
- /**
2
- * Server-side preview-request detection.
3
- *
4
- * The live-preview runtime only ever activates inside the Payload
5
- * admin's iframe, but the *server* still has to decide whether to
6
- * inject the (sizeable) inline script into a given HTML response.
7
- * Injecting it into every page for every visitor buffers every
8
- * response and ships dead bytes to production traffic — so adapters
9
- * gate injection on this predicate by default, and consumers with
10
- * hand-rolled middleware can import it directly.
11
- *
12
- * A request counts as a preview when any of these hold:
13
- *
14
- * 1. A preview query parameter is present (`?preview=true`,
15
- * `?draft=true`, `?livePreview=true` — configurable).
16
- * 2. `Sec-Fetch-Dest: iframe` — the document is being loaded as an
17
- * iframe, which is exactly how the Payload admin embeds it.
18
- * (Sent by all evergreen browsers; absence never *excludes* a
19
- * request, presence includes it.)
20
- * 3. The `Referer` points at one of the given admin origins.
21
- *
22
- * @module @adapters/shared/preview-request
23
- */
24
- /** The individual signals the predicate can consider. */
25
- type PreviewSignal = 'query' | 'fetch-dest' | 'referer';
26
- interface PreviewRequestOptions {
27
- /**
28
- * Which signals count as "this is a preview request". Default: all
29
- * three. High-security setups that must never relax framing headers
30
- * for unsolicited iframe loads can restrict to `['query']` — then
31
- * only an explicit `?preview=true` (e.g. from `buildLivePreviewUrl`)
32
- * activates preview handling.
33
- */
34
- readonly signals?: readonly PreviewSignal[];
35
- /**
36
- * Query parameters (with values `true` or `1`) that mark a request
37
- * as a preview. Default: `['preview', 'draft', 'livePreview']`.
38
- */
39
- readonly queryParams?: readonly string[];
40
- /**
41
- * Treat `Sec-Fetch-Dest: iframe` as a preview signal. Default `true`.
42
- * Legacy alias for excluding `'fetch-dest'` from `signals`.
43
- */
44
- readonly checkFetchDest?: boolean;
45
- /**
46
- * Admin origins whose `Referer` marks a request as a preview,
47
- * e.g. `['https://cms.example.com']`.
48
- */
49
- readonly adminOrigins?: readonly string[];
50
- }
51
- /**
52
- * The minimal request surface the predicate needs. The standard
53
- * `Request` satisfies it structurally, and server frameworks without
54
- * fetch-style requests (e.g. Nitro/H3) can supply a tiny shim.
55
- */
56
- interface PreviewRequestLike {
57
- readonly url: string;
58
- readonly headers: {
59
- get(name: string): string | null;
60
- };
61
- }
62
- /**
63
- * Decide whether `request` is a live-preview request. See the module
64
- * docblock for the exact signals.
65
- */
66
- declare function isPreviewRequest(request: PreviewRequestLike, options?: PreviewRequestOptions): boolean;
67
-
68
- export { type PreviewRequestLike as P, type PreviewRequestOptions as a, isPreviewRequest as i };