@shopsbuilder/auth-sdk 1.1.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/README.md +469 -0
- package/dist/README.md +469 -0
- package/dist/SaleorAccessTokenStorageHandler.d.mts +13 -0
- package/dist/SaleorAccessTokenStorageHandler.d.ts +13 -0
- package/dist/SaleorAccessTokenStorageHandler.js +50 -0
- package/dist/SaleorAccessTokenStorageHandler.mjs +8 -0
- package/dist/SaleorAuthClient.d.mts +52 -0
- package/dist/SaleorAuthClient.d.ts +52 -0
- package/dist/SaleorAuthClient.js +464 -0
- package/dist/SaleorAuthClient.mjs +13 -0
- package/dist/SaleorExternalAuth.d.mts +29 -0
- package/dist/SaleorExternalAuth.d.ts +29 -0
- package/dist/SaleorExternalAuth.js +198 -0
- package/dist/SaleorExternalAuth.mjs +12 -0
- package/dist/SaleorRefreshTokenStorageHandler.d.mts +24 -0
- package/dist/SaleorRefreshTokenStorageHandler.d.ts +24 -0
- package/dist/SaleorRefreshTokenStorageHandler.js +83 -0
- package/dist/SaleorRefreshTokenStorageHandler.mjs +12 -0
- package/dist/chunk-263DHBMK.mjs +56 -0
- package/dist/chunk-74GMXOK4.mjs +13 -0
- package/dist/chunk-77CRMKFX.mjs +12 -0
- package/dist/chunk-7JTFMRQS.mjs +105 -0
- package/dist/chunk-BRRF6LN3.mjs +224 -0
- package/dist/chunk-BZFBMGPG.mjs +25 -0
- package/dist/chunk-K5MTKW5C.mjs +16 -0
- package/dist/chunk-KLIEZ4V4.mjs +10 -0
- package/dist/chunk-NAQNA6DI.mjs +20 -0
- package/dist/chunk-Q3UFWDCC.mjs +38 -0
- package/dist/chunk-T35JF4IS.mjs +59 -0
- package/dist/chunk-UDLCOX6B.mjs +49 -0
- package/dist/chunk-WJVMUY3P.mjs +33 -0
- package/dist/graphql.d.mts +11 -0
- package/dist/graphql.d.ts +11 -0
- package/dist/graphql.js +40 -0
- package/dist/graphql.mjs +6 -0
- package/dist/index.d.mts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +524 -0
- package/dist/index.mjs +23 -0
- package/dist/mutations.d.mts +12 -0
- package/dist/mutations.d.ts +12 -0
- package/dist/mutations.js +145 -0
- package/dist/mutations.mjs +17 -0
- package/dist/next/handler.d.mts +9 -0
- package/dist/next/handler.d.ts +9 -0
- package/dist/next/handler.js +36 -0
- package/dist/next/handler.mjs +11 -0
- package/dist/next/index.d.mts +6 -0
- package/dist/next/index.d.ts +6 -0
- package/dist/next/index.js +38 -0
- package/dist/next/index.mjs +11 -0
- package/dist/next/server.d.mts +20 -0
- package/dist/next/server.d.ts +20 -0
- package/dist/next/server.js +79 -0
- package/dist/next/server.mjs +53 -0
- package/dist/react/SaleorAuthProvider.d.mts +10 -0
- package/dist/react/SaleorAuthProvider.d.ts +10 -0
- package/dist/react/SaleorAuthProvider.js +50 -0
- package/dist/react/SaleorAuthProvider.mjs +13 -0
- package/dist/react/context.d.mts +9 -0
- package/dist/react/context.d.ts +9 -0
- package/dist/react/context.js +46 -0
- package/dist/react/context.mjs +16 -0
- package/dist/react/index.d.mts +8 -0
- package/dist/react/index.d.ts +8 -0
- package/dist/react/index.js +291 -0
- package/dist/react/index.mjs +30 -0
- package/dist/react/useAuthChange.d.mts +8 -0
- package/dist/react/useAuthChange.d.ts +8 -0
- package/dist/react/useAuthChange.js +58 -0
- package/dist/react/useAuthChange.mjs +7 -0
- package/dist/react/useSaleorExternalAuth.d.mts +22 -0
- package/dist/react/useSaleorExternalAuth.d.ts +22 -0
- package/dist/react/useSaleorExternalAuth.js +227 -0
- package/dist/react/useSaleorExternalAuth.mjs +11 -0
- package/dist/types.d.mts +82 -0
- package/dist/types.d.ts +82 -0
- package/dist/types.js +34 -0
- package/dist/types.mjs +6 -0
- package/dist/utils.d.mts +28 -0
- package/dist/utils.d.ts +28 -0
- package/dist/utils.js +77 -0
- package/dist/utils.mjs +15 -0
- package/package.json +129 -0
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/react/index.ts
|
|
21
|
+
var react_exports = {};
|
|
22
|
+
__export(react_exports, {
|
|
23
|
+
Provider: () => Provider,
|
|
24
|
+
SaleorAuthProvider: () => SaleorAuthProvider,
|
|
25
|
+
createSafeContext: () => createSafeContext,
|
|
26
|
+
useAuthChange: () => useAuthChange,
|
|
27
|
+
useSaleorAuthContext: () => useSaleorAuthContext,
|
|
28
|
+
useSaleorExternalAuth: () => useSaleorExternalAuth
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(react_exports);
|
|
31
|
+
|
|
32
|
+
// src/react/context.ts
|
|
33
|
+
var import_react = require("react");
|
|
34
|
+
|
|
35
|
+
// src/SaleorRefreshTokenStorageHandler.ts
|
|
36
|
+
var getStorageAuthEventKey = (prefix) => [prefix, "saleor_storage_auth_change"].filter(Boolean).join("+");
|
|
37
|
+
|
|
38
|
+
// src/graphql.ts
|
|
39
|
+
var TypedDocumentString = class extends String {
|
|
40
|
+
constructor(value, __meta__) {
|
|
41
|
+
super(value);
|
|
42
|
+
this.value = value;
|
|
43
|
+
this.__meta__ = __meta__;
|
|
44
|
+
}
|
|
45
|
+
__apiType;
|
|
46
|
+
toString() {
|
|
47
|
+
return this.value;
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
// src/utils.ts
|
|
52
|
+
var getRequestData = (query, variables, requestInit) => ({
|
|
53
|
+
...requestInit,
|
|
54
|
+
method: "POST",
|
|
55
|
+
headers: {
|
|
56
|
+
...Object.fromEntries(new Headers(requestInit?.headers).entries()),
|
|
57
|
+
"Content-Type": "application/json"
|
|
58
|
+
},
|
|
59
|
+
body: JSON.stringify({
|
|
60
|
+
query,
|
|
61
|
+
variables
|
|
62
|
+
})
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
// src/mutations.ts
|
|
66
|
+
var accountErrorFragment = (
|
|
67
|
+
/* graphql */
|
|
68
|
+
`
|
|
69
|
+
fragment AccountErrorFragment on AccountError {
|
|
70
|
+
code
|
|
71
|
+
field
|
|
72
|
+
message
|
|
73
|
+
}
|
|
74
|
+
`
|
|
75
|
+
);
|
|
76
|
+
var TOKEN_REFRESH = new TypedDocumentString(
|
|
77
|
+
/* graphql */
|
|
78
|
+
`
|
|
79
|
+
${accountErrorFragment}
|
|
80
|
+
mutation refreshToken($refreshToken: String!) {
|
|
81
|
+
tokenRefresh(refreshToken: $refreshToken) {
|
|
82
|
+
token
|
|
83
|
+
errors {
|
|
84
|
+
...AccountErrorFragment
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
`
|
|
89
|
+
);
|
|
90
|
+
var TOKEN_CREATE = new TypedDocumentString(
|
|
91
|
+
/* graphql */
|
|
92
|
+
`
|
|
93
|
+
mutation tokenCreate($email: String!, $password: String!) {
|
|
94
|
+
tokenCreate(email: $email, password: $password) {
|
|
95
|
+
token
|
|
96
|
+
refreshToken
|
|
97
|
+
errors {
|
|
98
|
+
message
|
|
99
|
+
field
|
|
100
|
+
code
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
`
|
|
105
|
+
);
|
|
106
|
+
var PASSWORD_RESET = new TypedDocumentString(
|
|
107
|
+
/* graphql */
|
|
108
|
+
`
|
|
109
|
+
mutation passwordReset($email: String!, $password: String!, $token: String!) {
|
|
110
|
+
setPassword(email: $email, password: $password, token: $token) {
|
|
111
|
+
token
|
|
112
|
+
refreshToken
|
|
113
|
+
errors {
|
|
114
|
+
message
|
|
115
|
+
field
|
|
116
|
+
code
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
`
|
|
121
|
+
);
|
|
122
|
+
var ExternalAuthenticationURL = new TypedDocumentString(
|
|
123
|
+
/* graphql */
|
|
124
|
+
`
|
|
125
|
+
mutation externalAuthenticationUrl($pluginId: String!, $input: JSONString!) {
|
|
126
|
+
externalAuthenticationUrl(pluginId: $pluginId, input: $input) {
|
|
127
|
+
authenticationData
|
|
128
|
+
errors {
|
|
129
|
+
code
|
|
130
|
+
field
|
|
131
|
+
message
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
`
|
|
136
|
+
);
|
|
137
|
+
var ExternalObtainAccessTokens = new TypedDocumentString(
|
|
138
|
+
/* graphql */
|
|
139
|
+
`
|
|
140
|
+
mutation AuthObtainAccessToken($pluginId: String!, $input: JSONString!) {
|
|
141
|
+
externalObtainAccessTokens(pluginId: $pluginId, input: $input) {
|
|
142
|
+
token
|
|
143
|
+
refreshToken
|
|
144
|
+
user {
|
|
145
|
+
id
|
|
146
|
+
email
|
|
147
|
+
}
|
|
148
|
+
errors {
|
|
149
|
+
field
|
|
150
|
+
code
|
|
151
|
+
message
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
`
|
|
156
|
+
);
|
|
157
|
+
|
|
158
|
+
// src/react/context.ts
|
|
159
|
+
var createSafeContext = () => {
|
|
160
|
+
const context = (0, import_react.createContext)(void 0);
|
|
161
|
+
function useSafeContext() {
|
|
162
|
+
const value = (0, import_react.useContext)(context);
|
|
163
|
+
if (value === void 0) {
|
|
164
|
+
throw new Error("useContext must be inside a Provider with a value");
|
|
165
|
+
}
|
|
166
|
+
return value;
|
|
167
|
+
}
|
|
168
|
+
return [useSafeContext, context.Provider];
|
|
169
|
+
};
|
|
170
|
+
var [useSaleorAuthContext, Provider] = createSafeContext();
|
|
171
|
+
|
|
172
|
+
// src/react/SaleorAuthProvider.tsx
|
|
173
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
174
|
+
var SaleorAuthProvider = ({ children, client }) => {
|
|
175
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Provider, { value: client, children });
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
// src/react/useAuthChange.ts
|
|
179
|
+
var import_react2 = require("react");
|
|
180
|
+
var useAuthChange = ({ saleorApiUrl, onSignedOut, onSignedIn }) => {
|
|
181
|
+
const handleAuthChange = (event) => {
|
|
182
|
+
const isCustomAuthEvent = event?.type === getStorageAuthEventKey(saleorApiUrl);
|
|
183
|
+
if (!isCustomAuthEvent) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
const { authState } = event.detail;
|
|
187
|
+
if (authState === "signedIn") {
|
|
188
|
+
onSignedIn?.();
|
|
189
|
+
} else if (authState === "signedOut") {
|
|
190
|
+
onSignedOut?.();
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
(0, import_react2.useEffect)(() => {
|
|
194
|
+
if (typeof window === "undefined") {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
window.addEventListener(getStorageAuthEventKey(saleorApiUrl), handleAuthChange);
|
|
198
|
+
return () => {
|
|
199
|
+
window.removeEventListener(getStorageAuthEventKey(saleorApiUrl), handleAuthChange);
|
|
200
|
+
};
|
|
201
|
+
}, []);
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
// src/react/useSaleorExternalAuth.ts
|
|
205
|
+
var import_react3 = require("react");
|
|
206
|
+
|
|
207
|
+
// src/SaleorExternalAuth.ts
|
|
208
|
+
var GraphQLError = class extends Error {
|
|
209
|
+
constructor(errorResponse) {
|
|
210
|
+
const message = errorResponse.errors.map((error) => error.message).join("\n");
|
|
211
|
+
super(message);
|
|
212
|
+
this.errorResponse = errorResponse;
|
|
213
|
+
this.name = this.constructor.name;
|
|
214
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
var SaleorExternalAuth = class {
|
|
218
|
+
constructor(saleorURL, provider) {
|
|
219
|
+
this.saleorURL = saleorURL;
|
|
220
|
+
this.provider = provider;
|
|
221
|
+
}
|
|
222
|
+
async makePOSTRequest(query, variables) {
|
|
223
|
+
const response = await fetch(this.saleorURL, getRequestData(query, variables));
|
|
224
|
+
const result = await response.json();
|
|
225
|
+
if ("errors" in result) {
|
|
226
|
+
console.error(result.errors);
|
|
227
|
+
throw new GraphQLError(result);
|
|
228
|
+
}
|
|
229
|
+
return result.data;
|
|
230
|
+
}
|
|
231
|
+
async initiate({ redirectURL }) {
|
|
232
|
+
const {
|
|
233
|
+
externalAuthenticationUrl: { authenticationData: data, errors }
|
|
234
|
+
} = await this.makePOSTRequest(ExternalAuthenticationURL, {
|
|
235
|
+
pluginId: this.provider,
|
|
236
|
+
input: JSON.stringify({ redirectUri: redirectURL })
|
|
237
|
+
});
|
|
238
|
+
if (errors.length > 0) {
|
|
239
|
+
console.error({ errors });
|
|
240
|
+
throw new GraphQLError({ errors });
|
|
241
|
+
}
|
|
242
|
+
const { authorizationUrl } = JSON.parse(data);
|
|
243
|
+
return authorizationUrl;
|
|
244
|
+
}
|
|
245
|
+
async obtainAccessToken({ code, state }) {
|
|
246
|
+
const { externalObtainAccessTokens: data } = await this.makePOSTRequest(ExternalObtainAccessTokens, {
|
|
247
|
+
pluginId: this.provider,
|
|
248
|
+
input: JSON.stringify({ code, state })
|
|
249
|
+
});
|
|
250
|
+
return data;
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
// src/react/useSaleorExternalAuth.ts
|
|
255
|
+
var useSaleorExternalAuth = ({
|
|
256
|
+
saleorURL,
|
|
257
|
+
provider,
|
|
258
|
+
redirectURL
|
|
259
|
+
}) => {
|
|
260
|
+
const [state, setState] = (0, import_react3.useState)({
|
|
261
|
+
authURL: void 0,
|
|
262
|
+
error: void 0,
|
|
263
|
+
loading: true
|
|
264
|
+
});
|
|
265
|
+
(0, import_react3.useEffect)(() => {
|
|
266
|
+
const triggerExternalAuth = async () => {
|
|
267
|
+
try {
|
|
268
|
+
const auth = new SaleorExternalAuth(saleorURL, provider);
|
|
269
|
+
const result = await auth.initiate({ redirectURL });
|
|
270
|
+
setState({ authURL: result, loading: false });
|
|
271
|
+
} catch (error) {
|
|
272
|
+
if (error instanceof Error) {
|
|
273
|
+
setState({ loading: false, error: error.message });
|
|
274
|
+
} else {
|
|
275
|
+
setState({ loading: false, error: "Unknown error" });
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
};
|
|
279
|
+
void triggerExternalAuth();
|
|
280
|
+
}, [saleorURL]);
|
|
281
|
+
return state;
|
|
282
|
+
};
|
|
283
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
284
|
+
0 && (module.exports = {
|
|
285
|
+
Provider,
|
|
286
|
+
SaleorAuthProvider,
|
|
287
|
+
createSafeContext,
|
|
288
|
+
useAuthChange,
|
|
289
|
+
useSaleorAuthContext,
|
|
290
|
+
useSaleorExternalAuth
|
|
291
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SaleorAuthProvider
|
|
3
|
+
} from "../chunk-74GMXOK4.mjs";
|
|
4
|
+
import {
|
|
5
|
+
Provider,
|
|
6
|
+
createSafeContext,
|
|
7
|
+
useSaleorAuthContext
|
|
8
|
+
} from "../chunk-NAQNA6DI.mjs";
|
|
9
|
+
import {
|
|
10
|
+
useAuthChange
|
|
11
|
+
} from "../chunk-WJVMUY3P.mjs";
|
|
12
|
+
import {
|
|
13
|
+
useSaleorExternalAuth
|
|
14
|
+
} from "../chunk-Q3UFWDCC.mjs";
|
|
15
|
+
import "../chunk-BRRF6LN3.mjs";
|
|
16
|
+
import "../chunk-BZFBMGPG.mjs";
|
|
17
|
+
import "../chunk-263DHBMK.mjs";
|
|
18
|
+
import "../chunk-T35JF4IS.mjs";
|
|
19
|
+
import "../chunk-KLIEZ4V4.mjs";
|
|
20
|
+
import "../chunk-UDLCOX6B.mjs";
|
|
21
|
+
import "../chunk-7JTFMRQS.mjs";
|
|
22
|
+
import "../chunk-K5MTKW5C.mjs";
|
|
23
|
+
export {
|
|
24
|
+
Provider,
|
|
25
|
+
SaleorAuthProvider,
|
|
26
|
+
createSafeContext,
|
|
27
|
+
useAuthChange,
|
|
28
|
+
useSaleorAuthContext,
|
|
29
|
+
useSaleorExternalAuth
|
|
30
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/react/useAuthChange.ts
|
|
21
|
+
var useAuthChange_exports = {};
|
|
22
|
+
__export(useAuthChange_exports, {
|
|
23
|
+
useAuthChange: () => useAuthChange
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(useAuthChange_exports);
|
|
26
|
+
var import_react = require("react");
|
|
27
|
+
|
|
28
|
+
// src/SaleorRefreshTokenStorageHandler.ts
|
|
29
|
+
var getStorageAuthEventKey = (prefix) => [prefix, "saleor_storage_auth_change"].filter(Boolean).join("+");
|
|
30
|
+
|
|
31
|
+
// src/react/useAuthChange.ts
|
|
32
|
+
var useAuthChange = ({ saleorApiUrl, onSignedOut, onSignedIn }) => {
|
|
33
|
+
const handleAuthChange = (event) => {
|
|
34
|
+
const isCustomAuthEvent = event?.type === getStorageAuthEventKey(saleorApiUrl);
|
|
35
|
+
if (!isCustomAuthEvent) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const { authState } = event.detail;
|
|
39
|
+
if (authState === "signedIn") {
|
|
40
|
+
onSignedIn?.();
|
|
41
|
+
} else if (authState === "signedOut") {
|
|
42
|
+
onSignedOut?.();
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
(0, import_react.useEffect)(() => {
|
|
46
|
+
if (typeof window === "undefined") {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
window.addEventListener(getStorageAuthEventKey(saleorApiUrl), handleAuthChange);
|
|
50
|
+
return () => {
|
|
51
|
+
window.removeEventListener(getStorageAuthEventKey(saleorApiUrl), handleAuthChange);
|
|
52
|
+
};
|
|
53
|
+
}, []);
|
|
54
|
+
};
|
|
55
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
56
|
+
0 && (module.exports = {
|
|
57
|
+
useAuthChange
|
|
58
|
+
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ExternalProvider } from '../types.mjs';
|
|
2
|
+
|
|
3
|
+
type SaleorExternalAuthState = {
|
|
4
|
+
loading: true;
|
|
5
|
+
authURL?: undefined;
|
|
6
|
+
error?: undefined;
|
|
7
|
+
} | {
|
|
8
|
+
loading: false;
|
|
9
|
+
authURL: string;
|
|
10
|
+
error?: undefined;
|
|
11
|
+
} | {
|
|
12
|
+
loading: false;
|
|
13
|
+
authURL?: undefined;
|
|
14
|
+
error: unknown;
|
|
15
|
+
};
|
|
16
|
+
declare const useSaleorExternalAuth: ({ saleorURL, provider, redirectURL, }: {
|
|
17
|
+
saleorURL: string;
|
|
18
|
+
provider: ExternalProvider;
|
|
19
|
+
redirectURL: string;
|
|
20
|
+
}) => SaleorExternalAuthState;
|
|
21
|
+
|
|
22
|
+
export { type SaleorExternalAuthState, useSaleorExternalAuth };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ExternalProvider } from '../types.js';
|
|
2
|
+
|
|
3
|
+
type SaleorExternalAuthState = {
|
|
4
|
+
loading: true;
|
|
5
|
+
authURL?: undefined;
|
|
6
|
+
error?: undefined;
|
|
7
|
+
} | {
|
|
8
|
+
loading: false;
|
|
9
|
+
authURL: string;
|
|
10
|
+
error?: undefined;
|
|
11
|
+
} | {
|
|
12
|
+
loading: false;
|
|
13
|
+
authURL?: undefined;
|
|
14
|
+
error: unknown;
|
|
15
|
+
};
|
|
16
|
+
declare const useSaleorExternalAuth: ({ saleorURL, provider, redirectURL, }: {
|
|
17
|
+
saleorURL: string;
|
|
18
|
+
provider: ExternalProvider;
|
|
19
|
+
redirectURL: string;
|
|
20
|
+
}) => SaleorExternalAuthState;
|
|
21
|
+
|
|
22
|
+
export { type SaleorExternalAuthState, useSaleorExternalAuth };
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/react/useSaleorExternalAuth.ts
|
|
21
|
+
var useSaleorExternalAuth_exports = {};
|
|
22
|
+
__export(useSaleorExternalAuth_exports, {
|
|
23
|
+
useSaleorExternalAuth: () => useSaleorExternalAuth
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(useSaleorExternalAuth_exports);
|
|
26
|
+
var import_react = require("react");
|
|
27
|
+
|
|
28
|
+
// src/graphql.ts
|
|
29
|
+
var TypedDocumentString = class extends String {
|
|
30
|
+
constructor(value, __meta__) {
|
|
31
|
+
super(value);
|
|
32
|
+
this.value = value;
|
|
33
|
+
this.__meta__ = __meta__;
|
|
34
|
+
}
|
|
35
|
+
__apiType;
|
|
36
|
+
toString() {
|
|
37
|
+
return this.value;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
// src/mutations.ts
|
|
42
|
+
var accountErrorFragment = (
|
|
43
|
+
/* graphql */
|
|
44
|
+
`
|
|
45
|
+
fragment AccountErrorFragment on AccountError {
|
|
46
|
+
code
|
|
47
|
+
field
|
|
48
|
+
message
|
|
49
|
+
}
|
|
50
|
+
`
|
|
51
|
+
);
|
|
52
|
+
var TOKEN_REFRESH = new TypedDocumentString(
|
|
53
|
+
/* graphql */
|
|
54
|
+
`
|
|
55
|
+
${accountErrorFragment}
|
|
56
|
+
mutation refreshToken($refreshToken: String!) {
|
|
57
|
+
tokenRefresh(refreshToken: $refreshToken) {
|
|
58
|
+
token
|
|
59
|
+
errors {
|
|
60
|
+
...AccountErrorFragment
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
`
|
|
65
|
+
);
|
|
66
|
+
var TOKEN_CREATE = new TypedDocumentString(
|
|
67
|
+
/* graphql */
|
|
68
|
+
`
|
|
69
|
+
mutation tokenCreate($email: String!, $password: String!) {
|
|
70
|
+
tokenCreate(email: $email, password: $password) {
|
|
71
|
+
token
|
|
72
|
+
refreshToken
|
|
73
|
+
errors {
|
|
74
|
+
message
|
|
75
|
+
field
|
|
76
|
+
code
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
`
|
|
81
|
+
);
|
|
82
|
+
var PASSWORD_RESET = new TypedDocumentString(
|
|
83
|
+
/* graphql */
|
|
84
|
+
`
|
|
85
|
+
mutation passwordReset($email: String!, $password: String!, $token: String!) {
|
|
86
|
+
setPassword(email: $email, password: $password, token: $token) {
|
|
87
|
+
token
|
|
88
|
+
refreshToken
|
|
89
|
+
errors {
|
|
90
|
+
message
|
|
91
|
+
field
|
|
92
|
+
code
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
`
|
|
97
|
+
);
|
|
98
|
+
var ExternalAuthenticationURL = new TypedDocumentString(
|
|
99
|
+
/* graphql */
|
|
100
|
+
`
|
|
101
|
+
mutation externalAuthenticationUrl($pluginId: String!, $input: JSONString!) {
|
|
102
|
+
externalAuthenticationUrl(pluginId: $pluginId, input: $input) {
|
|
103
|
+
authenticationData
|
|
104
|
+
errors {
|
|
105
|
+
code
|
|
106
|
+
field
|
|
107
|
+
message
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
`
|
|
112
|
+
);
|
|
113
|
+
var ExternalObtainAccessTokens = new TypedDocumentString(
|
|
114
|
+
/* graphql */
|
|
115
|
+
`
|
|
116
|
+
mutation AuthObtainAccessToken($pluginId: String!, $input: JSONString!) {
|
|
117
|
+
externalObtainAccessTokens(pluginId: $pluginId, input: $input) {
|
|
118
|
+
token
|
|
119
|
+
refreshToken
|
|
120
|
+
user {
|
|
121
|
+
id
|
|
122
|
+
email
|
|
123
|
+
}
|
|
124
|
+
errors {
|
|
125
|
+
field
|
|
126
|
+
code
|
|
127
|
+
message
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
`
|
|
132
|
+
);
|
|
133
|
+
|
|
134
|
+
// src/utils.ts
|
|
135
|
+
var getRequestData = (query, variables, requestInit) => ({
|
|
136
|
+
...requestInit,
|
|
137
|
+
method: "POST",
|
|
138
|
+
headers: {
|
|
139
|
+
...Object.fromEntries(new Headers(requestInit?.headers).entries()),
|
|
140
|
+
"Content-Type": "application/json"
|
|
141
|
+
},
|
|
142
|
+
body: JSON.stringify({
|
|
143
|
+
query,
|
|
144
|
+
variables
|
|
145
|
+
})
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
// src/SaleorExternalAuth.ts
|
|
149
|
+
var GraphQLError = class extends Error {
|
|
150
|
+
constructor(errorResponse) {
|
|
151
|
+
const message = errorResponse.errors.map((error) => error.message).join("\n");
|
|
152
|
+
super(message);
|
|
153
|
+
this.errorResponse = errorResponse;
|
|
154
|
+
this.name = this.constructor.name;
|
|
155
|
+
Object.setPrototypeOf(this, new.target.prototype);
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
var SaleorExternalAuth = class {
|
|
159
|
+
constructor(saleorURL, provider) {
|
|
160
|
+
this.saleorURL = saleorURL;
|
|
161
|
+
this.provider = provider;
|
|
162
|
+
}
|
|
163
|
+
async makePOSTRequest(query, variables) {
|
|
164
|
+
const response = await fetch(this.saleorURL, getRequestData(query, variables));
|
|
165
|
+
const result = await response.json();
|
|
166
|
+
if ("errors" in result) {
|
|
167
|
+
console.error(result.errors);
|
|
168
|
+
throw new GraphQLError(result);
|
|
169
|
+
}
|
|
170
|
+
return result.data;
|
|
171
|
+
}
|
|
172
|
+
async initiate({ redirectURL }) {
|
|
173
|
+
const {
|
|
174
|
+
externalAuthenticationUrl: { authenticationData: data, errors }
|
|
175
|
+
} = await this.makePOSTRequest(ExternalAuthenticationURL, {
|
|
176
|
+
pluginId: this.provider,
|
|
177
|
+
input: JSON.stringify({ redirectUri: redirectURL })
|
|
178
|
+
});
|
|
179
|
+
if (errors.length > 0) {
|
|
180
|
+
console.error({ errors });
|
|
181
|
+
throw new GraphQLError({ errors });
|
|
182
|
+
}
|
|
183
|
+
const { authorizationUrl } = JSON.parse(data);
|
|
184
|
+
return authorizationUrl;
|
|
185
|
+
}
|
|
186
|
+
async obtainAccessToken({ code, state }) {
|
|
187
|
+
const { externalObtainAccessTokens: data } = await this.makePOSTRequest(ExternalObtainAccessTokens, {
|
|
188
|
+
pluginId: this.provider,
|
|
189
|
+
input: JSON.stringify({ code, state })
|
|
190
|
+
});
|
|
191
|
+
return data;
|
|
192
|
+
}
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
// src/react/useSaleorExternalAuth.ts
|
|
196
|
+
var useSaleorExternalAuth = ({
|
|
197
|
+
saleorURL,
|
|
198
|
+
provider,
|
|
199
|
+
redirectURL
|
|
200
|
+
}) => {
|
|
201
|
+
const [state, setState] = (0, import_react.useState)({
|
|
202
|
+
authURL: void 0,
|
|
203
|
+
error: void 0,
|
|
204
|
+
loading: true
|
|
205
|
+
});
|
|
206
|
+
(0, import_react.useEffect)(() => {
|
|
207
|
+
const triggerExternalAuth = async () => {
|
|
208
|
+
try {
|
|
209
|
+
const auth = new SaleorExternalAuth(saleorURL, provider);
|
|
210
|
+
const result = await auth.initiate({ redirectURL });
|
|
211
|
+
setState({ authURL: result, loading: false });
|
|
212
|
+
} catch (error) {
|
|
213
|
+
if (error instanceof Error) {
|
|
214
|
+
setState({ loading: false, error: error.message });
|
|
215
|
+
} else {
|
|
216
|
+
setState({ loading: false, error: "Unknown error" });
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
void triggerExternalAuth();
|
|
221
|
+
}, [saleorURL]);
|
|
222
|
+
return state;
|
|
223
|
+
};
|
|
224
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
225
|
+
0 && (module.exports = {
|
|
226
|
+
useSaleorExternalAuth
|
|
227
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import {
|
|
2
|
+
useSaleorExternalAuth
|
|
3
|
+
} from "../chunk-Q3UFWDCC.mjs";
|
|
4
|
+
import "../chunk-T35JF4IS.mjs";
|
|
5
|
+
import "../chunk-KLIEZ4V4.mjs";
|
|
6
|
+
import "../chunk-UDLCOX6B.mjs";
|
|
7
|
+
import "../chunk-7JTFMRQS.mjs";
|
|
8
|
+
import "../chunk-K5MTKW5C.mjs";
|
|
9
|
+
export {
|
|
10
|
+
useSaleorExternalAuth
|
|
11
|
+
};
|