@lokalise/api-contracts 6.10.0 → 6.12.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 +286 -326
- package/dist/apiContracts.d.ts +19 -13
- package/dist/apiContracts.js +19 -13
- package/dist/apiContracts.js.map +1 -1
- package/dist/contractBuilder.d.ts +20 -0
- package/dist/contractBuilder.js.map +1 -1
- package/dist/new/contractResponse.d.ts +18 -5
- package/dist/new/contractResponse.js +14 -5
- package/dist/new/contractResponse.js.map +1 -1
- package/dist/new/defineApiContract.d.ts +2 -0
- package/dist/new/defineApiContract.js +5 -2
- package/dist/new/defineApiContract.js.map +1 -1
- package/dist/rest/restContractBuilder.d.ts +20 -0
- package/dist/rest/restContractBuilder.js.map +1 -1
- package/dist/sse/sseContractBuilders.js +37 -0
- package/dist/sse/sseContractBuilders.js.map +1 -1
- package/package.json +57 -57
package/dist/apiContracts.d.ts
CHANGED
|
@@ -59,7 +59,7 @@ export type DeleteRouteDefinition<SuccessResponseBodySchema extends z.Schema | u
|
|
|
59
59
|
method: 'delete';
|
|
60
60
|
};
|
|
61
61
|
/**
|
|
62
|
-
* @deprecated Use `
|
|
62
|
+
* @deprecated Use `defineApiContract` instead. This function will be removed in a future version.
|
|
63
63
|
* @example
|
|
64
64
|
* ```typescript
|
|
65
65
|
* // Before (deprecated):
|
|
@@ -71,17 +71,17 @@ export type DeleteRouteDefinition<SuccessResponseBodySchema extends z.Schema | u
|
|
|
71
71
|
* })
|
|
72
72
|
*
|
|
73
73
|
* // After (recommended):
|
|
74
|
-
* const route =
|
|
74
|
+
* const route = defineApiContract({
|
|
75
75
|
* method: 'post',
|
|
76
76
|
* requestBodySchema: bodySchema,
|
|
77
|
-
* successResponseBodySchema: responseSchema,
|
|
78
77
|
* pathResolver: () => '/api/users',
|
|
78
|
+
* responsesByStatusCode: { 201: responseSchema },
|
|
79
79
|
* })
|
|
80
80
|
* ```
|
|
81
81
|
*/
|
|
82
82
|
export declare function buildPayloadRoute<RequestBodySchema extends z.Schema | undefined = undefined, SuccessResponseBodySchema extends z.Schema | undefined = undefined, PathParamsSchema extends z.Schema | undefined = undefined, RequestQuerySchema extends z.Schema | undefined = undefined, RequestHeaderSchema extends z.Schema | undefined = undefined, ResponseHeaderSchema extends z.Schema | undefined = undefined, IsNonJSONResponseExpected extends boolean = false, IsEmptyResponseExpected extends boolean = false, ResponseSchemasByStatusCode extends Partial<Record<HttpStatusCode, z.Schema>> | undefined = undefined>(params: PayloadRouteDefinition<RequestBodySchema, SuccessResponseBodySchema, PathParamsSchema, RequestQuerySchema, RequestHeaderSchema, ResponseHeaderSchema, IsNonJSONResponseExpected, IsEmptyResponseExpected, ResponseSchemasByStatusCode>): PayloadRouteDefinition<RequestBodySchema, SuccessResponseBodySchema, PathParamsSchema, RequestQuerySchema, RequestHeaderSchema, ResponseHeaderSchema, IsNonJSONResponseExpected, IsEmptyResponseExpected, ResponseSchemasByStatusCode>;
|
|
83
83
|
/**
|
|
84
|
-
* @deprecated Use `
|
|
84
|
+
* @deprecated Use `defineApiContract` instead. This function will be removed in a future version.
|
|
85
85
|
* @example
|
|
86
86
|
* ```typescript
|
|
87
87
|
* // Before (deprecated):
|
|
@@ -91,34 +91,40 @@ export declare function buildPayloadRoute<RequestBodySchema extends z.Schema | u
|
|
|
91
91
|
* })
|
|
92
92
|
*
|
|
93
93
|
* // After (recommended):
|
|
94
|
-
* const route =
|
|
95
|
-
*
|
|
94
|
+
* const route = defineApiContract({
|
|
95
|
+
* method: 'get',
|
|
96
96
|
* pathResolver: () => '/api/users',
|
|
97
|
+
* responsesByStatusCode: { 200: responseSchema },
|
|
97
98
|
* })
|
|
98
99
|
* ```
|
|
99
100
|
*/
|
|
100
101
|
export declare function buildGetRoute<SuccessResponseBodySchema extends z.Schema | undefined = undefined, PathParamsSchema extends z.Schema | undefined = undefined, RequestQuerySchema extends z.Schema | undefined = undefined, RequestHeaderSchema extends z.Schema | undefined = undefined, ResponseHeaderSchema extends z.Schema | undefined = undefined, IsNonJSONResponseExpected extends boolean = false, IsEmptyResponseExpected extends boolean = false, ResponseSchemasByStatusCode extends Partial<Record<HttpStatusCode, z.Schema>> | undefined = undefined>(params: Omit<GetRouteDefinition<SuccessResponseBodySchema, PathParamsSchema, RequestQuerySchema, RequestHeaderSchema, ResponseHeaderSchema, IsNonJSONResponseExpected, IsEmptyResponseExpected, ResponseSchemasByStatusCode>, 'method'>): GetRouteDefinition<SuccessResponseBodySchema, PathParamsSchema, RequestQuerySchema, RequestHeaderSchema, ResponseHeaderSchema, IsNonJSONResponseExpected, IsEmptyResponseExpected, ResponseSchemasByStatusCode>;
|
|
101
102
|
/**
|
|
102
|
-
* @deprecated Use `
|
|
103
|
+
* @deprecated Use `defineApiContract` instead. This function will be removed in a future version.
|
|
103
104
|
* @example
|
|
104
105
|
* ```typescript
|
|
105
106
|
* // Before (deprecated):
|
|
106
107
|
* const route = buildDeleteRoute({
|
|
107
|
-
*
|
|
108
|
-
* pathResolver: () =>
|
|
108
|
+
* requestPathParamsSchema: z.object({ userId: z.string() }),
|
|
109
|
+
* pathResolver: (params) => `/api/users/${params.userId}`,
|
|
109
110
|
* })
|
|
110
111
|
*
|
|
111
112
|
* // After (recommended):
|
|
112
|
-
* const route =
|
|
113
|
+
* const route = defineApiContract({
|
|
113
114
|
* method: 'delete',
|
|
114
|
-
*
|
|
115
|
-
* pathResolver: () =>
|
|
115
|
+
* requestPathParamsSchema: z.object({ userId: z.string() }),
|
|
116
|
+
* pathResolver: ({ userId }) => `/api/users/${userId}`,
|
|
117
|
+
* responsesByStatusCode: { 204: ContractNoBody },
|
|
116
118
|
* })
|
|
117
119
|
* ```
|
|
118
120
|
*/
|
|
119
121
|
export declare function buildDeleteRoute<SuccessResponseBodySchema extends z.Schema | undefined = undefined, PathParamsSchema extends z.Schema | undefined = undefined, RequestQuerySchema extends z.Schema | undefined = undefined, RequestHeaderSchema extends z.Schema | undefined = undefined, ResponseHeaderSchema extends z.Schema | undefined = undefined, IsNonJSONResponseExpected extends boolean = false, IsEmptyResponseExpected extends boolean = true, ResponseSchemasByStatusCode extends Partial<Record<HttpStatusCode, z.Schema>> | undefined = undefined>(params: Omit<DeleteRouteDefinition<SuccessResponseBodySchema, PathParamsSchema, RequestQuerySchema, RequestHeaderSchema, ResponseHeaderSchema, IsNonJSONResponseExpected, IsEmptyResponseExpected, ResponseSchemasByStatusCode>, 'method'>): DeleteRouteDefinition<SuccessResponseBodySchema, PathParamsSchema, RequestQuerySchema, RequestHeaderSchema, ResponseHeaderSchema, IsNonJSONResponseExpected, IsEmptyResponseExpected, ResponseSchemasByStatusCode>;
|
|
120
122
|
/**
|
|
121
|
-
*
|
|
123
|
+
* @deprecated Use `mapApiContractToPath` instead.
|
|
124
|
+
* Maps a route definition to a path string of the format '/static-path-part/:path-param-value'.
|
|
122
125
|
*/
|
|
123
126
|
export declare function mapRouteToPath(routeDefinition: CommonRouteDefinition<any, any, any, any, any, any, any, any>): string;
|
|
127
|
+
/**
|
|
128
|
+
* @deprecated Use `describeApiContract` instead.
|
|
129
|
+
*/
|
|
124
130
|
export declare function describeContract(contract: PayloadRouteDefinition<any, any, any, any, any, any, any, any, any> | GetRouteDefinition<any, any, any, any, any, any, any, any> | DeleteRouteDefinition<any, any, any, any, any, any, any, any>): string;
|
package/dist/apiContracts.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const EMPTY_PARAMS = {};
|
|
2
2
|
/**
|
|
3
|
-
* @deprecated Use `
|
|
3
|
+
* @deprecated Use `defineApiContract` instead. This function will be removed in a future version.
|
|
4
4
|
* @example
|
|
5
5
|
* ```typescript
|
|
6
6
|
* // Before (deprecated):
|
|
@@ -12,11 +12,11 @@ const EMPTY_PARAMS = {};
|
|
|
12
12
|
* })
|
|
13
13
|
*
|
|
14
14
|
* // After (recommended):
|
|
15
|
-
* const route =
|
|
15
|
+
* const route = defineApiContract({
|
|
16
16
|
* method: 'post',
|
|
17
17
|
* requestBodySchema: bodySchema,
|
|
18
|
-
* successResponseBodySchema: responseSchema,
|
|
19
18
|
* pathResolver: () => '/api/users',
|
|
19
|
+
* responsesByStatusCode: { 201: responseSchema },
|
|
20
20
|
* })
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
@@ -40,7 +40,7 @@ export function buildPayloadRoute(params) {
|
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
|
-
* @deprecated Use `
|
|
43
|
+
* @deprecated Use `defineApiContract` instead. This function will be removed in a future version.
|
|
44
44
|
* @example
|
|
45
45
|
* ```typescript
|
|
46
46
|
* // Before (deprecated):
|
|
@@ -50,9 +50,10 @@ export function buildPayloadRoute(params) {
|
|
|
50
50
|
* })
|
|
51
51
|
*
|
|
52
52
|
* // After (recommended):
|
|
53
|
-
* const route =
|
|
54
|
-
*
|
|
53
|
+
* const route = defineApiContract({
|
|
54
|
+
* method: 'get',
|
|
55
55
|
* pathResolver: () => '/api/users',
|
|
56
|
+
* responsesByStatusCode: { 200: responseSchema },
|
|
56
57
|
* })
|
|
57
58
|
* ```
|
|
58
59
|
*/
|
|
@@ -75,20 +76,21 @@ export function buildGetRoute(params) {
|
|
|
75
76
|
};
|
|
76
77
|
}
|
|
77
78
|
/**
|
|
78
|
-
* @deprecated Use `
|
|
79
|
+
* @deprecated Use `defineApiContract` instead. This function will be removed in a future version.
|
|
79
80
|
* @example
|
|
80
81
|
* ```typescript
|
|
81
82
|
* // Before (deprecated):
|
|
82
83
|
* const route = buildDeleteRoute({
|
|
83
|
-
*
|
|
84
|
-
* pathResolver: () =>
|
|
84
|
+
* requestPathParamsSchema: z.object({ userId: z.string() }),
|
|
85
|
+
* pathResolver: (params) => `/api/users/${params.userId}`,
|
|
85
86
|
* })
|
|
86
87
|
*
|
|
87
88
|
* // After (recommended):
|
|
88
|
-
* const route =
|
|
89
|
+
* const route = defineApiContract({
|
|
89
90
|
* method: 'delete',
|
|
90
|
-
*
|
|
91
|
-
* pathResolver: () =>
|
|
91
|
+
* requestPathParamsSchema: z.object({ userId: z.string() }),
|
|
92
|
+
* pathResolver: ({ userId }) => `/api/users/${userId}`,
|
|
93
|
+
* responsesByStatusCode: { 204: ContractNoBody },
|
|
92
94
|
* })
|
|
93
95
|
* ```
|
|
94
96
|
*/
|
|
@@ -111,7 +113,8 @@ export function buildDeleteRoute(params) {
|
|
|
111
113
|
};
|
|
112
114
|
}
|
|
113
115
|
/**
|
|
114
|
-
*
|
|
116
|
+
* @deprecated Use `mapApiContractToPath` instead.
|
|
117
|
+
* Maps a route definition to a path string of the format '/static-path-part/:path-param-value'.
|
|
115
118
|
*/
|
|
116
119
|
export function mapRouteToPath(
|
|
117
120
|
// biome-ignore lint/suspicious/noExplicitAny: We don't care about types here, we just need Zod schema
|
|
@@ -126,6 +129,9 @@ routeDefinition) {
|
|
|
126
129
|
}
|
|
127
130
|
return routeDefinition.pathResolver(resolverParams);
|
|
128
131
|
}
|
|
132
|
+
/**
|
|
133
|
+
* @deprecated Use `describeApiContract` instead.
|
|
134
|
+
*/
|
|
129
135
|
export function describeContract(contract) {
|
|
130
136
|
return `${contract.method.toUpperCase()} ${mapRouteToPath(contract)}`;
|
|
131
137
|
}
|
package/dist/apiContracts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiContracts.js","sourceRoot":"","sources":["../src/apiContracts.ts"],"names":[],"mappings":"AAGA,MAAM,YAAY,GAAG,EAAE,CAAA;AA8JvB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,iBAAiB,CAa/B,MAUC;IAYD,OAAO;QACL,uBAAuB,EAAE,MAAM,CAAC,uBAAuB,IAAK,KAAiC;QAC7F,yBAAyB,EACvB,MAAM,CAAC,yBAAyB,IAAK,KAAmC;QAC1E,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;QAC3C,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;QAC/C,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;QACjD,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;QACvD,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,yBAAyB,EAAE,MAAM,CAAC,yBAAyB;QAC3D,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,2BAA2B,EAAE,MAAM,CAAC,2BAA2B;QAC/D,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAA;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"apiContracts.js","sourceRoot":"","sources":["../src/apiContracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,26 @@ import { type DualModeGetContractConfig, type DualModePayloadContractConfig, typ
|
|
|
7
7
|
import type { SSEContractDefinition } from './sse/sseContracts.ts';
|
|
8
8
|
import type { SSEEventSchemas } from './sse/sseTypes.ts';
|
|
9
9
|
/**
|
|
10
|
+
* @deprecated Use `defineApiContract` instead. This function will be removed in a future version.
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* // Before (deprecated):
|
|
14
|
+
* const contract = buildContract({
|
|
15
|
+
* method: 'post',
|
|
16
|
+
* requestBodySchema: bodySchema,
|
|
17
|
+
* successResponseBodySchema: responseSchema,
|
|
18
|
+
* pathResolver: () => '/api/resource',
|
|
19
|
+
* })
|
|
20
|
+
*
|
|
21
|
+
* // After (recommended):
|
|
22
|
+
* const contract = defineApiContract({
|
|
23
|
+
* method: 'post',
|
|
24
|
+
* requestBodySchema: bodySchema,
|
|
25
|
+
* pathResolver: () => '/api/resource',
|
|
26
|
+
* responsesByStatusCode: { 201: responseSchema },
|
|
27
|
+
* })
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
10
30
|
* Universal contract builder that creates either REST or SSE contracts based on configuration.
|
|
11
31
|
*
|
|
12
32
|
* This is a unified entry point that delegates to:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contractBuilder.js","sourceRoot":"","sources":["../src/contractBuilder.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,iBAAiB,GAIlB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,gBAAgB,GAKjB,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"contractBuilder.js","sourceRoot":"","sources":["../src/contractBuilder.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,iBAAiB,GAIlB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EACL,gBAAgB,GAKjB,MAAM,8BAA8B,CAAA;AA2UrC,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,UAAU,aAAa;AAC3B,wEAAwE;AACxE,MAAW;IAGX,MAAM,YAAY,GAChB,wBAAwB,IAAI,MAAM,IAAI,MAAM,CAAC,sBAAsB,KAAK,SAAS,CAAA;IAEnF,IAAI,YAAY,EAAE,CAAC;QACjB,mCAAmC;QACnC,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACjC,CAAC;IAED,oCAAoC;IACpC,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAA;AAClC,CAAC"}
|
|
@@ -1,24 +1,30 @@
|
|
|
1
1
|
import type { z } from 'zod/v4';
|
|
2
2
|
import type { HttpStatusCode } from '../HttpStatusCodes.ts';
|
|
3
3
|
import { ContractNoBody } from './constants.ts';
|
|
4
|
+
export type ResponseOptions = {
|
|
5
|
+
readonly description?: string;
|
|
6
|
+
};
|
|
4
7
|
export type TypedTextResponse = {
|
|
5
8
|
readonly _tag: 'TextResponse';
|
|
6
9
|
readonly contentType: string;
|
|
10
|
+
readonly description?: string;
|
|
7
11
|
};
|
|
8
|
-
export declare const textResponse: (contentType: string) => TypedTextResponse;
|
|
12
|
+
export declare const textResponse: (contentType: string, options?: ResponseOptions) => TypedTextResponse;
|
|
9
13
|
export declare const isTextResponse: (value: ApiContractResponse) => value is TypedTextResponse;
|
|
10
14
|
export type TypedBlobResponse = {
|
|
11
15
|
readonly _tag: 'BlobResponse';
|
|
12
16
|
readonly contentType: string;
|
|
17
|
+
readonly description?: string;
|
|
13
18
|
};
|
|
14
|
-
export declare const blobResponse: (contentType: string) => TypedBlobResponse;
|
|
19
|
+
export declare const blobResponse: (contentType: string, options?: ResponseOptions) => TypedBlobResponse;
|
|
15
20
|
export declare const isBlobResponse: (value: ApiContractResponse) => value is TypedBlobResponse;
|
|
16
21
|
export type SseSchemaByEventName = Record<string, z.ZodType>;
|
|
17
22
|
export type TypedSseResponse<T extends SseSchemaByEventName = SseSchemaByEventName> = {
|
|
18
23
|
readonly _tag: 'SseResponse';
|
|
19
24
|
readonly schemaByEventName: T;
|
|
25
|
+
readonly description?: string;
|
|
20
26
|
};
|
|
21
|
-
export declare const sseResponse: <T extends SseSchemaByEventName>(schemaByEventName: T) => TypedSseResponse<T>;
|
|
27
|
+
export declare const sseResponse: <T extends SseSchemaByEventName>(schemaByEventName: T, options?: ResponseOptions) => TypedSseResponse<T>;
|
|
22
28
|
export declare const isSseResponse: (value: ApiContractResponse) => value is TypedSseResponse;
|
|
23
29
|
export type TypedJsonResponse = z.ZodType;
|
|
24
30
|
export declare const isJsonResponse: (value: ApiContractResponse) => value is TypedJsonResponse;
|
|
@@ -26,10 +32,17 @@ export type TypedApiContractResponse = TypedJsonResponse | TypedTextResponse | T
|
|
|
26
32
|
export type AnyOfResponses<T extends TypedApiContractResponse = TypedApiContractResponse> = {
|
|
27
33
|
readonly _tag: 'AnyOfResponses';
|
|
28
34
|
readonly responses: T[];
|
|
35
|
+
readonly description?: string;
|
|
29
36
|
};
|
|
30
|
-
export declare const anyOfResponses: <T extends TypedApiContractResponse>(responses: T[]) => AnyOfResponses<T>;
|
|
37
|
+
export declare const anyOfResponses: <T extends TypedApiContractResponse>(responses: T[], options?: ResponseOptions) => AnyOfResponses<T>;
|
|
31
38
|
export declare const isAnyOfResponses: (value: ApiContractResponse) => value is AnyOfResponses;
|
|
32
|
-
export type
|
|
39
|
+
export type NoBodyResponse = {
|
|
40
|
+
readonly _tag: 'NoBodyResponse';
|
|
41
|
+
readonly description?: string;
|
|
42
|
+
};
|
|
43
|
+
export declare const noBodyResponse: (options?: ResponseOptions) => NoBodyResponse;
|
|
44
|
+
export declare const isNoBodyResponse: (value: ApiContractResponse) => value is NoBodyResponse;
|
|
45
|
+
export type ApiContractResponse = typeof ContractNoBody | NoBodyResponse | TypedApiContractResponse | AnyOfResponses;
|
|
33
46
|
export type ResponsesByStatusCode = Partial<Record<HttpStatusCode, ApiContractResponse>>;
|
|
34
47
|
export type ResponseKind = {
|
|
35
48
|
kind: 'noContent';
|
|
@@ -1,25 +1,34 @@
|
|
|
1
1
|
import { ContractNoBody } from "./constants.js";
|
|
2
|
-
export const textResponse = (contentType) => ({
|
|
2
|
+
export const textResponse = (contentType, options) => ({
|
|
3
3
|
_tag: 'TextResponse',
|
|
4
4
|
contentType,
|
|
5
|
+
...(options?.description !== undefined && { description: options.description }),
|
|
5
6
|
});
|
|
6
7
|
export const isTextResponse = (value) => typeof value === 'object' && value !== null && '_tag' in value && value._tag === 'TextResponse';
|
|
7
|
-
export const blobResponse = (contentType) => ({
|
|
8
|
+
export const blobResponse = (contentType, options) => ({
|
|
8
9
|
_tag: 'BlobResponse',
|
|
9
10
|
contentType,
|
|
11
|
+
...(options?.description !== undefined && { description: options.description }),
|
|
10
12
|
});
|
|
11
13
|
export const isBlobResponse = (value) => typeof value === 'object' && value !== null && '_tag' in value && value._tag === 'BlobResponse';
|
|
12
|
-
export const sseResponse = (schemaByEventName) => ({
|
|
14
|
+
export const sseResponse = (schemaByEventName, options) => ({
|
|
13
15
|
_tag: 'SseResponse',
|
|
14
16
|
schemaByEventName,
|
|
17
|
+
...(options?.description !== undefined && { description: options.description }),
|
|
15
18
|
});
|
|
16
19
|
export const isSseResponse = (value) => typeof value === 'object' && value !== null && '_tag' in value && value._tag === 'SseResponse';
|
|
17
20
|
export const isJsonResponse = (value) => typeof value === 'object' && value !== null && !('_tag' in value);
|
|
18
|
-
export const anyOfResponses = (responses) => ({
|
|
21
|
+
export const anyOfResponses = (responses, options) => ({
|
|
19
22
|
_tag: 'AnyOfResponses',
|
|
20
23
|
responses,
|
|
24
|
+
...(options?.description !== undefined && { description: options.description }),
|
|
21
25
|
});
|
|
22
26
|
export const isAnyOfResponses = (value) => typeof value === 'object' && value !== null && '_tag' in value && value._tag === 'AnyOfResponses';
|
|
27
|
+
export const noBodyResponse = (options) => ({
|
|
28
|
+
_tag: 'NoBodyResponse',
|
|
29
|
+
...(options?.description !== undefined && { description: options.description }),
|
|
30
|
+
});
|
|
31
|
+
export const isNoBodyResponse = (value) => typeof value === 'object' && value !== null && '_tag' in value && value._tag === 'NoBodyResponse';
|
|
23
32
|
const matchTypedResponse = (entry, contentType) => {
|
|
24
33
|
if (isTextResponse(entry)) {
|
|
25
34
|
return contentType.includes(entry.contentType) ? { kind: 'text' } : null;
|
|
@@ -66,7 +75,7 @@ const resolveByKind = (entry) => {
|
|
|
66
75
|
* content-type to disambiguate regardless of this flag.
|
|
67
76
|
*/
|
|
68
77
|
export const resolveContractResponse = (schemaEntry, contentType, strict = true) => {
|
|
69
|
-
if (schemaEntry === ContractNoBody) {
|
|
78
|
+
if (schemaEntry === ContractNoBody || isNoBodyResponse(schemaEntry)) {
|
|
70
79
|
return { kind: 'noContent' };
|
|
71
80
|
}
|
|
72
81
|
if (isAnyOfResponses(schemaEntry)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contractResponse.js","sourceRoot":"","sources":["../../src/new/contractResponse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"contractResponse.js","sourceRoot":"","sources":["../../src/new/contractResponse.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,8 @@ export declare const mapApiContractToPath: (routeConfig: ApiContract) => string;
|
|
|
43
43
|
export declare const describeApiContract: (routeConfig: ApiContract) => string;
|
|
44
44
|
export declare const getSseSchemaByEventName: (routeConfig: ApiContract) => SseSchemaByEventName | null;
|
|
45
45
|
export declare const hasAnySuccessSseResponse: (apiContract: ApiContract) => boolean;
|
|
46
|
+
/** @deprecated No known consumers — will be removed in a future release. */
|
|
46
47
|
export declare const getSuccessResponseSchema: (routeConfig: ApiContract) => z.ZodType | null;
|
|
48
|
+
/** @deprecated No known consumers — will be removed in a future release. */
|
|
47
49
|
export declare const getIsEmptyResponseExpected: (routeConfig: ApiContract) => boolean;
|
|
48
50
|
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod/v4';
|
|
2
2
|
import { SUCCESSFUL_HTTP_STATUS_CODES } from "../HttpStatusCodes.js";
|
|
3
3
|
import { ContractNoBody } from "./constants.js";
|
|
4
|
-
import { isAnyOfResponses, isBlobResponse, isSseResponse, isTextResponse, } from "./contractResponse.js";
|
|
4
|
+
import { isAnyOfResponses, isBlobResponse, isNoBodyResponse, isSseResponse, isTextResponse, } from "./contractResponse.js";
|
|
5
5
|
export const defineApiContract = (contract) => contract;
|
|
6
6
|
export const mapApiContractToPath = (routeConfig) => {
|
|
7
7
|
if (!routeConfig.requestPathParamsSchema) {
|
|
@@ -51,6 +51,7 @@ export const hasAnySuccessSseResponse = (apiContract) => {
|
|
|
51
51
|
}
|
|
52
52
|
return false;
|
|
53
53
|
};
|
|
54
|
+
/** @deprecated No known consumers — will be removed in a future release. */
|
|
54
55
|
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: it is acceptable
|
|
55
56
|
export const getSuccessResponseSchema = (routeConfig) => {
|
|
56
57
|
const schemas = [];
|
|
@@ -68,6 +69,7 @@ export const getSuccessResponseSchema = (routeConfig) => {
|
|
|
68
69
|
}
|
|
69
70
|
}
|
|
70
71
|
else if (value === ContractNoBody ||
|
|
72
|
+
isNoBodyResponse(value) ||
|
|
71
73
|
isSseResponse(value) ||
|
|
72
74
|
isTextResponse(value) ||
|
|
73
75
|
isBlobResponse(value)) {
|
|
@@ -86,11 +88,12 @@ export const getSuccessResponseSchema = (routeConfig) => {
|
|
|
86
88
|
}
|
|
87
89
|
return hasDirectNonJsonEntry ? z.never() : null;
|
|
88
90
|
};
|
|
91
|
+
/** @deprecated No known consumers — will be removed in a future release. */
|
|
89
92
|
export const getIsEmptyResponseExpected = (routeConfig) => {
|
|
90
93
|
let isEmptyResponseExpected = true;
|
|
91
94
|
for (const code of SUCCESSFUL_HTTP_STATUS_CODES) {
|
|
92
95
|
const value = routeConfig.responsesByStatusCode[code];
|
|
93
|
-
if (value && value !== ContractNoBody) {
|
|
96
|
+
if (value && value !== ContractNoBody && !isNoBodyResponse(value)) {
|
|
94
97
|
isEmptyResponseExpected = false;
|
|
95
98
|
break;
|
|
96
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineApiContract.js","sourceRoot":"","sources":["../../src/new/defineApiContract.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"defineApiContract.js","sourceRoot":"","sources":["../../src/new/defineApiContract.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,26 @@ export type PayloadContractConfig<RequestBodySchema extends z.Schema | undefined
|
|
|
32
32
|
serverSentEventSchemas?: never;
|
|
33
33
|
};
|
|
34
34
|
/**
|
|
35
|
+
* @deprecated Use `defineApiContract` instead. This function will be removed in a future version.
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* // Before (deprecated):
|
|
39
|
+
* const contract = buildRestContract({
|
|
40
|
+
* method: 'get',
|
|
41
|
+
* pathResolver: (params) => `/users/${params.userId}`,
|
|
42
|
+
* requestPathParamsSchema: z.object({ userId: z.string() }),
|
|
43
|
+
* successResponseBodySchema: userSchema,
|
|
44
|
+
* })
|
|
45
|
+
*
|
|
46
|
+
* // After (recommended):
|
|
47
|
+
* const contract = defineApiContract({
|
|
48
|
+
* method: 'get',
|
|
49
|
+
* pathResolver: ({ userId }) => `/users/${userId}`,
|
|
50
|
+
* requestPathParamsSchema: z.object({ userId: z.string() }),
|
|
51
|
+
* responsesByStatusCode: { 200: userSchema },
|
|
52
|
+
* })
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
35
55
|
* Builds REST API contracts with automatic type inference.
|
|
36
56
|
*
|
|
37
57
|
* This unified builder replaces the individual `buildGetRoute`, `buildPayloadRoute`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restContractBuilder.js","sourceRoot":"","sources":["../../src/rest/restContractBuilder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"restContractBuilder.js","sourceRoot":"","sources":["../../src/rest/restContractBuilder.ts"],"names":[],"mappings":"AAqTA,iBAAiB;AACjB,MAAM,UAAU,iBAAiB,CAC/B,MAKsE;IAGtE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IAEzB,MAAM,UAAU,GAAG;QACjB,uBAAuB,EAAE,MAAM,CAAC,uBAAuB,IAAI,MAAM,KAAK,QAAQ;QAC9E,yBAAyB,EAAE,MAAM,CAAC,yBAAyB,IAAI,KAAK;QACpE,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;QAC/C,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;QACjD,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;QACvD,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,yBAAyB,EAAE,MAAM,CAAC,yBAAyB;QAC3D,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,2BAA2B,EAAE,MAAM,CAAC,2BAA2B;QAC/D,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAA;IAED,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QAChE,OAAO;YACL,GAAG,UAAU;YACb,MAAM;YACN,qFAAqF;YACrF,iBAAiB,EAAG,MAAqC,CAAC,iBAAiB;SAC5E,CAAA;IACH,CAAC;IAED,OAAO;QACL,GAAG,UAAU;QACb,MAAM;KACP,CAAA;AACH,CAAC"}
|
|
@@ -1,4 +1,41 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* @deprecated Use `defineApiContract` with `sseResponse()` or `anyOfResponses()` instead. This function will be removed in a future version.
|
|
3
|
+
* @example
|
|
4
|
+
* ```typescript
|
|
5
|
+
* // SSE-only — Before (deprecated):
|
|
6
|
+
* const contract = buildSseContract({
|
|
7
|
+
* method: 'get',
|
|
8
|
+
* pathResolver: () => '/stream',
|
|
9
|
+
* serverSentEventSchemas: { event: eventSchema },
|
|
10
|
+
* })
|
|
11
|
+
*
|
|
12
|
+
* // SSE-only — After (recommended):
|
|
13
|
+
* const contract = defineApiContract({
|
|
14
|
+
* method: 'get',
|
|
15
|
+
* pathResolver: () => '/stream',
|
|
16
|
+
* responsesByStatusCode: { 200: sseResponse({ event: eventSchema }) },
|
|
17
|
+
* })
|
|
18
|
+
*
|
|
19
|
+
* // Dual-mode — Before (deprecated):
|
|
20
|
+
* const contract = buildSseContract({
|
|
21
|
+
* method: 'post',
|
|
22
|
+
* pathResolver: () => '/stream',
|
|
23
|
+
* requestBodySchema: bodySchema,
|
|
24
|
+
* successResponseBodySchema: jsonSchema,
|
|
25
|
+
* serverSentEventSchemas: { chunk: chunkSchema },
|
|
26
|
+
* })
|
|
27
|
+
*
|
|
28
|
+
* // Dual-mode — After (recommended):
|
|
29
|
+
* const contract = defineApiContract({
|
|
30
|
+
* method: 'post',
|
|
31
|
+
* pathResolver: () => '/stream',
|
|
32
|
+
* requestBodySchema: bodySchema,
|
|
33
|
+
* responsesByStatusCode: {
|
|
34
|
+
* 200: anyOfResponses([sseResponse({ chunk: chunkSchema }), jsonSchema]),
|
|
35
|
+
* },
|
|
36
|
+
* })
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
2
39
|
* Builds SSE (Server-Sent Events) and dual-mode contracts.
|
|
3
40
|
*
|
|
4
41
|
* This builder supports two contract types:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sseContractBuilders.js","sourceRoot":"","sources":["../../src/sse/sseContractBuilders.ts"],"names":[],"mappings":"AA2MA
|
|
1
|
+
{"version":3,"file":"sseContractBuilders.js","sourceRoot":"","sources":["../../src/sse/sseContractBuilders.ts"],"names":[],"mappings":"AA2MA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0FG;AAEH,uCAAuC;AACvC,gEAAgE;AAChE,SAAS,eAAe,CAAC,MAAW,EAAE,OAAgB;IACpD,OAAO;QACL,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;QACvD,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;QAC/C,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,SAAS;QACjE,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;QACrD,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAA;AACH,CAAC;AAED,6BAA6B;AAC7B,SAAS,eAAe,CAAC,MAA0B;IACjD,OAAO,MAAM,CAAC,MAAM,CAAA;AACtB,CAAC;AAwHD,iBAAiB;AACjB,MAAM,UAAU,gBAAgB,CAC9B,MAOiD;IAGjD,MAAM,mBAAmB,GACvB,2BAA2B,IAAI,MAAM,IAAI,MAAM,CAAC,yBAAyB,KAAK,SAAS,CAAA;IACzF,MAAM,OAAO,GAAG,mBAAmB,IAAI,MAAM,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,CAAA;IACvF,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE7C,IAAI,mBAAmB,EAAE,CAAC;QACxB,qBAAqB;QACrB,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,eAAe,CAAC,MAA4B,CAAC;YACrD,yBAAyB,EAAG,MAAiD;iBAC1E,yBAAyB;YAC5B,oBAAoB,EAAG,MAA6C,CAAC,oBAAoB;YACzF,+BAA+B,EAAG,MAAwD;iBACvF,+BAA+B;YAClC,UAAU,EAAE,IAAI;SACjB,CAAA;IACH,CAAC;IAED,oBAAoB;IACpB,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,eAAe,CAAC,MAA4B,CAAC;QACrD,+BAA+B,EAAG,MAAwD;aACvF,+BAA+B;QAClC,KAAK,EAAE,IAAI;KACZ,CAAA;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,58 +1,58 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
"
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
2
|
+
"name": "@lokalise/api-contracts",
|
|
3
|
+
"version": "6.12.0",
|
|
4
|
+
"files": [
|
|
5
|
+
"dist"
|
|
6
|
+
],
|
|
7
|
+
"license": "Apache-2.0",
|
|
8
|
+
"type": "module",
|
|
9
|
+
"main": "./dist/index.js",
|
|
10
|
+
"enableTransparentWorkspaces": "false",
|
|
11
|
+
"homepage": "https://github.com/lokalise/shared-ts-libs",
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "git://github.com/lokalise/shared-ts-libs.git",
|
|
15
|
+
"directory": "packages/app/api-contracts"
|
|
16
|
+
},
|
|
17
|
+
"exports": {
|
|
18
|
+
".": "./dist/index.js",
|
|
19
|
+
"./package.json": "./package.json"
|
|
20
|
+
},
|
|
21
|
+
"private": false,
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"access": "public"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"api",
|
|
27
|
+
"contracts",
|
|
28
|
+
"contract",
|
|
29
|
+
"frontend",
|
|
30
|
+
"backend",
|
|
31
|
+
"single",
|
|
32
|
+
"source",
|
|
33
|
+
"truth"
|
|
34
|
+
],
|
|
35
|
+
"peerDependencies": {
|
|
36
|
+
"zod": ">=3.25.56"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@biomejs/biome": "^2.4.7",
|
|
40
|
+
"@lokalise/biome-config": "^3.1.0",
|
|
41
|
+
"@lokalise/tsconfig": "^4.0.0",
|
|
42
|
+
"@types/node": "^25.9.0",
|
|
43
|
+
"@vitest/coverage-v8": "^4.0.18",
|
|
44
|
+
"rimraf": "^6.1.2",
|
|
45
|
+
"typescript": "6.0.3",
|
|
46
|
+
"vitest": "^4.0.18",
|
|
47
|
+
"zod": "^4.3.6"
|
|
48
|
+
},
|
|
49
|
+
"scripts": {
|
|
50
|
+
"build": "rimraf dist && tsc --project tsconfig.build.json",
|
|
51
|
+
"lint": "biome check . && tsc",
|
|
52
|
+
"lint:fix": "biome check --write",
|
|
53
|
+
"test": "vitest run",
|
|
54
|
+
"test:ci": "vitest run --coverage",
|
|
55
|
+
"package-version": "echo $npm_package_version",
|
|
56
|
+
"postversion": "biome check --write package.json"
|
|
57
|
+
}
|
|
58
|
+
}
|