@webda/auth 0.0.0-stage → 4.0.0-beta.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 (59) hide show
  1. package/LICENSE +166 -0
  2. package/README.md +26 -2
  3. package/lib/authentication.service.d.ts +286 -0
  4. package/lib/authentication.service.d.ts.map +1 -0
  5. package/lib/authentication.service.js +798 -0
  6. package/lib/authentication.service.js.map +1 -0
  7. package/lib/compat/upgrade.d.ts +71 -0
  8. package/lib/compat/upgrade.d.ts.map +1 -0
  9. package/lib/compat/upgrade.js +185 -0
  10. package/lib/compat/upgrade.js.map +1 -0
  11. package/lib/email/emailpassword.service.d.ts +241 -0
  12. package/lib/email/emailpassword.service.d.ts.map +1 -0
  13. package/lib/email/emailpassword.service.js +718 -0
  14. package/lib/email/emailpassword.service.js.map +1 -0
  15. package/lib/email/tokens.d.ts +36 -0
  16. package/lib/email/tokens.d.ts.map +1 -0
  17. package/lib/email/tokens.js +46 -0
  18. package/lib/email/tokens.js.map +1 -0
  19. package/lib/errors.d.ts +53 -0
  20. package/lib/errors.d.ts.map +1 -0
  21. package/lib/errors.js +73 -0
  22. package/lib/errors.js.map +1 -0
  23. package/lib/index.d.ts +9 -0
  24. package/lib/index.d.ts.map +1 -0
  25. package/lib/index.js +9 -0
  26. package/lib/index.js.map +1 -0
  27. package/lib/oauth/oauth.service.d.ts +293 -0
  28. package/lib/oauth/oauth.service.d.ts.map +1 -0
  29. package/lib/oauth/oauth.service.js +557 -0
  30. package/lib/oauth/oauth.service.js.map +1 -0
  31. package/lib/provider.d.ts +53 -0
  32. package/lib/provider.d.ts.map +1 -0
  33. package/lib/provider.js +55 -0
  34. package/lib/provider.js.map +1 -0
  35. package/lib/test/authtest.d.ts +39 -0
  36. package/lib/test/authtest.d.ts.map +1 -0
  37. package/lib/test/authtest.js +62 -0
  38. package/lib/test/authtest.js.map +1 -0
  39. package/lib/test/emailtest.d.ts +25 -0
  40. package/lib/test/emailtest.d.ts.map +1 -0
  41. package/lib/test/emailtest.js +39 -0
  42. package/lib/test/emailtest.js.map +1 -0
  43. package/lib/test/fakeoauth.service.d.ts +45 -0
  44. package/lib/test/fakeoauth.service.d.ts.map +1 -0
  45. package/lib/test/fakeoauth.service.js +78 -0
  46. package/lib/test/fakeoauth.service.js.map +1 -0
  47. package/lib/test/stubprovider.js +37 -0
  48. package/lib/test/stubprovider.js.map +1 -0
  49. package/lib/test/v3.d.ts +29 -0
  50. package/lib/test/v3.d.ts.map +1 -0
  51. package/lib/test/v3.js +47 -0
  52. package/lib/test/v3.js.map +1 -0
  53. package/lib/throttle.d.ts +40 -0
  54. package/lib/throttle.d.ts.map +1 -0
  55. package/lib/throttle.js +47 -0
  56. package/lib/throttle.js.map +1 -0
  57. package/package.json +65 -3
  58. package/test/config.json +20 -0
  59. package/webda.module.json +636 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authentication.service.js","sourceRoot":"","sources":["../src/authentication.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAGL,OAAO,EACP,OAAO,EACP,KAAK,EAGL,SAAS,EAGT,oBAAoB,EACpB,WAAW,EACX,OAAO,EACP,iBAAiB,EACjB,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EAEV,kBAAkB,EAClB,UAAU,EACX,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC3G,OAAO,EAAqB,gBAAgB,EAAE,cAAc,EAA4B,MAAM,eAAe,CAAC;AAoC9G,gHAAgH;AAChH,MAAM,CAAC,MAAM,eAAe,GAAsB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAEnE;;;GAGG;AACH,SAAS,aAAa,CAAC,QAA0B;IAC/C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAChE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,CAAC;IACrC,OAAO,IAAwB,CAAC;AAClC,CAAC;AAED,4CAA4C;AAC5C,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAEjC,gCAAgC;AAChC,MAAM,OAAO,wBAAyB,SAAQ,iBAAiB;IA2B7D;;;OAGG;IACH,IAAI,CAAC,MAAM,GAAQ,EAAE;QACnB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,SAAS,KAAd,IAAI,CAAC,SAAS,GAAK,YAAY,EAAC;QAChC,IAAI,CAAC,UAAU,KAAf,IAAI,CAAC,UAAU,GAAK,aAAa,EAAC;QAClC,IAAI,CAAC,OAAO,KAAZ,IAAI,CAAC,OAAO,GAAK,UAAU,EAAC;QAC5B,IAAI,CAAC,YAAY,KAAjB,IAAI,CAAC,YAAY,GAAK,IAAI,EAAC;QAC3B,IAAI,CAAC,aAAa,KAAlB,IAAI,CAAC,aAAa,GAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED;;;GAGG;IACU,cAAc;;sBACjB,OAAO;;;;;;;;;sBADJ,cACX,SAAQ,WAAgC;;;gBAW9B,gBAAW,IAZV,mDAAc,EAYD,IAAI,GAAG,EAAwB,EAAC;YAotB1D,CAAC;YAltBC;;eAEG;YACH,YAAY;gBACV,OAAO,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAgC,CAAC;YAC5E,CAAC;YAED;;eAEG;YACH,aAAa;gBACX,OAAO,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAiC,CAAC;YAC9E,CAAC;YAED,gBAAgB;YAChB,OAAO;gBACL,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,oBAAoB,CAAC;oBACnB,OAAO,EAAE,KAAK,EAAE,EAAU,EAAE,EAAE;wBAC5B,MAAM,GAAG,GAAI,IAAI,CAAC,YAAY,EAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACjD,OAAO,CAAC,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC5D,CAAC;iBACF,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YACd,CAAC;YAED,gBAAgB;YAChB,KAAK,CAAC,IAAI;gBACR,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,2DAA2D;gBAC3D,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC;YACd,CAAC;YAED;;;eAGG;YACO,iBAAiB;gBACzB,yGAAyG;gBACzG,MAAM,SAAS,GAAG,IAAI,GAAG,EAAwB,CAAC;gBAClD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBAC7D,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;wBAAE,SAAS;oBACvC,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;wBACxC,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;oBACvE,CAAC;oBACD,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBAC/C,CAAC;gBACD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC/B,CAAC;YAED,gBAAgB;YAChB,KAAK,CAAC,IAAI;gBACR,oBAAoB,CAAC,SAAS,CAAC,CAAC;gBAChC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;YACrB,CAAC;YAED;;;eAGG;YACH,WAAW,CAAC,IAAY;gBACtB,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;YAED;;;eAGG;YACO,cAAc,CAAC,IAAY;gBACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,CAAC,QAAQ;oBAAE,OAAO,SAAS,CAAC;gBAChC,IAAI,OAAO,QAAQ,CAAC,cAAc,KAAK,UAAU;oBAAE,OAAO,QAAQ,CAAC,cAAc,EAAE,CAAC;gBACpF,MAAM,MAAM,GAAQ,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC;gBAC/C,IAAI,CAAC,MAAM;oBAAE,OAAO,SAAS,CAAC;gBAC9B,MAAM,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,GAAG,MAAM,CAAC;gBAC/D,MAAM,OAAO,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;gBACxF,IAAI,mBAAmB,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;oBACvE,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,2CAA2C,CAAC,CAAC;gBACzG,CAAC;gBACD,IACE,sBAAsB,KAAK,SAAS;oBACpC,OAAO,sBAAsB,KAAK,SAAS;oBAC3C,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAChC,CAAC;oBACD,MAAM,IAAI,KAAK,CACb,sCAAsC,IAAI,yDAAyD,CACpG,CAAC;gBACJ,CAAC;gBACD,OAAO,mBAAmB,KAAK,SAAS,IAAI,sBAAsB,KAAK,SAAS;oBAC9E,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,CAAC;YACtD,CAAC;YAED;;eAEG;YACH,YAAY;gBACV,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC;YACpE,CAAC;YAED;;;eAGG;YAEH,SAAS;gBACP,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7B,CAAC;YAED;;;eAGG;YAEH,KAAK,CAAC,EAAE;gBACN,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAS,GAAG,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBACzF,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;gBACjD,CAAC;gBACD,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAS,CAAC,CAAC;gBACvE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;YAC9B,CAAC;YAED,gBAAgB;YAChB,WAAW;gBACT,KAAK,CAAC,WAAW,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;oBAC3C,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,sCAAsC;oBAC5C,UAAU,EAAE,CAAC,UAAU,CAAC;iBACzB,CAAC,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;oBAC5C,IAAI,EAAE,aAAa;oBACnB,IAAI,EAAE,0BAA0B;iBACjC,CAAC,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;oBAClD,IAAI,EAAE,mBAAmB;oBACzB,IAAI,EAAE,6CAA6C;oBACnD,UAAU,EAAE,CAAC,UAAU,CAAC;iBACzB,CAAC,CAAC;YACL,CAAC;YAED;;;;;;eAMG;YACO,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,WAAmB;gBAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAC7D,IAAI,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;oBACvB,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC;gBACnB,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,EAAE,CAAC;oBACvC,OAAO,SAAS,CAAC;gBACnB,CAAC;gBACD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAQ,CAAC,CAAC;gBACvE,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;oBAC7B,OAAO,SAAS,CAAC;gBACnB,CAAC;gBACD,iGAAiG;gBACjG,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBACrD,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC;oBACnC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,+CAA+C,QAAQ,aAAa,CAAC,CAAC;oBACvF,OAAO,SAAS,CAAC;gBACnB,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;gBACpE,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;oBACrE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,QAAQ,6CAA6C,CAAC,CAAC;oBAC/E,OAAO,SAAS,CAAC;gBACnB,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;YAED;;;;eAIG;YACO,UAAU,CAAC,IAAU;gBAC7B,MAAM,GAAG,GAAI,IAAY,EAAE,GAAG,CAAC;gBAC/B,OAAO,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,CAAC;YAED;;;;;;eAMG;YACH,KAAK,CAAC,YAAY,CAAC,QAA0B,EAAE,IAAI,GAAQ,EAAE,EAAE,GAAG,GAAQ,UAAU,EAAO;gBACzF,MAAM,IAAI,GAAS,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CACjD;oBACE,GAAG,IAAI;oBACP,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO,EAAE,IAAI;oBACvD,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;iBACpB,EACR,KAAK,CACN,CAAC;gBACF,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;oBACzC,OAAO,EAAE,GAAG;oBACZ,IAAI;oBACJ,IAAI;oBACJ,OAAO,EAAE,GAAG,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,QAAQ,EAAE;oBACvD,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC;iBAC3B,CAAC,CAAC;gBACV,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClB,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACjE,OAAO,IAAI,CAAC;YACd,CAAC;YAED;;;;;;;;;;eAUG;YACH,KAAK,CAAC,QAAQ,CAAC,QAA0B,EAAE,OAAO,GAA0B,EAAE;gBAC5E,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACtC,MAAM,GAAG,GAAG,UAAU,EAAO,CAAC;gBAC9B,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACrF,CAAC;YAED;;;;;;;;eAQG;YACH,WAAW,CAAC,QAA0B;gBACpC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;oBAC1C,MAAM,IAAI,UAAU,CAAC,UAAU,CAAC,0BAA0B,QAAQ,EAAE,QAAQ,GAAG,CAAC,CAAC;gBACnF,CAAC;gBACD,OAAO,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5E,CAAC;YAED;;;;;;;eAOG;YACO,KAAK,CAAC,UAAU,CACxB,QAA0B,EAC1B,GAAQ,EACR,OAAgB,EAChB,OAAO,GAAY,KAAK;gBAExB,MAAM,aAAa,GAAuB,GAAG,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5G,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAC1E,IAAI,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC;oBACrB,IAAI,aAAa,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,aAAa,EAAE,CAAC;wBAClE,MAAM,IAAI,oBAAoB,EAAE,CAAC;oBACnC,CAAC;oBACD,6GAA6G;oBAC7G,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;wBAC5E,MAAM,IAAI,aAAa,EAAE,CAAC;oBAC5B,CAAC;oBACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAC1E,CAAC;gBACD,+FAA+F;gBAC/F,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC;gBACzB,IAAI,IAAI,GAAqB,QAAQ,CAAC,IAAI,CAAC;gBAC3C,IAAI,MAAM,GAAuB,aAAa,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;gBAClE,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChF,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5E,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC;gBACtD,IAAI,UAA4B,CAAC;gBACjC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBACvC,kGAAkG;gBAClG,MAAM,KAAK,GACT,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC/G,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;oBACrB,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;wBAC7E,MAAM,IAAI,aAAa,EAAE,CAAC;oBAC5B,CAAC;oBACD,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC1B,MAAM,GAAG,IAAI,CAAC;gBAChB,CAAC;gBACD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;wBAClC,MAAM,IAAI,oBAAoB,EAAE,CAAC;oBACnC,CAAC;oBACD,+FAA+F;oBAC/F,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;wBACjF,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC1D,CAAC;oBACD,IAAI,GAAG,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;oBAC/D,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC1B,CAAC;gBACD,IAAI,QAAQ,EAAE,CAAC;oBACb,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBACtB,yDAAyD;oBACzD,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBACzF,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;wBACjC,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC;wBACrD,KAAK;wBACL,SAAS,EAAE,QAAQ,CAAC,OAAO;wBAC3B,UAAU,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;qBACrD,CAAC,CAAC;oBACV,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBACtB,4CAA4C;oBAC5C,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;wBACpB,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC1C,CAAC;oBACD,IAAI,CAAC;wBACH,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5C,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,IAAI,CAAC,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;4BACzD,uGAAuG;4BACvG,MAAM,UAAU,EAAE,MAAM,EAAE,CAAC;4BAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;wBACvD,CAAC;wBACD,MAAM,GAAG,CAAC;oBACZ,CAAC;gBACH,CAAC;gBACD,+EAA+E;gBAC/E,IAAI,KAAK,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;oBACpF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;wBACvC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC;wBAC5B,KAAK;wBACL,UAAU,EAAE,IAAI,IAAI,EAAE;qBAChB,CAAC,CAAC;oBACV,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBACtB,MAAM,KAAK;yBACR,aAAa,EAAE;yBACf,MAAM,CAAC,KAAK,CAAC;yBACb,KAAK,CAAC,GAAG,CAAC,EAAE;wBACX,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC;4BAAE,MAAM,GAAG,CAAC;oBAC3D,CAAC,CAAC,CAAC;gBACP,CAAC;gBACD,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;wBACvC,OAAO,EAAE,GAAG;wBACZ,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;wBAC3C,KAAK;qBACC,CAAC,CAAC;gBACZ,CAAC;gBACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC9D,CAAC;YAED;;;eAGG;YACO,QAAQ,CAAC,MAAc;gBAC/B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;YAC/C,CAAC;YAED;;;;;;;eAOG;YACO,KAAK,CAAC,SAAS,CACvB,IAAmB,EACnB,KAAY,EACZ,QAA0B,EAC1B,GAAG,GAAQ,UAAU,EAAO;gBAE5B,MAAM,OAAO,GAAS,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAClF,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACzC,mFAAmF;gBACnF,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC;gBAC/B,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtG,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC9E,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;gBAChG,iGAAiG;gBACjG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC5B,gEAAgE;gBAChE,MAAM,MAAM,GAAQ;oBAClB,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC5D,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;iBACrD,CAAC;gBACF,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACtB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC;wBAC/B,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAClC,CAAC;oBACD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;gBAC7C,CAAC;gBACD,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;gBAC/D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC/D,MAAM,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;oBACtC,OAAO,EAAE,GAAG;oBACZ,MAAM;oBACN,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;oBACxB,KAAK;oBACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,mFAAmF;oBACnF,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC;iBAC3B,CAAC,CAAC;gBACV,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC1D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC;YACpE,CAAC;YAED;;;;;eAKG;YACO,KAAK,CAAC,YAAY,CAAC,KAAY,EAAE,MAAW;gBACpD,IAAI,CAAC,MAAM;oBAAE,OAAO,EAAE,CAAC;gBACvB,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC/B,OAAO;oBACL,MAAM,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE;oBACnD,GAAG,CAAE,KAAa,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACrE,CAAC;YACJ,CAAC;YAED;;;eAGG;YACO,WAAW;gBACnB,MAAM,GAAG,GAAG,UAAU,EAAO,CAAC;gBAC9B,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC;oBAClC,MAAM,IAAI,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;gBACtD,CAAC;gBACD,OAAO,GAAG,CAAC,gBAAgB,EAAE,CAAC;YAChC,CAAC;YAED;;eAEG;YAEH,KAAK,CAAC,MAAM;gBACV,MAAM,GAAG,GAAG,UAAU,EAAO,CAAC;gBAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;gBACjC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC;oBAClD,MAAM,IAAI,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;gBACtD,CAAC;gBACD,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;gBACrC,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC3E,CAAC;gBACD,MAAM,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,OAAO,EAAE,GAAG,EAAS,CAAC,CAAC;gBAClE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;gBAC5B,GAAG,CAAC,UAAU,EAAE,CAAC;YACnB,CAAC;YAED;;;;eAIG;YAEH,KAAK,CAAC,OAAO,CAAC,YAAoB;gBAChC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;gBACzG,OAAO,MAAM,CAAC;YAChB,CAAC;YAED;;;eAGG;YAEH,KAAK,CAAC,MAAM;gBAGV,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBAClC,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC/C,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,UAAU,EAAE,CAAC,CAAC,UAAU;iBACzB,CAAC,CAAC,CAAC;YACN,CAAC;YAED;;;eAGG;YACO,KAAK,CAAC,UAAU,CAAC,MAAc;gBACvC,OAAO,WAAW,CAAC,KAAK,IAAI,EAAE;oBAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;oBACxC,MAAM,MAAM,GAAG,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;oBACvE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;wBACxC,OAAO,MAAM,CAAC;oBAChB,CAAC;oBACD,0EAA0E;oBAC1E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAiB,CAAC;oBACxC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;wBAC3B,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,CAAC;4BAC1B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;wBACrC,CAAC;6BAAM,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,EAAE,EAAE,CAAC;4BAC7C,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC;gCAAE,SAAS;4BAChD,IAAI,QAAe,CAAC;4BACpB,IAAI,CAAC;gCACH,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;4BACnD,CAAC;4BAAC,OAAO,GAAG,EAAE,CAAC;gCACb,IAAI,CAAC,CAAC,GAAG,YAAY,aAAa,CAAC;oCAAE,MAAM,GAAG,CAAC;gCAC/C,8FAA8F;gCAC9F,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,YAAY,EAAE,+CAA+C,CAAC,CAAC;gCAClG,SAAS;4BACX,CAAC;4BACD,+DAA+D;4BAC/D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gCAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;wBAChF,CAAC;oBACH,CAAC;oBACD,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC9B,CAAC,CAAC,CAAC;YACL,CAAC;YAED;;;;;;eAMG;YAEH,KAAK,CAAC,MAAM,CAAC,QAAgB,EAAE,WAAmB;gBAChD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;gBAC1F,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;gBACnD,CAAC;gBACD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAS,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC/C,MAAM,YAAY,GAAG,CAAC,CAAE,IAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC;gBAC/D,2FAA2F;gBAC3F,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,YAAY,CAAC,CAAC;gBAC7E,MAAM,SAAS,GAAG,QAAQ,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;gBACvF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC,EAAE,CAAC;oBACvD,MAAM,IAAI,eAAe,EAAE,CAAC;gBAC9B,CAAC;gBACD,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/C,8FAA8F;gBAC9F,MAAM,KAAK,GAAG;oBACZ,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE;oBACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,MAAM;iBACP,CAAC;gBACF,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAS,CAAC,CAAC;YAC5F,CAAC;YAED;;;;;;;;;;;;;;;;;;;eAmBG;YAKH,KAAK,CAAC,OAAO;YACX,oEAAoE;YACpE,MAAM,GAAY,KAAK;YACvB,gDAAgD;YAChD,KAAK,GAAW,GAAG;gBAEnB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;gBAC/D,MAAM,MAAM,GAAoB;oBAC9B,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;oBAC/C,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;iBAC/C,CAAC;gBACF,MAAM,WAAW,CAAC,KAAK,IAAI,EAAE;oBAC3B,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAC3C,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,0BAA0B,EAAE,MAAM,CAAC,CAAC;gBACrD,OAAO,MAAM,CAAC;YAChB,CAAC;YAED;;;;;eAKG;YACO,KAAK,CAAC,CAAC,eAAe,CAAC,QAAgB;gBAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxC,MAAM,MAAM,GAAwB,CAAC,UAAU,CAAC,CAAC;gBACjD,IAAK,UAAkB,KAAK,KAAK,EAAE,CAAC;oBAClC,IAAI,CAAC;wBACH,IAAI,KAAK,CAAC,aAAa,EAAE;4BAAE,MAAM,CAAC,IAAI,CAAC,KAAY,CAAC,CAAC;oBACvD,CAAC;oBAAC,MAAM,CAAC;wBACP,6EAA6E;oBAC/E,CAAC;gBACH,CAAC;gBACD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;gBAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC,CAAC;oBACtD,OAAO,IAAI,EAAE,CAAC;wBACZ,IAAI,IAA2B,CAAC;wBAChC,IAAI,CAAC;4BACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;wBAC3B,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,MAAM,UAAU,GAAI,KAAa,CAAC,QAAQ,EAAE,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC;4BACrE,MAAM,KAAK,GAAQ,IAAI,KAAK,CAC1B,mBAAmB,UAAU,0BAA0B,GAAG,EAAE,OAAO,IAAI,GAAG,IAAI;gCAC5E,iGAAiG,CACpG,CAAC;4BACF,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;4BAClB,MAAM,KAAK,CAAC;wBACd,CAAC;wBACD,IAAI,IAAI,CAAC,IAAI;4BAAE,MAAM;wBACrB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;wBACtC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;4BAAE,SAAS;wBAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBACd,MAAM,GAAG,CAAC;oBACZ,CAAC;gBACH,CAAC;YACH,CAAC;YAED;;;;eAIG;YACO,KAAK,CAAC,aAAa,CAAC,MAAuB,EAAE,QAAgB;gBACrE,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBACxC,MAAM,MAAM,GAAG,IAAI,GAAG,EAA6C,CAAC;gBACpE,IAAI,IAAI,GAAG,CAAC,CAAC;gBACb,IAAI,QAAgB,CAAC;gBACrB,GAAG,CAAC;oBACF,QAAQ,GAAG,CAAC,CAAC;oBACb,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACvD,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,UAAU,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;4BAAE,SAAS;wBAC9E,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;4BACzB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;4BAC3B,SAAS;wBACX,CAAC;wBACD,uGAAuG;wBACvG,6FAA6F;wBAC7F,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,GAAU,CAAC,CAAC;wBACvC,MAAM,GAAG,GAAG,MAAM,GAAG;6BAClB,GAAG,EAAE;6BACL,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,0CAA0C,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;wBAC3G,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;4BACpC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;4BAC3B,SAAS;wBACX,CAAC;wBACD,IAAI,CAAC;4BACH,MAAM,YAAY,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;4BAC/D,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;4BAC5B,QAAQ,EAAE,CAAC;wBACb,CAAC;wBAAC,OAAO,GAAG,EAAE,CAAC;4BACb,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;4BAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,kBAAkB,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;wBAC3E,CAAC;oBACH,CAAC;oBACD,IAAI,EAAE,CAAC;oBACP,wDAAwD;gBAC1D,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,QAAQ,GAAG,CAAC,IAAI,IAAI,GAAG,oBAAoB,EAAE;gBACxE,IAAI,QAAQ,GAAG,CAAC,IAAI,IAAI,IAAI,oBAAoB,EAAE,CAAC;oBACjD,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;oBACzB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,iCAAiC,IAAI,uBAAuB,CAAC,CAAC;gBACjF,CAAC;gBACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;oBAClC,IAAI,KAAK,KAAK,QAAQ;wBAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;wBAClD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9B,CAAC;YACH,CAAC;YAED;;;;eAIG;YACO,KAAK,CAAC,YAAY,CAAC,MAAuB,EAAE,QAAgB;gBACpE,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,EAAE,CAAC;oBAC1E,IAAI,CAAE,IAAY,CAAC,kBAAkB,CAAC;wBAAE,SAAS;oBACjD,IAAI,CAAC;wBACH,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;4BACnB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;wBACpB,CAAC;wBACD,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;oBAC1B,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;wBACzC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAC;oBACrF,CAAC;gBACH,CAAC;YACH,CAAC;;;;qCAvmBA,SAAS,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,CAAC;8BASpF,SAAS,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;kCA+UtE,SAAS,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC;mCAqB/E,SAAS,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,CAAC;kCAUjF,SAAS,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC;kCAwD9E,SAAS,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,EAAE,CAAC;mCAmDtF,OAAO,CAAC,cAAc,EAAE;oBACvB,WAAW,EAAE,sDAAsD;oBACnE,KAAK,EAAE,aAAa;iBACrB,CAAC;YApeF,4KAAA,SAAS,6DAER;YAOD,uJAAM,EAAE,6DAQP;YAuUD,mKAAM,MAAM,6DAaX;YAQD,sKAAM,OAAO,6DAGZ;YAOD,mKAAM,MAAM,6DAWX;YA6CD,mKAAM,MAAM,6DA4BX;YA0BD,sKAAM,OAAO,6DAkBZ;;;QA5mBM,aAAU,GAAG,wBAAyB;;;SAJlC,cAAc"}
@@ -0,0 +1,71 @@
1
+ import { Ident } from "@webda/core";
2
+ import type { ModelClass } from "@webda/models";
3
+ /**
4
+ * v3 ident records
5
+ *
6
+ * v3 stored idents under `"<providerUid>_<provider>"` (plain JSON, `__type: "Webda/Ident"`, `uuid` kept in the
7
+ * body). The core `Ident` repository addresses and queries them through `Ident.parseLegacyUID` (a model-level
8
+ * legacy key hook): they load as `Ident` instances without `providerUid`, recognised by `ident.getLegacyUID()`.
9
+ * Nothing else may use such an instance: it must go through {@link upgradeIdent} first.
10
+ */
11
+ /**
12
+ * @param providerUid - uid on the provider
13
+ * @param provider - provider name
14
+ * @returns the v3 key `"<providerUid>_<provider>"`
15
+ */
16
+ export declare function legacyKey(providerUid: string, provider: string): string;
17
+ /**
18
+ * Split a v3 key on its LAST "_" (provider names never contain "_", emails may)
19
+ * @param uuid - v3 key
20
+ * @returns the parts, or undefined when not a v3 key
21
+ */
22
+ export declare function splitLegacyKey(uuid: string): {
23
+ providerUid: string;
24
+ provider: string;
25
+ } | undefined;
26
+ /**
27
+ * Whether a row loaded under a v3 key really is a v3 ident of this application
28
+ *
29
+ * The row must be an instance of the ident model, carry a v3 key and be stored untyped, as `Webda/Ident`, or as
30
+ * the ident model, one of its ancestors or transitive subclasses: a v3-looking key of a shared store may hold
31
+ * another model's row.
32
+ * @param row - the loaded row
33
+ * @param IdentModel - ident model of the application
34
+ * @returns true for a v3 ident
35
+ */
36
+ export declare function isLegacyIdent(row: any, IdentModel?: ModelClass<Ident>): row is Ident;
37
+ /**
38
+ * Upgrade a v3 ident: create the `"<providerUid>:<provider>"` record, then delete the v3 one
39
+ *
40
+ * Idempotent and crash-safe: when the new record already exists (an earlier upgrade stopped before the delete,
41
+ * or a concurrent one won) it is kept as is and only the v3 record is deleted. Field map: `_user` → owner,
42
+ * `_validation` → `verifiedAt`, `_lastUsed` → `lastUsedAt`, `_failedLogin` → `_loginAttempts`,
43
+ * `_lastFailedLogin` → `_lastLoginAttemptAt` (number or date; absent, the count is treated as an expired lock),
44
+ * `_lastValidationEmail` → `_throttle.lastSentAt`; `email`, `__profile` are kept, `__tokens` is encrypted into `tokens`; provider is
45
+ * `provider ?? _type ?? key suffix`, providerUid the key prefix (normalised for the email provider: v3 kept the
46
+ * email case). Callers run it as system.
47
+ * @throws Error when `legacy` is not a v3 ident (see {@link isLegacyIdent})
48
+ * @throws IdentConflict when the upgraded key exists, or is created concurrently, with another owner: the v3
49
+ * record is kept for a manual resolution
50
+ * @param legacy - a v3 ident (`legacy.getLegacyUID()` is set)
51
+ * @param IdentModel - ident model of the application
52
+ * @param options - options
53
+ * @param options.dryRun - run the checks only: nothing is written, the returned ident is not saved
54
+ * @returns the upgraded ident
55
+ */
56
+ export declare function upgradeIdent(legacy: Ident, IdentModel?: ModelClass<Ident>, options?: {
57
+ dryRun?: boolean;
58
+ }): Promise<Ident>;
59
+ /**
60
+ * Enumerate the v3 idents of a store, for a batch migration (`webda auth migrate`)
61
+ *
62
+ * Iterates the ident model (all idents, the v3 ones are filtered client side: they lack `providerUid`, which
63
+ * stores cannot portably query for) and yields only the v3 records. Pass each to {@link upgradeIdent}.
64
+ * Upgrading deletes records, which shifts offset-based pagination (memory and file stores page by position):
65
+ * a migration upgrading while iterating must run passes until one yields nothing (upgrades are idempotent).
66
+ * @param IdentModel - ident model of the application
67
+ * @param query - optional WebdaQL filter, e.g. `"_user = 'uid'"`
68
+ * @returns the v3 idents
69
+ */
70
+ export declare function legacyIdents(IdentModel?: ModelClass<Ident>, query?: string): AsyncGenerator<Ident>;
71
+ //# sourceMappingURL=upgrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../src/compat/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD;;;;;;;GAOG;AAEH;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAElG;AAyBD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,GAAE,UAAU,CAAC,KAAK,CAAgB,GAAG,GAAG,IAAI,KAAK,CAMlG;AA0BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,KAAK,EACb,UAAU,GAAE,UAAU,CAAC,KAAK,CAAgB,EAC5C,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,KAAK,CAAC,CAqDhB;AAED;;;;;;;;;;GAUG;AACH,wBAAuB,YAAY,CACjC,UAAU,GAAE,UAAU,CAAC,KAAK,CAAgB,EAC5C,KAAK,GAAE,MAAW,GACjB,cAAc,CAAC,KAAK,CAAC,CAMvB"}
@@ -0,0 +1,185 @@
1
+ import { Ident } from "@webda/core";
2
+ import { IdentConflict } from "../errors.js";
3
+ /**
4
+ * v3 ident records
5
+ *
6
+ * v3 stored idents under `"<providerUid>_<provider>"` (plain JSON, `__type: "Webda/Ident"`, `uuid` kept in the
7
+ * body). The core `Ident` repository addresses and queries them through `Ident.parseLegacyUID` (a model-level
8
+ * legacy key hook): they load as `Ident` instances without `providerUid`, recognised by `ident.getLegacyUID()`.
9
+ * Nothing else may use such an instance: it must go through {@link upgradeIdent} first.
10
+ */
11
+ /**
12
+ * @param providerUid - uid on the provider
13
+ * @param provider - provider name
14
+ * @returns the v3 key `"<providerUid>_<provider>"`
15
+ */
16
+ export function legacyKey(providerUid, provider) {
17
+ return `${providerUid}_${provider}`;
18
+ }
19
+ /**
20
+ * Split a v3 key on its LAST "_" (provider names never contain "_", emails may)
21
+ * @param uuid - v3 key
22
+ * @returns the parts, or undefined when not a v3 key
23
+ */
24
+ export function splitLegacyKey(uuid) {
25
+ return Ident.parseLegacyUID(uuid);
26
+ }
27
+ /**
28
+ * @param value - a v3 date (ISO string, timestamp or Date)
29
+ * @returns the date, undefined when absent or unreadable
30
+ */
31
+ function toDate(value) {
32
+ if (value === undefined || value === null || value === "" || value === false) {
33
+ return undefined;
34
+ }
35
+ const date = value instanceof Date ? value : new Date(value);
36
+ return isNaN(date.getTime()) ? undefined : date;
37
+ }
38
+ /**
39
+ * @param value - a v3 timestamp (number, ISO string or Date)
40
+ * @returns the timestamp in ms, undefined when absent or unreadable
41
+ */
42
+ function toTimestamp(value) {
43
+ if (typeof value === "number") {
44
+ return value || undefined;
45
+ }
46
+ return toDate(value)?.getTime();
47
+ }
48
+ /**
49
+ * Whether a row loaded under a v3 key really is a v3 ident of this application
50
+ *
51
+ * The row must be an instance of the ident model, carry a v3 key and be stored untyped, as `Webda/Ident`, or as
52
+ * the ident model, one of its ancestors or transitive subclasses: a v3-looking key of a shared store may hold
53
+ * another model's row.
54
+ * @param row - the loaded row
55
+ * @param IdentModel - ident model of the application
56
+ * @returns true for a v3 ident
57
+ */
58
+ export function isLegacyIdent(row, IdentModel = Ident) {
59
+ if (!(row instanceof IdentModel) || !row.getLegacyUID()) {
60
+ return false;
61
+ }
62
+ const type = row.__type;
63
+ return type === undefined || identIdentifiers(IdentModel).has(type);
64
+ }
65
+ /**
66
+ * Identifiers a v3 ident row of this ident model may be stored as: `Webda/Ident`, the model, its ancestors and
67
+ * its transitive subclasses
68
+ * @param IdentModel - ident model of the application
69
+ * @returns the identifiers
70
+ */
71
+ function identIdentifiers(IdentModel) {
72
+ const ids = new Set(["Webda/Ident"]);
73
+ for (let parent = Object.getPrototypeOf(IdentModel); parent && parent !== Function.prototype;) {
74
+ if (parent.Metadata?.Identifier)
75
+ ids.add(parent.Metadata.Identifier);
76
+ parent = Object.getPrototypeOf(parent);
77
+ }
78
+ const queue = [IdentModel];
79
+ const seen = new Set();
80
+ while (queue.length) {
81
+ const clazz = queue.shift();
82
+ if (!clazz || seen.has(clazz))
83
+ continue;
84
+ seen.add(clazz);
85
+ if (clazz.Metadata?.Identifier)
86
+ ids.add(clazz.Metadata.Identifier);
87
+ queue.push(...(clazz.Metadata?.Subclasses ?? []));
88
+ }
89
+ return ids;
90
+ }
91
+ /**
92
+ * Upgrade a v3 ident: create the `"<providerUid>:<provider>"` record, then delete the v3 one
93
+ *
94
+ * Idempotent and crash-safe: when the new record already exists (an earlier upgrade stopped before the delete,
95
+ * or a concurrent one won) it is kept as is and only the v3 record is deleted. Field map: `_user` → owner,
96
+ * `_validation` → `verifiedAt`, `_lastUsed` → `lastUsedAt`, `_failedLogin` → `_loginAttempts`,
97
+ * `_lastFailedLogin` → `_lastLoginAttemptAt` (number or date; absent, the count is treated as an expired lock),
98
+ * `_lastValidationEmail` → `_throttle.lastSentAt`; `email`, `__profile` are kept, `__tokens` is encrypted into `tokens`; provider is
99
+ * `provider ?? _type ?? key suffix`, providerUid the key prefix (normalised for the email provider: v3 kept the
100
+ * email case). Callers run it as system.
101
+ * @throws Error when `legacy` is not a v3 ident (see {@link isLegacyIdent})
102
+ * @throws IdentConflict when the upgraded key exists, or is created concurrently, with another owner: the v3
103
+ * record is kept for a manual resolution
104
+ * @param legacy - a v3 ident (`legacy.getLegacyUID()` is set)
105
+ * @param IdentModel - ident model of the application
106
+ * @param options - options
107
+ * @param options.dryRun - run the checks only: nothing is written, the returned ident is not saved
108
+ * @returns the upgraded ident
109
+ */
110
+ export async function upgradeIdent(legacy, IdentModel = Ident, options = {}) {
111
+ const uid = isLegacyIdent(legacy, IdentModel) ? legacy.getLegacyUID() : undefined;
112
+ const parts = uid ? splitLegacyKey(uid) : undefined;
113
+ if (!parts) {
114
+ throw new Error("Not a v3 ident");
115
+ }
116
+ const v3 = legacy;
117
+ const provider = v3.provider ?? v3._type ?? parts.provider;
118
+ // v3 did not normalise emails: an email key is upgraded under its normalised (lowercase) form
119
+ const providerUid = provider === "email" ? Ident.normalizeEmail(parts.providerUid) : parts.providerUid;
120
+ const key = Ident.key(providerUid, provider);
121
+ const ref = IdentModel.ref(key);
122
+ const owner = v3._user?.toString();
123
+ // Another account may already hold the upgraded key (e.g. two v3 keys differing only by case)
124
+ const checkOwner = (existing) => {
125
+ if (existing.getUser()?.toString() !== owner)
126
+ throw new IdentConflict();
127
+ return existing;
128
+ };
129
+ let ident = (await ref.exists()) ? checkOwner(await ref.get()) : undefined;
130
+ if (!ident) {
131
+ const created = new IdentModel({
132
+ ...key,
133
+ email: v3.email ?? (provider === "email" ? providerUid : undefined),
134
+ verifiedAt: v3._validation ? (toDate(v3._validation) ?? new Date()) : undefined,
135
+ lastUsedAt: toDate(v3._lastUsed),
136
+ _throttle: { lastSentAt: toTimestamp(v3._lastValidationEmail) },
137
+ _loginAttempts: typeof v3._failedLogin === "number" ? v3._failedLogin : 0,
138
+ _lastLoginAttemptAt: toTimestamp(v3._lastFailedLogin),
139
+ __profile: v3.__profile
140
+ });
141
+ if (owner) {
142
+ created.setUser(owner);
143
+ }
144
+ // v3 kept plaintext tokens: they are only stored encrypted
145
+ if (v3.__tokens && !options.dryRun) {
146
+ await created.tokens.set(v3.__tokens);
147
+ }
148
+ if (options.dryRun) {
149
+ return created;
150
+ }
151
+ try {
152
+ ident = await created.getRepository().create(created);
153
+ }
154
+ catch (err) {
155
+ // Store-agnostic lost race: the record now exists, whatever error the store reported
156
+ if (!(await ref.exists()))
157
+ throw err;
158
+ // The race may have been won by another v3 record of another user: never delete this one then
159
+ ident = checkOwner(await ref.get());
160
+ }
161
+ }
162
+ if (!options.dryRun) {
163
+ await IdentModel.ref(uid).delete();
164
+ }
165
+ return ident;
166
+ }
167
+ /**
168
+ * Enumerate the v3 idents of a store, for a batch migration (`webda auth migrate`)
169
+ *
170
+ * Iterates the ident model (all idents, the v3 ones are filtered client side: they lack `providerUid`, which
171
+ * stores cannot portably query for) and yields only the v3 records. Pass each to {@link upgradeIdent}.
172
+ * Upgrading deletes records, which shifts offset-based pagination (memory and file stores page by position):
173
+ * a migration upgrading while iterating must run passes until one yields nothing (upgrades are idempotent).
174
+ * @param IdentModel - ident model of the application
175
+ * @param query - optional WebdaQL filter, e.g. `"_user = 'uid'"`
176
+ * @returns the v3 idents
177
+ */
178
+ export async function* legacyIdents(IdentModel = Ident, query = "") {
179
+ for await (const ident of IdentModel.iterate(query)) {
180
+ if (ident.getLegacyUID()) {
181
+ yield ident;
182
+ }
183
+ }
184
+ }
185
+ //# sourceMappingURL=upgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/compat/upgrade.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,241 @@
1
+ import { type AuthResult, Ident, type ProviderInfo, Service, ServiceParameters, type WebContext } from "@webda/core";
2
+ import type { AuthProvider } from "../provider.js";
3
+ /** When the email is verified relative to account creation */
4
+ export type VerificationMode = "before" | "after" | "none";
5
+ /** EmailPasswordProvider parameters */
6
+ export declare class EmailPasswordParameters extends ServiceParameters {
7
+ /**
8
+ * Mailer service name
9
+ * @default "Mailer"
10
+ */
11
+ mailer: string;
12
+ /**
13
+ * Verification mode
14
+ * @default "before"
15
+ */
16
+ verification: VerificationMode;
17
+ /** Password rules */
18
+ password: {
19
+ policy?: string;
20
+ verifier?: string;
21
+ };
22
+ /** Throttling */
23
+ throttle: {
24
+ resendDelay?: number;
25
+ failedBeforeDelay?: number;
26
+ lockout?: number;
27
+ };
28
+ /**
29
+ * Browser redirects for emailed links (no defaults: init() refuses a missing required one). `failure` and `recover`
30
+ * are always required, `verified` and `register` unless `verification` is "none". `recover` receives the recovery
31
+ * link as `?token=...` (the page then calls Auth.Password.Recover). `confirm` (default `failure`) receives a
32
+ * verification link opened without the matching session, with `?reason=LOGIN_REQUIRED&token=...`: log in then call
33
+ * Auth.Email.Verify with the token
34
+ */
35
+ redirects: {
36
+ verified?: string;
37
+ failure?: string;
38
+ register?: string;
39
+ confirm?: string;
40
+ recover?: string;
41
+ };
42
+ /**
43
+ * Base url for emailed links
44
+ * @default "/auth/email"
45
+ */
46
+ url: string;
47
+ /** Only these email domains may use this provider (see ProviderEmailPolicy) */
48
+ allowedEmailDomains?: string[];
49
+ /** Whether the verification of the email is believed (see ProviderEmailPolicy) */
50
+ trustEmailVerification?: boolean | string[];
51
+ /**
52
+ * @param params - raw parameters
53
+ * @returns this
54
+ */
55
+ load(params?: any): this;
56
+ }
57
+ /**
58
+ * Email + password login method
59
+ *
60
+ * The password policy is process-wide: resolve() registers the one of this provider and stop() restores the
61
+ * default. With several instances the last one resolved wins.
62
+ *
63
+ * Known residual exposure: Auth.Email.Register answers AccountExists for a registered email (enumeration), and
64
+ * login timing differs slightly for known emails. An unverified squatter owning an email blocks its registration
65
+ * until the real owner goes through account recovery.
66
+ *
67
+ * Under `allowedEmailDomains` an email must be verified: with `verification` "after" or "none" a new registration is
68
+ * unverified and therefore refused (EMAIL_DOMAIN_NOT_ALLOWED); use "before".
69
+ * @WebdaModda EmailPasswordProvider
70
+ */
71
+ export declare class EmailPasswordProvider<T extends EmailPasswordParameters = EmailPasswordParameters> extends Service<T> implements AuthProvider {
72
+ static Parameters: typeof EmailPasswordParameters;
73
+ readonly providerName = "email";
74
+ /** @override */
75
+ resolve(): this;
76
+ /** @override */
77
+ init(): Promise<this>;
78
+ /** @override */
79
+ stop(): Promise<void>;
80
+ /**
81
+ * @returns public info
82
+ */
83
+ getPublicInfo(): ProviderInfo;
84
+ /**
85
+ * @param email - normalised email
86
+ * @returns the email ident
87
+ */
88
+ protected getIdent(email: string): Promise<Ident | undefined>;
89
+ /**
90
+ * Absolute link for an emailed token
91
+ * @param path - path under the provider url
92
+ * @param token - token
93
+ * @returns url
94
+ */
95
+ buildLink(path: string, token: string): string;
96
+ /**
97
+ * @param template - mail template
98
+ * @param to - recipient
99
+ * @param url - link
100
+ * @param token - token
101
+ */
102
+ protected sendMail(template: "EMAIL_REGISTER" | "EMAIL_RECOVERY", to: string, url: string, token: string): Promise<void>;
103
+ /**
104
+ * Count a login attempt before verifying it and decide whether the ident is locked
105
+ *
106
+ * Rule, equivalent to `isLocked(ident, failedBeforeDelay, lockout)` on the state before this attempt:
107
+ * `_loginAttempts` is incremented first (atomically; the new value is returned by the memory repository and
108
+ * re-read otherwise), so this attempt is locked when the count of PREVIOUS attempts (`_loginAttempts - 1`) is at
109
+ * least `failedBeforeDelay`, unless that lock has expired, ie `_lastLoginAttemptAt` as read when this call started
110
+ * is older than `lockout`. `_lastLoginAttemptAt` is only refreshed by attempts that are not refused, so hammering
111
+ * a locked ident does not extend the lock; a count reaching the threshold without timestamp is an expired lock.
112
+ * Both are top-level attributes: stores implement atomic increment and
113
+ * single attribute set on them (nested-path atomic operations are not portable across stores). The timestamp
114
+ * is a plain set (last writer wins); the counter is never written back from a snapshot. A burst starting exactly
115
+ * when an expired lock is read is verified as a whole: it is bounded to one burst per lock window.
116
+ * @param ident - the ident
117
+ * @returns true when this attempt must be refused without checking the password
118
+ */
119
+ protected countAttempt(ident: Ident): Promise<boolean>;
120
+ /**
121
+ * Login with email and password
122
+ * @param email - email
123
+ * @param password - password
124
+ * @returns the auth result
125
+ */
126
+ login(email: string, password: string): Promise<AuthResult>;
127
+ /**
128
+ * Register with email and password
129
+ * @param email - email
130
+ * @param password - password
131
+ * @param token - register token from the emailed link (verification "before")
132
+ * @param profile - extra user fields
133
+ * @returns the auth result, or verification_sent
134
+ */
135
+ register(email: string, password: string, token?: string, profile?: any): Promise<any>;
136
+ /**
137
+ * Send (or resend) a verification link
138
+ *
139
+ * Logged in: the link proves the email for the current account (`sub` is only in the token, the ident stays
140
+ * unowned until Auth.Email.Verify is called by the same session). Logged out: always answers with no content and
141
+ * never reveals anything; a link is only sent for an unowned or unknown email.
142
+ * @param email - email
143
+ */
144
+ startVerification(email: string): Promise<void>;
145
+ /**
146
+ * Logged-out link: a register link is emailed, without awaiting the mail, only for an unknown or unowned and
147
+ * unverified email whose send throttle allows it; anything else is silently ignored
148
+ * @param normalized - normalised email
149
+ */
150
+ protected sendUnownedLink(normalized: string): Promise<void>;
151
+ /**
152
+ * Check and mark the send throttle of an email ident, then sign the token to email; runs as system
153
+ * @param normalized - normalised email
154
+ * @param userId - logged user (verify token), undefined for a logged-out register token
155
+ * @returns the token to send, undefined when nothing must be sent (logged out only)
156
+ * @throws IdentLinkedElsewhere / PreconditionFailed / Throttled (logged in only)
157
+ */
158
+ protected prepareLink(normalized: string, userId: string | undefined): Promise<string | undefined>;
159
+ /**
160
+ * Send a mail without awaiting it; failures are logged without any secret
161
+ * @param template - mail template
162
+ * @param to - recipient
163
+ * @param url - link
164
+ * @param token - token
165
+ */
166
+ protected sendMailDetached(template: "EMAIL_REGISTER" | "EMAIL_RECOVERY", to: string, url: string, token: string): void;
167
+ /** Mails sent without being awaited */
168
+ protected pendingMails: Set<Promise<void>>;
169
+ /**
170
+ * Wait for the mails sent without being awaited (logged out verification, recovery)
171
+ */
172
+ flushMails(): Promise<void>;
173
+ /**
174
+ * Mark an email as verified: only the session of the user named by the token can complete it
175
+ * @param token - verify token
176
+ * @returns status
177
+ */
178
+ verify(token: string): Promise<{
179
+ status: "verified";
180
+ }>;
181
+ /**
182
+ * Verify with an explicit context
183
+ * @param token - verify token
184
+ * @param ctx - context whose session must match the token
185
+ * @returns status
186
+ */
187
+ protected verifyWith(token: string, ctx: any): Promise<{
188
+ status: "verified";
189
+ }>;
190
+ /**
191
+ * @param claims - verified token claims
192
+ * @param claims.sub - user id
193
+ * @param ctx - context
194
+ * @returns true when the session is logged as the user of the token
195
+ */
196
+ protected sessionMatches(claims: {
197
+ sub?: string;
198
+ }, ctx: any): boolean;
199
+ /**
200
+ * Complete a verification; nothing changes unless every check passes
201
+ * @param claims - verified token claims
202
+ * @param claims.email - email of the token
203
+ * @param claims.sub - user id
204
+ * @param ctx - context
205
+ */
206
+ protected completeVerify(claims: {
207
+ email: string;
208
+ sub?: string;
209
+ }, ctx: any): Promise<void>;
210
+ /**
211
+ * Start password recovery; always succeeds to avoid revealing accounts
212
+ * @param email - email
213
+ */
214
+ startRecovery(email: string): Promise<void>;
215
+ /**
216
+ * Set a new password from a recovery link (does not log in): revokes the refresh tokens and ends every session of
217
+ * the user (see `Session.authAt`), resets the login attempts of the email ident
218
+ * @param token - recover token
219
+ * @param password - new password
220
+ */
221
+ recover(token: string, password: string): Promise<void>;
222
+ /**
223
+ * Change the current user's password: revokes the refresh tokens and ends the other sessions of the user, the
224
+ * calling cookie session is re-stamped and stays logged in
225
+ * @param current - current password
226
+ * @param next - new password
227
+ */
228
+ changePassword(current: string, next: string): Promise<void>;
229
+ /**
230
+ * Browser landing for recovery links: redirects a valid recover token to `redirects.recover` without consuming it,
231
+ * anything else to `redirects.failure`; never throws
232
+ * @param ctx - web context
233
+ */
234
+ recoverRedirect(ctx: WebContext): Promise<void>;
235
+ /**
236
+ * Browser landing for emailed links: verifies then redirects, never throws
237
+ * @param ctx - web context
238
+ */
239
+ verifyRedirect(ctx: WebContext): Promise<void>;
240
+ }
241
+ //# sourceMappingURL=emailpassword.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emailpassword.service.d.ts","sourceRoot":"","sources":["../../src/email/emailpassword.service.ts"],"names":[],"mappings":"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"}