r3ui-lib 1.2.32 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/dist/login.es.js +1426 -1388
- package/dist/login.umd.js +5 -5
- package/dist/r3ui-lib.es.js +3588 -3503
- package/dist/r3ui-lib.umd.js +28 -28
- package/dist/types/components/SsoLoginScreen.vue.d.ts.map +1 -1
- package/dist/types/composables/table/useRemoteTable.d.ts +6 -1
- package/dist/types/composables/table/useRemoteTable.d.ts.map +1 -1
- package/dist/types/main.d.ts +1 -1
- package/dist/types/main.d.ts.map +1 -1
- package/dist/types/utils/auth/exchangePasswordToken.d.ts.map +1 -1
- package/dist/types/utils/auth/handlePkceCallback.d.ts.map +1 -1
- package/dist/types/utils/auth/logout.d.ts +1 -1
- package/dist/types/utils/auth/logout.d.ts.map +1 -1
- package/dist/types/utils/auth/runLogoutHandler.d.ts.map +1 -1
- package/dist/types/utils/auth/signInWithSSO.d.ts +1 -0
- package/dist/types/utils/auth/signInWithSSO.d.ts.map +1 -1
- package/dist/types/utils/tableAjaxRequest.d.ts +1 -0
- package/dist/types/utils/tableAjaxRequest.d.ts.map +1 -1
- package/dist/types/utils/upstreamHttpStatus.d.ts +9 -0
- package/dist/types/utils/upstreamHttpStatus.d.ts.map +1 -0
- package/nuxt-errors/app/error.vue +85 -0
- package/nuxt-errors/composables/presentPageError.ts +21 -0
- package/nuxt-errors/error.vue +85 -0
- package/nuxt-errors/nuxt.config.ts +6 -0
- package/nuxt-errors/plugins/app-error-log.client.ts +21 -0
- package/nuxt-errors/utils/classifyTransport.ts +56 -0
- package/nuxt-errors/utils/cloneJson.ts +17 -0
- package/nuxt-errors/utils/extractHttpStatus.ts +51 -0
- package/nuxt-errors/utils/extractLaravel.ts +73 -0
- package/nuxt-errors/utils/extractRequestId.ts +53 -0
- package/nuxt-errors/utils/isHttpStatus.ts +3 -0
- package/nuxt-errors/utils/logAppError.ts +68 -0
- package/nuxt-errors/utils/normalizeAppError.ts +178 -0
- package/nuxt-errors/utils/presentAppError.ts +115 -0
- package/nuxt-errors/utils/publicHttpMessage.ts +23 -0
- package/nuxt-errors/utils/serializeCause.ts +25 -0
- package/nuxt-errors/utils/types.ts +55 -0
- package/package.json +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SsoLoginScreen.vue.d.ts","sourceRoot":"","sources":["../../../src/components/SsoLoginScreen.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SsoLoginScreen.vue.d.ts","sourceRoot":"","sources":["../../../src/components/SsoLoginScreen.vue"],"names":[],"mappings":"AA6DA,OAAO,EAEL,KAAK,UAAU,EAChB,MAAM,4BAA4B,CAAC;AAMpC,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAC/C,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IACnC,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CACpC,CAAC;;AA2EF,wBAEG"}
|
|
@@ -2,6 +2,7 @@ import { type InjectionKey, type Ref } from 'vue';
|
|
|
2
2
|
import useTableDefault from './useTableDefault';
|
|
3
3
|
import type { TabulatorTranslateFn } from '~/utils/createTabulatorLangsFromT';
|
|
4
4
|
import type { TableColumn } from '~/types/table';
|
|
5
|
+
export type RemoteTableNotFoundPolicy = 'empty' | 'error';
|
|
5
6
|
export type RemoteTableAjaxTransformer<T = Record<string, unknown>> = (url: string, params: {
|
|
6
7
|
per_page: number;
|
|
7
8
|
}, response: T) => {
|
|
@@ -22,8 +23,12 @@ export type UseRemoteTableOptions<TResponse = Record<string, unknown>> = {
|
|
|
22
23
|
createAjaxResponse: (total: Ref<number>) => RemoteTableAjaxTransformer<TResponse>;
|
|
23
24
|
/** Базовые Tabulator options (app-specific: headers, paginationMode, …) */
|
|
24
25
|
defaultTableOptions?: Record<string, unknown>;
|
|
25
|
-
/** Обработчик 401
|
|
26
|
+
/** Обработчик 401 для ajax */
|
|
26
27
|
onUnauthorized?: (response: Response) => void;
|
|
28
|
+
/** Все non-401 transport ошибки. Presentation выбирает caller. */
|
|
29
|
+
onError?: (error: unknown) => void;
|
|
30
|
+
/** 404 → пустая страница только при явном 'empty'. По умолчанию ошибка. */
|
|
31
|
+
notFound?: RemoteTableNotFoundPolicy;
|
|
27
32
|
/** i18n */
|
|
28
33
|
t: TabulatorTranslateFn;
|
|
29
34
|
locale: Ref<string> | string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRemoteTable.d.ts","sourceRoot":"","sources":["../../../../src/composables/table/useRemoteTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,GAAG,EACT,MAAM,KAAK,CAAC;AACb,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAK9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,MAAM,0BAA0B,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CACpE,GAAG,EAAE,MAAM,EACX,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,EAC5B,QAAQ,EAAE,CAAC,KACR;IACH,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,YAAY,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;IACvE,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IACtC,UAAU,EAAE,MAAM,WAAW,EAAE,CAAC;IAChC,cAAc,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,mBAAmB,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,UAAU,EAAE,CAAC,aAAa,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IACrE,kBAAkB,EAAE,CAClB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KACf,0BAA0B,CAAC,SAAS,CAAC,CAAC;IAC3C,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,
|
|
1
|
+
{"version":3,"file":"useRemoteTable.d.ts","sourceRoot":"","sources":["../../../../src/composables/table/useRemoteTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,GAAG,EACT,MAAM,KAAK,CAAC;AACb,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAK9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,MAAM,yBAAyB,GAAG,OAAO,GAAG,OAAO,CAAC;AAE1D,MAAM,MAAM,0BAA0B,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CACpE,GAAG,EAAE,MAAM,EACX,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,EAC5B,QAAQ,EAAE,CAAC,KACR;IACH,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnB,YAAY,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;IACvE,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IACtC,UAAU,EAAE,MAAM,WAAW,EAAE,CAAC;IAChC,cAAc,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,mBAAmB,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,UAAU,EAAE,CAAC,aAAa,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IACrE,kBAAkB,EAAE,CAClB,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KACf,0BAA0B,CAAC,SAAS,CAAC,CAAC;IAC3C,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,8BAA8B;IAC9B,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC9C,kEAAkE;IAClE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IACrC,WAAW;IACX,CAAC,EAAE,oBAAoB,CAAC;IACxB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IAC7B,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAC1C,oBAAoB,CAAC,EAAE,CACrB,IAAI,EAAE,6BAA6B,KAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/C,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,OAAO,EAAE,qBAAqB,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;sCAiEM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8DvD"}
|
package/dist/types/main.d.ts
CHANGED
|
@@ -89,7 +89,7 @@ import constants from "~/utils/constants";
|
|
|
89
89
|
export * from "./services/AddressService";
|
|
90
90
|
export type { TableColumn, TableOptions } from "~/types/table";
|
|
91
91
|
export type { R3uiTableDefaultApi } from "~/types/tableInjectKeys";
|
|
92
|
-
export type { RemoteTableAjaxTransformer, RemoteTableFiltersContextBase, UseRemoteTableOptions, } from "~/composables/table/useRemoteTable";
|
|
92
|
+
export type { RemoteTableAjaxTransformer, RemoteTableFiltersContextBase, RemoteTableNotFoundPolicy, UseRemoteTableOptions, } from "~/composables/table/useRemoteTable";
|
|
93
93
|
export { applyFiltersKey, editTableColumnVisibilityKey, editTableColumnsModalVisibilityKey, filterModalVisibilityKey, handleColumnsApplyKey, handleColumnsChangedKey, isTableCoumnsHiddenKey, r3uiTableDefaultApiKey, resetFiltersKey, selectedFilterTitlesKey, selectAllTableColumnCheckboxesKey, setFilterParamsStringsKey, tableFiltersRefKey, tableOptionsKey, tableRefKey, unselectAllTableColumnCheckboxesKey, } from "~/types/tableInjectKeys";
|
|
94
94
|
export { addToLocalStorageKey, expandAccordionKey, expandedAccordionKey, hideSpinnerKey, showSpinnerKey, sidebarContentVisibilityKey, toggleSidebarKey, } from "~/types/layoutInjectKeys";
|
|
95
95
|
export type { ExpandAccordionFn, ExpandedAccordionState, } from "~/types/layoutInjectKeys";
|
package/dist/types/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exchangePasswordToken.d.ts","sourceRoot":"","sources":["../../../../src/utils/auth/exchangePasswordToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"exchangePasswordToken.d.ts","sourceRoot":"","sources":["../../../../src/utils/auth/exchangePasswordToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAMxE,MAAM,MAAM,iBAAiB,CAAC,MAAM,GAAG,OAAO,IAAI;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9C,UAAU,EAAE,CACV,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,KACpD,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,WAAW,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO,CAAC;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAgBF,wBAAsB,qBAAqB,CAAC,MAAM,EAChD,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAC9B,OAAO,CAAC,OAAO,CAAC,CA2DlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlePkceCallback.d.ts","sourceRoot":"","sources":["../../../../src/utils/auth/handlePkceCallback.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handlePkceCallback.d.ts","sourceRoot":"","sources":["../../../../src/utils/auth/handlePkceCallback.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,MAAM,GAAG,OAAO,IAAI;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IACrC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACtE,SAAS,EAAE,CACT,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,IAAI,CAAC;IACV,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,WAAW,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO,CAAC;IACjD,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACtD,UAAU,EAAE,CACV,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACjC,KACE,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,YAAY,EAAE,wBAAwB,CAAC;CACxC,CAAC;AAgCF,wBAAsB,kBAAkB,CAAC,MAAM,EAC7C,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAC7B,OAAO,CAAC,OAAO,CAAC,CAoHlB"}
|
|
@@ -5,7 +5,7 @@ export type LogoutFlowOptions = {
|
|
|
5
5
|
redirect?: (path: string) => Promise<void> | void;
|
|
6
6
|
onReset: () => void;
|
|
7
7
|
redirectPath?: string;
|
|
8
|
-
onError
|
|
8
|
+
onError: (error: unknown) => void;
|
|
9
9
|
};
|
|
10
10
|
export declare function runLogoutFlow(options: LogoutFlowOptions): Promise<void>;
|
|
11
11
|
//# sourceMappingURL=logout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../../../src/utils/auth/logout.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../../../src/utils/auth/logout.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACnC,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACnD,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAClD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF,wBAAsB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC7E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runLogoutHandler.d.ts","sourceRoot":"","sources":["../../../../src/utils/auth/runLogoutHandler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"runLogoutHandler.d.ts","sourceRoot":"","sources":["../../../../src/utils/auth/runLogoutHandler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAMxE,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,MAAM,GAAG,OAAO,IAAI;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACtE,YAAY,EAAE,CACZ,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC3B,IAAI,CAAC;IACV,WAAW,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO,CAAC;IACjD,WAAW,EAAE,CACX,GAAG,EAAE,MAAM,EACX,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,KACtD,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB,YAAY,EAAE,yBAAyB,CAAC;CACzC,CAAC;AAyBF,wBAAsB,gBAAgB,CAAC,MAAM,EAC3C,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CA6Df"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signInWithSSO.d.ts","sourceRoot":"","sources":["../../../../src/utils/auth/signInWithSSO.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"signInWithSSO.d.ts","sourceRoot":"","sources":["../../../../src/utils/auth/signInWithSSO.ts"],"names":[],"mappings":"AASA,KAAK,SAAS,GAAG;IAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,CAAC;AAEtD,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,eAAe,EAAE,MAAM;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC;IACtE,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC;QAC/B,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;IACH,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,SAAS,EAAE,CAAC,IAAI,EAAE;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,KAAK,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC;CAC1B,CAAC;AAwDF,wDAAwD;AACxD,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED,8EAA8E;AAC9E,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA2InE"}
|
|
@@ -16,6 +16,7 @@ export interface RemotePageResponse<T = Record<string, unknown>> {
|
|
|
16
16
|
}
|
|
17
17
|
export interface CreateTableAjaxRequestOptions<TResponse> {
|
|
18
18
|
onUnauthorized?: (response: Response) => void;
|
|
19
|
+
onError?: (error: unknown) => void;
|
|
19
20
|
onNotFound?: (ctx: {
|
|
20
21
|
url: string;
|
|
21
22
|
params: AjaxRequestParams;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tableAjaxRequest.d.ts","sourceRoot":"","sources":["../../../src/utils/tableAjaxRequest.ts"],"names":[],"mappings":"AAAA,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACjC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,6BAA6B,CAAC,SAAS;IACpD,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC9C,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,iBAAiB,CAAC;QAC1B,QAAQ,EAAE,QAAQ,CAAC;KACtB,KAAK,SAAS,CAAC;CACnB;AAED,wBAAgB,6BAA6B,CACzC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAChB,kBAAkB,CAgBpB;AAED,wBAAgB,0BAA0B,CAAC,SAAS,GAAG,OAAO,EAC1D,OAAO,GAAE,6BAA6B,CAAC,SAAS,CAAM,IAgClD,KAAK,MAAM,EACX,QAAQ,WAAW,EACnB,QAAQ,iBAAiB,KAC1B,OAAO,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"tableAjaxRequest.d.ts","sourceRoot":"","sources":["../../../src/utils/tableAjaxRequest.ts"],"names":[],"mappings":"AAAA,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACjC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,6BAA6B,CAAC,SAAS;IACpD,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC9C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,iBAAiB,CAAC;QAC1B,QAAQ,EAAE,QAAQ,CAAC;KACtB,KAAK,SAAS,CAAC;CACnB;AAED,wBAAgB,6BAA6B,CACzC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAChB,kBAAkB,CAgBpB;AAED,wBAAgB,0BAA0B,CAAC,SAAS,GAAG,OAAO,EAC1D,OAAO,GAAE,6BAA6B,CAAC,SAAS,CAAM,IAgClD,KAAK,MAAM,EACX,QAAQ,WAAW,EACnB,QAAQ,iBAAiB,KAC1B,OAAO,CAAC,SAAS,CAAC,CAkDxB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function isHttpStatus(value: unknown): value is number;
|
|
2
|
+
/**
|
|
3
|
+
* Совпадает с nuxt-errors/utils/extractHttpStatus: первый валидный 400…599
|
|
4
|
+
* (status, затем statusCode, затем nested cause).
|
|
5
|
+
*/
|
|
6
|
+
export declare function extractHttpStatus(value: unknown, seen?: Set<unknown>): number | undefined;
|
|
7
|
+
export declare function publicHttpMessage(statusCode: number): string;
|
|
8
|
+
export declare function statusFromUnknown(error: unknown, fallback?: number): number;
|
|
9
|
+
//# sourceMappingURL=upstreamHttpStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upstreamHttpStatus.d.ts","sourceRoot":"","sources":["../../../src/utils/upstreamHttpStatus.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAE5D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,IAAI,GAAE,GAAG,CAAC,OAAO,CAAa,GAC7B,MAAM,GAAG,SAAS,CA0CpB;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAa5D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,SAAM,GAAG,MAAM,CAExE"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { NuxtError } from '#app';
|
|
3
|
+
import type { PropType } from '#imports';
|
|
4
|
+
import { DefaultButton } from 'r3ui-lib';
|
|
5
|
+
import { useI18n } from '#imports';
|
|
6
|
+
import { toErrorPageView } from '../utils/presentAppError';
|
|
7
|
+
|
|
8
|
+
const { t } = useI18n();
|
|
9
|
+
|
|
10
|
+
const { error } = defineProps({
|
|
11
|
+
error: {
|
|
12
|
+
type: Object as PropType<NuxtError>,
|
|
13
|
+
required: true,
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
const view = computed(() => toErrorPageView(error));
|
|
18
|
+
|
|
19
|
+
const headingWord = computed(() => t('pages.error_404'));
|
|
20
|
+
|
|
21
|
+
const messageText = computed(() => {
|
|
22
|
+
if (view.value.statusCode === 404) {
|
|
23
|
+
return t('pages.page_not_found');
|
|
24
|
+
}
|
|
25
|
+
const pub = view.value.publicMessage;
|
|
26
|
+
if (pub && pub.includes(' ')) {
|
|
27
|
+
return pub;
|
|
28
|
+
}
|
|
29
|
+
if (pub && pub.includes('.')) {
|
|
30
|
+
const translated = t(pub);
|
|
31
|
+
if (translated !== pub) {
|
|
32
|
+
return translated;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return t(view.value.messageKey);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const goHome = async () => await clearError({ redirect: '/' });
|
|
39
|
+
|
|
40
|
+
const retry = () => {
|
|
41
|
+
window.location.reload();
|
|
42
|
+
};
|
|
43
|
+
</script>
|
|
44
|
+
|
|
45
|
+
<template>
|
|
46
|
+
<div class="error__wrapper">
|
|
47
|
+
<h1>{{ view.statusCode }} {{ headingWord }}</h1>
|
|
48
|
+
<div class="error__message">{{ messageText }}</div>
|
|
49
|
+
<div class="error__actions">
|
|
50
|
+
<DefaultButton
|
|
51
|
+
v-if="view.showRetry"
|
|
52
|
+
:label="t('pages.retry')"
|
|
53
|
+
@submit="retry"
|
|
54
|
+
/>
|
|
55
|
+
<DefaultButton :label="t('pages.go_home')" @submit="goHome" />
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</template>
|
|
59
|
+
|
|
60
|
+
<style scoped lang="scss">
|
|
61
|
+
.error__message {
|
|
62
|
+
color: var(--color-dark-gray);
|
|
63
|
+
text-align: center;
|
|
64
|
+
font-size: 20px;
|
|
65
|
+
font-weight: 400;
|
|
66
|
+
line-height: 26px;
|
|
67
|
+
margin-bottom: 16px;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.error__actions {
|
|
71
|
+
display: flex;
|
|
72
|
+
gap: 12px;
|
|
73
|
+
flex-wrap: wrap;
|
|
74
|
+
justify-content: center;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.error__wrapper {
|
|
78
|
+
display: flex;
|
|
79
|
+
flex-direction: column;
|
|
80
|
+
align-items: center;
|
|
81
|
+
justify-content: center;
|
|
82
|
+
gap: 16px;
|
|
83
|
+
min-height: 80vh;
|
|
84
|
+
}
|
|
85
|
+
</style>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { presentFatalError } from '../utils/presentAppError';
|
|
2
|
+
import { serializeCause } from '../utils/serializeCause';
|
|
3
|
+
import { logAppError } from '../utils/logAppError';
|
|
4
|
+
import { isUnauthorizedError } from '../utils/normalizeAppError';
|
|
5
|
+
import { toFormErrors } from '../utils/presentAppError';
|
|
6
|
+
|
|
7
|
+
export function presentPageError(error: unknown): void {
|
|
8
|
+
if (isUnauthorizedError(error)) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
presentFatalError(error, {
|
|
12
|
+
showError,
|
|
13
|
+
isDev: Boolean(import.meta.dev),
|
|
14
|
+
serializeCause,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function presentLocalError(error: unknown): ReturnType<typeof toFormErrors> {
|
|
19
|
+
logAppError(error, { isDev: Boolean(import.meta.dev) });
|
|
20
|
+
return toFormErrors(error);
|
|
21
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import type { NuxtError } from '#app';
|
|
3
|
+
import type { PropType } from '#imports';
|
|
4
|
+
import { DefaultButton } from 'r3ui-lib';
|
|
5
|
+
import { useI18n } from '#imports';
|
|
6
|
+
import { toErrorPageView } from './utils/presentAppError';
|
|
7
|
+
|
|
8
|
+
const { t } = useI18n();
|
|
9
|
+
|
|
10
|
+
const { error } = defineProps({
|
|
11
|
+
error: {
|
|
12
|
+
type: Object as PropType<NuxtError>,
|
|
13
|
+
required: true,
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
const view = computed(() => toErrorPageView(error));
|
|
18
|
+
|
|
19
|
+
const headingWord = computed(() => t('pages.error_404'));
|
|
20
|
+
|
|
21
|
+
const messageText = computed(() => {
|
|
22
|
+
if (view.value.statusCode === 404) {
|
|
23
|
+
return t('pages.page_not_found');
|
|
24
|
+
}
|
|
25
|
+
const pub = view.value.publicMessage;
|
|
26
|
+
if (pub && pub.includes(' ')) {
|
|
27
|
+
return pub;
|
|
28
|
+
}
|
|
29
|
+
if (pub && pub.includes('.')) {
|
|
30
|
+
const translated = t(pub);
|
|
31
|
+
if (translated !== pub) {
|
|
32
|
+
return translated;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return t(view.value.messageKey);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const goHome = async () => await clearError({ redirect: '/' });
|
|
39
|
+
|
|
40
|
+
const retry = () => {
|
|
41
|
+
window.location.reload();
|
|
42
|
+
};
|
|
43
|
+
</script>
|
|
44
|
+
|
|
45
|
+
<template>
|
|
46
|
+
<div class="error__wrapper">
|
|
47
|
+
<h1>{{ view.statusCode }} {{ headingWord }}</h1>
|
|
48
|
+
<div class="error__message">{{ messageText }}</div>
|
|
49
|
+
<div class="error__actions">
|
|
50
|
+
<DefaultButton
|
|
51
|
+
v-if="view.showRetry"
|
|
52
|
+
:label="t('pages.retry')"
|
|
53
|
+
@submit="retry"
|
|
54
|
+
/>
|
|
55
|
+
<DefaultButton :label="t('pages.go_home')" @submit="goHome" />
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</template>
|
|
59
|
+
|
|
60
|
+
<style scoped lang="scss">
|
|
61
|
+
.error__message {
|
|
62
|
+
color: var(--color-dark-gray);
|
|
63
|
+
text-align: center;
|
|
64
|
+
font-size: 20px;
|
|
65
|
+
font-weight: 400;
|
|
66
|
+
line-height: 26px;
|
|
67
|
+
margin-bottom: 16px;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.error__actions {
|
|
71
|
+
display: flex;
|
|
72
|
+
gap: 12px;
|
|
73
|
+
flex-wrap: wrap;
|
|
74
|
+
justify-content: center;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.error__wrapper {
|
|
78
|
+
display: flex;
|
|
79
|
+
flex-direction: column;
|
|
80
|
+
align-items: center;
|
|
81
|
+
justify-content: center;
|
|
82
|
+
gap: 16px;
|
|
83
|
+
min-height: 80vh;
|
|
84
|
+
}
|
|
85
|
+
</style>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { isIntentionalAbort } from '../utils/classifyTransport';
|
|
2
|
+
import { logAppError } from '../utils/logAppError';
|
|
3
|
+
|
|
4
|
+
export default defineNuxtPlugin((nuxtApp) => {
|
|
5
|
+
const isDev = Boolean(import.meta.dev);
|
|
6
|
+
|
|
7
|
+
const report = (error: unknown) => {
|
|
8
|
+
if (isIntentionalAbort(error)) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
logAppError(error, { isDev });
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
nuxtApp.hook('app:error', (error) => {
|
|
15
|
+
report(error);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
nuxtApp.hook('vue:error', (error) => {
|
|
19
|
+
report(error);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export function isIntentionalAbort(error: unknown): boolean {
|
|
2
|
+
if (!error || typeof error !== 'object') {
|
|
3
|
+
return false;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
return (error as { intentional?: unknown }).intentional === true;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function isAbortError(error: unknown): boolean {
|
|
10
|
+
if (!error || typeof error !== 'object') {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const rec = error as { name?: unknown; code?: unknown };
|
|
15
|
+
return rec.name === 'AbortError' || rec.code === 'ABORT_ERR';
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function isTimeoutError(error: unknown): boolean {
|
|
19
|
+
if (!error || typeof error !== 'object') {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const rec = error as { name?: unknown; code?: unknown; message?: unknown };
|
|
24
|
+
if (rec.name === 'TimeoutError' || rec.code === 'ETIMEDOUT' || rec.code === 'TIMEOUT') {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return typeof rec.message === 'string' && /\btimeout\b/i.test(rec.message);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function isNetworkError(error: unknown): boolean {
|
|
32
|
+
if (!error || typeof error !== 'object') {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const rec = error as { name?: unknown; code?: unknown; message?: unknown };
|
|
37
|
+
if (
|
|
38
|
+
rec.code === 'ECONNREFUSED' ||
|
|
39
|
+
rec.code === 'ENOTFOUND' ||
|
|
40
|
+
rec.code === 'ECONNRESET' ||
|
|
41
|
+
rec.code === 'ERR_NETWORK'
|
|
42
|
+
) {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (typeof rec.message !== 'string') {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return (
|
|
51
|
+
/failed to fetch/i.test(rec.message) ||
|
|
52
|
+
/network error/i.test(rec.message) ||
|
|
53
|
+
/load failed/i.test(rec.message) ||
|
|
54
|
+
rec.message === 'Network Error'
|
|
55
|
+
);
|
|
56
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export function cloneJson(value: unknown): unknown {
|
|
2
|
+
if (value === undefined) {
|
|
3
|
+
return undefined;
|
|
4
|
+
}
|
|
5
|
+
if (typeof value === 'string') {
|
|
6
|
+
const trimmed = value.trimStart();
|
|
7
|
+
if (trimmed.startsWith('<')) {
|
|
8
|
+
return '[html body omitted]';
|
|
9
|
+
}
|
|
10
|
+
return value.length > 500 ? `${value.slice(0, 500)}…` : value;
|
|
11
|
+
}
|
|
12
|
+
try {
|
|
13
|
+
return JSON.parse(JSON.stringify(value));
|
|
14
|
+
} catch {
|
|
15
|
+
return String(value);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { isHttpStatus } from './isHttpStatus';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Первый валидный HTTP 4xx/5xx: status, затем statusCode, затем nested cause.
|
|
5
|
+
*/
|
|
6
|
+
export function extractHttpStatus(
|
|
7
|
+
value: unknown,
|
|
8
|
+
seen: Set<unknown> = new Set()
|
|
9
|
+
): number | undefined {
|
|
10
|
+
if (value === null || value === undefined) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
if (typeof value === 'number') {
|
|
15
|
+
return isHttpStatus(value) ? value : undefined;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
if (typeof value !== 'object') {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (seen.has(value)) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
seen.add(value);
|
|
26
|
+
|
|
27
|
+
if (typeof Response !== 'undefined' && value instanceof Response) {
|
|
28
|
+
return isHttpStatus(value.status) ? value.status : undefined;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const rec = value as {
|
|
32
|
+
status?: unknown;
|
|
33
|
+
statusCode?: unknown;
|
|
34
|
+
cause?: unknown;
|
|
35
|
+
response?: unknown;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
if (isHttpStatus(rec.status)) {
|
|
39
|
+
return rec.status;
|
|
40
|
+
}
|
|
41
|
+
if (isHttpStatus(rec.statusCode)) {
|
|
42
|
+
return rec.statusCode;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const fromResponse = extractHttpStatus(rec.response, seen);
|
|
46
|
+
if (fromResponse !== undefined) {
|
|
47
|
+
return fromResponse;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return extractHttpStatus(rec.cause, seen);
|
|
51
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
type LaravelBody = {
|
|
2
|
+
message?: unknown;
|
|
3
|
+
errors?: unknown;
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
7
|
+
return (
|
|
8
|
+
typeof value === 'object' &&
|
|
9
|
+
value !== null &&
|
|
10
|
+
!Array.isArray(value) &&
|
|
11
|
+
!(value instanceof Error)
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function readLaravelBody(value: unknown): LaravelBody | undefined {
|
|
16
|
+
if (!isRecord(value)) {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const nestedData = value.data;
|
|
21
|
+
if (isRecord(nestedData) && ('message' in nestedData || 'errors' in nestedData)) {
|
|
22
|
+
return nestedData as LaravelBody;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// NuxtError/showError payload — не Laravel body.
|
|
26
|
+
if ('statusCode' in value || 'statusMessage' in value) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if ('message' in value || 'errors' in value) {
|
|
31
|
+
return value as LaravelBody;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function extractFieldErrors(
|
|
38
|
+
value: unknown
|
|
39
|
+
): Record<string, string[]> | undefined {
|
|
40
|
+
const body = readLaravelBody(value);
|
|
41
|
+
const errors = body?.errors;
|
|
42
|
+
if (!isRecord(errors)) {
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const result: Record<string, string[]> = {};
|
|
47
|
+
for (const [field, messages] of Object.entries(errors)) {
|
|
48
|
+
if (Array.isArray(messages) && messages.every((item) => typeof item === 'string')) {
|
|
49
|
+
result[field] = messages;
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
if (typeof messages === 'string' && messages.trim()) {
|
|
53
|
+
result[field] = [messages];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return Object.keys(result).length > 0 ? result : undefined;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export function extractPublicMessage(value: unknown): string | undefined {
|
|
61
|
+
const body = readLaravelBody(value);
|
|
62
|
+
if (typeof body?.message === 'string' && body.message.trim()) {
|
|
63
|
+
return body.message.trim();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const fields = extractFieldErrors(value);
|
|
67
|
+
if (!fields) {
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const first = Object.values(fields)[0]?.[0];
|
|
72
|
+
return typeof first === 'string' && first.trim() ? first.trim() : undefined;
|
|
73
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { REQUEST_ID_HEADERS } from './types';
|
|
2
|
+
|
|
3
|
+
function readHeader(
|
|
4
|
+
headers: unknown,
|
|
5
|
+
name: string
|
|
6
|
+
): string | undefined {
|
|
7
|
+
if (!headers || typeof headers !== 'object') {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
const rec = headers as {
|
|
12
|
+
get?: (key: string) => unknown;
|
|
13
|
+
[key: string]: unknown;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
if (typeof rec.get === 'function') {
|
|
17
|
+
const value = rec.get(name) ?? rec.get(name.toLowerCase());
|
|
18
|
+
return typeof value === 'string' && value.trim() ? value.trim() : undefined;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const direct = rec[name] ?? rec[name.toLowerCase()];
|
|
22
|
+
if (typeof direct === 'string' && direct.trim()) {
|
|
23
|
+
return direct.trim();
|
|
24
|
+
}
|
|
25
|
+
if (Array.isArray(direct) && typeof direct[0] === 'string' && direct[0].trim()) {
|
|
26
|
+
return direct[0].trim();
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export function extractRequestId(value: unknown): string | undefined {
|
|
33
|
+
if (!value || typeof value !== 'object') {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
const rec = value as {
|
|
38
|
+
headers?: unknown;
|
|
39
|
+
response?: { headers?: unknown };
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const sources = [rec.headers, rec.response?.headers];
|
|
43
|
+
for (const headers of sources) {
|
|
44
|
+
for (const name of REQUEST_ID_HEADERS) {
|
|
45
|
+
const id = readHeader(headers, name);
|
|
46
|
+
if (id) {
|
|
47
|
+
return id;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|