@ryuzaki13/react-foundation-lib 2.19.0 → 2.20.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/dist/error-report/diagnostics.d.ts.map +1 -1
- package/dist/error-report/drafts.d.ts.map +1 -1
- package/dist/error-report/errorReportStorage.d.ts +18 -0
- package/dist/error-report/errorReportStorage.d.ts.map +1 -0
- package/dist/error-report/index.d.ts +1 -0
- package/dist/error-report/index.d.ts.map +1 -1
- package/dist/error-report/index.js +552 -535
- package/dist/error-report/index.js.map +1 -1
- package/package.json +1 -1
- package/src/error-report/README.mdx +44 -5
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@ import { Meta } from "@storybook/addon-docs/blocks";
|
|
|
4
4
|
|
|
5
5
|
# Error Report
|
|
6
6
|
|
|
7
|
-
Модуль `@ryuzaki13/react-foundation-lib/error-report` собирает клиентскую диагностику ошибки в versioned bounded draft, временно хранит последние drafts в `sessionStorage` и предоставляет durable IndexedDB queue для отложенной доставки.
|
|
7
|
+
Модуль `@ryuzaki13/react-foundation-lib/error-report` собирает клиентскую диагностику ошибки в versioned bounded draft, по умолчанию временно хранит последние drafts в `sessionStorage` и предоставляет durable IndexedDB queue для отложенной доставки. Browser bootstrap может односторонне перевести capture/drafts в память документа.
|
|
8
8
|
|
|
9
9
|
Он умеет объединить:
|
|
10
10
|
|
|
@@ -36,6 +36,7 @@ import {
|
|
|
36
36
|
captureRuntimeErrorReport,
|
|
37
37
|
createErrorReportQueue,
|
|
38
38
|
createErrorInfo,
|
|
39
|
+
disableErrorReportBrowserStorage,
|
|
39
40
|
installErrorReportBrowserBreadcrumbs,
|
|
40
41
|
setErrorReportRuntimeErrorReporter,
|
|
41
42
|
setErrorReportCaptureOptions,
|
|
@@ -76,6 +77,44 @@ isErrorReportingEnabled({ isDev: false });
|
|
|
76
77
|
- в development capture-функции возвращают `undefined`;
|
|
77
78
|
- тест может явно передать `{ isDev: false }` только в эту функцию, но остальные capture-функции всё равно используют общий `__DEV__`.
|
|
78
79
|
|
|
80
|
+
## Документ без browser persistence
|
|
81
|
+
|
|
82
|
+
### `disableErrorReportBrowserStorage(): void`
|
|
83
|
+
|
|
84
|
+
```ts
|
|
85
|
+
// Browser bootstrap: до первого capture и запуска UI/error-report lifecycle.
|
|
86
|
+
disableErrorReportBrowserStorage();
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Вызов односторонне переводит **capture, drafts и persisted-query diagnostics**
|
|
90
|
+
текущего документа в память. Повторный вызов ничего не сбрасывает. Обратного
|
|
91
|
+
включения нет: документ с другим режимом приложение открывает заново.
|
|
92
|
+
`setErrorReportCaptureOptions`, регистрация reporter и их cleanup не меняют
|
|
93
|
+
эту политику. В SSR вызов ничего не делает и не переключает общий process state.
|
|
94
|
+
|
|
95
|
+
Сам импорт `/error-report` не читает browser storage. В обычном режиме первый
|
|
96
|
+
`getErrorReportDrafts`, `getErrorReportDraft`, `updateErrorReportDraft` или capture
|
|
97
|
+
лениво загружает прежние drafts; дальнейшие чтение и сохранение остаются прежними.
|
|
98
|
+
В memory-режиме последние 10 drafts и отдельный стабильный session ID живут
|
|
99
|
+
только в памяти документа. Уже загруженные обычные drafts не копируются туда,
|
|
100
|
+
а существующие записи в browser storage не удаляются.
|
|
101
|
+
|
|
102
|
+
Memory capture сохраняет прежний контракт: runtime/query/mutation возвращают
|
|
103
|
+
`Promise<ErrorReportDraft | undefined>`, прямой draft capture —
|
|
104
|
+
`ErrorReportDraft | undefined`. В production создаётся обычный draft в памяти;
|
|
105
|
+
SSR/dev по-прежнему не создают draft. Поэтому UI boundary может продолжать
|
|
106
|
+
использовать `.then` и report ID. Сбор QueryClient diagnostics из памяти остаётся
|
|
107
|
+
доступным; `collectPersistedQueryDiagnostics()` возвращает `[]` без открытия IDB.
|
|
108
|
+
|
|
109
|
+
Вызов не отменяет native I/O, начатый ранее. Однако его поздний persisted result
|
|
110
|
+
не попадёт в memory draft, а после отключения drafts больше не пишутся в browser
|
|
111
|
+
storage. Для строгого отсутствия чтений выбирать режим нужно в bootstrap.
|
|
112
|
+
|
|
113
|
+
**Durable queue независима.** `createErrorReportQueue()` — явный storage API;
|
|
114
|
+
эта функция его не переключает. Приложение отдельно исключает создание очереди,
|
|
115
|
+
enqueue и запуск delivery в документе без persistence. Вызов также не меняет
|
|
116
|
+
Query persistence, Service Worker, пользовательские черновики или transport.
|
|
117
|
+
|
|
79
118
|
## Compile-time константы
|
|
80
119
|
|
|
81
120
|
Потребитель должен определить:
|
|
@@ -430,7 +469,7 @@ type ErrorReportDraft = {
|
|
|
430
469
|
};
|
|
431
470
|
```
|
|
432
471
|
|
|
433
|
-
`reportId` — UUID отдельного отчёта. `sessionId` стабилен в текущем `sessionStorage
|
|
472
|
+
`reportId` — UUID отдельного отчёта. По умолчанию `sessionId` стабилен в текущем `sessionStorage`; после browser opt-out используется отдельный ID только в памяти документа. `createdUtc` формируется как OData datetime UTC.
|
|
434
473
|
|
|
435
474
|
Payload содержит category/source/error, build environment, client, location, viewport, breadcrumbs и optional секции query/mutation/react/context.
|
|
436
475
|
|
|
@@ -452,11 +491,11 @@ parseErrorReportDrafts(value);
|
|
|
452
491
|
|
|
453
492
|
### Хранение
|
|
454
493
|
|
|
455
|
-
|
|
494
|
+
По умолчанию versioned drafts сохраняются под ключом `${__APP_ID__}.errorReport.drafts.v2`. В одной вкладке остаются последние 10 элементов. Старые удаляются с начала массива. Предыдущая unversioned storage-форма не загружается. После browser opt-out тот же лимит применяется к отдельному memory store без чтения или удаления browser records.
|
|
456
495
|
|
|
457
496
|
Storage errors и некорректный JSON подавляются. При переполнении sessionStorage текущее in-memory состояние обновится, но запись на диск может не сохраниться.
|
|
458
497
|
|
|
459
|
-
|
|
498
|
+
Импорт не загружает drafts. В обычном режиме они читаются лениво при первом обращении к draft API, после чего модульное состояние разделяют consumers одного bundle. В memory-режиме чтения browser drafts нет.
|
|
460
499
|
|
|
461
500
|
## Durable IndexedDB queue
|
|
462
501
|
|
|
@@ -708,7 +747,7 @@ Foundation удаляет известные secret-like keys и email, но н
|
|
|
708
747
|
|
|
709
748
|
### Мутировать результат `getErrorReportDrafts()`
|
|
710
749
|
|
|
711
|
-
Используйте `updateErrorReportDraft`; прямое изменение обходит
|
|
750
|
+
Используйте `updateErrorReportDraft`; прямое изменение обходит валидацию lifecycle и выбранное хранилище drafts.
|
|
712
751
|
|
|
713
752
|
### Передавать `UseQueryResult` вместо cache Query
|
|
714
753
|
|