@opensaas/stack-auth 0.39.2 → 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +153 -0
  3. package/CLAUDE.md +140 -22
  4. package/dist/client/index.d.ts +0 -16
  5. package/dist/client/index.d.ts.map +1 -1
  6. package/dist/config/adopt-better-auth-tables.d.ts +4 -49
  7. package/dist/config/adopt-better-auth-tables.d.ts.map +1 -1
  8. package/dist/config/adopt-better-auth-tables.js +4 -51
  9. package/dist/config/adopt-better-auth-tables.js.map +1 -1
  10. package/dist/config/derive-auth-lists.d.ts +42 -37
  11. package/dist/config/derive-auth-lists.d.ts.map +1 -1
  12. package/dist/config/derive-auth-lists.js +579 -223
  13. package/dist/config/derive-auth-lists.js.map +1 -1
  14. package/dist/config/index.d.ts +0 -3
  15. package/dist/config/index.d.ts.map +1 -1
  16. package/dist/config/index.js +4 -34
  17. package/dist/config/index.js.map +1 -1
  18. package/dist/config/plugin.d.ts.map +1 -1
  19. package/dist/config/plugin.js +20 -90
  20. package/dist/config/plugin.js.map +1 -1
  21. package/dist/config/types.d.ts +89 -67
  22. package/dist/config/types.d.ts.map +1 -1
  23. package/dist/index.d.ts +1 -9
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +3 -13
  26. package/dist/index.js.map +1 -1
  27. package/dist/lists/index.d.ts +9 -5
  28. package/dist/lists/index.d.ts.map +1 -1
  29. package/dist/lists/index.js +9 -6
  30. package/dist/lists/index.js.map +1 -1
  31. package/dist/mcp/better-auth.d.ts +6 -19
  32. package/dist/mcp/better-auth.d.ts.map +1 -1
  33. package/dist/mcp/better-auth.js +6 -20
  34. package/dist/mcp/better-auth.js.map +1 -1
  35. package/dist/plugins/index.d.ts +4 -4
  36. package/dist/plugins/index.d.ts.map +1 -1
  37. package/dist/plugins/index.js +4 -4
  38. package/dist/plugins/index.js.map +1 -1
  39. package/dist/runtime/types.d.ts +2 -9
  40. package/dist/runtime/types.d.ts.map +1 -1
  41. package/dist/runtime/types.js +0 -4
  42. package/dist/runtime/types.js.map +1 -1
  43. package/dist/server/index.d.ts +5 -12
  44. package/dist/server/index.d.ts.map +1 -1
  45. package/dist/server/index.js +14 -62
  46. package/dist/server/index.js.map +1 -1
  47. package/dist/ui/components/ForgotPasswordForm.d.ts +0 -3
  48. package/dist/ui/components/ForgotPasswordForm.d.ts.map +1 -1
  49. package/dist/ui/components/ForgotPasswordForm.js +0 -3
  50. package/dist/ui/components/ForgotPasswordForm.js.map +1 -1
  51. package/dist/ui/components/ResetPasswordForm.d.ts +0 -3
  52. package/dist/ui/components/ResetPasswordForm.d.ts.map +1 -1
  53. package/dist/ui/components/ResetPasswordForm.js +0 -5
  54. package/dist/ui/components/ResetPasswordForm.js.map +1 -1
  55. package/dist/ui/components/SignInForm.d.ts +0 -3
  56. package/dist/ui/components/SignInForm.d.ts.map +1 -1
  57. package/dist/ui/components/SignInForm.js +0 -4
  58. package/dist/ui/components/SignInForm.js.map +1 -1
  59. package/dist/ui/components/SignUpForm.d.ts +0 -3
  60. package/dist/ui/components/SignUpForm.d.ts.map +1 -1
  61. package/dist/ui/components/SignUpForm.js +0 -5
  62. package/dist/ui/components/SignUpForm.js.map +1 -1
  63. package/dist/ui/lib/clean-error-message.d.ts +3 -6
  64. package/dist/ui/lib/clean-error-message.d.ts.map +1 -1
  65. package/dist/ui/lib/clean-error-message.js +3 -6
  66. package/dist/ui/lib/clean-error-message.js.map +1 -1
  67. package/dist/ui/types.d.ts +2 -15
  68. package/dist/ui/types.d.ts.map +1 -1
  69. package/dist/ui/types.js +2 -7
  70. package/dist/ui/types.js.map +1 -1
  71. package/package.json +12 -5
  72. package/src/client/index.ts +0 -17
  73. package/src/config/adopt-better-auth-tables.ts +4 -51
  74. package/src/config/derive-auth-lists.ts +685 -252
  75. package/src/config/index.ts +4 -34
  76. package/src/config/plugin.ts +21 -91
  77. package/src/config/types.ts +90 -67
  78. package/src/index.ts +3 -14
  79. package/src/lists/index.ts +17 -5
  80. package/src/mcp/better-auth.ts +6 -25
  81. package/src/plugins/index.ts +4 -5
  82. package/src/runtime/types.ts +2 -10
  83. package/src/server/index.ts +17 -70
  84. package/src/ui/components/ForgotPasswordForm.tsx +0 -3
  85. package/src/ui/components/ResetPasswordForm.tsx +0 -5
  86. package/src/ui/components/SignInForm.tsx +0 -4
  87. package/src/ui/components/SignUpForm.tsx +0 -5
  88. package/src/ui/lib/clean-error-message.ts +3 -6
  89. package/src/ui/types.ts +2 -15
  90. package/tests/auth-lists-drift.test.ts +480 -0
  91. package/tests/config.test.ts +3 -0
  92. package/tests/credential-field-read-deny-e2e.test.ts +295 -0
  93. package/tests/derive-auth-lists.test.ts +263 -6
  94. package/tests/generated-fk-shape.test.ts +432 -9
  95. package/tests/mcp-oauth-cascade-e2e.test.ts +267 -0
  96. package/tests/plugin-derived-keys.test.ts +39 -0
  97. package/tests/plugin-table-derivation.test.ts +270 -0
  98. package/tsconfig.tsbuildinfo +1 -1
  99. package/dist/server/schema-converter.d.ts +0 -81
  100. package/dist/server/schema-converter.d.ts.map +0 -1
  101. package/dist/server/schema-converter.js +0 -157
  102. package/dist/server/schema-converter.js.map +0 -1
  103. package/src/server/schema-converter.ts +0 -243
  104. package/tests/schema-converter.test.ts +0 -399
@@ -1 +1 @@
1
- {"version":3,"file":"derive-auth-lists.js","sourceRoot":"","sources":["../../src/config/derive-auth-lists.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EACL,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,OAAO,EACP,MAAM,EACN,YAAY,GACb,MAAM,6BAA6B,CAAA;AA0BpC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAS,MAAM,CACb,KAAgC,EAChC,UAAmB;IAEnB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAC3B,OAAO;QACL,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAA;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,OAAO,CAAC,SAAiB,EAAE,MAA8B;IAChE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;IAChC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AAC7C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,kBAAkB,CAAC,MAA8B;IACxD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IAC5B,OAAO;QACL,UAAU,EAAE,KAAK;QACjB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,kBAAkB,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;YACjD,MAAM;YACN,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,+BAA+B,CAAC;SAClF,CAAC;KACH,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,cAAc,CACrB,KAAgC,EAChC,IAA8B,EAC9B,UAAgC,EAChC,MAAgC;IAGhC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;IACtB,OAAO,IAAI,CAAC;QACV,MAAM,EAAE;YACN,IAAI,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;YACxE,KAAK,EAAE,IAAI,CAAC;gBACV,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;gBAChC,SAAS,EAAE,QAAQ;gBACnB,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;aACxB,CAAC;YACF,aAAa,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC;YACjF,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;YAExC,wEAAwE;YACxE,QAAQ,EAAE,YAAY,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACnE,QAAQ,EAAE,YAAY,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAEnE,iCAAiC;YACjC,GAAG,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;SAC7B;QACD,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;QACvB,MAAM,EAAE,UAAU,CAAC,MAAM,IAAI,MAAM;QACnC,KAAK,EAAE,UAAU,CAAC,KAAK;KACxB,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CACxB,KAAgC,EAChC,IAA8B,EAC9B,MAAmC;IAGnC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;IACtB,OAAO,IAAI,CAAC;QACV,MAAM,EAAE;YACN,KAAK,EAAE,IAAI,CAAC;gBACV,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;gBAChC,SAAS,EAAE,QAAQ;gBACnB,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;aACxB,CAAC;YACF,SAAS,EAAE,SAAS,CAAC;gBACnB,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE;aACtD,CAAC;YACF,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;YAChD,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;YAChD,IAAI,EAAE,YAAY,CAAC;gBACjB,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,WAAW;gBAC5B,SAAS,EAAE,KAAK;gBAChB,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;aAC1B,CAAC;SACH;QACD,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;QACvB,MAAM;KACP,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CACxB,KAAgC,EAChC,IAA8B,EAC9B,MAAmC;IAGnC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;IACtB,OAAO,IAAI,CAAC;QACV,MAAM,EAAE;YACN,SAAS,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC;YAClF,UAAU,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC;YACpF,IAAI,EAAE,YAAY,CAAC;gBACjB,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,WAAW;gBAC5B,SAAS,EAAE,KAAK;gBAChB,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;aAC1B,CAAC;YACF,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC;YACpD,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,CAAC;YACtD,oBAAoB,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC;YAC3E,qBAAqB,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAAC,EAAE,CAAC;YAC7E,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC;YAC5C,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;SAC/C;QACD,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;QACvB,MAAM;KACP,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAC7B,KAAgC,EAChC,MAAwC;IAGxC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;IACtB,OAAO,IAAI,CAAC;QACV,MAAM,EAAE;YACN,UAAU,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC;YACpF,KAAK,EAAE,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;YAC1E,SAAS,EAAE,SAAS,CAAC;gBACnB,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE;aACtD,CAAC;SACH;QACD,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;QACvB,MAAM;KACP,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,mBAAmB,CAC1B,KAAgC,EAChC,MAAqC;IAGrC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAA;IACtB,OAAO,IAAI,CAAC;QACV,MAAM,EAAE;YACN,GAAG,EAAE,IAAI,CAAC;gBACR,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;gBAChC,SAAS,EAAE,QAAQ;gBACnB,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;aACtB,CAAC;YACF,KAAK,EAAE,OAAO,CAAC;gBACb,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;gBAChC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE;aAClD,CAAC;YACF,WAAW,EAAE,MAAM,CAAC;gBAClB,UAAU,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;gBAChC,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;aACxD,CAAC;SACH;QACD,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC;QACxB,MAAM;KACP,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA4B,EAC5B,UAAU,GAAyB,EAAE,EACrC,YAAY,GAAqB,EAAE;IAEnC,MAAM,IAAI,GAA6B;QACrC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;QACjC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;QACjC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,SAAS;QAC3C,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvE,CAAA;IAED,qGAAqG;IACrG,MAAM,KAAK,GAAoC;QAC7C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,IAAI,CAAC;QAC7E,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC;QAC7E,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC;QAC7E,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,sBAAsB,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,YAAY,CAAC;KAC5F,CAAA;IAED,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,mBAAmB,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,SAAS,CAAC,CAAA;IACvF,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;AACxB,CAAC"}
1
+ {"version":3,"file":"derive-auth-lists.js","sourceRoot":"","sources":["../../src/config/derive-auth-lists.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EACL,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,OAAO,EACP,MAAM,EACN,YAAY,GACb,MAAM,6BAA6B,CAAA;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAiC9C,MAAM,eAAe,GAA4B;IAC/C,MAAM;IACN,SAAS;IACT,SAAS;IACT,cAAc;IACd,WAAW;CACZ,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,GAA4C;IAC3D,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC;IACjD,OAAO,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,CAAC;IACjE,OAAO,EAAE;QACP,WAAW;QACX,YAAY;QACZ,2EAA2E;QAC3E,8DAA8D;QAC9D,yEAAyE;QACzE,0EAA0E;QAC1E,wDAAwD;QACxD,QAAQ;QACR,MAAM;QACN,aAAa;QACb,cAAc;QACd,sBAAsB;QACtB,uBAAuB;QACvB,OAAO;QACP,SAAS;QACT,UAAU;KACX;IACD,YAAY,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC;IAClD,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC;CAC3C,CAAA;AAED,oGAAoG;AACpG,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAA;AAE5D;;;;;;;;;;;;;GAaG;AACH,MAAM,iBAAiB,GAAsC;IAC3D,OAAO,EAAE,CAAC,OAAO,CAAC;IAClB,YAAY,EAAE,CAAC,OAAO,CAAC;IACvB,OAAO,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,SAAS,CAAC;IAC/D,WAAW,EAAE,CAAC,cAAc,CAAC;IAC7B,gBAAgB,EAAE,CAAC,OAAO,CAAC;IAC3B,iBAAiB,EAAE,CAAC,OAAO,CAAC;IAC5B,SAAS,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC;CACrC,CAAA;AAED,MAAM,SAAS,GAAgB,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAA;AAKpD;;;;;;;;;;;;;;;GAeG;AACH,SAAS,4BAA4B,CACnC,MAAqC,EACrC,SAAmC;IAEnC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAA;IAC7C,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACnE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IACvC,CAAC;IACD,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAU,CAAA;QACrD,KAAK,MAAM,QAAQ,IAAI,MAAM;YAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAChD,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED,MAAM,QAAQ,GAA4B,EAAE,CAAA;IAC5C,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC9B,IAAI,CAAC,KAAK;YAAE,SAAQ,CAAC,oDAAoD;QACzE,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CACb,4CAA4C,QAAQ,IAAI,QAAQ,WAAW,QAAQ,mBAAmB,QAAQ,GAAG,CAClH,CAAA;YACH,CAAC;YACD,+DAA+D;YAC/D,oEAAoE;YACpE,sEAAsE;YACtE,oEAAoE;YACpE,2DAA2D;YAC3D,IAAI,QAAQ,CAAC,UAAU,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC;gBACxC,MAAM,IAAI,KAAK,CACb,4CAA4C,QAAQ,IAAI,QAAQ,WAAW,QAAQ,SAAS;oBAC1F,mCAAmC,QAAQ,CAAC,UAAU,CAAC,KAAK,uCAAuC,CACtG,CAAA;YACH,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAA;IAC7B,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAAiC,EACjC,QAAgB,EAChB,QAAgB,EAChB,KAAkB;IAElB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAA;IACpD,OAAO;QACL,GAAG,KAAK;QACR,MAAM,EAAE,SAAS;QACjB,sEAAsE;QACtE,uEAAuE;QACvE,sEAAsE;QACtE,EAAE,EAAE;YACF,GAAG,KAAK,CAAC,EAAE;YACX,QAAQ,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE;SAC1D;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,sBAAsB,CAAC,cAAgD;IAC9E,OAAO,WAAW,IAAI,cAAc,IAAI,WAAW,IAAI,cAAc,CAAA;AACvE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,+BAA+B,GAAoC,EAAE,CAAA;AAE3E,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,IAAI,IAAI,CAAA;IAClD,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAA;IAC7D,OAAO,GAAG,IAAI,GAAG,CAAA;AACnB,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAgB;IAC3C,OAAO,+BAA+B,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAA;AACzE,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,qBAAqB,CAAC,gBAAwB;IACrD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAA;AAC3F,CAAC;AAED,MAAM,iBAAiB,GAA2B;IAChD,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,SAAS;IACrB,aAAa,EAAE,YAAY;IAC3B,WAAW,EAAE,UAAU;CACxB,CAAA;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,OAAO,iBAAiB,CAAC,MAAM,CAAC,IAAI,SAAS,CAAA;AAC/C,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS;aACb,KAAK,CAAC,MAAM,CAAC;aACb,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aACzE,IAAI,CAAC,EAAE,CAAC,CAAA;IACb,CAAC;IACD,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAC/D,CAAC;AAED,SAAS,eAAe,CAAC,QAA0B;IACjD,IAAI,QAAQ,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAA;IACpC,IAAI,QAAQ,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IAC/B,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,kBAAkB,CAAC,OAAoB;IAC9C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IACjC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACvE,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,aAAa,CACpB,QAAgB,EAChB,QAA0B;IAE1B,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAA;IACjD,OAAO;QACL,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC;QACxC,GAAG,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,QAAgB,EAChB,QAA0B,EAC1B,aAAsB;IAEtB,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAA;IAC5C,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;IACvE,MAAM,EAAE,GAAG,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAE5C,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,QAAQ,EAAE,CAAC;YACd,MAAM,aAAa,GACjB,OAAO,QAAQ,CAAC,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAA;YACjF,OAAO,IAAI,CAAC;gBACV,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAa,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,aAAuB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjF,EAAE;aACH,CAAC,CAAA;QACJ,CAAC;QACD,KAAK,SAAS,EAAE,CAAC;YACf,MAAM,aAAa,GACjB,OAAO,QAAQ,CAAC,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAA;YACjF,OAAO,QAAQ,CAAC;gBACd,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,aAAwB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClF,EAAE;aACH,CAAC,CAAA;QACJ,CAAC;QACD,KAAK,MAAM;YACT,OAAO,SAAS,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QAC/D,KAAK,QAAQ,EAAE,CAAC;YACd,MAAM,aAAa,GACjB,OAAO,QAAQ,CAAC,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAA;YACjF,OAAO,QAAQ,CAAC,MAAM;gBACpB,CAAC,CAAC,MAAM,CAAC;oBACL,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAa,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnC,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,aAAuB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjF,EAAE;iBACH,CAAC;gBACJ,CAAC,CAAC,OAAO,CAAC;oBACN,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAa,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnC,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,aAAuB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjF,EAAE;iBACH,CAAC,CAAA;QACR,CAAC;QACD;YACE,yEAAyE;YACzE,qEAAqE;YACrE,sEAAsE;YACtE,mEAAmE;YACnE,sEAAsE;YACtE,qEAAqE;YACrE,gEAAgE;YAChE,OAAO,CAAC,IAAI,CACV,gDAAgD,QAAQ,CAAC,IAAI,gBAAgB,QAAQ,6BAA6B,CACnH,CAAA;YACD,OAAO,IAAI,CAAC;gBACV,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,IAAa,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,EAAE;aACH,CAAC,CAAA;IACN,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,oBAAoB,CAC3B,QAAgB,EAChB,QAA0B,EAC1B,aAAqB,EACrB,gBAAwB,EACxB,aAAsB;IAEtB,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAA;IACtC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,qBAAqB,QAAQ,qDAAqD,CACnF,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAA;IAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAA;IACjD,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAA;IAC9D,wEAAwE;IACxE,uEAAuE;IACvE,2EAA2E;IAC3E,uEAAuE;IACvE,qBAAqB;IACrB,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAE,KAAe,CAAC,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;IAE9E,OAAO,YAAY,CAAC;QAClB,GAAG,EAAE,GAAG,aAAa,IAAI,gBAAgB,EAAE;QAC3C,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,EAAE,EAAE;YACF,UAAU,EAAE,CAAC,UAAU;YACvB,UAAU,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE;YAC/B,kBAAkB,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjD,MAAM;gBACN,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,uBAAuB,QAAQ,IAAI,CAAC;aACtF,CAAC;SACH;KACF,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,MAAM,CACb,KAAgC,EAChC,UAAmB;IAEnB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;IAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;IAC7B,OAAO;QACL,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAA;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAgC;IAG9D,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAA;AACjC,CAAC;AAED;;;;;GAKG;AACH,SAAS,2BAA2B,CAClC,MAA4B,EAC5B,OAA2B;IAE3B,OAAO;QACL,IAAI,EAAE,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC;QACzC,OAAO,EAAE,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC;QAC/C,OAAO,EAAE,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC;QAC/C,YAAY,EAAE,sBAAsB,CAAC,MAAM,CAAC,YAAY,CAAC;QACzD,GAAG,CAAC,MAAM,CAAC,SAAS;YAClB,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,UAAmB,EAAE,GAAG,sBAAsB,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE;YAC9F,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvC,CAAA;AACH,CAAC;AAKD;;;;;;;;;;;;;;;GAeG;AACH,SAAS,kBAAkB,CACzB,MAAqC,EACrC,MAA4B;IAE5B,MAAM,IAAI,GAA6B;QACrC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;QACjC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;QACjC,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,SAAS;QAC3C,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvE,CAAA;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC1C,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAA;QAC7B,IAAI,OAAO;YAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3C,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,SAAQ;QACpC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IACzE,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;AAC3B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,eAAe,CAC7B,MAA4B,EAC5B,UAAU,GAAyB,EAAE,EACrC,YAAY,GAAqB,EAAE,EACnC,OAAO,GAAuB,EAAE,EAChC,sBAAsB,GAA6B,EAAE;IAErD,MAAM,MAAM,GAAG,aAAa,CAAC,2BAA2B,CAAC,MAAM,EAAE,OAAO,CAAC,CAGxE,CAAA;IACD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC7D,MAAM,kBAAkB,GAAG,4BAA4B,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;IAEvF,2EAA2E;IAC3E,uEAAuE;IACvE,0EAA0E;IAC1E,yDAAyD;IACzD,MAAM,oBAAoB,GAA+C,EAAE,CAAA;IAC3E,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;QAC7B,IAAI,KAAK;YAAE,oBAAoB,CAAC,OAAO,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;IACpF,CAAC;IAED,MAAM,YAAY,GAAgD,EAAE,CAAA;IACpE,MAAM,gBAAgB,GAAsD,EAAE,CAAA;IAC9E,MAAM,qBAAqB,GAAsD,EAAE,CAAA;IAEnF,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3C,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAA;QAC9C,qEAAqE;QACrE,yEAAyE;QACzE,wEAAwE;QACxE,wEAAwE;QACxE,6CAA6C;QAC7C,MAAM,mBAAmB,GACtB,eAAqC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACzD,sBAAsB,CAAC,cAAc,CAAC,CAAA;QACxC,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAClE,IAAI,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,mBAAmB;gBAAE,SAAQ;YAEnE,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACxB,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAA;gBAChD,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;gBAClD,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CACb,qBAAqB,QAAQ,IAAI,QAAQ,+BAA+B,cAAc,GAAG,CAC1F,CAAA;gBACH,CAAC;gBAED,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;oBACvC,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA;oBACxD,MAAM,WAAW,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;oBACjD,IAAI,qBAAqB,CAAC,cAAc,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;wBACzD,iEAAiE;wBACjE,iEAAiE;wBACjE,2DAA2D;wBAC3D,iEAAiE;wBACjE,iDAAiD;wBACjD,MAAM,IAAI,KAAK,CACb,qBAAqB,QAAQ,qCAAqC,cAAc,IAAI;4BAClF,gDAAgD,WAAW,yBAAyB;4BACpF,yDAAyD,CAC5D,CAAA;oBACH,CAAC;oBACD,CAAC;oBAAA,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,gBAAgB,CAAC,GAAG,oBAAoB,CAC3E,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,WAAW,EACX,oBAAoB,CAAC,QAAwB,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,IAAI,KAAK,CAC/E,CACA;oBAAA,CAAC,qBAAqB,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC;wBAC1E,GAAG,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,gBAAgB,EAAE;wBACpD,IAAI,EAAE,IAAI;qBACX,CAAC,CAAA;gBACJ,CAAC;qBAAM,CAAC;oBACN,8DAA8D;oBAC9D,iEAAiE;oBACjE,gEAAgE;oBAChE,8DAA8D;oBAC9D,mEAAmE;oBACnE,yBAAyB;oBACzB,CAAC;oBAAA,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,oBAAoB,CAC/D,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,gBAAgB,CACd,QAAQ,EACR,QAAQ,EACR,oBAAoB,CAAC,QAAwB,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,CACvE,CACF,CAAA;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,CAAC;gBAAA,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,oBAAoB,CAC/D,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,gBAAgB,CACd,QAAQ,EACR,QAAQ,EACR,oBAAoB,CAAC,QAAwB,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,CACvE,CACF,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,SAAS,cAAc,CAAC,QAAgB;QACtC,MAAM,MAAM,GAAgC,EAAE,CAAA;QAC9C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;YACxB,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC/C,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;SACpD,CAAC,CAAA;QAEF,KAAK,MAAM,QAAQ,IAAI,WAAW,CAAC,QAAwB,CAAC,IAAI,EAAE,EAAE,CAAC;YACnE,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACrC,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAA;gBACxB,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1C,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAA;QAC1B,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAA;QACtD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,qGAAqG;IACrG,MAAM,KAAK,GAAoC;QAC7C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;YAChB,MAAM,EAAE,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE;YACnE,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;YAC7B,MAAM,EAAE,UAAU,CAAC,MAAM,IAAI,YAAY,CAAC,IAAI;YAC9C,KAAK,EAAE,UAAU,CAAC,KAAK;SACxB,CAAC;QACF,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;YACnB,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC;YACjC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;YAChC,MAAM,EAAE,YAAY,CAAC,OAAO;SAC7B,CAAC;QACF,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC;YACnB,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC;YACjC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC;YAChC,MAAM,EAAE,YAAY,CAAC,OAAO;SAC7B,CAAC;QACF,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC;YACxB,MAAM,EAAE,cAAc,CAAC,cAAc,CAAC;YACtC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC;YACrC,MAAM,EAAE,YAAY,CAAC,YAAY;SAClC,CAAC;KACH,CAAA;IAED,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACvC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;YAC3B,MAAM,EAAE,cAAc,CAAC,WAAW,CAAC;YACnC,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;YACnC,MAAM,EAAE,YAAY,CAAC,SAAS;SAC/B,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,GAAG,CAAS,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAA;IACvF,IAAI,MAAM,CAAC,SAAS;QAAE,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAEtD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3C,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,SAAQ;QAE3C,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACtC,IAAI,CAAC,OAAO;YAAE,SAAQ,CAAC,4DAA4D;QAEnF,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAA;QAC/C,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAA;QAClE,MAAM,SAAS,GAAG,OAAO,KAAK,YAAY,CAAA;QAC1C,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;YACpB,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC;YAChC,GAAG,CAAC,UAAU,IAAI,SAAS;gBACzB,CAAC,CAAC;oBACE,EAAE,EAAE;wBACF,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpD,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC5C;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;AACxB,CAAC"}
@@ -1,7 +1,4 @@
1
1
  import type { AuthConfig, NormalizedAuthConfig } from './types.js';
2
- /**
3
- * Normalize auth configuration with defaults
4
- */
5
2
  export declare function normalizeAuthConfig(config: AuthConfig): NormalizedAuthConfig;
6
3
  export type { AuthConfig, NormalizedAuthConfig };
7
4
  export * from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAEV,oBAAoB,EAOrB,MAAM,YAAY,CAAA;AAyFnB;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,oBAAoB,CAyE5E;AAED,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAA;AAChD,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAEV,oBAAoB,EAOrB,MAAM,YAAY,CAAA;AAoEnB,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,GAAG,oBAAoB,CAmE5E;AAED,YAAY,EAAE,UAAU,EAAE,oBAAoB,EAAE,CAAA;AAChD,cAAc,YAAY,CAAA"}
@@ -1,9 +1,3 @@
1
- /**
2
- * Default better-auth model names. Used when the developer does not override
3
- * `modelName`, preserving the historical `User`/`Session`/`Account`/`Verification`
4
- * keys exactly. `rateLimit` only applies when `rateLimit.storage: 'database'`
5
- * derives the fifth Auth list.
6
- */
7
1
  const DEFAULT_MODEL_NAMES = {
8
2
  user: 'User',
9
3
  session: 'Session',
@@ -12,11 +6,6 @@ const DEFAULT_MODEL_NAMES = {
12
6
  rateLimit: 'RateLimit',
13
7
  };
14
8
  /**
15
- * Resolve a single better-auth model config block into its normalized form,
16
- * falling back to the better-auth default model name and an empty column map.
17
- * The model's Postgres schema is the per-model `schema` override when present,
18
- * otherwise the plugin-level `schema` default (or `undefined` for `public`).
19
- *
20
9
  * `tableName` defaults to today's behaviour when not explicitly set: it
21
10
  * follows `modelName` when that differs from the better-auth default (so a
22
11
  * renamed list still pins its table via `@@map`), otherwise it stays unset.
@@ -32,14 +21,9 @@ function normalizeModelConfig(config, defaultModelName, defaultSchema) {
32
21
  tableName,
33
22
  fields: config?.fields || {},
34
23
  schema: config?.schema ?? defaultSchema,
24
+ indexes: config?.indexes ?? [],
35
25
  };
36
26
  }
37
- /**
38
- * Resolve the better-auth model config for all four auth models, plus a fifth
39
- * `rateLimit` model when `rateLimit.storage: 'database'` requires deriving
40
- * the `RateLimit` list. `defaultSchema` is the plugin-level `schema` applied
41
- * to every model unless a per-model `schema` override is given.
42
- */
43
27
  function normalizeAuthModels(config) {
44
28
  const defaultSchema = config.schema;
45
29
  const models = {
@@ -53,11 +37,6 @@ function normalizeAuthModels(config) {
53
37
  }
54
38
  return models;
55
39
  }
56
- /**
57
- * Default `sendResetPassword`/`sendVerificationEmail` — logs to console
58
- * instead of sending, matching the pre-existing "no sendEmail configured"
59
- * behavior for apps that haven't wired a real email provider yet.
60
- */
61
40
  function defaultSendAuthEmail(kind) {
62
41
  return async ({ user, url }) => {
63
42
  console.log(`[Auth] ${kind[0].toUpperCase()}${kind.slice(1)} email not sent (no callback configured):`);
@@ -65,11 +44,7 @@ function defaultSendAuthEmail(kind) {
65
44
  console.log(`URL: ${url}`);
66
45
  };
67
46
  }
68
- /**
69
- * Normalize auth configuration with defaults
70
- */
71
47
  export function normalizeAuthConfig(config) {
72
- // Email and password defaults
73
48
  const emailAndPassword = config.emailAndPassword?.enabled
74
49
  ? {
75
50
  enabled: true,
@@ -84,7 +59,6 @@ export function normalizeAuthConfig(config) {
84
59
  requireConfirmation: true,
85
60
  sendResetPassword: defaultSendAuthEmail('password reset'),
86
61
  };
87
- // Email verification defaults
88
62
  const emailVerification = config.emailVerification?.enabled
89
63
  ? {
90
64
  enabled: true,
@@ -99,22 +73,17 @@ export function normalizeAuthConfig(config) {
99
73
  tokenExpiration: 86400,
100
74
  sendVerificationEmail: defaultSendAuthEmail('verification'),
101
75
  };
102
- // Password reset defaults
103
76
  const passwordReset = config.passwordReset?.enabled
104
77
  ? {
105
78
  enabled: true,
106
79
  tokenExpiration: config.passwordReset.tokenExpiration ?? 3600,
107
80
  }
108
81
  : { enabled: false, tokenExpiration: 3600 };
109
- // Session defaults
110
82
  const session = {
111
- expiresIn: config.session?.expiresIn || 604800, // 7 days
112
- updateAge: config.session?.updateAge ?? 86400, // 1 day, matching better-auth's own default
83
+ expiresIn: config.session?.expiresIn || 604800,
84
+ updateAge: config.session?.updateAge ?? 86400, // matches better-auth's own default
113
85
  };
114
- // Session fields defaults
115
86
  const sessionFields = config.sessionFields || ['userId', 'email', 'name'];
116
- // Resolve better-auth per-model config (modelName + field column maps).
117
- // Defaults preserve the historical User/Session/Account/Verification keys.
118
87
  const models = normalizeAuthModels(config);
119
88
  return {
120
89
  emailAndPassword,
@@ -127,6 +96,7 @@ export function normalizeAuthConfig(config) {
127
96
  sessionFields,
128
97
  extendUserList: config.extendUserList || {},
129
98
  access: config.access || {},
99
+ credentialFields: config.credentialFields || {},
130
100
  betterAuthPlugins: config.betterAuthPlugins || [],
131
101
  rateLimit: config.rateLimit,
132
102
  betterAuthOptions: config.betterAuthOptions || {},
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,YAAY,CAAA;AAKlE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA6LrD"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAwB,MAAM,YAAY,CAAA;AAIlE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAwHrD"}
@@ -1,7 +1,6 @@
1
1
  import { getDbKey } from '@opensaas/stack-core';
2
2
  import { normalizeAuthConfig } from './index.js';
3
3
  import { getAuthLists } from '../lists/index.js';
4
- import { convertBetterAuthSchema } from '../server/schema-converter.js';
5
4
  /**
6
5
  * Auth plugin for OpenSaas Stack
7
6
  * Provides Better-auth integration with automatic list generation and session management
@@ -33,43 +32,22 @@ export function authPlugin(config) {
33
32
  typeName: 'AuthRuntimeServices',
34
33
  },
35
34
  init: async (context) => {
36
- // Derive the auth lists from the better-auth model config (modelName +
37
- // field column maps). With no overrides this yields the historical
38
- // User/Session/Account/Verification keys; with overrides (e.g.
39
- // user.modelName: 'AuthUser') the lists are keyed and column-mapped to
40
- // match the developer's live better-auth tables.
41
- const authLists = getAuthLists(normalized.extendUserList, normalized.models, normalized.access);
42
- // The same base-model list keys the Auth lists above were derived under
43
- // (e.g. `user.modelName: 'AuthUser'`). A provider plugin's schema
44
- // extension of a base model (e.g. `user`) must resolve against this
45
- // remap too, so it lands on the adopted Auth list rather than a
46
- // re-derived key that can collide with an unrelated host list. The
47
- // `rateLimit` key is only present when `rateLimit.storage: 'database'`
48
- // derived the fifth Auth list.
49
- const baseModelKeys = {
50
- user: normalized.models.user.modelName,
51
- session: normalized.models.session.modelName,
52
- account: normalized.models.account.modelName,
53
- verification: normalized.models.verification.modelName,
54
- ...(normalized.models.rateLimit
55
- ? { rateLimit: normalized.models.rateLimit.modelName }
56
- : {}),
57
- };
58
- // Add all auth lists FIRST, before any better-auth plugin schema
59
- // extension is processed. This must happen before the betterAuthPlugins
60
- // loop below so a base-model extension (e.g. a plugin's `schema: {
61
- // user: { fields: … } }`) always finds the real derived list already
62
- // registered under its key and takes the merge (`extendList`) path
63
- // against it — instead of pre-empting that key with a bare
64
- // `list({ fields })` that carries no `db`/`access` (see #861).
65
- //
66
- // The plugin only ever touches its OWN derived keys. When a developer
67
- // renames the auth user model (e.g. user.modelName: 'AuthUser'), the
68
- // derived key is 'AuthUser' and an app's separate 'User' list is left
69
- // untouched — the plugin never extends/overwrites a list it didn't
70
- // derive. Extending only kicks in when an existing list shares the
71
- // derived key (e.g. the default 'User'), which is the intended
72
- // "merge auth fields into my User" behaviour.
35
+ // One consolidated derivation covers the four base models, the
36
+ // optional RateLimit model, and every table a better-auth plugin
37
+ // declares in its own `schema` (base-model extensions like the
38
+ // `anonymous` plugin's `user.isAnonymous`, and standalone tables like
39
+ // the MCP plugin's OAuth tables) — see `deriveAuthLists` (issue #992).
40
+ // `getAuthTables` merges a plugin's base-model schema extension
41
+ // directly into that model's own fields, so the derived `User`/`AuthUser`
42
+ // list here already carries e.g. `isAnonymous` before this loop runs.
43
+ const authLists = getAuthLists(normalized.extendUserList, normalized.models, normalized.access, normalized.betterAuthPlugins, normalized.credentialFields);
44
+ // Base models are always the first entries in `authLists` (see
45
+ // `deriveAuthLists`), so a plugin table's reverse relation onto a base
46
+ // model (e.g. `AuthUser.oauthApplications`) is already part of that
47
+ // base list's `fields` by the time this loop reaches it — one pass
48
+ // suffices for both: a list already declared by the app (or added by
49
+ // an earlier iteration of this same loop) merges via `extendList`;
50
+ // everything else registers via `addList`.
73
51
  for (const [listName, listConfig] of Object.entries(authLists)) {
74
52
  if (context.config.lists[listName]) {
75
53
  // A list already exists under this derived key — merge auth fields
@@ -83,52 +61,12 @@ export function authPlugin(config) {
83
61
  });
84
62
  }
85
63
  else {
86
- // Otherwise, add the auth list
87
64
  context.addList(listName, listConfig);
88
65
  }
89
66
  }
90
- // Extract additional lists from Better Auth plugins. Because the auth
91
- // lists above are already registered, a schema extension of a base
92
- // model (user/session/account/verification) always finds its resolved
93
- // key occupied by the real derived list and merges via `extendList` —
94
- // its `db`/`access` are preserved. Non-base plugin tables (e.g.
95
- // `oauth_application`, `passkey`) still register as new lists via
96
- // `addList`, same as before.
97
- for (const plugin of normalized.betterAuthPlugins) {
98
- if (plugin && typeof plugin === 'object' && plugin.schema) {
99
- // Plugin has schema property - convert to OpenSaaS lists
100
- const pluginSchema = plugin.schema;
101
- const pluginLists = convertBetterAuthSchema(pluginSchema, baseModelKeys);
102
- // Add or extend lists from plugin
103
- for (const [listName, listConfig] of Object.entries(pluginLists)) {
104
- if (context.config.lists[listName]) {
105
- // List already exists — merge fields/hooks/mcp in only. Access
106
- // control belongs to whoever owns the list; per ADR-0013 an
107
- // extension must never carry operation-level access for a
108
- // pre-existing list (the plugin engine throws if it does).
109
- context.extendList(listName, {
110
- fields: listConfig.fields,
111
- hooks: listConfig.hooks,
112
- mcp: listConfig.mcp,
113
- });
114
- }
115
- else {
116
- // List doesn't exist, add it
117
- context.addList(listName, listConfig);
118
- }
119
- }
120
- }
121
- }
122
- // Store auth config for runtime access
123
- // Access at runtime via: config._pluginData.auth
124
67
  context.setPluginData('auth', normalized);
125
68
  },
126
69
  beforeGenerate: (generationConfig) => {
127
- // Collect every schema the Auth lists are placed in (per-model schema,
128
- // else the plugin-level schema). When none is configured the Auth lists
129
- // stay in the default `public` schema and we leave the config untouched —
130
- // the greenfield default Prisma schema is unchanged (no `schemas`, no
131
- // `previewFeatures`, no `@@schema`).
132
70
  const authSchemas = Array.from(new Set(Object.values(normalized.models)
133
71
  .map((model) => model.schema)
134
72
  .filter((schema) => Boolean(schema))));
@@ -154,27 +92,19 @@ export function authPlugin(config) {
154
92
  };
155
93
  },
156
94
  runtime: (context, sudo) => {
157
- // Resolve the user list's context.db key from the configured user model.
158
- // context.db is keyed camelCase, so 'User' -> 'user', 'AuthUser' -> 'authUser'.
159
95
  const userDbKey = getDbKey(normalized.models.user.modelName);
160
- // Provide auth-related utilities at runtime
161
96
  return {
162
97
  /**
163
- * Get user by ID.
164
- *
165
- * Resolves through `sudo()` (per ADR-0013): the User list ships closed
166
- * by default, and "who is this session" must not depend on the
167
- * application's User access policy.
98
+ * Resolves through `sudo()` (per ADR-0013): the User list ships
99
+ * closed by default, and "who is this session" must not depend on
100
+ * the application's User access policy.
168
101
  */
169
102
  getUser: async (userId) => {
170
103
  return await sudo().db[userDbKey].findUnique({
171
104
  where: { id: userId },
172
105
  });
173
106
  },
174
- /**
175
- * Get current user from session. Extracts userId from session and
176
- * fetches user data via `sudo()` — see {@link getUser}.
177
- */
107
+ /** See {@link getUser} — same `sudo()` rationale (ADR-0013), keyed off `context.session.userId`. */
178
108
  getCurrentUser: async () => {
179
109
  if (!context.session?.userId) {
180
110
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/config/plugin.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { ListConfig } from '@opensaas/stack-core';
1
+ import type { ListConfig, ListIndex } from '@opensaas/stack-core';
2
2
  import type { BetterAuthOptions, BetterAuthPlugin, User } from 'better-auth';
3
3
  import type { ExtendUserListConfig } from '../lists/index.js';
4
4
  /**
@@ -12,17 +12,11 @@ export type SendAuthEmail = (data: {
12
12
  url: string;
13
13
  token: string;
14
14
  }, request?: Request) => Promise<void>;
15
- /**
16
- * OAuth provider configuration
17
- */
18
15
  export type OAuthProvider = {
19
16
  clientId: string;
20
17
  clientSecret: string;
21
18
  enabled?: boolean;
22
19
  };
23
- /**
24
- * Social provider configurations
25
- */
26
20
  export type SocialProvidersConfig = {
27
21
  github?: OAuthProvider;
28
22
  google?: OAuthProvider;
@@ -30,9 +24,6 @@ export type SocialProvidersConfig = {
30
24
  twitter?: OAuthProvider;
31
25
  [key: string]: OAuthProvider | undefined;
32
26
  };
33
- /**
34
- * Email and password configuration
35
- */
36
27
  export type EmailPasswordConfig = {
37
28
  enabled: boolean;
38
29
  /**
@@ -72,9 +63,6 @@ export type EmailPasswordConfig = {
72
63
  */
73
64
  sendResetPassword?: SendAuthEmail;
74
65
  };
75
- /**
76
- * Email verification configuration
77
- */
78
66
  export type EmailVerificationConfig = {
79
67
  enabled: boolean;
80
68
  /**
@@ -106,9 +94,6 @@ export type EmailVerificationConfig = {
106
94
  */
107
95
  sendVerificationEmail?: SendAuthEmail;
108
96
  };
109
- /**
110
- * Password reset configuration
111
- */
112
97
  export type PasswordResetConfig = {
113
98
  enabled: boolean;
114
99
  /**
@@ -117,9 +102,6 @@ export type PasswordResetConfig = {
117
102
  */
118
103
  tokenExpiration?: number;
119
104
  };
120
- /**
121
- * Session configuration
122
- */
123
105
  export type SessionConfig = {
124
106
  /**
125
107
  * Session expiration in seconds
@@ -134,24 +116,6 @@ export type SessionConfig = {
134
116
  */
135
117
  updateAge?: number | false;
136
118
  };
137
- /**
138
- * Per-model better-auth configuration block.
139
- *
140
- * Mirrors better-auth's own `BetterAuthDBOptions` (the `user`/`session`/
141
- * `account`/`verification` config a developer already writes): `modelName`
142
- * renames the table/list and `fields` maps individual better-auth field names
143
- * to database column names. The auth plugin derives its Auth lists from this
144
- * config so the generated lists carry the same keys and column maps as the
145
- * developer's live better-auth tables.
146
- *
147
- * @example
148
- * ```typescript
149
- * authPlugin({
150
- * user: { modelName: 'AuthUser', fields: { name: 'full_name' } },
151
- * session: { modelName: 'AuthSession' },
152
- * })
153
- * ```
154
- */
155
119
  /**
156
120
  * App-authored operation + field-level access control for the Auth lists,
157
121
  * keyed by better-auth model name (not by the derived list key, so it stays
@@ -200,6 +164,24 @@ export type AuthAccessConfig = {
200
164
  */
201
165
  rateLimit?: ListConfig<any>['access'];
202
166
  };
167
+ /**
168
+ * Per-model better-auth configuration block.
169
+ *
170
+ * Mirrors better-auth's own `BetterAuthDBOptions` (the `user`/`session`/
171
+ * `account`/`verification` config a developer already writes): `modelName`
172
+ * renames the table/list and `fields` maps individual better-auth field names
173
+ * to database column names. The auth plugin derives its Auth lists from this
174
+ * config so the generated lists carry the same keys and column maps as the
175
+ * developer's live better-auth tables.
176
+ *
177
+ * @example
178
+ * ```typescript
179
+ * authPlugin({
180
+ * user: { modelName: 'AuthUser', fields: { name: 'full_name' } },
181
+ * session: { modelName: 'AuthSession' },
182
+ * })
183
+ * ```
184
+ */
203
185
  export type AuthModelConfig = {
204
186
  /**
205
187
  * The table/list name for this model.
@@ -249,36 +231,51 @@ export type AuthModelConfig = {
249
231
  * ```
250
232
  */
251
233
  schema?: string;
252
- };
253
- /**
254
- * Auth configuration options
255
- */
256
- export type AuthConfig = {
257
234
  /**
258
- * Email and password authentication
235
+ * App-authored model-level `@@unique`/`@@index` constraints for this auth
236
+ * model, in the same shape as a list's own {@link ListConfig.db} `indexes`
237
+ * (core's {@link ListIndex}). Entries name this model's own OpenSaaS field
238
+ * keys (e.g. `identifier`, `createdAt` on `verification`) — the same names
239
+ * used in this model's `fields` column map — not raw database column names.
240
+ *
241
+ * The stack already derives some indexes from better-auth's own table
242
+ * definitions (e.g. `User.email` is `@unique`). When an entry here covers a
243
+ * column that also carries a derived index, the derived index is
244
+ * suppressed for that column and only this entry is emitted — the
245
+ * application's declaration wins (ADR-0035). This is what makes adopting a
246
+ * live database's real constraint name, or extending a derived column into
247
+ * a composite index, expressible.
248
+ *
249
+ * @example Adopt a live `user.email` unique constraint under its real name
250
+ * ```typescript
251
+ * authPlugin({
252
+ * user: { indexes: [{ fields: ['email'], unique: true, name: 'user_email_key' }] },
253
+ * })
254
+ * ```
255
+ *
256
+ * @example Extend a derived index into a composite (per-identifier resend cooldown)
257
+ * ```typescript
258
+ * authPlugin({
259
+ * verification: {
260
+ * indexes: [{ fields: ['identifier', { field: 'createdAt', sort: 'desc' }] }],
261
+ * },
262
+ * })
263
+ * ```
259
264
  */
265
+ indexes?: ListIndex[];
266
+ };
267
+ export type AuthConfig = {
260
268
  emailAndPassword?: EmailPasswordConfig | {
261
269
  enabled: true;
262
270
  };
263
- /**
264
- * Email verification
265
- */
266
271
  emailVerification?: EmailVerificationConfig | {
267
272
  enabled: true;
268
273
  };
269
- /**
270
- * Password reset
271
- */
272
274
  passwordReset?: PasswordResetConfig | {
273
275
  enabled: true;
274
276
  };
275
- /**
276
- * OAuth/social providers
277
- */
278
277
  socialProviders?: SocialProvidersConfig;
279
278
  /**
280
- * Session configuration.
281
- *
282
279
  * Carries session expiry settings as well as the better-auth `session` model
283
280
  * config (`modelName` + field column `fields` maps) used to derive the Auth
284
281
  * session list.
@@ -291,13 +288,7 @@ export type AuthConfig = {
291
288
  * Custom fields beyond the better-auth basics are added via `extendUserList`.
292
289
  */
293
290
  user?: AuthModelConfig;
294
- /**
295
- * better-auth `account` model configuration (modelName + field column maps).
296
- */
297
291
  account?: AuthModelConfig;
298
- /**
299
- * better-auth `verification` model configuration (modelName + field column maps).
300
- */
301
292
  verification?: AuthModelConfig;
302
293
  /**
303
294
  * Database schema (Postgres) for the generated Auth lists.
@@ -382,16 +373,50 @@ export type AuthConfig = {
382
373
  * narrower, User-specific override.
383
374
  */
384
375
  access?: AuthAccessConfig;
376
+ /**
377
+ * Mark additional better-auth model fields as credentials, so they ship
378
+ * field-level read-denied like the stack's own seeded set (ADR-0036) — the
379
+ * six base-model fields plus, as of issue #1014, the `mcp`/oauth-provider
380
+ * plugin's `oauthClient.clientSecret`/`oauthAccessToken.token`/
381
+ * `oauthRefreshToken.token` and `twoFactor()`'s `twoFactor.secret`/
382
+ * `backupCodes`. Use this for a better-auth plugin the stack doesn't seed a
383
+ * credential set for.
384
+ *
385
+ * Keyed by better-auth's own **model key** (e.g. `'twoFactor'`,
386
+ * `'oauthClient'` — not the derived list key, so it stays remap-proof), each
387
+ * naming better-auth **field keys** (not mapped column names).
388
+ *
389
+ * Strictly additive: an entry can mark further fields as credentials, but
390
+ * can never unmark one of the stack's seeded fields — omitting or emptying
391
+ * a seeded model's list here leaves that model's seeded deny standing. An
392
+ * entry naming a field that doesn't exist on a model the app actually
393
+ * derives (has that plugin registered) throws, naming the model and field;
394
+ * an entry for a model the app doesn't derive at all is a silent no-op.
395
+ * An entry naming an id-referencing relationship field (e.g. an FK ending
396
+ * `Id`) also throws — that field derives to a `relationship()`, never a
397
+ * scalar column, so a deny registered against it could never apply.
398
+ *
399
+ * @example
400
+ * ```typescript
401
+ * authPlugin({
402
+ * betterAuthPlugins: [passkey()],
403
+ * credentialFields: { passkey: ['publicKey'] },
404
+ * })
405
+ * ```
406
+ */
407
+ credentialFields?: Record<string, string[]>;
385
408
  /**
386
409
  * Additional Better Auth plugins to enable
387
410
  * Allows integrating any Better Auth plugin (MCP, 2FA, etc.)
388
411
  *
389
412
  * @example
390
413
  * ```typescript
391
- * import { mcp } from 'better-auth/plugins'
414
+ * import { mcp } from '@opensaas/stack-auth/plugins'
415
+ * import { jwt } from 'better-auth/plugins'
392
416
  *
393
417
  * betterAuthPlugins: [
394
- * mcp({ loginPage: '/sign-in' })
418
+ * jwt(), // required alongside mcp() since better-auth 1.7
419
+ * mcp({ loginPage: '/sign-in', consentPage: '/consent', resource: 'https://your-app.com/api/mcp' })
395
420
  * ]
396
421
  * ```
397
422
  */
@@ -507,6 +532,8 @@ export type NormalizedAuthModelConfig = {
507
532
  tableName?: string;
508
533
  fields: Record<string, string>;
509
534
  schema?: string;
535
+ /** App-authored `db.indexes` entries for this model (see {@link AuthModelConfig.indexes}). Defaults to `[]`. */
536
+ indexes?: ListIndex[];
510
537
  };
511
538
  /**
512
539
  * Resolved auth model configuration for all four better-auth models, plus an
@@ -525,17 +552,12 @@ export type NormalizedAuthModels = {
525
552
  */
526
553
  rateLimit?: NormalizedAuthModelConfig;
527
554
  };
528
- /**
529
- * Internal normalized auth configuration
530
- * Used after parsing user config
531
- */
532
555
  export type NormalizedAuthConfig = Required<Omit<AuthConfig, 'emailAndPassword' | 'emailVerification' | 'passwordReset' | 'betterAuthPlugins' | 'rateLimit' | 'session' | 'user' | 'account' | 'verification' | 'schema'>> & {
533
556
  emailAndPassword: Required<EmailPasswordConfig>;
534
557
  emailVerification: Required<EmailVerificationConfig>;
535
558
  passwordReset: Required<PasswordResetConfig>;
536
559
  /** Resolved session expiry settings (model config lives under `models.session`). */
537
560
  session: Required<SessionConfig>;
538
- /** Resolved better-auth model config (modelName + field column maps + schema) for all auth models. */
539
561
  models: NormalizedAuthModels;
540
562
  /**
541
563
  * Plugin-level Postgres schema for the Auth lists, if any. Resolved per-model