payload-auth 1.7.1 → 1.8.0-canary.2

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 (69) hide show
  1. package/dist/better-auth/adapter/index.d.ts +1 -1
  2. package/dist/better-auth/adapter/index.d.ts.map +1 -1
  3. package/dist/better-auth/adapter/index.js +57 -7
  4. package/dist/better-auth/adapter/transform/index.d.ts.map +1 -1
  5. package/dist/better-auth/adapter/transform/index.js +47 -7
  6. package/dist/better-auth/generated-types.d.ts +13 -11
  7. package/dist/better-auth/generated-types.d.ts.map +1 -1
  8. package/dist/better-auth/generated-types.js +1 -1
  9. package/dist/better-auth/plugin/index.d.ts.map +1 -1
  10. package/dist/better-auth/plugin/index.js +3 -2
  11. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts.map +1 -1
  12. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js +3 -2
  13. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js +5 -5
  14. package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts.map +1 -1
  15. package/dist/better-auth/plugin/lib/build-collections/users/index.js +31 -1
  16. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts +3 -1
  17. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts.map +1 -1
  18. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js +17 -8
  19. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/apply-save-to-jwt-returned.d.ts +14 -0
  20. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/apply-save-to-jwt-returned.d.ts.map +1 -0
  21. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/apply-save-to-jwt-returned.js +38 -0
  22. package/dist/better-auth/plugin/payload/components/login-form/alternative-methods.d.ts +4 -0
  23. package/dist/better-auth/plugin/payload/components/login-form/alternative-methods.d.ts.map +1 -0
  24. package/dist/better-auth/plugin/payload/components/login-form/alternative-methods.js +197 -0
  25. package/dist/better-auth/plugin/payload/components/login-form/context.d.ts +49 -0
  26. package/dist/better-auth/plugin/payload/components/login-form/context.d.ts.map +1 -0
  27. package/dist/better-auth/plugin/payload/components/login-form/context.js +94 -0
  28. package/dist/better-auth/plugin/payload/components/login-form/credentials-form.d.ts +4 -0
  29. package/dist/better-auth/plugin/payload/components/login-form/credentials-form.d.ts.map +1 -0
  30. package/dist/better-auth/plugin/payload/components/login-form/credentials-form.js +167 -0
  31. package/dist/better-auth/plugin/payload/components/login-form/index.d.ts +4 -0
  32. package/dist/better-auth/plugin/payload/components/login-form/index.d.ts.map +1 -0
  33. package/dist/better-auth/plugin/payload/components/login-form/index.js +6 -0
  34. package/dist/better-auth/plugin/payload/components/{social-provider-buttons → login-form}/index.scss +17 -12
  35. package/dist/better-auth/plugin/payload/components/passkeys/add-button.js +2 -2
  36. package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts +1 -0
  37. package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts.map +1 -1
  38. package/dist/better-auth/plugin/payload/components/rsc-redirect.js +7 -2
  39. package/dist/better-auth/plugin/payload/exports/client.d.ts +3 -2
  40. package/dist/better-auth/plugin/payload/exports/client.d.ts.map +1 -1
  41. package/dist/better-auth/plugin/payload/exports/client.js +4 -3
  42. package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts +11 -7
  43. package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts.map +1 -1
  44. package/dist/better-auth/plugin/payload/views/admin-login/client.js +17 -193
  45. package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts.map +1 -1
  46. package/dist/better-auth/plugin/payload/views/admin-login/index.js +25 -8
  47. package/dist/better-auth/plugin/payload/views/admin-signup/client.d.ts +6 -0
  48. package/dist/better-auth/plugin/payload/views/admin-signup/client.d.ts.map +1 -1
  49. package/dist/better-auth/plugin/payload/views/admin-signup/client.js +12 -10
  50. package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts.map +1 -1
  51. package/dist/better-auth/plugin/payload/views/admin-signup/index.js +22 -3
  52. package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts.map +1 -1
  53. package/dist/better-auth/plugin/payload/views/forgot-password/client.js +17 -5
  54. package/dist/better-auth/plugin/payload/views/reset-password/index.js +2 -2
  55. package/dist/better-auth/scripts/generate-types.js +2 -2
  56. package/dist/index.js +2 -2
  57. package/dist/shared/form/fields/text-field.d.ts +2 -1
  58. package/dist/shared/form/fields/text-field.d.ts.map +1 -1
  59. package/dist/shared/form/fields/text-field.js +6 -3
  60. package/dist/shared/form/validation.d.ts +9 -69
  61. package/dist/shared/form/validation.d.ts.map +1 -1
  62. package/dist/shared/form/validation.js +11 -24
  63. package/package.json +40 -13
  64. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts +0 -16
  65. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts.map +0 -1
  66. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js +0 -41
  67. package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.d.ts +0 -16
  68. package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.d.ts.map +0 -1
  69. package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.js +0 -144
@@ -1 +1 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/shared/form/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAQvB;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAA;AAMlD,eAAO,MAAM,UAAU,GAAI,iBAAwB;IAAE,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,8CAMtF,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,iBAAwB;IAAE,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,8CAMzF,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,4BAAuC;IAAE,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,gBAI5H,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,iBAAwB;IAAE,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,gBAIhG,CAAA;AAMD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GAAI,kBAAsB;IAAE,CAAC,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;;;;;;;;;;;EAS7F,CAAA;AAMN,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,YAAyB,CAAA;AACjE,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,EAAE,2BAAoC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,YACjD,CAAA;AAM/E,KAAK,gBAAgB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhE,eAAO,MAAM,iBAAiB,GAAI,0DAK/B;IACD,CAAC,EAAE,SAAS,CAAA;IACZ,SAAS,EAAE,OAAO,GAAG,UAAU,GAAG,iBAAiB,CAAA;IACnD,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;CACpC;;;;;;;;;EA8BG,CAAA;AAEJ,eAAO,MAAM,kBAAkB,GAAI,gDAAgE;IAAE,CAAC,EAAE,SAAS,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe/K,CAAA"}
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/shared/form/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAQvB;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,MAAM,CAAA;AAMlD,eAAO,MAAM,UAAU,GAAI,iBAAwB;IAAE,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,gBAMtF,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,iBAAwB;IAAE,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,gBAMzF,CAAA;AAED,eAAO,MAAM,aAAa,GAAI,4BAAuC;IAAE,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,gBAI5H,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,iBAAwB;IAAE,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,gBAIhG,CAAA;AAMD;;;GAGG;AACH,eAAO,MAAM,wBAAwB,GAAI,kBAAsB;IAAE,CAAC,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE;;;iBAS7F,CAAA;AAMN,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,YAAyB,CAAA;AACjE,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,EAAE,2BAAoC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,YACjD,CAAA;AAM/E,KAAK,gBAAgB,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhE,eAAO,MAAM,iBAAiB,GAAI,0DAK/B;IACD,CAAC,EAAE,SAAS,CAAA;IACZ,SAAS,EAAE,OAAO,GAAG,UAAU,GAAG,iBAAiB,CAAA;IACnD,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;CACpC;;;iBA6BG,CAAA;AAEJ,eAAO,MAAM,kBAAkB,GAAI,gDAAgE;IAAE,CAAC,EAAE,SAAS,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;CAAE;;;;;;iBAe/K,CAAA"}
@@ -56,29 +56,16 @@ export const createLoginSchema = ({ t, loginType, canLoginWithUsername = false,
56
56
  minLength: 5,
57
57
  maxLength: 128
58
58
  } })=>z.object({
59
- login: z.string().refine((val)=>{
60
- if (!val) return false;
61
- if (loginType === 'email') return isValidEmail(val);
62
- if (loginType === 'username') return isValidUsername(val, usernameSettings);
63
- return isValidEmail(val) || isValidUsername(val, usernameSettings);
64
- }, (val)=>{
65
- if (!val) return {
66
- message: t('validation:required')
67
- };
68
- const isProbablyEmail = val.includes('@') || !canLoginWithUsername;
69
- if (loginType === 'email') {
70
- return {
71
- message: t('authentication:emailNotValid') || 'Email is not valid'
72
- };
73
- }
74
- if (loginType === 'username') {
75
- return {
76
- message: t('authentication:usernameNotValid') || 'Username is not valid'
77
- };
78
- }
79
- return {
80
- message: isProbablyEmail ? t('authentication:emailNotValid') || 'Email is not valid' : t('authentication:usernameNotValid') || 'Username is not valid'
81
- };
59
+ login: z.string().superRefine((val, ctx)=>{
60
+ const emailValid = isValidEmail(val);
61
+ const usernameValid = isValidUsername(val, usernameSettings);
62
+ const passes = loginType === 'email' ? emailValid : loginType === 'username' ? usernameValid : emailValid || usernameValid;
63
+ if (passes) return;
64
+ const message = !val ? t('validation:required') : loginType === 'email' ? t('authentication:emailNotValid') || 'Email is not valid' : loginType === 'username' ? t('authentication:usernameNotValid') || 'Username is not valid' : val.includes('@') || !canLoginWithUsername ? t('authentication:emailNotValid') || 'Email is not valid' : t('authentication:usernameNotValid') || 'Username is not valid';
65
+ ctx.addIssue({
66
+ code: 'custom',
67
+ message: message || 'Invalid login value'
68
+ });
82
69
  }),
83
70
  password: passwordField({
84
71
  t
@@ -113,4 +100,4 @@ export const createSignupSchema = ({ t, requireUsername = false, requireConfirmP
113
100
  });
114
101
  };
115
102
 
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaGFyZWQvZm9ybS92YWxpZGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tICd6b2QnXG5cbmltcG9ydCB7IGVtYWlsUmVnZXgsIHVzZXJuYW1lUmVnZXggfSBmcm9tICdAL3NoYXJlZC91dGlscy9yZWdleCdcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUeXBlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogTWluaW1hbCB0cmFuc2xhdGlvbiBmdW5jdGlvbiB0eXBlIGV4dHJhY3RlZCBmcm9tIGBpMThuZXh0YC5cbiAqIEFjY2VwdHMgYSBrZXkgYW5kIHJldHVybnMgdGhlIHRyYW5zbGF0ZWQgc3RyaW5nLlxuICovXG5leHBvcnQgdHlwZSBUcmFuc2xhdGUgPSAoLi4uYXJnczogYW55W10pID0+IHN0cmluZ1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEZpZWxkIGJ1aWxkZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IGVtYWlsRmllbGQgPSAoeyB0LCByZXF1aXJlZCA9IHRydWUgfTogeyB0OiBUcmFuc2xhdGU7IHJlcXVpcmVkPzogYm9vbGVhbiB9KSA9PiB7XG4gIGxldCBzY2hlbWEgPSB6LnN0cmluZygpXG4gIGlmIChyZXF1aXJlZCkgc2NoZW1hID0gc2NoZW1hLm1pbigxLCB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykpXG4gIHJldHVybiBzY2hlbWEucmVmaW5lKCh2YWwpID0+IGVtYWlsUmVnZXgudGVzdCh2YWwpLCB7XG4gICAgbWVzc2FnZTogdCgnYXV0aGVudGljYXRpb246ZW1haWxOb3RWYWxpZCcpIHx8ICdFbWFpbCBpcyBub3QgdmFsaWQnXG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCB1c2VybmFtZUZpZWxkID0gKHsgdCwgcmVxdWlyZWQgPSB0cnVlIH06IHsgdDogVHJhbnNsYXRlOyByZXF1aXJlZD86IGJvb2xlYW4gfSkgPT4ge1xuICBsZXQgc2NoZW1hID0gei5zdHJpbmcoKVxuICBpZiAocmVxdWlyZWQpIHNjaGVtYSA9IHNjaGVtYS5taW4oMSwgdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpKVxuICByZXR1cm4gc2NoZW1hLnJlZmluZSgodmFsKSA9PiB1c2VybmFtZVJlZ2V4LnRlc3QodmFsKSwge1xuICAgIG1lc3NhZ2U6IHQoJ2F1dGhlbnRpY2F0aW9uOnVzZXJuYW1lTm90VmFsaWQnKSB8fCAnVXNlcm5hbWUgaXMgbm90IHZhbGlkJ1xuICB9KVxufVxuXG5leHBvcnQgY29uc3QgcGFzc3dvcmRGaWVsZCA9ICh7IHQsIHJlcXVpcmVkID0gdHJ1ZSwgbWluTGVuZ3RoID0gMSB9OiB7IHQ6IFRyYW5zbGF0ZTsgcmVxdWlyZWQ/OiBib29sZWFuOyBtaW5MZW5ndGg/OiBudW1iZXIgfSkgPT4ge1xuICBsZXQgc2NoZW1hID0gei5zdHJpbmcoKVxuICBpZiAocmVxdWlyZWQpIHNjaGVtYSA9IHNjaGVtYS5taW4obWluTGVuZ3RoLCB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykgfHwgJ1Bhc3N3b3JkIGlzIHJlcXVpcmVkJylcbiAgcmV0dXJuIHNjaGVtYVxufVxuXG5leHBvcnQgY29uc3QgY29uZmlybVBhc3N3b3JkRmllbGQgPSAoeyB0LCByZXF1aXJlZCA9IHRydWUgfTogeyB0OiBUcmFuc2xhdGU7IHJlcXVpcmVkPzogYm9vbGVhbiB9KSA9PiB7XG4gIGxldCBzY2hlbWEgPSB6LnN0cmluZygpXG4gIGlmIChyZXF1aXJlZCkgc2NoZW1hID0gc2NoZW1hLm1pbigxLCB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykgfHwgJ0NvbmZpcm0gcGFzc3dvcmQgaXMgcmVxdWlyZWQnKVxuICByZXR1cm4gc2NoZW1hXG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ29tcG9zYWJsZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFJldHVybnMgYSBab2Qgb2JqZWN0IHNjaGVtYSB3aXRoIGBwYXNzd29yZGAgYW5kIGBjb25maXJtUGFzc3dvcmRgIGZpZWxkc1xuICogYW5kIGEgcmVmaW5lbWVudCB0aGF0IGVuc3VyZXMgdGhleSBtYXRjaC5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhc3N3b3JkV2l0aENvbmZpcm1hdGlvbiA9ICh7IHQsIG1pbkxlbmd0aCA9IDEgfTogeyB0OiBUcmFuc2xhdGU7IG1pbkxlbmd0aD86IG51bWJlciB9KSA9PlxuICB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYXNzd29yZDogcGFzc3dvcmRGaWVsZCh7IHQsIG1pbkxlbmd0aCB9KSxcbiAgICAgIGNvbmZpcm1QYXNzd29yZDogY29uZmlybVBhc3N3b3JkRmllbGQoeyB0IH0pXG4gICAgfSlcbiAgICAucmVmaW5lKChkYXRhKSA9PiBkYXRhLnBhc3N3b3JkID09PSBkYXRhLmNvbmZpcm1QYXNzd29yZCwge1xuICAgICAgcGF0aDogWydjb25maXJtUGFzc3dvcmQnXSxcbiAgICAgIG1lc3NhZ2U6IHQoJ2ZpZWxkczpwYXNzd29yZHNEb05vdE1hdGNoJykgfHwgJ1Bhc3N3b3JkcyBkbyBub3QgbWF0Y2gnXG4gICAgfSlcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBVdGlsaXR5IHZhbGlkYXRvcnMgKG5vbuKAkVpvZCkg4oCUIGhhbmR5IGZvciBkeW5hbWljIGxvZ2luIGZpZWxkIGNoZWNrc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkRW1haWwgPSAodmFsOiBzdHJpbmcpID0+IGVtYWlsUmVnZXgudGVzdCh2YWwpXG5leHBvcnQgY29uc3QgaXNWYWxpZFVzZXJuYW1lID0gKHZhbDogc3RyaW5nLCB7IG1pbkxlbmd0aCA9IDUsIG1heExlbmd0aCA9IDEyOCB9OiB7IG1pbkxlbmd0aD86IG51bWJlcjsgbWF4TGVuZ3RoPzogbnVtYmVyIH0gPSB7fSkgPT5cbiAgdXNlcm5hbWVSZWdleC50ZXN0KHZhbCkgJiYgdmFsLmxlbmd0aCA+PSBtaW5MZW5ndGggJiYgdmFsLmxlbmd0aCA8PSBtYXhMZW5ndGhcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTY2hlbWEgYnVpbGRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG50eXBlIFVzZXJuYW1lU2V0dGluZ3MgPSB7IG1pbkxlbmd0aDogbnVtYmVyOyBtYXhMZW5ndGg6IG51bWJlciB9XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVMb2dpblNjaGVtYSA9ICh7XG4gIHQsXG4gIGxvZ2luVHlwZSxcbiAgY2FuTG9naW5XaXRoVXNlcm5hbWUgPSBmYWxzZSxcbiAgdXNlcm5hbWVTZXR0aW5ncyA9IHsgbWluTGVuZ3RoOiA1LCBtYXhMZW5ndGg6IDEyOCB9XG59OiB7XG4gIHQ6IFRyYW5zbGF0ZVxuICBsb2dpblR5cGU6ICdlbWFpbCcgfCAndXNlcm5hbWUnIHwgJ2VtYWlsT3JVc2VybmFtZSdcbiAgY2FuTG9naW5XaXRoVXNlcm5hbWU/OiBib29sZWFuXG4gIHVzZXJuYW1lU2V0dGluZ3M/OiBVc2VybmFtZVNldHRpbmdzXG59KSA9PlxuICB6Lm9iamVjdCh7XG4gICAgbG9naW46IHouc3RyaW5nKCkucmVmaW5lKFxuICAgICAgKHZhbCkgPT4ge1xuICAgICAgICBpZiAoIXZhbCkgcmV0dXJuIGZhbHNlXG4gICAgICAgIGlmIChsb2dpblR5cGUgPT09ICdlbWFpbCcpIHJldHVybiBpc1ZhbGlkRW1haWwodmFsKVxuICAgICAgICBpZiAobG9naW5UeXBlID09PSAndXNlcm5hbWUnKSByZXR1cm4gaXNWYWxpZFVzZXJuYW1lKHZhbCwgdXNlcm5hbWVTZXR0aW5ncylcbiAgICAgICAgcmV0dXJuIGlzVmFsaWRFbWFpbCh2YWwpIHx8IGlzVmFsaWRVc2VybmFtZSh2YWwsIHVzZXJuYW1lU2V0dGluZ3MpXG4gICAgICB9LFxuICAgICAgKHZhbCkgPT4ge1xuICAgICAgICBpZiAoIXZhbCkgcmV0dXJuIHsgbWVzc2FnZTogdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpIH1cblxuICAgICAgICBjb25zdCBpc1Byb2JhYmx5RW1haWwgPSB2YWwuaW5jbHVkZXMoJ0AnKSB8fCAhY2FuTG9naW5XaXRoVXNlcm5hbWVcblxuICAgICAgICBpZiAobG9naW5UeXBlID09PSAnZW1haWwnKSB7XG4gICAgICAgICAgcmV0dXJuIHsgbWVzc2FnZTogdCgnYXV0aGVudGljYXRpb246ZW1haWxOb3RWYWxpZCcpIHx8ICdFbWFpbCBpcyBub3QgdmFsaWQnIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb2dpblR5cGUgPT09ICd1c2VybmFtZScpIHtcbiAgICAgICAgICByZXR1cm4geyBtZXNzYWdlOiB0KCdhdXRoZW50aWNhdGlvbjp1c2VybmFtZU5vdFZhbGlkJykgfHwgJ1VzZXJuYW1lIGlzIG5vdCB2YWxpZCcgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBpc1Byb2JhYmx5RW1haWxcbiAgICAgICAgICAgID8gdCgnYXV0aGVudGljYXRpb246ZW1haWxOb3RWYWxpZCcpIHx8ICdFbWFpbCBpcyBub3QgdmFsaWQnXG4gICAgICAgICAgICA6IHQoJ2F1dGhlbnRpY2F0aW9uOnVzZXJuYW1lTm90VmFsaWQnKSB8fCAnVXNlcm5hbWUgaXMgbm90IHZhbGlkJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKSxcbiAgICBwYXNzd29yZDogcGFzc3dvcmRGaWVsZCh7IHQgfSlcbiAgfSlcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNpZ251cFNjaGVtYSA9ICh7IHQsIHJlcXVpcmVVc2VybmFtZSA9IGZhbHNlLCByZXF1aXJlQ29uZmlybVBhc3N3b3JkID0gZmFsc2UgfTogeyB0OiBUcmFuc2xhdGU7IHJlcXVpcmVVc2VybmFtZT86IGJvb2xlYW47IHJlcXVpcmVDb25maXJtUGFzc3dvcmQ/OiBib29sZWFuIH0pID0+IHtcbiAgY29uc3Qgc2NoZW1hID0gei5vYmplY3Qoe1xuICAgIG5hbWU6IHouc3RyaW5nKHsgbWVzc2FnZTogJ05hbWUgaXMgcmVxdWlyZWQnIH0pLm1pbigxKSxcbiAgICBlbWFpbDogZW1haWxGaWVsZCh7IHQgfSksXG4gICAgdXNlcm5hbWU6IHVzZXJuYW1lRmllbGQoeyB0LCByZXF1aXJlZDogcmVxdWlyZVVzZXJuYW1lIH0pLm9wdGlvbmFsKCksXG4gICAgcGFzc3dvcmQ6IHBhc3N3b3JkRmllbGQoeyB0IH0pLFxuICAgIGNvbmZpcm1QYXNzd29yZDogY29uZmlybVBhc3N3b3JkRmllbGQoeyB0LCByZXF1aXJlZDogcmVxdWlyZUNvbmZpcm1QYXNzd29yZCB9KS5vcHRpb25hbCgpXG4gIH0pXG5cbiAgaWYgKCFyZXF1aXJlQ29uZmlybVBhc3N3b3JkKSByZXR1cm4gc2NoZW1hXG5cbiAgcmV0dXJuIHNjaGVtYS5yZWZpbmUoKGRhdGEpID0+IGRhdGEucGFzc3dvcmQgPT09IGRhdGEuY29uZmlybVBhc3N3b3JkLCB7XG4gICAgcGF0aDogWydjb25maXJtUGFzc3dvcmQnXSxcbiAgICBtZXNzYWdlOiB0KCdmaWVsZHM6cGFzc3dvcmRzRG9Ob3RNYXRjaCcpIHx8ICdQYXNzd29yZHMgZG8gbm90IG1hdGNoJ1xuICB9KVxufVxuIl0sIm5hbWVzIjpbInoiLCJlbWFpbFJlZ2V4IiwidXNlcm5hbWVSZWdleCIsImVtYWlsRmllbGQiLCJ0IiwicmVxdWlyZWQiLCJzY2hlbWEiLCJzdHJpbmciLCJtaW4iLCJyZWZpbmUiLCJ2YWwiLCJ0ZXN0IiwibWVzc2FnZSIsInVzZXJuYW1lRmllbGQiLCJwYXNzd29yZEZpZWxkIiwibWluTGVuZ3RoIiwiY29uZmlybVBhc3N3b3JkRmllbGQiLCJwYXNzd29yZFdpdGhDb25maXJtYXRpb24iLCJvYmplY3QiLCJwYXNzd29yZCIsImNvbmZpcm1QYXNzd29yZCIsImRhdGEiLCJwYXRoIiwiaXNWYWxpZEVtYWlsIiwiaXNWYWxpZFVzZXJuYW1lIiwibWF4TGVuZ3RoIiwibGVuZ3RoIiwiY3JlYXRlTG9naW5TY2hlbWEiLCJsb2dpblR5cGUiLCJjYW5Mb2dpbldpdGhVc2VybmFtZSIsInVzZXJuYW1lU2V0dGluZ3MiLCJsb2dpbiIsImlzUHJvYmFibHlFbWFpbCIsImluY2x1ZGVzIiwiY3JlYXRlU2lnbnVwU2NoZW1hIiwicmVxdWlyZVVzZXJuYW1lIiwicmVxdWlyZUNvbmZpcm1QYXNzd29yZCIsIm5hbWUiLCJlbWFpbCIsInVzZXJuYW1lIiwib3B0aW9uYWwiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLENBQUMsUUFBUSxNQUFLO0FBRXZCLFNBQVNDLFVBQVUsRUFBRUMsYUFBYSxRQUFRLGlCQUFzQjtBQVloRSw4RUFBOEU7QUFDOUUsaUJBQWlCO0FBQ2pCLDhFQUE4RTtBQUU5RSxPQUFPLE1BQU1DLGFBQWEsQ0FBQyxFQUFFQyxDQUFDLEVBQUVDLFdBQVcsSUFBSSxFQUF3QztJQUNyRixJQUFJQyxTQUFTTixFQUFFTyxNQUFNO0lBQ3JCLElBQUlGLFVB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
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaGFyZWQvZm9ybS92YWxpZGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tICd6b2QnXG5cbmltcG9ydCB7IGVtYWlsUmVnZXgsIHVzZXJuYW1lUmVnZXggfSBmcm9tICdAL3NoYXJlZC91dGlscy9yZWdleCdcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUeXBlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogTWluaW1hbCB0cmFuc2xhdGlvbiBmdW5jdGlvbiB0eXBlIGV4dHJhY3RlZCBmcm9tIGBpMThuZXh0YC5cbiAqIEFjY2VwdHMgYSBrZXkgYW5kIHJldHVybnMgdGhlIHRyYW5zbGF0ZWQgc3RyaW5nLlxuICovXG5leHBvcnQgdHlwZSBUcmFuc2xhdGUgPSAoLi4uYXJnczogYW55W10pID0+IHN0cmluZ1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEZpZWxkIGJ1aWxkZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IGVtYWlsRmllbGQgPSAoeyB0LCByZXF1aXJlZCA9IHRydWUgfTogeyB0OiBUcmFuc2xhdGU7IHJlcXVpcmVkPzogYm9vbGVhbiB9KSA9PiB7XG4gIGxldCBzY2hlbWEgPSB6LnN0cmluZygpXG4gIGlmIChyZXF1aXJlZCkgc2NoZW1hID0gc2NoZW1hLm1pbigxLCB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykpXG4gIHJldHVybiBzY2hlbWEucmVmaW5lKCh2YWwpID0+IGVtYWlsUmVnZXgudGVzdCh2YWwpLCB7XG4gICAgbWVzc2FnZTogdCgnYXV0aGVudGljYXRpb246ZW1haWxOb3RWYWxpZCcpIHx8ICdFbWFpbCBpcyBub3QgdmFsaWQnXG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCB1c2VybmFtZUZpZWxkID0gKHsgdCwgcmVxdWlyZWQgPSB0cnVlIH06IHsgdDogVHJhbnNsYXRlOyByZXF1aXJlZD86IGJvb2xlYW4gfSkgPT4ge1xuICBsZXQgc2NoZW1hID0gei5zdHJpbmcoKVxuICBpZiAocmVxdWlyZWQpIHNjaGVtYSA9IHNjaGVtYS5taW4oMSwgdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpKVxuICByZXR1cm4gc2NoZW1hLnJlZmluZSgodmFsKSA9PiB1c2VybmFtZVJlZ2V4LnRlc3QodmFsKSwge1xuICAgIG1lc3NhZ2U6IHQoJ2F1dGhlbnRpY2F0aW9uOnVzZXJuYW1lTm90VmFsaWQnKSB8fCAnVXNlcm5hbWUgaXMgbm90IHZhbGlkJ1xuICB9KVxufVxuXG5leHBvcnQgY29uc3QgcGFzc3dvcmRGaWVsZCA9ICh7IHQsIHJlcXVpcmVkID0gdHJ1ZSwgbWluTGVuZ3RoID0gMSB9OiB7IHQ6IFRyYW5zbGF0ZTsgcmVxdWlyZWQ/OiBib29sZWFuOyBtaW5MZW5ndGg/OiBudW1iZXIgfSkgPT4ge1xuICBsZXQgc2NoZW1hID0gei5zdHJpbmcoKVxuICBpZiAocmVxdWlyZWQpIHNjaGVtYSA9IHNjaGVtYS5taW4obWluTGVuZ3RoLCB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykgfHwgJ1Bhc3N3b3JkIGlzIHJlcXVpcmVkJylcbiAgcmV0dXJuIHNjaGVtYVxufVxuXG5leHBvcnQgY29uc3QgY29uZmlybVBhc3N3b3JkRmllbGQgPSAoeyB0LCByZXF1aXJlZCA9IHRydWUgfTogeyB0OiBUcmFuc2xhdGU7IHJlcXVpcmVkPzogYm9vbGVhbiB9KSA9PiB7XG4gIGxldCBzY2hlbWEgPSB6LnN0cmluZygpXG4gIGlmIChyZXF1aXJlZCkgc2NoZW1hID0gc2NoZW1hLm1pbigxLCB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykgfHwgJ0NvbmZpcm0gcGFzc3dvcmQgaXMgcmVxdWlyZWQnKVxuICByZXR1cm4gc2NoZW1hXG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ29tcG9zYWJsZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFJldHVybnMgYSBab2Qgb2JqZWN0IHNjaGVtYSB3aXRoIGBwYXNzd29yZGAgYW5kIGBjb25maXJtUGFzc3dvcmRgIGZpZWxkc1xuICogYW5kIGEgcmVmaW5lbWVudCB0aGF0IGVuc3VyZXMgdGhleSBtYXRjaC5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhc3N3b3JkV2l0aENvbmZpcm1hdGlvbiA9ICh7IHQsIG1pbkxlbmd0aCA9IDEgfTogeyB0OiBUcmFuc2xhdGU7IG1pbkxlbmd0aD86IG51bWJlciB9KSA9PlxuICB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYXNzd29yZDogcGFzc3dvcmRGaWVsZCh7IHQsIG1pbkxlbmd0aCB9KSxcbiAgICAgIGNvbmZpcm1QYXNzd29yZDogY29uZmlybVBhc3N3b3JkRmllbGQoeyB0IH0pXG4gICAgfSlcbiAgICAucmVmaW5lKChkYXRhKSA9PiBkYXRhLnBhc3N3b3JkID09PSBkYXRhLmNvbmZpcm1QYXNzd29yZCwge1xuICAgICAgcGF0aDogWydjb25maXJtUGFzc3dvcmQnXSxcbiAgICAgIG1lc3NhZ2U6IHQoJ2ZpZWxkczpwYXNzd29yZHNEb05vdE1hdGNoJykgfHwgJ1Bhc3N3b3JkcyBkbyBub3QgbWF0Y2gnXG4gICAgfSlcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBVdGlsaXR5IHZhbGlkYXRvcnMgKG5vbuKAkVpvZCkg4oCUIGhhbmR5IGZvciBkeW5hbWljIGxvZ2luIGZpZWxkIGNoZWNrc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkRW1haWwgPSAodmFsOiBzdHJpbmcpID0+IGVtYWlsUmVnZXgudGVzdCh2YWwpXG5leHBvcnQgY29uc3QgaXNWYWxpZFVzZXJuYW1lID0gKHZhbDogc3RyaW5nLCB7IG1pbkxlbmd0aCA9IDUsIG1heExlbmd0aCA9IDEyOCB9OiB7IG1pbkxlbmd0aD86IG51bWJlcjsgbWF4TGVuZ3RoPzogbnVtYmVyIH0gPSB7fSkgPT5cbiAgdXNlcm5hbWVSZWdleC50ZXN0KHZhbCkgJiYgdmFsLmxlbmd0aCA+PSBtaW5MZW5ndGggJiYgdmFsLmxlbmd0aCA8PSBtYXhMZW5ndGhcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTY2hlbWEgYnVpbGRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG50eXBlIFVzZXJuYW1lU2V0dGluZ3MgPSB7IG1pbkxlbmd0aDogbnVtYmVyOyBtYXhMZW5ndGg6IG51bWJlciB9XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVMb2dpblNjaGVtYSA9ICh7XG4gIHQsXG4gIGxvZ2luVHlwZSxcbiAgY2FuTG9naW5XaXRoVXNlcm5hbWUgPSBmYWxzZSxcbiAgdXNlcm5hbWVTZXR0aW5ncyA9IHsgbWluTGVuZ3RoOiA1LCBtYXhMZW5ndGg6IDEyOCB9XG59OiB7XG4gIHQ6IFRyYW5zbGF0ZVxuICBsb2dpblR5cGU6ICdlbWFpbCcgfCAndXNlcm5hbWUnIHwgJ2VtYWlsT3JVc2VybmFtZSdcbiAgY2FuTG9naW5XaXRoVXNlcm5hbWU/OiBib29sZWFuXG4gIHVzZXJuYW1lU2V0dGluZ3M/OiBVc2VybmFtZVNldHRpbmdzXG59KSA9PlxuICB6Lm9iamVjdCh7XG4gICAgbG9naW46IHouc3RyaW5nKCkuc3VwZXJSZWZpbmUoKHZhbCwgY3R4KSA9PiB7XG4gICAgICBjb25zdCBlbWFpbFZhbGlkID0gaXNWYWxpZEVtYWlsKHZhbClcbiAgICAgIGNvbnN0IHVzZXJuYW1lVmFsaWQgPSBpc1ZhbGlkVXNlcm5hbWUodmFsLCB1c2VybmFtZVNldHRpbmdzKVxuXG4gICAgICBjb25zdCBwYXNzZXMgPVxuICAgICAgICBsb2dpblR5cGUgPT09ICdlbWFpbCdcbiAgICAgICAgICA/IGVtYWlsVmFsaWRcbiAgICAgICAgICA6IGxvZ2luVHlwZSA9PT0gJ3VzZXJuYW1lJ1xuICAgICAgICAgICAgPyB1c2VybmFtZVZhbGlkXG4gICAgICAgICAgICA6IGVtYWlsVmFsaWQgfHwgdXNlcm5hbWVWYWxpZFxuXG4gICAgICBpZiAocGFzc2VzKSByZXR1cm5cblxuICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgICF2YWxcbiAgICAgICAgICA/IHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKVxuICAgICAgICAgIDogbG9naW5UeXBlID09PSAnZW1haWwnXG4gICAgICAgICAgICA/IHQoJ2F1dGhlbnRpY2F0aW9uOmVtYWlsTm90VmFsaWQnKSB8fCAnRW1haWwgaXMgbm90IHZhbGlkJ1xuICAgICAgICAgICAgOiBsb2dpblR5cGUgPT09ICd1c2VybmFtZSdcbiAgICAgICAgICAgICAgPyB0KCdhdXRoZW50aWNhdGlvbjp1c2VybmFtZU5vdFZhbGlkJykgfHwgJ1VzZXJuYW1lIGlzIG5vdCB2YWxpZCdcbiAgICAgICAgICAgICAgOiB2YWwuaW5jbHVkZXMoJ0AnKSB8fCAhY2FuTG9naW5XaXRoVXNlcm5hbWVcbiAgICAgICAgICAgICAgICA/IHQoJ2F1dGhlbnRpY2F0aW9uOmVtYWlsTm90VmFsaWQnKSB8fCAnRW1haWwgaXMgbm90IHZhbGlkJ1xuICAgICAgICAgICAgICAgIDogdCgnYXV0aGVudGljYXRpb246dXNlcm5hbWVOb3RWYWxpZCcpIHx8ICdVc2VybmFtZSBpcyBub3QgdmFsaWQnXG5cbiAgICAgIGN0eC5hZGRJc3N1ZSh7IGNvZGU6ICdjdXN0b20nLCBtZXNzYWdlOiBtZXNzYWdlIHx8ICdJbnZhbGlkIGxvZ2luIHZhbHVlJyB9KVxuICAgIH0pLFxuICAgIHBhc3N3b3JkOiBwYXNzd29yZEZpZWxkKHsgdCB9KVxuICB9KVxuXG5leHBvcnQgY29uc3QgY3JlYXRlU2lnbnVwU2NoZW1hID0gKHsgdCwgcmVxdWlyZVVzZXJuYW1lID0gZmFsc2UsIHJlcXVpcmVDb25maXJtUGFzc3dvcmQgPSBmYWxzZSB9OiB7IHQ6IFRyYW5zbGF0ZTsgcmVxdWlyZVVzZXJuYW1lPzogYm9vbGVhbjsgcmVxdWlyZUNvbmZpcm1QYXNzd29yZD86IGJvb2xlYW4gfSkgPT4ge1xuICBjb25zdCBzY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogei5zdHJpbmcoeyBtZXNzYWdlOiAnTmFtZSBpcyByZXF1aXJlZCcgfSkubWluKDEpLFxuICAgIGVtYWlsOiBlbWFpbEZpZWxkKHsgdCB9KSxcbiAgICB1c2VybmFtZTogdXNlcm5hbWVGaWVsZCh7IHQsIHJlcXVpcmVkOiByZXF1aXJlVXNlcm5hbWUgfSkub3B0aW9uYWwoKSxcbiAgICBwYXNzd29yZDogcGFzc3dvcmRGaWVsZCh7IHQgfSksXG4gICAgY29uZmlybVBhc3N3b3JkOiBjb25maXJtUGFzc3dvcmRGaWVsZCh7IHQsIHJlcXVpcmVkOiByZXF1aXJlQ29uZmlybVBhc3N3b3JkIH0pLm9wdGlvbmFsKClcbiAgfSlcblxuICBpZiAoIXJlcXVpcmVDb25maXJtUGFzc3dvcmQpIHJldHVybiBzY2hlbWFcblxuICByZXR1cm4gc2NoZW1hLnJlZmluZSgoZGF0YSkgPT4gZGF0YS5wYXNzd29yZCA9PT0gZGF0YS5jb25maXJtUGFzc3dvcmQsIHtcbiAgICBwYXRoOiBbJ2NvbmZpcm1QYXNzd29yZCddLFxuICAgIG1lc3NhZ2U6IHQoJ2ZpZWxkczpwYXNzd29yZHNEb05vdE1hdGNoJykgfHwgJ1Bhc3N3b3JkcyBkbyBub3QgbWF0Y2gnXG4gIH0pXG59XG4iXSwibmFtZXMiOlsieiIsImVtYWlsUmVnZXgiLCJ1c2VybmFtZVJlZ2V4IiwiZW1haWxGaWVsZCIsInQiLCJyZXF1aXJlZCIsInNjaGVtYSIsInN0cmluZyIsIm1pbiIsInJlZmluZSIsInZhbCIsInRlc3QiLCJtZXNzYWdlIiwidXNlcm5hbWVGaWVsZCIsInBhc3N3b3JkRmllbGQiLCJtaW5MZW5ndGgiLCJjb25maXJtUGFzc3dvcmRGaWVsZCIsInBhc3N3b3JkV2l0aENvbmZpcm1hdGlvbiIsIm9iamVjdCIsInBhc3N3b3JkIiwiY29uZmlybVBhc3N3b3JkIiwiZGF0YSIsInBhdGgiLCJpc1ZhbGlkRW1haWwiLCJpc1ZhbGlkVXNlcm5hbWUiLCJtYXhMZW5ndGgiLCJsZW5ndGgiLCJjcmVhdGVMb2dpblNjaGVtYSIsImxvZ2luVHlwZSIsImNhbkxvZ2luV2l0aFVzZXJuYW1lIiwidXNlcm5hbWVTZXR0aW5ncyIsImxvZ2luIiwic3VwZXJSZWZpbmUiLCJjdHgiLCJlbWFpbFZhbGlkIiwidXNlcm5hbWVWYWxpZCIsInBhc3NlcyIsImluY2x1ZGVzIiwiYWRkSXNzdWUiLCJjb2RlIiwiY3JlYXRlU2lnbnVwU2NoZW1hIiwicmVxdWlyZVVzZXJuYW1lIiwicmVxdWlyZUNvbmZpcm1QYXNzd29yZCIsIm5hbWUiLCJlbWFpbCIsInVzZXJuYW1lIiwib3B0aW9uYWwiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLENBQUMsUUFBUSxNQUFLO0FBRXZCLFNBQVNDLFVBQVUsRUFBRUMsYUFBYSxRQUFRLGlCQUFzQjtBQVloRSw4RUFBOEU7QUFDOUUsaUJBQWlCO0FBQ2pCLDhFQUE4RTtBQUU5RSxPQUFPLE1BQU1DLGFBQWEsQ0FBQyxFQUFFQyxDQUFDLEVBQUVD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
package/package.json CHANGED
@@ -1,6 +1,26 @@
1
1
  {
2
2
  "name": "payload-auth",
3
- "version": "1.7.1",
3
+ "version": "1.8.0-canary.2",
4
+ "description": "The most powerful authentication solution for Payload CMS",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/payload-auth/payload-auth.git",
8
+ "directory": "packages/payload-auth"
9
+ },
10
+ "bugs": {
11
+ "url": "https://github.com/payload-auth/payload-auth/issues"
12
+ },
13
+ "homepage": "https://github.com/payload-auth/payload-auth#readme",
14
+ "license": "MIT",
15
+ "author": "forrestdevs <luke.gannon@me.com>",
16
+ "keywords": [
17
+ "payload-cms",
18
+ "better-auth",
19
+ "plugin",
20
+ "adapter",
21
+ "authentication",
22
+ "payload-plugin"
23
+ ],
4
24
  "main": "./dist/index.js",
5
25
  "module": "./dist/index.mjs",
6
26
  "types": "./dist/index.d.ts",
@@ -54,19 +74,26 @@
54
74
  "generate:better-auth-types": "rm -rf src/better-auth/generated-types.ts && tsx src/better-auth/scripts/generate-types.ts"
55
75
  },
56
76
  "peerDependencies": {
57
- "@payloadcms/ui": ">=3.55.1 <4",
58
- "better-auth": ">=1.3.11 <2",
59
- "next": "^15.3.0",
60
- "payload": ">=3.55.1 <4",
61
- "react": "^19",
62
- "react-dom": "^19"
77
+ "@better-auth/passkey": ">=1.4.0 <2",
78
+ "@payloadcms/next": ">=3.55 <4",
79
+ "@payloadcms/ui": ">=3.55 <4",
80
+ "better-auth": ">=1.4.0 <2",
81
+ "next": ">=15.4.8 <16",
82
+ "payload": ">=3.55 <4",
83
+ "react": ">=19.2.1 <20",
84
+ "react-dom": ">=19.2.1 <20"
63
85
  },
64
86
  "devDependencies": {
65
- "@payloadcms/db-postgres": ">3.55.1 <4",
66
- "@better-auth/sso": "1.3.34",
67
- "@better-auth/stripe": "1.3.34",
68
- "@polar-sh/better-auth": "1.4.0",
69
- "@polar-sh/sdk": "^0.40.2",
87
+ "@better-auth/passkey": "^1.4.5",
88
+ "@better-auth/core": "1.4.5",
89
+ "@better-auth/sso": "1.4.5",
90
+ "@better-auth/stripe": "1.4.5",
91
+ "@payloadcms/db-postgres": ">=3.55 <4",
92
+ "@payloadcms/next": ">=3.55 <4",
93
+ "@payloadcms/ui": ">=3.55 <4",
94
+ "@polar-sh/better-auth": "1.5.0",
95
+ "@polar-sh/sdk": "^0.41.5",
96
+ "better-auth": "^1.4.5",
70
97
  "@swc/cli": "0.6.0",
71
98
  "@swc/core": "1.11.13",
72
99
  "@types/node": "^20.0.0",
@@ -75,7 +102,7 @@
75
102
  "copyfiles": "^2.4.1",
76
103
  "cross-env": "^7.0.3",
77
104
  "dotenv": "^16.5.0",
78
- "payload": "^3.35",
105
+ "payload": ">=3.55 <4",
79
106
  "tsx": "^4.19.4",
80
107
  "typescript": "5.8.2",
81
108
  "vitest": "^1.0.0"
@@ -1,16 +0,0 @@
1
- import type { BetterAuthSchemas, SanitizedBetterAuthOptions } from '@/better-auth/plugin/types';
2
- import type { Config, Payload } from 'payload';
3
- /**
4
- * Sets up a middleware that enforces the saveToJwt configuration when setting session data.
5
- * This ensures that only fields specified in saveToJwt are included in the cookie cache
6
- * for both user and session objects.
7
- *
8
- * The middleware runs after authentication and filters the session data based on
9
- * the collection configurations before storing it in the cookie cache.
10
- */
11
- export declare function saveToJwtMiddleware({ sanitizedOptions, config, resolvedSchemas }: {
12
- sanitizedOptions: SanitizedBetterAuthOptions;
13
- config: Payload['config'] | Config | Promise<Payload['config'] | Config>;
14
- resolvedSchemas: BetterAuthSchemas;
15
- }): void;
16
- //# sourceMappingURL=save-to-jwt-middleware.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"save-to-jwt-middleware.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AAC/F,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAE9C;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,gBAAgB,EAChB,MAAM,EACN,eAAe,EAChB,EAAE;IACD,gBAAgB,EAAE,0BAA0B,CAAA;IAC5C,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAA;IACxE,eAAe,EAAE,iBAAiB,CAAA;CACnC,QA6BA"}
@@ -1,41 +0,0 @@
1
- import { prepareSessionData } from "../../../helpers/prepare-session-data";
2
- import { createAuthMiddleware } from "better-auth/api";
3
- import { setSessionCookie } from "better-auth/cookies";
4
- import { baModelKey } from "../../../constants";
5
- /**
6
- * Sets up a middleware that enforces the saveToJwt configuration when setting session data.
7
- * This ensures that only fields specified in saveToJwt are included in the cookie cache
8
- * for both user and session objects.
9
- *
10
- * The middleware runs after authentication and filters the session data based on
11
- * the collection configurations before storing it in the cookie cache.
12
- */ export function saveToJwtMiddleware({ sanitizedOptions, config, resolvedSchemas }) {
13
- if (typeof sanitizedOptions.hooks !== 'object') sanitizedOptions.hooks = {};
14
- const originalAfter = sanitizedOptions.hooks.after;
15
- sanitizedOptions.hooks.after = createAuthMiddleware(async (ctx)=>{
16
- const newSession = ctx.context.newSession;
17
- if (newSession) {
18
- const awaitedPayloadConfig = await config;
19
- const usersCollection = awaitedPayloadConfig?.collections?.find((c)=>c.slug === resolvedSchemas[baModelKey.user].modelName);
20
- const sessionsCollection = awaitedPayloadConfig?.collections?.find((c)=>c.slug === resolvedSchemas[baModelKey.session].modelName);
21
- if (!usersCollection || !sessionsCollection) return null;
22
- const filteredSessionData = await prepareSessionData({
23
- sessionData: newSession,
24
- usersCollection: usersCollection,
25
- sessionsCollection: sessionsCollection
26
- });
27
- if (filteredSessionData) {
28
- await setSessionCookie(ctx, filteredSessionData);
29
- // Set back all the data internally as we only want the cookie to update.
30
- // This allows plugins like two factor plugin to get enabledTwoFactor,
31
- // while not exposing it in cookie cache data.
32
- ctx.context.setNewSession(newSession);
33
- }
34
- }
35
- if (typeof originalAfter === 'function') {
36
- originalAfter(ctx);
37
- }
38
- });
39
- }
40
-
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL3Nhbml0aXplLWJldHRlci1hdXRoLW9wdGlvbnMvdXRpbHMvc2F2ZS10by1qd3QtbWlkZGxld2FyZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcmVwYXJlU2Vzc2lvbkRhdGEgfSBmcm9tICdAL2JldHRlci1hdXRoL3BsdWdpbi9oZWxwZXJzL3ByZXBhcmUtc2Vzc2lvbi1kYXRhJ1xuaW1wb3J0IHsgY3JlYXRlQXV0aE1pZGRsZXdhcmUgfSBmcm9tICdiZXR0ZXItYXV0aC9hcGknXG5pbXBvcnQgeyBzZXRTZXNzaW9uQ29va2llIH0gZnJvbSAnYmV0dGVyLWF1dGgvY29va2llcydcblxuaW1wb3J0IHsgYmFNb2RlbEtleSB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL2NvbnN0YW50cydcbmltcG9ydCB0eXBlIHsgQmV0dGVyQXV0aFNjaGVtYXMsIFNhbml0aXplZEJldHRlckF1dGhPcHRpb25zIH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9wbHVnaW4vdHlwZXMnXG5pbXBvcnQgdHlwZSB7IENvbmZpZywgUGF5bG9hZCB9IGZyb20gJ3BheWxvYWQnXG5cbi8qKlxuICogU2V0cyB1cCBhIG1pZGRsZXdhcmUgdGhhdCBlbmZvcmNlcyB0aGUgc2F2ZVRvSnd0IGNvbmZpZ3VyYXRpb24gd2hlbiBzZXR0aW5nIHNlc3Npb24gZGF0YS5cbiAqIFRoaXMgZW5zdXJlcyB0aGF0IG9ubHkgZmllbGRzIHNwZWNpZmllZCBpbiBzYXZlVG9Kd3QgYXJlIGluY2x1ZGVkIGluIHRoZSBjb29raWUgY2FjaGVcbiAqIGZvciBib3RoIHVzZXIgYW5kIHNlc3Npb24gb2JqZWN0cy5cbiAqXG4gKiBUaGUgbWlkZGxld2FyZSBydW5zIGFmdGVyIGF1dGhlbnRpY2F0aW9uIGFuZCBmaWx0ZXJzIHRoZSBzZXNzaW9uIGRhdGEgYmFzZWQgb25cbiAqIHRoZSBjb2xsZWN0aW9uIGNvbmZpZ3VyYXRpb25zIGJlZm9yZSBzdG9yaW5nIGl0IGluIHRoZSBjb29raWUgY2FjaGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzYXZlVG9Kd3RNaWRkbGV3YXJlKHtcbiAgc2FuaXRpemVkT3B0aW9ucyxcbiAgY29uZmlnLFxuICByZXNvbHZlZFNjaGVtYXNcbn06IHtcbiAgc2FuaXRpemVkT3B0aW9uczogU2FuaXRpemVkQmV0dGVyQXV0aE9wdGlvbnNcbiAgY29uZmlnOiBQYXlsb2FkWydjb25maWcnXSB8IENvbmZpZyB8IFByb21pc2U8UGF5bG9hZFsnY29uZmlnJ10gfCBDb25maWc+XG4gIHJlc29sdmVkU2NoZW1hczogQmV0dGVyQXV0aFNjaGVtYXNcbn0pIHtcbiAgaWYgKHR5cGVvZiBzYW5pdGl6ZWRPcHRpb25zLmhvb2tzICE9PSAnb2JqZWN0Jykgc2FuaXRpemVkT3B0aW9ucy5ob29rcyA9IHt9XG4gIGNvbnN0IG9yaWdpbmFsQWZ0ZXIgPSBzYW5pdGl6ZWRPcHRpb25zLmhvb2tzLmFmdGVyXG4gIHNhbml0aXplZE9wdGlvbnMuaG9va3MuYWZ0ZXIgPSBjcmVhdGVBdXRoTWlkZGxld2FyZShhc3luYyAoY3R4KSA9PiB7XG4gICAgY29uc3QgbmV3U2Vzc2lvbiA9IGN0eC5jb250ZXh0Lm5ld1Nlc3Npb25cbiAgICBpZiAobmV3U2Vzc2lvbikge1xuICAgICAgY29uc3QgYXdhaXRlZFBheWxvYWRDb25maWcgPSBhd2FpdCBjb25maWdcbiAgICAgIGNvbnN0IHVzZXJzQ29sbGVjdGlvbiA9IGF3YWl0ZWRQYXlsb2FkQ29uZmlnPy5jb2xsZWN0aW9ucz8uZmluZCgoYykgPT4gYy5zbHVnID09PSByZXNvbHZlZFNjaGVtYXNbYmFNb2RlbEtleS51c2VyXS5tb2RlbE5hbWUpXG4gICAgICBjb25zdCBzZXNzaW9uc0NvbGxlY3Rpb24gPSBhd2FpdGVkUGF5bG9hZENvbmZpZz8uY29sbGVjdGlvbnM/LmZpbmQoKGMpID0+IGMuc2x1ZyA9PT0gcmVzb2x2ZWRTY2hlbWFzW2JhTW9kZWxLZXkuc2Vzc2lvbl0ubW9kZWxOYW1lKVxuICAgICAgaWYgKCF1c2Vyc0NvbGxlY3Rpb24gfHwgIXNlc3Npb25zQ29sbGVjdGlvbikgcmV0dXJuIG51bGxcbiAgICAgIGNvbnN0IGZpbHRlcmVkU2Vzc2lvbkRhdGEgPSBhd2FpdCBwcmVwYXJlU2Vzc2lvbkRhdGEoe1xuICAgICAgICBzZXNzaW9uRGF0YTogbmV3U2Vzc2lvbixcbiAgICAgICAgdXNlcnNDb2xsZWN0aW9uOiB1c2Vyc0NvbGxlY3Rpb24sXG4gICAgICAgIHNlc3Npb25zQ29sbGVjdGlvbjogc2Vzc2lvbnNDb2xsZWN0aW9uXG4gICAgICB9KVxuXG4gICAgICBpZiAoZmlsdGVyZWRTZXNzaW9uRGF0YSkge1xuICAgICAgICBhd2FpdCBzZXRTZXNzaW9uQ29va2llKGN0eCwgZmlsdGVyZWRTZXNzaW9uRGF0YSlcbiAgICAgICAgLy8gU2V0IGJhY2sgYWxsIHRoZSBkYXRhIGludGVybmFsbHkgYXMgd2Ugb25seSB3YW50IHRoZSBjb29raWUgdG8gdXBkYXRlLlxuICAgICAgICAvLyBUaGlzIGFsbG93cyBwbHVnaW5zIGxpa2UgdHdvIGZhY3RvciBwbHVnaW4gdG8gZ2V0IGVuYWJsZWRUd29GYWN0b3IsXG4gICAgICAgIC8vIHdoaWxlIG5vdCBleHBvc2luZyBpdCBpbiBjb29raWUgY2FjaGUgZGF0YS5cbiAgICAgICAgY3R4LmNvbnRleHQuc2V0TmV3U2Vzc2lvbihuZXdTZXNzaW9uKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb3JpZ2luYWxBZnRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgb3JpZ2luYWxBZnRlcihjdHgpXG4gICAgfVxuICB9KVxufVxuIl0sIm5hbWVzIjpbInByZXBhcmVTZXNzaW9uRGF0YSIsImNyZWF0ZUF1dGhNaWRkbGV3YXJlIiwic2V0U2Vzc2lvbkNvb2tpZSIsImJhTW9kZWxLZXkiLCJzYXZlVG9Kd3RNaWRkbGV3YXJlIiwic2FuaXRpemVkT3B0aW9ucyIsImNvbmZpZyIsInJlc29sdmVkU2NoZW1hcyIsImhvb2tzIiwib3JpZ2luYWxBZnRlciIsImFmdGVyIiwiY3R4IiwibmV3U2Vzc2lvbiIsImNvbnRleHQiLCJhd2FpdGVkUGF5bG9hZENvbmZpZyIsInVzZXJzQ29sbGVjdGlvbiIsImNvbGxlY3Rpb25zIiwiZmluZCIsImMiLCJzbHVnIiwidXNlciIsIm1vZGVsTmFtZSIsInNlc3Npb25zQ29sbGVjdGlvbiIsInNlc3Npb24iLCJmaWx0ZXJlZFNlc3Npb25EYXRhIiwic2Vzc2lvbkRhdGEiLCJzZXROZXdTZXNzaW9uIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxrQkFBa0IsUUFBUSx3Q0FBbUQ7QUFDdEYsU0FBU0Msb0JBQW9CLFFBQVEsa0JBQWlCO0FBQ3RELFNBQVNDLGdCQUFnQixRQUFRLHNCQUFxQjtBQUV0RCxTQUFTQyxVQUFVLFFBQVEscUJBQWdDO0FBSTNEOzs7Ozs7O0NBT0MsR0FDRCxPQUFPLFNBQVNDLG9CQUFvQixFQUNsQ0MsZ0JBQWdCLEVBQ2hCQyxNQUFNLEVBQ05DLGVBQWUsRUFLaEI7SUFDQyxJQUFJLE9BQU9GLGlCQUFpQkcsS0FBSyxLQUFLLFVBQVVILGlCQUFpQkcsS0FBSyxHQUFHLENBQUM7SUFDMUUsTUFBTUMsZ0JBQWdCSixpQkFBaUJHLEtBQUssQ0FBQ0UsS0FBSztJQUNsREwsaUJBQWlCRyxLQUFLLENBQUNFLEtBQUssR0FBR1QscUJBQXFCLE9BQU9VO1FBQ3pELE1BQU1DLGFBQWFELElBQUlFLE9BQU8sQ0FBQ0QsVUFBVTtRQUN6QyxJQUFJQSxZQUFZO1lBQ2QsTUFBTUUsdUJBQXVCLE1BQU1SO1lBQ25DLE1BQU1TLGtCQUFrQkQsc0JBQXNCRSxhQUFhQyxLQUFLLENBQUNDLElBQU1BLEVBQUVDLElBQUksS0FBS1osZUFBZSxDQUFDSixXQUFXaUIsSUFBSSxDQUFDLENBQUNDLFNBQVM7WUFDNUgsTUFBTUMscUJBQXFCUixzQkFBc0JFLGFBQWFDLEtBQUssQ0FBQ0MsSUFBTUEsRUFBRUMsSUFBSSxLQUFLWixlQUFlLENBQUNKLFdBQVdvQixPQUFPLENBQUMsQ0FBQ0YsU0FBUztZQUNsSSxJQUFJLENBQUNOLG1CQUFtQixDQUFDTyxvQkFBb0IsT0FBTztZQUNwRCxNQUFNRSxzQkFBc0IsTUFBTXhCLG1CQUFtQjtnQkFDbkR5QixhQUFhYjtnQkFDYkcsaUJBQWlCQTtnQkFDakJPLG9CQUFvQkE7WUFDdEI7WUFFQSxJQUFJRSxxQkFBcUI7Z0JBQ3ZCLE1BQU10QixpQkFBaUJTLEtBQUthO2dCQUM1Qix5RUFBeUU7Z0JBQ3pFLHNFQUFzRTtnQkFDdEUsOENBQThDO2dCQUM5Q2IsSUFBSUUsT0FBTyxDQUFDYSxhQUFhLENBQUNkO1lBQzVCO1FBQ0Y7UUFFQSxJQUFJLE9BQU9ILGtCQUFrQixZQUFZO1lBQ3ZDQSxjQUFjRTtRQUNoQjtJQUNGO0FBQ0YifQ==
@@ -1,16 +0,0 @@
1
- import type { LoginMethod } from '@/better-auth/plugin/types';
2
- import React from 'react';
3
- import './index.scss';
4
- type AdminSocialProviderButtonsProps = {
5
- isSignup: boolean;
6
- loginMethods: LoginMethod[];
7
- setLoading: (loading: boolean) => void;
8
- redirectUrl?: string;
9
- newUserCallbackURL?: string;
10
- adminInviteToken?: string;
11
- baseURL?: string;
12
- basePath?: string;
13
- };
14
- export declare const AdminSocialProviderButtons: React.FC<AdminSocialProviderButtonsProps>;
15
- export {};
16
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/better-auth/plugin/payload/components/social-provider-buttons/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAA2B,WAAW,EAAkB,MAAM,4BAA4B,CAAA;AAOtG,OAAO,KAAkB,MAAM,OAAO,CAAA;AACtC,OAAO,cAAc,CAAA;AAErB,KAAK,+BAA+B,GAAG;IACrC,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAID,eAAO,MAAM,0BAA0B,EAAE,KAAK,CAAC,EAAE,CAAC,+BAA+B,CAuIhF,CAAA"}
@@ -1,144 +0,0 @@
1
- 'use client';
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { socialProviders } from "../../../constants";
4
- import { Icons } from "../../../../../shared/components/icons";
5
- import { Button, toast } from "@payloadcms/ui";
6
- import { passkeyClient } from "better-auth/client/plugins";
7
- import { createAuthClient } from "better-auth/react";
8
- import { Key } from "lucide-react";
9
- import { useRouter } from "next/navigation";
10
- import React, { useMemo } from "react";
11
- import "./index.scss";
12
- const baseClass = 'admin-social-provider-buttons';
13
- export const AdminSocialProviderButtons = ({ isSignup, loginMethods, setLoading, redirectUrl, newUserCallbackURL, adminInviteToken, baseURL, basePath })=>{
14
- const router = useRouter();
15
- const authClient = useMemo(()=>createAuthClient({
16
- baseURL,
17
- basePath,
18
- plugins: [
19
- passkeyClient()
20
- ]
21
- }), []);
22
- const loginMethodCount = loginMethods.filter((method)=>method !== 'emailPassword', 'passkey').length;
23
- if (loginMethodCount === 0) return null;
24
- const showIconOnly = loginMethodCount >= 3;
25
- return /*#__PURE__*/ _jsxs(_Fragment, {
26
- children: [
27
- loginMethods.includes('emailPassword') && /*#__PURE__*/ _jsx("div", {
28
- style: {
29
- textAlign: 'center',
30
- fontSize: '0.875rem',
31
- textTransform: 'uppercase',
32
- marginTop: '-.5rem',
33
- color: 'var(--theme-elevation-450)',
34
- marginBottom: '1.5rem'
35
- },
36
- children: /*#__PURE__*/ _jsxs("span", {
37
- children: [
38
- "Or ",
39
- isSignup ? 'sign up' : 'login',
40
- " with"
41
- ]
42
- })
43
- }),
44
- /*#__PURE__*/ _jsx("div", {
45
- className: `${baseClass} ${baseClass}--count-${showIconOnly ? 'many' : loginMethodCount}`,
46
- children: loginMethods.map((loginMethod)=>{
47
- const providerName = loginMethod.charAt(0).toUpperCase() + loginMethod.slice(1);
48
- const isSocialProvider = socialProviders.includes(loginMethod);
49
- // ---- Passkey ----
50
- if (loginMethod === 'passkey') {
51
- if (isSignup) return null;
52
- const handlePasskeyClick = async ()=>{
53
- setLoading(true);
54
- try {
55
- await authClient.signIn.passkey({
56
- fetchOptions: {
57
- onSuccess () {
58
- if (router && redirectUrl) router.push(redirectUrl);
59
- },
60
- onError (context) {
61
- toast.error(context.error.message || 'Failed to sign in with passkey');
62
- }
63
- }
64
- });
65
- } catch (error) {
66
- toast.error(error?.message || 'Failed to sign in with passkey');
67
- } finally{
68
- setLoading(false);
69
- }
70
- };
71
- return /*#__PURE__*/ _jsxs(Button, {
72
- type: "button",
73
- size: "large",
74
- className: `${baseClass}__button provider--passkey`,
75
- onClick: handlePasskeyClick,
76
- icon: showIconOnly ? /*#__PURE__*/ _jsx(Key, {
77
- className: `${baseClass}__icon`
78
- }) : undefined,
79
- tooltip: showIconOnly ? `Sign in with ${providerName}` : undefined,
80
- children: [
81
- !showIconOnly && /*#__PURE__*/ _jsx(Key, {
82
- className: `${baseClass}__icon`
83
- }),
84
- !showIconOnly && /*#__PURE__*/ _jsx("span", {
85
- children: providerName
86
- })
87
- ]
88
- }, loginMethod);
89
- }
90
- // ---- Social providers ----
91
- if (isSocialProvider) {
92
- const Icon = Icons[loginMethod] ?? null;
93
- const handleSocialClick = async ()=>{
94
- setLoading(true);
95
- try {
96
- const { error } = await authClient.signIn.social({
97
- provider: loginMethod,
98
- fetchOptions: {
99
- query: {
100
- ...isSignup && {
101
- adminInviteToken
102
- }
103
- }
104
- },
105
- errorCallbackURL: window.location.href,
106
- callbackURL: redirectUrl,
107
- newUserCallbackURL,
108
- ...isSignup && {
109
- requestSignUp: true
110
- }
111
- });
112
- if (error) {
113
- toast.error(error.message);
114
- }
115
- } catch (error) {
116
- toast.error(`Failed to sign in with ${providerName}`);
117
- } finally{
118
- setLoading(false);
119
- }
120
- };
121
- return /*#__PURE__*/ _jsx(Button, {
122
- type: "button",
123
- size: "large",
124
- className: `${baseClass}__button provider--${loginMethod}`,
125
- onClick: handleSocialClick,
126
- iconPosition: "left",
127
- icon: /*#__PURE__*/ _jsx(Icon, {
128
- className: `${baseClass}__icon`
129
- }),
130
- tooltip: showIconOnly ? `Sign in with ${providerName}` : undefined,
131
- children: !showIconOnly && /*#__PURE__*/ _jsx("span", {
132
- children: providerName
133
- })
134
- }, loginMethod);
135
- }
136
- // Unknown provider — render nothing
137
- return null;
138
- })
139
- })
140
- ]
141
- });
142
- };
143
-
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vcGF5bG9hZC9jb21wb25lbnRzL3NvY2lhbC1wcm92aWRlci1idXR0b25zL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IHsgc29jaWFsUHJvdmlkZXJzIH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9wbHVnaW4vY29uc3RhbnRzJ1xuaW1wb3J0IHR5cGUgeyBCZXR0ZXJBdXRoUGx1Z2luT3B0aW9ucywgTG9naW5NZXRob2QsIFNvY2lhbFByb3ZpZGVyIH0gZnJvbSAnQC9iZXR0ZXItYXV0aC9wbHVnaW4vdHlwZXMnXG5pbXBvcnQgeyBJY29ucyB9IGZyb20gJ0Avc2hhcmVkL2NvbXBvbmVudHMvaWNvbnMnXG5pbXBvcnQgeyBCdXR0b24sIHRvYXN0IH0gZnJvbSAnQHBheWxvYWRjbXMvdWknXG5pbXBvcnQgeyBwYXNza2V5Q2xpZW50IH0gZnJvbSAnYmV0dGVyLWF1dGgvY2xpZW50L3BsdWdpbnMnXG5pbXBvcnQgeyBjcmVhdGVBdXRoQ2xpZW50IH0gZnJvbSAnYmV0dGVyLWF1dGgvcmVhY3QnXG5pbXBvcnQgeyBLZXkgfSBmcm9tICdsdWNpZGUtcmVhY3QnXG5pbXBvcnQgeyB1c2VSb3V0ZXIgfSBmcm9tICduZXh0L25hdmlnYXRpb24nXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICcuL2luZGV4LnNjc3MnXG5cbnR5cGUgQWRtaW5Tb2NpYWxQcm92aWRlckJ1dHRvbnNQcm9wcyA9IHtcbiAgaXNTaWdudXA6IGJvb2xlYW5cbiAgbG9naW5NZXRob2RzOiBMb2dpbk1ldGhvZFtdXG4gIHNldExvYWRpbmc6IChsb2FkaW5nOiBib29sZWFuKSA9PiB2b2lkXG4gIHJlZGlyZWN0VXJsPzogc3RyaW5nXG4gIG5ld1VzZXJDYWxsYmFja1VSTD86IHN0cmluZ1xuICBhZG1pbkludml0ZVRva2VuPzogc3RyaW5nXG4gIGJhc2VVUkw/OiBzdHJpbmdcbiAgYmFzZVBhdGg/OiBzdHJpbmdcbn1cblxuY29uc3QgYmFzZUNsYXNzID0gJ2FkbWluLXNvY2lhbC1wcm92aWRlci1idXR0b25zJ1xuXG5leHBvcnQgY29uc3QgQWRtaW5Tb2NpYWxQcm92aWRlckJ1dHRvbnM6IFJlYWN0LkZDPEFkbWluU29jaWFsUHJvdmlkZXJCdXR0b25zUHJvcHM+ID0gKHtcbiAgaXNTaWdudXAsXG4gIGxvZ2luTWV0aG9kcyxcbiAgc2V0TG9hZGluZyxcbiAgcmVkaXJlY3RVcmwsXG4gIG5ld1VzZXJDYWxsYmFja1VSTCxcbiAgYWRtaW5JbnZpdGVUb2tlbixcbiAgYmFzZVVSTCxcbiAgYmFzZVBhdGhcbn0pID0+IHtcbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKClcbiAgY29uc3QgYXV0aENsaWVudCA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGNyZWF0ZUF1dGhDbGllbnQoe1xuICAgICAgICBiYXNlVVJMLFxuICAgICAgICBiYXNlUGF0aCxcbiAgICAgICAgcGx1Z2luczogW3Bhc3NrZXlDbGllbnQoKV1cbiAgICAgIH0pLFxuICAgIFtdXG4gIClcblxuICBjb25zdCBsb2dpbk1ldGhvZENvdW50ID0gbG9naW5NZXRob2RzLmZpbHRlcigobWV0aG9kKSA9PiBtZXRob2QgIT09ICdlbWFpbFBhc3N3b3JkJywgJ3Bhc3NrZXknKS5sZW5ndGhcbiAgaWYgKGxvZ2luTWV0aG9kQ291bnQgPT09IDApIHJldHVybiBudWxsXG5cbiAgY29uc3Qgc2hvd0ljb25Pbmx5ID0gbG9naW5NZXRob2RDb3VudCA+PSAzXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2xvZ2luTWV0aG9kcy5pbmNsdWRlcygnZW1haWxQYXNzd29yZCcpICYmIChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgICAgICAgZm9udFNpemU6ICcwLjg3NXJlbScsXG4gICAgICAgICAgICB0ZXh0VHJhbnNmb3JtOiAndXBwZXJjYXNlJyxcbiAgICAgICAgICAgIG1hcmdpblRvcDogJy0uNXJlbScsXG4gICAgICAgICAgICBjb2xvcjogJ3ZhcigtLXRoZW1lLWVsZXZhdGlvbi00NTApJyxcbiAgICAgICAgICAgIG1hcmdpbkJvdHRvbTogJzEuNXJlbSdcbiAgICAgICAgICB9fT5cbiAgICAgICAgICA8c3Bhbj5PciB7aXNTaWdudXAgPyAnc2lnbiB1cCcgOiAnbG9naW4nfSB3aXRoPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfSAke2Jhc2VDbGFzc30tLWNvdW50LSR7c2hvd0ljb25Pbmx5ID8gJ21hbnknIDogbG9naW5NZXRob2RDb3VudH1gfT5cbiAgICAgICAge2xvZ2luTWV0aG9kcy5tYXAoKGxvZ2luTWV0aG9kKSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJvdmlkZXJOYW1lID0gbG9naW5NZXRob2QuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBsb2dpbk1ldGhvZC5zbGljZSgxKVxuICAgICAgICAgIGNvbnN0IGlzU29jaWFsUHJvdmlkZXIgPSBzb2NpYWxQcm92aWRlcnMuaW5jbHVkZXMobG9naW5NZXRob2QgYXMgU29jaWFsUHJvdmlkZXIpXG5cbiAgICAgICAgICAvLyAtLS0tIFBhc3NrZXkgLS0tLVxuICAgICAgICAgIGlmIChsb2dpbk1ldGhvZCA9PT0gJ3Bhc3NrZXknKSB7XG4gICAgICAgICAgICBpZiAoaXNTaWdudXApIHJldHVybiBudWxsXG4gICAgICAgICAgICBjb25zdCBoYW5kbGVQYXNza2V5Q2xpY2sgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBhdXRoQ2xpZW50LnNpZ25Jbi5wYXNza2V5KHtcbiAgICAgICAgICAgICAgICAgIGZldGNoT3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgICBvblN1Y2Nlc3MoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgaWYgKHJvdXRlciAmJiByZWRpcmVjdFVybCkgcm91dGVyLnB1c2gocmVkaXJlY3RVcmwpXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3IoY29udGV4dDogYW55KSB7XG4gICAgICAgICAgICAgICAgICAgICAgdG9hc3QuZXJyb3IoY29udGV4dC5lcnJvci5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gc2lnbiBpbiB3aXRoIHBhc3NrZXknKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICAgIHRvYXN0LmVycm9yKGVycm9yPy5tZXNzYWdlIHx8ICdGYWlsZWQgdG8gc2lnbiBpbiB3aXRoIHBhc3NrZXknKVxuICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgIGtleT17bG9naW5NZXRob2R9XG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake2Jhc2VDbGFzc31fX2J1dHRvbiBwcm92aWRlci0tcGFzc2tleWB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlUGFzc2tleUNsaWNrfVxuICAgICAgICAgICAgICAgIGljb249e3Nob3dJY29uT25seSA/IDxLZXkgY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19pY29uYH0gLz4gOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgdG9vbHRpcD17c2hvd0ljb25Pbmx5ID8gYFNpZ24gaW4gd2l0aCAke3Byb3ZpZGVyTmFtZX1gIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAgICB7IXNob3dJY29uT25seSAmJiA8S2V5IGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9faWNvbmB9IC8+fVxuICAgICAgICAgICAgICAgIHshc2hvd0ljb25Pbmx5ICYmIDxzcGFuPntwcm92aWRlck5hbWV9PC9zcGFuPn1cbiAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gLS0tLSBTb2NpYWwgcHJvdmlkZXJzIC0tLS1cbiAgICAgICAgICBpZiAoaXNTb2NpYWxQcm92aWRlcikge1xuICAgICAgICAgICAgY29uc3QgSWNvbiA9IEljb25zW2xvZ2luTWV0aG9kIGFzIGtleW9mIHR5cGVvZiBJY29uc10gPz8gbnVsbFxuXG4gICAgICAgICAgICBjb25zdCBoYW5kbGVTb2NpYWxDbGljayA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgZXJyb3IgfSA9IGF3YWl0IGF1dGhDbGllbnQuc2lnbkluLnNvY2lhbCh7XG4gICAgICAgICAgICAgICAgICBwcm92aWRlcjogbG9naW5NZXRob2QgYXMgU29jaWFsUHJvdmlkZXIsXG4gICAgICAgICAgICAgICAgICBmZXRjaE9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgcXVlcnk6IHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi4oaXNTaWdudXAgJiYgeyBhZG1pbkludml0ZVRva2VuIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrVVJMOiB3aW5kb3cubG9jYXRpb24uaHJlZixcbiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrVVJMOiByZWRpcmVjdFVybCxcbiAgICAgICAgICAgICAgICAgIG5ld1VzZXJDYWxsYmFja1VSTCxcbiAgICAgICAgICAgICAgICAgIC4uLihpc1NpZ251cCAmJiB7IHJlcXVlc3RTaWduVXA6IHRydWUgfSlcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICB0b2FzdC5lcnJvcihlcnJvci5tZXNzYWdlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAgICAgICAgIHRvYXN0LmVycm9yKGBGYWlsZWQgdG8gc2lnbiBpbiB3aXRoICR7cHJvdmlkZXJOYW1lfWApXG4gICAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAga2V5PXtsb2dpbk1ldGhvZH1cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7YmFzZUNsYXNzfV9fYnV0dG9uIHByb3ZpZGVyLS0ke2xvZ2luTWV0aG9kfWB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU29jaWFsQ2xpY2t9XG4gICAgICAgICAgICAgICAgaWNvblBvc2l0aW9uPVwibGVmdFwiXG4gICAgICAgICAgICAgICAgaWNvbj17PEljb24gY2xhc3NOYW1lPXtgJHtiYXNlQ2xhc3N9X19pY29uYH0gLz59XG4gICAgICAgICAgICAgICAgdG9vbHRpcD17c2hvd0ljb25Pbmx5ID8gYFNpZ24gaW4gd2l0aCAke3Byb3ZpZGVyTmFtZX1gIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAgICB7IXNob3dJY29uT25seSAmJiA8c3Bhbj57cHJvdmlkZXJOYW1lfTwvc3Bhbj59XG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFVua25vd24gcHJvdmlkZXIg4oCUIHJlbmRlciBub3RoaW5nXG4gICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgfSl9XG4gICAgICA8L2Rpdj5cbiAgICA8Lz5cbiAgKVxufVxuIl0sIm5hbWVzIjpbInNvY2lhbFByb3ZpZGVycyIsIkljb25zIiwiQnV0dG9uIiwidG9hc3QiLCJwYXNza2V5Q2xpZW50IiwiY3JlYXRlQXV0aENsaWVudCIsIktleSIsInVzZVJvdXRlciIsIlJlYWN0IiwidXNlTWVtbyIsImJhc2VDbGFzcyIsIkFkbWluU29jaWFsUHJvdmlkZXJCdXR0b25zIiwiaXNTaWdudXAiLCJsb2dpbk1ldGhvZHMiLCJzZXRMb2FkaW5nIiwicmVkaXJlY3RVcmwiLCJuZXdVc2VyQ2FsbGJhY2tVUkwiLCJhZG1pbkludml0ZVRva2VuIiwiYmFzZVVSTCIsImJhc2VQYXRoIiwicm91dGVyIiwiYXV0aENsaWVudCIsInBsdWdpbnMiLCJsb2dpbk1ldGhvZENvdW50IiwiZmlsdGVyIiwibWV0aG9kIiwibGVuZ3RoIiwic2hvd0ljb25Pbmx5IiwiaW5jbHVkZXMiLCJkaXYiLCJzdHlsZSIsInRleHRBbGlnbiIsImZvbnRTaXplIiwidGV4dFRyYW5zZm9ybSIsIm1hcmdpblRvcCIsImNvbG9yIiwibWFyZ2luQm90dG9tIiwic3BhbiIsImNsYXNzTmFtZSIsIm1hcCIsImxvZ2luTWV0aG9kIiwicHJvdmlkZXJOYW1lIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsImlzU29jaWFsUHJvdmlkZXIiLCJoYW5kbGVQYXNza2V5Q2xpY2siLCJzaWduSW4iLCJwYXNza2V5IiwiZmV0Y2hPcHRpb25zIiwib25TdWNjZXNzIiwicHVzaCIsIm9uRXJyb3IiLCJjb250ZXh0IiwiZXJyb3IiLCJtZXNzYWdlIiwidHlwZSIsInNpemUiLCJvbkNsaWNrIiwiaWNvbiIsInVuZGVmaW5lZCIsInRvb2x0aXAiLCJJY29uIiwiaGFuZGxlU29jaWFsQ2xpY2siLCJzb2NpYWwiLCJwcm92aWRlciIsInF1ZXJ5IiwiZXJyb3JDYWxsYmFja1VSTCIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsImNhbGxiYWNrVVJMIiwicmVxdWVzdFNpZ25VcCIsImljb25Qb3NpdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUEsU0FBU0EsZUFBZSxRQUFRLHFCQUFnQztBQUVoRSxTQUFTQyxLQUFLLFFBQVEseUNBQTJCO0FBQ2pELFNBQVNDLE1BQU0sRUFBRUMsS0FBSyxRQUFRLGlCQUFnQjtBQUM5QyxTQUFTQyxhQUFhLFFBQVEsNkJBQTRCO0FBQzFELFNBQVNDLGdCQUFnQixRQUFRLG9CQUFtQjtBQUNwRCxTQUFTQyxHQUFHLFFBQVEsZUFBYztBQUNsQyxTQUFTQyxTQUFTLFFBQVEsa0JBQWlCO0FBQzNDLE9BQU9DLFNBQVNDLE9BQU8sUUFBUSxRQUFPO0FBQ3RDLE9BQU8sZUFBYztBQWFyQixNQUFNQyxZQUFZO0FBRWxCLE9BQU8sTUFBTUMsNkJBQXdFLENBQUMsRUFDcEZDLFFBQVEsRUFDUkMsWUFBWSxFQUNaQyxVQUFVLEVBQ1ZDLFdBQVcsRUFDWEMsa0JBQWtCLEVBQ2xCQyxnQkFBZ0IsRUFDaEJDLE9BQU8sRUFDUEMsUUFBUSxFQUNUO0lBQ0MsTUFBTUMsU0FBU2I7SUFDZixNQUFNYyxhQUFhWixRQUNqQixJQUNFSixpQkFBaUI7WUFDZmE7WUFDQUM7WUFDQUcsU0FBUztnQkFBQ2xCO2FBQWdCO1FBQzVCLElBQ0YsRUFBRTtJQUdKLE1BQU1tQixtQkFBbUJWLGFBQWFXLE1BQU0sQ0FBQyxDQUFDQyxTQUFXQSxXQUFXLGlCQUFpQixXQUFXQyxNQUFNO0lBQ3RHLElBQUlILHFCQUFxQixHQUFHLE9BQU87SUFF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