@ryuzaki13/react-foundation-lib 1.4.0 → 1.4.2
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/README.md +172 -114
- package/dist/chunks/{formatters-CBgrBeSA.js → formatters-D33Uh3si.js} +7 -8
- package/dist/chunks/{formatters-CBgrBeSA.js.map → formatters-D33Uh3si.js.map} +1 -1
- package/dist/chunks/odata-service-CWkHASdw.js +2211 -0
- package/dist/chunks/odata-service-CWkHASdw.js.map +1 -0
- package/dist/chunks/{validate-BW-7BZy_.js → validate-DyzojM0w.js} +2 -2
- package/dist/chunks/{validate-BW-7BZy_.js.map → validate-DyzojM0w.js.map} +1 -1
- package/dist/error-report/index.js +2 -2
- package/dist/excel/index.js +20 -21
- package/dist/excel/index.js.map +1 -1
- package/dist/formatters/index.js +4 -5
- package/dist/{odata → odata-service}/buildSeparatedArrays.d.ts +1 -1
- package/dist/odata-service/buildSeparatedArrays.d.ts.map +1 -0
- package/dist/{odata/types.d.ts → odata-service/collectionTypes.d.ts} +1 -1
- package/dist/odata-service/collectionTypes.d.ts.map +1 -0
- package/dist/{odata → odata-service}/dateUtils.d.ts +1 -1
- package/dist/odata-service/dateUtils.d.ts.map +1 -0
- package/dist/{odata → odata-service}/findCollectionPairs.d.ts +1 -1
- package/dist/odata-service/findCollectionPairs.d.ts.map +1 -0
- package/dist/odata-service/index.d.ts +5 -0
- package/dist/odata-service/index.d.ts.map +1 -1
- package/dist/odata-service/index.js +2 -2
- package/dist/{odata/store.d.ts → odata-service/odataCollectionStore.d.ts} +1 -1
- package/dist/odata-service/odataCollectionStore.d.ts.map +1 -0
- package/dist/query-client/index.js.map +1 -1
- package/dist/query-client/queryClient.d.ts +1 -3
- package/dist/query-client/queryClient.d.ts.map +1 -1
- package/package.json +1 -5
- package/src/array/README.mdx +1630 -0
- package/src/binary/README.mdx +1405 -0
- package/src/bounded-copy-stack/README.mdx +257 -0
- package/src/context-menu/README.mdx +326 -0
- package/src/copy/README.mdx +992 -0
- package/src/crypto/README.mdx +1052 -0
- package/src/currency/README.mdx +155 -0
- package/src/date-segments/README.mdx +319 -0
- package/src/dom/README.mdx +2179 -0
- package/src/error/README.mdx +95 -0
- package/src/error-report/README.mdx +612 -0
- package/src/excel/README.mdx +449 -0
- package/src/file/README.mdx +1957 -0
- package/src/fingerprint/README.mdx +100 -0
- package/src/form/README.mdx +101 -0
- package/src/formatters/README.mdx +469 -0
- package/src/formatters/boolean/README.mdx +494 -0
- package/src/formatters/date/README.mdx +732 -0
- package/src/formatters/number/README.mdx +542 -0
- package/src/formatters/pipeline/README.mdx +629 -0
- package/src/formatters/rowBased/README.mdx +486 -0
- package/src/formatters/strings/README.mdx +442 -0
- package/src/formatters/valueState/README.mdx +459 -0
- package/src/formulas/README.mdx +1283 -0
- package/src/foundationLib.mdx +70 -54
- package/src/hooks/README.mdx +988 -0
- package/src/http/README.mdx +126 -0
- package/src/media/README.mdx +1853 -0
- package/src/notifications/README.mdx +323 -0
- package/src/number-scale/README.mdx +318 -0
- package/src/odata-service/README.mdx +2916 -0
- package/src/presets/README.mdx +136 -0
- package/src/pwa/README.mdx +394 -0
- package/src/query-client/README.mdx +2500 -0
- package/src/range-output/README.mdx +161 -0
- package/src/seo/README.mdx +279 -0
- package/src/session-storage/README.mdx +125 -0
- package/src/string-comparison/README.mdx +96 -0
- package/src/table/README.mdx +3106 -0
- package/src/three-scene/README.mdx +248 -0
- package/src/types/README.mdx +172 -0
- package/src/utils/README.mdx +1724 -0
- package/src/validators/README.mdx +239 -0
- package/src/virtualizer/README.mdx +138 -0
- package/src/xml/README.mdx +149 -0
- package/dist/chunks/dateUtils-B5V5aXB-.js +0 -847
- package/dist/chunks/dateUtils-B5V5aXB-.js.map +0 -1
- package/dist/chunks/odata-service-B6TxBSLm.js +0 -1277
- package/dist/chunks/odata-service-B6TxBSLm.js.map +0 -1
- package/dist/odata/buildSeparatedArrays.d.ts.map +0 -1
- package/dist/odata/dateUtils.d.ts.map +0 -1
- package/dist/odata/findCollectionPairs.d.ts.map +0 -1
- package/dist/odata/index.d.ts +0 -6
- package/dist/odata/index.d.ts.map +0 -1
- package/dist/odata/index.js +0 -102
- package/dist/odata/index.js.map +0 -1
- package/dist/odata/store.d.ts.map +0 -1
- package/dist/odata/types.d.ts.map +0 -1
- package/src/binary/README.md +0 -110
- package/src/docs/browserAndReact.mdx +0 -150
- package/src/docs/filesAndExcel.mdx +0 -163
- package/src/docs/formatters-runtime.mdx +0 -455
- package/src/docs/formatters.mdx +0 -380
- package/src/docs/odataAndTables.mdx +0 -178
- package/src/docs/pureUtilities.mdx +0 -96
- package/src/docs/runtimeAndState.mdx +0 -155
- package/src/file/README.md +0 -289
- package/src/formatters/date/README.md +0 -520
- package/src/formatters/number/README.md +0 -123
- package/src/formatters/valueState/README.md +0 -275
- package/src/formulas/README.md +0 -42
- package/src/pwa/README.md +0 -638
- package/src/query-client/README.md +0 -565
package/README.md
CHANGED
|
@@ -27,19 +27,21 @@ import type { RowRecord } from "@ryuzaki13/react-foundation-lib/types";
|
|
|
27
27
|
|
|
28
28
|
Большинство внешних пакетов объявлены как optional peers. Это означает только то, что их не нужно ставить для каждого сценария. Если host использует entrypoint, который импортирует внешний пакет, совместимая peer-зависимость должна быть установлена в host-проекте.
|
|
29
29
|
|
|
30
|
-
| Entry point
|
|
31
|
-
|
|
|
32
|
-
| `formatters`, `array
|
|
33
|
-
| `hooks`, `dom`, `copy`, `media`, `pwa`
|
|
34
|
-
| `query-client`, `error-report`
|
|
35
|
-
| `odata-service`
|
|
36
|
-
| `
|
|
37
|
-
| `table`
|
|
38
|
-
| `virtualizer`
|
|
39
|
-
| `
|
|
40
|
-
| `hooks`
|
|
41
|
-
| `hooks`
|
|
42
|
-
| `
|
|
30
|
+
| Entry point | Что может потребоваться в host-проекте |
|
|
31
|
+
| --------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
32
|
+
| `formatters`, `array` | Обычно не требуют дополнительных runtime-зависимостей. |
|
|
33
|
+
| `utils`, `hooks`, `binary`, `dom`, `copy`, `media`, `pwa` | `react`: `utils` экспортирует React helpers, `binary` — `useBinaryFile`, остальные entrypoints содержат hooks. |
|
|
34
|
+
| `query-client`, `error-report` | `@tanstack/react-query`, `@tanstack/query-persist-client-core`, `@tanstack/query-broadcast-client-experimental`. |
|
|
35
|
+
| `odata-service` | `zod`, `zustand`, `immer`, `react`; `unwrapODataQueryResult` типизирован вокруг `@tanstack/react-query`. |
|
|
36
|
+
| `notifications` | `zustand`. |
|
|
37
|
+
| `table` | `@tanstack/react-table` и `react` для selection hooks. |
|
|
38
|
+
| `virtualizer` | `@tanstack/react-virtual` и `react`. |
|
|
39
|
+
| `three-scene` | `react`; hook также использует browser media APIs. |
|
|
40
|
+
| `hooks` search helpers | `@tanstack/react-router`. |
|
|
41
|
+
| `hooks` DnD helpers | `@dnd-kit/core`, `@dnd-kit/sortable`. |
|
|
42
|
+
| `hooks`, `validators` floating/listbox и DOM references | `@floating-ui/react`. |
|
|
43
|
+
| `excel` | `write-excel-file`. |
|
|
44
|
+
| `fingerprint` | `@fingerprintjs/fingerprintjs`. |
|
|
43
45
|
|
|
44
46
|
Такая схема оставляет пакет библиотечным: зависимости не зашиваются в bundle, а host-приложение контролирует версии React, TanStack, Zod и других runtime-библиотек.
|
|
45
47
|
|
|
@@ -66,6 +68,7 @@ npm run pack:dry-run
|
|
|
66
68
|
- [Peer-зависимости](#peer-зависимости)
|
|
67
69
|
- [Проверка пакета](#проверка-пакета)
|
|
68
70
|
- [Быстрый выбор модуля](#быстрый-выбор-модуля)
|
|
71
|
+
- [Полный каталог документации](#полный-каталог-документации)
|
|
69
72
|
- [Форматирование и значения](#форматирование-и-значения)
|
|
70
73
|
- [OData, таблицы и экспорт](#odata-таблицы-и-экспорт)
|
|
71
74
|
- [Browser, React hooks и UI-поведение](#browser-react-hooks-и-ui-поведение)
|
|
@@ -74,30 +77,79 @@ npm run pack:dry-run
|
|
|
74
77
|
|
|
75
78
|
## Быстрый выбор модуля
|
|
76
79
|
|
|
77
|
-
| Нужно
|
|
78
|
-
|
|
|
79
|
-
| Даты, диапазоны, ABAP/OData date literals
|
|
80
|
-
| Числа, проценты, валютные числа, compact axis labels
|
|
81
|
-
| Строки, ФИО, телефон, leading zeros, SAP boolean
|
|
82
|
-
| Runtime-форматирование ячеек таблицы
|
|
83
|
-
|
|
|
84
|
-
|
|
|
85
|
-
| TanStack Table helpers
|
|
86
|
-
| Tree table преобразования
|
|
87
|
-
| Excel export
|
|
88
|
-
| FileReader, изображения, base64 Blob
|
|
89
|
-
| DOM overlay, portal, focus, download
|
|
90
|
-
| Debounce/throttle, DnD sensors, search params, listbox
|
|
91
|
-
|
|
|
92
|
-
|
|
|
93
|
-
|
|
|
94
|
-
|
|
|
80
|
+
| Нужно | Идти сюда |
|
|
81
|
+
| --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
82
|
+
| Даты, диапазоны, ABAP/OData date literals | [`formatters/date`](./src/formatters/date/index.ts), тесты: [`formatDate.test.ts`](./src/formatters/date/formatDate.test.ts), [`dateRange.test.ts`](./src/formatters/date/dateRange.test.ts) |
|
|
83
|
+
| Числа, проценты, валютные числа, compact axis labels | [`formatters/number`](./src/formatters/number/index.ts), тесты: [`formatNumber.test.ts`](./src/formatters/number/formatNumber.test.ts), [`parseNumber.test.ts`](./src/formatters/number/parseNumber.test.ts) |
|
|
84
|
+
| Строки, ФИО, телефон, leading zeros, SAP boolean | [`formatters`](./src/formatters/index.ts), тесты: [`common.test.ts`](./src/formatters/common.test.ts), [`boolean.test.ts`](./src/formatters/boolean/boolean.test.ts), [`strings.test.ts`](./src/formatters/strings/strings.test.ts) |
|
|
85
|
+
| Runtime-форматирование ячеек таблицы | [`formatters/pipeline`](./src/formatters/pipeline/index.ts), тесты в [`formatters/pipeline`](./src/formatters/pipeline) |
|
|
86
|
+
| Группировка, дедупликация, порядок и нормализация массивов | [`array`](./src/array/index.ts), подробный README: [`array/README.mdx`](./src/array/README.mdx) |
|
|
87
|
+
| OData metadata, values, path, filters, sorts, code/text collections и store | [`odata-service`](./src/odata-service/index.ts), подробный README: [`odata-service/README.mdx`](./src/odata-service/README.mdx), тесты в [`odata-service`](./src/odata-service) |
|
|
88
|
+
| TanStack Table helpers | [`table`](./src/table/index.ts), единый подробный справочник: [`table/README.mdx`](./src/table/README.mdx), тесты в [`table`](./src/table) |
|
|
89
|
+
| Tree table преобразования | [`tree-table`](./src/tree-table/index.ts), документация в общем справочнике [`table/README.mdx`](./src/table/README.mdx), тесты в [`tree-table`](./src/tree-table) |
|
|
90
|
+
| Excel export | [`excel`](./src/excel/index.ts), подробный README: [`excel/README.mdx`](./src/excel/README.mdx), тесты: [`excel.test.ts`](./src/excel/excel.test.ts), [`tableExport.test.ts`](./src/excel/tableExport.test.ts) |
|
|
91
|
+
| FileReader, изображения, base64 Blob | [`file`](./src/file/index.ts), [`binary`](./src/binary/index.ts) |
|
|
92
|
+
| DOM overlay, portal, focus, download | [`dom`](./src/dom/index.ts), тест: [`dom.test.tsx`](./src/dom/dom.test.tsx) |
|
|
93
|
+
| Debounce/throttle, DnD sensors, search params, listbox | [`hooks`](./src/hooks/index.ts), подробный README: [`hooks/README.mdx`](./src/hooks/README.mdx), [`utils/keyboard.ts`](./src/utils/keyboard.ts) |
|
|
94
|
+
| Breakpoints, media queries и responsive props | [`media`](./src/media/index.ts), подробный README: [`media/README.mdx`](./src/media/README.mdx), тест: [`media.test.ts`](./src/media/media.test.ts) |
|
|
95
|
+
| QueryClient, persistence, broadcast | [`query-client`](./src/query-client/index.ts), подробный README: [`query-client/README.mdx`](./src/query-client/README.mdx) |
|
|
96
|
+
| PWA service worker update и `x-sw-cache` policy | [`pwa`](./src/pwa/index.ts), подробный README: [`pwa/README.mdx`](./src/pwa/README.mdx) |
|
|
97
|
+
| Подстановки открытых границ диапазона | [`range-output`](./src/range-output/index.ts), подробный README: [`range-output/README.mdx`](./src/range-output/README.mdx), тест: [`rangeOutput.test.ts`](./src/range-output/rangeOutput.test.ts) |
|
|
98
|
+
| Unknown guards, className, stable stringify, clone | [`validators`](./src/validators/index.ts), [`utils`](./src/utils/index.ts), подробные README: [`validators`](./src/validators/README.mdx), [`utils`](./src/utils/README.mdx) |
|
|
99
|
+
|
|
100
|
+
## Полный каталог документации
|
|
101
|
+
|
|
102
|
+
Каждый публичный subpath из `package.json#exports` покрыт русскоязычным MDX-руководством. Документы `tree-table` и `pwa/sw-cache-policy` намеренно объединены с ближайшим владельцем, чтобы правила одного сценария не расходились между файлами.
|
|
103
|
+
|
|
104
|
+
| Публичный import path | Подробная документация |
|
|
105
|
+
| ---------------------- | ------------------------------------------------------------------------------ |
|
|
106
|
+
| `/array` | [`array/README.mdx`](./src/array/README.mdx) |
|
|
107
|
+
| `/binary` | [`binary/README.mdx`](./src/binary/README.mdx) |
|
|
108
|
+
| `/bounded-copy-stack` | [`bounded-copy-stack/README.mdx`](./src/bounded-copy-stack/README.mdx) |
|
|
109
|
+
| `/context-menu` | [`context-menu/README.mdx`](./src/context-menu/README.mdx) |
|
|
110
|
+
| `/copy` | [`copy/README.mdx`](./src/copy/README.mdx) |
|
|
111
|
+
| `/crypto` | [`crypto/README.mdx`](./src/crypto/README.mdx) |
|
|
112
|
+
| `/currency` | [`currency/README.mdx`](./src/currency/README.mdx) |
|
|
113
|
+
| `/date-segments` | [`date-segments/README.mdx`](./src/date-segments/README.mdx) |
|
|
114
|
+
| `/dom` | [`dom/README.mdx`](./src/dom/README.mdx) |
|
|
115
|
+
| `/error` | [`error/README.mdx`](./src/error/README.mdx) |
|
|
116
|
+
| `/error-report` | [`error-report/README.mdx`](./src/error-report/README.mdx) |
|
|
117
|
+
| `/excel` | [`excel/README.mdx`](./src/excel/README.mdx) |
|
|
118
|
+
| `/file` | [`file/README.mdx`](./src/file/README.mdx) |
|
|
119
|
+
| `/fingerprint` | [`fingerprint/README.mdx`](./src/fingerprint/README.mdx) |
|
|
120
|
+
| `/form` | [`form/README.mdx`](./src/form/README.mdx) |
|
|
121
|
+
| `/formatters` | [`formatters/README.mdx`](./src/formatters/README.mdx) и его предметные README |
|
|
122
|
+
| `/formulas` | [`formulas/README.mdx`](./src/formulas/README.mdx) |
|
|
123
|
+
| `/hooks` | [`hooks/README.mdx`](./src/hooks/README.mdx) |
|
|
124
|
+
| `/http` | [`http/README.mdx`](./src/http/README.mdx) |
|
|
125
|
+
| `/media` | [`media/README.mdx`](./src/media/README.mdx) |
|
|
126
|
+
| `/notifications` | [`notifications/README.mdx`](./src/notifications/README.mdx) |
|
|
127
|
+
| `/number-scale` | [`number-scale/README.mdx`](./src/number-scale/README.mdx) |
|
|
128
|
+
| `/odata-service` | [`odata-service/README.mdx`](./src/odata-service/README.mdx) |
|
|
129
|
+
| `/presets` | [`presets/README.mdx`](./src/presets/README.mdx) |
|
|
130
|
+
| `/pwa` | [`pwa/README.mdx`](./src/pwa/README.mdx) |
|
|
131
|
+
| `/pwa/sw-cache-policy` | Раздел cache policy в [`pwa/README.mdx`](./src/pwa/README.mdx) |
|
|
132
|
+
| `/query-client` | [`query-client/README.mdx`](./src/query-client/README.mdx) |
|
|
133
|
+
| `/range-output` | [`range-output/README.mdx`](./src/range-output/README.mdx) |
|
|
134
|
+
| `/seo` | [`seo/README.mdx`](./src/seo/README.mdx) |
|
|
135
|
+
| `/session-storage` | [`session-storage/README.mdx`](./src/session-storage/README.mdx) |
|
|
136
|
+
| `/string-comparison` | [`string-comparison/README.mdx`](./src/string-comparison/README.mdx) |
|
|
137
|
+
| `/table` | [`table/README.mdx`](./src/table/README.mdx) |
|
|
138
|
+
| `/three-scene` | [`three-scene/README.mdx`](./src/three-scene/README.mdx) |
|
|
139
|
+
| `/tree-table` | Раздел tree-table в [`table/README.mdx`](./src/table/README.mdx) |
|
|
140
|
+
| `/types` | [`types/README.mdx`](./src/types/README.mdx) |
|
|
141
|
+
| `/utils` | [`utils/README.mdx`](./src/utils/README.mdx) |
|
|
142
|
+
| `/validators` | [`validators/README.mdx`](./src/validators/README.mdx) |
|
|
143
|
+
| `/virtualizer` | [`virtualizer/README.mdx`](./src/virtualizer/README.mdx) |
|
|
144
|
+
| `/xml` | [`xml/README.mdx`](./src/xml/README.mdx) |
|
|
95
145
|
|
|
96
146
|
## Форматирование и значения
|
|
97
147
|
|
|
148
|
+
Полный пользовательский путеводитель находится в [`formatters/README.mdx`](./src/formatters/README.mdx). Он объясняет общие правила, публичную границу единственного entrypoint `@ryuzaki13/react-foundation-lib/formatters` и ведёт к подробным документам каждой предметной области. Разделы ниже дают только краткую карту пакета и не заменяют API-документацию.
|
|
149
|
+
|
|
98
150
|
### `formatters/date`
|
|
99
151
|
|
|
100
|
-
Файлы: [`formatters/date/index.ts`](./src/formatters/date/index.ts), подробный README: [`formatters/date/README.
|
|
152
|
+
Файлы: [`formatters/date/index.ts`](./src/formatters/date/index.ts), подробный README: [`formatters/date/README.mdx`](./src/formatters/date/README.mdx).
|
|
101
153
|
|
|
102
154
|
Главная идея: модуль работает в плавающей календарной семантике. ISO/OData строки с timezone не пересчитываются в timezone клиента, а сохраняют видимые компоненты даты и времени.
|
|
103
155
|
|
|
@@ -125,7 +177,7 @@ npm run pack:dry-run
|
|
|
125
177
|
|
|
126
178
|
### `formatters/number`
|
|
127
179
|
|
|
128
|
-
Файлы: [`formatters/number/index.ts`](./src/formatters/number/index.ts), README: [`formatters/number/README.
|
|
180
|
+
Файлы: [`formatters/number/index.ts`](./src/formatters/number/index.ts), README: [`formatters/number/README.mdx`](./src/formatters/number/README.mdx).
|
|
129
181
|
|
|
130
182
|
Модуль форматирует числа через presets и кеширует `Intl.NumberFormat`. Это стандартный путь для таблиц, графиков и SAP-like строк.
|
|
131
183
|
|
|
@@ -136,7 +188,7 @@ npm run pack:dry-run
|
|
|
136
188
|
| `formatNumber(value, presetOrName)` | Универсальный formatter по имени preset или объекту preset. |
|
|
137
189
|
| `formatNumberAsInteger`, `formatNumberAsDecimal*`, `formatNumberAsCurrency`, `formatNumberAsPercent`, `formatNumberAsPrice`, `formatNumberAsTonnage` | Типовые UI-форматы. |
|
|
138
190
|
| `formatNumberAs*OrEmpty` | То же, но semantic zero отображается пустой строкой. |
|
|
139
|
-
|
|
|
191
|
+
| Встроенные `compact-*` presets и собственный `NumberFormatPreset.compact` | Compact-формат с `тыс`, `млн`, `млрд`, `трлн`. |
|
|
140
192
|
| `parseNumber`, `toFiniteNumber`, `toPositiveInteger`, `isPositiveValue`, `isZeroValue` | Чтение SAP-like чисел из `unknown`. |
|
|
141
193
|
| `registerNumberPreset`, `getNumberPreset`, `getNumberPresetNames`, `resetNumberPresets`, `clearFormatCache` | Реестр presets и кеш formatter-ов. |
|
|
142
194
|
|
|
@@ -152,7 +204,7 @@ npm run pack:dry-run
|
|
|
152
204
|
|
|
153
205
|
### `formatters/strings`
|
|
154
206
|
|
|
155
|
-
Файлы: [`formatters/strings/index.ts`](./src/formatters/strings/index.ts).
|
|
207
|
+
Файлы: [`formatters/strings/index.ts`](./src/formatters/strings/index.ts), подробный README: [`formatters/strings/README.mdx`](./src/formatters/strings/README.mdx).
|
|
156
208
|
|
|
157
209
|
| API | Поведение |
|
|
158
210
|
| ---------------------------------------------------- | --------------------------------------------------------------- |
|
|
@@ -182,7 +234,7 @@ npm run pack:dry-run
|
|
|
182
234
|
|
|
183
235
|
### `formatters/boolean`
|
|
184
236
|
|
|
185
|
-
Файлы: [`formatters/boolean/index.ts`](./src/formatters/boolean/index.ts), тест: [`boolean.test.ts`](./src/formatters/boolean/boolean.test.ts).
|
|
237
|
+
Файлы: [`formatters/boolean/index.ts`](./src/formatters/boolean/index.ts), подробный README: [`formatters/boolean/README.mdx`](./src/formatters/boolean/README.mdx), тест: [`boolean.test.ts`](./src/formatters/boolean/boolean.test.ts).
|
|
186
238
|
|
|
187
239
|
| API | Поведение |
|
|
188
240
|
| ------------------ | ------------------------------------------------------------- |
|
|
@@ -192,7 +244,7 @@ npm run pack:dry-run
|
|
|
192
244
|
|
|
193
245
|
### `formatters/valueState`
|
|
194
246
|
|
|
195
|
-
Файлы: [`formatters/valueState/index.ts`](./src/formatters/valueState/index.ts), README: [`formatters/valueState/README.
|
|
247
|
+
Файлы: [`formatters/valueState/index.ts`](./src/formatters/valueState/index.ts), README: [`formatters/valueState/README.mdx`](./src/formatters/valueState/README.mdx).
|
|
196
248
|
|
|
197
249
|
Модуль вычисляет визуальный `State` (`none`, `information`, `success`, `warning`, `error`) по значению.
|
|
198
250
|
|
|
@@ -210,7 +262,7 @@ npm run pack:dry-run
|
|
|
210
262
|
|
|
211
263
|
### `formatters/pipeline`
|
|
212
264
|
|
|
213
|
-
Файлы: [`formatters/pipeline/index.ts`](./src/formatters/pipeline/index.ts).
|
|
265
|
+
Файлы: [`formatters/pipeline/index.ts`](./src/formatters/pipeline/index.ts), подробный README: [`formatters/pipeline/README.mdx`](./src/formatters/pipeline/README.mdx).
|
|
214
266
|
|
|
215
267
|
Pipeline — runtime форматирования ячейки. Он принимает сериализуемый `FormattersPipelineConfig` версии `1`, валидирует `plan` или строит линейный plan из `graph`, компилирует executor и возвращает display-result.
|
|
216
268
|
|
|
@@ -249,7 +301,7 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
249
301
|
|
|
250
302
|
### `formatters/rowBased`
|
|
251
303
|
|
|
252
|
-
Файлы: [`formatters/rowBased/index.ts`](./src/formatters/rowBased/index.ts), тест: [`rowBased.test.ts`](./src/formatters/rowBased/rowBased.test.ts).
|
|
304
|
+
Файлы: [`formatters/rowBased/index.ts`](./src/formatters/rowBased/index.ts), подробный README: [`formatters/rowBased/README.mdx`](./src/formatters/rowBased/README.mdx), тест: [`rowBased.test.ts`](./src/formatters/rowBased/rowBased.test.ts).
|
|
253
305
|
|
|
254
306
|
Это маленький реестр формул для row-based override внутри pipeline.
|
|
255
307
|
|
|
@@ -264,7 +316,7 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
264
316
|
|
|
265
317
|
### `formulas`
|
|
266
318
|
|
|
267
|
-
Файлы: [`formulas/index.ts`](./src/formulas/index.ts), README: [`formulas/README.
|
|
319
|
+
Файлы: [`formulas/index.ts`](./src/formulas/index.ts), подробный README: [`formulas/README.mdx`](./src/formulas/README.mdx).
|
|
268
320
|
|
|
269
321
|
Инфраструктура реестра клиентских формул таблицы для calculated/clientOnly measure-колонок. Definitions принадлежат host-приложению и не входят в foundation-пакет.
|
|
270
322
|
|
|
@@ -274,8 +326,8 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
274
326
|
| `compileTableFormula` | Компилирует formulaId + keys в executor; не кидает runtime errors наружу. |
|
|
275
327
|
| `executeTableFormula` | Разовый запуск формулы. |
|
|
276
328
|
| `createTableFormulaRegistry` | Нормализует definitions и запрещает дубли. |
|
|
277
|
-
| `configureTableFormulaRegistry` | Устанавливает созданный host-приложением реестр до первого runtime-вызова.
|
|
278
|
-
| `getTableFormulaList`, `getTableFormulaById` | Доступ к активному реестру host-приложения.
|
|
329
|
+
| `configureTableFormulaRegistry` | Устанавливает созданный host-приложением реестр до первого runtime-вызова. |
|
|
330
|
+
| `getTableFormulaList`, `getTableFormulaById` | Доступ к активному реестру host-приложения. |
|
|
279
331
|
| `validateTableFormulaDependencies` | Проверяет наличие formula, доступность dependencies, out-of-range и unused dependencies. |
|
|
280
332
|
|
|
281
333
|
Поведение из тестов: невалидный результат формулы дает `invalid_result`, runtime exception дает `runtime_error`, отсутствующая формула дает `formula_not_found`.
|
|
@@ -284,7 +336,7 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
284
336
|
|
|
285
337
|
### `date-segments`
|
|
286
338
|
|
|
287
|
-
Файл: [`date-segments/index.ts`](./src/date-segments/index.ts), тест: [`mask.test.ts`](./src/date-segments/mask.test.ts).
|
|
339
|
+
Файл: [`date-segments/index.ts`](./src/date-segments/index.ts), подробный README: [`date-segments/README.mdx`](./src/date-segments/README.mdx), тест: [`mask.test.ts`](./src/date-segments/mask.test.ts).
|
|
288
340
|
|
|
289
341
|
Утилиты для segmented date input.
|
|
290
342
|
|
|
@@ -298,7 +350,7 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
298
350
|
|
|
299
351
|
### `number-scale`
|
|
300
352
|
|
|
301
|
-
Файлы: [`number-scale/index.ts`](./src/number-scale/index.ts), тест: [`numberScale.test.ts`](./src/number-scale/numberScale.test.ts).
|
|
353
|
+
Файлы: [`number-scale/index.ts`](./src/number-scale/index.ts), подробный README: [`number-scale/README.mdx`](./src/number-scale/README.mdx), тест: [`numberScale.test.ts`](./src/number-scale/numberScale.test.ts).
|
|
302
354
|
|
|
303
355
|
Математика числовых слайдеров и шкал.
|
|
304
356
|
|
|
@@ -314,7 +366,7 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
314
366
|
|
|
315
367
|
### `currency`
|
|
316
368
|
|
|
317
|
-
Файл: [`currency/currency.ts`](./src/currency/currency.ts), тест: [`currency.test.ts`](./src/currency/currency.test.ts).
|
|
369
|
+
Файл: [`currency/currency.ts`](./src/currency/currency.ts), подробный README: [`currency/README.mdx`](./src/currency/README.mdx), тест: [`currency.test.ts`](./src/currency/currency.test.ts).
|
|
318
370
|
|
|
319
371
|
| API | Поведение |
|
|
320
372
|
| ---------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
|
|
@@ -327,7 +379,9 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
327
379
|
|
|
328
380
|
### `odata-service`
|
|
329
381
|
|
|
330
|
-
Файл: [`odata-service/index.ts`](./src/odata-service/index.ts). Это
|
|
382
|
+
Файл: [`odata-service/index.ts`](./src/odata-service/index.ts), подробный справочник: [`odata-service/README.mdx`](./src/odata-service/README.mdx). Это единый entrypoint metadata/value/path/filter/sort helpers, code/text collections и общих настроек OData-справочников. Transport и fetch лежат в пакете `@ryuzaki13/react-foundation-api/odata`.
|
|
383
|
+
|
|
384
|
+
Прежний subpath `@ryuzaki13/react-foundation-lib/odata` удалён без compatibility alias. Его API перенесён в `@ryuzaki13/react-foundation-lib/odata-service`.
|
|
331
385
|
|
|
332
386
|
#### Metadata и path
|
|
333
387
|
|
|
@@ -381,6 +435,17 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
381
435
|
|
|
382
436
|
Тесты: [`filters.test.ts`](./src/odata-service/filters.test.ts), [`filterDefinitions.test.ts`](./src/odata-service/filterDefinitions.test.ts), [`sorts.ts`](./src/odata-service/sorts.ts), [`sqlFilters.test.ts`](./src/odata-service/sqlFilters.test.ts).
|
|
383
437
|
|
|
438
|
+
#### Справочные коллекции и store
|
|
439
|
+
|
|
440
|
+
| API | Поведение |
|
|
441
|
+
| -------------------------------------------------- | ------------------------------------------------------------------------------ |
|
|
442
|
+
| `findCollectionPairs` | Ищет пары `code` + `*_txt/_text/_t`, поддерживает custom suffixes. |
|
|
443
|
+
| `buildSeparatedArrays` | Строит отдельные code/text массивы для каждой пары, дедуплицирует и сортирует. |
|
|
444
|
+
| `ODataDateFormat` | Форматирует `Date` в `datetime'...'`, `datetimeoffset'...'`, `time'...'`. |
|
|
445
|
+
| `useODataCollectionStore`, `odataCollectionConfig` | Zustand-store общих defaults: visible limit, search thresholds и debounce. |
|
|
446
|
+
|
|
447
|
+
Тест: [`collection.test.ts`](./src/odata-service/collection.test.ts).
|
|
448
|
+
|
|
384
449
|
### `range-output`
|
|
385
450
|
|
|
386
451
|
Файлы: [`range-output/index.ts`](./src/range-output/index.ts), тест: [`rangeOutput.test.ts`](./src/range-output/rangeOutput.test.ts).
|
|
@@ -390,20 +455,9 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
390
455
|
| `readRangeOutputValueFallback` | Читает сериализуемые подстановки `start/end` из объекта с `outputValueFallback` через переданный парсер. |
|
|
391
456
|
| `resolveRangeOutputValue` | Заменяет `null` в открытых границах диапазона на заданные подстановочные значения для внешней передачи. |
|
|
392
457
|
|
|
393
|
-
### `odata`
|
|
394
|
-
|
|
395
|
-
Файлы: [`odata/index.ts`](./src/odata/index.ts), тест: [`odata.test.ts`](./src/odata/odata.test.ts).
|
|
396
|
-
|
|
397
|
-
| API | Поведение |
|
|
398
|
-
| -------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
|
|
399
|
-
| `buildSeparatedArrays` | Из одной коллекции строит отдельные массивы code/text для каждой пары, дедуплицирует и сортирует. |
|
|
400
|
-
| `findCollectionPairs` | Ищет пары `code` + `*_txt/_text/_t`, поддерживает custom suffixes. |
|
|
401
|
-
| `ODataDateFormat` | Форматирует `Date` в `datetime'...'`, `datetimeoffset'...'`, `time'...'`. |
|
|
402
|
-
| `useODataCollectionStore`, `odataCollectionConfig` | Zustand-store настроек коллекции: pagination, search, selected, dependent filters. |
|
|
403
|
-
|
|
404
458
|
### `table`
|
|
405
459
|
|
|
406
|
-
Файлы: [`table/index.ts`](./src/table/index.ts), тесты в [`table`](./src/table).
|
|
460
|
+
Файлы: [`table/index.ts`](./src/table/index.ts), единый подробный справочник для `table` и `tree-table`: [`table/README.mdx`](./src/table/README.mdx), тесты в [`table`](./src/table).
|
|
407
461
|
|
|
408
462
|
| API | Поведение |
|
|
409
463
|
| ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ |
|
|
@@ -414,8 +468,8 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
414
468
|
| `normalizeTableColumnWidth`, `normalizeTableColumnSizing`, `patchTableColumnWidth`, `removeTableColumnWidth` | Column sizing с min width, default `60`. |
|
|
415
469
|
| `pruneTableRowSelection`, `toggleTableRowSelection` | `none`, `single`, `multi`; single не снимается повторным кликом. |
|
|
416
470
|
| `useTableRowSelection` | Hook поверх selection helpers. |
|
|
417
|
-
| `pruneTableCellSelection`, `toggleTableCellSelection` | Детерминированный выбор координат `rowId + columnId`.
|
|
418
|
-
| `shouldActivateTableCellSelection` | Direct либо безопасная активация по Ctrl/Command без Shift/Alt.
|
|
471
|
+
| `pruneTableCellSelection`, `toggleTableCellSelection` | Детерминированный выбор координат `rowId + columnId`. |
|
|
472
|
+
| `shouldActivateTableCellSelection` | Direct либо безопасная активация по Ctrl/Command без Shift/Alt. |
|
|
419
473
|
| `resolveTableColumnFormattingContextFromODataColumn` | OData column -> pipeline context; numeric types force measure. |
|
|
420
474
|
| `createTableColumnVisibilityFromODataMetadata` | Стартовая visibility; code скрывается, если есть text-пара. |
|
|
421
475
|
| `createTableColumnsFromODataMetadata` | Генерация TanStack columns из metadata. |
|
|
@@ -427,7 +481,7 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
427
481
|
|
|
428
482
|
### `tree-table`
|
|
429
483
|
|
|
430
|
-
Файлы: [`tree-table/index.ts`](./src/tree-table/index.ts).
|
|
484
|
+
Файлы: [`tree-table/index.ts`](./src/tree-table/index.ts), документация включена в единый справочник [`table/README.mdx`](./src/table/README.mdx).
|
|
431
485
|
|
|
432
486
|
| API | Поведение |
|
|
433
487
|
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
|
|
@@ -439,7 +493,7 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
439
493
|
|
|
440
494
|
### `excel`
|
|
441
495
|
|
|
442
|
-
Файлы: [`excel/index.ts`](./src/excel/index.ts).
|
|
496
|
+
Файлы: [`excel/index.ts`](./src/excel/index.ts), подробный README: [`excel/README.mdx`](./src/excel/README.mdx).
|
|
443
497
|
|
|
444
498
|
| API | Поведение |
|
|
445
499
|
| -------------------------------- | --------------------------------------------------------------------- |
|
|
@@ -455,7 +509,7 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
455
509
|
|
|
456
510
|
### `file` и `binary`
|
|
457
511
|
|
|
458
|
-
Файлы: [`file/index.ts`](./src/file/index.ts), README: [`file/README.
|
|
512
|
+
Файлы: [`file/index.ts`](./src/file/index.ts), подробный README: [`file/README.mdx`](./src/file/README.mdx); [`binary/index.ts`](./src/binary/index.ts), README: [`binary/README.mdx`](./src/binary/README.mdx).
|
|
459
513
|
|
|
460
514
|
`file`:
|
|
461
515
|
|
|
@@ -479,7 +533,7 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
479
533
|
|
|
480
534
|
### `xml`
|
|
481
535
|
|
|
482
|
-
Файл: [`xml/xml.ts`](./src/xml/xml.ts), тест: [`xml.test.ts`](./src/xml/xml.test.ts).
|
|
536
|
+
Файл: [`xml/xml.ts`](./src/xml/xml.ts), подробный README: [`xml/README.mdx`](./src/xml/README.mdx), тест: [`xml.test.ts`](./src/xml/xml.test.ts).
|
|
483
537
|
|
|
484
538
|
| API | Поведение |
|
|
485
539
|
| ---------------- | ----------------------------------------------------- |
|
|
@@ -491,7 +545,7 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
491
545
|
|
|
492
546
|
### `dom`
|
|
493
547
|
|
|
494
|
-
Файлы: [`dom/index.ts`](./src/dom/index.ts), тест: [`dom.test.tsx`](./src/dom/dom.test.tsx).
|
|
548
|
+
Файлы: [`dom/index.ts`](./src/dom/index.ts), подробный README: [`dom/README.mdx`](./src/dom/README.mdx), тест: [`dom.test.tsx`](./src/dom/dom.test.tsx).
|
|
495
549
|
|
|
496
550
|
| API | Поведение |
|
|
497
551
|
| --------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
|
|
@@ -507,7 +561,7 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
507
561
|
|
|
508
562
|
### `hooks`
|
|
509
563
|
|
|
510
|
-
Файлы: [`hooks/index.ts`](./src/hooks/index.ts).
|
|
564
|
+
Файлы: [`hooks/index.ts`](./src/hooks/index.ts), подробный README: [`hooks/README.mdx`](./src/hooks/README.mdx).
|
|
511
565
|
|
|
512
566
|
| API | Поведение |
|
|
513
567
|
| ----------------------- | -------------------------------------------------------------------------------------------- |
|
|
@@ -524,31 +578,32 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
524
578
|
|
|
525
579
|
### `copy`
|
|
526
580
|
|
|
527
|
-
Файлы: [`copy/index.ts`](./src/copy/index.ts).
|
|
581
|
+
Файлы: [`copy/index.ts`](./src/copy/index.ts), подробный README: [`copy/README.mdx`](./src/copy/README.mdx).
|
|
528
582
|
|
|
529
583
|
| API | Поведение |
|
|
530
584
|
| -------------------------------- | --------------------------------------------------------------------------------------- |
|
|
531
585
|
| `useCopyText` | Clipboard API в secure context, fallback через `execCommand`; пустой текст не копирует. |
|
|
532
586
|
| `useElementText` | Trimmed `textContent` ref. |
|
|
533
587
|
| `useCopyElementText` | Копирует текст из ref. |
|
|
534
|
-
| `useCopyFeedback` | `isCopied` на 2
|
|
588
|
+
| `useCopyFeedback` | `isCopied` на 2 секунды; повторные вызовы создают независимые timers. |
|
|
535
589
|
| `useCopyElementTextWithFeedback` | Копирование элемента + feedback. |
|
|
536
590
|
|
|
537
591
|
### `media`
|
|
538
592
|
|
|
539
|
-
Файлы: [`media/index.ts`](./src/media/index.ts), тест: [`media.test.ts`](./src/media/media.test.ts).
|
|
593
|
+
Файлы: [`media/index.ts`](./src/media/index.ts), подробный README: [`media/README.mdx`](./src/media/README.mdx), тест: [`media.test.ts`](./src/media/media.test.ts).
|
|
540
594
|
|
|
541
|
-
| API
|
|
542
|
-
|
|
|
543
|
-
| `BREAKPOINTS_EM`, `Breakpoint`, `MediaMatches`
|
|
544
|
-
| `
|
|
545
|
-
| `
|
|
546
|
-
| `
|
|
547
|
-
| `
|
|
595
|
+
| API | Поведение |
|
|
596
|
+
| ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
|
|
597
|
+
| `BREAKPOINTS_EM`, `Breakpoint`, `MediaMatches` | Проектные брейкпоинты в `em`: mobile/tablet/laptop. |
|
|
598
|
+
| `useMediaQuery` | SSR-safe подписка на произвольный media query с настраиваемым fallback. |
|
|
599
|
+
| `useMatchMedia` | Singleton external store на `useSyncExternalStore`; учитывает изменение root `em`. |
|
|
600
|
+
| `ResponsiveMap`, `ResponsiveValue`, `isResponsiveMap`, `resolveResponsiveValue`, `resolveProps` | Responsive props с точным fallback-порядком по брейкпоинтам. |
|
|
601
|
+
| `getCurrentFontSize`, `getCurrentLineHeight`, `getControlHeight` | DOM font metrics с server/invalid-value fallback; line-height нормализуется через `16`. |
|
|
602
|
+
| `pxToEm` | Числовая строка `px / base` без суффикса `em`; при отсутствии base читается root font-size. |
|
|
548
603
|
|
|
549
604
|
### `context-menu`
|
|
550
605
|
|
|
551
|
-
Файлы: [`context-menu/index.ts`](./src/context-menu/index.ts), тесты: [`anchor.test.ts`](./src/context-menu/anchor.test.ts), [`state.test.ts`](./src/context-menu/state.test.ts).
|
|
606
|
+
Файлы: [`context-menu/index.ts`](./src/context-menu/index.ts), подробный README: [`context-menu/README.mdx`](./src/context-menu/README.mdx), тесты: [`anchor.test.ts`](./src/context-menu/anchor.test.ts), [`state.test.ts`](./src/context-menu/state.test.ts).
|
|
552
607
|
|
|
553
608
|
| API | Поведение |
|
|
554
609
|
| --------------------------------------------------------- | ---------------------------------------------------------------------------------- |
|
|
@@ -559,7 +614,7 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
559
614
|
|
|
560
615
|
### `notifications`
|
|
561
616
|
|
|
562
|
-
Файлы: [`notifications/index.ts`](./src/notifications/index.ts), тест: [`store.test.ts`](./src/notifications/store.test.ts).
|
|
617
|
+
Файлы: [`notifications/index.ts`](./src/notifications/index.ts), подробный README: [`notifications/README.mdx`](./src/notifications/README.mdx), тест: [`store.test.ts`](./src/notifications/store.test.ts).
|
|
563
618
|
|
|
564
619
|
| API | Поведение |
|
|
565
620
|
| -------------------------- | ------------------------------------------------------------------------------------------------- |
|
|
@@ -571,7 +626,7 @@ Pipeline — runtime форматирования ячейки. Он прини
|
|
|
571
626
|
|
|
572
627
|
### `pwa` и `virtualizer`
|
|
573
628
|
|
|
574
|
-
Файлы: [`pwa/index.ts`](./src/pwa/index.ts), README: [`pwa/README.
|
|
629
|
+
Файлы: [`pwa/index.ts`](./src/pwa/index.ts), подробный README: [`pwa/README.mdx`](./src/pwa/README.mdx); [`virtualizer/index.ts`](./src/virtualizer/index.ts), подробный README: [`virtualizer/README.mdx`](./src/virtualizer/README.mdx).
|
|
575
630
|
|
|
576
631
|
`pwa`:
|
|
577
632
|
|
|
@@ -592,22 +647,24 @@ Service worker runtime helpers живут в [`pwa/serviceWorker.ts`](./src/pwa/
|
|
|
592
647
|
|
|
593
648
|
### `query-client`
|
|
594
649
|
|
|
595
|
-
Файлы: [`query-client/index.ts`](./src/query-client/index.ts),
|
|
650
|
+
Файлы: [`query-client/index.ts`](./src/query-client/index.ts), единый подробный справочник: [`query-client/README.mdx`](./src/query-client/README.mdx). Раздел optimistic update теперь входит в этот документ.
|
|
596
651
|
|
|
597
|
-
| API | Поведение
|
|
598
|
-
| ------------------------------------------------------------------------------------------------------ |
|
|
599
|
-
| `createQueryClient` |
|
|
600
|
-
| `persistedQueryMeta`, `shouldPersistQuery`, `createReactQueryPersister`, `createIndexedDbQueryStorage` | Opt-in persistence справочников в IndexedDB.
|
|
601
|
-
| `
|
|
602
|
-
| `
|
|
652
|
+
| API | Поведение |
|
|
653
|
+
| ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------- |
|
|
654
|
+
| `createQueryClient` | Создаёт настроенный QueryClient; singleton lifecycle обеспечивает host. |
|
|
655
|
+
| `persistedQueryMeta`, `shouldPersistQuery`, `createReactQueryPersister`, `createIndexedDbQueryStorage` | Opt-in persistence справочников в IndexedDB. |
|
|
656
|
+
| `configureQueryPersistenceProjectAdapter`, `getQueryPersistenceProjectAdapter` | Host namespace и buster для persistent cache. |
|
|
657
|
+
| `installReactQueryBroadcast`, `broadcastCacheEvent`, `setBroadcastFn` | Sync query cache и cache events между вкладками. |
|
|
658
|
+
| `sessionScopedQueryMeta`, `resetSessionScopedQueries`, `installSessionScopedQueryReset` | Очистка auth/session-dependent query локально и между вкладками. |
|
|
659
|
+
| `onMutateOptimistic`, `onErrorOptimistic`, `onSuccessOptimistic`, `onSettledOptimistic` | Helpers для точечного optimistic update. |
|
|
603
660
|
|
|
604
661
|
Поведение из тестов: persistence сохраняет только `meta.persist === true`, broadcast игнорирует невалидные сообщения и не зацикливает remote events, `onSettledOptimistic` по умолчанию invalidates с `refetchType: "none"`.
|
|
605
662
|
|
|
606
|
-
Тесты: [`queryClient.test.ts`](./src/query-client/queryClient.test.ts), [`persistence.test.ts`](./src/query-client/persistence.test.ts), [`broadcast.test.ts`](./src/query-client/broadcast.test.ts), [`broadcast.integration.test.ts`](./src/query-client/broadcast.integration.test.ts).
|
|
663
|
+
Тесты: [`queryClient.test.ts`](./src/query-client/queryClient.test.ts), [`persistence.test.ts`](./src/query-client/persistence.test.ts), [`broadcast.test.ts`](./src/query-client/broadcast.test.ts), [`broadcast.integration.test.ts`](./src/query-client/broadcast.integration.test.ts), [`sessionScoped.test.ts`](./src/query-client/sessionScoped.test.ts).
|
|
607
664
|
|
|
608
665
|
### `error` и `error-report`
|
|
609
666
|
|
|
610
|
-
Файлы: [`error/index.ts`](./src/error/index.ts), [`error-report/index.ts`](./src/error-report/index.ts).
|
|
667
|
+
Файлы: [`error/index.ts`](./src/error/index.ts), подробный README: [`error/README.mdx`](./src/error/README.mdx); [`error-report/index.ts`](./src/error-report/index.ts), подробный README: [`error-report/README.mdx`](./src/error-report/README.mdx).
|
|
611
668
|
|
|
612
669
|
`error`:
|
|
613
670
|
|
|
@@ -634,24 +691,25 @@ Service worker runtime helpers живут в [`pwa/serviceWorker.ts`](./src/pwa/
|
|
|
634
691
|
|
|
635
692
|
### `array`
|
|
636
693
|
|
|
637
|
-
Файлы: [`array/index.ts`](./src/array/index.ts), тесты: [`array.test.ts`](./src/array/array.test.ts), [`reorder.test.ts`](./src/array/reorder.test.ts).
|
|
638
|
-
|
|
639
|
-
| API | Поведение
|
|
640
|
-
| --------------------------------------------------- |
|
|
641
|
-
| `arrayGroupBy`, `arrayGroupByToArray` | Группировка по ключу, порядок элементов внутри группы сохраняется.
|
|
642
|
-
| `arrayToMap` | Map-object по первому встреченному значению ключа.
|
|
643
|
-
| `arrayUniqueBy` | Дедупликация по ключу без перестановки первого значения.
|
|
644
|
-
| `
|
|
645
|
-
| `
|
|
646
|
-
| `
|
|
647
|
-
| `
|
|
648
|
-
| `
|
|
649
|
-
| `
|
|
650
|
-
| `
|
|
694
|
+
Файлы: [`array/index.ts`](./src/array/index.ts), подробный README: [`array/README.mdx`](./src/array/README.mdx), тесты: [`array.test.ts`](./src/array/array.test.ts), [`reorder.test.ts`](./src/array/reorder.test.ts).
|
|
695
|
+
|
|
696
|
+
| API | Поведение |
|
|
697
|
+
| --------------------------------------------------- | ---------------------------------------------------------------------------- |
|
|
698
|
+
| `arrayGroupBy`, `arrayGroupByToArray` | Группировка по ключу, порядок элементов внутри группы сохраняется. |
|
|
699
|
+
| `arrayToMap` | Map-object по первому встреченному значению ключа. |
|
|
700
|
+
| `arrayUniqueBy` | Дедупликация по ключу без перестановки первого значения. |
|
|
701
|
+
| `arrayDeduplicate` | Дедупликация значений через семантику `Set` с сохранением первого вхождения. |
|
|
702
|
+
| `filterAndDeduplicateIds` | Оставляет только allowed ids, убирает пустые и дубли. |
|
|
703
|
+
| `appendMissingIds` | Добавляет отсутствующие ids в конец базового списка. |
|
|
704
|
+
| `pickExistingMapValues` | Значения `Map` в порядке keys, отсутствующие ключи пропускаются. |
|
|
705
|
+
| `arraysEqual` | Строго по длине, порядку и ссылочным значениям. |
|
|
706
|
+
| `moveItem`, `moveArrayItem`, `moveArrayItemByIndex` | Immutable reorder; некорректные индексы возвращают копию без перестановки. |
|
|
707
|
+
| `normalizeObjects` | Trim key, отсекает пустые/дубли, по умолчанию shallow copy. |
|
|
708
|
+
| `normalizeStringArray`, `addUnique` | Нормализация string ids. |
|
|
651
709
|
|
|
652
710
|
### `utils`
|
|
653
711
|
|
|
654
|
-
Файлы: [`utils/index.ts`](./src/utils/index.ts), тесты: [`utils.test.ts`](./src/utils/utils.test.ts), [`keyboard.test.ts`](./src/utils/keyboard.test.ts), [`createLazyComponent.test.tsx`](./src/utils/createLazyComponent.test.tsx).
|
|
712
|
+
Файлы: [`utils/index.ts`](./src/utils/index.ts), подробный README: [`utils/README.mdx`](./src/utils/README.mdx), тесты: [`utils.test.ts`](./src/utils/utils.test.ts), [`keyboard.test.ts`](./src/utils/keyboard.test.ts), [`createLazyComponent.test.tsx`](./src/utils/createLazyComponent.test.tsx).
|
|
655
713
|
|
|
656
714
|
| API | Поведение |
|
|
657
715
|
| ------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
|
@@ -670,25 +728,25 @@ Service worker runtime helpers живут в [`pwa/serviceWorker.ts`](./src/pwa/
|
|
|
670
728
|
|
|
671
729
|
### `validators` и `types`
|
|
672
730
|
|
|
673
|
-
Файлы: [`validators/index.ts`](./src/validators/index.ts), [`types/index.ts`](./src/types/index.ts), тест: [`validators.test.ts`](./src/validators/validators.test.ts).
|
|
731
|
+
Файлы: [`validators/index.ts`](./src/validators/index.ts), подробный README: [`validators/README.mdx`](./src/validators/README.mdx); [`types/index.ts`](./src/types/index.ts), подробный README: [`types/README.mdx`](./src/types/README.mdx); тест: [`validators.test.ts`](./src/validators/validators.test.ts).
|
|
674
732
|
|
|
675
|
-
| API
|
|
676
|
-
|
|
|
677
|
-
| `isSafe`
|
|
678
|
-
| `isObject`, `isRecord`, `asRecord`, `isPlainObject`
|
|
679
|
-
| `IMAGE_EXTENSIONS`, `isImageExtension`
|
|
680
|
-
| `isDomReference`
|
|
733
|
+
| API | Поведение |
|
|
734
|
+
| -------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
|
|
735
|
+
| `isSafe` | Type guard от `null/undefined`. |
|
|
736
|
+
| `isObject`, `isRecord`, `asRecord`, `isPlainObject` | Guards для object-like values; массивы не считаются record. |
|
|
737
|
+
| `IMAGE_EXTENSIONS`, `isImageExtension` | Проверка image extension без учета регистра. |
|
|
738
|
+
| `isDomReference` | Floating UI reference -> DOM `Element`. |
|
|
681
739
|
| `State`, `AbapBoolean`, `Primitive`, `BaseType`, `InputType`, `RangeType`, `RowRecord` | Общие технические типы. |
|
|
682
740
|
|
|
683
741
|
### `string-comparison`
|
|
684
742
|
|
|
685
|
-
Файл: [`string-comparison/compareStrings.ts`](./src/string-comparison/compareStrings.ts), тест: [`compareStrings.test.ts`](./src/string-comparison/compareStrings.test.ts).
|
|
743
|
+
Файл: [`string-comparison/compareStrings.ts`](./src/string-comparison/compareStrings.ts), подробный README: [`string-comparison/README.mdx`](./src/string-comparison/README.mdx), тест: [`compareStrings.test.ts`](./src/string-comparison/compareStrings.test.ts).
|
|
686
744
|
|
|
687
745
|
`compareStrings` использует фиксированный `Intl.Collator("ru-RU", { numeric: true, sensitivity: "base" })` и UTF-16 fallback. Используй для справочников и UI-списков вместо ad hoc `localeCompare`.
|
|
688
746
|
|
|
689
747
|
### `crypto` и `session-storage`
|
|
690
748
|
|
|
691
|
-
Файлы: [`crypto/index.ts`](./src/crypto/index.ts), [`session-storage/index.ts`](./src/session-storage/index.ts).
|
|
749
|
+
Файлы: [`crypto/index.ts`](./src/crypto/index.ts), подробный README: [`crypto/README.mdx`](./src/crypto/README.mdx); [`session-storage/index.ts`](./src/session-storage/index.ts), подробный README: [`session-storage/README.mdx`](./src/session-storage/README.mdx).
|
|
692
750
|
|
|
693
751
|
| API | Поведение |
|
|
694
752
|
| -------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
|
@@ -701,7 +759,7 @@ Service worker runtime helpers живут в [`pwa/serviceWorker.ts`](./src/pwa/
|
|
|
701
759
|
|
|
702
760
|
### `presets`
|
|
703
761
|
|
|
704
|
-
Файл: [`presets/presets.ts`](./src/presets/presets.ts), тест: [`presets.test.ts`](./src/presets/presets.test.ts).
|
|
762
|
+
Файл: [`presets/presets.ts`](./src/presets/presets.ts), подробный README: [`presets/README.mdx`](./src/presets/README.mdx), тест: [`presets.test.ts`](./src/presets/presets.test.ts).
|
|
705
763
|
|
|
706
764
|
| API | Поведение |
|
|
707
765
|
| --------------------------- | ------------------------------------------------------------------------------------------ |
|
|
@@ -711,7 +769,7 @@ Service worker runtime helpers живут в [`pwa/serviceWorker.ts`](./src/pwa/
|
|
|
711
769
|
|
|
712
770
|
### `bounded-copy-stack`
|
|
713
771
|
|
|
714
|
-
Файл: [`bounded-copy-stack/boundedCopyStack.ts`](./src/bounded-copy-stack/boundedCopyStack.ts), тест: [`boundedCopyStack.test.ts`](./src/bounded-copy-stack/boundedCopyStack.test.ts).
|
|
772
|
+
Файл: [`bounded-copy-stack/boundedCopyStack.ts`](./src/bounded-copy-stack/boundedCopyStack.ts), подробный README: [`bounded-copy-stack/README.mdx`](./src/bounded-copy-stack/README.mdx), тест: [`boundedCopyStack.test.ts`](./src/bounded-copy-stack/boundedCopyStack.test.ts).
|
|
715
773
|
|
|
716
774
|
| API | Поведение |
|
|
717
775
|
| --------------------------------- | ----------------------------------------------------------------------------------------- |
|