@ryuzaki13/react-foundation-api 1.0.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.
Files changed (166) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +30 -0
  3. package/dist/adt/fetchUserTransports.d.ts +2 -0
  4. package/dist/adt/fetchUserTransports.d.ts.map +1 -0
  5. package/dist/adt/index.d.ts +4 -0
  6. package/dist/adt/index.d.ts.map +1 -0
  7. package/dist/adt/index.js +70 -0
  8. package/dist/adt/index.js.map +1 -0
  9. package/dist/adt/parseUserTransportsXml.d.ts +3 -0
  10. package/dist/adt/parseUserTransportsXml.d.ts.map +1 -0
  11. package/dist/adt/types.d.ts +10 -0
  12. package/dist/adt/types.d.ts.map +1 -0
  13. package/dist/async/AsyncTasksError.d.ts +6 -0
  14. package/dist/async/AsyncTasksError.d.ts.map +1 -0
  15. package/dist/async/ConcurrencyPartialError.d.ts +6 -0
  16. package/dist/async/ConcurrencyPartialError.d.ts.map +1 -0
  17. package/dist/async/index.d.ts +5 -0
  18. package/dist/async/index.d.ts.map +1 -0
  19. package/dist/async/index.js +163 -0
  20. package/dist/async/index.js.map +1 -0
  21. package/dist/async/runAsyncTasks.d.ts +32 -0
  22. package/dist/async/runAsyncTasks.d.ts.map +1 -0
  23. package/dist/async/runConcurrentTasks.d.ts +127 -0
  24. package/dist/async/runConcurrentTasks.d.ts.map +1 -0
  25. package/dist/chunks/fetch-BW2OtCu7.js +508 -0
  26. package/dist/chunks/fetch-BW2OtCu7.js.map +1 -0
  27. package/dist/chunks/odata-ZgZGme_K.js +473 -0
  28. package/dist/chunks/odata-ZgZGme_K.js.map +1 -0
  29. package/dist/chunks/odataFetchFn-BXVJxOou.js +302 -0
  30. package/dist/chunks/odataFetchFn-BXVJxOou.js.map +1 -0
  31. package/dist/error-report/errorReport.d.ts +28 -0
  32. package/dist/error-report/errorReport.d.ts.map +1 -0
  33. package/dist/error-report/index.d.ts +2 -0
  34. package/dist/error-report/index.d.ts.map +1 -0
  35. package/dist/error-report/index.js +42 -0
  36. package/dist/error-report/index.js.map +1 -0
  37. package/dist/http/RouteError.d.ts +5 -0
  38. package/dist/http/RouteError.d.ts.map +1 -0
  39. package/dist/http/http.d.ts +20 -0
  40. package/dist/http/http.d.ts.map +1 -0
  41. package/dist/http/index.d.ts +4 -0
  42. package/dist/http/index.d.ts.map +1 -0
  43. package/dist/http/index.js +67 -0
  44. package/dist/http/index.js.map +1 -0
  45. package/dist/http/types.d.ts +23 -0
  46. package/dist/http/types.d.ts.map +1 -0
  47. package/dist/odata/createODataCollectionQueryKey.d.ts +9 -0
  48. package/dist/odata/createODataCollectionQueryKey.d.ts.map +1 -0
  49. package/dist/odata/fetchCollectionData.d.ts +15 -0
  50. package/dist/odata/fetchCollectionData.d.ts.map +1 -0
  51. package/dist/odata/flattenODataDependentServices.d.ts +6 -0
  52. package/dist/odata/flattenODataDependentServices.d.ts.map +1 -0
  53. package/dist/odata/index.d.ts +21 -0
  54. package/dist/odata/index.d.ts.map +1 -0
  55. package/dist/odata/index.js +4 -0
  56. package/dist/odata/metadataVersionCheck.d.ts +49 -0
  57. package/dist/odata/metadataVersionCheck.d.ts.map +1 -0
  58. package/dist/odata/odataBaseQueryKey.d.ts +2 -0
  59. package/dist/odata/odataBaseQueryKey.d.ts.map +1 -0
  60. package/dist/odata/odataFetch.d.ts +87 -0
  61. package/dist/odata/odataFetch.d.ts.map +1 -0
  62. package/dist/odata/odataFetchFn.d.ts +399 -0
  63. package/dist/odata/odataFetchFn.d.ts.map +1 -0
  64. package/dist/odata/odataFetchFnDev.d.ts +58 -0
  65. package/dist/odata/odataFetchFnDev.d.ts.map +1 -0
  66. package/dist/odata/odataFetchFnHelpers.d.ts +9 -0
  67. package/dist/odata/odataFetchFnHelpers.d.ts.map +1 -0
  68. package/dist/odata/odataProjectAdapter.d.ts +22 -0
  69. package/dist/odata/odataProjectAdapter.d.ts.map +1 -0
  70. package/dist/odata/parseODataResponseByMetadata.d.ts +4 -0
  71. package/dist/odata/parseODataResponseByMetadata.d.ts.map +1 -0
  72. package/dist/odata/sortODataDependentSegmentItemsByChains.d.ts +8 -0
  73. package/dist/odata/sortODataDependentSegmentItemsByChains.d.ts.map +1 -0
  74. package/dist/odata/sortODataDependentServicesByChains.d.ts +12 -0
  75. package/dist/odata/sortODataDependentServicesByChains.d.ts.map +1 -0
  76. package/dist/odata/transport/SsoRequiredError.d.ts +22 -0
  77. package/dist/odata/transport/SsoRequiredError.d.ts.map +1 -0
  78. package/dist/odata/transport/errorReport.d.ts +3 -0
  79. package/dist/odata/transport/errorReport.d.ts.map +1 -0
  80. package/dist/odata/transport/fetch.d.ts +43 -0
  81. package/dist/odata/transport/fetch.d.ts.map +1 -0
  82. package/dist/odata/transport/index.d.ts +5 -0
  83. package/dist/odata/transport/index.d.ts.map +1 -0
  84. package/dist/odata/transport/types.d.ts +12 -0
  85. package/dist/odata/transport/types.d.ts.map +1 -0
  86. package/dist/odata/transport/url.d.ts +13 -0
  87. package/dist/odata/transport/url.d.ts.map +1 -0
  88. package/dist/odata/types.d.ts +176 -0
  89. package/dist/odata/types.d.ts.map +1 -0
  90. package/dist/odata/useODataCollection.d.ts +39 -0
  91. package/dist/odata/useODataCollection.d.ts.map +1 -0
  92. package/dist/odata/useODataCollectionChains.d.ts +7 -0
  93. package/dist/odata/useODataCollectionChains.d.ts.map +1 -0
  94. package/dist/odata/useODataCollectionModel.d.ts +3 -0
  95. package/dist/odata/useODataCollectionModel.d.ts.map +1 -0
  96. package/dist/odata/useODataCollectionQuery.d.ts +34 -0
  97. package/dist/odata/useODataCollectionQuery.d.ts.map +1 -0
  98. package/dist/odata/useODataCollectionUpdatesQuery.d.ts +51 -0
  99. package/dist/odata/useODataCollectionUpdatesQuery.d.ts.map +1 -0
  100. package/dist/odata/useODataEntity.d.ts +28 -0
  101. package/dist/odata/useODataEntity.d.ts.map +1 -0
  102. package/dist/odata/useODataMetadata.d.ts +13 -0
  103. package/dist/odata/useODataMetadata.d.ts.map +1 -0
  104. package/dist/odata/useODataMetadataQuery.d.ts +32 -0
  105. package/dist/odata/useODataMetadataQuery.d.ts.map +1 -0
  106. package/dist/odata/useODataTableColumns.d.ts +69 -0
  107. package/dist/odata/useODataTableColumns.d.ts.map +1 -0
  108. package/dist/odata/useTextServiceQuery.d.ts +3 -0
  109. package/dist/odata/useTextServiceQuery.d.ts.map +1 -0
  110. package/dist/persisted/cache.d.ts +29 -0
  111. package/dist/persisted/cache.d.ts.map +1 -0
  112. package/dist/persisted/index.d.ts +22 -0
  113. package/dist/persisted/index.d.ts.map +1 -0
  114. package/dist/persisted/index.js +339 -0
  115. package/dist/persisted/index.js.map +1 -0
  116. package/dist/persisted/keys.d.ts +21 -0
  117. package/dist/persisted/keys.d.ts.map +1 -0
  118. package/dist/persisted/odata.d.ts +113 -0
  119. package/dist/persisted/odata.d.ts.map +1 -0
  120. package/dist/persisted/payload.d.ts +29 -0
  121. package/dist/persisted/payload.d.ts.map +1 -0
  122. package/dist/persisted/resource.d.ts +87 -0
  123. package/dist/persisted/resource.d.ts.map +1 -0
  124. package/dist/persisted/rest.d.ts +87 -0
  125. package/dist/persisted/rest.d.ts.map +1 -0
  126. package/dist/persisted/types.d.ts +172 -0
  127. package/dist/persisted/types.d.ts.map +1 -0
  128. package/dist/resource/cache.d.ts +22 -0
  129. package/dist/resource/cache.d.ts.map +1 -0
  130. package/dist/resource/index.d.ts +5 -0
  131. package/dist/resource/index.d.ts.map +1 -0
  132. package/dist/resource/index.js +147 -0
  133. package/dist/resource/index.js.map +1 -0
  134. package/dist/resource/keys.d.ts +14 -0
  135. package/dist/resource/keys.d.ts.map +1 -0
  136. package/dist/resource/resource.d.ts +38 -0
  137. package/dist/resource/resource.d.ts.map +1 -0
  138. package/dist/resource/types.d.ts +112 -0
  139. package/dist/resource/types.d.ts.map +1 -0
  140. package/dist/s3/constants.d.ts +12 -0
  141. package/dist/s3/constants.d.ts.map +1 -0
  142. package/dist/s3/fetchFileFromS3.d.ts +13 -0
  143. package/dist/s3/fetchFileFromS3.d.ts.map +1 -0
  144. package/dist/s3/index.d.ts +3 -0
  145. package/dist/s3/index.d.ts.map +1 -0
  146. package/dist/s3/index.js +41 -0
  147. package/dist/s3/index.js.map +1 -0
  148. package/dist/s3/uploadToS3.d.ts +18 -0
  149. package/dist/s3/uploadToS3.d.ts.map +1 -0
  150. package/dist/server-fn/index.d.ts +2 -0
  151. package/dist/server-fn/index.d.ts.map +1 -0
  152. package/dist/server-fn/index.js +37 -0
  153. package/dist/server-fn/index.js.map +1 -0
  154. package/dist/server-fn/serverFn.d.ts +64 -0
  155. package/dist/server-fn/serverFn.d.ts.map +1 -0
  156. package/dist/transport/fetchTransportRequests.d.ts +11 -0
  157. package/dist/transport/fetchTransportRequests.d.ts.map +1 -0
  158. package/dist/transport/index.d.ts +4 -0
  159. package/dist/transport/index.d.ts.map +1 -0
  160. package/dist/transport/index.js +52 -0
  161. package/dist/transport/index.js.map +1 -0
  162. package/dist/transport/normalizeTransportRequests.d.ts +3 -0
  163. package/dist/transport/normalizeTransportRequests.d.ts.map +1 -0
  164. package/dist/transport/types.d.ts +19 -0
  165. package/dist/transport/types.d.ts.map +1 -0
  166. package/package.json +202 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"odata.d.ts","sourceRoot":"","sources":["../../src/persisted/odata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { PersistedPayloadCodec } from "./types";
2
+ /**
3
+ * Безопасно разбирает JSON payload сохранённой записи.
4
+ *
5
+ * Функция намеренно принимает только строку или `null/undefined`, чтобы нельзя
6
+ * было случайно передать в parser весь record вместо поля `payload`.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * const payload = parsePersistedJson<{ columns: string[] }>('{"columns":["A","B"]}');
11
+ * // => { columns: ["A", "B"] }
12
+ * ```
13
+ */
14
+ export declare function parsePersistedJson<T>(payload: string | null | undefined): T | null;
15
+ /**
16
+ * Сериализует доменную полезную нагрузку в JSON-строку.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const raw = stringifyPersistedJson({ title: "Demo" });
21
+ * // => '{"title":"Demo"}'
22
+ * ```
23
+ */
24
+ export declare function stringifyPersistedJson<T>(value: T): string;
25
+ /**
26
+ * Возвращает готовый codec для хранения payload в виде строки JSON.
27
+ */
28
+ export declare function createPersistedJsonCodec<T>(): PersistedPayloadCodec<T>;
29
+ //# sourceMappingURL=payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../src/persisted/payload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,GAAG,IAAI,CAQlF;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,KAAK,qBAAqB,CAAC,CAAC,CAAC,CAKtE"}
@@ -0,0 +1,87 @@
1
+ import { type QueryClient } from "@tanstack/react-query";
2
+ import type { CreatePersistedResourceDescriptorOptions, PersistedCacheStrategy, PersistedMutationOperation, PersistedQueryOperation, PersistedReadOperationName, PersistedResourceDescriptor, PersistedTransportAdapter, PersistedWriteOperationName } from "./types";
3
+ /**
4
+ * Внутренний тип descriptor-а, гарантированно содержащего нужную read-capability.
5
+ */
6
+ type ReadDescriptor<TScope, TArgs, TResult, TOperation extends PersistedReadOperationName> = PersistedResourceDescriptor<TScope, PersistedTransportAdapter<TScope> & {
7
+ [K in TOperation]-?: PersistedQueryOperation<TScope, TArgs, TResult>;
8
+ }>;
9
+ /**
10
+ * Внутренний тип descriptor-а, гарантированно содержащего нужную write-capability.
11
+ */
12
+ type WriteDescriptor<TScope, TInput, TResult, TOperation extends PersistedWriteOperationName> = PersistedResourceDescriptor<TScope, PersistedTransportAdapter<TScope> & {
13
+ [K in TOperation]-?: PersistedMutationOperation<TScope, TInput, TResult>;
14
+ }>;
15
+ /**
16
+ * Дополнительные настройки доменного mutation-хука.
17
+ */
18
+ interface UsePersistedMutationOptions<TScope, TInput, TResult> {
19
+ /**
20
+ * Позволяет переопределить стандартную cache policy descriptor-а.
21
+ *
22
+ * Если передать `null`, базовая strategy ресурса будет отключена.
23
+ */
24
+ cacheStrategy?: PersistedCacheStrategy<TScope, TInput, TResult> | null;
25
+ /**
26
+ * Доменный post-success callback, который запускается после cache strategy.
27
+ */
28
+ onSuccess?: (result: TResult, input: TInput) => void | Promise<void>;
29
+ }
30
+ /**
31
+ * Создаёт descriptor persisted-record ресурса.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * const resource = createPersistedResourceDescriptor({
36
+ * namespace: "viewConfig",
37
+ * resource: "view",
38
+ * normalizeScope: (scope) => ({
39
+ * appId: scope?.appId?.trim() ?? "",
40
+ * viewId: scope?.viewId?.trim() ?? ""
41
+ * }),
42
+ * isEnabled: (scope) => Boolean(scope?.appId && scope?.viewId),
43
+ * transport: {
44
+ * latest: createPersistedODataQueryOperation({ ... })
45
+ * }
46
+ * });
47
+ * ```
48
+ */
49
+ export declare function createPersistedResourceDescriptor<TScope, TTransport extends PersistedTransportAdapter<TScope> = PersistedTransportAdapter<TScope>>(options: CreatePersistedResourceDescriptorOptions<TScope, TTransport>): PersistedResourceDescriptor<TScope, TTransport>;
50
+ /**
51
+ * Подключает capability `list` к `useQuery`.
52
+ */
53
+ export declare function usePersistedListQuery<TScope, TResult>(descriptor: ReadDescriptor<TScope, void, TResult, "list">, scope: TScope | null | undefined): import("@tanstack/react-query").UseQueryResult<NoInfer<TResult>, Error>;
54
+ /**
55
+ * Подключает capability `latest` к `useQuery`.
56
+ */
57
+ export declare function usePersistedLatestQuery<TScope, TResult>(descriptor: ReadDescriptor<TScope, void, TResult, "latest">, scope: TScope | null | undefined): import("@tanstack/react-query").UseQueryResult<NoInfer<TResult>, Error>;
58
+ /**
59
+ * Подключает capability `history` к `useQuery`.
60
+ */
61
+ export declare function usePersistedHistoryQuery<TScope, TArgs, TResult>(descriptor: ReadDescriptor<TScope, TArgs, TResult, "history">, scope: TScope | null | undefined, args: TArgs): import("@tanstack/react-query").UseQueryResult<NoInfer<TResult>, Error>;
62
+ /**
63
+ * Императивно загружает capability `list` через `QueryClient`.
64
+ */
65
+ export declare function getPersistedListData<TScope, TResult>(descriptor: ReadDescriptor<TScope, void, TResult, "list">, scope: TScope | null | undefined, queryClient: QueryClient): Promise<TResult>;
66
+ /**
67
+ * Императивно загружает capability `latest` через `QueryClient`.
68
+ */
69
+ export declare function getPersistedLatestData<TScope, TResult>(descriptor: ReadDescriptor<TScope, void, TResult, "latest">, scope: TScope | null | undefined, queryClient: QueryClient): Promise<TResult>;
70
+ /**
71
+ * Императивно загружает capability `history` через `QueryClient`.
72
+ */
73
+ export declare function getPersistedHistoryData<TScope, TArgs, TResult>(descriptor: ReadDescriptor<TScope, TArgs, TResult, "history">, scope: TScope | null | undefined, args: TArgs, queryClient: QueryClient): Promise<TResult>;
74
+ /**
75
+ * Подключает capability `save` к `useMutation`.
76
+ */
77
+ export declare function usePersistedSaveMutation<TScope, TInput, TResult>(descriptor: WriteDescriptor<TScope, TInput, TResult, "save">, scope: TScope | null | undefined, options?: UsePersistedMutationOptions<TScope, TInput, TResult>): import("@tanstack/react-query").UseMutationResult<TResult, Error, TInput, unknown>;
78
+ /**
79
+ * Подключает capability `create` к `useMutation`.
80
+ */
81
+ export declare function usePersistedCreateMutation<TScope, TInput, TResult>(descriptor: WriteDescriptor<TScope, TInput, TResult, "create">, scope: TScope | null | undefined, options?: UsePersistedMutationOptions<TScope, TInput, TResult>): import("@tanstack/react-query").UseMutationResult<TResult, Error, TInput, unknown>;
82
+ /**
83
+ * Подключает capability `delete` к `useMutation`.
84
+ */
85
+ export declare function usePersistedDeleteMutation<TScope, TInput, TResult>(descriptor: WriteDescriptor<TScope, TInput, TResult, "delete">, scope: TScope | null | undefined, options?: UsePersistedMutationOptions<TScope, TInput, TResult>): import("@tanstack/react-query").UseMutationResult<TResult, Error, TInput, unknown>;
86
+ export {};
87
+ //# sourceMappingURL=resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/persisted/resource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import type { PersistedMutationOperation, PersistedQueryOperation } from "./types";
2
+ /**
3
+ * Нормализованная форма REST-запроса, передаваемая executor-у.
4
+ */
5
+ interface PersistedRestRequest {
6
+ url: string;
7
+ init?: RequestInit;
8
+ baseUrl?: string;
9
+ }
10
+ /**
11
+ * Низкоуровневый REST executor.
12
+ *
13
+ * Executor можно подменить в тестах и спец-сценариях. Если executor не задан,
14
+ * адаптер использует чистый HTTP transport и требует явный parser ответа.
15
+ */
16
+ type PersistedRestExecutor<TResponse> = (request: PersistedRestRequest) => Promise<TResponse>;
17
+ /**
18
+ * Parser внешнего HTTP payload. REST-слой не приводит `unknown` к доменному типу
19
+ * самостоятельно, чтобы не маскировать контракт endpoint-а.
20
+ */
21
+ type PersistedRestResponseParser<TResponse> = (payload: unknown) => TResponse;
22
+ /**
23
+ * Базовые опции для создания REST read-операции.
24
+ */
25
+ interface PersistedRestReadOperationBaseOptions<TScope, TArgs, TResponse> {
26
+ baseUrl?: string;
27
+ buildUrl: (scope: TScope, args: TArgs) => string;
28
+ buildInit?: (scope: TScope, args: TArgs) => RequestInit;
29
+ parseResponse?: PersistedRestResponseParser<TResponse>;
30
+ executor?: PersistedRestExecutor<TResponse>;
31
+ staleTime?: number;
32
+ gcTime?: number;
33
+ isEnabled?: (scope: TScope | null | undefined, args: TArgs) => boolean;
34
+ }
35
+ type PersistedRestReadOperationOptions<TScope, TArgs, TResponse> = PersistedRestReadOperationBaseOptions<TScope, TArgs, TResponse>;
36
+ type PersistedRestMappedReadOperationOptions<TScope, TArgs, TResponse, TResult> = PersistedRestReadOperationBaseOptions<TScope, TArgs, TResponse> & {
37
+ transform: (data: TResponse, context: {
38
+ scope: TScope;
39
+ args: TArgs;
40
+ }) => TResult;
41
+ };
42
+ /**
43
+ * Базовые опции для создания REST write-операции.
44
+ */
45
+ interface PersistedRestWriteOperationBaseOptions<TScope, TInput, TResponse> {
46
+ baseUrl?: string;
47
+ buildUrl: (scope: TScope, input: TInput) => string;
48
+ method: "POST" | "PUT" | "DELETE";
49
+ buildInit?: (scope: TScope, input: TInput) => Omit<RequestInit, "method" | "body">;
50
+ bodyMapper?: (scope: TScope, input: TInput) => unknown;
51
+ parseResponse?: PersistedRestResponseParser<TResponse>;
52
+ executor?: PersistedRestExecutor<TResponse>;
53
+ }
54
+ type PersistedRestWriteOperationOptions<TScope, TInput, TResponse> = PersistedRestWriteOperationBaseOptions<TScope, TInput, TResponse> & {
55
+ cacheStrategy?: PersistedMutationOperation<TScope, TInput, TResponse>["cacheStrategy"];
56
+ };
57
+ type PersistedRestMappedWriteOperationOptions<TScope, TInput, TResponse, TResult> = PersistedRestWriteOperationBaseOptions<TScope, TInput, TResponse> & {
58
+ transform: (data: TResponse, context: {
59
+ scope: TScope;
60
+ input: TInput;
61
+ }) => TResult;
62
+ cacheStrategy?: PersistedMutationOperation<TScope, TInput, TResult>["cacheStrategy"];
63
+ };
64
+ /**
65
+ * Создаёт read-операцию поверх обычного REST endpoint.
66
+ */
67
+ export declare function createPersistedRestQueryOperation<TScope, TArgs, TResponse>(options: PersistedRestReadOperationOptions<TScope, TArgs, TResponse>): PersistedQueryOperation<TScope, TArgs, TResponse>;
68
+ export declare function createPersistedRestQueryOperation<TScope, TArgs, TResponse, TResult>(options: PersistedRestMappedReadOperationOptions<TScope, TArgs, TResponse, TResult>): PersistedQueryOperation<TScope, TArgs, TResult>;
69
+ /**
70
+ * Создаёт write-операцию поверх обычного REST endpoint.
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * const savePreset = createPersistedRestMutationOperation({
75
+ * buildUrl: () => "/api/config-presets",
76
+ * method: "PUT",
77
+ * bodyMapper: (scope, input) => ({
78
+ * userId: scope.userId,
79
+ * payload: input.payload
80
+ * })
81
+ * });
82
+ * ```
83
+ */
84
+ export declare function createPersistedRestMutationOperation<TScope, TInput, TResponse>(options: PersistedRestWriteOperationOptions<TScope, TInput, TResponse>): PersistedMutationOperation<TScope, TInput, TResponse>;
85
+ export declare function createPersistedRestMutationOperation<TScope, TInput, TResponse, TResult>(options: PersistedRestMappedWriteOperationOptions<TScope, TInput, TResponse, TResult>): PersistedMutationOperation<TScope, TInput, TResult>;
86
+ export {};
87
+ //# sourceMappingURL=rest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rest.d.ts","sourceRoot":"","sources":["../../src/persisted/rest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ import type { QueryClient, QueryKey, QueryMeta } from "@tanstack/react-query";
2
+ /**
3
+ * Имена read-операций, которые generic-слой умеет подключать к `useQuery`.
4
+ */
5
+ export type PersistedReadOperationName = "list" | "latest" | "history";
6
+ /**
7
+ * Имена write-операций, которые generic-слой умеет подключать к `useMutation`.
8
+ */
9
+ export type PersistedWriteOperationName = "save" | "create" | "delete";
10
+ /**
11
+ * Полный набор стандартных операций persisted-record ресурса.
12
+ */
13
+ export type PersistedOperationName = PersistedReadOperationName | PersistedWriteOperationName;
14
+ /**
15
+ * Контракт кодека полезной нагрузки сохранённой записи.
16
+ *
17
+ * Как правило, backend хранит payload строкой JSON, но общий слой не навязывает
18
+ * конкретный формат. Ресурс сам решает, как именно парсить и сериализовать данные.
19
+ */
20
+ export interface PersistedPayloadCodec<T> {
21
+ /**
22
+ * Разбирает сохранённый payload в доменную структуру.
23
+ */
24
+ parse: (payload: string | null | undefined) => T | null;
25
+ /**
26
+ * Сериализует доменную структуру в формат, ожидаемый transport/backend слоем.
27
+ */
28
+ stringify: (value: T) => string;
29
+ }
30
+ /**
31
+ * Набор фабрик query key для конкретного persisted-record ресурса.
32
+ *
33
+ * Стандартная форма ключа:
34
+ * `namespace -> resource -> normalizedScope -> operation -> optionalArgs`
35
+ */
36
+ export interface PersistedRecordKeys<TScope> {
37
+ all: readonly unknown[];
38
+ scope: (scope: TScope | null | undefined) => readonly unknown[];
39
+ operation: (name: PersistedOperationName, scope: TScope | null | undefined, args?: unknown) => readonly unknown[];
40
+ list: (scope: TScope | null | undefined) => readonly unknown[];
41
+ latest: (scope: TScope | null | undefined) => readonly unknown[];
42
+ history: (scope: TScope | null | undefined, args?: unknown) => readonly unknown[];
43
+ save: (scope: TScope | null | undefined) => readonly unknown[];
44
+ create: (scope: TScope | null | undefined) => readonly unknown[];
45
+ delete: (scope: TScope | null | undefined) => readonly unknown[];
46
+ }
47
+ /**
48
+ * Контекст выполнения read-операции.
49
+ *
50
+ * Общий слой гарантирует, что к моменту вызова `execute` scope уже прошёл
51
+ * базовую проверку descriptor-а.
52
+ */
53
+ export interface PersistedQueryOperationContext<TScope, TArgs> {
54
+ scope: TScope;
55
+ args: TArgs;
56
+ client: QueryClient;
57
+ signal?: AbortSignal;
58
+ }
59
+ /**
60
+ * Контекст выполнения write-операции.
61
+ */
62
+ export interface PersistedMutationOperationContext<TScope, TInput> {
63
+ scope: TScope;
64
+ input: TInput;
65
+ client: QueryClient;
66
+ }
67
+ /**
68
+ * Контракт read-операции (`list`, `latest`, `history`).
69
+ */
70
+ export interface PersistedQueryOperation<TScope, TArgs, TResult> {
71
+ /**
72
+ * Выполняет запрос и возвращает уже доменную модель результата.
73
+ */
74
+ execute(context: PersistedQueryOperationContext<TScope, TArgs>): Promise<TResult>;
75
+ /**
76
+ * Позволяет локально отключить query даже при формально валидном scope.
77
+ */
78
+ isEnabled?(scope: TScope | null | undefined, args: TArgs): boolean;
79
+ /**
80
+ * Политики react-query для конкретной операции.
81
+ */
82
+ staleTime?: number;
83
+ gcTime?: number;
84
+ meta?: QueryMeta;
85
+ }
86
+ /**
87
+ * Контекст, который cache strategy получает после успешной мутации.
88
+ */
89
+ export interface PersistedCacheStrategyContext<TScope, TInput, TResult, TTransport extends PersistedTransportAdapter<TScope> = PersistedTransportAdapter<TScope>> {
90
+ client: QueryClient;
91
+ descriptor: PersistedResourceDescriptor<TScope, TTransport>;
92
+ scope: TScope;
93
+ input: TInput;
94
+ result: TResult;
95
+ }
96
+ /**
97
+ * Политика обновления react-query кэша после write-операции.
98
+ */
99
+ export interface PersistedCacheStrategy<TScope, TInput, TResult> {
100
+ onSuccess?(context: PersistedCacheStrategyContext<TScope, TInput, TResult>): void | Promise<void>;
101
+ }
102
+ /**
103
+ * Контракт write-операции (`save`, `create`, `delete`).
104
+ */
105
+ export interface PersistedMutationOperation<TScope, TInput, TResult> {
106
+ /**
107
+ * Выполняет мутацию и возвращает доменный результат.
108
+ */
109
+ execute(context: PersistedMutationOperationContext<TScope, TInput>): Promise<TResult>;
110
+ /**
111
+ * Базовая cache policy ресурса.
112
+ */
113
+ cacheStrategy?: PersistedCacheStrategy<TScope, TInput, TResult>;
114
+ }
115
+ /**
116
+ * Capability model ресурса.
117
+ *
118
+ * Ресурс не обязан поддерживать весь CRUD. Он подключает только те операции,
119
+ * которые реально существуют у backend-а и нужны доменному коду.
120
+ */
121
+ export interface PersistedOperationCapabilities<TScope> {
122
+ list?: PersistedQueryOperation<TScope, void, unknown>;
123
+ latest?: PersistedQueryOperation<TScope, void, unknown>;
124
+ history?: PersistedQueryOperation<TScope, unknown, unknown>;
125
+ save?: PersistedMutationOperation<TScope, unknown, unknown>;
126
+ create?: PersistedMutationOperation<TScope, unknown, unknown>;
127
+ delete?: PersistedMutationOperation<TScope, unknown, unknown>;
128
+ }
129
+ /**
130
+ * Транспортный адаптер ресурса.
131
+ *
132
+ * Обычно собирается из OData или REST adapter factory.
133
+ */
134
+ export type PersistedTransportAdapter<TScope> = PersistedOperationCapabilities<TScope>;
135
+ /**
136
+ * Полное описание persisted-record ресурса.
137
+ *
138
+ * Descriptor — центральная точка конфигурации generic-слоя.
139
+ */
140
+ export interface PersistedResourceDescriptor<TScope, TTransport extends PersistedTransportAdapter<TScope> = PersistedTransportAdapter<TScope>> {
141
+ namespace: string;
142
+ resource: string;
143
+ keys: PersistedRecordKeys<TScope>;
144
+ transport: TTransport;
145
+ isEnabled?: (scope: TScope | null | undefined) => boolean;
146
+ getScopeError?: (scope: TScope | null | undefined) => string | null;
147
+ }
148
+ /**
149
+ * Параметры создания descriptor-а.
150
+ */
151
+ export interface CreatePersistedResourceDescriptorOptions<TScope, TTransport extends PersistedTransportAdapter<TScope> = PersistedTransportAdapter<TScope>> {
152
+ namespace: string;
153
+ resource: string;
154
+ transport: TTransport;
155
+ normalizeScope?: (scope: TScope | null | undefined) => unknown;
156
+ isEnabled?: (scope: TScope | null | undefined) => boolean;
157
+ getScopeError?: (scope: TScope | null | undefined) => string | null;
158
+ }
159
+ /**
160
+ * Настройки стратегии точечного обновления кэша через `setQueryData`.
161
+ */
162
+ export interface PersistedSetQueryDataStrategyOptions<TScope, TInput, TResult, TData> {
163
+ /**
164
+ * Возвращает ключ query, который нужно обновить.
165
+ */
166
+ getQueryKey: (context: PersistedCacheStrategyContext<TScope, TInput, TResult>) => QueryKey;
167
+ /**
168
+ * Вычисляет новое значение кэша на основе текущего значения и результата мутации.
169
+ */
170
+ update: (current: TData | undefined, context: PersistedCacheStrategyContext<TScope, TInput, TResult>) => TData;
171
+ }
172
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/persisted/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { ResourceCacheStrategy, ResourceCacheStrategyContext, ResourceSetQueryDataStrategyOptions } from "./types";
2
+ /**
3
+ * Безопасно применяет cache strategy, если она была передана.
4
+ */
5
+ export declare function applyResourceCacheStrategy<TScope, TInput, TResult, TDescriptor>(strategy: ResourceCacheStrategy<TScope, TInput, TResult, TDescriptor> | null | undefined, context: ResourceCacheStrategyContext<TScope, TInput, TResult, TDescriptor>): Promise<void>;
6
+ /**
7
+ * Создаёт стратегию, инвалидирующую все query внутри одного scope ресурса.
8
+ */
9
+ export declare function createInvalidateResourceScopeCacheStrategy<TScope, TInput, TResult, TDescriptor extends {
10
+ readonly keys: {
11
+ scope: (scope: TScope) => readonly unknown[];
12
+ };
13
+ }>(): ResourceCacheStrategy<TScope, TInput, TResult, TDescriptor>;
14
+ /**
15
+ * Создаёт стратегию точечного обновления одного query через `setQueryData`.
16
+ */
17
+ export declare function createSetResourceQueryDataCacheStrategy<TScope, TInput, TResult, TData, TDescriptor>(options: ResourceSetQueryDataStrategyOptions<TScope, TInput, TResult, TData, TDescriptor>): ResourceCacheStrategy<TScope, TInput, TResult, TDescriptor>;
18
+ /**
19
+ * Комбинирует несколько cache strategy в одну последовательную стратегию.
20
+ */
21
+ export declare function composeResourceCacheStrategies<TScope, TInput, TResult, TDescriptor>(...strategies: Array<ResourceCacheStrategy<TScope, TInput, TResult, TDescriptor> | null | undefined>): ResourceCacheStrategy<TScope, TInput, TResult, TDescriptor>;
22
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/resource/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,4BAA4B,EAAE,mCAAmC,EAAE,MAAM,SAAS,CAAC;AAExH;;GAEG;AACH,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EACpF,QAAQ,EAAE,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,IAAI,GAAG,SAAS,EACxF,OAAO,EAAE,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,iBAG3E;AAED;;GAEG;AACH,wBAAgB,0CAA0C,CACzD,MAAM,EACN,MAAM,EACN,OAAO,EACP,WAAW,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,OAAO,EAAE,CAAA;KAAE,CAAA;CAAE,KACnF,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAM/D;AAED;;GAEG;AACH,wBAAgB,uCAAuC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAClG,OAAO,EAAE,mCAAmC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,GACvF,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAQ7D;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAClF,GAAG,UAAU,EAAE,KAAK,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,GAClG,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,CAQ7D"}
@@ -0,0 +1,5 @@
1
+ export * from "./cache";
2
+ export * from "./keys";
3
+ export * from "./resource";
4
+ export * from "./types";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resource/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
@@ -0,0 +1,147 @@
1
+ import { queryOptions as e, useMutation as t, useQuery as n, useQueryClient as r } from "@tanstack/react-query";
2
+ //#region src/resource/cache.ts
3
+ async function i(e, t) {
4
+ await e?.onSuccess?.(t);
5
+ }
6
+ function a() {
7
+ return { onSuccess: async ({ client: e, descriptor: t, scope: n }) => {
8
+ await e.invalidateQueries({ queryKey: t.keys.scope(n) });
9
+ } };
10
+ }
11
+ function o(e) {
12
+ return { onSuccess: ({ client: t, ...n }) => {
13
+ t.setQueryData(e.getQueryKey({
14
+ client: t,
15
+ ...n
16
+ }), (r) => e.update(r, {
17
+ client: t,
18
+ ...n
19
+ }));
20
+ } };
21
+ }
22
+ function s(...e) {
23
+ return { onSuccess: async (t) => {
24
+ for (let n of e) await n?.onSuccess?.(t);
25
+ } };
26
+ }
27
+ //#endregion
28
+ //#region src/resource/keys.ts
29
+ function c(e) {
30
+ return e == null ? null : typeof e == "string" ? e.trim() : typeof e == "number" || typeof e == "boolean" ? e : Array.isArray(e) ? e.map((e) => c(e)) : typeof e == "object" ? Object.keys(e).sort().reduce((t, n) => (t[n] = c(e[n]), t), {}) : String(e);
31
+ }
32
+ var l = (e) => c(e ?? null);
33
+ function u(e) {
34
+ let t = [e.namespace, e.resource], n = e.normalizeScope ?? l, r = (e) => [...t, c(n(e))];
35
+ return {
36
+ all: t,
37
+ scope: r,
38
+ operation: (e, t, n) => n === void 0 ? [...r(t), e] : [
39
+ ...r(t),
40
+ e,
41
+ c(n)
42
+ ]
43
+ };
44
+ }
45
+ //#endregion
46
+ //#region src/resource/resource.ts
47
+ function d(e, t) {
48
+ if (t != null && (e.isEnabled?.(t) ?? !0)) return t;
49
+ throw Error(e.getScopeError?.(t) ?? `Недостаточно данных scope для ресурса '${e.resource}'.`);
50
+ }
51
+ function f(e) {
52
+ return typeof e == "object" && !!e && "execute" in e && typeof e.execute == "function";
53
+ }
54
+ function p(e) {
55
+ return f(e);
56
+ }
57
+ function m(e) {
58
+ return f(e);
59
+ }
60
+ function h(e, t) {
61
+ let n = e.operations.queries[t];
62
+ if (!p(n)) throw Error(`Ресурс '${e.resource}' не поддерживает read-операцию '${t}'.`);
63
+ return n;
64
+ }
65
+ function g(e, t) {
66
+ let n = e.operations.mutations[t];
67
+ if (!m(n)) throw Error(`Ресурс '${e.resource}' не поддерживает write-операцию '${t}'.`);
68
+ return n;
69
+ }
70
+ function _(e, t, n, r) {
71
+ return e.isEnabled?.(n) ?? !0 ? t.isEnabled?.(n, r) ?? !0 : !1;
72
+ }
73
+ function v(e) {
74
+ return {
75
+ namespace: e.namespace,
76
+ resource: e.resource,
77
+ keys: e.keys ?? u({
78
+ namespace: e.namespace,
79
+ resource: e.resource,
80
+ normalizeScope: e.normalizeScope
81
+ }),
82
+ operations: {
83
+ queries: e.operations.queries ?? {},
84
+ mutations: e.operations.mutations ?? {}
85
+ },
86
+ isEnabled: e.isEnabled,
87
+ getScopeError: e.getScopeError
88
+ };
89
+ }
90
+ function y(e) {
91
+ return e;
92
+ }
93
+ function b(e) {
94
+ return e;
95
+ }
96
+ function x(t, n, r, i) {
97
+ let a = h(t, n), o = _(t, a, r, i);
98
+ return e({
99
+ queryKey: t.keys.operation(n, r, i),
100
+ queryFn: ({ client: e, signal: n }) => {
101
+ let o = d(t, r);
102
+ return a.execute({
103
+ scope: o,
104
+ args: i,
105
+ client: e,
106
+ signal: n
107
+ });
108
+ },
109
+ enabled: o,
110
+ staleTime: a.staleTime,
111
+ gcTime: a.gcTime
112
+ });
113
+ }
114
+ function S(e, t, r, i) {
115
+ return n(x(e, t, r, i));
116
+ }
117
+ async function C(e, t, n, r, i) {
118
+ return await i.fetchQuery(x(e, t, n, r));
119
+ }
120
+ function w(e, n, a, o) {
121
+ let s = r(), c = g(e, n);
122
+ return t({
123
+ mutationKey: e.keys.operation(n, a),
124
+ mutationFn: async (t) => {
125
+ let n = d(e, a);
126
+ return await c.execute({
127
+ scope: n,
128
+ input: t,
129
+ client: s
130
+ });
131
+ },
132
+ onSuccess: async (t, n) => {
133
+ let r = d(e, a);
134
+ await i(o?.cacheStrategy === void 0 ? c.cacheStrategy : o.cacheStrategy, {
135
+ client: s,
136
+ descriptor: e,
137
+ scope: r,
138
+ input: n,
139
+ result: t
140
+ }), await o?.onSuccess?.(t, n);
141
+ }
142
+ });
143
+ }
144
+ //#endregion
145
+ export { i as applyResourceCacheStrategy, x as buildResourceQueryOptions, s as composeResourceCacheStrategies, a as createInvalidateResourceScopeCacheStrategy, v as createResourceDescriptor, u as createResourceKeys, b as createResourceMutationOperation, y as createResourceQueryOperation, o as createSetResourceQueryDataCacheStrategy, C as getResourceQueryData, c as normalizeResourceKeyValue, w as useResourceMutation, S as useResourceQuery };
146
+
147
+ //# sourceMappingURL=index.js.map