@soda-gql/colocation-tools 0.2.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.
- package/README.md +213 -0
- package/dist/index.cjs +313 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +272 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.ts +272 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +305 -0
- package/dist/index.js.map +1 -0
- package/package.json +55 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import { AnyFields, AnyGraphqlSchema, AnyNestedObject, Fragment, GqlElementAttachment, InferField } from "@soda-gql/core";
|
|
2
|
+
import { FormattedExecutionResult, GraphQLFormattedError } from "graphql";
|
|
3
|
+
|
|
4
|
+
//#region packages/colocation-tools/src/types.d.ts
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Generic non-GraphQL error type for framework-specific errors.
|
|
8
|
+
* Users can define their own error shape.
|
|
9
|
+
*/
|
|
10
|
+
type NonGraphqlError = unknown;
|
|
11
|
+
/**
|
|
12
|
+
* Normalized execution result representing all possible outcomes
|
|
13
|
+
* from a GraphQL operation.
|
|
14
|
+
*/
|
|
15
|
+
type NormalizedExecutionResult<TData, TExtensions> = EmptyResult | GraphqlExecutionResult<TData, TExtensions> | NonGraphqlErrorResult;
|
|
16
|
+
type EmptyResult = {
|
|
17
|
+
type: "empty";
|
|
18
|
+
};
|
|
19
|
+
type GraphqlExecutionResult<TData, TExtensions> = {
|
|
20
|
+
type: "graphql";
|
|
21
|
+
body: FormattedExecutionResult<TData, TExtensions>;
|
|
22
|
+
};
|
|
23
|
+
type NonGraphqlErrorResult = {
|
|
24
|
+
type: "non-graphql-error";
|
|
25
|
+
error: NonGraphqlError;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Error types that can occur during slice result processing.
|
|
29
|
+
*/
|
|
30
|
+
type NormalizedError = {
|
|
31
|
+
type: "graphql-error";
|
|
32
|
+
errors: GraphQLFormattedError[];
|
|
33
|
+
} | {
|
|
34
|
+
type: "non-graphql-error";
|
|
35
|
+
error: NonGraphqlError;
|
|
36
|
+
} | {
|
|
37
|
+
type: "parse-error";
|
|
38
|
+
errors: Error[];
|
|
39
|
+
};
|
|
40
|
+
//#endregion
|
|
41
|
+
//#region packages/colocation-tools/src/sliced-execution-result.d.ts
|
|
42
|
+
type AnySlicedExecutionResult = SlicedExecutionResult<any>;
|
|
43
|
+
/**
|
|
44
|
+
* Internal discriminated union describing the Result-like wrapper exposed to
|
|
45
|
+
* slice selection callbacks.
|
|
46
|
+
*/
|
|
47
|
+
type AnySlicedExecutionResultRecord = {
|
|
48
|
+
[path: string]: AnySlicedExecutionResult;
|
|
49
|
+
};
|
|
50
|
+
type SafeUnwrapResult<TTransformed, TError> = {
|
|
51
|
+
data?: never;
|
|
52
|
+
error?: never;
|
|
53
|
+
} | {
|
|
54
|
+
data: TTransformed;
|
|
55
|
+
error?: never;
|
|
56
|
+
} | {
|
|
57
|
+
data?: never;
|
|
58
|
+
error: TError;
|
|
59
|
+
};
|
|
60
|
+
/** Utility signature returned by the safe unwrap helper. */
|
|
61
|
+
type SlicedExecutionResultCommon<TData, TError> = {
|
|
62
|
+
safeUnwrap<TTransformed>(transform: (data: TData) => TTransformed): SafeUnwrapResult<TTransformed, TError>;
|
|
63
|
+
};
|
|
64
|
+
/** Public union used by selection callbacks to inspect data, empty, or error states. */
|
|
65
|
+
type SlicedExecutionResult<TData> = SlicedExecutionResultEmpty<TData> | SlicedExecutionResultSuccess<TData> | SlicedExecutionResultError<TData>;
|
|
66
|
+
/** Runtime guard interface shared by all slice result variants. */
|
|
67
|
+
declare class SlicedExecutionResultGuards<TData> {
|
|
68
|
+
private readonly type;
|
|
69
|
+
isSuccess(): this is SlicedExecutionResultSuccess<TData>;
|
|
70
|
+
isError(): this is SlicedExecutionResultError<TData>;
|
|
71
|
+
isEmpty(): this is SlicedExecutionResultEmpty<TData>;
|
|
72
|
+
constructor(type: "success" | "error" | "empty");
|
|
73
|
+
}
|
|
74
|
+
/** Variant representing an empty payload (no data, no error). */
|
|
75
|
+
declare class SlicedExecutionResultEmpty<TData> extends SlicedExecutionResultGuards<TData> implements SlicedExecutionResultCommon<TData, NormalizedError> {
|
|
76
|
+
constructor();
|
|
77
|
+
unwrap(): null;
|
|
78
|
+
safeUnwrap(): {
|
|
79
|
+
data: undefined;
|
|
80
|
+
error: undefined;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/** Variant representing a successful payload. */
|
|
84
|
+
declare class SlicedExecutionResultSuccess<TData> extends SlicedExecutionResultGuards<TData> implements SlicedExecutionResultCommon<TData, NormalizedError> {
|
|
85
|
+
readonly data: TData;
|
|
86
|
+
readonly extensions?: unknown | undefined;
|
|
87
|
+
constructor(data: TData, extensions?: unknown | undefined);
|
|
88
|
+
unwrap(): TData;
|
|
89
|
+
safeUnwrap<TTransformed>(transform: (data: TData) => TTransformed): {
|
|
90
|
+
data: TTransformed;
|
|
91
|
+
error: undefined;
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/** Variant representing an error payload. */
|
|
95
|
+
declare class SlicedExecutionResultError<TData> extends SlicedExecutionResultGuards<TData> implements SlicedExecutionResultCommon<TData, NormalizedError> {
|
|
96
|
+
readonly error: NormalizedError;
|
|
97
|
+
readonly extensions?: unknown | undefined;
|
|
98
|
+
constructor(error: NormalizedError, extensions?: unknown | undefined);
|
|
99
|
+
unwrap(): never;
|
|
100
|
+
safeUnwrap(): {
|
|
101
|
+
data: undefined;
|
|
102
|
+
error: NormalizedError;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//#endregion
|
|
106
|
+
//#region packages/colocation-tools/src/utils/type-utils.d.ts
|
|
107
|
+
type Tuple<T> = [T, ...T[]];
|
|
108
|
+
//#endregion
|
|
109
|
+
//#region packages/colocation-tools/src/projection.d.ts
|
|
110
|
+
/** Shape of a single selection slice projection. */
|
|
111
|
+
type AnyProjection = Projection<any>;
|
|
112
|
+
declare const __PROJECTION_BRAND__: unique symbol;
|
|
113
|
+
/**
|
|
114
|
+
* Nominal type representing any slice selection regardless of schema specifics.
|
|
115
|
+
* Encodes how individual slices map a concrete field path to a projection
|
|
116
|
+
* function. Multiple selections allow slices to expose several derived values.
|
|
117
|
+
*/
|
|
118
|
+
declare class Projection<TProjected> {
|
|
119
|
+
readonly projector: (result: AnySlicedExecutionResult) => TProjected;
|
|
120
|
+
readonly [__PROJECTION_BRAND__]: void;
|
|
121
|
+
readonly $infer: {
|
|
122
|
+
readonly output: TProjected;
|
|
123
|
+
};
|
|
124
|
+
constructor(paths: Tuple<string>, projector: (result: AnySlicedExecutionResult) => TProjected);
|
|
125
|
+
readonly paths: ProjectionPath[];
|
|
126
|
+
}
|
|
127
|
+
type ProjectionPath = {
|
|
128
|
+
full: string;
|
|
129
|
+
segments: Tuple<string>;
|
|
130
|
+
};
|
|
131
|
+
type InferExecutionResultProjection<TProjection extends AnyProjection> = ReturnType<TProjection["projector"]>;
|
|
132
|
+
//#endregion
|
|
133
|
+
//#region packages/colocation-tools/src/create-projection.d.ts
|
|
134
|
+
type AnyFragment = Fragment<string, any, any, any>;
|
|
135
|
+
/**
|
|
136
|
+
* Options for creating a projection from a Fragment.
|
|
137
|
+
*/
|
|
138
|
+
type CreateProjectionOptions<TOutput extends object, TProjected> = {
|
|
139
|
+
/**
|
|
140
|
+
* Field paths to extract from the execution result.
|
|
141
|
+
* Each path starts with "$." and follows the field selection structure.
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```typescript
|
|
145
|
+
* paths: ["$.user.id", "$.user.name"]
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
paths: Tuple<string>;
|
|
149
|
+
/**
|
|
150
|
+
* Handler function to transform the sliced execution result.
|
|
151
|
+
* Receives a SlicedExecutionResult with the Fragment's output type.
|
|
152
|
+
* Handles all cases: success, error, and empty.
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* handle: (result) => {
|
|
157
|
+
* if (result.isError()) return { error: result.error, data: null };
|
|
158
|
+
* if (result.isEmpty()) return { error: null, data: null };
|
|
159
|
+
* const data = result.unwrap();
|
|
160
|
+
* return { error: null, data: { userId: data.user.id } };
|
|
161
|
+
* }
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
handle: (result: SlicedExecutionResult<TOutput>) => TProjected;
|
|
165
|
+
};
|
|
166
|
+
/**
|
|
167
|
+
* Creates a type-safe projection from a Fragment.
|
|
168
|
+
*
|
|
169
|
+
* The projection extracts and transforms data from GraphQL execution results,
|
|
170
|
+
* with full type inference from the Fragment's output type.
|
|
171
|
+
*
|
|
172
|
+
* Note: The Fragment parameter is used only for type inference.
|
|
173
|
+
* The actual paths must be specified explicitly.
|
|
174
|
+
*
|
|
175
|
+
* @param _fragment - The Fragment to infer types from (used for type inference only)
|
|
176
|
+
* @param options - Projection options including paths and handle function
|
|
177
|
+
* @returns A Projection that can be used with createExecutionResultParser
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* ```typescript
|
|
181
|
+
* const userFragment = gql(({ fragment }) =>
|
|
182
|
+
* fragment.Query({ variables: [...] }, ({ f, $ }) => [
|
|
183
|
+
* f.user({ id: $.userId })(({ f }) => [f.id(), f.name()]),
|
|
184
|
+
* ])
|
|
185
|
+
* );
|
|
186
|
+
*
|
|
187
|
+
* const userProjection = createProjection(userFragment, {
|
|
188
|
+
* paths: ["$.user"],
|
|
189
|
+
* handle: (result) => {
|
|
190
|
+
* if (result.isError()) return { error: result.error, user: null };
|
|
191
|
+
* if (result.isEmpty()) return { error: null, user: null };
|
|
192
|
+
* const data = result.unwrap();
|
|
193
|
+
* return { error: null, user: data.user };
|
|
194
|
+
* },
|
|
195
|
+
* });
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
declare const createProjection: <TFragment extends AnyFragment, TProjected>(_fragment: TFragment, options: CreateProjectionOptions<TFragment["$infer"]["output"], TProjected>) => Projection<TProjected>;
|
|
199
|
+
declare const createProjectionAttachment: <TFragment extends AnyFragment, TProjected>(options: CreateProjectionOptions<NoInfer<TFragment>["$infer"]["output"], TProjected>) => GqlElementAttachment<TFragment, "projection", Projection<TProjected>>;
|
|
200
|
+
//#endregion
|
|
201
|
+
//#region packages/colocation-tools/src/projection-path-graph.d.ts
|
|
202
|
+
/**
|
|
203
|
+
* Node in the projection path graph tree.
|
|
204
|
+
* Used for mapping GraphQL errors and data to their corresponding slices.
|
|
205
|
+
*/
|
|
206
|
+
type ProjectionPathGraphNode = {
|
|
207
|
+
readonly matches: {
|
|
208
|
+
label: string;
|
|
209
|
+
path: string;
|
|
210
|
+
exact: boolean;
|
|
211
|
+
}[];
|
|
212
|
+
readonly children: {
|
|
213
|
+
readonly [segment: string]: ProjectionPathGraphNode;
|
|
214
|
+
};
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Payload from a slice that contains projection.
|
|
218
|
+
*/
|
|
219
|
+
type AnySlicePayload = {
|
|
220
|
+
readonly projection: AnyProjection;
|
|
221
|
+
};
|
|
222
|
+
type AnySlicePayloads = Record<string, AnySlicePayload>;
|
|
223
|
+
/**
|
|
224
|
+
* Creates a projection path graph from slice entries with field prefixing.
|
|
225
|
+
* Each slice's paths are prefixed with the slice label for disambiguation.
|
|
226
|
+
*/
|
|
227
|
+
declare function createPathGraphFromSliceEntries(fragments: AnySlicePayloads): ProjectionPathGraphNode;
|
|
228
|
+
//#endregion
|
|
229
|
+
//#region packages/colocation-tools/src/parse-execution-result.d.ts
|
|
230
|
+
/**
|
|
231
|
+
* Creates an execution result parser for composed operations.
|
|
232
|
+
* The parser maps GraphQL errors and data to their corresponding slices
|
|
233
|
+
* based on the projection path graph.
|
|
234
|
+
*
|
|
235
|
+
* @param slices - Object mapping labels to projections
|
|
236
|
+
* @returns A parser function that takes a NormalizedExecutionResult and returns parsed slices
|
|
237
|
+
*
|
|
238
|
+
* @example
|
|
239
|
+
* ```typescript
|
|
240
|
+
* const parser = createExecutionResultParser({
|
|
241
|
+
* userCard: userCardProjection,
|
|
242
|
+
* posts: postsProjection,
|
|
243
|
+
* });
|
|
244
|
+
*
|
|
245
|
+
* const results = parser({
|
|
246
|
+
* type: "graphql",
|
|
247
|
+
* body: { data, errors },
|
|
248
|
+
* });
|
|
249
|
+
* ```
|
|
250
|
+
*/
|
|
251
|
+
declare const createExecutionResultParser: <TSlices extends AnySlicePayloads>(slices: TSlices) => (result: NormalizedExecutionResult<object, object>) => any;
|
|
252
|
+
//#endregion
|
|
253
|
+
//#region packages/colocation-tools/src/types/field-path.d.ts
|
|
254
|
+
type AnyFieldPath = string;
|
|
255
|
+
/**
|
|
256
|
+
* Computes strongly typed "$.foo.bar" style selectors for a set of fields so
|
|
257
|
+
* slice result transforms can reference response paths safely.
|
|
258
|
+
*/
|
|
259
|
+
type AvailableFieldPathOf<TSchema extends AnyGraphqlSchema, TFields extends AnyFields> = AvailableFieldPathsInner<TSchema, TFields, "$">;
|
|
260
|
+
/** Recursive helper used to build path strings for nested selections. */
|
|
261
|
+
type AvailableFieldPathsInner<TSchema extends AnyGraphqlSchema, TFields extends AnyFields, TCurr extends AnyFieldPath> = { readonly [TAliasName in keyof TFields & string]: `${TCurr}.${TAliasName}` | (TFields[TAliasName] extends {
|
|
262
|
+
object: infer TNested extends AnyNestedObject;
|
|
263
|
+
} ? AvailableFieldPathsInner<TSchema, TNested, `${TCurr}.${TAliasName}`> : never) }[keyof TFields & string];
|
|
264
|
+
/** Resolve the TypeScript type located at a given field path. */
|
|
265
|
+
type InferByFieldPath<TSchema extends AnyGraphqlSchema, TFields extends AnyFields, TPath extends AnyFieldPath> = string extends keyof TFields ? any : TPath extends "$" ? never : InferByFieldPathInner<TSchema, TFields, TPath, "$">;
|
|
266
|
+
/** Internal helper that walks a field tree while matching a path literal. */
|
|
267
|
+
type InferByFieldPathInner<TSchema extends AnyGraphqlSchema, TFields extends AnyFields, TPathTarget extends AnyFieldPath, TPathCurrent extends AnyFieldPath> = { readonly [TAliasName in keyof TFields]: TAliasName extends string ? `${TPathCurrent}.${TAliasName}` extends TPathTarget ? InferField<TSchema, TFields[TAliasName]> : TFields[TAliasName] extends {
|
|
268
|
+
object: infer TNested extends AnyNestedObject;
|
|
269
|
+
} ? InferByFieldPathInner<TSchema, TNested, TPathTarget, `${TPathCurrent}.${TAliasName}`> : never : never }[keyof TFields];
|
|
270
|
+
//#endregion
|
|
271
|
+
export { type AnyFieldPath, type AnyProjection, type AnySlicePayload, type AnySlicePayloads, type AnySlicedExecutionResult, type AnySlicedExecutionResultRecord, type AvailableFieldPathOf, type CreateProjectionOptions, type EmptyResult, type GraphqlExecutionResult, type InferByFieldPath, type InferExecutionResultProjection, type NonGraphqlError, type NonGraphqlErrorResult, type NormalizedError, type NormalizedExecutionResult, Projection, type ProjectionPath, type ProjectionPathGraphNode, type SafeUnwrapResult, type SlicedExecutionResult, SlicedExecutionResultEmpty, SlicedExecutionResultError, SlicedExecutionResultSuccess, createExecutionResultParser, createPathGraphFromSliceEntries, createProjection, createProjectionAttachment };
|
|
272
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/sliced-execution-result.ts","../src/utils/type-utils.ts","../src/projection.ts","../src/create-projection.ts","../src/projection-path-graph.ts","../src/parse-execution-result.ts","../src/types/field-path.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import { AnyFields, AnyGraphqlSchema, AnyNestedObject, Fragment, GqlElementAttachment, InferField } from "@soda-gql/core";
|
|
2
|
+
import { FormattedExecutionResult, GraphQLFormattedError } from "graphql";
|
|
3
|
+
|
|
4
|
+
//#region packages/colocation-tools/src/types.d.ts
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Generic non-GraphQL error type for framework-specific errors.
|
|
8
|
+
* Users can define their own error shape.
|
|
9
|
+
*/
|
|
10
|
+
type NonGraphqlError = unknown;
|
|
11
|
+
/**
|
|
12
|
+
* Normalized execution result representing all possible outcomes
|
|
13
|
+
* from a GraphQL operation.
|
|
14
|
+
*/
|
|
15
|
+
type NormalizedExecutionResult<TData, TExtensions> = EmptyResult | GraphqlExecutionResult<TData, TExtensions> | NonGraphqlErrorResult;
|
|
16
|
+
type EmptyResult = {
|
|
17
|
+
type: "empty";
|
|
18
|
+
};
|
|
19
|
+
type GraphqlExecutionResult<TData, TExtensions> = {
|
|
20
|
+
type: "graphql";
|
|
21
|
+
body: FormattedExecutionResult<TData, TExtensions>;
|
|
22
|
+
};
|
|
23
|
+
type NonGraphqlErrorResult = {
|
|
24
|
+
type: "non-graphql-error";
|
|
25
|
+
error: NonGraphqlError;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Error types that can occur during slice result processing.
|
|
29
|
+
*/
|
|
30
|
+
type NormalizedError = {
|
|
31
|
+
type: "graphql-error";
|
|
32
|
+
errors: GraphQLFormattedError[];
|
|
33
|
+
} | {
|
|
34
|
+
type: "non-graphql-error";
|
|
35
|
+
error: NonGraphqlError;
|
|
36
|
+
} | {
|
|
37
|
+
type: "parse-error";
|
|
38
|
+
errors: Error[];
|
|
39
|
+
};
|
|
40
|
+
//#endregion
|
|
41
|
+
//#region packages/colocation-tools/src/sliced-execution-result.d.ts
|
|
42
|
+
type AnySlicedExecutionResult = SlicedExecutionResult<any>;
|
|
43
|
+
/**
|
|
44
|
+
* Internal discriminated union describing the Result-like wrapper exposed to
|
|
45
|
+
* slice selection callbacks.
|
|
46
|
+
*/
|
|
47
|
+
type AnySlicedExecutionResultRecord = {
|
|
48
|
+
[path: string]: AnySlicedExecutionResult;
|
|
49
|
+
};
|
|
50
|
+
type SafeUnwrapResult<TTransformed, TError> = {
|
|
51
|
+
data?: never;
|
|
52
|
+
error?: never;
|
|
53
|
+
} | {
|
|
54
|
+
data: TTransformed;
|
|
55
|
+
error?: never;
|
|
56
|
+
} | {
|
|
57
|
+
data?: never;
|
|
58
|
+
error: TError;
|
|
59
|
+
};
|
|
60
|
+
/** Utility signature returned by the safe unwrap helper. */
|
|
61
|
+
type SlicedExecutionResultCommon<TData, TError> = {
|
|
62
|
+
safeUnwrap<TTransformed>(transform: (data: TData) => TTransformed): SafeUnwrapResult<TTransformed, TError>;
|
|
63
|
+
};
|
|
64
|
+
/** Public union used by selection callbacks to inspect data, empty, or error states. */
|
|
65
|
+
type SlicedExecutionResult<TData> = SlicedExecutionResultEmpty<TData> | SlicedExecutionResultSuccess<TData> | SlicedExecutionResultError<TData>;
|
|
66
|
+
/** Runtime guard interface shared by all slice result variants. */
|
|
67
|
+
declare class SlicedExecutionResultGuards<TData> {
|
|
68
|
+
private readonly type;
|
|
69
|
+
isSuccess(): this is SlicedExecutionResultSuccess<TData>;
|
|
70
|
+
isError(): this is SlicedExecutionResultError<TData>;
|
|
71
|
+
isEmpty(): this is SlicedExecutionResultEmpty<TData>;
|
|
72
|
+
constructor(type: "success" | "error" | "empty");
|
|
73
|
+
}
|
|
74
|
+
/** Variant representing an empty payload (no data, no error). */
|
|
75
|
+
declare class SlicedExecutionResultEmpty<TData> extends SlicedExecutionResultGuards<TData> implements SlicedExecutionResultCommon<TData, NormalizedError> {
|
|
76
|
+
constructor();
|
|
77
|
+
unwrap(): null;
|
|
78
|
+
safeUnwrap(): {
|
|
79
|
+
data: undefined;
|
|
80
|
+
error: undefined;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/** Variant representing a successful payload. */
|
|
84
|
+
declare class SlicedExecutionResultSuccess<TData> extends SlicedExecutionResultGuards<TData> implements SlicedExecutionResultCommon<TData, NormalizedError> {
|
|
85
|
+
readonly data: TData;
|
|
86
|
+
readonly extensions?: unknown | undefined;
|
|
87
|
+
constructor(data: TData, extensions?: unknown | undefined);
|
|
88
|
+
unwrap(): TData;
|
|
89
|
+
safeUnwrap<TTransformed>(transform: (data: TData) => TTransformed): {
|
|
90
|
+
data: TTransformed;
|
|
91
|
+
error: undefined;
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/** Variant representing an error payload. */
|
|
95
|
+
declare class SlicedExecutionResultError<TData> extends SlicedExecutionResultGuards<TData> implements SlicedExecutionResultCommon<TData, NormalizedError> {
|
|
96
|
+
readonly error: NormalizedError;
|
|
97
|
+
readonly extensions?: unknown | undefined;
|
|
98
|
+
constructor(error: NormalizedError, extensions?: unknown | undefined);
|
|
99
|
+
unwrap(): never;
|
|
100
|
+
safeUnwrap(): {
|
|
101
|
+
data: undefined;
|
|
102
|
+
error: NormalizedError;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//#endregion
|
|
106
|
+
//#region packages/colocation-tools/src/utils/type-utils.d.ts
|
|
107
|
+
type Tuple<T> = [T, ...T[]];
|
|
108
|
+
//#endregion
|
|
109
|
+
//#region packages/colocation-tools/src/projection.d.ts
|
|
110
|
+
/** Shape of a single selection slice projection. */
|
|
111
|
+
type AnyProjection = Projection<any>;
|
|
112
|
+
declare const __PROJECTION_BRAND__: unique symbol;
|
|
113
|
+
/**
|
|
114
|
+
* Nominal type representing any slice selection regardless of schema specifics.
|
|
115
|
+
* Encodes how individual slices map a concrete field path to a projection
|
|
116
|
+
* function. Multiple selections allow slices to expose several derived values.
|
|
117
|
+
*/
|
|
118
|
+
declare class Projection<TProjected> {
|
|
119
|
+
readonly projector: (result: AnySlicedExecutionResult) => TProjected;
|
|
120
|
+
readonly [__PROJECTION_BRAND__]: void;
|
|
121
|
+
readonly $infer: {
|
|
122
|
+
readonly output: TProjected;
|
|
123
|
+
};
|
|
124
|
+
constructor(paths: Tuple<string>, projector: (result: AnySlicedExecutionResult) => TProjected);
|
|
125
|
+
readonly paths: ProjectionPath[];
|
|
126
|
+
}
|
|
127
|
+
type ProjectionPath = {
|
|
128
|
+
full: string;
|
|
129
|
+
segments: Tuple<string>;
|
|
130
|
+
};
|
|
131
|
+
type InferExecutionResultProjection<TProjection extends AnyProjection> = ReturnType<TProjection["projector"]>;
|
|
132
|
+
//#endregion
|
|
133
|
+
//#region packages/colocation-tools/src/create-projection.d.ts
|
|
134
|
+
type AnyFragment = Fragment<string, any, any, any>;
|
|
135
|
+
/**
|
|
136
|
+
* Options for creating a projection from a Fragment.
|
|
137
|
+
*/
|
|
138
|
+
type CreateProjectionOptions<TOutput extends object, TProjected> = {
|
|
139
|
+
/**
|
|
140
|
+
* Field paths to extract from the execution result.
|
|
141
|
+
* Each path starts with "$." and follows the field selection structure.
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```typescript
|
|
145
|
+
* paths: ["$.user.id", "$.user.name"]
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
paths: Tuple<string>;
|
|
149
|
+
/**
|
|
150
|
+
* Handler function to transform the sliced execution result.
|
|
151
|
+
* Receives a SlicedExecutionResult with the Fragment's output type.
|
|
152
|
+
* Handles all cases: success, error, and empty.
|
|
153
|
+
*
|
|
154
|
+
* @example
|
|
155
|
+
* ```typescript
|
|
156
|
+
* handle: (result) => {
|
|
157
|
+
* if (result.isError()) return { error: result.error, data: null };
|
|
158
|
+
* if (result.isEmpty()) return { error: null, data: null };
|
|
159
|
+
* const data = result.unwrap();
|
|
160
|
+
* return { error: null, data: { userId: data.user.id } };
|
|
161
|
+
* }
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
handle: (result: SlicedExecutionResult<TOutput>) => TProjected;
|
|
165
|
+
};
|
|
166
|
+
/**
|
|
167
|
+
* Creates a type-safe projection from a Fragment.
|
|
168
|
+
*
|
|
169
|
+
* The projection extracts and transforms data from GraphQL execution results,
|
|
170
|
+
* with full type inference from the Fragment's output type.
|
|
171
|
+
*
|
|
172
|
+
* Note: The Fragment parameter is used only for type inference.
|
|
173
|
+
* The actual paths must be specified explicitly.
|
|
174
|
+
*
|
|
175
|
+
* @param _fragment - The Fragment to infer types from (used for type inference only)
|
|
176
|
+
* @param options - Projection options including paths and handle function
|
|
177
|
+
* @returns A Projection that can be used with createExecutionResultParser
|
|
178
|
+
*
|
|
179
|
+
* @example
|
|
180
|
+
* ```typescript
|
|
181
|
+
* const userFragment = gql(({ fragment }) =>
|
|
182
|
+
* fragment.Query({ variables: [...] }, ({ f, $ }) => [
|
|
183
|
+
* f.user({ id: $.userId })(({ f }) => [f.id(), f.name()]),
|
|
184
|
+
* ])
|
|
185
|
+
* );
|
|
186
|
+
*
|
|
187
|
+
* const userProjection = createProjection(userFragment, {
|
|
188
|
+
* paths: ["$.user"],
|
|
189
|
+
* handle: (result) => {
|
|
190
|
+
* if (result.isError()) return { error: result.error, user: null };
|
|
191
|
+
* if (result.isEmpty()) return { error: null, user: null };
|
|
192
|
+
* const data = result.unwrap();
|
|
193
|
+
* return { error: null, user: data.user };
|
|
194
|
+
* },
|
|
195
|
+
* });
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
declare const createProjection: <TFragment extends AnyFragment, TProjected>(_fragment: TFragment, options: CreateProjectionOptions<TFragment["$infer"]["output"], TProjected>) => Projection<TProjected>;
|
|
199
|
+
declare const createProjectionAttachment: <TFragment extends AnyFragment, TProjected>(options: CreateProjectionOptions<NoInfer<TFragment>["$infer"]["output"], TProjected>) => GqlElementAttachment<TFragment, "projection", Projection<TProjected>>;
|
|
200
|
+
//#endregion
|
|
201
|
+
//#region packages/colocation-tools/src/projection-path-graph.d.ts
|
|
202
|
+
/**
|
|
203
|
+
* Node in the projection path graph tree.
|
|
204
|
+
* Used for mapping GraphQL errors and data to their corresponding slices.
|
|
205
|
+
*/
|
|
206
|
+
type ProjectionPathGraphNode = {
|
|
207
|
+
readonly matches: {
|
|
208
|
+
label: string;
|
|
209
|
+
path: string;
|
|
210
|
+
exact: boolean;
|
|
211
|
+
}[];
|
|
212
|
+
readonly children: {
|
|
213
|
+
readonly [segment: string]: ProjectionPathGraphNode;
|
|
214
|
+
};
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Payload from a slice that contains projection.
|
|
218
|
+
*/
|
|
219
|
+
type AnySlicePayload = {
|
|
220
|
+
readonly projection: AnyProjection;
|
|
221
|
+
};
|
|
222
|
+
type AnySlicePayloads = Record<string, AnySlicePayload>;
|
|
223
|
+
/**
|
|
224
|
+
* Creates a projection path graph from slice entries with field prefixing.
|
|
225
|
+
* Each slice's paths are prefixed with the slice label for disambiguation.
|
|
226
|
+
*/
|
|
227
|
+
declare function createPathGraphFromSliceEntries(fragments: AnySlicePayloads): ProjectionPathGraphNode;
|
|
228
|
+
//#endregion
|
|
229
|
+
//#region packages/colocation-tools/src/parse-execution-result.d.ts
|
|
230
|
+
/**
|
|
231
|
+
* Creates an execution result parser for composed operations.
|
|
232
|
+
* The parser maps GraphQL errors and data to their corresponding slices
|
|
233
|
+
* based on the projection path graph.
|
|
234
|
+
*
|
|
235
|
+
* @param slices - Object mapping labels to projections
|
|
236
|
+
* @returns A parser function that takes a NormalizedExecutionResult and returns parsed slices
|
|
237
|
+
*
|
|
238
|
+
* @example
|
|
239
|
+
* ```typescript
|
|
240
|
+
* const parser = createExecutionResultParser({
|
|
241
|
+
* userCard: userCardProjection,
|
|
242
|
+
* posts: postsProjection,
|
|
243
|
+
* });
|
|
244
|
+
*
|
|
245
|
+
* const results = parser({
|
|
246
|
+
* type: "graphql",
|
|
247
|
+
* body: { data, errors },
|
|
248
|
+
* });
|
|
249
|
+
* ```
|
|
250
|
+
*/
|
|
251
|
+
declare const createExecutionResultParser: <TSlices extends AnySlicePayloads>(slices: TSlices) => (result: NormalizedExecutionResult<object, object>) => any;
|
|
252
|
+
//#endregion
|
|
253
|
+
//#region packages/colocation-tools/src/types/field-path.d.ts
|
|
254
|
+
type AnyFieldPath = string;
|
|
255
|
+
/**
|
|
256
|
+
* Computes strongly typed "$.foo.bar" style selectors for a set of fields so
|
|
257
|
+
* slice result transforms can reference response paths safely.
|
|
258
|
+
*/
|
|
259
|
+
type AvailableFieldPathOf<TSchema extends AnyGraphqlSchema, TFields extends AnyFields> = AvailableFieldPathsInner<TSchema, TFields, "$">;
|
|
260
|
+
/** Recursive helper used to build path strings for nested selections. */
|
|
261
|
+
type AvailableFieldPathsInner<TSchema extends AnyGraphqlSchema, TFields extends AnyFields, TCurr extends AnyFieldPath> = { readonly [TAliasName in keyof TFields & string]: `${TCurr}.${TAliasName}` | (TFields[TAliasName] extends {
|
|
262
|
+
object: infer TNested extends AnyNestedObject;
|
|
263
|
+
} ? AvailableFieldPathsInner<TSchema, TNested, `${TCurr}.${TAliasName}`> : never) }[keyof TFields & string];
|
|
264
|
+
/** Resolve the TypeScript type located at a given field path. */
|
|
265
|
+
type InferByFieldPath<TSchema extends AnyGraphqlSchema, TFields extends AnyFields, TPath extends AnyFieldPath> = string extends keyof TFields ? any : TPath extends "$" ? never : InferByFieldPathInner<TSchema, TFields, TPath, "$">;
|
|
266
|
+
/** Internal helper that walks a field tree while matching a path literal. */
|
|
267
|
+
type InferByFieldPathInner<TSchema extends AnyGraphqlSchema, TFields extends AnyFields, TPathTarget extends AnyFieldPath, TPathCurrent extends AnyFieldPath> = { readonly [TAliasName in keyof TFields]: TAliasName extends string ? `${TPathCurrent}.${TAliasName}` extends TPathTarget ? InferField<TSchema, TFields[TAliasName]> : TFields[TAliasName] extends {
|
|
268
|
+
object: infer TNested extends AnyNestedObject;
|
|
269
|
+
} ? InferByFieldPathInner<TSchema, TNested, TPathTarget, `${TPathCurrent}.${TAliasName}`> : never : never }[keyof TFields];
|
|
270
|
+
//#endregion
|
|
271
|
+
export { type AnyFieldPath, type AnyProjection, type AnySlicePayload, type AnySlicePayloads, type AnySlicedExecutionResult, type AnySlicedExecutionResultRecord, type AvailableFieldPathOf, type CreateProjectionOptions, type EmptyResult, type GraphqlExecutionResult, type InferByFieldPath, type InferExecutionResultProjection, type NonGraphqlError, type NonGraphqlErrorResult, type NormalizedError, type NormalizedExecutionResult, Projection, type ProjectionPath, type ProjectionPathGraphNode, type SafeUnwrapResult, type SlicedExecutionResult, SlicedExecutionResultEmpty, SlicedExecutionResultError, SlicedExecutionResultSuccess, createExecutionResultParser, createPathGraphFromSliceEntries, createProjection, createProjectionAttachment };
|
|
272
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/sliced-execution-result.ts","../src/utils/type-utils.ts","../src/projection.ts","../src/create-projection.ts","../src/projection-path-graph.ts","../src/parse-execution-result.ts","../src/types/field-path.ts"],"sourcesContent":[],"mappings":"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"}
|