@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 и специализированные transport adapters.
3
+ Библиотечный пакет для инфраструктуры бывшего `src/shared/api`: HTTP-транспорт, async/resource helpers, persisted resources, OData/SAP Gateway helpers и adapters для transport/server function сценариев.
4
4
 
5
- ## Публичные entrypoints
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-api/http` обычный HTTP/REST transport.
8
- - `@ryuzaki13/react-foundation-api/async` — batch/concurrent async helpers.
9
- - `@ryuzaki13/react-foundation-api/resource` — generic resource descriptors поверх TanStack Query.
10
- - `@ryuzaki13/react-foundation-api/persisted` — persisted resource helpers.
11
- - `@ryuzaki13/react-foundation-api/odata` — OData/SAP Gateway helpers.
12
- - `@ryuzaki13/react-foundation-api/transport` — transport request normalization.
13
- - `@ryuzaki13/react-foundation-api/server-fn` — adapters для server function operations.
14
- - `@ryuzaki13/react-foundation-api/adt` — ADT/SAP transport helpers.
15
- - `@ryuzaki13/react-foundation-api/s3` S3 file transfer helpers.
16
- - `@ryuzaki13/react-foundation-api/error-report` — API-level error report adapters.
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`, `@tanstack/react-query`, `react` и `fast-xml-parser` объявлены как peerDependencies. `react`, `@tanstack/react-query` и `fast-xml-parser` помечены optional на уровне npm, потому что они нужны только отдельным subpath entrypoints.
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 install
64
+ npm run lint
26
65
  npm run typecheck
66
+ npm run test
27
67
  npm run build
28
68
  ```
29
69
 
30
- Сборка создаёт ESM-файлы через Vite и декларации типов через `tsc`.
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.4",
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 -p tsconfig.build.json --noEmit",
106
+ "typecheck": "tsc --noEmit",
107
107
  "test": "vitest run",
108
108
  "lint": "eslint .",
109
109
  "lint:fix": "eslint . --fix",