parse-server 8.0.1-alpha.2 → 8.0.2-alpha.1
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/lib/Adapters/Auth/AuthAdapter.js +16 -9
- package/lib/Adapters/Auth/BaseCodeAuthAdapter.js +99 -0
- package/lib/Adapters/Auth/apple.js +45 -1
- package/lib/Adapters/Auth/facebook.js +61 -1
- package/lib/Adapters/Auth/gcenter.js +201 -157
- package/lib/Adapters/Auth/github.js +119 -31
- package/lib/Adapters/Auth/google.js +45 -1
- package/lib/Adapters/Auth/gpgames.js +120 -27
- package/lib/Adapters/Auth/index.js +33 -33
- package/lib/Adapters/Auth/instagram.js +114 -24
- package/lib/Adapters/Auth/janraincapture.js +45 -1
- package/lib/Adapters/Auth/janrainengage.js +11 -2
- package/lib/Adapters/Auth/keycloak.js +68 -35
- package/lib/Adapters/Auth/ldap.js +75 -1
- package/lib/Adapters/Auth/line.js +119 -32
- package/lib/Adapters/Auth/linkedin.js +111 -35
- package/lib/Adapters/Auth/meetup.js +16 -8
- package/lib/Adapters/Auth/mfa.js +80 -2
- package/lib/Adapters/Auth/microsoft.js +105 -30
- package/lib/Adapters/Auth/oauth2.js +96 -109
- package/lib/Adapters/Auth/phantauth.js +16 -8
- package/lib/Adapters/Auth/qq.js +107 -36
- package/lib/Adapters/Auth/spotify.js +108 -39
- package/lib/Adapters/Auth/twitter.js +187 -40
- package/lib/Adapters/Auth/vkontakte.js +20 -13
- package/lib/Adapters/Auth/wechat.js +105 -25
- package/lib/Adapters/Auth/weibo.js +135 -37
- package/lib/Auth.js +26 -17
- package/lib/Config.js +14 -1
- package/lib/Deprecator/Deprecations.js +5 -2
- package/lib/Options/Definitions.js +7 -1
- package/lib/Options/docs.js +2 -1
- package/lib/Options/index.js +1 -1
- package/lib/RestWrite.js +4 -5
- package/lib/Security/CheckGroups/CheckGroupServerConfig.js +10 -1
- package/lib/cli/parse-server.js +1 -1
- package/package.json +7 -7
|
@@ -46,11 +46,11 @@ class AuthAdapter {
|
|
|
46
46
|
* Legacy usage, if provided it will be triggered when authData related to this provider is touched (signup/update/login)
|
|
47
47
|
* otherwise you should implement validateSetup, validateLogin and validateUpdate
|
|
48
48
|
* @param {Object} authData The client provided authData
|
|
49
|
-
* @param {Parse.Cloud.TriggerRequest} request
|
|
50
49
|
* @param {Object} options additional adapter options
|
|
50
|
+
* @param {Parse.Cloud.TriggerRequest} request
|
|
51
51
|
* @returns {Promise<ParseAuthResponse|void|undefined>}
|
|
52
52
|
*/
|
|
53
|
-
validateAuthData(authData,
|
|
53
|
+
validateAuthData(authData, options, request) {
|
|
54
54
|
return Promise.resolve({});
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -58,11 +58,11 @@ class AuthAdapter {
|
|
|
58
58
|
* Triggered when user provide for the first time this auth provider
|
|
59
59
|
* could be a register or the user adding a new auth service
|
|
60
60
|
* @param {Object} authData The client provided authData
|
|
61
|
-
* @param {Parse.Cloud.TriggerRequest} request
|
|
62
61
|
* @param {Object} options additional adapter options
|
|
62
|
+
* @param {Parse.Cloud.TriggerRequest} request
|
|
63
63
|
* @returns {Promise<ParseAuthResponse|void|undefined>}
|
|
64
64
|
*/
|
|
65
|
-
validateSetUp(authData,
|
|
65
|
+
validateSetUp(authData, options, req) {
|
|
66
66
|
return Promise.resolve({});
|
|
67
67
|
}
|
|
68
68
|
|
|
@@ -70,11 +70,11 @@ class AuthAdapter {
|
|
|
70
70
|
* Triggered when user provide authData related to this provider
|
|
71
71
|
* The user is not logged in and has already set this provider before
|
|
72
72
|
* @param {Object} authData The client provided authData
|
|
73
|
-
* @param {Parse.Cloud.TriggerRequest} request
|
|
74
73
|
* @param {Object} options additional adapter options
|
|
74
|
+
* @param {Parse.Cloud.TriggerRequest} request
|
|
75
75
|
* @returns {Promise<ParseAuthResponse|void|undefined>}
|
|
76
76
|
*/
|
|
77
|
-
validateLogin(authData,
|
|
77
|
+
validateLogin(authData, options, req) {
|
|
78
78
|
return Promise.resolve({});
|
|
79
79
|
}
|
|
80
80
|
|
|
@@ -86,10 +86,16 @@ class AuthAdapter {
|
|
|
86
86
|
* @param {Parse.Cloud.TriggerRequest} request
|
|
87
87
|
* @returns {Promise<ParseAuthResponse|void|undefined>}
|
|
88
88
|
*/
|
|
89
|
-
validateUpdate(authData,
|
|
89
|
+
validateUpdate(authData, options, req) {
|
|
90
90
|
return Promise.resolve({});
|
|
91
91
|
}
|
|
92
92
|
|
|
93
|
+
/**
|
|
94
|
+
* Triggered when user is looked up by authData with this provider. Override the `id` field if needed.
|
|
95
|
+
* @param {Object} authData The client provided authData
|
|
96
|
+
*/
|
|
97
|
+
beforeFind(authData) {}
|
|
98
|
+
|
|
93
99
|
/**
|
|
94
100
|
* Triggered in pre authentication process if needed (like webauthn, SMS OTP)
|
|
95
101
|
* @param {Object} challengeData Data provided by the client
|
|
@@ -106,9 +112,10 @@ class AuthAdapter {
|
|
|
106
112
|
* Triggered when auth data is fetched
|
|
107
113
|
* @param {Object} authData authData
|
|
108
114
|
* @param {Object} options additional adapter options
|
|
115
|
+
* @param {Parse.Cloud.TriggerRequest} request
|
|
109
116
|
* @returns {Promise<Object>} Any overrides required to authData
|
|
110
117
|
*/
|
|
111
|
-
afterFind(authData, options) {
|
|
118
|
+
afterFind(authData, options, request) {
|
|
112
119
|
return Promise.resolve({});
|
|
113
120
|
}
|
|
114
121
|
|
|
@@ -122,4 +129,4 @@ class AuthAdapter {
|
|
|
122
129
|
}
|
|
123
130
|
exports.AuthAdapter = AuthAdapter;
|
|
124
131
|
var _default = exports.default = AuthAdapter;
|
|
125
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
132
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBdXRoQWRhcHRlciIsImNvbnN0cnVjdG9yIiwicG9saWN5IiwidmFsaWRhdGVBcHBJZCIsImFwcElkcyIsImF1dGhEYXRhIiwib3B0aW9ucyIsInJlcXVlc3QiLCJQcm9taXNlIiwicmVzb2x2ZSIsInZhbGlkYXRlQXV0aERhdGEiLCJ2YWxpZGF0ZVNldFVwIiwicmVxIiwidmFsaWRhdGVMb2dpbiIsInZhbGlkYXRlVXBkYXRlIiwiYmVmb3JlRmluZCIsImNoYWxsZW5nZSIsImNoYWxsZW5nZURhdGEiLCJhZnRlckZpbmQiLCJ2YWxpZGF0ZU9wdGlvbnMiLCJleHBvcnRzIiwiX2RlZmF1bHQiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvQXV0aEFkYXB0ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyplc2xpbnQgbm8tdW51c2VkLXZhcnM6IFwib2ZmXCIqL1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgUGFyc2VBdXRoUmVzcG9uc2VcbiAqIEBwcm9wZXJ0eSB7Qm9vbGVhbn0gW2RvTm90U2F2ZV0gSWYgdHJ1ZSwgUGFyc2UgU2VydmVyIHdpbGwgbm90IHNhdmUgcHJvdmlkZWQgYXV0aERhdGEuXG4gKiBAcHJvcGVydHkge09iamVjdH0gW3Jlc3BvbnNlXSBJZiBzZXQsIFBhcnNlIFNlcnZlciB3aWxsIHNlbmQgdGhlIHByb3ZpZGVkIHJlc3BvbnNlIHRvIHRoZSBjbGllbnQgdW5kZXIgYXV0aERhdGFSZXNwb25zZVxuICogQHByb3BlcnR5IHtPYmplY3R9IFtzYXZlXSBJZiBzZXQsIFBhcnNlIFNlcnZlciB3aWxsIHNhdmUgdGhlIG9iamVjdCBwcm92aWRlZCBpbnRvIHRoaXMga2V5LCBpbnN0ZWFkIG9mIGNsaWVudCBwcm92aWRlZCBhdXRoRGF0YVxuICovXG5cbi8qKlxuICogQXV0aFBvbGljeVxuICogZGVmYXVsdDogY2FuIGJlIGNvbWJpbmVkIHdpdGggT05FIGFkZGl0aW9uYWwgYXV0aCBwcm92aWRlciBpZiBhZGRpdGlvbmFsIGNvbmZpZ3VyZWQgb24gdXNlclxuICogYWRkaXRpb25hbDogY291bGQgYmUgb25seSB1c2VkIHdpdGggYSBkZWZhdWx0IHBvbGljeSBhdXRoIHByb3ZpZGVyXG4gKiBzb2xvOiBXaWxsIGlnbm9yZSBBTEwgYWRkaXRpb25hbCBwcm92aWRlcnMgaWYgYWRkaXRpb25hbCBjb25maWd1cmVkIG9uIHVzZXJcbiAqIEB0eXBlZGVmIHtcImRlZmF1bHRcIiB8IFwiYWRkaXRpb25hbFwiIHwgXCJzb2xvXCJ9IEF1dGhQb2xpY3lcbiAqL1xuXG5leHBvcnQgY2xhc3MgQXV0aEFkYXB0ZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvKipcbiAgICAgKiBVc2FnZSBwb2xpY3lcbiAgICAgKiBAdHlwZSB7QXV0aFBvbGljeX1cbiAgICAgKi9cbiAgICBpZiAoIXRoaXMucG9saWN5KSB7XG4gICAgICB0aGlzLnBvbGljeSA9ICdkZWZhdWx0JztcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBwYXJhbSBhcHBJZHMgVGhlIHNwZWNpZmllZCBhcHAgSURzIGluIHRoZSBjb25maWd1cmF0aW9uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBhdXRoRGF0YSBUaGUgY2xpZW50IHByb3ZpZGVkIGF1dGhEYXRhXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIGFkZGl0aW9uYWwgYWRhcHRlciBvcHRpb25zXG4gICAqIEBwYXJhbSB7UGFyc2UuQ2xvdWQuVHJpZ2dlclJlcXVlc3R9IHJlcXVlc3RcbiAgICogQHJldHVybnMgeyhQcm9taXNlPHVuZGVmaW5lZHx2b2lkPnx2b2lkfHVuZGVmaW5lZCl9IHJlc29sdmVzIG9yIHJldHVybnMgaWYgdGhlIGFwcGxpY2F0aW9uSWQgaXMgdmFsaWRcbiAgICovXG4gIHZhbGlkYXRlQXBwSWQoYXBwSWRzLCBhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICB9XG5cbiAgLyoqXG4gICAqIExlZ2FjeSB1c2FnZSwgaWYgcHJvdmlkZWQgaXQgd2lsbCBiZSB0cmlnZ2VyZWQgd2hlbiBhdXRoRGF0YSByZWxhdGVkIHRvIHRoaXMgcHJvdmlkZXIgaXMgdG91Y2hlZCAoc2lnbnVwL3VwZGF0ZS9sb2dpbilcbiAgICogb3RoZXJ3aXNlIHlvdSBzaG91bGQgaW1wbGVtZW50IHZhbGlkYXRlU2V0dXAsIHZhbGlkYXRlTG9naW4gYW5kIHZhbGlkYXRlVXBkYXRlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBhdXRoRGF0YSBUaGUgY2xpZW50IHByb3ZpZGVkIGF1dGhEYXRhXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIGFkZGl0aW9uYWwgYWRhcHRlciBvcHRpb25zXG4gICAqIEBwYXJhbSB7UGFyc2UuQ2xvdWQuVHJpZ2dlclJlcXVlc3R9IHJlcXVlc3RcbiAgICogQHJldHVybnMge1Byb21pc2U8UGFyc2VBdXRoUmVzcG9uc2V8dm9pZHx1bmRlZmluZWQ+fVxuICAgKi9cbiAgdmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIHVzZXIgcHJvdmlkZSBmb3IgdGhlIGZpcnN0IHRpbWUgdGhpcyBhdXRoIHByb3ZpZGVyXG4gICAqIGNvdWxkIGJlIGEgcmVnaXN0ZXIgb3IgdGhlIHVzZXIgYWRkaW5nIGEgbmV3IGF1dGggc2VydmljZVxuICAgKiBAcGFyYW0ge09iamVjdH0gYXV0aERhdGEgVGhlIGNsaWVudCBwcm92aWRlZCBhdXRoRGF0YVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBhZGRpdGlvbmFsIGFkYXB0ZXIgb3B0aW9uc1xuICAgKiBAcGFyYW0ge1BhcnNlLkNsb3VkLlRyaWdnZXJSZXF1ZXN0fSByZXF1ZXN0XG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFBhcnNlQXV0aFJlc3BvbnNlfHZvaWR8dW5kZWZpbmVkPn1cbiAgICovXG4gIHZhbGlkYXRlU2V0VXAoYXV0aERhdGEsIG9wdGlvbnMsIHJlcSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIHVzZXIgcHJvdmlkZSBhdXRoRGF0YSByZWxhdGVkIHRvIHRoaXMgcHJvdmlkZXJcbiAgICogVGhlIHVzZXIgaXMgbm90IGxvZ2dlZCBpbiBhbmQgaGFzIGFscmVhZHkgc2V0IHRoaXMgcHJvdmlkZXIgYmVmb3JlXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBhdXRoRGF0YSBUaGUgY2xpZW50IHByb3ZpZGVkIGF1dGhEYXRhXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIGFkZGl0aW9uYWwgYWRhcHRlciBvcHRpb25zXG4gICAqIEBwYXJhbSB7UGFyc2UuQ2xvdWQuVHJpZ2dlclJlcXVlc3R9IHJlcXVlc3RcbiAgICogQHJldHVybnMge1Byb21pc2U8UGFyc2VBdXRoUmVzcG9uc2V8dm9pZHx1bmRlZmluZWQ+fVxuICAgKi9cbiAgdmFsaWRhdGVMb2dpbihhdXRoRGF0YSwgb3B0aW9ucywgcmVxKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcmVkIHdoZW4gdXNlciBwcm92aWRlIGF1dGhEYXRhIHJlbGF0ZWQgdG8gdGhpcyBwcm92aWRlclxuICAgKiB0aGUgdXNlciBpcyBsb2dnZWQgaW4gYW5kIGhhcyBhbHJlYWR5IHNldCB0aGlzIHByb3ZpZGVyIGJlZm9yZVxuICAgKiBAcGFyYW0ge09iamVjdH0gYXV0aERhdGEgVGhlIGNsaWVudCBwcm92aWRlZCBhdXRoRGF0YVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBhZGRpdGlvbmFsIGFkYXB0ZXIgb3B0aW9uc1xuICAgKiBAcGFyYW0ge1BhcnNlLkNsb3VkLlRyaWdnZXJSZXF1ZXN0fSByZXF1ZXN0XG4gICAqIEByZXR1cm5zIHtQcm9taXNlPFBhcnNlQXV0aFJlc3BvbnNlfHZvaWR8dW5kZWZpbmVkPn1cbiAgICovXG4gIHZhbGlkYXRlVXBkYXRlKGF1dGhEYXRhLCBvcHRpb25zLCByZXEpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VyZWQgd2hlbiB1c2VyIGlzIGxvb2tlZCB1cCBieSBhdXRoRGF0YSB3aXRoIHRoaXMgcHJvdmlkZXIuIE92ZXJyaWRlIHRoZSBgaWRgIGZpZWxkIGlmIG5lZWRlZC5cbiAgICogQHBhcmFtIHtPYmplY3R9IGF1dGhEYXRhIFRoZSBjbGllbnQgcHJvdmlkZWQgYXV0aERhdGFcbiAgICovXG4gIGJlZm9yZUZpbmQoYXV0aERhdGEpIHtcblxuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCBpbiBwcmUgYXV0aGVudGljYXRpb24gcHJvY2VzcyBpZiBuZWVkZWQgKGxpa2Ugd2ViYXV0aG4sIFNNUyBPVFApXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjaGFsbGVuZ2VEYXRhIERhdGEgcHJvdmlkZWQgYnkgdGhlIGNsaWVudFxuICAgKiBAcGFyYW0geyhPYmplY3R8dW5kZWZpbmVkKX0gYXV0aERhdGEgQXV0aCBkYXRhIHByb3ZpZGVkIGJ5IHRoZSBjbGllbnQsIGNhbiBiZSB1c2VkIGZvciB2YWxpZGF0aW9uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIGFkZGl0aW9uYWwgYWRhcHRlciBvcHRpb25zXG4gICAqIEBwYXJhbSB7UGFyc2UuQ2xvdWQuVHJpZ2dlclJlcXVlc3R9IHJlcXVlc3RcbiAgICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0Pn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMsIHJlc29sdmVkIHZhbHVlIHdpbGwgYmUgYWRkZWQgdG8gY2hhbGxlbmdlIHJlc3BvbnNlIHVuZGVyIGNoYWxsZW5nZSBrZXlcbiAgICovXG4gIGNoYWxsZW5nZShjaGFsbGVuZ2VEYXRhLCBhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIGF1dGggZGF0YSBpcyBmZXRjaGVkXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBhdXRoRGF0YSBhdXRoRGF0YVxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBhZGRpdGlvbmFsIGFkYXB0ZXIgb3B0aW9uc1xuICAgKiBAcGFyYW0ge1BhcnNlLkNsb3VkLlRyaWdnZXJSZXF1ZXN0fSByZXF1ZXN0XG4gICAqIEByZXR1cm5zIHtQcm9taXNlPE9iamVjdD59IEFueSBvdmVycmlkZXMgcmVxdWlyZWQgdG8gYXV0aERhdGFcbiAgICovXG4gIGFmdGVyRmluZChhdXRoRGF0YSwgb3B0aW9ucywgcmVxdWVzdCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyaWdnZXJlZCB3aGVuIHRoZSBhZGFwdGVyIGlzIGZpcnN0IGF0dGFjaGVkIHRvIFBhcnNlIFNlcnZlclxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBBZGFwdGVyIE9wdGlvbnNcbiAgICovXG4gIHZhbGlkYXRlT3B0aW9ucyhvcHRpb25zKSB7XG4gICAgLyogKi9cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBBdXRoQWRhcHRlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVPLE1BQU1BLFdBQVcsQ0FBQztFQUN2QkMsV0FBV0EsQ0FBQSxFQUFHO0lBQ1o7QUFDSjtBQUNBO0FBQ0E7SUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDQyxNQUFNLEVBQUU7TUFDaEIsSUFBSSxDQUFDQSxNQUFNLEdBQUcsU0FBUztJQUN6QjtFQUNGO0VBQ0E7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRUMsYUFBYUEsQ0FBQ0MsTUFBTSxFQUFFQyxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsT0FBTyxFQUFFO0lBQ2hELE9BQU9DLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQzVCOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRUMsZ0JBQWdCQSxDQUFDTCxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsT0FBTyxFQUFFO0lBQzNDLE9BQU9DLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQzVCOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDRUUsYUFBYUEsQ0FBQ04sUUFBUSxFQUFFQyxPQUFPLEVBQUVNLEdBQUcsRUFBRTtJQUNwQyxPQUFPSixPQUFPLENBQUNDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUM1Qjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0VJLGFBQWFBLENBQUNSLFFBQVEsRUFBRUMsT0FBTyxFQUFFTSxHQUFHLEVBQUU7SUFDcEMsT0FBT0osT0FBTyxDQUFDQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDNUI7O0VBRUE7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFSyxjQUFjQSxDQUFDVCxRQUFRLEVBQUVDLE9BQU8sRUFBRU0sR0FBRyxFQUFFO0lBQ3JDLE9BQU9KLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQzVCOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0VBQ0VNLFVBQVVBLENBQUNWLFFBQVEsRUFBRSxDQUVyQjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0VXLFNBQVNBLENBQUNDLGFBQWEsRUFBRVosUUFBUSxFQUFFQyxPQUFPLEVBQUVDLE9BQU8sRUFBRTtJQUNuRCxPQUFPQyxPQUFPLENBQUNDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUM1Qjs7RUFFQTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNFUyxTQUFTQSxDQUFDYixRQUFRLEVBQUVDLE9BQU8sRUFBRUMsT0FBTyxFQUFFO0lBQ3BDLE9BQU9DLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQzVCOztFQUVBO0FBQ0Y7QUFDQTtBQUNBO0VBQ0VVLGVBQWVBLENBQUNiLE9BQU8sRUFBRTtJQUN2QjtFQUFBO0FBRUo7QUFBQ2MsT0FBQSxDQUFBcEIsV0FBQSxHQUFBQSxXQUFBO0FBQUEsSUFBQXFCLFFBQUEsR0FBQUQsT0FBQSxDQUFBRSxPQUFBLEdBRWN0QixXQUFXIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _AuthAdapter = _interopRequireDefault(require("./AuthAdapter"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
// abstract class for auth code adapters
|
|
10
|
+
|
|
11
|
+
class BaseAuthCodeAdapter extends _AuthAdapter.default {
|
|
12
|
+
constructor(adapterName) {
|
|
13
|
+
super();
|
|
14
|
+
this.adapterName = adapterName;
|
|
15
|
+
}
|
|
16
|
+
validateOptions(options) {
|
|
17
|
+
if (!options) {
|
|
18
|
+
throw new Error(`${this.adapterName} options are required.`);
|
|
19
|
+
}
|
|
20
|
+
this.enableInsecureAuth = options.enableInsecureAuth;
|
|
21
|
+
if (this.enableInsecureAuth) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
this.clientId = options.clientId;
|
|
25
|
+
this.clientSecret = options.clientSecret;
|
|
26
|
+
if (!this.clientId) {
|
|
27
|
+
throw new Error(`${this.adapterName} clientId is required.`);
|
|
28
|
+
}
|
|
29
|
+
if (!this.clientSecret) {
|
|
30
|
+
throw new Error(`${this.adapterName} clientSecret is required.`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async beforeFind(authData) {
|
|
34
|
+
if (this.enableInsecureAuth && !authData?.code) {
|
|
35
|
+
if (!authData?.access_token) {
|
|
36
|
+
throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, `${this.adapterName} auth is invalid for this user.`);
|
|
37
|
+
}
|
|
38
|
+
const user = await this.getUserFromAccessToken(authData.access_token, authData);
|
|
39
|
+
if (user.id !== authData.id) {
|
|
40
|
+
throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, `${this.adapterName} auth is invalid for this user.`);
|
|
41
|
+
}
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (!authData?.code) {
|
|
45
|
+
throw new Parse.Error(Parse.Error.VALIDATION_ERROR, `${this.adapterName} code is required.`);
|
|
46
|
+
}
|
|
47
|
+
const access_token = await this.getAccessTokenFromCode(authData);
|
|
48
|
+
const user = await this.getUserFromAccessToken(access_token, authData);
|
|
49
|
+
if (authData.id && user.id !== authData.id) {
|
|
50
|
+
throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, `${this.adapterName} auth is invalid for this user.`);
|
|
51
|
+
}
|
|
52
|
+
authData.access_token = access_token;
|
|
53
|
+
authData.id = user.id;
|
|
54
|
+
delete authData.code;
|
|
55
|
+
delete authData.redirect_uri;
|
|
56
|
+
}
|
|
57
|
+
async getUserFromAccessToken() {
|
|
58
|
+
// abstract method
|
|
59
|
+
throw new Error('getUserFromAccessToken is not implemented');
|
|
60
|
+
}
|
|
61
|
+
async getAccessTokenFromCode() {
|
|
62
|
+
// abstract method
|
|
63
|
+
throw new Error('getAccessTokenFromCode is not implemented');
|
|
64
|
+
}
|
|
65
|
+
validateLogin(authData) {
|
|
66
|
+
// User validation is already done in beforeFind
|
|
67
|
+
return {
|
|
68
|
+
id: authData.id
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
validateSetUp(authData) {
|
|
72
|
+
// User validation is already done in beforeFind
|
|
73
|
+
return {
|
|
74
|
+
id: authData.id
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
afterFind(authData) {
|
|
78
|
+
return {
|
|
79
|
+
id: authData.id
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
validateUpdate(authData) {
|
|
83
|
+
// User validation is already done in beforeFind
|
|
84
|
+
return {
|
|
85
|
+
id: authData.id
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
parseResponseData(data) {
|
|
89
|
+
const startPos = data.indexOf('(');
|
|
90
|
+
const endPos = data.indexOf(')');
|
|
91
|
+
if (startPos === -1 || endPos === -1) {
|
|
92
|
+
throw new Parse.Error(Parse.Error.OBJECT_NOT_FOUND, `${this.adapterName} auth is invalid for this user.`);
|
|
93
|
+
}
|
|
94
|
+
const jsonData = data.substring(startPos + 1, endPos);
|
|
95
|
+
return JSON.parse(jsonData);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.default = BaseAuthCodeAdapter;
|
|
99
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfQXV0aEFkYXB0ZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkJhc2VBdXRoQ29kZUFkYXB0ZXIiLCJBdXRoQWRhcHRlciIsImNvbnN0cnVjdG9yIiwiYWRhcHRlck5hbWUiLCJ2YWxpZGF0ZU9wdGlvbnMiLCJvcHRpb25zIiwiRXJyb3IiLCJlbmFibGVJbnNlY3VyZUF1dGgiLCJjbGllbnRJZCIsImNsaWVudFNlY3JldCIsImJlZm9yZUZpbmQiLCJhdXRoRGF0YSIsImNvZGUiLCJhY2Nlc3NfdG9rZW4iLCJQYXJzZSIsIk9CSkVDVF9OT1RfRk9VTkQiLCJ1c2VyIiwiZ2V0VXNlckZyb21BY2Nlc3NUb2tlbiIsImlkIiwiVkFMSURBVElPTl9FUlJPUiIsImdldEFjY2Vzc1Rva2VuRnJvbUNvZGUiLCJyZWRpcmVjdF91cmkiLCJ2YWxpZGF0ZUxvZ2luIiwidmFsaWRhdGVTZXRVcCIsImFmdGVyRmluZCIsInZhbGlkYXRlVXBkYXRlIiwicGFyc2VSZXNwb25zZURhdGEiLCJkYXRhIiwic3RhcnRQb3MiLCJpbmRleE9mIiwiZW5kUG9zIiwianNvbkRhdGEiLCJzdWJzdHJpbmciLCJKU09OIiwicGFyc2UiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL0FkYXB0ZXJzL0F1dGgvQmFzZUNvZGVBdXRoQWRhcHRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBhYnN0cmFjdCBjbGFzcyBmb3IgYXV0aCBjb2RlIGFkYXB0ZXJzXG5pbXBvcnQgQXV0aEFkYXB0ZXIgZnJvbSAnLi9BdXRoQWRhcHRlcic7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCYXNlQXV0aENvZGVBZGFwdGVyIGV4dGVuZHMgQXV0aEFkYXB0ZXIge1xuICBjb25zdHJ1Y3RvcihhZGFwdGVyTmFtZSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGFwdGVyTmFtZSA9IGFkYXB0ZXJOYW1lO1xuICB9XG4gIHZhbGlkYXRlT3B0aW9ucyhvcHRpb25zKSB7XG5cbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmFkYXB0ZXJOYW1lfSBvcHRpb25zIGFyZSByZXF1aXJlZC5gKTtcbiAgICB9XG5cbiAgICB0aGlzLmVuYWJsZUluc2VjdXJlQXV0aCA9IG9wdGlvbnMuZW5hYmxlSW5zZWN1cmVBdXRoO1xuICAgIGlmICh0aGlzLmVuYWJsZUluc2VjdXJlQXV0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY2xpZW50SWQgPSBvcHRpb25zLmNsaWVudElkO1xuICAgIHRoaXMuY2xpZW50U2VjcmV0ID0gb3B0aW9ucy5jbGllbnRTZWNyZXQ7XG5cbiAgICBpZiAoIXRoaXMuY2xpZW50SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmFkYXB0ZXJOYW1lfSBjbGllbnRJZCBpcyByZXF1aXJlZC5gKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuY2xpZW50U2VjcmV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5hZGFwdGVyTmFtZX0gY2xpZW50U2VjcmV0IGlzIHJlcXVpcmVkLmApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGJlZm9yZUZpbmQoYXV0aERhdGEpIHtcbiAgICBpZiAodGhpcy5lbmFibGVJbnNlY3VyZUF1dGggJiYgIWF1dGhEYXRhPy5jb2RlKSB7XG4gICAgICBpZiAoIWF1dGhEYXRhPy5hY2Nlc3NfdG9rZW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsIGAke3RoaXMuYWRhcHRlck5hbWV9IGF1dGggaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLmApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5nZXRVc2VyRnJvbUFjY2Vzc1Rva2VuKGF1dGhEYXRhLmFjY2Vzc190b2tlbiwgYXV0aERhdGEpO1xuXG4gICAgICBpZiAodXNlci5pZCAhPT0gYXV0aERhdGEuaWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsIGAke3RoaXMuYWRhcHRlck5hbWV9IGF1dGggaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLmApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFhdXRoRGF0YT8uY29kZSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLlZBTElEQVRJT05fRVJST1IsIGAke3RoaXMuYWRhcHRlck5hbWV9IGNvZGUgaXMgcmVxdWlyZWQuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgYWNjZXNzX3Rva2VuID0gYXdhaXQgdGhpcy5nZXRBY2Nlc3NUb2tlbkZyb21Db2RlKGF1dGhEYXRhKTtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5nZXRVc2VyRnJvbUFjY2Vzc1Rva2VuKGFjY2Vzc190b2tlbiwgYXV0aERhdGEpO1xuXG4gICAgaWYgKGF1dGhEYXRhLmlkICYmIHVzZXIuaWQgIT09IGF1dGhEYXRhLmlkKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgYCR7dGhpcy5hZGFwdGVyTmFtZX0gYXV0aCBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuYCk7XG4gICAgfVxuXG4gICAgYXV0aERhdGEuYWNjZXNzX3Rva2VuID0gYWNjZXNzX3Rva2VuO1xuICAgIGF1dGhEYXRhLmlkID0gdXNlci5pZDtcblxuICAgIGRlbGV0ZSBhdXRoRGF0YS5jb2RlO1xuICAgIGRlbGV0ZSBhdXRoRGF0YS5yZWRpcmVjdF91cmk7XG5cbiAgfVxuXG4gIGFzeW5jIGdldFVzZXJGcm9tQWNjZXNzVG9rZW4oKSB7XG4gICAgLy8gYWJzdHJhY3QgbWV0aG9kXG4gICAgdGhyb3cgbmV3IEVycm9yKCdnZXRVc2VyRnJvbUFjY2Vzc1Rva2VuIGlzIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgYXN5bmMgZ2V0QWNjZXNzVG9rZW5Gcm9tQ29kZSgpIHtcbiAgICAvLyBhYnN0cmFjdCBtZXRob2RcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2dldEFjY2Vzc1Rva2VuRnJvbUNvZGUgaXMgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICB2YWxpZGF0ZUxvZ2luKGF1dGhEYXRhKSB7XG4gICAgLy8gVXNlciB2YWxpZGF0aW9uIGlzIGFscmVhZHkgZG9uZSBpbiBiZWZvcmVGaW5kXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBhdXRoRGF0YS5pZCxcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZVNldFVwKGF1dGhEYXRhKSB7XG4gICAgLy8gVXNlciB2YWxpZGF0aW9uIGlzIGFscmVhZHkgZG9uZSBpbiBiZWZvcmVGaW5kXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBhdXRoRGF0YS5pZCxcbiAgICB9XG4gIH1cblxuICBhZnRlckZpbmQoYXV0aERhdGEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IGF1dGhEYXRhLmlkLFxuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlVXBkYXRlKGF1dGhEYXRhKSB7XG4gICAgLy8gVXNlciB2YWxpZGF0aW9uIGlzIGFscmVhZHkgZG9uZSBpbiBiZWZvcmVGaW5kXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBhdXRoRGF0YS5pZCxcbiAgICB9XG5cbiAgfVxuXG4gIHBhcnNlUmVzcG9uc2VEYXRhKGRhdGEpIHtcbiAgICBjb25zdCBzdGFydFBvcyA9IGRhdGEuaW5kZXhPZignKCcpO1xuICAgIGNvbnN0IGVuZFBvcyA9IGRhdGEuaW5kZXhPZignKScpO1xuICAgIGlmIChzdGFydFBvcyA9PT0gLTEgfHwgZW5kUG9zID09PSAtMSkge1xuICAgICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsIGAke3RoaXMuYWRhcHRlck5hbWV9IGF1dGggaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLmApO1xuICAgIH1cbiAgICBjb25zdCBqc29uRGF0YSA9IGRhdGEuc3Vic3RyaW5nKHN0YXJ0UG9zICsgMSwgZW5kUG9zKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShqc29uRGF0YSk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsWUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQXdDLFNBQUFELHVCQUFBRSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRHhDOztBQUVlLE1BQU1HLG1CQUFtQixTQUFTQyxvQkFBVyxDQUFDO0VBQzNEQyxXQUFXQSxDQUFDQyxXQUFXLEVBQUU7SUFDdkIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLENBQUNBLFdBQVcsR0FBR0EsV0FBVztFQUNoQztFQUNBQyxlQUFlQSxDQUFDQyxPQUFPLEVBQUU7SUFFdkIsSUFBSSxDQUFDQSxPQUFPLEVBQUU7TUFDWixNQUFNLElBQUlDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQ0gsV0FBVyx3QkFBd0IsQ0FBQztJQUM5RDtJQUVBLElBQUksQ0FBQ0ksa0JBQWtCLEdBQUdGLE9BQU8sQ0FBQ0Usa0JBQWtCO0lBQ3BELElBQUksSUFBSSxDQUFDQSxrQkFBa0IsRUFBRTtNQUMzQjtJQUNGO0lBRUEsSUFBSSxDQUFDQyxRQUFRLEdBQUdILE9BQU8sQ0FBQ0csUUFBUTtJQUNoQyxJQUFJLENBQUNDLFlBQVksR0FBR0osT0FBTyxDQUFDSSxZQUFZO0lBRXhDLElBQUksQ0FBQyxJQUFJLENBQUNELFFBQVEsRUFBRTtNQUNsQixNQUFNLElBQUlGLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQ0gsV0FBVyx3QkFBd0IsQ0FBQztJQUM5RDtJQUVBLElBQUksQ0FBQyxJQUFJLENBQUNNLFlBQVksRUFBRTtNQUN0QixNQUFNLElBQUlILEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQ0gsV0FBVyw0QkFBNEIs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
|
|
@@ -1,5 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Parse Server authentication adapter for Apple.
|
|
5
|
+
*
|
|
6
|
+
* @class AppleAdapter
|
|
7
|
+
* @param {Object} options - Configuration options for the adapter.
|
|
8
|
+
* @param {string} options.clientId - Your Apple App ID.
|
|
9
|
+
*
|
|
10
|
+
* @param {Object} authData - The authentication data provided by the client.
|
|
11
|
+
* @param {string} authData.id - The user ID obtained from Apple.
|
|
12
|
+
* @param {string} authData.token - The token obtained from Apple.
|
|
13
|
+
*
|
|
14
|
+
* @description
|
|
15
|
+
* ## Parse Server Configuration
|
|
16
|
+
* To configure Parse Server for Apple authentication, use the following structure:
|
|
17
|
+
* ```json
|
|
18
|
+
* {
|
|
19
|
+
* "auth": {
|
|
20
|
+
* "apple": {
|
|
21
|
+
* "clientId": "12345"
|
|
22
|
+
* }
|
|
23
|
+
* }
|
|
24
|
+
* }
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* ## Expected `authData` from the Client
|
|
28
|
+
* The adapter expects the client to provide the following `authData` payload:
|
|
29
|
+
* - `authData.id` (**string**, required): The user ID obtained from Apple.
|
|
30
|
+
* - `authData.token` (**string**, required): The token obtained from Apple.
|
|
31
|
+
*
|
|
32
|
+
* Parse Server stores the required authentication data in the database.
|
|
33
|
+
*
|
|
34
|
+
* ### Example AuthData from Apple
|
|
35
|
+
* ```json
|
|
36
|
+
* {
|
|
37
|
+
* "apple": {
|
|
38
|
+
* "id": "1234567",
|
|
39
|
+
* "token": "xxxxx.yyyyy.zzzzz"
|
|
40
|
+
* }
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* @see {@link https://developer.apple.com/documentation/signinwithapplerestapi Sign in with Apple REST API Documentation}
|
|
45
|
+
*/
|
|
46
|
+
|
|
3
47
|
// Apple SignIn Auth
|
|
4
48
|
// https://developer.apple.com/documentation/signinwithapplerestapi
|
|
5
49
|
|
|
@@ -76,4 +120,4 @@ module.exports = {
|
|
|
76
120
|
validateAppId,
|
|
77
121
|
validateAuthData
|
|
78
122
|
};
|
|
79
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
123
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJqd2tzQ2xpZW50Iiwiand0IiwiYXV0aFV0aWxzIiwiVE9LRU5fSVNTVUVSIiwiZ2V0QXBwbGVLZXlCeUtleUlkIiwia2V5SWQiLCJjYWNoZU1heEVudHJpZXMiLCJjYWNoZU1heEFnZSIsImNsaWVudCIsImp3a3NVcmkiLCJjYWNoZSIsImtleSIsImdldFNpZ25pbmdLZXkiLCJlcnJvciIsIkVycm9yIiwiT0JKRUNUX05PVF9GT1VORCIsInZlcmlmeUlkVG9rZW4iLCJ0b2tlbiIsImlkIiwiY2xpZW50SWQiLCJraWQiLCJhbGciLCJhbGdvcml0aG0iLCJnZXRIZWFkZXJGcm9tVG9rZW4iLCJPTkVfSE9VUl9JTl9NUyIsImp3dENsYWltcyIsImFwcGxlS2V5Iiwic2lnbmluZ0tleSIsInB1YmxpY0tleSIsInJzYVB1YmxpY0tleSIsInZlcmlmeSIsImFsZ29yaXRobXMiLCJhdWRpZW5jZSIsImV4Y2VwdGlvbiIsIm1lc3NhZ2UiLCJpc3MiLCJzdWIiLCJ2YWxpZGF0ZUF1dGhEYXRhIiwiYXV0aERhdGEiLCJvcHRpb25zIiwidmFsaWRhdGVBcHBJZCIsIlByb21pc2UiLCJyZXNvbHZlIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL2FwcGxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGFyc2UgU2VydmVyIGF1dGhlbnRpY2F0aW9uIGFkYXB0ZXIgZm9yIEFwcGxlLlxuICpcbiAqIEBjbGFzcyBBcHBsZUFkYXB0ZXJcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgYWRhcHRlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmNsaWVudElkIC0gWW91ciBBcHBsZSBBcHAgSUQuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGF1dGhEYXRhIC0gVGhlIGF1dGhlbnRpY2F0aW9uIGRhdGEgcHJvdmlkZWQgYnkgdGhlIGNsaWVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhdXRoRGF0YS5pZCAtIFRoZSB1c2VyIElEIG9idGFpbmVkIGZyb20gQXBwbGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gYXV0aERhdGEudG9rZW4gLSBUaGUgdG9rZW4gb2J0YWluZWQgZnJvbSBBcHBsZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqICMjIFBhcnNlIFNlcnZlciBDb25maWd1cmF0aW9uXG4gKiBUbyBjb25maWd1cmUgUGFyc2UgU2VydmVyIGZvciBBcHBsZSBhdXRoZW50aWNhdGlvbiwgdXNlIHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOlxuICogYGBganNvblxuICoge1xuICogICBcImF1dGhcIjoge1xuICogICAgIFwiYXBwbGVcIjoge1xuICogICAgICAgXCJjbGllbnRJZFwiOiBcIjEyMzQ1XCJcbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIEV4cGVjdGVkIGBhdXRoRGF0YWAgZnJvbSB0aGUgQ2xpZW50XG4gKiBUaGUgYWRhcHRlciBleHBlY3RzIHRoZSBjbGllbnQgdG8gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGBhdXRoRGF0YWAgcGF5bG9hZDpcbiAqIC0gYGF1dGhEYXRhLmlkYCAoKipzdHJpbmcqKiwgcmVxdWlyZWQpOiBUaGUgdXNlciBJRCBvYnRhaW5lZCBmcm9tIEFwcGxlLlxuICogLSBgYXV0aERhdGEudG9rZW5gICgqKnN0cmluZyoqLCByZXF1aXJlZCk6IFRoZSB0b2tlbiBvYnRhaW5lZCBmcm9tIEFwcGxlLlxuICpcbiAqIFBhcnNlIFNlcnZlciBzdG9yZXMgdGhlIHJlcXVpcmVkIGF1dGhlbnRpY2F0aW9uIGRhdGEgaW4gdGhlIGRhdGFiYXNlLlxuICpcbiAqICMjIyBFeGFtcGxlIEF1dGhEYXRhIGZyb20gQXBwbGVcbiAqIGBgYGpzb25cbiAqIHtcbiAqICAgXCJhcHBsZVwiOiB7XG4gKiAgICAgXCJpZFwiOiBcIjEyMzQ1NjdcIixcbiAqICAgICBcInRva2VuXCI6IFwieHh4eHgueXl5eXkuenp6enpcIlxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi9zaWduaW53aXRoYXBwbGVyZXN0YXBpIFNpZ24gaW4gd2l0aCBBcHBsZSBSRVNUIEFQSSBEb2N1bWVudGF0aW9ufVxuICovXG5cbi8vIEFwcGxlIFNpZ25JbiBBdXRoXG4vLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi9zaWduaW53aXRoYXBwbGVyZXN0YXBpXG5cbmNvbnN0IFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlO1xuY29uc3Qgandrc0NsaWVudCA9IHJlcXVpcmUoJ2p3a3MtcnNhJyk7XG5jb25zdCBqd3QgPSByZXF1aXJlKCdqc29ud2VidG9rZW4nKTtcbmNvbnN0IGF1dGhVdGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxuY29uc3QgVE9LRU5fSVNTVUVSID0gJ2h0dHBzOi8vYXBwbGVpZC5hcHBsZS5jb20nO1xuXG5jb25zdCBnZXRBcHBsZUtleUJ5S2V5SWQgPSBhc3luYyAoa2V5SWQsIGNhY2hlTWF4RW50cmllcywgY2FjaGVNYXhBZ2UpID0+IHtcbiAgY29uc3QgY2xpZW50ID0gandrc0NsaWVudCh7XG4gICAgandrc1VyaTogYCR7VE9LRU5fSVNTVUVSfS9hdXRoL2tleXNgLFxuICAgIGNhY2hlOiB0cnVlLFxuICAgIGNhY2hlTWF4RW50cmllcyxcbiAgICBjYWNoZU1heEFnZSxcbiAgfSk7XG5cbiAgbGV0IGtleTtcbiAgdHJ5IHtcbiAgICBrZXkgPSBhd2FpdCBhdXRoVXRpbHMuZ2V0U2lnbmluZ0tleShjbGllbnQsIGtleUlkKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELFxuICAgICAgYFVuYWJsZSB0byBmaW5kIG1hdGNoaW5nIGtleSBmb3IgS2V5IElEOiAke2tleUlkfWBcbiAgICApO1xuICB9XG4gIHJldHVybiBrZXk7XG59O1xuXG5jb25zdCB2ZXJpZnlJZFRva2VuID0gYXN5bmMgKHsgdG9rZW4sIGlkIH0sIHsgY2xpZW50SWQsIGNhY2hlTWF4RW50cmllcywgY2FjaGVNYXhBZ2UgfSkgPT4ge1xuICBpZiAoIXRva2VuKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsIGBpZCB0b2tlbiBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuYCk7XG4gIH1cblxuICBjb25zdCB7IGtpZDoga2V5SWQsIGFsZzogYWxnb3JpdGhtIH0gPSBhdXRoVXRpbHMuZ2V0SGVhZGVyRnJvbVRva2VuKHRva2VuKTtcbiAgY29uc3QgT05FX0hPVVJfSU5fTVMgPSAzNjAwMDAwO1xuICBsZXQgand0Q2xhaW1zO1xuXG4gIGNhY2hlTWF4QWdlID0gY2FjaGVNYXhBZ2UgfHwgT05FX0hPVVJfSU5fTVM7XG4gIGNhY2hlTWF4RW50cmllcyA9IGNhY2hlTWF4RW50cmllcyB8fCA1O1xuXG4gIGNvbnN0IGFwcGxlS2V5ID0gYXdhaXQgZ2V0QXBwbGVLZXlCeUtleUlkKGtleUlkLCBjYWNoZU1heEVudHJpZXMsIGNhY2hlTWF4QWdlKTtcbiAgY29uc3Qgc2lnbmluZ0tleSA9IGFwcGxlS2V5LnB1YmxpY0tleSB8fCBhcHBsZUtleS5yc2FQdWJsaWNLZXk7XG5cbiAgdHJ5IHtcbiAgICBqd3RDbGFpbXMgPSBqd3QudmVyaWZ5KHRva2VuLCBzaWduaW5nS2V5LCB7XG4gICAgICBhbGdvcml0aG1zOiBhbGdvcml0aG0sXG4gICAgICAvLyB0aGUgYXVkaWVuY2UgY2FuIGJlIGNoZWNrZWQgYWdhaW5zdCBhIHN0cmluZywgYSByZWd1bGFyIGV4cHJlc3Npb24gb3IgYSBsaXN0IG9mIHN0cmluZ3MgYW5kL29yIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG4gICAgICBhdWRpZW5jZTogY2xpZW50SWQsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGV4Y2VwdGlvbikge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBleGNlcHRpb24ubWVzc2FnZTtcblxuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCBgJHttZXNzYWdlfWApO1xuICB9XG5cbiAgaWYgKGp3dENsYWltcy5pc3MgIT09IFRPS0VOX0lTU1VFUikge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsXG4gICAgICBgaWQgdG9rZW4gbm90IGlzc3VlZCBieSBjb3JyZWN0IE9wZW5JRCBwcm92aWRlciAtIGV4cGVjdGVkOiAke1RPS0VOX0lTU1VFUn0gfCBmcm9tOiAke2p3dENsYWltcy5pc3N9YFxuICAgICk7XG4gIH1cblxuICBpZiAoand0Q2xhaW1zLnN1YiAhPT0gaWQpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgYGF1dGggZGF0YSBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuYCk7XG4gIH1cbiAgcmV0dXJuIGp3dENsYWltcztcbn07XG5cbi8vIFJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgaWYgdGhpcyBpZCB0b2tlbiBpcyB2YWxpZFxuZnVuY3Rpb24gdmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSwgb3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiB2ZXJpZnlJZFRva2VuKGF1dGhEYXRhLCBvcHRpb25zKTtcbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZiB0aGlzIGFwcCBpZCBpcyB2YWxpZC5cbmZ1bmN0aW9uIHZhbGlkYXRlQXBwSWQoKSB7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHZhbGlkYXRlQXBwSWQsXG4gIHZhbGlkYXRlQXV0aERhdGEsXG59O1xuIl0s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
|
|
@@ -1,5 +1,65 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Parse Server authentication adapter for Facebook.
|
|
5
|
+
*
|
|
6
|
+
* @class FacebookAdapter
|
|
7
|
+
* @param {Object} options - The adapter configuration options.
|
|
8
|
+
* @param {string} options.appSecret - Your Facebook App Secret. Required for secure authentication.
|
|
9
|
+
* @param {string[]} options.appIds - An array of Facebook App IDs. Required for validating the app.
|
|
10
|
+
*
|
|
11
|
+
* @description
|
|
12
|
+
* ## Parse Server Configuration
|
|
13
|
+
* To configure Parse Server for Facebook authentication, use the following structure:
|
|
14
|
+
* ```json
|
|
15
|
+
* {
|
|
16
|
+
* "auth": {
|
|
17
|
+
* "facebook": {
|
|
18
|
+
* "appSecret": "your-app-secret",
|
|
19
|
+
* "appIds": ["your-app-id"]
|
|
20
|
+
* }
|
|
21
|
+
* }
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* The adapter supports the following authentication methods:
|
|
26
|
+
* - **Standard Login**: Requires `id` and `access_token`.
|
|
27
|
+
* - **Limited Login**: Requires `id` and `token`.
|
|
28
|
+
*
|
|
29
|
+
* ## Auth Payloads
|
|
30
|
+
* ### Standard Login Payload
|
|
31
|
+
* ```json
|
|
32
|
+
* {
|
|
33
|
+
* "facebook": {
|
|
34
|
+
* "id": "1234567",
|
|
35
|
+
* "access_token": "abc123def456ghi789"
|
|
36
|
+
* }
|
|
37
|
+
* }
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* ### Limited Login Payload
|
|
41
|
+
* ```json
|
|
42
|
+
* {
|
|
43
|
+
* "facebook": {
|
|
44
|
+
* "id": "1234567",
|
|
45
|
+
* "token": "xxxxx.yyyyy.zzzzz"
|
|
46
|
+
* }
|
|
47
|
+
* }
|
|
48
|
+
* ```
|
|
49
|
+
*
|
|
50
|
+
* ## Notes
|
|
51
|
+
* - **Standard Login**: Use `id` and `access_token` for full functionality.
|
|
52
|
+
* - **Limited Login**: Use `id` and `token` (JWT) when tracking is opted out (e.g., via Apple's App Tracking Transparency).
|
|
53
|
+
* - Supported Parse Server versions:
|
|
54
|
+
* - `>= 6.5.6 < 7`
|
|
55
|
+
* - `>= 7.0.1`
|
|
56
|
+
*
|
|
57
|
+
* Secure authentication is recommended to ensure proper data protection and compliance with Facebook's guidelines.
|
|
58
|
+
*
|
|
59
|
+
* @see {@link https://developers.facebook.com/docs/facebook-login/limited-login/ Facebook Limited Login}
|
|
60
|
+
* @see {@link https://developers.facebook.com/docs/facebook-login/facebook-login-for-business/ Facebook Login for Business}
|
|
61
|
+
*/
|
|
62
|
+
|
|
3
63
|
// Helper functions for accessing the Facebook Graph API.
|
|
4
64
|
const Parse = require('parse/node').Parse;
|
|
5
65
|
const crypto = require('crypto');
|
|
@@ -121,4 +181,4 @@ module.exports = {
|
|
|
121
181
|
validateAppId: validateAppId,
|
|
122
182
|
validateAuthData: validateAuthData
|
|
123
183
|
};
|
|
124
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJjcnlwdG8iLCJqd2tzQ2xpZW50Iiwiand0IiwiaHR0cHNSZXF1ZXN0IiwiYXV0aFV0aWxzIiwiVE9LRU5fSVNTVUVSIiwiZ2V0QXBwU2VjcmV0UGF0aCIsImF1dGhEYXRhIiwib3B0aW9ucyIsImFwcFNlY3JldCIsImFwcHNlY3JldF9wcm9vZiIsImNyZWF0ZUhtYWMiLCJ1cGRhdGUiLCJhY2Nlc3NfdG9rZW4iLCJkaWdlc3QiLCJ2YWxpZGF0ZUdyYXBoVG9rZW4iLCJncmFwaFJlcXVlc3QiLCJ0aGVuIiwiZGF0YSIsImlkIiwicHJvY2VzcyIsImVudiIsIlRFU1RJTkciLCJFcnJvciIsIk9CSkVDVF9OT1RfRk9VTkQiLCJ2YWxpZGF0ZUdyYXBoQXBwSWQiLCJhcHBJZHMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJpbmNsdWRlcyIsImdldEZhY2Vib29rS2V5QnlLZXlJZCIsImtleUlkIiwiY2FjaGVNYXhFbnRyaWVzIiwiY2FjaGVNYXhBZ2UiLCJjbGllbnQiLCJqd2tzVXJpIiwiY2FjaGUiLCJrZXkiLCJnZXRTaWduaW5nS2V5IiwiZXJyb3IiLCJ2ZXJpZnlJZFRva2VuIiwidG9rZW4iLCJjbGllbnRJZCIsImtpZCIsImFsZyIsImFsZ29yaXRobSIsImdldEhlYWRlckZyb21Ub2tlbiIsIk9ORV9IT1VSX0lOX01TIiwiand0Q2xhaW1zIiwiZmFjZWJvb2tLZXkiLCJzaWduaW5nS2V5IiwicHVibGljS2V5IiwicnNhUHVibGljS2V5IiwidmVyaWZ5IiwiYWxnb3JpdGhtcyIsImF1ZGllbmNlIiwiZXhjZXB0aW9uIiwibWVzc2FnZSIsImlzcyIsInN1YiIsInZhbGlkYXRlQXV0aERhdGEiLCJ2YWxpZGF0ZUFwcElkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJwYXRoIiwiZ2V0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL2ZhY2Vib29rLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEhlbHBlciBmdW5jdGlvbnMgZm9yIGFjY2Vzc2luZyB0aGUgRmFjZWJvb2sgR3JhcGggQVBJLlxuY29uc3QgUGFyc2UgPSByZXF1aXJlKCdwYXJzZS9ub2RlJykuUGFyc2U7XG5jb25zdCBjcnlwdG8gPSByZXF1aXJlKCdjcnlwdG8nKTtcbmNvbnN0IGp3a3NDbGllbnQgPSByZXF1aXJlKCdqd2tzLXJzYScpO1xuY29uc3Qgand0ID0gcmVxdWlyZSgnanNvbndlYnRva2VuJyk7XG5jb25zdCBodHRwc1JlcXVlc3QgPSByZXF1aXJlKCcuL2h0dHBzUmVxdWVzdCcpO1xuY29uc3QgYXV0aFV0aWxzID0gcmVxdWlyZSgnLi91dGlscycpO1xuXG5jb25zdCBUT0tFTl9JU1NVRVIgPSAnaHR0cHM6Ly93d3cuZmFjZWJvb2suY29tJztcblxuZnVuY3Rpb24gZ2V0QXBwU2VjcmV0UGF0aChhdXRoRGF0YSwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGFwcFNlY3JldCA9IG9wdGlvbnMuYXBwU2VjcmV0O1xuICBpZiAoIWFwcFNlY3JldCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBjb25zdCBhcHBzZWNyZXRfcHJvb2YgPSBjcnlwdG9cbiAgICAuY3JlYXRlSG1hYygnc2hhMjU2JywgYXBwU2VjcmV0KVxuICAgIC51cGRhdGUoYXV0aERhdGEuYWNjZXNzX3Rva2VuKVxuICAgIC5kaWdlc3QoJ2hleCcpO1xuXG4gIHJldHVybiBgJmFwcHNlY3JldF9wcm9vZj0ke2FwcHNlY3JldF9wcm9vZn1gO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUdyYXBoVG9rZW4oYXV0aERhdGEsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGdyYXBoUmVxdWVzdChcbiAgICAnbWU/ZmllbGRzPWlkJmFjY2Vzc190b2tlbj0nICsgYXV0aERhdGEuYWNjZXNzX3Rva2VuICsgZ2V0QXBwU2VjcmV0UGF0aChhdXRoRGF0YSwgb3B0aW9ucylcbiAgKS50aGVuKGRhdGEgPT4ge1xuICAgIGlmICgoZGF0YSAmJiBkYXRhLmlkID09IGF1dGhEYXRhLmlkKSB8fCAocHJvY2Vzcy5lbnYuVEVTVElORyAmJiBhdXRoRGF0YS5pZCA9PT0gJ3Rlc3QnKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ0ZhY2Vib29rIGF1dGggaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLicpO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVHcmFwaEFwcElkKGFwcElkcywgYXV0aERhdGEsIG9wdGlvbnMpIHtcbiAgdmFyIGFjY2Vzc190b2tlbiA9IGF1dGhEYXRhLmFjY2Vzc190b2tlbjtcbiAgaWYgKHByb2Nlc3MuZW52LlRFU1RJTkcgJiYgYWNjZXNzX3Rva2VuID09PSAndGVzdCcpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFBcnJheS5pc0FycmF5KGFwcElkcykpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ2FwcElkcyBtdXN0IGJlIGFuIGFycmF5LicpO1xuICB9XG4gIGlmICghYXBwSWRzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnRmFjZWJvb2sgYXV0aCBpcyBub3QgY29uZmlndXJlZC4nKTtcbiAgfVxuICBjb25zdCBkYXRhID0gYXdhaXQgZ3JhcGhSZXF1ZXN0KFxuICAgIGBhcHA/YWNjZXNzX3Rva2VuPSR7YWNjZXNzX3Rva2VufSR7Z2V0QXBwU2VjcmV0UGF0aChhdXRoRGF0YSwgb3B0aW9ucyl9YFxuICApO1xuICBpZiAoIWRhdGEgfHwgIWFwcElkcy5pbmNsdWRlcyhkYXRhLmlkKSkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnRmFjZWJvb2sgYXV0aCBpcyBpbnZhbGlkIGZvciB0aGlzIHVzZXIuJyk7XG4gIH1cbn1cblxuY29uc3QgZ2V0RmFjZWJvb2tLZXlCeUtleUlkID0gYXN5bmMgKGtleUlkLCBjYWNoZU1heEVudHJpZXMsIGNhY2hlTWF4QWdlKSA9PiB7XG4gIGNvbnN0IGNsaWVudCA9IGp3a3NDbGllbnQoe1xuICAgIGp3a3NVcmk6IGAke1RPS0VOX0lTU1VFUn0vLndlbGwta25vd24vb2F1dGgvb3BlbmlkL2p3a3MvYCxcbiAgICBjYWNoZTogdHJ1ZSxcbiAgICBjYWNoZU1heEVudHJpZXMsXG4gICAgY2FjaGVNYXhBZ2UsXG4gIH0pO1xuXG4gIGxldCBrZXk7XG4gIHRyeSB7XG4gICAga2V5ID0gYXdhaXQgYXV0aFV0aWxzLmdldFNpZ25pbmdLZXkoY2xpZW50LCBrZXlJZCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCxcbiAgICAgIGBVbmFibGUgdG8gZmluZCBtYXRjaGluZyBrZXkgZm9yIEtleSBJRDogJHtrZXlJZH1gXG4gICAgKTtcbiAgfVxuICByZXR1cm4ga2V5O1xufTtcblxuY29uc3QgdmVyaWZ5SWRUb2tlbiA9IGFzeW5jICh7IHRva2VuLCBpZCB9LCB7IGNsaWVudElkLCBjYWNoZU1heEVudHJpZXMsIGNhY2hlTWF4QWdlIH0pID0+IHtcbiAgaWYgKCF0b2tlbikge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnaWQgdG9rZW4gaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLicpO1xuICB9XG5cbiAgY29uc3QgeyBraWQ6IGtleUlkLCBhbGc6IGFsZ29yaXRobSB9ID0gYXV0aFV0aWxzLmdldEhlYWRlckZyb21Ub2tlbih0b2tlbik7XG4gIGNvbnN0IE9ORV9IT1VSX0lOX01TID0gMzYwMDAwMDtcbiAgbGV0IGp3dENsYWltcztcblxuICBjYWNoZU1heEFnZSA9IGNhY2hlTWF4QWdlIHx8IE9ORV9IT1VSX0lOX01TO1xuICBjYWNoZU1heEVudHJpZXMgPSBjYWNoZU1heEVudHJpZXMgfHwgNTtcblxuICBjb25zdCBmYWNlYm9va0tleSA9IGF3YWl0IGdldEZhY2Vib29rS2V5QnlLZXlJZChrZXlJZCwgY2FjaGVNYXhFbnRyaWVzLCBjYWNoZU1heEFnZSk7XG4gIGNvbnN0IHNpZ25pbmdLZXkgPSBmYWNlYm9va0tleS5wdWJsaWNLZXkgfHwgZmFjZWJvb2tLZXkucnNhUHVibGljS2V5O1xuXG4gIHRyeSB7XG4gICAgand0Q2xhaW1zID0gand0LnZlcmlmeSh0b2tlbiwgc2lnbmluZ0tleSwge1xuICAgICAgYWxnb3JpdGhtczogYWxnb3JpdGhtLFxuICAgICAgLy8gdGhlIGF1ZGllbmNlIGNhbiBiZSBjaGVja2VkIGFnYWluc3QgYSBzdHJpbmcsIGEgcmVndWxhciBleHByZXNzaW9uIG9yIGEgbGlzdCBvZiBzdHJpbmdzIGFuZC9vciByZWd1bGFyIGV4cHJlc3Npb25zLlxuICAgICAgYXVkaWVuY2U6IGNsaWVudElkLFxuICAgIH0pO1xuICB9IGNhdGNoIChleGNlcHRpb24pIHtcbiAgICBjb25zdCBtZXNzYWdlID0gZXhjZXB0aW9uLm1lc3NhZ2U7XG5cbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgYCR7bWVzc2FnZX1gKTtcbiAgfVxuXG4gIGlmIChqd3RDbGFpbXMuaXNzICE9PSBUT0tFTl9JU1NVRVIpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoXG4gICAgICBQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELFxuICAgICAgYGlkIHRva2VuIG5vdCBpc3N1ZWQgYnkgY29ycmVjdCBPcGVuSUQgcHJvdmlkZXIgLSBleHBlY3RlZDogJHtUT0tFTl9JU1NVRVJ9IHwgZnJvbTogJHtqd3RDbGFpbXMuaXNzfWBcbiAgICApO1xuICB9XG5cbiAgaWYgKGp3dENsYWltcy5zdWIgIT09IGlkKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdhdXRoIGRhdGEgaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLicpO1xuICB9XG4gIHJldHVybiBqd3RDbGFpbXM7XG59O1xuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmZiB0aGlzIHVzZXIgaWQgaXMgdmFsaWQuXG5mdW5jdGlvbiB2YWxpZGF0ZUF1dGhEYXRhKGF1dGhEYXRhLCBvcHRpb25zKSB7XG4gIGlmIChhdXRoRGF0YS50b2tlbikge1xuICAgIHJldHVybiB2ZXJpZnlJZFRva2VuKGF1dGhEYXRhLCBvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdmFsaWRhdGVHcmFwaFRva2VuKGF1dGhEYXRhLCBvcHRpb25zKTtcbiAgfVxufVxuXG4vLyBSZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGZ1bGZpbGxzIGlmZiB0aGlzIGFwcCBpZCBpcyB2YWxpZC5cbmZ1bmN0aW9uIHZhbGlkYXRlQXBwSWQoYXBwSWRzLCBhdXRoRGF0YSwgb3B0aW9ucykge1xuICBpZiAoYXV0aERhdGEudG9rZW4pIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbGlkYXRlR3JhcGhBcHBJZChhcHBJZHMsIGF1dGhEYXRhLCBvcHRpb25zKTtcbiAgfVxufVxuXG4vLyBBIHByb21pc2V5IHdyYXBwZXIgZm9yIEZCIGdyYXBoIHJlcXVlc3RzLlxuZnVuY3Rpb24gZ3JhcGhSZXF1ZXN0KHBhdGgpIHtcbiAgcmV0dXJuIGh0dHBzUmVxdWVzdC5nZXQoJ2h0dHBzOi8vZ3JhcGguZmFjZWJvb2suY29tLycgKyBwYXRoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHZhbGlkYXRlQXBwSWQ6IHZhbGlkYXRlQXBwSWQsXG4gIHZhbGlkYXRlQXV0aERhdGE6IHZhbGlkYXRlQXV0aERhdGEsXG59O1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBO0FBQ0EsTUFBTUEsS0FBSyxH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
|
|
184
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQYXJzZSIsInJlcXVpcmUiLCJjcnlwdG8iLCJqd2tzQ2xpZW50Iiwiand0IiwiaHR0cHNSZXF1ZXN0IiwiYXV0aFV0aWxzIiwiVE9LRU5fSVNTVUVSIiwiZ2V0QXBwU2VjcmV0UGF0aCIsImF1dGhEYXRhIiwib3B0aW9ucyIsImFwcFNlY3JldCIsImFwcHNlY3JldF9wcm9vZiIsImNyZWF0ZUhtYWMiLCJ1cGRhdGUiLCJhY2Nlc3NfdG9rZW4iLCJkaWdlc3QiLCJ2YWxpZGF0ZUdyYXBoVG9rZW4iLCJncmFwaFJlcXVlc3QiLCJ0aGVuIiwiZGF0YSIsImlkIiwicHJvY2VzcyIsImVudiIsIlRFU1RJTkciLCJFcnJvciIsIk9CSkVDVF9OT1RfRk9VTkQiLCJ2YWxpZGF0ZUdyYXBoQXBwSWQiLCJhcHBJZHMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJpbmNsdWRlcyIsImdldEZhY2Vib29rS2V5QnlLZXlJZCIsImtleUlkIiwiY2FjaGVNYXhFbnRyaWVzIiwiY2FjaGVNYXhBZ2UiLCJjbGllbnQiLCJqd2tzVXJpIiwiY2FjaGUiLCJrZXkiLCJnZXRTaWduaW5nS2V5IiwiZXJyb3IiLCJ2ZXJpZnlJZFRva2VuIiwidG9rZW4iLCJjbGllbnRJZCIsImtpZCIsImFsZyIsImFsZ29yaXRobSIsImdldEhlYWRlckZyb21Ub2tlbiIsIk9ORV9IT1VSX0lOX01TIiwiand0Q2xhaW1zIiwiZmFjZWJvb2tLZXkiLCJzaWduaW5nS2V5IiwicHVibGljS2V5IiwicnNhUHVibGljS2V5IiwidmVyaWZ5IiwiYWxnb3JpdGhtcyIsImF1ZGllbmNlIiwiZXhjZXB0aW9uIiwibWVzc2FnZSIsImlzcyIsInN1YiIsInZhbGlkYXRlQXV0aERhdGEiLCJ2YWxpZGF0ZUFwcElkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJwYXRoIiwiZ2V0IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9BZGFwdGVycy9BdXRoL2ZhY2Vib29rLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGFyc2UgU2VydmVyIGF1dGhlbnRpY2F0aW9uIGFkYXB0ZXIgZm9yIEZhY2Vib29rLlxuICpcbiAqIEBjbGFzcyBGYWNlYm9va0FkYXB0ZXJcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gVGhlIGFkYXB0ZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuYXBwU2VjcmV0IC0gWW91ciBGYWNlYm9vayBBcHAgU2VjcmV0LiBSZXF1aXJlZCBmb3Igc2VjdXJlIGF1dGhlbnRpY2F0aW9uLlxuICogQHBhcmFtIHtzdHJpbmdbXX0gb3B0aW9ucy5hcHBJZHMgLSBBbiBhcnJheSBvZiBGYWNlYm9vayBBcHAgSURzLiBSZXF1aXJlZCBmb3IgdmFsaWRhdGluZyB0aGUgYXBwLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogIyMgUGFyc2UgU2VydmVyIENvbmZpZ3VyYXRpb25cbiAqIFRvIGNvbmZpZ3VyZSBQYXJzZSBTZXJ2ZXIgZm9yIEZhY2Vib29rIGF1dGhlbnRpY2F0aW9uLCB1c2UgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6XG4gKiBgYGBqc29uXG4gKiB7XG4gKiAgIFwiYXV0aFwiOiB7XG4gKiAgICAgXCJmYWNlYm9va1wiOiB7XG4gKiAgICAgICBcImFwcFNlY3JldFwiOiBcInlvdXItYXBwLXNlY3JldFwiLFxuICogICAgICAgXCJhcHBJZHNcIjogW1wieW91ci1hcHAtaWRcIl1cbiAqICAgICB9XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoZSBhZGFwdGVyIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgYXV0aGVudGljYXRpb24gbWV0aG9kczpcbiAqIC0gKipTdGFuZGFyZCBMb2dpbioqOiBSZXF1aXJlcyBgaWRgIGFuZCBgYWNjZXNzX3Rva2VuYC5cbiAqIC0gKipMaW1pdGVkIExvZ2luKio6IFJlcXVpcmVzIGBpZGAgYW5kIGB0b2tlbmAuXG4gKlxuICogIyMgQXV0aCBQYXlsb2Fkc1xuICogIyMjIFN0YW5kYXJkIExvZ2luIFBheWxvYWRcbiAqIGBgYGpzb25cbiAqIHtcbiAqICAgXCJmYWNlYm9va1wiOiB7XG4gKiAgICAgXCJpZFwiOiBcIjEyMzQ1NjdcIixcbiAqICAgICBcImFjY2Vzc190b2tlblwiOiBcImFiYzEyM2RlZjQ1NmdoaTc4OVwiXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIyBMaW1pdGVkIExvZ2luIFBheWxvYWRcbiAqIGBgYGpzb25cbiAqIHtcbiAqICAgXCJmYWNlYm9va1wiOiB7XG4gKiAgICAgXCJpZFwiOiBcIjEyMzQ1NjdcIixcbiAqICAgICBcInRva2VuXCI6IFwieHh4eHgueXl5eXkuenp6enpcIlxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyBOb3Rlc1xuICogLSAqKlN0YW5kYXJkIExvZ2luKio6IFVzZSBgaWRgIGFuZCBgYWNjZXNzX3Rva2VuYCBmb3IgZnVsbCBmdW5jdGlvbmFsaXR5LlxuICogLSAqKkxpbWl0ZWQgTG9naW4qKjogVXNlIGBpZGAgYW5kIGB0b2tlbmAgKEpXVCkgd2hlbiB0cmFja2luZyBpcyBvcHRlZCBvdXQgKGUuZy4sIHZpYSBBcHBsZSdzIEFwcCBUcmFja2luZyBUcmFuc3BhcmVuY3kpLlxuICogLSBTdXBwb3J0ZWQgUGFyc2UgU2VydmVyIHZlcnNpb25zOlxuICogICAtIGA+PSA2LjUuNiA8IDdgXG4gKiAgIC0gYD49IDcuMC4xYFxuICpcbiAqIFNlY3VyZSBhdXRoZW50aWNhdGlvbiBpcyByZWNvbW1lbmRlZCB0byBlbnN1cmUgcHJvcGVyIGRhdGEgcHJvdGVjdGlvbiBhbmQgY29tcGxpYW5jZSB3aXRoIEZhY2Vib29rJ3MgZ3VpZGVsaW5lcy5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3MvZmFjZWJvb2stbG9naW4vbGltaXRlZC1sb2dpbi8gRmFjZWJvb2sgTGltaXRlZCBMb2dpbn1cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9mYWNlYm9vay1sb2dpbi9mYWNlYm9vay1sb2dpbi1mb3ItYnVzaW5lc3MvIEZhY2Vib29rIExvZ2luIGZvciBCdXNpbmVzc31cbiAqL1xuXG4vLyBIZWxwZXIgZnVuY3Rpb25zIGZvciBhY2Nlc3NpbmcgdGhlIEZhY2Vib29rIEdyYXBoIEFQSS5cbmNvbnN0IFBhcnNlID0gcmVxdWlyZSgncGFyc2Uvbm9kZScpLlBhcnNlO1xuY29uc3QgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7XG5jb25zdCBqd2tzQ2xpZW50ID0gcmVxdWlyZSgnandrcy1yc2EnKTtcbmNvbnN0IGp3dCA9IHJlcXVpcmUoJ2pzb253ZWJ0b2tlbicpO1xuY29uc3QgaHR0cHNSZXF1ZXN0ID0gcmVxdWlyZSgnLi9odHRwc1JlcXVlc3QnKTtcbmNvbnN0IGF1dGhVdGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxuY29uc3QgVE9LRU5fSVNTVUVSID0gJ2h0dHBzOi8vd3d3LmZhY2Vib29rLmNvbSc7XG5cbmZ1bmN0aW9uIGdldEFwcFNlY3JldFBhdGgoYXV0aERhdGEsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBhcHBTZWNyZXQgPSBvcHRpb25zLmFwcFNlY3JldDtcbiAgaWYgKCFhcHBTZWNyZXQpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgY29uc3QgYXBwc2VjcmV0X3Byb29mID0gY3J5cHRvXG4gICAgLmNyZWF0ZUhtYWMoJ3NoYTI1NicsIGFwcFNlY3JldClcbiAgICAudXBkYXRlKGF1dGhEYXRhLmFjY2Vzc190b2tlbilcbiAgICAuZGlnZXN0KCdoZXgnKTtcblxuICByZXR1cm4gYCZhcHBzZWNyZXRfcHJvb2Y9JHthcHBzZWNyZXRfcHJvb2Z9YDtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVHcmFwaFRva2VuKGF1dGhEYXRhLCBvcHRpb25zKSB7XG4gIHJldHVybiBncmFwaFJlcXVlc3QoXG4gICAgJ21lP2ZpZWxkcz1pZCZhY2Nlc3NfdG9rZW49JyArIGF1dGhEYXRhLmFjY2Vzc190b2tlbiArIGdldEFwcFNlY3JldFBhdGgoYXV0aERhdGEsIG9wdGlvbnMpXG4gICkudGhlbihkYXRhID0+IHtcbiAgICBpZiAoKGRhdGEgJiYgZGF0YS5pZCA9PSBhdXRoRGF0YS5pZCkgfHwgKHByb2Nlc3MuZW52LlRFU1RJTkcgJiYgYXV0aERhdGEuaWQgPT09ICd0ZXN0JykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdGYWNlYm9vayBhdXRoIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nKTtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlR3JhcGhBcHBJZChhcHBJZHMsIGF1dGhEYXRhLCBvcHRpb25zKSB7XG4gIHZhciBhY2Nlc3NfdG9rZW4gPSBhdXRoRGF0YS5hY2Nlc3NfdG9rZW47XG4gIGlmIChwcm9jZXNzLmVudi5URVNUSU5HICYmIGFjY2Vzc190b2tlbiA9PT0gJ3Rlc3QnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICghQXJyYXkuaXNBcnJheShhcHBJZHMpKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsICdhcHBJZHMgbXVzdCBiZSBhbiBhcnJheS4nKTtcbiAgfVxuICBpZiAoIWFwcElkcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ0ZhY2Vib29rIGF1dGggaXMgbm90IGNvbmZpZ3VyZWQuJyk7XG4gIH1cbiAgY29uc3QgZGF0YSA9IGF3YWl0IGdyYXBoUmVxdWVzdChcbiAgICBgYXBwP2FjY2Vzc190b2tlbj0ke2FjY2Vzc190b2tlbn0ke2dldEFwcFNlY3JldFBhdGgoYXV0aERhdGEsIG9wdGlvbnMpfWBcbiAgKTtcbiAgaWYgKCFkYXRhIHx8ICFhcHBJZHMuaW5jbHVkZXMoZGF0YS5pZCkpIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ0ZhY2Vib29rIGF1dGggaXMgaW52YWxpZCBmb3IgdGhpcyB1c2VyLicpO1xuICB9XG59XG5cbmNvbnN0IGdldEZhY2Vib29rS2V5QnlLZXlJZCA9IGFzeW5jIChrZXlJZCwgY2FjaGVNYXhFbnRyaWVzLCBjYWNoZU1heEFnZSkgPT4ge1xuICBjb25zdCBjbGllbnQgPSBqd2tzQ2xpZW50KHtcbiAgICBqd2tzVXJpOiBgJHtUT0tFTl9JU1NVRVJ9Ly53ZWxsLWtub3duL29hdXRoL29wZW5pZC9qd2tzL2AsXG4gICAgY2FjaGU6IHRydWUsXG4gICAgY2FjaGVNYXhFbnRyaWVzLFxuICAgIGNhY2hlTWF4QWdlLFxuICB9KTtcblxuICBsZXQga2V5O1xuICB0cnkge1xuICAgIGtleSA9IGF3YWl0IGF1dGhVdGlscy5nZXRTaWduaW5nS2V5KGNsaWVudCwga2V5SWQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihcbiAgICAgIFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsXG4gICAgICBgVW5hYmxlIHRvIGZpbmQgbWF0Y2hpbmcga2V5IGZvciBLZXkgSUQ6ICR7a2V5SWR9YFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGtleTtcbn07XG5cbmNvbnN0IHZlcmlmeUlkVG9rZW4gPSBhc3luYyAoeyB0b2tlbiwgaWQgfSwgeyBjbGllbnRJZCwgY2FjaGVNYXhFbnRyaWVzLCBjYWNoZU1heEFnZSB9KSA9PiB7XG4gIGlmICghdG9rZW4pIHtcbiAgICB0aHJvdyBuZXcgUGFyc2UuRXJyb3IoUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCwgJ2lkIHRva2VuIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nKTtcbiAgfVxuXG4gIGNvbnN0IHsga2lkOiBrZXlJZCwgYWxnOiBhbGdvcml0aG0gfSA9IGF1dGhVdGlscy5nZXRIZWFkZXJGcm9tVG9rZW4odG9rZW4pO1xuICBjb25zdCBPTkVfSE9VUl9JTl9NUyA9IDM2MDAwMDA7XG4gIGxldCBqd3RDbGFpbXM7XG5cbiAgY2FjaGVNYXhBZ2UgPSBjYWNoZU1heEFnZSB8fCBPTkVfSE9VUl9JTl9NUztcbiAgY2FjaGVNYXhFbnRyaWVzID0gY2FjaGVNYXhFbnRyaWVzIHx8IDU7XG5cbiAgY29uc3QgZmFjZWJvb2tLZXkgPSBhd2FpdCBnZXRGYWNlYm9va0tleUJ5S2V5SWQoa2V5SWQsIGNhY2hlTWF4RW50cmllcywgY2FjaGVNYXhBZ2UpO1xuICBjb25zdCBzaWduaW5nS2V5ID0gZmFjZWJvb2tLZXkucHVibGljS2V5IHx8IGZhY2Vib29rS2V5LnJzYVB1YmxpY0tleTtcblxuICB0cnkge1xuICAgIGp3dENsYWltcyA9IGp3dC52ZXJpZnkodG9rZW4sIHNpZ25pbmdLZXksIHtcbiAgICAgIGFsZ29yaXRobXM6IGFsZ29yaXRobSxcbiAgICAgIC8vIHRoZSBhdWRpZW5jZSBjYW4gYmUgY2hlY2tlZCBhZ2FpbnN0IGEgc3RyaW5nLCBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBvciBhIGxpc3Qgb2Ygc3RyaW5ncyBhbmQvb3IgcmVndWxhciBleHByZXNzaW9ucy5cbiAgICAgIGF1ZGllbmNlOiBjbGllbnRJZCxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGV4Y2VwdGlvbi5tZXNzYWdlO1xuXG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFBhcnNlLkVycm9yLk9CSkVDVF9OT1RfRk9VTkQsIGAke21lc3NhZ2V9YCk7XG4gIH1cblxuICBpZiAoand0Q2xhaW1zLmlzcyAhPT0gVE9LRU5fSVNTVUVSKSB7XG4gICAgdGhyb3cgbmV3IFBhcnNlLkVycm9yKFxuICAgICAgUGFyc2UuRXJyb3IuT0JKRUNUX05PVF9GT1VORCxcbiAgICAgIGBpZCB0b2tlbiBub3QgaXNzdWVkIGJ5IGNvcnJlY3QgT3BlbklEIHByb3ZpZGVyIC0gZXhwZWN0ZWQ6ICR7VE9LRU5fSVNTVUVSfSB8IGZyb206ICR7and0Q2xhaW1zLmlzc31gXG4gICAgKTtcbiAgfVxuXG4gIGlmIChqd3RDbGFpbXMuc3ViICE9PSBpZCkge1xuICAgIHRocm93IG5ldyBQYXJzZS5FcnJvcihQYXJzZS5FcnJvci5PQkpFQ1RfTk9UX0ZPVU5ELCAnYXV0aCBkYXRhIGlzIGludmFsaWQgZm9yIHRoaXMgdXNlci4nKTtcbiAgfVxuICByZXR1cm4gand0Q2xhaW1zO1xufTtcblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZmYgdGhpcyB1c2VyIGlkIGlzIHZhbGlkLlxuZnVuY3Rpb24gdmFsaWRhdGVBdXRoRGF0YShhdXRoRGF0YSwgb3B0aW9ucykge1xuICBpZiAoYXV0aERhdGEudG9rZW4pIHtcbiAgICByZXR1cm4gdmVyaWZ5SWRUb2tlbihhdXRoRGF0YSwgb3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHZhbGlkYXRlR3JhcGhUb2tlbihhdXRoRGF0YSwgb3B0aW9ucyk7XG4gIH1cbn1cblxuLy8gUmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyBpZmYgdGhpcyBhcHAgaWQgaXMgdmFsaWQuXG5mdW5jdGlvbiB2YWxpZGF0ZUFwcElkKGFwcElkcywgYXV0aERhdGEsIG9wdGlvbnMpIHtcbiAgaWYgKGF1dGhEYXRhLnRva2VuKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWxpZGF0ZUdyYXBoQXBwSWQoYXBwSWRzLCBhdXRoRGF0YSwgb3B0aW9ucyk7XG4gIH1cbn1cblxuLy8gQSBwcm9taXNleSB3cmFwcGVyIGZvciBGQiBncmFwaCByZXF1ZXN0cy5cbmZ1bmN0aW9uIGdyYXBoUmVxdWVzdChwYXRoKSB7XG4gIHJldHVybiBodHRwc1JlcXVlc3QuZ2V0KCdodHRwczovL2dyYXBoLmZhY2Vib29rLmNvbS8nICsgcGF0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICB2YWxpZGF0ZUFwcElkOiB2YWxpZGF0ZUFw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
|