@krainovsd/js-helpers 0.15.3 → 0.16.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.
Files changed (65) hide show
  1. package/lib/cjs/index.cjs +662 -583
  2. package/lib/cjs/index.cjs.map +1 -1
  3. package/lib/esm/{lib/api/middlewares/console-post-middleware.js → api/after/logger-after-handler.js} +4 -4
  4. package/lib/esm/api/after/logger-after-handler.js.map +1 -0
  5. package/lib/esm/api/api.constants.js +23 -0
  6. package/lib/esm/api/api.constants.js.map +1 -0
  7. package/lib/esm/api/api.js +343 -0
  8. package/lib/esm/api/api.js.map +1 -0
  9. package/lib/esm/{lib/api/middlewares/console-middleware.js → api/before/logger-before-handler.js} +4 -4
  10. package/lib/esm/api/before/logger-before-handler.js.map +1 -0
  11. package/lib/esm/api/before/oauth-before-handler.js +56 -0
  12. package/lib/esm/api/before/oauth-before-handler.js.map +1 -0
  13. package/lib/esm/{lib/api/oauth/token.js → api/oauth.js} +30 -10
  14. package/lib/esm/api/oauth.js.map +1 -0
  15. package/lib/esm/constants/errors.js +16 -0
  16. package/lib/esm/constants/errors.js.map +1 -0
  17. package/lib/esm/constants/index.js +27 -0
  18. package/lib/esm/constants/index.js.map +1 -0
  19. package/lib/esm/index.js +9 -8
  20. package/lib/esm/index.js.map +1 -1
  21. package/lib/esm/lib/colors/get-color-format.js +1 -2
  22. package/lib/esm/lib/colors/get-color-format.js.map +1 -1
  23. package/lib/esm/lib/colors/take-opacity-colors.js +1 -2
  24. package/lib/esm/lib/colors/take-opacity-colors.js.map +1 -1
  25. package/lib/esm/lib/colors/transform-to-color.js +1 -2
  26. package/lib/esm/lib/colors/transform-to-color.js.map +1 -1
  27. package/lib/esm/lib/date/get-date-by-rules.js +1 -2
  28. package/lib/esm/lib/date/get-date-by-rules.js.map +1 -1
  29. package/lib/esm/lib/date/is-yesterday.js +0 -1
  30. package/lib/esm/lib/date/is-yesterday.js.map +1 -1
  31. package/lib/esm/lib/lodash/clone-deep.js +2 -11
  32. package/lib/esm/lib/lodash/clone-deep.js.map +1 -1
  33. package/lib/esm/lib/lodash/debounce.js +1 -2
  34. package/lib/esm/lib/lodash/debounce.js.map +1 -1
  35. package/lib/esm/lib/lodash/throttle.js +1 -1
  36. package/lib/esm/lib/lodash/throttle.js.map +1 -1
  37. package/lib/esm/lib/utils/build-query-string.js.map +1 -1
  38. package/lib/esm/lib/utils/{create-url-with-params.js → create-url-with-queries.js} +3 -3
  39. package/lib/esm/lib/utils/create-url-with-queries.js.map +1 -0
  40. package/lib/esm/lib/utils/field-view-format.js +1 -2
  41. package/lib/esm/lib/utils/field-view-format.js.map +1 -1
  42. package/lib/index.d.ts +229 -175
  43. package/package.json +4 -2
  44. package/lib/esm/constants/api.js +0 -10
  45. package/lib/esm/constants/api.js.map +0 -1
  46. package/lib/esm/constants/colors.js +0 -9
  47. package/lib/esm/constants/colors.js.map +0 -1
  48. package/lib/esm/constants/date.js +0 -11
  49. package/lib/esm/constants/date.js.map +0 -1
  50. package/lib/esm/constants/fields.js +0 -11
  51. package/lib/esm/constants/fields.js.map +0 -1
  52. package/lib/esm/lib/api/constants.js +0 -4
  53. package/lib/esm/lib/api/constants.js.map +0 -1
  54. package/lib/esm/lib/api/core.js +0 -191
  55. package/lib/esm/lib/api/core.js.map +0 -1
  56. package/lib/esm/lib/api/middlewares/console-middleware.js.map +0 -1
  57. package/lib/esm/lib/api/middlewares/console-post-middleware.js.map +0 -1
  58. package/lib/esm/lib/api/middlewares/index.js +0 -65
  59. package/lib/esm/lib/api/middlewares/index.js.map +0 -1
  60. package/lib/esm/lib/api/middlewares/oauth-middleware.js +0 -75
  61. package/lib/esm/lib/api/middlewares/oauth-middleware.js.map +0 -1
  62. package/lib/esm/lib/api/oauth/token.js.map +0 -1
  63. package/lib/esm/lib/api/oauth/user.js +0 -35
  64. package/lib/esm/lib/api/oauth/user.js.map +0 -1
  65. package/lib/esm/lib/utils/create-url-with-params.js.map +0 -1
@@ -1,191 +0,0 @@
1
- import { IS_BROWSER } from '../../constants/environment.js';
2
- import { downloadFile } from '../browser/download-file.js';
3
- import { isString } from '../typings/is-string.js';
4
- import 'dayjs';
5
- import '../date/is-today.js';
6
- import '../date/is-tomorrow.js';
7
- import '../date/is-yesterday.js';
8
- import { wait } from '../utils/wait.js';
9
- import { createURLWithParams } from '../utils/create-url-with-params.js';
10
- import 'lodash/get';
11
- import 'lodash/set';
12
- import { RESPONSE_DATA_SYMBOL } from './constants.js';
13
- import { generateMiddlewares, generatePostMiddlewares } from './middlewares/index.js';
14
- import { refetchAfterOauth } from './middlewares/oauth-middleware.js';
15
-
16
- class ResponseError extends Error {
17
- status;
18
- code;
19
- description;
20
- headers;
21
- constructor({ message, status, description, code, headers }) {
22
- super(message);
23
- this.status = status;
24
- this.description = description;
25
- this.code = code;
26
- this.headers = headers;
27
- }
28
- }
29
- function createRequestClientInstance(options) {
30
- let executeMiddlewares;
31
- let executePostMiddlewares;
32
- function setMiddlewares({ activeMiddlewares = [], middlewareOptions = {}, customMiddlewares = [], activePostMiddlewares = [], postMiddlewaresOptions = {}, customPostMiddlewares = [], oauthOptions = undefined, } = {}) {
33
- executeMiddlewares = generateMiddlewares(activeMiddlewares, middlewareOptions, oauthOptions, customMiddlewares);
34
- executePostMiddlewares = generatePostMiddlewares(activePostMiddlewares, postMiddlewaresOptions, customPostMiddlewares);
35
- }
36
- setMiddlewares(options);
37
- async function handleRequest(request, responseWithStatus) {
38
- if (request.delay) {
39
- await wait(request.delay);
40
- }
41
- if (request.mock) {
42
- const mock = typeof request.mock === "function" ? request.mock() : request.mock;
43
- const transformedResult = request.transformIncomingData
44
- ? request.transformIncomingData(mock)
45
- : mock;
46
- return responseWithStatus
47
- ? { data: transformedResult, status: 200, headers: {} }
48
- : transformedResult;
49
- }
50
- await executeMiddlewares(request);
51
- const { method, body, path, params, headers = {}, refetchNoAuth = true } = request;
52
- const url = createURLWithParams({ baseURL: path, params });
53
- const [, requestContentType] = Object.entries(headers).find(([header]) => header.toLowerCase() === "content-type") ?? [];
54
- let preparedBody = body;
55
- if (request.transformOutcomingData) {
56
- preparedBody = request.transformOutcomingData(body);
57
- }
58
- if (requestContentType == undefined &&
59
- !(preparedBody instanceof FormData) &&
60
- preparedBody != undefined &&
61
- !isString(preparedBody)) {
62
- headers["content-type"] = "application/json; charset=UTF-8";
63
- }
64
- if ((requestContentType == undefined || requestContentType.toLowerCase().includes("json")) &&
65
- preparedBody != undefined &&
66
- !(preparedBody instanceof FormData) &&
67
- !isString(preparedBody)) {
68
- preparedBody = JSON.stringify(preparedBody);
69
- }
70
- const response = await options.client(url, {
71
- method,
72
- body: preparedBody,
73
- headers: headers,
74
- signal: request.signal,
75
- });
76
- await executePostMiddlewares(request, response);
77
- if (!response) {
78
- throw new Error("hasn't response");
79
- }
80
- if (!response.ok) {
81
- if (response.status === 304) {
82
- return responseWithStatus
83
- ? {
84
- data: undefined,
85
- status: response.status,
86
- headers: Object.fromEntries(response.headers.entries()),
87
- }
88
- : undefined;
89
- }
90
- if (response.status === 401 && refetchNoAuth && options.oauthOptions) {
91
- return refetchAfterOauth(options.oauthOptions, () => handleRequest({ ...request, refetchNoAuth: false }, responseWithStatus));
92
- }
93
- if (request.defaultResponse) {
94
- const defaultResponse = typeof request.defaultResponse === "function"
95
- ? request.defaultResponse()
96
- : request.defaultResponse;
97
- const transformedResult = request.transformIncomingData
98
- ? request.transformIncomingData(defaultResponse)
99
- : defaultResponse;
100
- return responseWithStatus
101
- ? {
102
- data: transformedResult,
103
- status: response.status,
104
- headers: Object.fromEntries(response.headers.entries()),
105
- }
106
- : transformedResult;
107
- }
108
- let result;
109
- try {
110
- const contentType = response.headers.get("content-type");
111
- if (contentType?.includes?.("text")) {
112
- result = await response.text();
113
- }
114
- else if (contentType?.includes?.("json")) {
115
- result = await response.json();
116
- }
117
- else {
118
- result = await response.blob();
119
- }
120
- }
121
- catch {
122
- if (RESPONSE_DATA_SYMBOL in response)
123
- result = response[RESPONSE_DATA_SYMBOL];
124
- }
125
- throw new ResponseError({
126
- status: response.status,
127
- message: `HTTP error! Status: ${response.status}`,
128
- description: result,
129
- headers: Object.fromEntries(response.headers.entries()),
130
- });
131
- }
132
- if (request.downloadFile) {
133
- const data = await response.blob();
134
- const mimeType = response.headers.get("content-type");
135
- const fileName = response.headers.get("content-disposition");
136
- if (!mimeType || !fileName)
137
- throw new Error("Download Error! Empty info!");
138
- if (IS_BROWSER)
139
- downloadFile({
140
- data: data,
141
- fileName,
142
- mimeType,
143
- });
144
- return responseWithStatus
145
- ? {
146
- data: data,
147
- status: response.status,
148
- headers: Object.fromEntries(response.headers.entries()),
149
- }
150
- : data;
151
- }
152
- const contentType = response.headers.get("content-type");
153
- let result = undefined;
154
- try {
155
- if (contentType?.includes?.("text")) {
156
- result = (await response.text());
157
- }
158
- else if (contentType?.includes?.("json")) {
159
- result = (await response.json());
160
- }
161
- else {
162
- result = (await response.blob());
163
- }
164
- }
165
- catch { }
166
- const transformedResult = request.transformIncomingData
167
- ? request.transformIncomingData(result)
168
- : result;
169
- return responseWithStatus
170
- ? {
171
- data: transformedResult,
172
- status: response.status,
173
- headers: Object.fromEntries(response.headers.entries()),
174
- }
175
- : transformedResult;
176
- }
177
- async function requestApi(request) {
178
- return handleRequest(request, false);
179
- }
180
- async function requestApiWithMeta(request) {
181
- return handleRequest(request, true);
182
- }
183
- return {
184
- requestApi,
185
- requestApiWithMeta,
186
- setMiddlewares,
187
- };
188
- }
189
-
190
- export { ResponseError, createRequestClientInstance };
191
- //# sourceMappingURL=core.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.js","sources":["../../../../src/lib/api/core.ts"],"sourcesContent":["import type {\n HeadersInit,\n BodyInit as NodeBodyInit,\n RequestInfo as NodeRequestInfo,\n RequestInit as NodeRequestInit,\n Response as NodeResponse,\n} from \"node-fetch\";\nimport { IS_BROWSER } from \"../../constants\";\nimport type {\n ActiveMiddleware,\n ActivePostMiddleware,\n Middleware,\n MiddlewaresOptions,\n OauthOptions,\n PostMiddleware,\n PostMiddlewareOptions,\n RequestInterface,\n} from \"../../types\";\nimport { downloadFile } from \"../browser\";\nimport { isString } from \"../typings\";\nimport { createURLWithParams, wait } from \"../utils\";\nimport { RESPONSE_DATA_SYMBOL } from \"./constants\";\nimport { generateMiddlewares, generatePostMiddlewares } from \"./middlewares\";\nimport { refetchAfterOauth } from \"./middlewares/oauth-middleware\";\n\ntype ResponseErrorOptions = {\n message: string;\n status: number;\n code?: number;\n description?: unknown;\n headers?: Record<string, string>;\n};\n\nexport class ResponseError extends Error {\n status: number;\n\n code?: number;\n\n description?: unknown;\n\n headers?: Record<string, string>;\n\n constructor({ message, status, description, code, headers }: ResponseErrorOptions) {\n super(message);\n this.status = status;\n this.description = description;\n this.code = code;\n this.headers = headers;\n }\n}\n\ntype CreateRequestClientInstance = {\n client:\n | ((url: URL | NodeRequestInfo, init?: NodeRequestInit) => Promise<NodeResponse>)\n | typeof fetch;\n oauthOptions?: OauthOptions;\n activeMiddlewares?: ActiveMiddleware;\n middlewareOptions?: MiddlewaresOptions;\n customMiddlewares?: Middleware[];\n activePostMiddlewares?: ActivePostMiddleware;\n postMiddlewaresOptions?: PostMiddlewareOptions;\n customPostMiddlewares?: PostMiddleware[];\n};\n\nexport type RequestInstance = {\n <IncomingApi, Incoming = IncomingApi, Outcoming = unknown, OutcomingApi = Outcoming>(\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n ): Promise<Incoming>;\n setOptions: (options: CreateRequestClientInstance) => void;\n};\n\nexport function createRequestClientInstance(options: CreateRequestClientInstance) {\n let executeMiddlewares: <\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n ) => Promise<unknown>;\n\n let executePostMiddlewares: <\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n response: Response | NodeResponse | undefined,\n ) => Promise<unknown>;\n\n function setMiddlewares({\n activeMiddlewares = [],\n middlewareOptions = {},\n customMiddlewares = [],\n activePostMiddlewares = [],\n postMiddlewaresOptions = {},\n customPostMiddlewares = [],\n oauthOptions = undefined,\n }: Omit<CreateRequestClientInstance, \"client\"> = {}) {\n executeMiddlewares = generateMiddlewares(\n activeMiddlewares,\n middlewareOptions,\n oauthOptions,\n customMiddlewares,\n );\n\n executePostMiddlewares = generatePostMiddlewares(\n activePostMiddlewares,\n postMiddlewaresOptions,\n customPostMiddlewares,\n );\n }\n\n setMiddlewares(options);\n\n async function handleRequest<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n responseWithStatus?: boolean,\n ): Promise<{ data: Incoming; status: number; headers: Record<string, string> } | Incoming> {\n if (request.delay) {\n await wait(request.delay);\n }\n if (request.mock) {\n const mock: unknown =\n typeof request.mock === \"function\" ? (request.mock as () => Incoming)() : request.mock;\n\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(mock as IncomingApi)\n : (mock as Incoming);\n\n return responseWithStatus\n ? { data: transformedResult, status: 200, headers: {} }\n : transformedResult;\n }\n\n await executeMiddlewares(request);\n\n const { method, body, path, params, headers = {}, refetchNoAuth = true } = request;\n\n const url = createURLWithParams({ baseURL: path, params });\n const [, requestContentType] =\n Object.entries(headers).find(([header]) => header.toLowerCase() === \"content-type\") ?? [];\n\n let preparedBody: OutcomingApi = body as OutcomingApi;\n if (request.transformOutcomingData) {\n preparedBody = request.transformOutcomingData(body as Outcoming);\n }\n\n if (\n requestContentType == undefined &&\n !(preparedBody instanceof FormData) &&\n preparedBody != undefined &&\n !isString(preparedBody)\n ) {\n headers[\"content-type\"] = \"application/json; charset=UTF-8\";\n }\n\n if (\n (requestContentType == undefined || requestContentType.toLowerCase().includes(\"json\")) &&\n preparedBody != undefined &&\n !(preparedBody instanceof FormData) &&\n !isString(preparedBody)\n ) {\n preparedBody = JSON.stringify(preparedBody) as OutcomingApi;\n }\n\n const response: Response | NodeResponse | undefined = await options.client(url, {\n method,\n body: preparedBody as ((BodyInit | null) & NodeBodyInit) | undefined,\n headers: headers as globalThis.HeadersInit & HeadersInit,\n signal: request.signal as (AbortSignal & NodeRequestInit[\"signal\"]) | null | undefined,\n });\n\n await executePostMiddlewares(request, response);\n\n if (!response) {\n throw new Error(\"hasn't response\");\n }\n\n if (!response.ok) {\n if (response.status === 304) {\n return responseWithStatus\n ? {\n data: undefined as Incoming,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : (undefined as Incoming);\n }\n if (response.status === 401 && refetchNoAuth && options.oauthOptions) {\n return refetchAfterOauth(options.oauthOptions, () =>\n handleRequest({ ...request, refetchNoAuth: false }, responseWithStatus),\n );\n }\n\n if (request.defaultResponse) {\n const defaultResponse: unknown =\n typeof request.defaultResponse === \"function\"\n ? (request.defaultResponse as () => Incoming)()\n : request.defaultResponse;\n\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(defaultResponse as IncomingApi)\n : (defaultResponse as Incoming);\n\n return responseWithStatus\n ? {\n data: transformedResult,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : transformedResult;\n }\n\n let result;\n try {\n const contentType = response.headers.get(\"content-type\");\n\n if (contentType?.includes?.(\"text\")) {\n result = await response.text();\n } else if (contentType?.includes?.(\"json\")) {\n result = await response.json();\n } else {\n result = await response.blob();\n }\n } catch {\n if (RESPONSE_DATA_SYMBOL in response) result = response[RESPONSE_DATA_SYMBOL];\n }\n\n throw new ResponseError({\n status: response.status,\n message: `HTTP error! Status: ${response.status}`,\n description: result,\n headers: Object.fromEntries(response.headers.entries()),\n });\n }\n\n if (request.downloadFile) {\n const data = await response.blob();\n const mimeType = response.headers.get(\"content-type\");\n const fileName = response.headers.get(\"content-disposition\");\n\n if (!mimeType || !fileName) throw new Error(\"Download Error! Empty info!\");\n\n if (IS_BROWSER)\n downloadFile({\n data: data as Blob,\n fileName,\n mimeType,\n });\n\n return responseWithStatus\n ? {\n data: data as Incoming,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : (data as Incoming);\n }\n\n const contentType = response.headers.get(\"content-type\");\n let result: Incoming | IncomingApi = undefined as Incoming | IncomingApi;\n\n try {\n if (contentType?.includes?.(\"text\")) {\n result = (await response.text()) as Incoming | IncomingApi;\n } else if (contentType?.includes?.(\"json\")) {\n result = (await response.json()) as Incoming | IncomingApi;\n } else {\n result = (await response.blob()) as Incoming | IncomingApi;\n }\n } catch {}\n\n const transformedResult = request.transformIncomingData\n ? request.transformIncomingData(result as IncomingApi)\n : (result as Incoming);\n\n return responseWithStatus\n ? {\n data: transformedResult,\n status: response.status,\n headers: Object.fromEntries(response.headers.entries()),\n }\n : transformedResult;\n }\n\n async function requestApi<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>): Promise<Incoming> {\n return handleRequest(request, false) as Promise<Incoming>;\n }\n\n async function requestApiWithMeta<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n ): Promise<{ data: Incoming; status: number; headers: Record<string, string> }> {\n return handleRequest(request, true) as Promise<{\n data: Incoming;\n status: number;\n headers: Record<string, string>;\n }>;\n }\n\n return {\n requestApi,\n requestApiWithMeta,\n setMiddlewares,\n };\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"console-middleware.js","sources":["../../../../../src/lib/api/middlewares/console-middleware.ts"],"sourcesContent":["import type { LoggerMiddlewareOptions, Middleware, RequestInterface } from \"../../../types\";\n\nexport function generateConsoleMiddleware(options: LoggerMiddlewareOptions = {}): Middleware {\n return (request) => {\n return new Promise((resolve) => {\n if (\n (options.filter &&\n !options.filter(request as RequestInterface<unknown, unknown, unknown, unknown>)) ||\n (options.filterHeaders && !options.filterHeaders(request.headers)) ||\n (options.filterMethod && !options.filterMethod(request.method)) ||\n (options.filterParams && !options.filterParams(request.params)) ||\n (options.filterPath && !options.filterPath(request.path))\n ) {\n resolve(true);\n\n return;\n }\n // eslint-disable-next-line no-console\n console.log(request);\n resolve(true);\n });\n };\n}\n"],"names":[],"mappings":"AAEgB,SAAA,yBAAyB,CAAC,OAAA,GAAmC,EAAE,EAAA;IAC7E,OAAO,CAAC,OAAO,KAAI;AACjB,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC7B,IACE,CAAC,OAAO,CAAC,MAAM;AACb,gBAAA,CAAC,OAAO,CAAC,MAAM,CAAC,OAA+D,CAAC;AAClF,iBAAC,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAClE,iBAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/D,iBAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/D,iBAAC,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EACzD;gBACA,OAAO,CAAC,IAAI,CAAC;gBAEb;;;AAGF,YAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC;AACf,SAAC,CAAC;AACJ,KAAC;AACH;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"console-post-middleware.js","sources":["../../../../../src/lib/api/middlewares/console-post-middleware.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport type { LoggerPostMiddlewareOptions, PostMiddleware } from \"../../../types\";\nimport { RESPONSE_DATA_SYMBOL } from \"../constants\";\n\nexport function generateConsolePostMiddleware(\n options: LoggerPostMiddlewareOptions = {},\n): PostMiddleware {\n return (request, response) => {\n return new Promise((resolve) => {\n void (async function logger() {\n try {\n if (\n !response ||\n (options.filter && !options.filter(response)) ||\n (options.filterStatus && !options.filterStatus(response.status)) ||\n (options.filterUrl && !options.filterUrl(response.url)) ||\n (options.filterHeaders && !options.filterHeaders(response.headers))\n ) {\n resolve(true);\n\n return;\n }\n\n const contentType = response.headers.get(\"content-type\");\n let result;\n if (contentType?.includes?.(\"text\")) {\n result = await response.text();\n } else if (contentType?.includes?.(\"json\")) {\n result = await response.json();\n } else {\n result = await response.blob();\n }\n\n Object.defineProperty(response, RESPONSE_DATA_SYMBOL, {\n value: result,\n writable: false,\n enumerable: false,\n configurable: true,\n });\n\n console.log({\n url: response.url,\n status: response.status,\n headers: response.headers,\n body: result,\n });\n\n resolve(true);\n } catch {\n if (response) {\n console.log({ url: response.url, status: response.status, headers: response.headers });\n }\n\n resolve(true);\n }\n })().finally(() => {\n resolve(true);\n });\n });\n };\n}\n"],"names":[],"mappings":";;AAIgB,SAAA,6BAA6B,CAC3C,OAAA,GAAuC,EAAE,EAAA;AAEzC,IAAA,OAAO,CAAC,OAAO,EAAE,QAAQ,KAAI;AAC3B,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC7B,KAAK,CAAC,eAAe,MAAM,GAAA;AACzB,gBAAA,IAAI;AACF,oBAAA,IACE,CAAC,QAAQ;yBACR,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC7C,yBAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChE,yBAAC,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvD,yBAAC,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EACnE;wBACA,OAAO,CAAC,IAAI,CAAC;wBAEb;;oBAGF,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AACxD,oBAAA,IAAI,MAAM;oBACV,IAAI,WAAW,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE;AACnC,wBAAA,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;;yBACzB,IAAI,WAAW,EAAE,QAAQ,GAAG,MAAM,CAAC,EAAE;AAC1C,wBAAA,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;;yBACzB;AACL,wBAAA,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;;AAGhC,oBAAA,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,oBAAoB,EAAE;AACpD,wBAAA,KAAK,EAAE,MAAM;AACb,wBAAA,QAAQ,EAAE,KAAK;AACf,wBAAA,UAAU,EAAE,KAAK;AACjB,wBAAA,YAAY,EAAE,IAAI;AACnB,qBAAA,CAAC;oBAEF,OAAO,CAAC,GAAG,CAAC;wBACV,GAAG,EAAE,QAAQ,CAAC,GAAG;wBACjB,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;AACzB,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA,CAAC;oBAEF,OAAO,CAAC,IAAI,CAAC;;AACb,gBAAA,MAAM;oBACN,IAAI,QAAQ,EAAE;wBACZ,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;;oBAGxF,OAAO,CAAC,IAAI,CAAC;;AAEjB,aAAC,GAAG,CAAC,OAAO,CAAC,MAAK;gBAChB,OAAO,CAAC,IAAI,CAAC;AACf,aAAC,CAAC;AACJ,SAAC,CAAC;AACJ,KAAC;AACH;;;;"}
@@ -1,65 +0,0 @@
1
- import { API_MIDDLEWARES, POST_API_MIDDLEWARES } from '../../../constants/api.js';
2
- import { IS_BROWSER, IS_JEST } from '../../../constants/environment.js';
3
- import { generateConsoleMiddleware } from './console-middleware.js';
4
- import { generateConsolePostMiddleware } from './console-post-middleware.js';
5
- import { generateOauthMiddleware } from './oauth-middleware.js';
6
-
7
- // eslint-disable-next-line max-params
8
- function generateMiddlewares(activeMiddlewares, middlewareOptions, oauthOptions, customMiddlewares) {
9
- const selectedMiddlewares = customMiddlewares;
10
- for (const key of activeMiddlewares) {
11
- switch (key) {
12
- case API_MIDDLEWARES.Oauth: {
13
- if (oauthOptions && (IS_BROWSER || IS_JEST))
14
- selectedMiddlewares.push(generateOauthMiddleware(oauthOptions));
15
- continue;
16
- }
17
- case API_MIDDLEWARES.Logger: {
18
- selectedMiddlewares.push(generateConsoleMiddleware(middlewareOptions.logger));
19
- continue;
20
- }
21
- default: {
22
- continue;
23
- }
24
- }
25
- }
26
- return function executeMiddlewares(request) {
27
- return new Promise((resolve) => {
28
- void (async () => {
29
- for (const middleware of selectedMiddlewares) {
30
- // eslint-disable-next-line no-await-in-loop
31
- await middleware(request);
32
- }
33
- resolve(1);
34
- })();
35
- });
36
- };
37
- }
38
- function generatePostMiddlewares(activePostMiddlewares, postMiddlewaresOptions, customPostMiddlewares) {
39
- const selectedMiddlewares = customPostMiddlewares;
40
- for (const key of activePostMiddlewares) {
41
- switch (key) {
42
- case POST_API_MIDDLEWARES.Logger: {
43
- selectedMiddlewares.push(generateConsolePostMiddleware(postMiddlewaresOptions.logger));
44
- continue;
45
- }
46
- default: {
47
- continue;
48
- }
49
- }
50
- }
51
- return function executeMiddlewares(request, response) {
52
- return new Promise((resolve) => {
53
- void (async () => {
54
- for (const middleware of selectedMiddlewares) {
55
- // eslint-disable-next-line no-await-in-loop
56
- await middleware(request, response);
57
- }
58
- resolve(1);
59
- })();
60
- });
61
- };
62
- }
63
-
64
- export { generateMiddlewares, generatePostMiddlewares };
65
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/lib/api/middlewares/index.ts"],"sourcesContent":["import type { Response as NodeResponse } from \"node-fetch\";\nimport { API_MIDDLEWARES, IS_BROWSER, IS_JEST, POST_API_MIDDLEWARES } from \"../../../constants\";\nimport type {\n ActiveMiddleware,\n ActivePostMiddleware,\n Middleware,\n MiddlewaresOptions,\n OauthOptions,\n PostMiddleware,\n PostMiddlewareOptions,\n RequestInterface,\n} from \"../../../types\";\nimport { generateConsoleMiddleware } from \"./console-middleware\";\nimport { generateConsolePostMiddleware } from \"./console-post-middleware\";\nimport { generateOauthMiddleware } from \"./oauth-middleware\";\n\n// eslint-disable-next-line max-params\nexport function generateMiddlewares(\n activeMiddlewares: ActiveMiddleware,\n middlewareOptions: MiddlewaresOptions,\n oauthOptions: OauthOptions | undefined,\n customMiddlewares: Middleware[],\n) {\n const selectedMiddlewares: Middleware[] = customMiddlewares;\n\n for (const key of activeMiddlewares) {\n switch (key) {\n case API_MIDDLEWARES.Oauth: {\n if (oauthOptions && (IS_BROWSER || IS_JEST))\n selectedMiddlewares.push(generateOauthMiddleware(oauthOptions));\n continue;\n }\n case API_MIDDLEWARES.Logger: {\n selectedMiddlewares.push(generateConsoleMiddleware(middlewareOptions.logger));\n continue;\n }\n default: {\n continue;\n }\n }\n }\n\n return function executeMiddlewares<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>) {\n return new Promise((resolve) => {\n void (async () => {\n for (const middleware of selectedMiddlewares) {\n // eslint-disable-next-line no-await-in-loop\n await middleware(request);\n }\n\n resolve(1);\n })();\n });\n };\n}\n\nexport function generatePostMiddlewares(\n activePostMiddlewares: ActivePostMiddleware,\n postMiddlewaresOptions: PostMiddlewareOptions,\n customPostMiddlewares: PostMiddleware[],\n) {\n const selectedMiddlewares: PostMiddleware[] = customPostMiddlewares;\n\n for (const key of activePostMiddlewares) {\n switch (key) {\n case POST_API_MIDDLEWARES.Logger: {\n selectedMiddlewares.push(generateConsolePostMiddleware(postMiddlewaresOptions.logger));\n continue;\n }\n\n default: {\n continue;\n }\n }\n }\n\n return function executeMiddlewares<\n IncomingApi,\n Incoming = IncomingApi,\n Outcoming = unknown,\n OutcomingApi = Outcoming,\n >(\n request: RequestInterface<IncomingApi, Incoming, Outcoming, OutcomingApi>,\n response: Response | NodeResponse | undefined,\n ) {\n return new Promise((resolve) => {\n void (async () => {\n for (const middleware of selectedMiddlewares) {\n // eslint-disable-next-line no-await-in-loop\n await middleware(request, response);\n }\n\n resolve(1);\n })();\n });\n };\n}\n"],"names":[],"mappings":";;;;;;AAgBA;AACM,SAAU,mBAAmB,CACjC,iBAAmC,EACnC,iBAAqC,EACrC,YAAsC,EACtC,iBAA+B,EAAA;IAE/B,MAAM,mBAAmB,GAAiB,iBAAiB;AAE3D,IAAA,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE;QACnC,QAAQ,GAAG;AACT,YAAA,KAAK,eAAe,CAAC,KAAK,EAAE;AAC1B,gBAAA,IAAI,YAAY,KAAK,UAAU,IAAI,OAAO,CAAC;oBACzC,mBAAmB,CAAC,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;gBACjE;;AAEF,YAAA,KAAK,eAAe,CAAC,MAAM,EAAE;gBAC3B,mBAAmB,CAAC,IAAI,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAC7E;;YAEF,SAAS;gBACP;;;;IAKN,OAAO,SAAS,kBAAkB,CAKhC,OAAyE,EAAA;AACzE,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC7B,KAAK,CAAC,YAAW;AACf,gBAAA,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE;;AAE5C,oBAAA,MAAM,UAAU,CAAC,OAAO,CAAC;;gBAG3B,OAAO,CAAC,CAAC,CAAC;aACX,GAAG;AACN,SAAC,CAAC;AACJ,KAAC;AACH;SAEgB,uBAAuB,CACrC,qBAA2C,EAC3C,sBAA6C,EAC7C,qBAAuC,EAAA;IAEvC,MAAM,mBAAmB,GAAqB,qBAAqB;AAEnE,IAAA,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE;QACvC,QAAQ,GAAG;AACT,YAAA,KAAK,oBAAoB,CAAC,MAAM,EAAE;gBAChC,mBAAmB,CAAC,IAAI,CAAC,6BAA6B,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;gBACtF;;YAGF,SAAS;gBACP;;;;AAKN,IAAA,OAAO,SAAS,kBAAkB,CAMhC,OAAyE,EACzE,QAA6C,EAAA;AAE7C,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAI;YAC7B,KAAK,CAAC,YAAW;AACf,gBAAA,KAAK,MAAM,UAAU,IAAI,mBAAmB,EAAE;;AAE5C,oBAAA,MAAM,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC;;gBAGrC,OAAO,CAAC,CAAC,CAAC;aACX,GAAG;AACN,SAAC,CAAC;AACJ,KAAC;AACH;;;;"}
@@ -1,75 +0,0 @@
1
- import { waitUntil } from '../../utils/wait-until.js';
2
- import '../../../constants/environment.js';
3
- import 'dayjs';
4
- import '../../date/is-today.js';
5
- import '../../date/is-tomorrow.js';
6
- import '../../date/is-yesterday.js';
7
- import 'lodash/get';
8
- import 'lodash/set';
9
- import { startWith } from '../../utils/start-with.js';
10
- import { getOauthTokenFromOtherWindow } from '../oauth/token.js';
11
-
12
- let isFetchingAccessToken = false;
13
- const generateOauthMiddleware = (options) => async (request) => {
14
- if (!options.expiresTokenStorageName) {
15
- throw new Error("Auth middleware hasn't required options");
16
- }
17
- const isSameOrigin = !startWith(request.path, "http");
18
- if (request.token) {
19
- if (!isSameOrigin)
20
- request.headers = {
21
- ...request.headers,
22
- Authorization: `Bearer ${request.token}`,
23
- };
24
- return;
25
- }
26
- if (isFetchingAccessToken)
27
- await waitUntil(() => isFetchingAccessToken);
28
- const expires = localStorage.getItem(options.expiresTokenStorageName);
29
- let token;
30
- if (!expires || Number.isNaN(+expires) || Date.now() > +expires) {
31
- isFetchingAccessToken = true;
32
- await getOauthTokenFromOtherWindow({
33
- onlyRefreshTokenWindowQueryName: options.onlyRefreshTokenWindowQueryName,
34
- onWindowOpenError: options.onWindowOpenError,
35
- refreshTokenWindowUrl: options.refreshTokenWindowUrl,
36
- wait: options.wait,
37
- expiresTokenStorageName: options.expiresTokenStorageName,
38
- closeObserveInterval: options.closeObserveInterval,
39
- });
40
- if (options.tokenRequest) {
41
- token = await options.tokenRequest();
42
- if (token != undefined && options.tokenStorageName) {
43
- localStorage.setItem(options.tokenStorageName, token);
44
- }
45
- }
46
- isFetchingAccessToken = false;
47
- }
48
- if (!isSameOrigin && token)
49
- request.headers = {
50
- ...request.headers,
51
- Authorization: `Bearer ${token}`,
52
- };
53
- };
54
- async function refetchAfterOauth(options, refetch) {
55
- isFetchingAccessToken = true;
56
- await getOauthTokenFromOtherWindow({
57
- onlyRefreshTokenWindowQueryName: options.onlyRefreshTokenWindowQueryName,
58
- onWindowOpenError: options.onWindowOpenError,
59
- refreshTokenWindowUrl: options.refreshTokenWindowUrl,
60
- wait: options.wait,
61
- expiresTokenStorageName: options.expiresTokenStorageName,
62
- closeObserveInterval: options.closeObserveInterval,
63
- });
64
- if (options.tokenRequest) {
65
- const token = await options.tokenRequest();
66
- if (token != undefined && options.tokenStorageName) {
67
- localStorage.setItem(options.tokenStorageName, token);
68
- }
69
- }
70
- isFetchingAccessToken = false;
71
- return await refetch();
72
- }
73
-
74
- export { generateOauthMiddleware, refetchAfterOauth };
75
- //# sourceMappingURL=oauth-middleware.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oauth-middleware.js","sources":["../../../../../src/lib/api/middlewares/oauth-middleware.ts"],"sourcesContent":["import type { Middleware, OauthOptions } from \"../../../types\";\nimport { startWith, waitUntil } from \"../../utils\";\nimport { getOauthTokenFromOtherWindow } from \"../oauth\";\n\nlet isFetchingAccessToken = false;\n\nexport const generateOauthMiddleware =\n (options: OauthOptions): Middleware =>\n async (request) => {\n if (!options.expiresTokenStorageName) {\n throw new Error(\"Auth middleware hasn't required options\");\n }\n\n const isSameOrigin = !startWith(request.path, \"http\");\n\n if (request.token) {\n if (!isSameOrigin)\n request.headers = {\n ...request.headers,\n Authorization: `Bearer ${request.token}`,\n };\n\n return;\n }\n\n if (isFetchingAccessToken) await waitUntil(() => isFetchingAccessToken);\n\n const expires = localStorage.getItem(options.expiresTokenStorageName);\n let token: string | undefined | null;\n if (!expires || Number.isNaN(+expires) || Date.now() > +expires) {\n isFetchingAccessToken = true;\n await getOauthTokenFromOtherWindow({\n onlyRefreshTokenWindowQueryName: options.onlyRefreshTokenWindowQueryName,\n onWindowOpenError: options.onWindowOpenError,\n refreshTokenWindowUrl: options.refreshTokenWindowUrl,\n wait: options.wait,\n expiresTokenStorageName: options.expiresTokenStorageName,\n closeObserveInterval: options.closeObserveInterval,\n });\n if (options.tokenRequest) {\n token = await options.tokenRequest();\n if (token != undefined && options.tokenStorageName) {\n localStorage.setItem(options.tokenStorageName, token);\n }\n }\n isFetchingAccessToken = false;\n }\n\n if (!isSameOrigin && token)\n request.headers = {\n ...request.headers,\n Authorization: `Bearer ${token}`,\n };\n };\n\nexport async function refetchAfterOauth<T>(options: OauthOptions, refetch: () => Promise<T>) {\n isFetchingAccessToken = true;\n await getOauthTokenFromOtherWindow({\n onlyRefreshTokenWindowQueryName: options.onlyRefreshTokenWindowQueryName,\n onWindowOpenError: options.onWindowOpenError,\n refreshTokenWindowUrl: options.refreshTokenWindowUrl,\n wait: options.wait,\n expiresTokenStorageName: options.expiresTokenStorageName,\n closeObserveInterval: options.closeObserveInterval,\n });\n if (options.tokenRequest) {\n const token = await options.tokenRequest();\n if (token != undefined && options.tokenStorageName) {\n localStorage.setItem(options.tokenStorageName, token);\n }\n }\n isFetchingAccessToken = false;\n\n return await refetch();\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAIA,IAAI,qBAAqB,GAAG,KAAK;AAE1B,MAAM,uBAAuB,GAClC,CAAC,OAAqB,KACtB,OAAO,OAAO,KAAI;AAChB,IAAA,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE;AACpC,QAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC;;IAG5D,MAAM,YAAY,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;AAErD,IAAA,IAAI,OAAO,CAAC,KAAK,EAAE;AACjB,QAAA,IAAI,CAAC,YAAY;YACf,OAAO,CAAC,OAAO,GAAG;gBAChB,GAAG,OAAO,CAAC,OAAO;AAClB,gBAAA,aAAa,EAAE,CAAA,OAAA,EAAU,OAAO,CAAC,KAAK,CAAE,CAAA;aACzC;QAEH;;AAGF,IAAA,IAAI,qBAAqB;AAAE,QAAA,MAAM,SAAS,CAAC,MAAM,qBAAqB,CAAC;IAEvE,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC;AACrE,IAAA,IAAI,KAAgC;AACpC,IAAA,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,EAAE;QAC/D,qBAAqB,GAAG,IAAI;AAC5B,QAAA,MAAM,4BAA4B,CAAC;YACjC,+BAA+B,EAAE,OAAO,CAAC,+BAA+B;YACxE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;YACpD,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;YACxD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;AACnD,SAAA,CAAC;AACF,QAAA,IAAI,OAAO,CAAC,YAAY,EAAE;AACxB,YAAA,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE;YACpC,IAAI,KAAK,IAAI,SAAS,IAAI,OAAO,CAAC,gBAAgB,EAAE;gBAClD,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC;;;QAGzD,qBAAqB,GAAG,KAAK;;IAG/B,IAAI,CAAC,YAAY,IAAI,KAAK;QACxB,OAAO,CAAC,OAAO,GAAG;YAChB,GAAG,OAAO,CAAC,OAAO;YAClB,aAAa,EAAE,CAAU,OAAA,EAAA,KAAK,CAAE,CAAA;SACjC;AACL;AAEK,eAAe,iBAAiB,CAAI,OAAqB,EAAE,OAAyB,EAAA;IACzF,qBAAqB,GAAG,IAAI;AAC5B,IAAA,MAAM,4BAA4B,CAAC;QACjC,+BAA+B,EAAE,OAAO,CAAC,+BAA+B;QACxE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;QACxD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;AACnD,KAAA,CAAC;AACF,IAAA,IAAI,OAAO,CAAC,YAAY,EAAE;AACxB,QAAA,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE;QAC1C,IAAI,KAAK,IAAI,SAAS,IAAI,OAAO,CAAC,gBAAgB,EAAE;YAClD,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC;;;IAGzD,qBAAqB,GAAG,KAAK;IAE7B,OAAO,MAAM,OAAO,EAAE;AACxB;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"token.js","sources":["../../../../../src/lib/api/oauth/token.ts"],"sourcesContent":["import type { GetOauthTokenFromOtherWindowOptions, GetOauthTokenOptions } from \"../../../types\";\nimport { getQueryValues } from \"../../browser\";\nimport { isArray, isString } from \"../../typings\";\nimport { waitUntil } from \"../../utils\";\n\nexport async function getOauthTokenFromOtherWindow(options: GetOauthTokenFromOtherWindowOptions) {\n let waiting = true;\n const url = new URL(\n typeof options.refreshTokenWindowUrl === \"function\"\n ? options.refreshTokenWindowUrl()\n : (options.refreshTokenWindowUrl ?? window.origin),\n );\n url.searchParams.append(options.onlyRefreshTokenWindowQueryName, \"true\");\n\n let windowInstance = window.open(\n url.toString(),\n \"_blank\",\n \"width=800,height=600,left=100,top=100\",\n );\n windowInstance ??= window.open(url.toString(), \"_blank\");\n\n if (windowInstance) {\n const channel = new BroadcastChannel(options.onlyRefreshTokenWindowQueryName);\n const windowCloseObserver = setInterval(() => {\n if (windowInstance.closed) {\n if (waiting) {\n waiting = false;\n channel.close();\n clearInterval(windowCloseObserver);\n }\n }\n }, options.closeObserveInterval ?? 500);\n channel.onmessage = () => {\n if (waiting) {\n waiting = false;\n channel.close();\n clearInterval(windowCloseObserver);\n }\n };\n setTimeout(() => {\n if (waiting) {\n waiting = false;\n channel.close();\n clearInterval(windowCloseObserver);\n }\n if (windowInstance && !windowInstance.closed) {\n windowInstance.close();\n }\n }, options.wait ?? 15000);\n } else {\n if (options.onWindowOpenError) options.onWindowOpenError();\n waiting = false;\n\n return;\n }\n\n await waitUntil(() => waiting);\n}\n\nexport function getOauthToken(options: GetOauthTokenOptions) {\n const queries = getQueryValues([\n options.expiresTokenQueryName,\n options.onlyRefreshTokenWindowQueryName,\n ]);\n const refreshQuery = queries?.[options.onlyRefreshTokenWindowQueryName];\n const expiresQuery = queries?.[options.expiresTokenQueryName];\n\n /** Is OnlyRefresh window */\n const isRefresh = isString(refreshQuery)\n ? refreshQuery === \"true\"\n : isArray(refreshQuery)\n ? refreshQuery[refreshQuery.length - 1] === \"true\"\n : false;\n /** Expires token */\n const expires = isString(expiresQuery)\n ? expiresQuery\n : isArray(expiresQuery)\n ? expiresQuery[expiresQuery.length - 1]\n : false;\n\n /** OAuth flow if not expires */\n if (!expires) {\n window.location.replace(\n typeof options.oauthUrl === \"function\" ? options.oauthUrl() : options.oauthUrl,\n );\n\n return null;\n }\n\n localStorage.setItem(options.expiresTokenStorageName, expires);\n\n /** Close if OnlyRefresh window */\n if (isRefresh) {\n const channel = new BroadcastChannel(options.onlyRefreshTokenWindowQueryName);\n channel.postMessage(true);\n channel.close();\n window.close();\n }\n\n /** Delete expires query */\n if (expires) {\n const url = new URL(window.location.href);\n url.searchParams.delete(options.expiresTokenQueryName);\n window.location.replace(url.toString());\n\n return null;\n }\n\n return expires;\n}\n"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- import { isNull } from '../../typings/is-null.js';
2
- import { isUndefined } from '../../typings/is-undefined.js';
3
-
4
- async function updateAuthUser(options) {
5
- const userInfo = await (options.userRequest ? options.userRequest() : getAuthUser(options));
6
- if (isNull(userInfo)) {
7
- return void window.location.replace(options.oauthUrl());
8
- }
9
- if (isUndefined(userInfo)) {
10
- return void window.location.replace(options.errorUrl);
11
- }
12
- return userInfo;
13
- }
14
- async function getAuthUser(options) {
15
- let status = 0;
16
- try {
17
- const response = await fetch(options.authUserUrl, {
18
- method: "GET",
19
- });
20
- status = response.status;
21
- if (!response.ok) {
22
- throw new Error(`HTTP error! Status: ${response.status}`);
23
- }
24
- const result = (await response.json());
25
- return result;
26
- }
27
- catch {
28
- if (status >= 500)
29
- return undefined;
30
- return null;
31
- }
32
- }
33
-
34
- export { getAuthUser, updateAuthUser };
35
- //# sourceMappingURL=user.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"user.js","sources":["../../../../../src/lib/api/oauth/user.ts"],"sourcesContent":["import type { AuthUserRequestOptions, AuthUserUpdateRequestOptions } from \"../../../types\";\nimport { isNull, isUndefined } from \"../../typings\";\n\nexport async function updateAuthUser<User extends Record<string, unknown>>(\n options: AuthUserUpdateRequestOptions<User>,\n) {\n const userInfo = await (options.userRequest ? options.userRequest() : getAuthUser<User>(options));\n if (isNull(userInfo)) {\n return void window.location.replace(options.oauthUrl());\n }\n if (isUndefined(userInfo)) {\n return void window.location.replace(options.errorUrl);\n }\n\n return userInfo;\n}\n\nexport async function getAuthUser<User extends Record<string, unknown>>(\n options: AuthUserRequestOptions,\n): Promise<User | null | undefined> {\n let status = 0;\n try {\n const response = await fetch(options.authUserUrl, {\n method: \"GET\",\n });\n status = response.status;\n if (!response.ok) {\n throw new Error(`HTTP error! Status: ${response.status}`);\n }\n\n const result = (await response.json()) as User;\n\n return result;\n } catch {\n if (status >= 500) return undefined;\n\n return null;\n }\n}\n"],"names":[],"mappings":";;;AAGO,eAAe,cAAc,CAClC,OAA2C,EAAA;IAE3C,MAAM,QAAQ,GAAG,OAAO,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,WAAW,CAAO,OAAO,CAAC,CAAC;AACjG,IAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE;AACpB,QAAA,OAAO,KAAK,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;;AAEzD,IAAA,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE;QACzB,OAAO,KAAK,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;;AAGvD,IAAA,OAAO,QAAQ;AACjB;AAEO,eAAe,WAAW,CAC/B,OAA+B,EAAA;IAE/B,IAAI,MAAM,GAAG,CAAC;AACd,IAAA,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE;AAChD,YAAA,MAAM,EAAE,KAAK;AACd,SAAA,CAAC;AACF,QAAA,MAAM,GAAG,QAAQ,CAAC,MAAM;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,CAAA,oBAAA,EAAuB,QAAQ,CAAC,MAAM,CAAE,CAAA,CAAC;;QAG3D,MAAM,MAAM,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAS;AAE9C,QAAA,OAAO,MAAM;;AACb,IAAA,MAAM;QACN,IAAI,MAAM,IAAI,GAAG;AAAE,YAAA,OAAO,SAAS;AAEnC,QAAA,OAAO,IAAI;;AAEf;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"create-url-with-params.js","sources":["../../../../src/lib/utils/create-url-with-params.ts"],"sourcesContent":["import type { ParamsType } from \"../../types\";\nimport { buildQueryString } from \"./build-query-string\";\n\ntype CreateURLOptionsInterface = {\n baseURL: string;\n params?: ParamsType;\n};\n\nexport function createURLWithParams(options: CreateURLOptionsInterface): string {\n const url = options.baseURL;\n\n if (!options.params) {\n return url;\n }\n\n const queryString = buildQueryString(options.params);\n\n return `${url}?${queryString}`;\n}\n"],"names":[],"mappings":";;AAQM,SAAU,mBAAmB,CAAC,OAAkC,EAAA;AACpE,IAAA,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO;AAE3B,IAAA,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACnB,QAAA,OAAO,GAAG;;IAGZ,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC;AAEpD,IAAA,OAAO,CAAG,EAAA,GAAG,CAAI,CAAA,EAAA,WAAW,EAAE;AAChC;;;;"}