@application-kit/graphql 0.6.0 → 0.7.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 CHANGED
@@ -1,5 +1,15 @@
1
1
  # @application-kit/graphql
2
2
 
3
+ ## 0.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 06ce168: Клиентские части обработки ошибки запроса и кнопка темы переехали в пакеты.
8
+
9
+ `ui`: очередь страховочного тоста `globalErrorToast` и её подключение `useGlobalErrorToastConnection(translate)`, `withSupportId`, стор страницы ошибки `useErrorStore`, переключатель темы `LayoutTopbarThemeSwitcher`, встроенные иконки `moon` и `sun`. Колбэк `describeRequestError` у `UiVendorPlugin` получает третьим аргументом тексты пакета текущей локали. Ломающее: в `messages` обязательны `layout.topbar.toggleTheme` и группа `requestError` (`supportIdLine`, `title`, `unexpected`); у `LayoutTopbarIconButton` и `LayoutTopbarSubmenu` обязателен `label` — доступное имя кнопки; приложение убирает `moon` и `sun` из своего реестра иконок.
10
+
11
+ `graphql`: `createBusinessMessageKeyResolver` в `/client` — резолвер «ошибка запроса → ключ словаря» по таблице приложения, типизированной реестром кодов.
12
+
3
13
  ## 0.6.0
4
14
 
5
15
  ### Minor Changes
package/README.md CHANGED
@@ -56,6 +56,8 @@ declare module '@application-kit/graphql' {
56
56
  `HttpLink` как есть. `onError(error)` зовётся на каждую ошибку операции, кроме помеченных флагом
57
57
  `SKIP_GLOBAL_ERROR_TOAST` в контексте: их показывает сам вызывающий. Вызывающий получает ошибку в любом случае.
58
58
  - `requireApolloData(result)` — данные ответа query; `undefined` вместо них — ошибка транспорта.
59
+ - `createBusinessMessageKeyResolver(keyByCode)` — резолвер «ошибка запроса → ключ словаря». Таблица — приложения, тип `Record`
60
+ по реестру кодов: новый код без ключа не компилируется. Незнакомый код и ответ без кода дают `null`.
59
61
 
60
62
  ```ts
61
63
  export const apolloClient = createApolloClient({
@@ -0,0 +1,2 @@
1
+ import type { BusinessMessageCode } from '../contract/business-message-code.js';
2
+ export declare const createBusinessMessageKeyResolver: (keyByCode: Readonly<Record<BusinessMessageCode, string>>) => (error: unknown) => null | string;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBusinessMessageKeyResolver = void 0;
4
+ const message_code_from_error_js_1 = require("./message-code-from-error.js");
5
+ const createBusinessMessageKeyResolver = (keyByCode) => {
6
+ const keys = new Map(Object.entries(keyByCode));
7
+ return (error) => {
8
+ const code = (0, message_code_from_error_js_1.messageCodeFromError)(error);
9
+ return code === null ? null : keys.get(code) ?? null;
10
+ };
11
+ };
12
+ exports.createBusinessMessageKeyResolver = createBusinessMessageKeyResolver;
@@ -1,3 +1,4 @@
1
+ export * from './business-message-key-resolver.js';
1
2
  export * from './create-apollo-client.js';
2
3
  export * from './message-code-from-error.js';
3
4
  export * from './rejected-characters-from-error.js';
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./business-message-key-resolver.js"), exports);
17
18
  __exportStar(require("./create-apollo-client.js"), exports);
18
19
  __exportStar(require("./message-code-from-error.js"), exports);
19
20
  __exportStar(require("./rejected-characters-from-error.js"), exports);
@@ -0,0 +1,2 @@
1
+ import type { BusinessMessageCode } from '../contract/business-message-code.js';
2
+ export declare const createBusinessMessageKeyResolver: (keyByCode: Readonly<Record<BusinessMessageCode, string>>) => (error: unknown) => null | string;
@@ -0,0 +1,8 @@
1
+ import { messageCodeFromError } from './message-code-from-error.js';
2
+ export const createBusinessMessageKeyResolver = (keyByCode) => {
3
+ const keys = new Map(Object.entries(keyByCode));
4
+ return (error) => {
5
+ const code = messageCodeFromError(error);
6
+ return code === null ? null : keys.get(code) ?? null;
7
+ };
8
+ };
@@ -1,3 +1,4 @@
1
+ export * from './business-message-key-resolver.js';
1
2
  export * from './create-apollo-client.js';
2
3
  export * from './message-code-from-error.js';
3
4
  export * from './rejected-characters-from-error.js';
@@ -1,3 +1,4 @@
1
+ export * from './business-message-key-resolver.js';
1
2
  export * from './create-apollo-client.js';
2
3
  export * from './message-code-from-error.js';
3
4
  export * from './rejected-characters-from-error.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@application-kit/graphql",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "Контракт ошибок GraphQL (сервер и клиент) и типы курсорного листинга для NestJS",
5
5
  "keywords": [
6
6
  "apollo",