@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":"emailpassword.service.js","sourceRoot":"","sources":["../../src/email/emailpassword.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAEL,KAAK,EAEL,SAAS,EACT,QAAQ,EACR,KAAK,EAEL,sBAAsB,EACtB,WAAW,EACX,OAAO,EACP,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAGhB,UAAU,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAChH,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAK7D,uCAAuC;AACvC,MAAM,OAAO,uBAAwB,SAAQ,iBAAiB;IAiC5D;;;OAGG;IACH,IAAI,CAAC,MAAM,GAAQ,EAAE;QACnB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,CAAC,MAAM,KAAX,IAAI,CAAC,MAAM,GAAK,QAAQ,EAAC;QACzB,IAAI,CAAC,YAAY,KAAjB,IAAI,CAAC,YAAY,GAAK,QAAQ,EAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9D,IAAI,CAAC,QAAQ,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;QAC3G,IAAI,CAAC,SAAS,KAAd,IAAI,CAAC,SAAS,GAAK,EAAE,EAAC;QACtB,IAAI,CAAC,GAAG,KAAR,IAAI,CAAC,GAAG,GAAK,aAAa,EAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,mGAAmG;AACnG,MAAM,UAAU,GAAG,8DAA8D,CAAC;AAElF;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,KAAU;IACpC,MAAM,IAAI,GAAQ,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAS;QAC7B,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,GAAG,CAAC,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3D,GAAG,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACvD,GAAG,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACzD,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACtD,GAAG,CAAC,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1D,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC;IAClE,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAU,EAAE,OAAY;IAC/C,MAAM,IAAI,GAAQ,EAAE,CAAC;IACrB,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACnF,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC1C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;IACU,qBAAqB;;sBACxB,OAAO;;;;;;;;;;;sBADJ,qBACX,SAAQ,WAAU;;;gBAKT,iBAAY,IANV,mDAAqB,EAMR,OAAO,EAAC;gBAyWhC,uCAAuC;gBAC7B,iBAAY,GAAG,IAAI,GAAG,EAAiB,CAAC;YAsOpD,CAAC;YA9kBC,gBAAgB;YAChB,OAAO;gBACL,KAAK,CAAC,OAAO,EAAE,CAAC;gBAChB,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACvD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAC3D,sBAAsB,CACpB,YAAY;oBACV,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAM,YAAY,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;oBAC7E,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAC5C,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC;YAED,gBAAgB;YAChB,KAAK,CAAC,IAAI;gBACR,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,KAAK,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC1F,MAAM,IAAI,KAAK,CAAC,oDAAoD,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;gBACjG,CAAC;gBACD,MAAM,QAAQ,GAAG;oBACf,SAAS;oBACT,SAAS;oBACT,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC7E,CAAC;gBACF,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;oBAC3B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;wBACtC,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,OAAO,EAAE,6BAA6B,GAAG,aAAa,CAAC,CAAC;oBACzG,CAAC;gBACH,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,gBAAgB;YAChB,KAAK,CAAC,IAAI;gBACR,sBAAsB,CAAC,SAAS,CAAC,CAAC;gBAClC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;YACrB,CAAC;YAED;;eAEG;YACH,aAAa;gBACX,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;YAC7C,CAAC;YAED;;;eAGG;YACO,KAAK,CAAC,QAAQ,CAAC,KAAa;gBACpC,OAAO,WAAW,CAAC,GAAG,EAAE,CAAE,iBAAiB,EAAU,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YACnF,CAAC;YAED;;;;;eAKG;YACH,SAAS,CAAC,IAAY,EAAE,KAAa;gBACnC,MAAM,GAAG,GAAG,UAAU,EAAO,CAAC;gBAC9B,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpF,OAAO,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YACxF,CAAC;YAED;;;;;eAKG;YACO,KAAK,CAAC,QAAQ,CACtB,QAA6C,EAC7C,EAAU,EACV,GAAW,EACX,KAAa;gBAEb,MAAM,GAAG,GAAG,UAAU,EAAO,CAAC;gBAC9B,MAAM,iBAAiB,CAAS,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;oBAC3D,EAAE;oBACF,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE;oBAC1B,QAAQ;oBACR,YAAY,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;iBAC1B,CAAC,CAAC;YACZ,CAAC;YAED;;;;;;;;;;;;;;;eAeG;YACO,KAAK,CAAC,YAAY,CAAC,KAAY;gBACvC,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAChE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,8GAA8G;gBAC9G,gHAAgH;gBAChH,yEAAyE;gBACzE,MAAM,OAAO,GACX,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC,IAAI,iBAAiB;oBAChD,CAAC,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACpF,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAClF,MAAM,QAAQ,GAAI,OAAe,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;gBAC7G,MAAM,MAAM,GAAG,CAAC,OAAO,IAAI,QAAQ,GAAG,CAAC,IAAI,iBAAiB,CAAC;gBAC7D,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,CAAC;gBACxE,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;YAED;;;;;eAKG;YACH,0FAA0F;YAO1F,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,QAAgB;gBACzC,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC/C,MAAM,GAAG,GAAG,UAAU,EAAO,CAAC;gBAC9B,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC9C,MAAM,MAAM,GAAG,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC;gBAC5C,MAAM,IAAI,GAAqB,MAAM;oBACnC,CAAC,CAAC,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;oBACvF,CAAC,CAAC,SAAS,CAAC;gBACd,sGAAsG;gBACtG,IAAI,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBAC9C,MAAM,IAAI,SAAS,EAAE,CAAC;gBACxB,CAAC;gBACD,IAAI,EAAW,CAAC;gBAChB,IAAI,IAAI,IAAK,IAAY,CAAC,QAAQ,EAAE,CAAC;oBACnC,EAAE,GAAG,MAAO,IAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACrD,CAAC;qBAAM,CAAC;oBACN,qEAAqE;oBACrE,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAC;oBAC7B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBAC1B,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC,CAAC;oBAClC,EAAE,GAAG,KAAK,CAAC;gBACb,CAAC;gBACD,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,MAAM,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAS,CAAC,CAAC;oBAC7E,MAAM,IAAI,kBAAkB,EAAE,CAAC;gBACjC,CAAC;gBACD,wGAAwG;gBACxG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvE,OAAO,IAAI,CAAC,QAAQ,CAAC;oBACnB,QAAQ,EAAE,OAAO;oBACjB,WAAW,EAAE,UAAU;oBACvB,KAAK,EAAE,UAAU;oBACjB,aAAa,EAAE,KAAK,CAAC,UAAU,EAAE;oBACjC,GAAG,EAAE,CAAC,KAAK,CAAC;oBACZ,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;YAED;;;;;;;eAOG;YACH,0FAA0F;YAO1F,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAc,EAAE,OAAa;gBAC3E,MAAM,GAAG,GAAG,UAAU,EAAO,CAAC;gBAC9B,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC;oBACjC,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBACjD,CAAC;gBACD,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;gBAC1C,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;gBACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBACjD,4FAA4F;gBAC5F,IAAI,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;oBACxB,MAAM,IAAI,aAAa,EAAE,CAAC;gBAC5B,CAAC;gBACD,IAAI,QAAQ,GAAG,KAAK,CAAC;gBACrB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACtB,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,kDAAkD;wBAClD,IAAI,CAAC,WAAW,CAAC;4BACf,QAAQ,EAAE,OAAO;4BACjB,WAAW,EAAE,UAAU;4BACvB,KAAK,EAAE,UAAU;4BACjB,aAAa,EAAE,IAAI;4BACnB,GAAG,EAAE,CAAC,KAAK,CAAC;yBACb,CAAC,CAAC;wBACH,yFAAyF;wBACzF,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;wBACvC,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;oBACzC,CAAC;oBACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;oBACzD,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;wBAChC,MAAM,IAAI,YAAY,EAAE,CAAC;oBAC3B,CAAC;oBACD,QAAQ,GAAG,IAAI,CAAC;gBAClB,CAAC;gBACD,MAAM,IAAI,GAAG;oBACX,QAAQ,EAAE,OAAO;oBACjB,WAAW,EAAE,UAAU;oBACvB,KAAK,EAAE,UAAU;oBACjB,aAAa,EAAE,QAAQ;oBACvB,GAAG,EAAE,CAAC,KAAK,CAAC;iBACb,CAAC;gBACF,mDAAmD;gBACnD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACvB,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;gBAClE,MAAM,IAAI,GAAS,MAAM,WAAW,CAAC,GAAG,EAAE,CACxC,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,UAAU,EAAS,EAAE,KAAK,CAAC,CAChF,CAAC;gBACF,MAAO,IAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC3C,MAAM,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC;gBACnC,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,EAAE;oBAC/C,OAAO,EAAE,GAAG;oBACZ,IAAI;oBACJ,QAAQ,EAAG,IAAY,CAAC,QAAQ,CAAC,MAAM;iBACjC,CAAC,CAAC;gBACV,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;oBACzC,OAAO,EAAE,GAAG;oBACZ,IAAI;oBACJ,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,GAAG,UAAU,QAAQ;oBAC9B,QAAQ;iBACF,CAAC,CAAC;gBACV,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBACrC,IAAI,MAAkB,CAAC;gBACvB,IAAI,CAAC;oBACH,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;oBACvC,MAAM,GAAG,CAAC;gBACZ,CAAC;gBACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;oBACrB,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBACrF,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrF,CAAC;gBACD,OAAO,MAAM,CAAC;YAChB,CAAC;YAED;;;;;;;eAOG;YAMH,KAAK,CAAC,iBAAiB,CAAC,KAAa;gBACnC,MAAM,GAAG,GAAG,UAAU,EAAO,CAAC;gBAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC/C,MAAM,MAAM,GAAuB,GAAG,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBACrG,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;oBACvC,OAAO;gBACT,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC5E,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;YAC7F,CAAC;YAED;;;;eAIG;YACO,KAAK,CAAC,eAAe,CAAC,UAAkB;gBAChD,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC/E,IAAI,CAAC,KAAK;oBAAE,OAAO;gBACnB,+GAA+G;gBAC/G,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;YAC/F,CAAC;YAED;;;;;;eAMG;YACO,KAAK,CAAC,WAAW,CAAC,UAAkB,EAAE,MAA0B;gBACxE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACjD,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;gBACjC,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC5C,MAAM,KAAK,GAAG,KAAK,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC;gBAC3C,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;oBAC9C,OAAO,SAAS,CAAC;gBACnB,CAAC;gBACD,IAAI,MAAM,EAAE,CAAC;oBACX,IAAI,KAAK,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;wBAC9B,MAAM,IAAI,oBAAoB,EAAE,CAAC;oBACnC,CAAC;oBACD,IAAI,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC;wBACxB,MAAM,IAAI,UAAU,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,CAAC;oBACpE,CAAC;gBACH,CAAC;gBACD,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC;oBACpD,IAAI,MAAM;wBAAE,MAAM,IAAI,SAAS,EAAE,CAAC;oBAClC,OAAO,SAAS,CAAC;gBACnB,CAAC;gBACD,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,yCAAyC;oBACzC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,UAAU,EAAS,CAAC,CAAC;oBACpG,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;oBACtC,IAAI,CAAC;wBACH,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5C,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,wFAAwF;wBACxF,IAAI,MAAM;4BAAE,MAAM,GAAG,CAAC;wBACtB,OAAO,SAAS,CAAC;oBACnB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAS,CAAC,CAAC;gBAC3E,CAAC;gBACD,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5F,CAAC;YAED;;;;;;eAMG;YACO,gBAAgB,CAAC,QAA6C,EAAE,EAAU,EAAE,GAAW,EAAE,KAAa;gBAC9G,MAAM,OAAO,GAAkB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC;qBACnE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,QAAQ,OAAO,EAAE,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,CAAC,CAAC;qBACvF,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC;YAKD;;eAEG;YACH,KAAK,CAAC,UAAU;gBACd,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;oBAC9B,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC;YAED;;;;eAIG;YAOH,KAAK,CAAC,MAAM,CAAC,KAAa;gBACxB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,EAAO,CAAC,CAAC;YACnD,CAAC;YAED;;;;;eAKG;YACO,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,GAAQ;gBAChD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACvD,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;YAChC,CAAC;YAED;;;;;eAKG;YACO,cAAc,CAAC,MAAwB,EAAE,GAAQ;gBACzD,OAAO,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAC,gBAAgB,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC;YACpG,CAAC;YAED;;;;;;eAMG;YACO,KAAK,CAAC,cAAc,CAAC,MAAuC,EAAE,GAAQ;gBAC9E,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC;oBACrC,MAAM,IAAI,UAAU,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;gBACtD,CAAC;gBACD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;oBACtC,MAAM,IAAI,oBAAoB,EAAE,CAAC;gBACnC,CAAC;gBACD,MAAM,WAAW,CAAC,KAAK,IAAI,EAAE;oBAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAChD,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,MAAM,IAAI,YAAY,EAAE,CAAC;oBAC3B,CAAC;oBACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC;oBAC1C,IAAI,KAAK,IAAI,KAAK,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC;wBAClC,MAAM,IAAI,oBAAoB,EAAE,CAAC;oBACnC,CAAC;oBACD,MAAM,KAAK,GAAQ,EAAE,CAAC;oBACtB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;wBAAE,KAAK,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvD,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC1B,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;oBAC5B,CAAC;oBACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM;wBAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAChE,CAAC,CAAC,CAAC;YACL,CAAC;YAED;;;eAGG;YAMH,KAAK,CAAC,aAAa,CAAC,KAAa;gBAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBAC/C,MAAM,WAAW,CAAC,KAAK,IAAI,EAAE;oBAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oBAC9C,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;wBAAE,OAAO;oBACjG,MAAM,IAAI,GAAS,MAAM,iBAAiB,EAAE;yBACzC,YAAY,EAAE;yBACd,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;yBAC/B,GAAG,EAAE;yBACL,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC1B,IAAI,CAAE,IAAY,EAAE,QAAQ,EAAE,WAAW,EAAE;wBAAE,OAAO;oBACpD,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAS,CAAC,CAAC;oBACzE,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE;wBACxC,KAAK,EAAE,UAAU;wBACjB,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;wBACnB,KAAK,EAAG,IAAY,CAAC,QAAQ,CAAC,SAAS;qBACxC,CAAC,CAAC;oBACH,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACxF,CAAC,CAAC,CAAC;YACL,CAAC;YAED;;;;;eAKG;YAMH,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,QAAgB;gBAC3C,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBACxD,MAAM,WAAW,CAAC,KAAK,IAAI,EAAE;oBAC3B,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;oBACjC,MAAM,IAAI,GAAS,MAAM,IAAI;yBAC1B,YAAY,EAAE;yBACd,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;yBACf,GAAG,EAAE;yBACL,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC1B,IAAI,CAAC,IAAI,IAAI,CAAE,IAAY,CAAC,QAAQ,IAAK,IAAY,CAAC,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;wBAC1F,MAAM,IAAI,YAAY,EAAE,CAAC;oBAC3B,CAAC;oBACD,wGAAwG;oBACxG,MAAM,MAAM,GAAG,iBAAiB,CAAM,cAAc,CAAC,CAAC;oBACtD,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;oBACpF,CAAC;oBACD,MAAO,IAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAC3C,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;oBAClB,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;oBACxC,iGAAiG;oBACjG,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAChD,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;wBAC5D,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;wBACpD,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;4BAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,EAAS,CAAC,CAAC;oBACtF,CAAC;oBACD,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,EAAE;wBAC/C,OAAO,EAAE,UAAU,EAAE;wBACrB,IAAI;wBACJ,QAAQ,EAAG,IAAY,CAAC,QAAQ,CAAC,MAAM;qBACjC,CAAC,CAAC;gBACZ,CAAC,CAAC,CAAC;YACL,CAAC;YAED;;;;;eAKG;YAMH,KAAK,CAAC,cAAc,CAAC,OAAe,EAAE,IAAY;gBAChD,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,MAAM,IAAI,GAAS,MAAM,GAAG,CAAC,cAAc,EAAE,CAAC;gBAC9C,MAAM,WAAW,CAAC,GAAG,EAAE,CAAE,IAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;gBACtE,sGAAsG;gBACtG,GAAG,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACrC,MAAM,iBAAiB,EAAE,CAAC,IAAI,CAAC,+BAA+B,EAAE;oBAC9D,OAAO,EAAE,GAAG;oBACZ,IAAI;oBACJ,QAAQ,EAAG,IAAY,CAAC,QAAQ,CAAC,MAAM;iBACjC,CAAC,CAAC;YACZ,CAAC;YAED;;;;eAIG;YAEH,KAAK,CAAC,eAAe,CAAC,GAAe;gBACnC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBACvD,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACrC,IAAI,CAAC;oBACH,MAAM,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;oBACzC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,OAAO,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpF,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;wBACjB,QAAQ,EAAE,GAAG,OAAO,WAAW,kBAAkB,CAAE,GAAW,EAAE,IAAI,IAAI,eAAe,CAAC,EAAE;qBAC3F,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED;;;eAGG;YAEH,KAAK,CAAC,cAAc,CAAC,GAAe;gBAClC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAClE,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC;gBAC7D,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACrC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;gBACxE,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBACvD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;wBACtC,gFAAgF;wBAChF,QAAQ,CAAC,GAAG,OAAO,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBAChF,OAAO;oBACT,CAAC;oBACD,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBACvC,QAAQ,CAAC,GAAG,QAAQ,mBAAmB,CAAC,CAAC;gBAC3C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;wBACzD,QAAQ,CAAC,GAAG,QAAQ,UAAU,kBAAkB,CAAC,KAAK,CAAC,UAAU,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBACvG,CAAC;oBAAC,MAAM,CAAC;wBACP,QAAQ,CAAC,GAAG,OAAO,WAAW,kBAAkB,CAAE,GAAW,EAAE,IAAI,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;oBAC7F,CAAC;gBACH,CAAC;YACH,CAAC;;;;iCA7cA,SAAS,CAAC;oBACT,EAAE,EAAE,kBAAkB;oBACtB,KAAK,EAAE,mCAAmC;oBAC1C,MAAM,EAAE,oCAAoC;oBAC5C,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE;iBACnD,CAAC;oCAiDD,SAAS,CAAC;oBACT,EAAE,EAAE,qBAAqB;oBACzB,KAAK,EAAE,sCAAsC;oBAC7C,MAAM,EAAE,uCAAuC;oBAC/C,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE;iBACtD,CAAC;6CAqFD,SAAS,CAAC;oBACT,EAAE,EAAE,8BAA8B;oBAClC,KAAK,EAAE,+CAA+C;oBACtD,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE;iBAC1D,CAAC;kCAoGD,SAAS,CAAC;oBACT,EAAE,EAAE,mBAAmB;oBACvB,KAAK,EAAE,oCAAoC;oBAC3C,MAAM,EAAE,qCAAqC;oBAC7C,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE;iBACpD,CAAC;yCAgED,SAAS,CAAC;oBACT,EAAE,EAAE,6BAA6B;oBACjC,KAAK,EAAE,2CAA2C;oBAClD,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE;iBACzD,CAAC;mCA4BD,SAAS,CAAC;oBACT,EAAE,EAAE,uBAAuB;oBAC3B,KAAK,EAAE,qCAAqC;oBAC5C,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE;iBACxD,CAAC;0CAyCD,SAAS,CAAC;oBACT,EAAE,EAAE,sBAAsB;oBAC1B,KAAK,EAAE,4CAA4C;oBACnD,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE;iBACvD,CAAC;2CAsBD,KAAK,CAAC,mBAAmB,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;0CAkBrD,KAAK,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;YAhbrD,gKAAM,KAAK,6DAqCV;YAiBD,yKAAM,QAAQ,6DA0Eb;YAeD,oMAAM,iBAAiB,6DAUtB;YA+FD,mKAAM,MAAM,6DAEX;YAkED,wLAAM,aAAa,6DAmBlB;YAaD,sKAAM,OAAO,6DAgCZ;YAaD,2LAAM,cAAc,6DAcnB;YAQD,8LAAM,eAAe,6DAWpB;YAOD,2LAAM,cAAc,6DAsBnB;;;QAjlBM,aAAU,GAAG,uBAAwB;;;SAJjC,qBAAqB"}
@@ -0,0 +1,36 @@
1
+ /** What an emailed link is for */
2
+ export type EmailTokenPurpose = "register" | "verify" | "recover";
3
+ /** Claims of an emailed token */
4
+ export interface EmailTokenClaims {
5
+ purpose: EmailTokenPurpose;
6
+ email: string;
7
+ sub?: string;
8
+ pwdAt?: number;
9
+ jti: string;
10
+ }
11
+ /** Default lifetimes in seconds */
12
+ export declare const EMAIL_TOKEN_TTL: Record<EmailTokenPurpose, number>;
13
+ /**
14
+ * Sign a purpose-scoped emailed token
15
+ * @param purpose - purpose
16
+ * @param claims - email, user and password timestamp
17
+ * @param claims.email - email of the token
18
+ * @param claims.sub - user id
19
+ * @param claims.pwdAt - password change timestamp
20
+ * @param ttl - lifetime in seconds
21
+ * @returns signed token
22
+ */
23
+ export declare function signEmailToken(purpose: EmailTokenPurpose, claims: {
24
+ email: string;
25
+ sub?: string;
26
+ pwdAt?: number;
27
+ }, ttl?: number): Promise<string>;
28
+ /**
29
+ * Verify an emailed token
30
+ * @param token - token from the link
31
+ * @param purpose - expected purpose
32
+ * @returns claims
33
+ * @throws TokenExpired if expired, TokenInvalid for any other problem
34
+ */
35
+ export declare function verifyEmailToken(token: string, purpose: EmailTokenPurpose): Promise<EmailTokenClaims>;
36
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/email/tokens.ts"],"names":[],"mappings":"AAIA,kCAAkC;AAClC,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;AAElE,iCAAiC;AACjC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,mCAAmC;AACnC,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAqD,CAAC;AAGpH;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvD,GAAG,GAAE,MAAiC,GACrC,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiB3G"}
@@ -0,0 +1,46 @@
1
+ import { getUuid } from "@webda/utils";
2
+ import { useCrypto } from "@webda/core";
3
+ import { TokenExpired, TokenInvalid } from "../errors.js";
4
+ /** Default lifetimes in seconds */
5
+ export const EMAIL_TOKEN_TTL = { register: 86400, verify: 86400, recover: 3600 };
6
+ const AUDIENCE = "webda-email";
7
+ /**
8
+ * Sign a purpose-scoped emailed token
9
+ * @param purpose - purpose
10
+ * @param claims - email, user and password timestamp
11
+ * @param claims.email - email of the token
12
+ * @param claims.sub - user id
13
+ * @param claims.pwdAt - password change timestamp
14
+ * @param ttl - lifetime in seconds
15
+ * @returns signed token
16
+ */
17
+ export async function signEmailToken(purpose, claims, ttl = EMAIL_TOKEN_TTL[purpose]) {
18
+ return useCrypto().jwtSign({ ...claims, purpose, jti: getUuid("base64") }, { audience: AUDIENCE, expiresIn: ttl });
19
+ }
20
+ /**
21
+ * Verify an emailed token
22
+ * @param token - token from the link
23
+ * @param purpose - expected purpose
24
+ * @returns claims
25
+ * @throws TokenExpired if expired, TokenInvalid for any other problem
26
+ */
27
+ export async function verifyEmailToken(token, purpose) {
28
+ if (typeof token !== "string") {
29
+ throw new TokenInvalid();
30
+ }
31
+ let claims;
32
+ try {
33
+ claims = await useCrypto().jwtVerify(token, { audience: AUDIENCE });
34
+ }
35
+ catch (err) {
36
+ if (err?.name === "TokenExpiredError") {
37
+ throw new TokenExpired();
38
+ }
39
+ throw new TokenInvalid();
40
+ }
41
+ if (!claims || typeof claims !== "object" || claims.purpose !== purpose || typeof claims.email !== "string") {
42
+ throw new TokenInvalid();
43
+ }
44
+ return claims;
45
+ }
46
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/email/tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAc1D,mCAAmC;AACnC,MAAM,CAAC,MAAM,eAAe,GAAsC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACpH,MAAM,QAAQ,GAAG,aAAa,CAAC;AAE/B;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA0B,EAC1B,MAAuD,EACvD,GAAG,GAAW,eAAe,CAAC,OAAO,CAAC;IAEtC,OAAO,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;AACrH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAa,EAAE,OAA0B;IAC9E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,YAAY,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,EAAE,IAAI,KAAK,mBAAmB,EAAE,CAAC;YACtC,MAAM,IAAI,YAAY,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,IAAI,YAAY,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5G,MAAM,IAAI,YAAY,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { WebdaError } from "@webda/core";
2
+ export { InvalidIdent, PasswordPolicyError, TokenInvalid } from "@webda/core";
3
+ /** An account already owns this email; log in to link (409) */
4
+ export declare class AccountExists extends WebdaError.HttpError {
5
+ /** @param message - error message */
6
+ constructor(message?: string);
7
+ }
8
+ /** The ident is already linked to another user (409) */
9
+ export declare class IdentLinkedElsewhere extends WebdaError.HttpError {
10
+ /** @param message - error message */
11
+ constructor(message?: string);
12
+ }
13
+ /** A v3 ident upgrades to a key another user already holds; resolve it manually (409) */
14
+ export declare class IdentConflict extends WebdaError.HttpError {
15
+ /** @param message - error message */
16
+ constructor(message?: string);
17
+ }
18
+ /** The last login method cannot be removed (409) */
19
+ export declare class LastLoginMethod extends WebdaError.HttpError {
20
+ /** @param message - error message */
21
+ constructor(message?: string);
22
+ }
23
+ /** Credentials are invalid (403) */
24
+ export declare class InvalidCredentials extends WebdaError.HttpError {
25
+ /** @param message - error message */
26
+ constructor(message?: string);
27
+ }
28
+ /** Registration is disabled (403) */
29
+ export declare class RegistrationDisabled extends WebdaError.HttpError {
30
+ /** @param message - error message */
31
+ constructor(message?: string);
32
+ }
33
+ /** The token has expired (410) */
34
+ export declare class TokenExpired extends WebdaError.HttpError {
35
+ /** @param message - error message */
36
+ constructor(message?: string);
37
+ }
38
+ /** Too many attempts (429) */
39
+ export declare class Throttled extends WebdaError.HttpError {
40
+ /** @param message - error message */
41
+ constructor(message?: string);
42
+ }
43
+ /** The email domain is not allowed for this provider (403) */
44
+ export declare class EmailDomainNotAllowed extends WebdaError.HttpError {
45
+ /** @param message - error message */
46
+ constructor(message?: string);
47
+ }
48
+ /** The request body must be JSON (415) */
49
+ export declare class UnsupportedMediaType extends WebdaError.HttpError {
50
+ /** @param message - error message */
51
+ constructor(message?: string);
52
+ }
53
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE9E,+DAA+D;AAC/D,qBAAa,aAAc,SAAQ,UAAU,CAAC,SAAS;IACrD,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAAyC,EAE7D;CACF;AAED,wDAAwD;AACxD,qBAAa,oBAAqB,SAAQ,UAAU,CAAC,SAAS;IAC5D,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAA0C,EAE9D;CACF;AAED,yFAAyF;AACzF,qBAAa,aAAc,SAAQ,UAAU,CAAC,SAAS;IACrD,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAA6D,EAEjF;CACF;AAED,oDAAoD;AACpD,qBAAa,eAAgB,SAAQ,UAAU,CAAC,SAAS;IACvD,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAA8C,EAElE;CACF;AAED,oCAAoC;AACpC,qBAAa,kBAAmB,SAAQ,UAAU,CAAC,SAAS;IAC1D,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAA8B,EAElD;CACF;AAED,qCAAqC;AACrC,qBAAa,oBAAqB,SAAQ,UAAU,CAAC,SAAS;IAC5D,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAAmC,EAEvD;CACF;AAED,kCAAkC;AAClC,qBAAa,YAAa,SAAQ,UAAU,CAAC,SAAS;IACpD,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAAwB,EAE5C;CACF;AAED,8BAA8B;AAC9B,qBAAa,SAAU,SAAQ,UAAU,CAAC,SAAS;IACjD,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAA4B,EAEhD;CACF;AAED,8DAA8D;AAC9D,qBAAa,qBAAsB,SAAQ,UAAU,CAAC,SAAS;IAC7D,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAAmC,EAEvD;CACF;AAED,0CAA0C;AAC1C,qBAAa,oBAAqB,SAAQ,UAAU,CAAC,SAAS;IAC5D,qCAAqC;IACrC,YAAY,OAAO,GAAE,MAAgD,EAEpE;CACF"}
package/lib/errors.js ADDED
@@ -0,0 +1,73 @@
1
+ import { WebdaError } from "@webda/core";
2
+ export { InvalidIdent, PasswordPolicyError, TokenInvalid } from "@webda/core";
3
+ /** An account already owns this email; log in to link (409) */
4
+ export class AccountExists extends WebdaError.HttpError {
5
+ /** @param message - error message */
6
+ constructor(message = "Account exists, log in to link") {
7
+ super(message, 409);
8
+ }
9
+ }
10
+ /** The ident is already linked to another user (409) */
11
+ export class IdentLinkedElsewhere extends WebdaError.HttpError {
12
+ /** @param message - error message */
13
+ constructor(message = "Ident is linked to another user") {
14
+ super(message, 409);
15
+ }
16
+ }
17
+ /** A v3 ident upgrades to a key another user already holds; resolve it manually (409) */
18
+ export class IdentConflict extends WebdaError.HttpError {
19
+ /** @param message - error message */
20
+ constructor(message = "Upgraded ident key already belongs to another user") {
21
+ super(message, 409);
22
+ }
23
+ }
24
+ /** The last login method cannot be removed (409) */
25
+ export class LastLoginMethod extends WebdaError.HttpError {
26
+ /** @param message - error message */
27
+ constructor(message = "Cannot remove the last login method") {
28
+ super(message, 409);
29
+ }
30
+ }
31
+ /** Credentials are invalid (403) */
32
+ export class InvalidCredentials extends WebdaError.HttpError {
33
+ /** @param message - error message */
34
+ constructor(message = "Invalid credentials") {
35
+ super(message, 403);
36
+ }
37
+ }
38
+ /** Registration is disabled (403) */
39
+ export class RegistrationDisabled extends WebdaError.HttpError {
40
+ /** @param message - error message */
41
+ constructor(message = "Registration is disabled") {
42
+ super(message, 403);
43
+ }
44
+ }
45
+ /** The token has expired (410) */
46
+ export class TokenExpired extends WebdaError.HttpError {
47
+ /** @param message - error message */
48
+ constructor(message = "Expired token") {
49
+ super(message, 410);
50
+ }
51
+ }
52
+ /** Too many attempts (429) */
53
+ export class Throttled extends WebdaError.HttpError {
54
+ /** @param message - error message */
55
+ constructor(message = "Too many attempts") {
56
+ super(message, 429);
57
+ }
58
+ }
59
+ /** The email domain is not allowed for this provider (403) */
60
+ export class EmailDomainNotAllowed extends WebdaError.HttpError {
61
+ /** @param message - error message */
62
+ constructor(message = "Email domain not allowed") {
63
+ super(message, 403);
64
+ }
65
+ }
66
+ /** The request body must be JSON (415) */
67
+ export class UnsupportedMediaType extends WebdaError.HttpError {
68
+ /** @param message - error message */
69
+ constructor(message = "Content-Type must be application/json") {
70
+ super(message, 415);
71
+ }
72
+ }
73
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE9E,+DAA+D;AAC/D,MAAM,OAAO,aAAc,SAAQ,UAAU,CAAC,SAAS;IACrD,qCAAqC;IACrC,YAAY,OAAO,GAAW,gCAAgC;QAC5D,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,wDAAwD;AACxD,MAAM,OAAO,oBAAqB,SAAQ,UAAU,CAAC,SAAS;IAC5D,qCAAqC;IACrC,YAAY,OAAO,GAAW,iCAAiC;QAC7D,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,yFAAyF;AACzF,MAAM,OAAO,aAAc,SAAQ,UAAU,CAAC,SAAS;IACrD,qCAAqC;IACrC,YAAY,OAAO,GAAW,oDAAoD;QAChF,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,oDAAoD;AACpD,MAAM,OAAO,eAAgB,SAAQ,UAAU,CAAC,SAAS;IACvD,qCAAqC;IACrC,YAAY,OAAO,GAAW,qCAAqC;QACjE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,oCAAoC;AACpC,MAAM,OAAO,kBAAmB,SAAQ,UAAU,CAAC,SAAS;IAC1D,qCAAqC;IACrC,YAAY,OAAO,GAAW,qBAAqB;QACjD,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,qCAAqC;AACrC,MAAM,OAAO,oBAAqB,SAAQ,UAAU,CAAC,SAAS;IAC5D,qCAAqC;IACrC,YAAY,OAAO,GAAW,0BAA0B;QACtD,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,kCAAkC;AAClC,MAAM,OAAO,YAAa,SAAQ,UAAU,CAAC,SAAS;IACpD,qCAAqC;IACrC,YAAY,OAAO,GAAW,eAAe;QAC3C,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,8BAA8B;AAC9B,MAAM,OAAO,SAAU,SAAQ,UAAU,CAAC,SAAS;IACjD,qCAAqC;IACrC,YAAY,OAAO,GAAW,mBAAmB;QAC/C,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,8DAA8D;AAC9D,MAAM,OAAO,qBAAsB,SAAQ,UAAU,CAAC,SAAS;IAC7D,qCAAqC;IACrC,YAAY,OAAO,GAAW,0BAA0B;QACtD,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF;AAED,0CAA0C;AAC1C,MAAM,OAAO,oBAAqB,SAAQ,UAAU,CAAC,SAAS;IAC5D,qCAAqC;IACrC,YAAY,OAAO,GAAW,uCAAuC;QACnE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACtB,CAAC;CACF"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ export * from "./errors.js";
2
+ export * from "./throttle.js";
3
+ export * from "./provider.js";
4
+ export * from "./authentication.service.js";
5
+ export * from "./email/tokens.js";
6
+ export * from "./email/emailpassword.service.js";
7
+ export * from "./oauth/oauth.service.js";
8
+ export * from "./compat/upgrade.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,9 @@
1
+ export * from "./errors.js";
2
+ export * from "./throttle.js";
3
+ export * from "./provider.js";
4
+ export * from "./authentication.service.js";
5
+ export * from "./email/tokens.js";
6
+ export * from "./email/emailpassword.service.js";
7
+ export * from "./oauth/oauth.service.js";
8
+ export * from "./compat/upgrade.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,293 @@
1
+ import { type AsyncEventUnknown, type AuthResult, type ProviderInfo, type ResolvedIdentity, Service, ServiceParameters, type WebContext } from "@webda/core";
2
+ import { type AuthProvider } from "../provider.js";
3
+ /**
4
+ * Credentials as returned by an OAuth token endpoint (google-auth-library `Credentials` shape): `id_token`,
5
+ * `access_token`, `refresh_token`, `expiry_date`, `token_type`, `scope`... Values are not typed by the schema
6
+ * (providers send nulls); providers check what they use.
7
+ */
8
+ export interface OAuthTokens {
9
+ /** Any provider field */
10
+ [key: string]: any;
11
+ }
12
+ /**
13
+ * Input of the `Auth.<Provider>.Token` operations: `token`, or the provider credentials `tokens`
14
+ * @WebdaSchema
15
+ */
16
+ export interface OAuthTokenRequest {
17
+ /**
18
+ * Token issued by the provider to the client (an ID token for OpenID Connect providers)
19
+ */
20
+ token?: string;
21
+ /**
22
+ * Credentials obtained by the client from the provider (v3 body; its `id_token` is verified)
23
+ */
24
+ tokens?: OAuthTokens;
25
+ }
26
+ /** Parameters of an authorization request */
27
+ export interface OAuthAuthorizationRequest {
28
+ /** Random state to send back on the callback */
29
+ state: string;
30
+ /** Callback url */
31
+ redirectUri: string;
32
+ /** Scopes to request */
33
+ scope: string[];
34
+ /** PKCE code challenge (base64url SHA-256 of the verifier) */
35
+ codeChallenge: string;
36
+ /** PKCE method */
37
+ codeChallengeMethod: "S256";
38
+ /** OpenID Connect nonce: the ID token of the callback must carry it */
39
+ nonce: string;
40
+ }
41
+ /** Parameters of a code exchange */
42
+ export interface OAuthCallbackRequest {
43
+ /** Authorization code */
44
+ code: string;
45
+ /** redirect_uri of the authorization request */
46
+ redirectUri: string;
47
+ /** PKCE code verifier */
48
+ codeVerifier: string;
49
+ /** Nonce of the authorization request: providers returning an ID token must check it */
50
+ nonce: string;
51
+ }
52
+ /** Browser redirects of the OAuth callback */
53
+ export interface OAuthRedirects {
54
+ /**
55
+ * Where a successful login lands when the login did not carry an allowed `redirect` parameter
56
+ * @default "/"
57
+ */
58
+ success?: string;
59
+ /**
60
+ * Where a failed login or callback lands, with `?reason=<CODE>` (required)
61
+ */
62
+ failure?: string;
63
+ }
64
+ /** OAuthProvider parameters */
65
+ export declare class OAuthProviderParameters extends ServiceParameters {
66
+ /**
67
+ * Route prefix of the login (`<url>`) and callback (`<url>/callback`) routes
68
+ * @default "/auth/<providerName>"
69
+ */
70
+ url?: string;
71
+ /**
72
+ * OAuth client id
73
+ */
74
+ client_id: string;
75
+ /**
76
+ * OAuth client secret
77
+ */
78
+ client_secret?: string;
79
+ /**
80
+ * Scopes requested from the provider (the default depends on the provider)
81
+ */
82
+ scope?: string[];
83
+ /**
84
+ * Callback url registered at the provider
85
+ * @default "<absolute url of the request>/callback"; set it explicitly behind a proxy
86
+ */
87
+ redirect_uri?: string;
88
+ /**
89
+ * Allowed post-login targets for the `redirect` query parameter of the login route: absolute http(s) urls, a
90
+ * target matches when it has the same origin and its path is the listed path or below it
91
+ * @default []
92
+ */
93
+ authorized_uris?: string[];
94
+ /**
95
+ * Browser redirects of the callback
96
+ */
97
+ redirects?: OAuthRedirects;
98
+ /** Only these email domains may use this provider (see ProviderEmailPolicy) */
99
+ allowedEmailDomains?: string[];
100
+ /** Whether the verification of the email is believed (see ProviderEmailPolicy) */
101
+ trustEmailVerification?: boolean | string[];
102
+ /**
103
+ * @param params - raw parameters
104
+ * @returns this
105
+ */
106
+ load(params?: any): this;
107
+ }
108
+ /** Pending login, kept in an encrypted cookie between the login and the callback */
109
+ interface PendingLogin {
110
+ /** Provider that started it */
111
+ provider: string;
112
+ /** Random state sent to the provider */
113
+ state: string;
114
+ /** PKCE code verifier */
115
+ verifier: string;
116
+ /** OpenID Connect nonce */
117
+ nonce: string;
118
+ /** Post-login target, already checked against authorized_uris */
119
+ redirect?: string;
120
+ /** redirect_uri sent to the provider: the code exchange must use the same */
121
+ redirectUri: string;
122
+ /** Expiry timestamp (ms) */
123
+ expires: number;
124
+ }
125
+ /**
126
+ * Loggable reason of an error: library messages may contain tokens or their payload, so only a short code or the
127
+ * error class name is kept
128
+ * @param err - any error
129
+ * @returns a reason without any part of the message
130
+ */
131
+ export declare function safeErrorReason(err: any): string;
132
+ /**
133
+ * Keep only the known credentials keys, as bounded strings or finite numbers
134
+ * @param tokens - client provided credentials
135
+ * @returns the sanitised credentials
136
+ */
137
+ export declare function sanitizeTokens(tokens: OAuthTokens): OAuthTokens;
138
+ /**
139
+ * Base of the OAuth 2.0 / OpenID Connect login providers
140
+ *
141
+ * Exposes, under `url` (default `/auth/<providerName>`):
142
+ * - `GET <url>{?redirect}`: starts a login with a random `state`, a PKCE (S256) verifier and an OpenID `nonce`, kept
143
+ * in a dedicated encrypted cookie (10 min, HttpOnly, SameSite=Lax, path `url`), then redirects to the provider;
144
+ * `redirect` must match `authorized_uris`
145
+ * - `GET <url>/callback`: consumes that cookie, checks the state, exchanges the code (`handleCallback`) and hands
146
+ * the identity to `Authentication.complete()`; never throws, failures go to `redirects.failure?reason=<CODE>`
147
+ * - operation `Auth.<Provider>.Token` (`POST auth/<providerName>/token`, JSON body `{ token }` or `{ tokens }`) for
148
+ * non-browser clients; it never links an identity to the session user
149
+ *
150
+ * Subclasses implement `providerName`, `getAuthorizationUrl`, `handleCallback` and `handleToken`; the provider of the
151
+ * returned identities is always forced to `providerName`.
152
+ */
153
+ export declare abstract class OAuthProvider<T extends OAuthProviderParameters = OAuthProviderParameters, E extends AsyncEventUnknown = {}> extends Service<T, E> implements AuthProvider {
154
+ static Parameters: typeof OAuthProviderParameters;
155
+ /** Unique provider name, used in ident keys ("google") */
156
+ abstract readonly providerName: string;
157
+ /**
158
+ * Build the authorization url of the provider, sending the PKCE challenge and the nonce
159
+ * @param request - authorization request
160
+ * @returns the url to redirect the browser to
161
+ */
162
+ abstract getAuthorizationUrl(request: OAuthAuthorizationRequest): string | Promise<string>;
163
+ /**
164
+ * Exchange an authorization code (with the PKCE verifier) and verify the result, including the nonce of an ID
165
+ * token
166
+ * @param request - code exchange
167
+ * @returns the identity proven by the provider
168
+ * @throws an HttpError (for example TokenInvalid) whose code is used as the failure reason
169
+ */
170
+ abstract handleCallback(request: OAuthCallbackRequest): Promise<ResolvedIdentity>;
171
+ /**
172
+ * Verify a token presented by a non-browser client
173
+ * @param request - `token` and/or `tokens` (at least one is present)
174
+ * @returns the identity proven by the provider
175
+ * @throws TokenInvalid when the token cannot be verified
176
+ */
177
+ abstract handleToken(request: OAuthTokenRequest): Promise<ResolvedIdentity>;
178
+ /**
179
+ * Called after a successful `Authentication.complete()` (status ok or mfa_required)
180
+ * @param _identity - the identity
181
+ * @param _result - the result
182
+ * @param _source - browser callback or token operation
183
+ * @param _request - the token operation request (token operation only)
184
+ */
185
+ protected onAuthenticated(_identity: ResolvedIdentity, _result: AuthResult, _source: "callback" | "token", _request?: OAuthTokenRequest): Promise<void>;
186
+ /**
187
+ * @returns false when the provider works without client secret (public clients)
188
+ */
189
+ protected requiresClientSecret(): boolean;
190
+ /**
191
+ * @returns the name of the pending login cookie
192
+ */
193
+ protected getCookieName(): string;
194
+ /** @override */
195
+ resolve(): this;
196
+ /** @override */
197
+ init(): Promise<this>;
198
+ /**
199
+ * Register `Auth.<Provider>.Token`: its id and path depend on the provider name
200
+ * @override
201
+ */
202
+ initOperations(): void;
203
+ /**
204
+ * @returns public info
205
+ */
206
+ getPublicInfo(): ProviderInfo;
207
+ /**
208
+ * Log in with a token obtained by the client from the provider
209
+ *
210
+ * Requires a JSON request (a cross-site form or `text/plain` POST is refused). A request carrying a logged-in
211
+ * session never links the identity to that user: an identity owned by another user is refused
212
+ * (IDENT_LINKED_ELSEWHERE), a new or unowned one gets a fresh session.
213
+ * @param token - token (an ID token for OpenID Connect providers)
214
+ * @param tokens - credentials obtained from the provider (v3 body)
215
+ * @returns the auth result
216
+ */
217
+ token(token?: string, tokens?: OAuthTokens): Promise<AuthResult>;
218
+ /**
219
+ * Refuse a request that is not JSON: cross-site requests can only send form or `text/plain` bodies without a
220
+ * preflight
221
+ * @param ctx - operation context
222
+ * @throws UnsupportedMediaType when the HTTP request is not `application/json`
223
+ */
224
+ protected requireJson(ctx: any): void;
225
+ /**
226
+ * The token operation never links: with a logged-in session, an identity owned by another user is refused and a
227
+ * new or unowned one starts a fresh session
228
+ * @param ctx - operation context
229
+ * @param identity - verified identity
230
+ * @throws IdentLinkedElsewhere when the identity belongs to another user than the session one
231
+ */
232
+ protected leaveForeignSession(ctx: any, identity: ResolvedIdentity): Promise<void>;
233
+ /**
234
+ * @param identity - identity returned by the subclass
235
+ * @returns the identity
236
+ * @throws TokenInvalid when it has no subject
237
+ */
238
+ protected checkIdentity(identity: ResolvedIdentity): ResolvedIdentity;
239
+ /**
240
+ * @param identity - identity returned by the subclass
241
+ * @returns the identity, always attributed to this provider
242
+ */
243
+ protected ownIdentity(identity: ResolvedIdentity): ResolvedIdentity;
244
+ /**
245
+ * Check a post-login target against `authorized_uris`: same origin, and the listed path or below it; an encoded
246
+ * slash or backslash in the path is refused
247
+ * @param redirect - candidate
248
+ * @returns the normalised url, undefined when not allowed
249
+ */
250
+ protected allowedRedirect(redirect: unknown): string | undefined;
251
+ /**
252
+ * @param ctx - web context
253
+ * @returns the callback url sent to the provider
254
+ */
255
+ protected getRedirectUri(ctx: WebContext): string;
256
+ /**
257
+ * Set (or clear, without value) the pending login cookie, scoped to the callback path: the path of the effective
258
+ * redirect_uri, which includes any deployment prefix (API Gateway stage, path-stripping proxy) the routes do not see
259
+ * @param ctx - web context
260
+ * @param redirectUri - callback url
261
+ * @param value - encrypted pending login
262
+ */
263
+ protected sendPendingCookie(ctx: WebContext, redirectUri: string, value?: string): void;
264
+ /**
265
+ * Read and clear the pending login cookie
266
+ * @param ctx - web context
267
+ * @returns the pending login, undefined when absent, invalid, expired or of another provider
268
+ */
269
+ protected consumePending(ctx: WebContext): Promise<PendingLogin | undefined>;
270
+ /**
271
+ * Redirect without caching
272
+ * @param ctx - web context
273
+ * @param url - target
274
+ */
275
+ protected redirect(ctx: WebContext, url: string): void;
276
+ /**
277
+ * @param ctx - web context
278
+ * @param reason - failure code
279
+ */
280
+ protected fail(ctx: WebContext, reason: string): void;
281
+ /**
282
+ * Start a login: redirect the browser to the provider
283
+ * @param ctx - web context
284
+ */
285
+ login(ctx: WebContext): Promise<void>;
286
+ /**
287
+ * Provider callback: verify the state, exchange the code, complete the login and redirect; never throws
288
+ * @param ctx - web context
289
+ */
290
+ callback(ctx: WebContext): Promise<void>;
291
+ }
292
+ export {};
293
+ //# sourceMappingURL=oauth.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.service.d.ts","sourceRoot":"","sources":["../../src/oauth/oauth.service.ts"],"names":[],"mappings":"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"}