@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.
Files changed (84) hide show
  1. package/README.md +469 -0
  2. package/dist/README.md +469 -0
  3. package/dist/SaleorAccessTokenStorageHandler.d.mts +13 -0
  4. package/dist/SaleorAccessTokenStorageHandler.d.ts +13 -0
  5. package/dist/SaleorAccessTokenStorageHandler.js +50 -0
  6. package/dist/SaleorAccessTokenStorageHandler.mjs +8 -0
  7. package/dist/SaleorAuthClient.d.mts +52 -0
  8. package/dist/SaleorAuthClient.d.ts +52 -0
  9. package/dist/SaleorAuthClient.js +464 -0
  10. package/dist/SaleorAuthClient.mjs +13 -0
  11. package/dist/SaleorExternalAuth.d.mts +29 -0
  12. package/dist/SaleorExternalAuth.d.ts +29 -0
  13. package/dist/SaleorExternalAuth.js +198 -0
  14. package/dist/SaleorExternalAuth.mjs +12 -0
  15. package/dist/SaleorRefreshTokenStorageHandler.d.mts +24 -0
  16. package/dist/SaleorRefreshTokenStorageHandler.d.ts +24 -0
  17. package/dist/SaleorRefreshTokenStorageHandler.js +83 -0
  18. package/dist/SaleorRefreshTokenStorageHandler.mjs +12 -0
  19. package/dist/chunk-263DHBMK.mjs +56 -0
  20. package/dist/chunk-74GMXOK4.mjs +13 -0
  21. package/dist/chunk-77CRMKFX.mjs +12 -0
  22. package/dist/chunk-7JTFMRQS.mjs +105 -0
  23. package/dist/chunk-BRRF6LN3.mjs +224 -0
  24. package/dist/chunk-BZFBMGPG.mjs +25 -0
  25. package/dist/chunk-K5MTKW5C.mjs +16 -0
  26. package/dist/chunk-KLIEZ4V4.mjs +10 -0
  27. package/dist/chunk-NAQNA6DI.mjs +20 -0
  28. package/dist/chunk-Q3UFWDCC.mjs +38 -0
  29. package/dist/chunk-T35JF4IS.mjs +59 -0
  30. package/dist/chunk-UDLCOX6B.mjs +49 -0
  31. package/dist/chunk-WJVMUY3P.mjs +33 -0
  32. package/dist/graphql.d.mts +11 -0
  33. package/dist/graphql.d.ts +11 -0
  34. package/dist/graphql.js +40 -0
  35. package/dist/graphql.mjs +6 -0
  36. package/dist/index.d.mts +5 -0
  37. package/dist/index.d.ts +5 -0
  38. package/dist/index.js +524 -0
  39. package/dist/index.mjs +23 -0
  40. package/dist/mutations.d.mts +12 -0
  41. package/dist/mutations.d.ts +12 -0
  42. package/dist/mutations.js +145 -0
  43. package/dist/mutations.mjs +17 -0
  44. package/dist/next/handler.d.mts +9 -0
  45. package/dist/next/handler.d.ts +9 -0
  46. package/dist/next/handler.js +36 -0
  47. package/dist/next/handler.mjs +11 -0
  48. package/dist/next/index.d.mts +6 -0
  49. package/dist/next/index.d.ts +6 -0
  50. package/dist/next/index.js +38 -0
  51. package/dist/next/index.mjs +11 -0
  52. package/dist/next/server.d.mts +20 -0
  53. package/dist/next/server.d.ts +20 -0
  54. package/dist/next/server.js +79 -0
  55. package/dist/next/server.mjs +53 -0
  56. package/dist/react/SaleorAuthProvider.d.mts +10 -0
  57. package/dist/react/SaleorAuthProvider.d.ts +10 -0
  58. package/dist/react/SaleorAuthProvider.js +50 -0
  59. package/dist/react/SaleorAuthProvider.mjs +13 -0
  60. package/dist/react/context.d.mts +9 -0
  61. package/dist/react/context.d.ts +9 -0
  62. package/dist/react/context.js +46 -0
  63. package/dist/react/context.mjs +16 -0
  64. package/dist/react/index.d.mts +8 -0
  65. package/dist/react/index.d.ts +8 -0
  66. package/dist/react/index.js +291 -0
  67. package/dist/react/index.mjs +30 -0
  68. package/dist/react/useAuthChange.d.mts +8 -0
  69. package/dist/react/useAuthChange.d.ts +8 -0
  70. package/dist/react/useAuthChange.js +58 -0
  71. package/dist/react/useAuthChange.mjs +7 -0
  72. package/dist/react/useSaleorExternalAuth.d.mts +22 -0
  73. package/dist/react/useSaleorExternalAuth.d.ts +22 -0
  74. package/dist/react/useSaleorExternalAuth.js +227 -0
  75. package/dist/react/useSaleorExternalAuth.mjs +11 -0
  76. package/dist/types.d.mts +82 -0
  77. package/dist/types.d.ts +82 -0
  78. package/dist/types.js +34 -0
  79. package/dist/types.mjs +6 -0
  80. package/dist/utils.d.mts +28 -0
  81. package/dist/utils.d.ts +28 -0
  82. package/dist/utils.js +77 -0
  83. package/dist/utils.mjs +15 -0
  84. 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,8 @@
1
+ interface UseAuthChangeProps {
2
+ saleorApiUrl: string;
3
+ onSignedIn?: () => void;
4
+ onSignedOut?: () => void;
5
+ }
6
+ declare const useAuthChange: ({ saleorApiUrl, onSignedOut, onSignedIn }: UseAuthChangeProps) => void;
7
+
8
+ export { useAuthChange };
@@ -0,0 +1,8 @@
1
+ interface UseAuthChangeProps {
2
+ saleorApiUrl: string;
3
+ onSignedIn?: () => void;
4
+ onSignedOut?: () => void;
5
+ }
6
+ declare const useAuthChange: ({ saleorApiUrl, onSignedOut, onSignedIn }: UseAuthChangeProps) => void;
7
+
8
+ export { useAuthChange };
@@ -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,7 @@
1
+ import {
2
+ useAuthChange
3
+ } from "../chunk-WJVMUY3P.mjs";
4
+ import "../chunk-263DHBMK.mjs";
5
+ export {
6
+ useAuthChange
7
+ };
@@ -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
+ };