@ryuzaki13/react-foundation-lib 2.30.1 → 2.31.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/dist/analytical-table/index.js +8 -7
- package/dist/analytical-table/index.js.map +1 -1
- package/dist/chunks/formatDate-BUvpRI7H.js +133 -0
- package/dist/chunks/formatDate-BUvpRI7H.js.map +1 -0
- package/dist/chunks/{formatters-CZnnbdud.js → formatters-rxriDRPk.js} +14 -13
- package/dist/chunks/{formatters-CZnnbdud.js.map → formatters-rxriDRPk.js.map} +1 -1
- package/dist/chunks/scalarTypeClassification-BZcFmIyR.js +764 -0
- package/dist/chunks/scalarTypeClassification-BZcFmIyR.js.map +1 -0
- package/dist/chunks/{validate-CEQHqevt.js → validate-DsUR-bFF.js} +2 -2
- package/dist/chunks/{validate-CEQHqevt.js.map → validate-DsUR-bFF.js.map} +1 -1
- package/dist/error-report/index.js +2 -2
- package/dist/excel/index.js +20 -20
- package/dist/excel/index.js.map +1 -1
- package/dist/excel/tableExport.d.ts +2 -2
- package/dist/excel/tableExport.d.ts.map +1 -1
- package/dist/formatters/index.js +5 -4
- package/dist/formatters/pipeline/types.d.ts +4 -4
- package/dist/formatters/pipeline/types.d.ts.map +1 -1
- package/dist/hooks/useFloatingListbox.d.ts +1 -1
- package/dist/metadata/baseMetaTypes.d.ts +7 -0
- package/dist/metadata/baseMetaTypes.d.ts.map +1 -0
- package/dist/metadata/metadataTypes.d.ts +16 -0
- package/dist/metadata/metadataTypes.d.ts.map +1 -0
- package/dist/metadata/scalarTypeClassification.d.ts +8 -0
- package/dist/metadata/scalarTypeClassification.d.ts.map +1 -0
- package/dist/odata-service/baseTypes.d.ts +1 -5
- package/dist/odata-service/baseTypes.d.ts.map +1 -1
- package/dist/odata-service/formatters.d.ts +1 -2
- package/dist/odata-service/formatters.d.ts.map +1 -1
- package/dist/odata-service/index.js +1311 -2
- package/dist/odata-service/index.js.map +1 -0
- package/dist/odata-service/types.d.ts +8 -11
- package/dist/odata-service/types.d.ts.map +1 -1
- package/dist/odata-service/typesValidation.d.ts +1 -5
- package/dist/odata-service/typesValidation.d.ts.map +1 -1
- package/dist/promise/createDeferredPromise.d.ts +8 -0
- package/dist/promise/createDeferredPromise.d.ts.map +1 -0
- package/dist/promise/deferredPromiseTypes.d.ts +7 -0
- package/dist/promise/deferredPromiseTypes.d.ts.map +1 -0
- package/dist/promise/index.d.ts +3 -0
- package/dist/promise/index.d.ts.map +1 -0
- package/dist/promise/index.js +16 -0
- package/dist/promise/index.js.map +1 -0
- package/package.json +5 -1
- package/src/formatters/README.mdx +5 -0
- package/src/foundationLib.mdx +8 -0
- package/src/metadata/README.md +35 -0
- package/src/odata-service/README.mdx +36 -1
- package/src/promise/README.md +44 -0
- package/dist/chunks/odata-service-tp2U5yIr.js +0 -2211
- package/dist/chunks/odata-service-tp2U5yIr.js.map +0 -1
|
@@ -101,6 +101,36 @@ host entity / feature / widget
|
|
|
101
101
|
|
|
102
102
|
## Импорт
|
|
103
103
|
|
|
104
|
+
### Граница протокольного и общего кода
|
|
105
|
+
|
|
106
|
+
`odata-service` сохраняет прежний опубликованный набор функций и типов. Внутри
|
|
107
|
+
пакета парсер OData, схемы, литералы URL, сериализация фильтров/сортировок и
|
|
108
|
+
хранилище коллекций отделены от скалярных метаданных, базовых типов контролов и
|
|
109
|
+
классификации полей. Этим общим кодом владеет `src/metadata`.
|
|
110
|
+
|
|
111
|
+
Это приватные модули. Патч не добавляет новые публичные точки входа:
|
|
112
|
+
существующие имена продолжают экспортироваться через `odata-service` и ссылаются
|
|
113
|
+
на единственную реализацию общего владельца.
|
|
114
|
+
Общие `formatters`, `error-report`, `excel`, `table` и `analytical-table` не
|
|
115
|
+
загружают реализацию OData.
|
|
116
|
+
|
|
117
|
+
`buildSeparatedArrays`, `findCollectionPairs` и типы коллекций «код — текст» остаются
|
|
118
|
+
в `odata-service`: они обслуживают справочные OData-коллекции. Работа с массивом
|
|
119
|
+
сама по себе не делает такую функцию общей ответственностью `array`.
|
|
120
|
+
Нормализация OData-ввода, `defaultControlTypeValue` и фабрики OData-форматтеров
|
|
121
|
+
также остаются у OData-владельца. Их назначение у текущих потребителей
|
|
122
|
+
не меняется из-за внешне общей формы функции.
|
|
123
|
+
|
|
124
|
+
`getFormatterForBaseType` и `getFormattersForBaseType` остаются частью реестра
|
|
125
|
+
форматтеров OData. Их результаты содержат литералы OData/ABAP и не заменяются
|
|
126
|
+
обычным отображением строки, числа или даты. Допустимые значения `ODataMetaType`
|
|
127
|
+
и свойства существующих контрактов метаданных, Excel и pipeline не меняются.
|
|
128
|
+
|
|
129
|
+
Регрессионный `src/metadata/bundleBoundary.test.ts` проверяет свежую сборку
|
|
130
|
+
всех точек входа пакета, включая общие и динамические чанки. Критерий — отсутствие
|
|
131
|
+
модулей реализации OData в достижимом графе общих точек входа; имя сгенерированного
|
|
132
|
+
чанка или слово `odata` внутри пресетов дат не является доказательством зависимости.
|
|
133
|
+
|
|
104
134
|
Для полного entrypoint также разрешите совместимые peer dependencies, если package manager не сделал этого автоматически:
|
|
105
135
|
|
|
106
136
|
```bash
|
|
@@ -2580,7 +2610,12 @@ beforeEach(() => {
|
|
|
2580
2610
|
До:
|
|
2581
2611
|
|
|
2582
2612
|
```ts
|
|
2583
|
-
import {
|
|
2613
|
+
import {
|
|
2614
|
+
buildSeparatedArrays,
|
|
2615
|
+
findCollectionPairs,
|
|
2616
|
+
ODataDateFormat,
|
|
2617
|
+
useODataCollectionStore
|
|
2618
|
+
} from "@ryuzaki13/react-foundation-lib/odata-service";
|
|
2584
2619
|
```
|
|
2585
2620
|
|
|
2586
2621
|
После:
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Управляемое ожидание через Promise
|
|
2
|
+
|
|
3
|
+
Модуль `@ryuzaki13/react-foundation-lib/promise` создаёт Promise, который можно
|
|
4
|
+
завершить из внешнего callback или события. Он подходит для ожидания освобождения
|
|
5
|
+
ресурсов, остановки фоновой операции и других технических lifecycle без знания
|
|
6
|
+
конкретного приложения.
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
import { createDeferredPromise } from "@ryuzaki13/react-foundation-lib/promise";
|
|
10
|
+
|
|
11
|
+
const completion = createDeferredPromise<void>();
|
|
12
|
+
|
|
13
|
+
// Владелец операции завершает ожидание после освобождения своих ресурсов.
|
|
14
|
+
completion.resolve();
|
|
15
|
+
await completion.promise;
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Публичный API
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
type DeferredPromise<T> = {
|
|
22
|
+
readonly promise: Promise<T>;
|
|
23
|
+
readonly resolve: (value: T | PromiseLike<T>) => void;
|
|
24
|
+
readonly reject: (reason?: unknown) => void;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
function createDeferredPromise<T>(): DeferredPromise<T>;
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
`promise` остаётся незавершённым до вызова `resolve` или `reject`. `resolve`
|
|
31
|
+
принимает значение либо другой Promise/thenable и ожидает его итог. Для
|
|
32
|
+
`DeferredPromise<void>` допустим вызов `resolve()` без аргумента. `reject`
|
|
33
|
+
сохраняет исходную причину отказа, в том числе значение, отличное от `Error`.
|
|
34
|
+
|
|
35
|
+
Каждый вызов создаёт независимое ожидание. Нативный Promise сохраняет первое
|
|
36
|
+
решение: последующие вызовы `resolve`/`reject` его не меняют. Сам примитив не
|
|
37
|
+
добавляет отмену, timeout или обработчик ошибок; владелец операции отвечает за
|
|
38
|
+
обязательное завершение ожидания и обработку rejection.
|
|
39
|
+
|
|
40
|
+
## Совместимость
|
|
41
|
+
|
|
42
|
+
Реализация использует обычный `new Promise` и не требует API новее ES2022.
|
|
43
|
+
Импорт не устанавливает полифиллы и не изменяет глобальный `Promise`.
|
|
44
|
+
Модуль не зависит от React, Router, браузерного хранилища или Node.js.
|