@ryuzaki13/react-foundation-api 1.1.4 → 1.1.5
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
CHANGED
|
@@ -1,30 +1,76 @@
|
|
|
1
1
|
# @ryuzaki13/react-foundation-api
|
|
2
2
|
|
|
3
|
-
Библиотечный пакет для инфраструктуры `shared/api`: HTTP-транспорт, async/resource helpers, persisted resources и
|
|
3
|
+
Библиотечный пакет для инфраструктуры бывшего `src/shared/api`: HTTP-транспорт, async/resource helpers, persisted resources, OData/SAP Gateway helpers и adapters для transport/server function сценариев.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Пакет публикуется в npm как публичная библиотека, но его основная задача практическая: вынести повторно используемый API-слой из собственных проектов автора и подключать его одинаково в нескольких host-приложениях. Это не универсальный API SDK. Контракты, transport helpers и OData wrappers в первую очередь оптимизируются под семейство проектов, где общий технический фундамент находится в `@ryuzaki13/react-foundation-lib`, а UI-компоненты живут в `@ryuzaki13/react-foundation-ui`.
|
|
6
6
|
|
|
7
|
-
- `@ryuzaki13/react-foundation-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
7
|
+
`react-foundation-api` зависит от `@ryuzaki13/react-foundation-lib` и находится между `lib` и host/UI-слоем: `lib` не знает про API, а `api` переиспользует `lib` для форматтеров, OData metadata, query-client policy, validators и error-report infrastructure.
|
|
8
|
+
|
|
9
|
+
## Установка
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install @ryuzaki13/react-foundation-api @ryuzaki13/react-foundation-lib
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Пакет распространяется как ESM и не открывает корневой импорт. Используйте только точечные entrypoints из `exports`:
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { httpJsonQueryFn } from "@ryuzaki13/react-foundation-api/http";
|
|
19
|
+
import { runAsyncTasks } from "@ryuzaki13/react-foundation-api/async";
|
|
20
|
+
import { createResourceDescriptor } from "@ryuzaki13/react-foundation-api/resource";
|
|
21
|
+
import { odataQueryFn, useODataCollectionQuery } from "@ryuzaki13/react-foundation-api/odata";
|
|
22
|
+
import type { ODataCollectionConfig } from "@ryuzaki13/react-foundation-api/odata";
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Импорт вида `@ryuzaki13/react-foundation-api` намеренно недоступен. Consumer явно выбирает нужный subpath, а сборщик host-проекта не получает общий barrel со всеми transport adapters и React hooks. Типы экспортируются теми же subpath entrypoints через `exports.types`.
|
|
26
|
+
|
|
27
|
+
## Public Entrypoints
|
|
28
|
+
|
|
29
|
+
| Entry point | Назначение |
|
|
30
|
+
| ------------------------------------------------- | -------------------------------------------------------------------------- |
|
|
31
|
+
| `@ryuzaki13/react-foundation-api/http` | Обычный HTTP/REST transport без SAP/OData side effects. |
|
|
32
|
+
| `@ryuzaki13/react-foundation-api/async` | Batch и concurrent async runners с нормализованными ошибками. |
|
|
33
|
+
| `@ryuzaki13/react-foundation-api/resource` | Generic resource descriptors поверх TanStack Query. |
|
|
34
|
+
| `@ryuzaki13/react-foundation-api/persisted` | Persisted resource helpers, payload codec, REST/OData adapters. |
|
|
35
|
+
| `@ryuzaki13/react-foundation-api/odata` | OData/SAP Gateway fetchers, metadata queries, collection hooks и wrappers. |
|
|
36
|
+
| `@ryuzaki13/react-foundation-api/transport` | Нормализация transport request payloads. |
|
|
37
|
+
| `@ryuzaki13/react-foundation-api/server-fn` | Adapters для server function query/mutation operations. |
|
|
38
|
+
| `@ryuzaki13/react-foundation-api/adt` | ADT user transports: fetch и XML parser. |
|
|
39
|
+
| `@ryuzaki13/react-foundation-api/error-report` | API-level adapters для error report delivery и draft lifecycle. |
|
|
40
|
+
|
|
41
|
+
Других публичных subpath exports сейчас нет. Если модуль не перечислен в `package.json exports`, его нельзя импортировать из host-проекта.
|
|
17
42
|
|
|
18
43
|
## Peer-зависимости
|
|
19
44
|
|
|
20
|
-
`@ryuzaki13/react-foundation-lib
|
|
45
|
+
`@ryuzaki13/react-foundation-lib` является обязательной peer-зависимостью: этот пакет использует его как нижний технический слой.
|
|
46
|
+
|
|
47
|
+
Остальные внешние пакеты объявлены как optional peers. Это означает только то, что их не нужно ставить для каждого сценария. Если host использует entrypoint, который импортирует внешний пакет, совместимая peer-зависимость должна быть установлена в host-проекте.
|
|
48
|
+
|
|
49
|
+
| Entry point | Что может потребоваться в host-проекте |
|
|
50
|
+
| ----------------------------------- | ----------------------------------------------------------------------------------------------------------- |
|
|
51
|
+
| `http`, `async`, `transport` | Обычно не требуют дополнительных runtime-зависимостей сверх `@ryuzaki13/react-foundation-lib`. |
|
|
52
|
+
| `resource`, `persisted`, `server-fn` | `@tanstack/react-query`; для persisted/query metadata также могут использоваться query persistence helpers. |
|
|
53
|
+
| `odata` | `react`, `@tanstack/react-query`, `@ryuzaki13/react-foundation-lib`; для store/cache сценариев также peers `zustand`, `immer`, `zod` могут приходить через используемые `lib` entrypoints. |
|
|
54
|
+
| `adt` | `fast-xml-parser` для разбора ADT XML. |
|
|
55
|
+
| `error-report` | `@tanstack/react-query` и error-report helpers из `@ryuzaki13/react-foundation-lib`. |
|
|
56
|
+
|
|
57
|
+
Такая схема оставляет пакет библиотечным: React, TanStack Query, XML parser и остальные runtime-библиотеки контролируются host-приложением, а не зашиваются в bundle.
|
|
58
|
+
|
|
59
|
+
## Проверка пакета
|
|
21
60
|
|
|
22
|
-
|
|
61
|
+
Основные команды разработки:
|
|
23
62
|
|
|
24
63
|
```bash
|
|
25
|
-
npm
|
|
64
|
+
npm run lint
|
|
26
65
|
npm run typecheck
|
|
66
|
+
npm run test
|
|
27
67
|
npm run build
|
|
28
68
|
```
|
|
29
69
|
|
|
30
|
-
|
|
70
|
+
Перед публикацией можно проверить полный npm-артефакт:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
npm run pack:dry-run
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`npm run build` собирает ESM-файлы через Vite и декларации типов через `tsc`. `npm run pack:dry-run` прогоняет `validate` и показывает состав npm package без публикации.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { EntityColumnProperty } from "@ryuzaki13/react-foundation-lib/odata-service";
|
|
2
|
+
export type ODataParsedRuntimeKind = "boolean" | "number" | "date" | "string";
|
|
3
|
+
export declare function inferODataParsedRuntimeKind(column: Pick<EntityColumnProperty, "type" | "abapBooleanLike">): ODataParsedRuntimeKind;
|
|
4
|
+
export declare function createODataParsedRuntimeKindMap(columns: EntityColumnProperty[]): Record<string, ODataParsedRuntimeKind>;
|
|
5
|
+
export declare function assertODataParsedContract(columns: EntityColumnProperty[], expected: Record<string, ODataParsedRuntimeKind>): Record<string, ODataParsedRuntimeKind>;
|
|
6
|
+
//# sourceMappingURL=contractTestUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contractTestUtils.d.ts","sourceRoot":"","sources":["../../src/odata/contractTestUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAE1F,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE9E,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,IAAI,CAAC,oBAAoB,EAAE,MAAM,GAAG,iBAAiB,CAAC,GAAG,sBAAsB,CAoBlI;AAED,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,oBAAoB,EAAE,0CAK9E;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,oBAAoB,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,0CAc1H"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ryuzaki13/react-foundation-api",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.5",
|
|
4
4
|
"description": "Reusable React and TypeScript foundation API helpers and transport adapters.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ryuzaki13",
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
},
|
|
104
104
|
"scripts": {
|
|
105
105
|
"build": "vite build && tsc -p tsconfig.build.json --emitDeclarationOnly",
|
|
106
|
-
"typecheck": "tsc
|
|
106
|
+
"typecheck": "tsc --noEmit",
|
|
107
107
|
"test": "vitest run",
|
|
108
108
|
"lint": "eslint .",
|
|
109
109
|
"lint:fix": "eslint . --fix",
|