payload-auth 1.5.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/better-auth/plugin/lib/build-collections/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/index.js +3 -1
- package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/passkeys.js +16 -3
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.d.ts +0 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.js +1 -2
- package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/index.js +32 -10
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js +11 -3
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.d.ts +10 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.d.ts.map +1 -0
- package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.js +62 -0
- package/dist/better-auth/plugin/payload/components/passkeys/add-button.d.ts +7 -0
- package/dist/better-auth/plugin/payload/components/passkeys/add-button.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/add-button.js +120 -0
- package/dist/better-auth/plugin/payload/components/passkeys/client.d.ts +4 -0
- package/dist/better-auth/plugin/payload/components/passkeys/client.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/client.js +59 -0
- package/dist/better-auth/plugin/payload/components/passkeys/index.d.ts +5 -0
- package/dist/better-auth/plugin/payload/components/passkeys/index.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/index.js +40 -0
- package/dist/better-auth/plugin/payload/components/passkeys/index.scss +91 -0
- package/dist/better-auth/plugin/payload/components/passkeys/list.d.ts +9 -0
- package/dist/better-auth/plugin/payload/components/passkeys/list.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/list.js +57 -0
- package/dist/better-auth/plugin/payload/components/passkeys/types.d.ts +20 -0
- package/dist/better-auth/plugin/payload/components/passkeys/types.d.ts.map +1 -0
- package/dist/better-auth/plugin/payload/components/passkeys/types.js +3 -0
- package/dist/better-auth/plugin/payload/exports/rsc.d.ts +2 -1
- package/dist/better-auth/plugin/payload/exports/rsc.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/exports/rsc.js +3 -2
- package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts +1 -0
- package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/admin-login/client.js +11 -7
- package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/admin-login/index.js +3 -1
- package/dist/better-auth/plugin/payload/views/admin-signup/client.d.ts.map +1 -1
- package/dist/better-auth/plugin/payload/views/admin-signup/client.js +29 -28
- package/dist/better-auth/plugin/types.d.ts +2 -0
- package/dist/better-auth/plugin/types.d.ts.map +1 -1
- package/dist/better-auth/plugin/types.js +1 -1
- package/dist/shared/form/validation.d.ts +1 -3
- package/dist/shared/form/validation.d.ts.map +1 -1
- package/dist/shared/form/validation.js +3 -3
- package/package.json +1 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/signup.d.ts +0 -4
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/signup.d.ts.map +0 -1
- package/dist/better-auth/plugin/lib/build-collections/users/endpoints/signup.js +0 -157
|
@@ -10,10 +10,10 @@ export const emailField = ({ t, required = true })=>{
|
|
|
10
10
|
message: t('authentication:emailNotValid') || 'Email is not valid'
|
|
11
11
|
});
|
|
12
12
|
};
|
|
13
|
-
export const usernameField = ({ t, required = true
|
|
13
|
+
export const usernameField = ({ t, required = true })=>{
|
|
14
14
|
let schema = z.string();
|
|
15
15
|
if (required) schema = schema.min(1, t('validation:required'));
|
|
16
|
-
return schema.refine((val)=>usernameRegex.test(val)
|
|
16
|
+
return schema.refine((val)=>usernameRegex.test(val), {
|
|
17
17
|
message: t('authentication:usernameNotValid') || 'Username is not valid'
|
|
18
18
|
});
|
|
19
19
|
};
|
|
@@ -113,4 +113,4 @@ export const createSignupSchema = ({ t, requireUsername = false, requireConfirmP
|
|
|
113
113
|
});
|
|
114
114
|
};
|
|
115
115
|
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaGFyZWQvZm9ybS92YWxpZGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tICd6b2QnXG5cbmltcG9ydCB7IGVtYWlsUmVnZXgsIHVzZXJuYW1lUmVnZXggfSBmcm9tICdAL3NoYXJlZC91dGlscy9yZWdleCdcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUeXBlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogTWluaW1hbCB0cmFuc2xhdGlvbiBmdW5jdGlvbiB0eXBlIGV4dHJhY3RlZCBmcm9tIGBpMThuZXh0YC5cbiAqIEFjY2VwdHMgYSBrZXkgYW5kIHJldHVybnMgdGhlIHRyYW5zbGF0ZWQgc3RyaW5nLlxuICovXG5leHBvcnQgdHlwZSBUcmFuc2xhdGUgPSAoLi4uYXJnczogYW55W10pID0+IHN0cmluZ1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEZpZWxkIGJ1aWxkZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IGVtYWlsRmllbGQgPSAoeyB0LCByZXF1aXJlZCA9IHRydWUgfTogeyB0OiBUcmFuc2xhdGU7IHJlcXVpcmVkPzogYm9vbGVhbiB9KSA9PiB7XG4gIGxldCBzY2hlbWEgPSB6LnN0cmluZygpXG4gIGlmIChyZXF1aXJlZCkgc2NoZW1hID0gc2NoZW1hLm1pbigxLCB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykpXG4gIHJldHVybiBzY2hlbWEucmVmaW5lKCh2YWwpID0+IGVtYWlsUmVnZXgudGVzdCh2YWwpLCB7XG4gICAgbWVzc2FnZTogdCgnYXV0aGVudGljYXRpb246ZW1haWxOb3RWYWxpZCcpIHx8ICdFbWFpbCBpcyBub3QgdmFsaWQnXG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCB1c2VybmFtZUZpZWxkID0gKHtcbiAgdCxcbiAgcmVxdWlyZWQgPSB0cnVlLFxuICBtaW5MZW5ndGggPSA1LFxuICBtYXhMZW5ndGggPSAxMjhcbn06IHtcbiAgdDogVHJhbnNsYXRlXG4gIHJlcXVpcmVkPzogYm9vbGVhblxuICBtaW5MZW5ndGg/OiBudW1iZXJcbiAgbWF4TGVuZ3RoPzogbnVtYmVyXG59KSA9PiB7XG4gIGxldCBzY2hlbWEgPSB6LnN0cmluZygpXG4gIGlmIChyZXF1aXJlZCkgc2NoZW1hID0gc2NoZW1hLm1pbigxLCB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykpXG4gIHJldHVybiBzY2hlbWEucmVmaW5lKCh2YWwpID0+IHVzZXJuYW1lUmVnZXgudGVzdCh2YWwpICYmIHZhbC5sZW5ndGggPj0gbWluTGVuZ3RoICYmIHZhbC5sZW5ndGggPD0gbWF4TGVuZ3RoLCB7XG4gICAgbWVzc2FnZTogdCgnYXV0aGVudGljYXRpb246dXNlcm5hbWVOb3RWYWxpZCcpIHx8ICdVc2VybmFtZSBpcyBub3QgdmFsaWQnXG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCBwYXNzd29yZEZpZWxkID0gKHsgdCwgcmVxdWlyZWQgPSB0cnVlLCBtaW5MZW5ndGggPSAxIH06IHsgdDogVHJhbnNsYXRlOyByZXF1aXJlZD86IGJvb2xlYW47IG1pbkxlbmd0aD86IG51bWJlciB9KSA9PiB7XG4gIGxldCBzY2hlbWEgPSB6LnN0cmluZygpXG4gIGlmIChyZXF1aXJlZCkgc2NoZW1hID0gc2NoZW1hLm1pbihtaW5MZW5ndGgsIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKSB8fCAnUGFzc3dvcmQgaXMgcmVxdWlyZWQnKVxuICByZXR1cm4gc2NoZW1hXG59XG5cbmV4cG9ydCBjb25zdCBjb25maXJtUGFzc3dvcmRGaWVsZCA9ICh7IHQsIHJlcXVpcmVkID0gdHJ1ZSB9OiB7IHQ6IFRyYW5zbGF0ZTsgcmVxdWlyZWQ/OiBib29sZWFuIH0pID0+IHtcbiAgbGV0IHNjaGVtYSA9IHouc3RyaW5nKClcbiAgaWYgKHJlcXVpcmVkKSBzY2hlbWEgPSBzY2hlbWEubWluKDEsIHQoJ3ZhbGlkYXRpb246cmVxdWlyZWQnKSB8fCAnQ29uZmlybSBwYXNzd29yZCBpcyByZXF1aXJlZCcpXG4gIHJldHVybiBzY2hlbWFcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDb21wb3NhYmxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogUmV0dXJucyBhIFpvZCBvYmplY3Qgc2NoZW1hIHdpdGggYHBhc3N3b3JkYCBhbmQgYGNvbmZpcm1QYXNzd29yZGAgZmllbGRzXG4gKiBhbmQgYSByZWZpbmVtZW50IHRoYXQgZW5zdXJlcyB0aGV5IG1hdGNoLlxuICovXG5leHBvcnQgY29uc3QgcGFzc3dvcmRXaXRoQ29uZmlybWF0aW9uID0gKHsgdCwgbWluTGVuZ3RoID0gMSB9OiB7IHQ6IFRyYW5zbGF0ZTsgbWluTGVuZ3RoPzogbnVtYmVyIH0pID0+XG4gIHpcbiAgICAub2JqZWN0KHtcbiAgICAgIHBhc3N3b3JkOiBwYXNzd29yZEZpZWxkKHsgdCwgbWluTGVuZ3RoIH0pLFxuICAgICAgY29uZmlybVBhc3N3b3JkOiBjb25maXJtUGFzc3dvcmRGaWVsZCh7IHQgfSlcbiAgICB9KVxuICAgIC5yZWZpbmUoKGRhdGEpID0+IGRhdGEucGFzc3dvcmQgPT09IGRhdGEuY29uZmlybVBhc3N3b3JkLCB7XG4gICAgICBwYXRoOiBbJ2NvbmZpcm1QYXNzd29yZCddLFxuICAgICAgbWVzc2FnZTogdCgnZmllbGRzOnBhc3N3b3Jkc0RvTm90TWF0Y2gnKSB8fCAnUGFzc3dvcmRzIGRvIG5vdCBtYXRjaCdcbiAgICB9KVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFV0aWxpdHkgdmFsaWRhdG9ycyAobm9u4oCRWm9kKSDigJQgaGFuZHkgZm9yIGR5bmFtaWMgbG9naW4gZmllbGQgY2hlY2tzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IGlzVmFsaWRFbWFpbCA9ICh2YWw6IHN0cmluZykgPT4gZW1haWxSZWdleC50ZXN0KHZhbClcbmV4cG9ydCBjb25zdCBpc1ZhbGlkVXNlcm5hbWUgPSAodmFsOiBzdHJpbmcsIHsgbWluTGVuZ3RoID0gNSwgbWF4TGVuZ3RoID0gMTI4IH06IHsgbWluTGVuZ3RoPzogbnVtYmVyOyBtYXhMZW5ndGg/OiBudW1iZXIgfSA9IHt9KSA9PlxuICB1c2VybmFtZVJlZ2V4LnRlc3QodmFsKSAmJiB2YWwubGVuZ3RoID49IG1pbkxlbmd0aCAmJiB2YWwubGVuZ3RoIDw9IG1heExlbmd0aFxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNjaGVtYSBidWlsZGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbnR5cGUgVXNlcm5hbWVTZXR0aW5ncyA9IHsgbWluTGVuZ3RoOiBudW1iZXI7IG1heExlbmd0aDogbnVtYmVyIH1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUxvZ2luU2NoZW1hID0gKHtcbiAgdCxcbiAgbG9naW5UeXBlLFxuICBjYW5Mb2dpbldpdGhVc2VybmFtZSA9IGZhbHNlLFxuICB1c2VybmFtZVNldHRpbmdzID0geyBtaW5MZW5ndGg6IDUsIG1heExlbmd0aDogMTI4IH1cbn06IHtcbiAgdDogVHJhbnNsYXRlXG4gIGxvZ2luVHlwZTogJ2VtYWlsJyB8ICd1c2VybmFtZScgfCAnZW1haWxPclVzZXJuYW1lJ1xuICBjYW5Mb2dpbldpdGhVc2VybmFtZT86IGJvb2xlYW5cbiAgdXNlcm5hbWVTZXR0aW5ncz86IFVzZXJuYW1lU2V0dGluZ3Ncbn0pID0+XG4gIHoub2JqZWN0KHtcbiAgICBsb2dpbjogei5zdHJpbmcoKS5yZWZpbmUoXG4gICAgICAodmFsKSA9PiB7XG4gICAgICAgIGlmICghdmFsKSByZXR1cm4gZmFsc2VcbiAgICAgICAgaWYgKGxvZ2luVHlwZSA9PT0gJ2VtYWlsJykgcmV0dXJuIGlzVmFsaWRFbWFpbCh2YWwpXG4gICAgICAgIGlmIChsb2dpblR5cGUgPT09ICd1c2VybmFtZScpIHJldHVybiBpc1ZhbGlkVXNlcm5hbWUodmFsLCB1c2VybmFtZVNldHRpbmdzKVxuICAgICAgICByZXR1cm4gaXNWYWxpZEVtYWlsKHZhbCkgfHwgaXNWYWxpZFVzZXJuYW1lKHZhbCwgdXNlcm5hbWVTZXR0aW5ncylcbiAgICAgIH0sXG4gICAgICAodmFsKSA9PiB7XG4gICAgICAgIGlmICghdmFsKSByZXR1cm4geyBtZXNzYWdlOiB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykgfVxuXG4gICAgICAgIGNvbnN0IGlzUHJvYmFibHlFbWFpbCA9IHZhbC5pbmNsdWRlcygnQCcpIHx8ICFjYW5Mb2dpbldpdGhVc2VybmFtZVxuXG4gICAgICAgIGlmIChsb2dpblR5cGUgPT09ICdlbWFpbCcpIHtcbiAgICAgICAgICByZXR1cm4geyBtZXNzYWdlOiB0KCdhdXRoZW50aWNhdGlvbjplbWFpbE5vdFZhbGlkJykgfHwgJ0VtYWlsIGlzIG5vdCB2YWxpZCcgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGxvZ2luVHlwZSA9PT0gJ3VzZXJuYW1lJykge1xuICAgICAgICAgIHJldHVybiB7IG1lc3NhZ2U6IHQoJ2F1dGhlbnRpY2F0aW9uOnVzZXJuYW1lTm90VmFsaWQnKSB8fCAnVXNlcm5hbWUgaXMgbm90IHZhbGlkJyB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1lc3NhZ2U6IGlzUHJvYmFibHlFbWFpbFxuICAgICAgICAgICAgPyB0KCdhdXRoZW50aWNhdGlvbjplbWFpbE5vdFZhbGlkJykgfHwgJ0VtYWlsIGlzIG5vdCB2YWxpZCdcbiAgICAgICAgICAgIDogdCgnYXV0aGVudGljYXRpb246dXNlcm5hbWVOb3RWYWxpZCcpIHx8ICdVc2VybmFtZSBpcyBub3QgdmFsaWQnXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApLFxuICAgIHBhc3N3b3JkOiBwYXNzd29yZEZpZWxkKHsgdCB9KVxuICB9KVxuXG5leHBvcnQgY29uc3QgY3JlYXRlU2lnbnVwU2NoZW1hID0gKHsgdCwgcmVxdWlyZVVzZXJuYW1lID0gZmFsc2UsIHJlcXVpcmVDb25maXJtUGFzc3dvcmQgPSBmYWxzZSB9OiB7IHQ6IFRyYW5zbGF0ZTsgcmVxdWlyZVVzZXJuYW1lPzogYm9vbGVhbjsgcmVxdWlyZUNvbmZpcm1QYXNzd29yZD86IGJvb2xlYW4gfSkgPT4ge1xuICBjb25zdCBzY2hlbWEgPSB6Lm9iamVjdCh7XG4gICAgbmFtZTogei5zdHJpbmcoeyBtZXNzYWdlOiAnTmFtZSBpcyByZXF1aXJlZCcgfSkubWluKDEpLFxuICAgIGVtYWlsOiBlbWFpbEZpZWxkKHsgdCB9KSxcbiAgICB1c2VybmFtZTogdXNlcm5hbWVGaWVsZCh7IHQsIHJlcXVpcmVkOiByZXF1aXJlVXNlcm5hbWUgfSkub3B0aW9uYWwoKSxcbiAgICBwYXNzd29yZDogcGFzc3dvcmRGaWVsZCh7IHQgfSksXG4gICAgY29uZmlybVBhc3N3b3JkOiBjb25maXJtUGFzc3dvcmRGaWVsZCh7IHQsIHJlcXVpcmVkOiByZXF1aXJlQ29uZmlybVBhc3N3b3JkIH0pLm9wdGlvbmFsKClcbiAgfSlcblxuICBpZiAoIXJlcXVpcmVDb25maXJtUGFzc3dvcmQpIHJldHVybiBzY2hlbWFcblxuICByZXR1cm4gc2NoZW1hLnJlZmluZSgoZGF0YSkgPT4gZGF0YS5wYXNzd29yZCA9PT0gZGF0YS5jb25maXJtUGFzc3dvcmQsIHtcbiAgICBwYXRoOiBbJ2NvbmZpcm1QYXNzd29yZCddLFxuICAgIG1lc3NhZ2U6IHQoJ2ZpZWxkczpwYXNzd29yZHNEb05vdE1hdGNoJykgfHwgJ1Bhc3N3b3JkcyBkbyBub3QgbWF0Y2gnXG4gIH0pXG59XG4iXSwibmFtZXMiOlsieiIsImVtYWlsUmVnZXgiLCJ1c2VybmFtZVJlZ2V4IiwiZW1haWxGaWVsZCIsInQiLCJyZXF1aXJlZCIsInNjaGVtYSIsInN0cmluZyIsIm1pbiIsInJlZmluZSIsInZhbCIsInRlc3QiLCJtZXNzYWdlIiwidXNlcm5hbWVGaWVsZCIsIm1pbkxlbmd0aCIsIm1heExlbmd0aCIsImxlbmd0aCIsInBhc3N3b3JkRmllbGQiLCJjb25maXJtUGFzc3dvcmRGaWVsZCIsInBhc3N3b3JkV2l0aENvbmZpcm1hdGlvbiIsIm9iamVjdCIsInBhc3N3b3JkIiwiY29uZmlybVBhc3N3b3JkIiwiZGF0YSIsInBhdGgiLCJpc1ZhbGlkRW1haWwiLCJpc1ZhbGlkVXNlcm5hbWUiLCJjcmVhdGVMb2dpblNjaGVtYSIsImxvZ2luVHlwZSIsImNhbkxvZ2luV2l0aFVzZXJuYW1lIiwidXNlcm5hbWVTZXR0aW5ncyIsImxvZ2luIiwiaXNQcm9iYWJseUVtYWlsIiwiaW5jbHVkZXMiLCJjcmVhdGVTaWdudXBTY2hlbWEiLCJyZXF1aXJlVXNlcm5hbWUiLCJyZXF1aXJlQ29uZmlybVBhc3N3b3JkIiwibmFtZSIsImVtYWlsIiwidXNlcm5hbWUiLCJvcHRpb25hbCJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsQ0FBQyxRQUFRLE1BQUs7QUFFdkIsU0FBU0MsVUFBVSxFQUFFQyxhQUFhLFFBQVEs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
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaGFyZWQvZm9ybS92YWxpZGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHogfSBmcm9tICd6b2QnXG5cbmltcG9ydCB7IGVtYWlsUmVnZXgsIHVzZXJuYW1lUmVnZXggfSBmcm9tICdAL3NoYXJlZC91dGlscy9yZWdleCdcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBUeXBlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogTWluaW1hbCB0cmFuc2xhdGlvbiBmdW5jdGlvbiB0eXBlIGV4dHJhY3RlZCBmcm9tIGBpMThuZXh0YC5cbiAqIEFjY2VwdHMgYSBrZXkgYW5kIHJldHVybnMgdGhlIHRyYW5zbGF0ZWQgc3RyaW5nLlxuICovXG5leHBvcnQgdHlwZSBUcmFuc2xhdGUgPSAoLi4uYXJnczogYW55W10pID0+IHN0cmluZ1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEZpZWxkIGJ1aWxkZXJzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZXhwb3J0IGNvbnN0IGVtYWlsRmllbGQgPSAoeyB0LCByZXF1aXJlZCA9IHRydWUgfTogeyB0OiBUcmFuc2xhdGU7IHJlcXVpcmVkPzogYm9vbGVhbiB9KSA9PiB7XG4gIGxldCBzY2hlbWEgPSB6LnN0cmluZygpXG4gIGlmIChyZXF1aXJlZCkgc2NoZW1hID0gc2NoZW1hLm1pbigxLCB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykpXG4gIHJldHVybiBzY2hlbWEucmVmaW5lKCh2YWwpID0+IGVtYWlsUmVnZXgudGVzdCh2YWwpLCB7XG4gICAgbWVzc2FnZTogdCgnYXV0aGVudGljYXRpb246ZW1haWxOb3RWYWxpZCcpIHx8ICdFbWFpbCBpcyBub3QgdmFsaWQnXG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCB1c2VybmFtZUZpZWxkID0gKHsgdCwgcmVxdWlyZWQgPSB0cnVlIH06IHsgdDogVHJhbnNsYXRlOyByZXF1aXJlZD86IGJvb2xlYW4gfSkgPT4ge1xuICBsZXQgc2NoZW1hID0gei5zdHJpbmcoKVxuICBpZiAocmVxdWlyZWQpIHNjaGVtYSA9IHNjaGVtYS5taW4oMSwgdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpKVxuICByZXR1cm4gc2NoZW1hLnJlZmluZSgodmFsKSA9PiB1c2VybmFtZVJlZ2V4LnRlc3QodmFsKSwge1xuICAgIG1lc3NhZ2U6IHQoJ2F1dGhlbnRpY2F0aW9uOnVzZXJuYW1lTm90VmFsaWQnKSB8fCAnVXNlcm5hbWUgaXMgbm90IHZhbGlkJ1xuICB9KVxufVxuXG5leHBvcnQgY29uc3QgcGFzc3dvcmRGaWVsZCA9ICh7IHQsIHJlcXVpcmVkID0gdHJ1ZSwgbWluTGVuZ3RoID0gMSB9OiB7IHQ6IFRyYW5zbGF0ZTsgcmVxdWlyZWQ/OiBib29sZWFuOyBtaW5MZW5ndGg/OiBudW1iZXIgfSkgPT4ge1xuICBsZXQgc2NoZW1hID0gei5zdHJpbmcoKVxuICBpZiAocmVxdWlyZWQpIHNjaGVtYSA9IHNjaGVtYS5taW4obWluTGVuZ3RoLCB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykgfHwgJ1Bhc3N3b3JkIGlzIHJlcXVpcmVkJylcbiAgcmV0dXJuIHNjaGVtYVxufVxuXG5leHBvcnQgY29uc3QgY29uZmlybVBhc3N3b3JkRmllbGQgPSAoeyB0LCByZXF1aXJlZCA9IHRydWUgfTogeyB0OiBUcmFuc2xhdGU7IHJlcXVpcmVkPzogYm9vbGVhbiB9KSA9PiB7XG4gIGxldCBzY2hlbWEgPSB6LnN0cmluZygpXG4gIGlmIChyZXF1aXJlZCkgc2NoZW1hID0gc2NoZW1hLm1pbigxLCB0KCd2YWxpZGF0aW9uOnJlcXVpcmVkJykgfHwgJ0NvbmZpcm0gcGFzc3dvcmQgaXMgcmVxdWlyZWQnKVxuICByZXR1cm4gc2NoZW1hXG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQ29tcG9zYWJsZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFJldHVybnMgYSBab2Qgb2JqZWN0IHNjaGVtYSB3aXRoIGBwYXNzd29yZGAgYW5kIGBjb25maXJtUGFzc3dvcmRgIGZpZWxkc1xuICogYW5kIGEgcmVmaW5lbWVudCB0aGF0IGVuc3VyZXMgdGhleSBtYXRjaC5cbiAqL1xuZXhwb3J0IGNvbnN0IHBhc3N3b3JkV2l0aENvbmZpcm1hdGlvbiA9ICh7IHQsIG1pbkxlbmd0aCA9IDEgfTogeyB0OiBUcmFuc2xhdGU7IG1pbkxlbmd0aD86IG51bWJlciB9KSA9PlxuICB6XG4gICAgLm9iamVjdCh7XG4gICAgICBwYXNzd29yZDogcGFzc3dvcmRGaWVsZCh7IHQsIG1pbkxlbmd0aCB9KSxcbiAgICAgIGNvbmZpcm1QYXNzd29yZDogY29uZmlybVBhc3N3b3JkRmllbGQoeyB0IH0pXG4gICAgfSlcbiAgICAucmVmaW5lKChkYXRhKSA9PiBkYXRhLnBhc3N3b3JkID09PSBkYXRhLmNvbmZpcm1QYXNzd29yZCwge1xuICAgICAgcGF0aDogWydjb25maXJtUGFzc3dvcmQnXSxcbiAgICAgIG1lc3NhZ2U6IHQoJ2ZpZWxkczpwYXNzd29yZHNEb05vdE1hdGNoJykgfHwgJ1Bhc3N3b3JkcyBkbyBub3QgbWF0Y2gnXG4gICAgfSlcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBVdGlsaXR5IHZhbGlkYXRvcnMgKG5vbuKAkVpvZCkg4oCUIGhhbmR5IGZvciBkeW5hbWljIGxvZ2luIGZpZWxkIGNoZWNrc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkRW1haWwgPSAodmFsOiBzdHJpbmcpID0+IGVtYWlsUmVnZXgudGVzdCh2YWwpXG5leHBvcnQgY29uc3QgaXNWYWxpZFVzZXJuYW1lID0gKHZhbDogc3RyaW5nLCB7IG1pbkxlbmd0aCA9IDUsIG1heExlbmd0aCA9IDEyOCB9OiB7IG1pbkxlbmd0aD86IG51bWJlcjsgbWF4TGVuZ3RoPzogbnVtYmVyIH0gPSB7fSkgPT5cbiAgdXNlcm5hbWVSZWdleC50ZXN0KHZhbCkgJiYgdmFsLmxlbmd0aCA+PSBtaW5MZW5ndGggJiYgdmFsLmxlbmd0aCA8PSBtYXhMZW5ndGhcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTY2hlbWEgYnVpbGRlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG50eXBlIFVzZXJuYW1lU2V0dGluZ3MgPSB7IG1pbkxlbmd0aDogbnVtYmVyOyBtYXhMZW5ndGg6IG51bWJlciB9XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVMb2dpblNjaGVtYSA9ICh7XG4gIHQsXG4gIGxvZ2luVHlwZSxcbiAgY2FuTG9naW5XaXRoVXNlcm5hbWUgPSBmYWxzZSxcbiAgdXNlcm5hbWVTZXR0aW5ncyA9IHsgbWluTGVuZ3RoOiA1LCBtYXhMZW5ndGg6IDEyOCB9XG59OiB7XG4gIHQ6IFRyYW5zbGF0ZVxuICBsb2dpblR5cGU6ICdlbWFpbCcgfCAndXNlcm5hbWUnIHwgJ2VtYWlsT3JVc2VybmFtZSdcbiAgY2FuTG9naW5XaXRoVXNlcm5hbWU/OiBib29sZWFuXG4gIHVzZXJuYW1lU2V0dGluZ3M/OiBVc2VybmFtZVNldHRpbmdzXG59KSA9PlxuICB6Lm9iamVjdCh7XG4gICAgbG9naW46IHouc3RyaW5nKCkucmVmaW5lKFxuICAgICAgKHZhbCkgPT4ge1xuICAgICAgICBpZiAoIXZhbCkgcmV0dXJuIGZhbHNlXG4gICAgICAgIGlmIChsb2dpblR5cGUgPT09ICdlbWFpbCcpIHJldHVybiBpc1ZhbGlkRW1haWwodmFsKVxuICAgICAgICBpZiAobG9naW5UeXBlID09PSAndXNlcm5hbWUnKSByZXR1cm4gaXNWYWxpZFVzZXJuYW1lKHZhbCwgdXNlcm5hbWVTZXR0aW5ncylcbiAgICAgICAgcmV0dXJuIGlzVmFsaWRFbWFpbCh2YWwpIHx8IGlzVmFsaWRVc2VybmFtZSh2YWwsIHVzZXJuYW1lU2V0dGluZ3MpXG4gICAgICB9LFxuICAgICAgKHZhbCkgPT4ge1xuICAgICAgICBpZiAoIXZhbCkgcmV0dXJuIHsgbWVzc2FnZTogdCgndmFsaWRhdGlvbjpyZXF1aXJlZCcpIH1cblxuICAgICAgICBjb25zdCBpc1Byb2JhYmx5RW1haWwgPSB2YWwuaW5jbHVkZXMoJ0AnKSB8fCAhY2FuTG9naW5XaXRoVXNlcm5hbWVcblxuICAgICAgICBpZiAobG9naW5UeXBlID09PSAnZW1haWwnKSB7XG4gICAgICAgICAgcmV0dXJuIHsgbWVzc2FnZTogdCgnYXV0aGVudGljYXRpb246ZW1haWxOb3RWYWxpZCcpIHx8ICdFbWFpbCBpcyBub3QgdmFsaWQnIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsb2dpblR5cGUgPT09ICd1c2VybmFtZScpIHtcbiAgICAgICAgICByZXR1cm4geyBtZXNzYWdlOiB0KCdhdXRoZW50aWNhdGlvbjp1c2VybmFtZU5vdFZhbGlkJykgfHwgJ1VzZXJuYW1lIGlzIG5vdCB2YWxpZCcgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtZXNzYWdlOiBpc1Byb2JhYmx5RW1haWxcbiAgICAgICAgICAgID8gdCgnYXV0aGVudGljYXRpb246ZW1haWxOb3RWYWxpZCcpIHx8ICdFbWFpbCBpcyBub3QgdmFsaWQnXG4gICAgICAgICAgICA6IHQoJ2F1dGhlbnRpY2F0aW9uOnVzZXJuYW1lTm90VmFsaWQnKSB8fCAnVXNlcm5hbWUgaXMgbm90IHZhbGlkJ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKSxcbiAgICBwYXNzd29yZDogcGFzc3dvcmRGaWVsZCh7IHQgfSlcbiAgfSlcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNpZ251cFNjaGVtYSA9ICh7IHQsIHJlcXVpcmVVc2VybmFtZSA9IGZhbHNlLCByZXF1aXJlQ29uZmlybVBhc3N3b3JkID0gZmFsc2UgfTogeyB0OiBUcmFuc2xhdGU7IHJlcXVpcmVVc2VybmFtZT86IGJvb2xlYW47IHJlcXVpcmVDb25maXJtUGFzc3dvcmQ/OiBib29sZWFuIH0pID0+IHtcbiAgY29uc3Qgc2NoZW1hID0gei5vYmplY3Qoe1xuICAgIG5hbWU6IHouc3RyaW5nKHsgbWVzc2FnZTogJ05hbWUgaXMgcmVxdWlyZWQnIH0pLm1pbigxKSxcbiAgICBlbWFpbDogZW1haWxGaWVsZCh7IHQgfSksXG4gICAgdXNlcm5hbWU6IHVzZXJuYW1lRmllbGQoeyB0LCByZXF1aXJlZDogcmVxdWlyZVVzZXJuYW1lIH0pLm9wdGlvbmFsKCksXG4gICAgcGFzc3dvcmQ6IHBhc3N3b3JkRmllbGQoeyB0IH0pLFxuICAgIGNvbmZpcm1QYXNzd29yZDogY29uZmlybVBhc3N3b3JkRmllbGQoeyB0LCByZXF1aXJlZDogcmVxdWlyZUNvbmZpcm1QYXNzd29yZCB9KS5vcHRpb25hbCgpXG4gIH0pXG5cbiAgaWYgKCFyZXF1aXJlQ29uZmlybVBhc3N3b3JkKSByZXR1cm4gc2NoZW1hXG5cbiAgcmV0dXJuIHNjaGVtYS5yZWZpbmUoKGRhdGEpID0+IGRhdGEucGFzc3dvcmQgPT09IGRhdGEuY29uZmlybVBhc3N3b3JkLCB7XG4gICAgcGF0aDogWydjb25maXJtUGFzc3dvcmQnXSxcbiAgICBtZXNzYWdlOiB0KCdmaWVsZHM6cGFzc3dvcmRzRG9Ob3RNYXRjaCcpIHx8ICdQYXNzd29yZHMgZG8gbm90IG1hdGNoJ1xuICB9KVxufVxuIl0sIm5hbWVzIjpbInoiLCJlbWFpbFJlZ2V4IiwidXNlcm5hbWVSZWdleCIsImVtYWlsRmllbGQiLCJ0IiwicmVxdWlyZWQiLCJzY2hlbWEiLCJzdHJpbmciLCJtaW4iLCJyZWZpbmUiLCJ2YWwiLCJ0ZXN0IiwibWVzc2FnZSIsInVzZXJuYW1lRmllbGQiLCJwYXNzd29yZEZpZWxkIiwibWluTGVuZ3RoIiwiY29uZmlybVBhc3N3b3JkRmllbGQiLCJwYXNzd29yZFdpdGhDb25maXJtYXRpb24iLCJvYmplY3QiLCJwYXNzd29yZCIsImNvbmZpcm1QYXNzd29yZCIsImRhdGEiLCJwYXRoIiwiaXNWYWxpZEVtYWlsIiwiaXNWYWxpZFVzZXJuYW1lIiwibWF4TGVuZ3RoIiwibGVuZ3RoIiwiY3JlYXRlTG9naW5TY2hlbWEiLCJsb2dpblR5cGUiLCJjYW5Mb2dpbldpdGhVc2VybmFtZSIsInVzZXJuYW1lU2V0dGluZ3MiLCJsb2dpbiIsImlzUHJvYmFibHlFbWFpbCIsImluY2x1ZGVzIiwiY3JlYXRlU2lnbnVwU2NoZW1hIiwicmVxdWlyZVVzZXJuYW1lIiwicmVxdWlyZUNvbmZpcm1QYXNzd29yZCIsIm5hbWUiLCJlbWFpbCIsInVzZXJuYW1lIiwib3B0aW9uYWwiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLENBQUMsUUFBUSxNQUFLO0FBRXZCLFNBQVNDLFVBQVUsRUFBRUMsYUFBYSxRQUFRLGlCQUFzQjtBQVloRSw4RUFBOEU7QUFDOUUsaUJBQWlCO0FBQ2pCLDhFQUE4RTtBQUU5RSxPQUFPLE1BQU1DLGFBQWEsQ0FBQyxFQUFFQyxDQUFDLEVBQUVDLFdBQVcsSUFBSSxFQUF3QztJQUNyRixJQUFJQyxTQUFTTixFQUFFTyxNQUFNO0lBQ3JCLElBQUlGLFVBQVVDLFNBQVNBLE9BQU9FLEdBQUcsQ0FBQyxHQUFHSixFQUFFO0lBQ3ZDLE9BQU9FLE9BQU9HLE1BQU0sQ0FBQyxDQUFDQyxNQUFRVCxXQUFXVSxJQUFJLENBQUNELE1BQU07UUFDbERFLFNBQVNSLEVBQUUsbUNBQW1DO0lBQ2hEO0FBQ0YsRUFBQztBQUVELE9BQU8sTUFBTVMsZ0JBQWdCLENBQUMsRUFBRVQsQ0FBQyxFQUFFQyxXQUFXLElBQUksRUFBd0M7SUFDeEYsSUFBSUMsU0FBU04sRUFBRU8sTUFBTTtJQUNyQixJQUFJRixVQUFVQyxTQUFTQSxPQUFPRSxHQUFHLENBQUMsR0FBR0osRUFBRTtJQUN2QyxPQUFPRSxPQUFPRyxNQUFNLENBQUMsQ0FBQ0MsTUFBUVIsY0FBY1MsSUFBSSxDQUFDRCxNQUFNO1FBQ3JERSxTQUFTUixFQUFFLHNDQUFzQztJQUNuRDtBQUNGLEVBQUM7QUFFRCxPQUFPLE1BQU1VLGdCQUFnQixDQUFDLEVBQUVWLENBQUMsRUFBRUMsV0FBVyxJQUFJLEVBQUVVLFlBQVksQ0FBQyxFQUE0RDtJQUMzSCxJQUFJVCxTQUFTTixFQUFFTyxNQUFNO0lBQ3JCLElBQUlGLFVBQVVDLFNBQVNBLE9BQU9FLEdBQUcsQ0FBQ08sV0FBV1gsRUFBRSwwQkFBMEI7SUFDekUsT0FBT0U7QUFDVCxFQUFDO0FBRUQsT0FBTyxNQUFNVSx1QkFBdUIsQ0FBQyxFQUFFWixDQUFDLEVBQUVDLFdBQVcsSUFBSSxFQUF3QztJQUMvRixJQUFJQyxTQUFTTixFQUFFTyxNQUFNO0lBQ3JCLElBQUlGLFVBQVVDLFNBQVNBLE9BQU9FLEdBQUcsQ0FBQyxHQUFHSixFQUFFLDBCQUEwQjtJQUNqRSxPQUFPRTtBQUNULEVBQUM7QUFFRCw4RUFBOEU7QUFDOUUsY0FBYztBQUNkLDhFQUE4RTtBQUU5RTs7O0NBR0MsR0FDRCxPQUFPLE1BQU1XLDJCQUEyQixDQUFDLEVBQUViLENBQUMsRUFBRVcsWUFBWSxDQUFDLEVBQXdDLEdBQ2pHZixFQUNHa0IsTUFBTSxDQUFDO1FBQ05DLFVBQVVMLGNBQWM7WUFBRVY7WUFBR1c7UUFBVTtRQUN2Q0ssaUJBQWlCSixxQkFBcUI7WUFBRVo7UUFBRTtJQUM1QyxHQUNDSyxNQUFNLENBQUMsQ0FBQ1ksT0FBU0EsS0FBS0YsUUFBUSxLQUFLRSxLQUFLRCxlQUFlLEVBQUU7UUFDeERFLE1BQU07WUFBQztTQUFrQjtRQUN6QlYsU0FBU1IsRUFBRSxpQ0FBaUM7SUFDOUMsR0FBRTtBQUVOLDhFQUE4RTtBQUM5RSxzRUFBc0U7QUFDdEUsOEVBQThFO0FBRTlFLE9BQU8sTUFBTW1CLGVBQWUsQ0FBQ2IsTUFBZ0JULFdBQVdVLElBQUksQ0FBQ0QsS0FBSTtBQUNqRSxPQUFPLE1BQU1jLGtCQUFrQixDQUFDZCxLQUFhLEVBQUVLLFlBQVksQ0FBQyxFQUFFVSxZQUFZLEdBQUcsRUFBOEMsR0FBRyxDQUFDLENBQUMsR0FDOUh2QixjQUFjUyxJQUFJLENBQUNELFFBQVFBLElBQUlnQixNQUFNLElBQUlYLGFBQWFMLElBQUlnQixNQUFNLElBQUlELFVBQVM7QUFRL0UsT0FBTyxNQUFNRSxvQkFBb0IsQ0FBQyxFQUNoQ3ZCLENBQUMsRUFDRHdCLFNBQVMsRUFDVEMsdUJBQXVCLEtBQUssRUFDNUJDLG1CQUFtQjtJQUFFZixXQUFXO0lBQUdVLFdBQVc7QUFBSSxDQUFDLEVBTXBELEdBQ0N6QixFQUFFa0IsTUFBTSxDQUFDO1FBQ1BhLE9BQU8vQixFQUFFTyxNQUFNLEdBQUdFLE1BQU0sQ0FDdEIsQ0FBQ0M7WUFDQyxJQUFJLENBQUNBLEtBQUssT0FBTztZQUNqQixJQUFJa0IsY0FBYyxTQUFTLE9BQU9MLGFBQWFiO1lBQy9DLElBQUlrQixjQUFjLFlBQVksT0FBT0osZ0JBQWdCZCxLQUFLb0I7WUFDMUQsT0FBT1AsYUFBYWIsUUFBUWMsZ0JBQWdCZCxLQUFLb0I7UUFDbkQsR0FDQSxDQUFDcEI7WUFDQyxJQUFJLENBQUNBLEtBQUssT0FBTztnQkFBRUUsU0FBU1IsRUFBRTtZQUF1QjtZQUVyRCxNQUFNNEIsa0JBQWtCdEIsSUFBSXVCLFFBQVEsQ0FBQyxRQUFRLENBQUNKO1lBRTlDLElBQUlELGNBQWMsU0FBUztnQkFDekIsT0FBTztvQkFBRWhCLFNBQVNSLEVBQUUsbUNBQW1DO2dCQUFxQjtZQUM5RTtZQUVBLElBQUl3QixjQUFjLFlBQVk7Z0JBQzVCLE9BQU87b0JBQUVoQixTQUFTUixFQUFFLHNDQUFzQztnQkFBd0I7WUFDcEY7WUFFQSxPQUFPO2dCQUNMUSxTQUFTb0Isa0JBQ0w1QixFQUFFLG1DQUFtQyx1QkFDckNBLEVBQUUsc0NBQXNDO1lBQzlDO1FBQ0Y7UUFFRmUsVUFBVUwsY0FBYztZQUFFVjtRQUFFO0lBQzlCLEdBQUU7QUFFSixPQUFPLE1BQU04QixxQkFBcUIsQ0FBQyxFQUFFOUIsQ0FBQyxFQUFFK0Isa0JBQWtCLEtBQUssRUFBRUMseUJBQXlCLEtBQUssRUFBaUY7SUFDOUssTUFBTTlCLFNBQVNOLEVBQUVrQixNQUFNLENBQUM7UUFDdEJtQixNQUFNckMsRUFBRU8sTUFBTSxDQUFDO1lBQUVLLFNBQVM7UUFBbUIsR0FBR0osR0FBRyxDQUFDO1FBQ3BEOEIsT0FBT25DLFdBQVc7WUFBRUM7UUFBRTtRQUN0Qm1DLFVBQVUxQixjQUFjO1lBQUVUO1lBQUdDLFVBQVU4QjtRQUFnQixHQUFHSyxRQUFRO1FBQ2xFckIsVUFBVUwsY0FBYztZQUFFVjtRQUFFO1FBQzVCZ0IsaUJBQWlCSixxQkFBcUI7WUFBRVo7WUFBR0MsVUFBVStCO1FBQXVCLEdBQUdJLFFBQVE7SUFDekY7SUFFQSxJQUFJLENBQUNKLHdCQUF3QixPQUFPOUI7SUFFcEMsT0FBT0EsT0FBT0csTUFBTSxDQUFDLENBQUNZLE9BQVNBLEtBQUtGLFFBQVEsS0FBS0UsS0FBS0QsZUFBZSxFQUFFO1FBQ3JFRSxNQUFNO1lBQUM7U0FBa0I7UUFDekJWLFNBQVNSLEVBQUUsaUNBQWlDO0lBQzlDO0FBQ0YsRUFBQyJ9
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"signup.d.ts","sourceRoot":"","sources":["../../../../../../../src/better-auth/plugin/lib/build-collections/users/endpoints/signup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AAEpE,OAAO,EAAgF,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAA;AAuBrH,eAAO,MAAM,iBAAiB,GAAI,eAAe,uBAAuB,KAAG,QAkI1E,CAAA"}
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import { adminEndpoints, baseSlugs, supportedBAPluginIds } from "../../../../constants";
|
|
2
|
-
import { status as httpStatus } from "http-status";
|
|
3
|
-
import { addDataAndFileToRequest, commitTransaction, initTransaction, killTransaction } from "payload";
|
|
4
|
-
import { z } from "zod";
|
|
5
|
-
import { getRequestCollection } from "../../../../helpers/get-requst-collection";
|
|
6
|
-
import { createSignupSchema } from "../../../../../../shared/form/validation";
|
|
7
|
-
import { checkPluginExists } from "../../../../helpers/check-plugin-exists";
|
|
8
|
-
const sendJSON = (data, status)=>new Response(JSON.stringify(data), {
|
|
9
|
-
headers: {
|
|
10
|
-
'Content-Type': 'application/json'
|
|
11
|
-
},
|
|
12
|
-
status
|
|
13
|
-
});
|
|
14
|
-
const forwardCookies = (from, to)=>{
|
|
15
|
-
const setCookieHeader = from.headers.get('set-cookie');
|
|
16
|
-
if (!setCookieHeader) return;
|
|
17
|
-
setCookieHeader.split(',').forEach((c)=>to.headers.append('Set-Cookie', c.trim()));
|
|
18
|
-
};
|
|
19
|
-
const routeParamsSchema = z.object({
|
|
20
|
-
token: z.string(),
|
|
21
|
-
redirect: z.string().optional()
|
|
22
|
-
});
|
|
23
|
-
export const getSignupEndpoint = (pluginOptions)=>{
|
|
24
|
-
const { betterAuthOptions = {}, adminInvitations, users } = pluginOptions;
|
|
25
|
-
const { baseURL = '', basePath = '/api/auth', emailVerification, emailAndPassword } = betterAuthOptions;
|
|
26
|
-
if (!baseURL) {
|
|
27
|
-
throw new Error('betterAuthOptions.baseURL is required for server‑side authentication calls');
|
|
28
|
-
}
|
|
29
|
-
const adminInvitationsSlug = adminInvitations?.slug ?? baseSlugs.adminInvitations;
|
|
30
|
-
const usersSlug = users?.slug ?? baseSlugs.users;
|
|
31
|
-
const endpoint = {
|
|
32
|
-
path: adminEndpoints.signup,
|
|
33
|
-
method: 'post',
|
|
34
|
-
handler: async (req)=>{
|
|
35
|
-
await addDataAndFileToRequest(req);
|
|
36
|
-
const collection = getRequestCollection(req);
|
|
37
|
-
const { t } = req;
|
|
38
|
-
const shouldCommit = await initTransaction(req);
|
|
39
|
-
try {
|
|
40
|
-
const { success: routeParamsSuccess, data: routeParamsData, error: routeParamsError } = routeParamsSchema.safeParse(req.query);
|
|
41
|
-
if (!routeParamsSuccess) {
|
|
42
|
-
await killTransaction(req);
|
|
43
|
-
return sendJSON({
|
|
44
|
-
error: 'INVALID_PARAMS',
|
|
45
|
-
message: routeParamsError.message
|
|
46
|
-
}, httpStatus.BAD_REQUEST);
|
|
47
|
-
}
|
|
48
|
-
const inviteResult = await req.payload.find({
|
|
49
|
-
collection: adminInvitationsSlug,
|
|
50
|
-
where: {
|
|
51
|
-
token: {
|
|
52
|
-
equals: routeParamsData.token
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
limit: 1,
|
|
56
|
-
req
|
|
57
|
-
});
|
|
58
|
-
const inviteDoc = inviteResult.docs.at(0);
|
|
59
|
-
if (!inviteDoc) {
|
|
60
|
-
await killTransaction(req);
|
|
61
|
-
return sendJSON({
|
|
62
|
-
error: 'INVALID_TOKEN',
|
|
63
|
-
message: 'Invalid token'
|
|
64
|
-
}, httpStatus.UNAUTHORIZED);
|
|
65
|
-
}
|
|
66
|
-
const hasUsernamePlugin = checkPluginExists(betterAuthOptions, supportedBAPluginIds.username);
|
|
67
|
-
const supportsLoginWithUsername = hasUsernamePlugin && collection.config?.auth?.loginWithUsername;
|
|
68
|
-
const requireUsername = hasUsernamePlugin && typeof collection.config?.auth?.loginWithUsername === 'object' && !!collection.config?.auth?.loginWithUsername?.requireUsername;
|
|
69
|
-
const signupSchema = createSignupSchema({
|
|
70
|
-
t,
|
|
71
|
-
requireUsername,
|
|
72
|
-
requireConfirmPassword: false
|
|
73
|
-
});
|
|
74
|
-
const parsedBody = signupSchema.safeParse(req.data);
|
|
75
|
-
if (!parsedBody.success) {
|
|
76
|
-
await killTransaction(req);
|
|
77
|
-
const messages = parsedBody.error.issues.map((issue)=>issue.message);
|
|
78
|
-
return sendJSON({
|
|
79
|
-
error: {
|
|
80
|
-
message: messages
|
|
81
|
-
}
|
|
82
|
-
}, httpStatus.BAD_REQUEST);
|
|
83
|
-
}
|
|
84
|
-
const { name, email, password, username } = parsedBody.data;
|
|
85
|
-
const authApiURL = `${baseURL}${basePath}`;
|
|
86
|
-
const url = new URL(`${authApiURL}/sign-up/email`);
|
|
87
|
-
url.searchParams.set('callbackURL', routeParamsData.redirect ?? `${baseURL}${req.payload.config.routes.admin}`);
|
|
88
|
-
if (routeParamsData.token) {
|
|
89
|
-
url.searchParams.set('adminInviteToken', routeParamsData.token);
|
|
90
|
-
}
|
|
91
|
-
const apiResponse = await fetch(url.toString(), {
|
|
92
|
-
method: 'POST',
|
|
93
|
-
headers: {
|
|
94
|
-
'Content-Type': 'application/json'
|
|
95
|
-
},
|
|
96
|
-
body: JSON.stringify({
|
|
97
|
-
name,
|
|
98
|
-
email,
|
|
99
|
-
password,
|
|
100
|
-
...supportsLoginWithUsername && username && {
|
|
101
|
-
username
|
|
102
|
-
}
|
|
103
|
-
})
|
|
104
|
-
});
|
|
105
|
-
if (!apiResponse.ok) {
|
|
106
|
-
throw new Error(apiResponse.statusText);
|
|
107
|
-
}
|
|
108
|
-
const responseData = await apiResponse.json();
|
|
109
|
-
await req.payload.update({
|
|
110
|
-
collection: usersSlug,
|
|
111
|
-
id: responseData.user.id,
|
|
112
|
-
data: {
|
|
113
|
-
role: inviteDoc.role
|
|
114
|
-
},
|
|
115
|
-
overrideAccess: true,
|
|
116
|
-
req
|
|
117
|
-
});
|
|
118
|
-
await req.payload.delete({
|
|
119
|
-
collection: adminInvitationsSlug,
|
|
120
|
-
where: {
|
|
121
|
-
token: {
|
|
122
|
-
equals: inviteDoc.token
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
req
|
|
126
|
-
});
|
|
127
|
-
const requireEmailVerification = (emailAndPassword?.requireEmailVerification || collection.config.auth.verify) && !responseData.user.emailVerified;
|
|
128
|
-
const sentEmailVerification = emailVerification?.sendVerificationEmail !== undefined;
|
|
129
|
-
if (requireEmailVerification) {
|
|
130
|
-
const res = sendJSON({
|
|
131
|
-
message: t('authentication:verifyYourEmail'),
|
|
132
|
-
sentEmailVerification,
|
|
133
|
-
requireEmailVerification
|
|
134
|
-
}, httpStatus.UNAUTHORIZED);
|
|
135
|
-
forwardCookies(apiResponse, res);
|
|
136
|
-
if (shouldCommit) await commitTransaction(req);
|
|
137
|
-
return res;
|
|
138
|
-
}
|
|
139
|
-
const successRes = sendJSON({
|
|
140
|
-
message: t('authentication:passed'),
|
|
141
|
-
...responseData
|
|
142
|
-
}, httpStatus.OK);
|
|
143
|
-
forwardCookies(apiResponse, successRes);
|
|
144
|
-
if (shouldCommit) await commitTransaction(req);
|
|
145
|
-
return successRes;
|
|
146
|
-
} catch (error) {
|
|
147
|
-
await killTransaction(req);
|
|
148
|
-
return sendJSON({
|
|
149
|
-
message: error.message
|
|
150
|
-
}, httpStatus.INTERNAL_SERVER_ERROR);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
};
|
|
154
|
-
return endpoint;
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9iZXR0ZXItYXV0aC9wbHVnaW4vbGliL2J1aWxkLWNvbGxlY3Rpb25zL3VzZXJzL2VuZHBvaW50cy9zaWdudXAudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRtaW5FbmRwb2ludHMsIGJhc2VTbHVncywgc3VwcG9ydGVkQkFQbHVnaW5JZHMgfSBmcm9tICdAL2JldHRlci1hdXRoL3BsdWdpbi9jb25zdGFudHMnXG5pbXBvcnQgeyBCZXR0ZXJBdXRoUGx1Z2luT3B0aW9ucyB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL3R5cGVzJ1xuaW1wb3J0IHsgc3RhdHVzIGFzIGh0dHBTdGF0dXMgfSBmcm9tICdodHRwLXN0YXR1cydcbmltcG9ydCB7IGFkZERhdGFBbmRGaWxlVG9SZXF1ZXN0LCBjb21taXRUcmFuc2FjdGlvbiwgaW5pdFRyYW5zYWN0aW9uLCBraWxsVHJhbnNhY3Rpb24sIHR5cGUgRW5kcG9pbnQgfSBmcm9tICdwYXlsb2FkJ1xuaW1wb3J0IHsgeiB9IGZyb20gJ3pvZCdcbmltcG9ydCB7IGdldFJlcXVlc3RDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vaGVscGVycy9nZXQtcmVxdXN0LWNvbGxlY3Rpb24nXG5pbXBvcnQgeyBjcmVhdGVTaWdudXBTY2hlbWEgfSBmcm9tICdAL3NoYXJlZC9mb3JtL3ZhbGlkYXRpb24nXG5pbXBvcnQgeyBjaGVja1BsdWdpbkV4aXN0cyB9IGZyb20gJ0AvYmV0dGVyLWF1dGgvcGx1Z2luL2hlbHBlcnMvY2hlY2stcGx1Z2luLWV4aXN0cydcblxuY29uc3Qgc2VuZEpTT04gPSAoZGF0YTogdW5rbm93biwgc3RhdHVzOiBudW1iZXIpOiBSZXNwb25zZSA9PlxuICBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSksIHtcbiAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSxcbiAgICBzdGF0dXNcbiAgfSlcblxuY29uc3QgZm9yd2FyZENvb2tpZXMgPSAoZnJvbTogUmVzcG9uc2UsIHRvOiBSZXNwb25zZSk6IHZvaWQgPT4ge1xuICBjb25zdCBzZXRDb29raWVIZWFkZXIgPSBmcm9tLmhlYWRlcnMuZ2V0KCdzZXQtY29va2llJylcbiAgaWYgKCFzZXRDb29raWVIZWFkZXIpIHJldHVyblxuICBzZXRDb29raWVIZWFkZXIuc3BsaXQoJywnKS5mb3JFYWNoKChjKSA9PiB0by5oZWFkZXJzLmFwcGVuZCgnU2V0LUNvb2tpZScsIGMudHJpbSgpKSlcbn1cblxuY29uc3Qgcm91dGVQYXJhbXNTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHRva2VuOiB6LnN0cmluZygpLFxuICByZWRpcmVjdDogei5zdHJpbmcoKS5vcHRpb25hbCgpXG59KVxuXG5leHBvcnQgY29uc3QgZ2V0U2lnbnVwRW5kcG9pbnQgPSAocGx1Z2luT3B0aW9uczogQmV0dGVyQXV0aFBsdWdpbk9wdGlvbnMpOiBFbmRwb2ludCA9PiB7XG4gIGNvbnN0IHsgYmV0dGVyQXV0aE9wdGlvbnMgPSB7fSwgYWRtaW5JbnZpdGF0aW9ucywgdXNlcnMgfSA9IHBsdWdpbk9wdGlvbnNcbiAgY29uc3QgeyBiYXNlVVJMID0gJycsIGJhc2VQYXRoID0gJy9hcGkvYXV0aCcsIGVtYWlsVmVyaWZpY2F0aW9uLCBlbWFpbEFuZFBhc3N3b3JkIH0gPSBiZXR0ZXJBdXRoT3B0aW9uc1xuXG4gIGlmICghYmFzZVVSTCkge1xuICAgIHRocm93IG5ldyBFcnJvcignYmV0dGVyQXV0aE9wdGlvbnMuYmFzZVVSTCBpcyByZXF1aXJlZCBmb3Igc2VydmVy4oCRc2lkZSBhdXRoZW50aWNhdGlvbiBjYWxscycpXG4gIH1cblxuICBjb25zdCBhZG1pbkludml0YXRpb25zU2x1ZyA9IGFkbWluSW52aXRhdGlvbnM/LnNsdWcgPz8gYmFzZVNsdWdzLmFkbWluSW52aXRhdGlvbnNcbiAgY29uc3QgdXNlcnNTbHVnID0gdXNlcnM/LnNsdWcgPz8gYmFzZVNsdWdzLnVzZXJzXG5cbiAgY29uc3QgZW5kcG9pbnQ6IEVuZHBvaW50ID0ge1xuICAgIHBhdGg6IGFkbWluRW5kcG9pbnRzLnNpZ251cCxcbiAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICBoYW5kbGVyOiBhc3luYyAocmVxKSA9PiB7XG4gICAgICBhd2FpdCBhZGREYXRhQW5kRmlsZVRvUmVxdWVzdChyZXEpXG4gICAgICBjb25zdCBjb2xsZWN0aW9uID0gZ2V0UmVxdWVzdENvbGxlY3Rpb24ocmVxKVxuICAgICAgY29uc3QgeyB0IH0gPSByZXFcblxuICAgICAgY29uc3Qgc2hvdWxkQ29tbWl0ID0gYXdhaXQgaW5pdFRyYW5zYWN0aW9uKHJlcSlcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgeyBzdWNjZXNzOiByb3V0ZVBhcmFtc1N1Y2Nlc3MsIGRhdGE6IHJvdXRlUGFyYW1zRGF0YSwgZXJyb3I6IHJvdXRlUGFyYW1zRXJyb3IgfSA9IHJvdXRlUGFyYW1zU2NoZW1hLnNhZmVQYXJzZShyZXEucXVlcnkpXG5cbiAgICAgICAgaWYgKCFyb3V0ZVBhcmFtc1N1Y2Nlc3MpIHtcbiAgICAgICAgICBhd2FpdCBraWxsVHJhbnNhY3Rpb24ocmVxKVxuICAgICAgICAgIHJldHVybiBzZW5kSlNPTih7IGVycm9yOiAnSU5WQUxJRF9QQVJBTVMnLCBtZXNzYWdlOiByb3V0ZVBhcmFtc0Vycm9yLm1lc3NhZ2UgfSwgaHR0cFN0YXR1cy5CQURfUkVRVUVTVClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGludml0ZVJlc3VsdCA9IGF3YWl0IHJlcS5wYXlsb2FkLmZpbmQoe1xuICAgICAgICAgIGNvbGxlY3Rpb246IGFkbWluSW52aXRhdGlvbnNTbHVnLFxuICAgICAgICAgIHdoZXJlOiB7IHRva2VuOiB7IGVxdWFsczogcm91dGVQYXJhbXNEYXRhLnRva2VuIH0gfSxcbiAgICAgICAgICBsaW1pdDogMSxcbiAgICAgICAgICByZXFcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBpbnZpdGVEb2MgPSBpbnZpdGVSZXN1bHQuZG9jcy5hdCgwKVxuXG4gICAgICAgIGlmICghaW52aXRlRG9jKSB7XG4gICAgICAgICAgYXdhaXQga2lsbFRyYW5zYWN0aW9uKHJlcSlcbiAgICAgICAgICByZXR1cm4gc2VuZEpTT04oeyBlcnJvcjogJ0lOVkFMSURfVE9LRU4nLCBtZXNzYWdlOiAnSW52YWxpZCB0b2tlbicgfSwgaHR0cFN0YXR1cy5VTkFVVEhPUklaRUQpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBoYXNVc2VybmFtZVBsdWdpbiA9IGNoZWNrUGx1Z2luRXhpc3RzKGJldHRlckF1dGhPcHRpb25zLCBzdXBwb3J0ZWRCQVBsdWdpbklkcy51c2VybmFtZSlcbiAgICAgICAgY29uc3Qgc3VwcG9ydHNMb2dpbldpdGhVc2VybmFtZSA9IGhhc1VzZXJuYW1lUGx1Z2luICYmIGNvbGxlY3Rpb24uY29uZmlnPy5hdXRoPy5sb2dpbldpdGhVc2VybmFtZVxuICAgICAgICBjb25zdCByZXF1aXJlVXNlcm5hbWUgPVxuICAgICAgICAgIGhhc1VzZXJuYW1lUGx1Z2luICYmXG4gICAgICAgICAgdHlwZW9mIGNvbGxlY3Rpb24uY29uZmlnPy5hdXRoPy5sb2dpbldpdGhVc2VybmFtZSA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAhIWNvbGxlY3Rpb24uY29uZmlnPy5hdXRoPy5sb2dpbldpdGhVc2VybmFtZT8ucmVxdWlyZVVzZXJuYW1lXG5cbiAgICAgICAgY29uc3Qgc2lnbnVwU2NoZW1hID0gY3JlYXRlU2lnbnVwU2NoZW1hKHsgdCwgcmVxdWlyZVVzZXJuYW1lLCByZXF1aXJlQ29uZmlybVBhc3N3b3JkOiBmYWxzZSB9KVxuICAgICAgICBjb25zdCBwYXJzZWRCb2R5ID0gc2lnbnVwU2NoZW1hLnNhZmVQYXJzZShyZXEuZGF0YSlcblxuICAgICAgICBpZiAoIXBhcnNlZEJvZHkuc3VjY2Vzcykge1xuICAgICAgICAgIGF3YWl0IGtpbGxUcmFuc2FjdGlvbihyZXEpXG4gICAgICAgICAgY29uc3QgbWVzc2FnZXMgPSBwYXJzZWRCb2R5LmVycm9yLmlzc3Vlcy5tYXAoKGlzc3VlKSA9PiBpc3N1ZS5tZXNzYWdlKVxuICAgICAgICAgIHJldHVybiBzZW5kSlNPTih7IGVycm9yOiB7IG1lc3NhZ2U6IG1lc3NhZ2VzIH0gfSwgaHR0cFN0YXR1cy5CQURfUkVRVUVTVClcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHsgbmFtZSwgZW1haWwsIHBhc3N3b3JkLCB1c2VybmFtZSB9ID0gcGFyc2VkQm9keS5kYXRhXG5cbiAgICAgICAgY29uc3QgYXV0aEFwaVVSTCA9IGAke2Jhc2VVUkx9JHtiYXNlUGF0aH1gXG4gICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoYCR7YXV0aEFwaVVSTH0vc2lnbi11cC9lbWFpbGApXG4gICAgICAgIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdjYWxsYmFja1VSTCcsIHJvdXRlUGFyYW1zRGF0YS5yZWRpcmVjdCA/PyBgJHtiYXNlVVJMfSR7cmVxLnBheWxvYWQuY29uZmlnLnJvdXRlcy5hZG1pbn1gKVxuICAgICAgICBpZiAocm91dGVQYXJhbXNEYXRhLnRva2VuKSB7XG4gICAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2FkbWluSW52aXRlVG9rZW4nLCByb3V0ZVBhcmFtc0RhdGEudG9rZW4pXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcGlSZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybC50b1N0cmluZygpLCB7XG4gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICAgICAgaGVhZGVyczogeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nIH0sXG4gICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGVtYWlsLFxuICAgICAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgICAgICAuLi4oc3VwcG9ydHNMb2dpbldpdGhVc2VybmFtZSAmJiB1c2VybmFtZSAmJiB7IHVzZXJuYW1lIH0pXG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcblxuICAgICAgICBpZiAoIWFwaVJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGFwaVJlc3BvbnNlLnN0YXR1c1RleHQpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXNwb25zZURhdGEgPSBhd2FpdCBhcGlSZXNwb25zZS5qc29uKClcblxuICAgICAgICBhd2FpdCByZXEucGF5bG9hZC51cGRhdGUoe1xuICAgICAgICAgIGNvbGxlY3Rpb246IHVzZXJzU2x1ZyxcbiAgICAgICAgICBpZDogcmVzcG9uc2VEYXRhLnVzZXIuaWQsXG4gICAgICAgICAgZGF0YTogeyByb2xlOiBpbnZpdGVEb2Mucm9sZSB9LFxuICAgICAgICAgIG92ZXJyaWRlQWNjZXNzOiB0cnVlLFxuICAgICAgICAgIHJlcVxuICAgICAgICB9KVxuXG4gICAgICAgIGF3YWl0IHJlcS5wYXlsb2FkLmRlbGV0ZSh7XG4gICAgICAgICAgY29sbGVjdGlvbjogYWRtaW5JbnZpdGF0aW9uc1NsdWcsXG4gICAgICAgICAgd2hlcmU6IHsgdG9rZW46IHsgZXF1YWxzOiBpbnZpdGVEb2MudG9rZW4gfSB9LFxuICAgICAgICAgIHJlcVxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IHJlcXVpcmVFbWFpbFZlcmlmaWNhdGlvbiA9XG4gICAgICAgICAgKGVtYWlsQW5kUGFzc3dvcmQ/LnJlcXVpcmVFbWFpbFZlcmlmaWNhdGlvbiB8fCBjb2xsZWN0aW9uLmNvbmZpZy5hdXRoLnZlcmlmeSkgJiYgIXJlc3BvbnNlRGF0YS51c2VyLmVtYWlsVmVyaWZpZWRcblxuICAgICAgICBjb25zdCBzZW50RW1haWxWZXJpZmljYXRpb24gPSBlbWFpbFZlcmlmaWNhdGlvbj8uc2VuZFZlcmlmaWNhdGlvbkVtYWlsICE9PSB1bmRlZmluZWRcblxuICAgICAgICBpZiAocmVxdWlyZUVtYWlsVmVyaWZpY2F0aW9uKSB7XG4gICAgICAgICAgY29uc3QgcmVzID0gc2VuZEpTT04oXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1lc3NhZ2U6IHQoJ2F1dGhlbnRpY2F0aW9uOnZlcmlmeVlvdXJFbWFpbCcpLFxuICAgICAgICAgICAgICBzZW50RW1haWxWZXJpZmljYXRpb24sXG4gICAgICAgICAgICAgIHJlcXVpcmVFbWFpbFZlcmlmaWNhdGlvblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGh0dHBTdGF0dXMuVU5BVVRIT1JJWkVEXG4gICAgICAgICAgKVxuICAgICAgICAgIGZvcndhcmRDb29raWVzKGFwaVJlc3BvbnNlLCByZXMpXG4gICAgICAgICAgaWYgKHNob3VsZENvbW1pdCkgYXdhaXQgY29tbWl0VHJhbnNhY3Rpb24ocmVxKVxuICAgICAgICAgIHJldHVybiByZXNcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NSZXMgPSBzZW5kSlNPTih7IG1lc3NhZ2U6IHQoJ2F1dGhlbnRpY2F0aW9uOnBhc3NlZCcpLCAuLi5yZXNwb25zZURhdGEgfSwgaHR0cFN0YXR1cy5PSylcbiAgICAgICAgZm9yd2FyZENvb2tpZXMoYXBpUmVzcG9uc2UsIHN1Y2Nlc3NSZXMpXG4gICAgICAgIGlmIChzaG91bGRDb21taXQpIGF3YWl0IGNvbW1pdFRyYW5zYWN0aW9uKHJlcSlcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3NSZXNcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAgICAgYXdhaXQga2lsbFRyYW5zYWN0aW9uKHJlcSlcbiAgICAgICAgcmV0dXJuIHNlbmRKU09OKHsgbWVzc2FnZTogZXJyb3IubWVzc2FnZSB9LCBodHRwU3RhdHVzLklOVEVSTkFMX1NFUlZFUl9FUlJPUilcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZW5kcG9pbnRcbn1cbiJdLCJuYW1lcyI6WyJhZG1pbkVuZHBvaW50cyIsImJhc2VTbHVncyIsInN1cHBvcnRlZEJBUGx1Z2luSWRzIiwic3RhdHVzIiwiaHR0cFN0YXR1cyIsImFkZERhdGFBbmRGaWxlVG9SZXF1ZXN0IiwiY29tbWl0VHJhbnNhY3Rpb24iLCJpbml0VHJhbnNhY3Rpb24iLCJraWxsVHJhbnNhY3Rpb24iLCJ6IiwiZ2V0UmVxdWVzdENvbGxlY3Rpb24iLCJjcmVhdGVTaWdudXBTY2hlbWEiLCJjaGVja1BsdWdpbkV4aXN0cyIsInNlbmRKU09OIiwiZGF0YSIsIlJlc3BvbnNlIiwiSlNPTiIsInN0cmluZ2lmeSIsImhlYWRlcnMiLCJmb3J3YXJkQ29va2llcyIsImZyb20iLCJ0byIsInNldENvb2tpZUhlYWRlciIsImdldCIsInNwbGl0IiwiZm9yRWFjaCIsImMiLCJhcHBlbmQiLCJ0cmltIiwicm91dGVQYXJhbXNTY2hlbWEiLCJvYmplY3QiLCJ0b2tlbiIsInN0cmluZyIsInJlZGlyZWN0Iiwib3B0aW9uYWwiLCJnZXRTaWdudXBFbmRwb2ludCIsInBsdWdpbk9wdGlvbnMiLCJiZXR0ZXJBdXRoT3B0aW9ucyIsImFkbWluSW52aXRhdGlvbnMiLCJ1c2VycyIsImJhc2VVUkwiLCJiYXNlUGF0aCIsImVtYWlsVmVyaWZpY2F0aW9uIiwiZW1haWxBbmRQYXNzd29yZCIsIkVycm9yIiwiYWRtaW5JbnZpdGF0aW9uc1NsdWciLCJzbHVnIiwidXNlcnNTbHVnIiwiZW5kcG9pbnQiLCJwYXRoIiwic2lnbnVwIiwibWV0aG9kIiwiaGFuZGxlciIsInJlcSIsImNvbGxlY3Rpb24iLCJ0Iiwic2hvdWxkQ29tbWl0Iiwic3VjY2VzcyIsInJvdXRlUGFyYW1zU3VjY2VzcyIsInJvdXRlUGFyYW1zRGF0YSIsImVycm9yIiwicm91dGVQYXJhbXNFcnJvciIsInNhZmVQYXJzZSIsInF1ZXJ5IiwibWVzc2FnZSIsIkJBRF9SRVFVRVNUIiwiaW52aXRlUmVzdWx0IiwicGF5bG9hZCIsImZpbmQiLCJ3aGVyZSIsImVxdWFscyIsImxpbWl0IiwiaW52aXRlRG9jIiwiZG9jcyIsImF0IiwiVU5BVVRIT1JJWkVEIiwiaGFzVXNlcm5hbWVQbHVnaW4iLCJ1c2VybmFtZSIsInN1cHBvcnRzTG9naW5XaXRoVXNlcm5hbWUiLCJjb25maWciLCJhdXRoIiwibG9naW5XaXRoVXNlcm5hbWUiLCJyZXF1aXJlVXNlcm5hbWUiLCJzaWdudXBTY2hlbWEiLCJyZXF1aXJlQ29uZmlybVBhc3N3b3JkIiwicGFyc2VkQm9keSIsIm1lc3NhZ2VzIiwiaXNzdWVzIiwibWFwIiwiaXNzdWUiLCJuYW1lIiwiZW1haWwiLCJwYXNzd29yZCIsImF1dGhBcGlVUkwiLCJ1cmwiLCJVUkwiLCJzZWFyY2hQYXJhbXMiLCJzZXQiLCJyb3V0ZXMiLCJhZG1pbiIsImFwaVJlc3BvbnNlIiwiZmV0Y2giLCJ0b1N0cmluZyIsImJvZHkiLCJvayIsInN0YXR1c1RleHQiLCJyZXNwb25zZURhdGEiLCJqc29uIiwidXBkYXRlIiwiaWQiLCJ1c2VyIiwicm9sZSIsIm92ZXJyaWRlQWNjZXNzIiwiZGVsZXRlIiwicmVxdWlyZUVtYWlsVmVyaWZpY2F0aW9uIiwidmVyaWZ5IiwiZW1haWxWZXJpZmllZCIsInNlbnRFbWFpbFZlcmlmaWNhdGlvbiIsInNlbmRWZXJpZmljYXRpb25FbWFpbCIsInVuZGVmaW5lZCIsInJlcyIsInN1Y2Nlc3NSZXMiLCJPSyIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsY0FBYyxFQUFFQyxTQUFTLEVBQUVDLG9CQUFvQixRQUFRLHdCQUFnQztBQUVoRyxTQUFTQyxVQUFVQyxVQUFVLFFBQVEsY0FBYTtBQUNsRCxTQUFTQyx1QkFBdUIsRUFBRUMsaUJBQWlCLEVBQUVDLGVBQWUsRUFBRUMsZUFBZSxRQUF1QixVQUFTO0FBQ3JILFNBQVNDLENBQUMsUUFBUSxNQUFLO0FBQ3ZCLFNBQVNDLG9CQUFvQixRQUFRLDRDQUEyQztBQUNoRixTQUFTQyxrQkFBa0IsUUFBUSwyQ0FBMEI7QUFDN0QsU0FBU0MsaUJBQWlCLFFBQVEsMENBQWtEO0FBRXBGLE1BQU1DLFdBQVcsQ0FBQ0MsTUFBZVgsU0FDL0IsSUFBSVksU0FBU0MsS0FBS0MsU0FBUyxDQUFDSCxPQUFPO1FBQ2pDSSxTQUFTO1lBQUUsZ0JBQWdCO1FB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
|