@supabase/auth-js 2.61.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 (129) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +50 -0
  3. package/dist/main/AuthAdminApi.d.ts +4 -0
  4. package/dist/main/AuthAdminApi.d.ts.map +1 -0
  5. package/dist/main/AuthAdminApi.js +9 -0
  6. package/dist/main/AuthAdminApi.js.map +1 -0
  7. package/dist/main/AuthClient.d.ts +4 -0
  8. package/dist/main/AuthClient.d.ts.map +1 -0
  9. package/dist/main/AuthClient.js +9 -0
  10. package/dist/main/AuthClient.js.map +1 -0
  11. package/dist/main/GoTrueAdminApi.d.ts +99 -0
  12. package/dist/main/GoTrueAdminApi.d.ts.map +1 -0
  13. package/dist/main/GoTrueAdminApi.js +268 -0
  14. package/dist/main/GoTrueAdminApi.js.map +1 -0
  15. package/dist/main/GoTrueClient.d.ts +432 -0
  16. package/dist/main/GoTrueClient.d.ts.map +1 -0
  17. package/dist/main/GoTrueClient.js +1889 -0
  18. package/dist/main/GoTrueClient.js.map +1 -0
  19. package/dist/main/index.d.ts +9 -0
  20. package/dist/main/index.d.ts.map +1 -0
  21. package/dist/main/index.js +35 -0
  22. package/dist/main/index.js.map +1 -0
  23. package/dist/main/lib/constants.d.ts +12 -0
  24. package/dist/main/lib/constants.d.ts.map +1 -0
  25. package/dist/main/lib/constants.js +14 -0
  26. package/dist/main/lib/constants.js.map +1 -0
  27. package/dist/main/lib/errors.d.ts +96 -0
  28. package/dist/main/lib/errors.d.ts.map +1 -0
  29. package/dist/main/lib/errors.js +135 -0
  30. package/dist/main/lib/errors.js.map +1 -0
  31. package/dist/main/lib/fetch.d.ts +33 -0
  32. package/dist/main/lib/fetch.d.ts.map +1 -0
  33. package/dist/main/lib/fetch.js +162 -0
  34. package/dist/main/lib/fetch.js.map +1 -0
  35. package/dist/main/lib/helpers.d.ts +48 -0
  36. package/dist/main/lib/helpers.d.ts.map +1 -0
  37. package/dist/main/lib/helpers.js +292 -0
  38. package/dist/main/lib/helpers.js.map +1 -0
  39. package/dist/main/lib/local-storage.d.ts +13 -0
  40. package/dist/main/lib/local-storage.d.ts.map +1 -0
  41. package/dist/main/lib/local-storage.js +46 -0
  42. package/dist/main/lib/local-storage.js.map +1 -0
  43. package/dist/main/lib/locks.d.ts +44 -0
  44. package/dist/main/lib/locks.d.ts.map +1 -0
  45. package/dist/main/lib/locks.js +118 -0
  46. package/dist/main/lib/locks.js.map +1 -0
  47. package/dist/main/lib/polyfills.d.ts +5 -0
  48. package/dist/main/lib/polyfills.d.ts.map +1 -0
  49. package/dist/main/lib/polyfills.js +30 -0
  50. package/dist/main/lib/polyfills.js.map +1 -0
  51. package/dist/main/lib/types.d.ts +948 -0
  52. package/dist/main/lib/types.d.ts.map +1 -0
  53. package/dist/main/lib/types.js +3 -0
  54. package/dist/main/lib/types.js.map +1 -0
  55. package/dist/main/lib/version.d.ts +2 -0
  56. package/dist/main/lib/version.d.ts.map +1 -0
  57. package/dist/main/lib/version.js +6 -0
  58. package/dist/main/lib/version.js.map +1 -0
  59. package/dist/module/AuthAdminApi.d.ts +4 -0
  60. package/dist/module/AuthAdminApi.d.ts.map +1 -0
  61. package/dist/module/AuthAdminApi.js +4 -0
  62. package/dist/module/AuthAdminApi.js.map +1 -0
  63. package/dist/module/AuthClient.d.ts +4 -0
  64. package/dist/module/AuthClient.d.ts.map +1 -0
  65. package/dist/module/AuthClient.js +4 -0
  66. package/dist/module/AuthClient.js.map +1 -0
  67. package/dist/module/GoTrueAdminApi.d.ts +99 -0
  68. package/dist/module/GoTrueAdminApi.d.ts.map +1 -0
  69. package/dist/module/GoTrueAdminApi.js +265 -0
  70. package/dist/module/GoTrueAdminApi.js.map +1 -0
  71. package/dist/module/GoTrueClient.d.ts +432 -0
  72. package/dist/module/GoTrueClient.d.ts.map +1 -0
  73. package/dist/module/GoTrueClient.js +1883 -0
  74. package/dist/module/GoTrueClient.js.map +1 -0
  75. package/dist/module/index.d.ts +9 -0
  76. package/dist/module/index.d.ts.map +1 -0
  77. package/dist/module/index.js +9 -0
  78. package/dist/module/index.js.map +1 -0
  79. package/dist/module/lib/constants.d.ts +12 -0
  80. package/dist/module/lib/constants.d.ts.map +1 -0
  81. package/dist/module/lib/constants.js +11 -0
  82. package/dist/module/lib/constants.js.map +1 -0
  83. package/dist/module/lib/errors.d.ts +96 -0
  84. package/dist/module/lib/errors.d.ts.map +1 -0
  85. package/dist/module/lib/errors.js +117 -0
  86. package/dist/module/lib/errors.js.map +1 -0
  87. package/dist/module/lib/fetch.d.ts +33 -0
  88. package/dist/module/lib/fetch.d.ts.map +1 -0
  89. package/dist/module/lib/fetch.js +152 -0
  90. package/dist/module/lib/fetch.js.map +1 -0
  91. package/dist/module/lib/helpers.d.ts +48 -0
  92. package/dist/module/lib/helpers.d.ts.map +1 -0
  93. package/dist/module/lib/helpers.js +249 -0
  94. package/dist/module/lib/helpers.js.map +1 -0
  95. package/dist/module/lib/local-storage.d.ts +13 -0
  96. package/dist/module/lib/local-storage.d.ts.map +1 -0
  97. package/dist/module/lib/local-storage.js +42 -0
  98. package/dist/module/lib/local-storage.js.map +1 -0
  99. package/dist/module/lib/locks.d.ts +44 -0
  100. package/dist/module/lib/locks.d.ts.map +1 -0
  101. package/dist/module/lib/locks.js +112 -0
  102. package/dist/module/lib/locks.js.map +1 -0
  103. package/dist/module/lib/polyfills.d.ts +5 -0
  104. package/dist/module/lib/polyfills.d.ts.map +1 -0
  105. package/dist/module/lib/polyfills.js +26 -0
  106. package/dist/module/lib/polyfills.js.map +1 -0
  107. package/dist/module/lib/types.d.ts +948 -0
  108. package/dist/module/lib/types.d.ts.map +1 -0
  109. package/dist/module/lib/types.js +2 -0
  110. package/dist/module/lib/types.js.map +1 -0
  111. package/dist/module/lib/version.d.ts +2 -0
  112. package/dist/module/lib/version.d.ts.map +1 -0
  113. package/dist/module/lib/version.js +3 -0
  114. package/dist/module/lib/version.js.map +1 -0
  115. package/package.json +69 -0
  116. package/src/AuthAdminApi.ts +5 -0
  117. package/src/AuthClient.ts +5 -0
  118. package/src/GoTrueAdminApi.ts +333 -0
  119. package/src/GoTrueClient.ts +2470 -0
  120. package/src/index.ts +12 -0
  121. package/src/lib/constants.ts +10 -0
  122. package/src/lib/errors.ts +150 -0
  123. package/src/lib/fetch.ts +238 -0
  124. package/src/lib/helpers.ts +306 -0
  125. package/src/lib/local-storage.ts +49 -0
  126. package/src/lib/locks.ts +140 -0
  127. package/src/lib/polyfills.ts +23 -0
  128. package/src/lib/types.ts +1120 -0
  129. package/src/lib/version.ts +2 -0
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports._noResolveJsonResponse = exports._generateLinkResponse = exports._ssoResponse = exports._userResponse = exports._sessionResponsePassword = exports._sessionResponse = exports._request = void 0;
15
+ const helpers_1 = require("./helpers");
16
+ const errors_1 = require("./errors");
17
+ const _getErrorMessage = (err) => err.msg || err.message || err.error_description || err.error || JSON.stringify(err);
18
+ const NETWORK_ERROR_CODES = [502, 503, 504];
19
+ async function handleError(error) {
20
+ if (!(0, helpers_1.looksLikeFetchResponse)(error)) {
21
+ throw new errors_1.AuthRetryableFetchError(_getErrorMessage(error), 0);
22
+ }
23
+ if (NETWORK_ERROR_CODES.includes(error.status)) {
24
+ // status in 500...599 range - server had an error, request might be retryed.
25
+ throw new errors_1.AuthRetryableFetchError(_getErrorMessage(error), error.status);
26
+ }
27
+ let data;
28
+ try {
29
+ data = await error.json();
30
+ }
31
+ catch (e) {
32
+ throw new errors_1.AuthUnknownError(_getErrorMessage(e), e);
33
+ }
34
+ if (typeof data === 'object' &&
35
+ data &&
36
+ typeof data.weak_password === 'object' &&
37
+ data.weak_password &&
38
+ Array.isArray(data.weak_password.reasons) &&
39
+ data.weak_password.reasons.length &&
40
+ data.weak_password.reasons.reduce((a, i) => a && typeof i === 'string', true)) {
41
+ throw new errors_1.AuthWeakPasswordError(_getErrorMessage(data), error.status, data.weak_password.reasons);
42
+ }
43
+ throw new errors_1.AuthApiError(_getErrorMessage(data), error.status || 500);
44
+ }
45
+ const _getRequestParams = (method, options, parameters, body) => {
46
+ const params = { method, headers: (options === null || options === void 0 ? void 0 : options.headers) || {} };
47
+ if (method === 'GET') {
48
+ return params;
49
+ }
50
+ params.headers = Object.assign({ 'Content-Type': 'application/json;charset=UTF-8' }, options === null || options === void 0 ? void 0 : options.headers);
51
+ params.body = JSON.stringify(body);
52
+ return Object.assign(Object.assign({}, params), parameters);
53
+ };
54
+ async function _request(fetcher, method, url, options) {
55
+ var _a;
56
+ const headers = Object.assign({}, options === null || options === void 0 ? void 0 : options.headers);
57
+ if (options === null || options === void 0 ? void 0 : options.jwt) {
58
+ headers['Authorization'] = `Bearer ${options.jwt}`;
59
+ }
60
+ const qs = (_a = options === null || options === void 0 ? void 0 : options.query) !== null && _a !== void 0 ? _a : {};
61
+ if (options === null || options === void 0 ? void 0 : options.redirectTo) {
62
+ qs['redirect_to'] = options.redirectTo;
63
+ }
64
+ const queryString = Object.keys(qs).length ? '?' + new URLSearchParams(qs).toString() : '';
65
+ const data = await _handleRequest(fetcher, method, url + queryString, { headers, noResolveJson: options === null || options === void 0 ? void 0 : options.noResolveJson }, {}, options === null || options === void 0 ? void 0 : options.body);
66
+ return (options === null || options === void 0 ? void 0 : options.xform) ? options === null || options === void 0 ? void 0 : options.xform(data) : { data: Object.assign({}, data), error: null };
67
+ }
68
+ exports._request = _request;
69
+ async function _handleRequest(fetcher, method, url, options, parameters, body) {
70
+ const requestParams = _getRequestParams(method, options, parameters, body);
71
+ let result;
72
+ try {
73
+ result = await fetcher(url, requestParams);
74
+ }
75
+ catch (e) {
76
+ console.error(e);
77
+ // fetch failed, likely due to a network or CORS error
78
+ throw new errors_1.AuthRetryableFetchError(_getErrorMessage(e), 0);
79
+ }
80
+ if (!result.ok) {
81
+ await handleError(result);
82
+ }
83
+ if (options === null || options === void 0 ? void 0 : options.noResolveJson) {
84
+ return result;
85
+ }
86
+ try {
87
+ return await result.json();
88
+ }
89
+ catch (e) {
90
+ await handleError(e);
91
+ }
92
+ }
93
+ function _sessionResponse(data) {
94
+ var _a;
95
+ let session = null;
96
+ if (hasSession(data)) {
97
+ session = Object.assign({}, data);
98
+ if (!data.expires_at) {
99
+ session.expires_at = (0, helpers_1.expiresAt)(data.expires_in);
100
+ }
101
+ }
102
+ const user = (_a = data.user) !== null && _a !== void 0 ? _a : data;
103
+ return { data: { session, user }, error: null };
104
+ }
105
+ exports._sessionResponse = _sessionResponse;
106
+ function _sessionResponsePassword(data) {
107
+ const response = _sessionResponse(data);
108
+ if (!response.error &&
109
+ data.weak_password &&
110
+ typeof data.weak_password === 'object' &&
111
+ Array.isArray(data.weak_password.reasons) &&
112
+ data.weak_password.reasons.length &&
113
+ data.weak_password.message &&
114
+ typeof data.weak_password.message === 'string' &&
115
+ data.weak_password.reasons.reduce((a, i) => a && typeof i === 'string', true)) {
116
+ response.data.weak_password = data.weak_password;
117
+ }
118
+ return response;
119
+ }
120
+ exports._sessionResponsePassword = _sessionResponsePassword;
121
+ function _userResponse(data) {
122
+ var _a;
123
+ const user = (_a = data.user) !== null && _a !== void 0 ? _a : data;
124
+ return { data: { user }, error: null };
125
+ }
126
+ exports._userResponse = _userResponse;
127
+ function _ssoResponse(data) {
128
+ return { data, error: null };
129
+ }
130
+ exports._ssoResponse = _ssoResponse;
131
+ function _generateLinkResponse(data) {
132
+ const { action_link, email_otp, hashed_token, redirect_to, verification_type } = data, rest = __rest(data, ["action_link", "email_otp", "hashed_token", "redirect_to", "verification_type"]);
133
+ const properties = {
134
+ action_link,
135
+ email_otp,
136
+ hashed_token,
137
+ redirect_to,
138
+ verification_type,
139
+ };
140
+ const user = Object.assign({}, rest);
141
+ return {
142
+ data: {
143
+ properties,
144
+ user,
145
+ },
146
+ error: null,
147
+ };
148
+ }
149
+ exports._generateLinkResponse = _generateLinkResponse;
150
+ function _noResolveJsonResponse(data) {
151
+ return data;
152
+ }
153
+ exports._noResolveJsonResponse = _noResolveJsonResponse;
154
+ /**
155
+ * hasSession checks if the response object contains a valid session
156
+ * @param data A response object
157
+ * @returns true if a session is in the response
158
+ */
159
+ function hasSession(data) {
160
+ return data.access_token && data.refresh_token && data.expires_in;
161
+ }
162
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/lib/fetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { SupportedStorage } from './types';
2
+ export declare function expiresAt(expiresIn: number): number;
3
+ export declare function uuid(): string;
4
+ export declare const isBrowser: () => boolean;
5
+ /**
6
+ * Checks whether localStorage is supported on this browser.
7
+ */
8
+ export declare const supportsLocalStorage: () => boolean;
9
+ /**
10
+ * Extracts parameters encoded in the URL both in the query and fragment.
11
+ */
12
+ export declare function parseParametersFromURL(href: string): {
13
+ [parameter: string]: string;
14
+ };
15
+ declare type Fetch = typeof fetch;
16
+ export declare const resolveFetch: (customFetch?: Fetch) => Fetch;
17
+ export declare const looksLikeFetchResponse: (maybeResponse: unknown) => maybeResponse is Response;
18
+ export declare const setItemAsync: (storage: SupportedStorage, key: string, data: any) => Promise<void>;
19
+ export declare const getItemAsync: (storage: SupportedStorage, key: string) => Promise<unknown>;
20
+ export declare const removeItemAsync: (storage: SupportedStorage, key: string) => Promise<void>;
21
+ export declare function decodeBase64URL(value: string): string;
22
+ /**
23
+ * A deferred represents some asynchronous work that is not yet finished, which
24
+ * may or may not culminate in a value.
25
+ * Taken from: https://github.com/mike-north/types/blob/master/src/async.ts
26
+ */
27
+ export declare class Deferred<T = any> {
28
+ static promiseConstructor: PromiseConstructor;
29
+ readonly promise: PromiseLike<T>;
30
+ readonly resolve: (value?: T | PromiseLike<T>) => void;
31
+ readonly reject: (reason?: any) => any;
32
+ constructor();
33
+ }
34
+ export declare function decodeJWTPayload(token: string): any;
35
+ /**
36
+ * Creates a promise that resolves to null after some time.
37
+ */
38
+ export declare function sleep(time: number): Promise<null>;
39
+ /**
40
+ * Converts the provided async function into a retryable function. Each result
41
+ * or thrown error is sent to the isRetryable function which should return true
42
+ * if the function should run again.
43
+ */
44
+ export declare function retryable<T>(fn: (attempt: number) => Promise<T>, isRetryable: (attempt: number, error: any | null, result?: T) => boolean): Promise<T>;
45
+ export declare function generatePKCEVerifier(): string;
46
+ export declare function generatePKCEChallenge(verifier: string): Promise<string>;
47
+ export {};
48
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/lib/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1C,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,UAG1C;AAED,wBAAgB,IAAI,WAMnB;AAED,eAAO,MAAM,SAAS,eAAwC,CAAA;AAO9D;;GAEG;AACH,eAAO,MAAM,oBAAoB,eAmChC,CAAA;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM;;EAsBlD;AAED,aAAK,KAAK,GAAG,OAAO,KAAK,CAAA;AAEzB,eAAO,MAAM,YAAY,iBAAkB,KAAK,KAAG,KAWlD,CAAA;AAED,eAAO,MAAM,sBAAsB,kBAAmB,OAAO,8BAS5D,CAAA;AAGD,eAAO,MAAM,YAAY,YACd,gBAAgB,OACpB,MAAM,QACL,GAAG,KACR,QAAQ,IAAI,CAEd,CAAA;AAED,eAAO,MAAM,YAAY,YAAmB,gBAAgB,OAAO,MAAM,KAAG,QAAQ,OAAO,CAY1F,CAAA;AAED,eAAO,MAAM,eAAe,YAAmB,gBAAgB,OAAO,MAAM,KAAG,QAAQ,IAAI,CAE1F,CAAA;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA0BrD;AAED;;;;GAIG;AACH,qBAAa,QAAQ,CAAC,CAAC,GAAG,GAAG;IAC3B,OAAc,kBAAkB,EAAE,kBAAkB,CAAU;IAE9D,SAAgB,OAAO,EAAG,WAAW,CAAC,CAAC,CAAC,CAAA;IAExC,SAAgB,OAAO,EAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAE9D,SAAgB,MAAM,EAAG,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,GAAG,CAAA;;CAW/C;AAGD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,OAgB7C;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EACzB,EAAE,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EACnC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,OAAO,GACvE,OAAO,CAAC,CAAC,CAAC,CAuBZ;AAOD,wBAAgB,oBAAoB,WAcnC;AAiBD,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,mBAc3D"}
@@ -0,0 +1,292 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.generatePKCEChallenge = exports.generatePKCEVerifier = exports.retryable = exports.sleep = exports.decodeJWTPayload = exports.Deferred = exports.decodeBase64URL = exports.removeItemAsync = exports.getItemAsync = exports.setItemAsync = exports.looksLikeFetchResponse = exports.resolveFetch = exports.parseParametersFromURL = exports.supportsLocalStorage = exports.isBrowser = exports.uuid = exports.expiresAt = void 0;
27
+ function expiresAt(expiresIn) {
28
+ const timeNow = Math.round(Date.now() / 1000);
29
+ return timeNow + expiresIn;
30
+ }
31
+ exports.expiresAt = expiresAt;
32
+ function uuid() {
33
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
34
+ const r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;
35
+ return v.toString(16);
36
+ });
37
+ }
38
+ exports.uuid = uuid;
39
+ const isBrowser = () => typeof document !== 'undefined';
40
+ exports.isBrowser = isBrowser;
41
+ const localStorageWriteTests = {
42
+ tested: false,
43
+ writable: false,
44
+ };
45
+ /**
46
+ * Checks whether localStorage is supported on this browser.
47
+ */
48
+ const supportsLocalStorage = () => {
49
+ if (!(0, exports.isBrowser)()) {
50
+ return false;
51
+ }
52
+ try {
53
+ if (typeof globalThis.localStorage !== 'object') {
54
+ return false;
55
+ }
56
+ }
57
+ catch (e) {
58
+ // DOM exception when accessing `localStorage`
59
+ return false;
60
+ }
61
+ if (localStorageWriteTests.tested) {
62
+ return localStorageWriteTests.writable;
63
+ }
64
+ const randomKey = `lswt-${Math.random()}${Math.random()}`;
65
+ try {
66
+ globalThis.localStorage.setItem(randomKey, randomKey);
67
+ globalThis.localStorage.removeItem(randomKey);
68
+ localStorageWriteTests.tested = true;
69
+ localStorageWriteTests.writable = true;
70
+ }
71
+ catch (e) {
72
+ // localStorage can't be written to
73
+ // https://www.chromium.org/for-testers/bug-reporting-guidelines/uncaught-securityerror-failed-to-read-the-localstorage-property-from-window-access-is-denied-for-this-document
74
+ localStorageWriteTests.tested = true;
75
+ localStorageWriteTests.writable = false;
76
+ }
77
+ return localStorageWriteTests.writable;
78
+ };
79
+ exports.supportsLocalStorage = supportsLocalStorage;
80
+ /**
81
+ * Extracts parameters encoded in the URL both in the query and fragment.
82
+ */
83
+ function parseParametersFromURL(href) {
84
+ const result = {};
85
+ const url = new URL(href);
86
+ if (url.hash && url.hash[0] === '#') {
87
+ try {
88
+ const hashSearchParams = new URLSearchParams(url.hash.substring(1));
89
+ hashSearchParams.forEach((value, key) => {
90
+ result[key] = value;
91
+ });
92
+ }
93
+ catch (e) {
94
+ // hash is not a query string
95
+ }
96
+ }
97
+ // search parameters take precedence over hash parameters
98
+ url.searchParams.forEach((value, key) => {
99
+ result[key] = value;
100
+ });
101
+ return result;
102
+ }
103
+ exports.parseParametersFromURL = parseParametersFromURL;
104
+ const resolveFetch = (customFetch) => {
105
+ let _fetch;
106
+ if (customFetch) {
107
+ _fetch = customFetch;
108
+ }
109
+ else if (typeof fetch === 'undefined') {
110
+ _fetch = (...args) => Promise.resolve().then(() => __importStar(require('@supabase/node-fetch'))).then(({ default: fetch }) => fetch(...args));
111
+ }
112
+ else {
113
+ _fetch = fetch;
114
+ }
115
+ return (...args) => _fetch(...args);
116
+ };
117
+ exports.resolveFetch = resolveFetch;
118
+ const looksLikeFetchResponse = (maybeResponse) => {
119
+ return (typeof maybeResponse === 'object' &&
120
+ maybeResponse !== null &&
121
+ 'status' in maybeResponse &&
122
+ 'ok' in maybeResponse &&
123
+ 'json' in maybeResponse &&
124
+ typeof maybeResponse.json === 'function');
125
+ };
126
+ exports.looksLikeFetchResponse = looksLikeFetchResponse;
127
+ // Storage helpers
128
+ const setItemAsync = async (storage, key, data) => {
129
+ await storage.setItem(key, JSON.stringify(data));
130
+ };
131
+ exports.setItemAsync = setItemAsync;
132
+ const getItemAsync = async (storage, key) => {
133
+ const value = await storage.getItem(key);
134
+ if (!value) {
135
+ return null;
136
+ }
137
+ try {
138
+ return JSON.parse(value);
139
+ }
140
+ catch (_a) {
141
+ return value;
142
+ }
143
+ };
144
+ exports.getItemAsync = getItemAsync;
145
+ const removeItemAsync = async (storage, key) => {
146
+ await storage.removeItem(key);
147
+ };
148
+ exports.removeItemAsync = removeItemAsync;
149
+ function decodeBase64URL(value) {
150
+ const key = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
151
+ let base64 = '';
152
+ let chr1, chr2, chr3;
153
+ let enc1, enc2, enc3, enc4;
154
+ let i = 0;
155
+ value = value.replace('-', '+').replace('_', '/');
156
+ while (i < value.length) {
157
+ enc1 = key.indexOf(value.charAt(i++));
158
+ enc2 = key.indexOf(value.charAt(i++));
159
+ enc3 = key.indexOf(value.charAt(i++));
160
+ enc4 = key.indexOf(value.charAt(i++));
161
+ chr1 = (enc1 << 2) | (enc2 >> 4);
162
+ chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
163
+ chr3 = ((enc3 & 3) << 6) | enc4;
164
+ base64 = base64 + String.fromCharCode(chr1);
165
+ if (enc3 != 64 && chr2 != 0) {
166
+ base64 = base64 + String.fromCharCode(chr2);
167
+ }
168
+ if (enc4 != 64 && chr3 != 0) {
169
+ base64 = base64 + String.fromCharCode(chr3);
170
+ }
171
+ }
172
+ return base64;
173
+ }
174
+ exports.decodeBase64URL = decodeBase64URL;
175
+ /**
176
+ * A deferred represents some asynchronous work that is not yet finished, which
177
+ * may or may not culminate in a value.
178
+ * Taken from: https://github.com/mike-north/types/blob/master/src/async.ts
179
+ */
180
+ class Deferred {
181
+ constructor() {
182
+ // eslint-disable-next-line @typescript-eslint/no-extra-semi
183
+ ;
184
+ this.promise = new Deferred.promiseConstructor((res, rej) => {
185
+ // eslint-disable-next-line @typescript-eslint/no-extra-semi
186
+ ;
187
+ this.resolve = res;
188
+ this.reject = rej;
189
+ });
190
+ }
191
+ }
192
+ exports.Deferred = Deferred;
193
+ Deferred.promiseConstructor = Promise;
194
+ // Taken from: https://stackoverflow.com/questions/38552003/how-to-decode-jwt-token-in-javascript-without-using-a-library
195
+ function decodeJWTPayload(token) {
196
+ // Regex checks for base64url format
197
+ const base64UrlRegex = /^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}=?$|[a-z0-9_-]{2}(==)?$)$/i;
198
+ const parts = token.split('.');
199
+ if (parts.length !== 3) {
200
+ throw new Error('JWT is not valid: not a JWT structure');
201
+ }
202
+ if (!base64UrlRegex.test(parts[1])) {
203
+ throw new Error('JWT is not valid: payload is not in base64url format');
204
+ }
205
+ const base64Url = parts[1];
206
+ return JSON.parse(decodeBase64URL(base64Url));
207
+ }
208
+ exports.decodeJWTPayload = decodeJWTPayload;
209
+ /**
210
+ * Creates a promise that resolves to null after some time.
211
+ */
212
+ async function sleep(time) {
213
+ return await new Promise((accept) => {
214
+ setTimeout(() => accept(null), time);
215
+ });
216
+ }
217
+ exports.sleep = sleep;
218
+ /**
219
+ * Converts the provided async function into a retryable function. Each result
220
+ * or thrown error is sent to the isRetryable function which should return true
221
+ * if the function should run again.
222
+ */
223
+ function retryable(fn, isRetryable) {
224
+ const promise = new Promise((accept, reject) => {
225
+ // eslint-disable-next-line @typescript-eslint/no-extra-semi
226
+ ;
227
+ (async () => {
228
+ for (let attempt = 0; attempt < Infinity; attempt++) {
229
+ try {
230
+ const result = await fn(attempt);
231
+ if (!isRetryable(attempt, null, result)) {
232
+ accept(result);
233
+ return;
234
+ }
235
+ }
236
+ catch (e) {
237
+ if (!isRetryable(attempt, e)) {
238
+ reject(e);
239
+ return;
240
+ }
241
+ }
242
+ }
243
+ })();
244
+ });
245
+ return promise;
246
+ }
247
+ exports.retryable = retryable;
248
+ function dec2hex(dec) {
249
+ return ('0' + dec.toString(16)).substr(-2);
250
+ }
251
+ // Functions below taken from: https://stackoverflow.com/questions/63309409/creating-a-code-verifier-and-challenge-for-pkce-auth-on-spotify-api-in-reactjs
252
+ function generatePKCEVerifier() {
253
+ const verifierLength = 56;
254
+ const array = new Uint32Array(verifierLength);
255
+ if (typeof crypto === 'undefined') {
256
+ const charSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';
257
+ const charSetLen = charSet.length;
258
+ let verifier = '';
259
+ for (let i = 0; i < verifierLength; i++) {
260
+ verifier += charSet.charAt(Math.floor(Math.random() * charSetLen));
261
+ }
262
+ return verifier;
263
+ }
264
+ crypto.getRandomValues(array);
265
+ return Array.from(array, dec2hex).join('');
266
+ }
267
+ exports.generatePKCEVerifier = generatePKCEVerifier;
268
+ async function sha256(randomString) {
269
+ const encoder = new TextEncoder();
270
+ const encodedData = encoder.encode(randomString);
271
+ const hash = await crypto.subtle.digest('SHA-256', encodedData);
272
+ const bytes = new Uint8Array(hash);
273
+ return Array.from(bytes)
274
+ .map((c) => String.fromCharCode(c))
275
+ .join('');
276
+ }
277
+ function base64urlencode(str) {
278
+ return btoa(str).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
279
+ }
280
+ async function generatePKCEChallenge(verifier) {
281
+ const hasCryptoSupport = typeof crypto !== 'undefined' &&
282
+ typeof crypto.subtle !== 'undefined' &&
283
+ typeof TextEncoder !== 'undefined';
284
+ if (!hasCryptoSupport) {
285
+ console.warn('WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256.');
286
+ return verifier;
287
+ }
288
+ const hashed = await sha256(verifier);
289
+ return base64urlencode(hashed);
290
+ }
291
+ exports.generatePKCEChallenge = generatePKCEChallenge;
292
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/lib/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { SupportedStorage } from './types';
2
+ /**
3
+ * Provides safe access to the globalThis.localStorage property.
4
+ */
5
+ export declare const localStorageAdapter: SupportedStorage;
6
+ /**
7
+ * Returns a localStorage-like object that stores the key-value pairs in
8
+ * memory.
9
+ */
10
+ export declare function memoryLocalStorageAdapter(store?: {
11
+ [key: string]: string;
12
+ }): SupportedStorage;
13
+ //# sourceMappingURL=local-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-storage.d.ts","sourceRoot":"","sources":["../../../src/lib/local-storage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE1C;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBAsBjC,CAAA;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,GAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAO,GAAG,gBAAgB,CAcjG"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.memoryLocalStorageAdapter = exports.localStorageAdapter = void 0;
4
+ const helpers_1 = require("./helpers");
5
+ /**
6
+ * Provides safe access to the globalThis.localStorage property.
7
+ */
8
+ exports.localStorageAdapter = {
9
+ getItem: (key) => {
10
+ if (!(0, helpers_1.supportsLocalStorage)()) {
11
+ return null;
12
+ }
13
+ return globalThis.localStorage.getItem(key);
14
+ },
15
+ setItem: (key, value) => {
16
+ if (!(0, helpers_1.supportsLocalStorage)()) {
17
+ return;
18
+ }
19
+ globalThis.localStorage.setItem(key, value);
20
+ },
21
+ removeItem: (key) => {
22
+ if (!(0, helpers_1.supportsLocalStorage)()) {
23
+ return;
24
+ }
25
+ globalThis.localStorage.removeItem(key);
26
+ },
27
+ };
28
+ /**
29
+ * Returns a localStorage-like object that stores the key-value pairs in
30
+ * memory.
31
+ */
32
+ function memoryLocalStorageAdapter(store = {}) {
33
+ return {
34
+ getItem: (key) => {
35
+ return store[key] || null;
36
+ },
37
+ setItem: (key, value) => {
38
+ store[key] = value;
39
+ },
40
+ removeItem: (key) => {
41
+ delete store[key];
42
+ },
43
+ };
44
+ }
45
+ exports.memoryLocalStorageAdapter = memoryLocalStorageAdapter;
46
+ //# sourceMappingURL=local-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-storage.js","sourceRoot":"","sources":["../../../src/lib/local-storage.ts"],"names":[],"mappings":";;;AAAA,uCAAgD;AAGhD;;GAEG;AACU,QAAA,mBAAmB,GAAqB;IACnD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACf,IAAI,CAAC,IAAA,8BAAoB,GAAE,EAAE;YAC3B,OAAO,IAAI,CAAA;SACZ;QAED,OAAO,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAC7C,CAAC;IACD,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACtB,IAAI,CAAC,IAAA,8BAAoB,GAAE,EAAE;YAC3B,OAAM;SACP;QAED,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IAC7C,CAAC;IACD,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;QAClB,IAAI,CAAC,IAAA,8BAAoB,GAAE,EAAE;YAC3B,OAAM;SACP;QAED,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;IACzC,CAAC;CACF,CAAA;AAED;;;GAGG;AACH,SAAgB,yBAAyB,CAAC,QAAmC,EAAE;IAC7E,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACf,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;QAC3B,CAAC;QAED,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACtB,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACpB,CAAC;QAED,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;YAClB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC;AAdD,8DAcC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @experimental
3
+ */
4
+ export declare const internals: {
5
+ /**
6
+ * @experimental
7
+ */
8
+ debug: boolean;
9
+ };
10
+ export declare abstract class LockAcquireTimeoutError extends Error {
11
+ readonly isAcquireTimeout = true;
12
+ constructor(message: string);
13
+ }
14
+ export declare class NavigatorLockAcquireTimeoutError extends LockAcquireTimeoutError {
15
+ }
16
+ /**
17
+ * Implements a global exclusive lock using the Navigator LockManager API. It
18
+ * is available on all browsers released after 2022-03-15 with Safari being the
19
+ * last one to release support. If the API is not available, this function will
20
+ * throw. Make sure you check availablility before configuring {@link
21
+ * GoTrueClient}.
22
+ *
23
+ * You can turn on debugging by setting the `supabase.gotrue-js.locks.debug`
24
+ * local storage item to `true`.
25
+ *
26
+ * Internals:
27
+ *
28
+ * Since the LockManager API does not preserve stack traces for the async
29
+ * function passed in the `request` method, a trick is used where acquiring the
30
+ * lock releases a previously started promise to run the operation in the `fn`
31
+ * function. The lock waits for that promise to finish (with or without error),
32
+ * while the function will finally wait for the result anyway.
33
+ *
34
+ * @experimental
35
+ *
36
+ * @param name Name of the lock to be acquired.
37
+ * @param acquireTimeout If negative, no timeout. If 0 an error is thrown if
38
+ * the lock can't be acquired without waiting. If positive, the lock acquire
39
+ * will time out after so many milliseconds. An error is
40
+ * a timeout if it has `isAcquireTimeout` set to true.
41
+ * @param fn The operation to run once the lock is acquired.
42
+ */
43
+ export declare function navigatorLock<R>(name: string, acquireTimeout: number, fn: () => Promise<R>): Promise<R>;
44
+ //# sourceMappingURL=locks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locks.d.ts","sourceRoot":"","sources":["../../../src/lib/locks.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB;;OAEG;;CAOJ,CAAA;AAED,8BAAsB,uBAAwB,SAAQ,KAAK;IACzD,SAAgB,gBAAgB,QAAO;gBAE3B,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,gCAAiC,SAAQ,uBAAuB;CAAG;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAiFZ"}