@effect/platform 0.62.5 → 0.63.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/HttpApi/package.json +6 -0
- package/HttpApiBuilder/package.json +6 -0
- package/HttpApiClient/package.json +6 -0
- package/HttpApiEndpoint/package.json +6 -0
- package/HttpApiError/package.json +6 -0
- package/HttpApiGroup/package.json +6 -0
- package/HttpApiSchema/package.json +6 -0
- package/HttpApiSecurity/package.json +6 -0
- package/HttpApiSwagger/package.json +6 -0
- package/OpenApi/package.json +6 -0
- package/README.md +863 -302
- package/dist/cjs/HttpApi.js +168 -0
- package/dist/cjs/HttpApi.js.map +1 -0
- package/dist/cjs/HttpApiBuilder.js +471 -0
- package/dist/cjs/HttpApiBuilder.js.map +1 -0
- package/dist/cjs/HttpApiClient.js +134 -0
- package/dist/cjs/HttpApiClient.js.map +1 -0
- package/dist/cjs/HttpApiEndpoint.js +181 -0
- package/dist/cjs/HttpApiEndpoint.js.map +1 -0
- package/dist/cjs/HttpApiError.js +69 -0
- package/dist/cjs/HttpApiError.js.map +1 -0
- package/dist/cjs/HttpApiGroup.js +151 -0
- package/dist/cjs/HttpApiGroup.js.map +1 -0
- package/dist/cjs/HttpApiSchema.js +241 -0
- package/dist/cjs/HttpApiSchema.js.map +1 -0
- package/dist/cjs/HttpApiSecurity.js +83 -0
- package/dist/cjs/HttpApiSecurity.js.map +1 -0
- package/dist/cjs/HttpApiSwagger.js +50 -0
- package/dist/cjs/HttpApiSwagger.js.map +1 -0
- package/dist/cjs/HttpMethod.js +1 -1
- package/dist/cjs/HttpMethod.js.map +1 -1
- package/dist/cjs/HttpRouter.js +6 -1
- package/dist/cjs/HttpRouter.js.map +1 -1
- package/dist/cjs/OpenApi.js +317 -0
- package/dist/cjs/OpenApi.js.map +1 -0
- package/dist/cjs/index.js +21 -1
- package/dist/cjs/internal/apiSwagger.js +2 -0
- package/dist/cjs/internal/apiSwagger.js.map +1 -0
- package/dist/cjs/internal/httpRouter.js +6 -1
- package/dist/cjs/internal/httpRouter.js.map +1 -1
- package/dist/cjs/internal/multipart.js +5 -1
- package/dist/cjs/internal/multipart.js.map +1 -1
- package/dist/dts/HttpApi.d.ts +156 -0
- package/dist/dts/HttpApi.d.ts.map +1 -0
- package/dist/dts/HttpApiBuilder.d.ts +296 -0
- package/dist/dts/HttpApiBuilder.d.ts.map +1 -0
- package/dist/dts/HttpApiClient.d.ts +31 -0
- package/dist/dts/HttpApiClient.d.ts.map +1 -0
- package/dist/dts/HttpApiEndpoint.d.ts +350 -0
- package/dist/dts/HttpApiEndpoint.d.ts.map +1 -0
- package/dist/dts/HttpApiError.d.ts +70 -0
- package/dist/dts/HttpApiError.d.ts.map +1 -0
- package/dist/dts/HttpApiGroup.d.ts +196 -0
- package/dist/dts/HttpApiGroup.d.ts.map +1 -0
- package/dist/dts/HttpApiSchema.d.ts +223 -0
- package/dist/dts/HttpApiSchema.d.ts.map +1 -0
- package/dist/dts/HttpApiSecurity.d.ts +122 -0
- package/dist/dts/HttpApiSecurity.d.ts.map +1 -0
- package/dist/dts/HttpApiSwagger.d.ts +10 -0
- package/dist/dts/HttpApiSwagger.d.ts.map +1 -0
- package/dist/dts/HttpMethod.d.ts +16 -0
- package/dist/dts/HttpMethod.d.ts.map +1 -1
- package/dist/dts/HttpRouter.d.ts +8 -0
- package/dist/dts/HttpRouter.d.ts.map +1 -1
- package/dist/dts/HttpServerResponse.d.ts +3 -3
- package/dist/dts/HttpServerResponse.d.ts.map +1 -1
- package/dist/dts/OpenApi.d.ts +348 -0
- package/dist/dts/OpenApi.d.ts.map +1 -0
- package/dist/dts/index.d.ts +40 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/internal/apiSwagger.d.ts +2 -0
- package/dist/dts/internal/apiSwagger.d.ts.map +1 -0
- package/dist/dts/internal/httpRouter.d.ts.map +1 -1
- package/dist/esm/HttpApi.js +157 -0
- package/dist/esm/HttpApi.js.map +1 -0
- package/dist/esm/HttpApiBuilder.js +447 -0
- package/dist/esm/HttpApiBuilder.js.map +1 -0
- package/dist/esm/HttpApiClient.js +124 -0
- package/dist/esm/HttpApiClient.js.map +1 -0
- package/dist/esm/HttpApiEndpoint.js +169 -0
- package/dist/esm/HttpApiEndpoint.js.map +1 -0
- package/dist/esm/HttpApiError.js +59 -0
- package/dist/esm/HttpApiError.js.map +1 -0
- package/dist/esm/HttpApiGroup.js +140 -0
- package/dist/esm/HttpApiGroup.js.map +1 -0
- package/dist/esm/HttpApiSchema.js +217 -0
- package/dist/esm/HttpApiSchema.js.map +1 -0
- package/dist/esm/HttpApiSecurity.js +73 -0
- package/dist/esm/HttpApiSecurity.js.map +1 -0
- package/dist/esm/HttpApiSwagger.js +40 -0
- package/dist/esm/HttpApiSwagger.js.map +1 -0
- package/dist/esm/HttpMethod.js +1 -1
- package/dist/esm/HttpMethod.js.map +1 -1
- package/dist/esm/HttpRouter.js +5 -0
- package/dist/esm/HttpRouter.js.map +1 -1
- package/dist/esm/OpenApi.js +299 -0
- package/dist/esm/OpenApi.js.map +1 -0
- package/dist/esm/index.js +40 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/internal/apiSwagger.js +2 -0
- package/dist/esm/internal/apiSwagger.js.map +1 -0
- package/dist/esm/internal/httpRouter.js +5 -0
- package/dist/esm/internal/httpRouter.js.map +1 -1
- package/dist/esm/internal/multipart.js +5 -1
- package/dist/esm/internal/multipart.js.map +1 -1
- package/package.json +83 -3
- package/src/HttpApi.ts +342 -0
- package/src/HttpApiBuilder.ts +869 -0
- package/src/HttpApiClient.ts +228 -0
- package/src/HttpApiEndpoint.ts +818 -0
- package/src/HttpApiError.ts +113 -0
- package/src/HttpApiGroup.ts +365 -0
- package/src/HttpApiSchema.ts +384 -0
- package/src/HttpApiSecurity.ts +169 -0
- package/src/HttpApiSwagger.ts +46 -0
- package/src/HttpMethod.ts +19 -1
- package/src/HttpRouter.ts +9 -0
- package/src/HttpServerResponse.ts +3 -3
- package/src/OpenApi.ts +665 -0
- package/src/index.ts +50 -0
- package/src/internal/apiSwagger.ts +7 -0
- package/src/internal/httpRouter.ts +9 -0
- package/src/internal/multipart.ts +5 -1
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Schema from "@effect/schema/Schema";
|
|
5
|
+
import * as Context from "effect/Context";
|
|
6
|
+
import { dual } from "effect/Function";
|
|
7
|
+
import * as Option from "effect/Option";
|
|
8
|
+
import { pipeArguments } from "effect/Pipeable";
|
|
9
|
+
import * as Predicate from "effect/Predicate";
|
|
10
|
+
import * as HttpApiSchema from "./HttpApiSchema.js";
|
|
11
|
+
import * as HttpRouter from "./HttpRouter.js";
|
|
12
|
+
/**
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
* @category type ids
|
|
15
|
+
*/
|
|
16
|
+
export const TypeId = /*#__PURE__*/Symbol.for("@effect/platform/HttpApiEndpoint");
|
|
17
|
+
/**
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
* @category guards
|
|
20
|
+
*/
|
|
21
|
+
export const isHttpApiEndpoint = u => Predicate.hasProperty(u, TypeId);
|
|
22
|
+
const Proto = {
|
|
23
|
+
[TypeId]: TypeId,
|
|
24
|
+
pipe() {
|
|
25
|
+
return pipeArguments(this, arguments);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const makeProto = options => Object.assign(Object.create(Proto), options);
|
|
29
|
+
/**
|
|
30
|
+
* @since 1.0.0
|
|
31
|
+
* @category constructors
|
|
32
|
+
*/
|
|
33
|
+
export const make = method => (name, path) => makeProto({
|
|
34
|
+
name,
|
|
35
|
+
path,
|
|
36
|
+
method,
|
|
37
|
+
pathSchema: Option.none(),
|
|
38
|
+
payloadSchema: Option.none(),
|
|
39
|
+
headersSchema: Option.none(),
|
|
40
|
+
successSchema: HttpApiSchema.NoContent,
|
|
41
|
+
errorSchema: Schema.Never,
|
|
42
|
+
annotations: Context.empty()
|
|
43
|
+
});
|
|
44
|
+
/**
|
|
45
|
+
* @since 1.0.0
|
|
46
|
+
* @category constructors
|
|
47
|
+
*/
|
|
48
|
+
export const get = /*#__PURE__*/make("GET");
|
|
49
|
+
/**
|
|
50
|
+
* @since 1.0.0
|
|
51
|
+
* @category constructors
|
|
52
|
+
*/
|
|
53
|
+
export const post = /*#__PURE__*/make("POST");
|
|
54
|
+
/**
|
|
55
|
+
* @since 1.0.0
|
|
56
|
+
* @category constructors
|
|
57
|
+
*/
|
|
58
|
+
export const put = /*#__PURE__*/make("PUT");
|
|
59
|
+
/**
|
|
60
|
+
* @since 1.0.0
|
|
61
|
+
* @category constructors
|
|
62
|
+
*/
|
|
63
|
+
export const patch = /*#__PURE__*/make("PATCH");
|
|
64
|
+
/**
|
|
65
|
+
* @since 1.0.0
|
|
66
|
+
* @category constructors
|
|
67
|
+
*/
|
|
68
|
+
export const del = /*#__PURE__*/make("DELETE");
|
|
69
|
+
/**
|
|
70
|
+
* Set the schema for the success response of the endpoint. The status code
|
|
71
|
+
* will be inferred from the schema, otherwise it will default to 200.
|
|
72
|
+
*
|
|
73
|
+
* @since 1.0.0
|
|
74
|
+
* @category result
|
|
75
|
+
*/
|
|
76
|
+
export const setSuccess = /*#__PURE__*/dual(args => isHttpApiEndpoint(args[0]), (self, schema, annotations) => makeProto({
|
|
77
|
+
...self,
|
|
78
|
+
successSchema: schema.annotations(HttpApiSchema.annotations({
|
|
79
|
+
status: annotations?.status ?? HttpApiSchema.getStatusSuccess(schema)
|
|
80
|
+
}))
|
|
81
|
+
}));
|
|
82
|
+
/**
|
|
83
|
+
* Add an error response schema to the endpoint. The status code
|
|
84
|
+
* will be inferred from the schema, otherwise it will default to 500.
|
|
85
|
+
*
|
|
86
|
+
* @since 1.0.0
|
|
87
|
+
* @category result
|
|
88
|
+
*/
|
|
89
|
+
export const addError = /*#__PURE__*/dual(args => isHttpApiEndpoint(args[0]), (self, schema, annotations) => makeProto({
|
|
90
|
+
...self,
|
|
91
|
+
errorSchema: HttpApiSchema.UnionUnify(self.errorSchema, schema.pipe(Schema.annotations(HttpApiSchema.annotations({
|
|
92
|
+
status: annotations?.status ?? HttpApiSchema.getStatusError(schema)
|
|
93
|
+
}))))
|
|
94
|
+
}));
|
|
95
|
+
/**
|
|
96
|
+
* Set the schema for the request body of the endpoint. The schema will be
|
|
97
|
+
* used to validate the request body before the handler is called.
|
|
98
|
+
*
|
|
99
|
+
* For endpoints with no request body, the payload will use the url search
|
|
100
|
+
* parameters.
|
|
101
|
+
*
|
|
102
|
+
* You can set a multipart schema to handle file uploads by using the
|
|
103
|
+
* `HttpApiSchema.Multipart` combinator.
|
|
104
|
+
*
|
|
105
|
+
* @since 1.0.0
|
|
106
|
+
* @category request
|
|
107
|
+
*/
|
|
108
|
+
export const setPayload = /*#__PURE__*/dual(2, (self, schema) => makeProto({
|
|
109
|
+
...self,
|
|
110
|
+
payloadSchema: Option.some(schema)
|
|
111
|
+
}));
|
|
112
|
+
/**
|
|
113
|
+
* Set the schema for the path parameters of the endpoint. The schema will be
|
|
114
|
+
* used to validate the path parameters before the handler is called.
|
|
115
|
+
*
|
|
116
|
+
* @since 1.0.0
|
|
117
|
+
* @category request
|
|
118
|
+
*/
|
|
119
|
+
export const setPath = /*#__PURE__*/dual(2, (self, schema) => makeProto({
|
|
120
|
+
...self,
|
|
121
|
+
pathSchema: Option.some(schema)
|
|
122
|
+
}));
|
|
123
|
+
/**
|
|
124
|
+
* Set the schema for the headers of the endpoint. The schema will be
|
|
125
|
+
* used to validate the headers before the handler is called.
|
|
126
|
+
*
|
|
127
|
+
* @since 1.0.0
|
|
128
|
+
* @category request
|
|
129
|
+
*/
|
|
130
|
+
export const setHeaders = /*#__PURE__*/dual(2, (self, schema) => makeProto({
|
|
131
|
+
...self,
|
|
132
|
+
headersSchema: Option.some(schema)
|
|
133
|
+
}));
|
|
134
|
+
/**
|
|
135
|
+
* Add a prefix to the path of the endpoint.
|
|
136
|
+
*
|
|
137
|
+
* @since 1.0.0
|
|
138
|
+
* @category request
|
|
139
|
+
*/
|
|
140
|
+
export const prefix = /*#__PURE__*/dual(2, (self, prefix) => makeProto({
|
|
141
|
+
...self,
|
|
142
|
+
path: HttpRouter.prefixPath(self.path, prefix)
|
|
143
|
+
}));
|
|
144
|
+
/**
|
|
145
|
+
* @since 1.0.0
|
|
146
|
+
* @category reflection
|
|
147
|
+
*/
|
|
148
|
+
export const schemaSuccess = self => HttpApiSchema.isVoid(self.successSchema.ast) ? Option.none() : Option.some(self.successSchema);
|
|
149
|
+
/**
|
|
150
|
+
* Merge the annotations of the endpoint with the provided context.
|
|
151
|
+
*
|
|
152
|
+
* @since 1.0.0
|
|
153
|
+
* @category annotations
|
|
154
|
+
*/
|
|
155
|
+
export const annotateMerge = /*#__PURE__*/dual(2, (self, context) => makeProto({
|
|
156
|
+
...self,
|
|
157
|
+
annotations: Context.merge(self.annotations, context)
|
|
158
|
+
}));
|
|
159
|
+
/**
|
|
160
|
+
* Add an annotation to the endpoint.
|
|
161
|
+
*
|
|
162
|
+
* @since 1.0.0
|
|
163
|
+
* @category annotations
|
|
164
|
+
*/
|
|
165
|
+
export const annotate = /*#__PURE__*/dual(3, (self, tag, value) => makeProto({
|
|
166
|
+
...self,
|
|
167
|
+
annotations: Context.add(self.annotations, tag, value)
|
|
168
|
+
}));
|
|
169
|
+
//# sourceMappingURL=HttpApiEndpoint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpApiEndpoint.js","names":["Schema","Context","dual","Option","pipeArguments","Predicate","HttpApiSchema","HttpRouter","TypeId","Symbol","for","isHttpApiEndpoint","u","hasProperty","Proto","pipe","arguments","makeProto","options","Object","assign","create","make","method","name","path","pathSchema","none","payloadSchema","headersSchema","successSchema","NoContent","errorSchema","Never","annotations","empty","get","post","put","patch","del","setSuccess","args","self","schema","status","getStatusSuccess","addError","UnionUnify","getStatusError","setPayload","some","setPath","setHeaders","prefix","prefixPath","schemaSuccess","isVoid","ast","annotateMerge","context","merge","annotate","tag","value","add"],"sources":["../../src/HttpApiEndpoint.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as ArrayFormatter from "@effect/schema/ArrayFormatter";
|
|
5
|
+
import * as Schema from "@effect/schema/Schema";
|
|
6
|
+
import * as TreeFormatter from "@effect/schema/TreeFormatter";
|
|
7
|
+
import * as Effect from "effect/Effect";
|
|
8
|
+
import { identity } from "effect/Function";
|
|
9
|
+
import * as HttpApiSchema from "./HttpApiSchema.js";
|
|
10
|
+
/**
|
|
11
|
+
* @since 1.0.0
|
|
12
|
+
* @category type ids
|
|
13
|
+
*/
|
|
14
|
+
export const TypeId = /*#__PURE__*/Symbol.for("@effect/platform/HttpApiError");
|
|
15
|
+
/**
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
* @category schemas
|
|
18
|
+
*/
|
|
19
|
+
export const PropertyKeysNoSymbol = /*#__PURE__*/Schema.transform( /*#__PURE__*/Schema.Array( /*#__PURE__*/Schema.Union(Schema.String, Schema.Number)), /*#__PURE__*/Schema.Array( /*#__PURE__*/Schema.Union(Schema.SymbolFromSelf, Schema.String, Schema.Number)), {
|
|
20
|
+
decode: identity,
|
|
21
|
+
encode: items => items.filter(item => typeof item !== "symbol")
|
|
22
|
+
});
|
|
23
|
+
/**
|
|
24
|
+
* @since 1.0.0
|
|
25
|
+
* @category schemas
|
|
26
|
+
*/
|
|
27
|
+
export const Issue = /*#__PURE__*/Schema.Struct({
|
|
28
|
+
_tag: /*#__PURE__*/Schema.Literal("Pointer", "Unexpected", "Missing", "Composite", "Refinement", "Transformation", "Type", "Forbidden"),
|
|
29
|
+
path: PropertyKeysNoSymbol,
|
|
30
|
+
message: Schema.String
|
|
31
|
+
});
|
|
32
|
+
/**
|
|
33
|
+
* @since 1.0.0
|
|
34
|
+
* @category errors
|
|
35
|
+
*/
|
|
36
|
+
export class HttpApiDecodeError extends /*#__PURE__*/Schema.TaggedError()("HttpApiDecodeError", {
|
|
37
|
+
issues: /*#__PURE__*/Schema.Array(Issue),
|
|
38
|
+
message: Schema.String
|
|
39
|
+
}, /*#__PURE__*/HttpApiSchema.annotations({
|
|
40
|
+
status: 400,
|
|
41
|
+
description: "HttpApiDecodeError: The request did not match the expected schema"
|
|
42
|
+
})) {
|
|
43
|
+
/**
|
|
44
|
+
* @since 1.0.0
|
|
45
|
+
*/
|
|
46
|
+
static fromParseError(error) {
|
|
47
|
+
return ArrayFormatter.formatError(error).pipe(Effect.zip(TreeFormatter.formatError(error)), Effect.map(([issues, message]) => new HttpApiDecodeError({
|
|
48
|
+
issues,
|
|
49
|
+
message
|
|
50
|
+
})));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* @since 1.0.0
|
|
54
|
+
*/
|
|
55
|
+
static refailParseError(error) {
|
|
56
|
+
return Effect.flatMap(HttpApiDecodeError.fromParseError(error), Effect.fail);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=HttpApiError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpApiError.js","names":["ArrayFormatter","Schema","TreeFormatter","Effect","identity","HttpApiSchema","TypeId","Symbol","for","PropertyKeysNoSymbol","transform","Array","Union","String","Number","SymbolFromSelf","decode","encode","items","filter","item","Issue","Struct","_tag","Literal","path","message","HttpApiDecodeError","TaggedError","issues","annotations","status","description","fromParseError","error","formatError","pipe","zip","map","refailParseError","flatMap","fail"],"sources":["../../src/HttpApiError.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,cAAc,MAAM,+BAA+B;AAE/D,OAAO,KAAKC,MAAM,MAAM,uBAAuB;AAC/C,OAAO,KAAKC,aAAa,MAAM,8BAA8B;AAC7D,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,OAAO,KAAKC,aAAa,MAAM,oBAAoB;AAEnD;;;;AAIA,OAAO,MAAMC,MAAM,gBAAkBC,MAAM,CAACC,GAAG,CAAC,+BAA+B,CAAC;AAmChF;;;;AAIA,OAAO,MAAMC,oBAAoB,gBAAyBR,MAAM,CAACS,SAAS,eACxET,MAAM,CAACU,KAAK,eAACV,MAAM,CAACW,KAAK,CAACX,MAAM,CAACY,MAAM,EAAEZ,MAAM,CAACa,MAAM,CAAC,CAAC,eACxDb,MAAM,CAACU,KAAK,eAACV,MAAM,CAACW,KAAK,CAACX,MAAM,CAACc,cAAc,EAAEd,MAAM,CAACY,MAAM,EAAEZ,MAAM,CAACa,MAAM,CAAC,CAAC,EAC/E;EACEE,MAAM,EAAEZ,QAAQ;EAChBa,MAAM,EAAGC,KAAK,IAAKA,KAAK,CAACC,MAAM,CAAEC,IAAI,IAAK,OAAOA,IAAI,KAAK,QAAQ;CACnE,CACF;AAED;;;;AAIA,OAAO,MAAMC,KAAK,gBAAUpB,MAAM,CAACqB,MAAM,CAAC;EACxCC,IAAI,eAAEtB,MAAM,CAACuB,OAAO,CAClB,SAAS,EACT,YAAY,EACZ,SAAS,EACT,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,WAAW,CACZ;EACDC,IAAI,EAAEhB,oBAAoB;EAC1BiB,OAAO,EAAEzB,MAAM,CAACY;CACjB,CAAC;AAEF;;;;AAIA,OAAM,MAAOc,kBAAmB,sBAAQ1B,MAAM,CAAC2B,WAAW,EAAsB,CAC9E,oBAAoB,EACpB;EACEC,MAAM,eAAE5B,MAAM,CAACU,KAAK,CAACU,KAAK,CAAC;EAC3BK,OAAO,EAAEzB,MAAM,CAACY;CACjB,eACDR,aAAa,CAACyB,WAAW,CAAC;EACxBC,MAAM,EAAE,GAAG;EACXC,WAAW,EAAE;CACd,CAAC,CACH;EACC;;;EAGA,OAAOC,cAAcA,CAACC,KAA6B;IACjD,OAAOlC,cAAc,CAACmC,WAAW,CAACD,KAAK,CAAC,CAACE,IAAI,CAC3CjC,MAAM,CAACkC,GAAG,CAACnC,aAAa,CAACiC,WAAW,CAACD,KAAK,CAAC,CAAC,EAC5C/B,MAAM,CAACmC,GAAG,CAAC,CAAC,CAACT,MAAM,EAAEH,OAAO,CAAC,KAAK,IAAIC,kBAAkB,CAAC;MAAEE,MAAM;MAAEH;IAAO,CAAE,CAAC,CAAC,CAC/E;EACH;EACA;;;EAGA,OAAOa,gBAAgBA,CAACL,KAA6B;IACnD,OAAO/B,MAAM,CAACqC,OAAO,CAACb,kBAAkB,CAACM,cAAc,CAACC,KAAK,CAAC,EAAE/B,MAAM,CAACsC,IAAI,CAAC;EAC9E","ignoreList":[]}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as Schema from "@effect/schema/Schema";
|
|
5
|
+
import * as Chunk from "effect/Chunk";
|
|
6
|
+
import * as Context from "effect/Context";
|
|
7
|
+
import { dual } from "effect/Function";
|
|
8
|
+
import { pipeArguments } from "effect/Pipeable";
|
|
9
|
+
import * as Predicate from "effect/Predicate";
|
|
10
|
+
import * as HttpApiEndpoint from "./HttpApiEndpoint.js";
|
|
11
|
+
import * as HttpApiSchema from "./HttpApiSchema.js";
|
|
12
|
+
/**
|
|
13
|
+
* @since 1.0.0
|
|
14
|
+
* @category type ids
|
|
15
|
+
*/
|
|
16
|
+
export const TypeId = /*#__PURE__*/Symbol.for("@effect/platform/HttpApiGroup");
|
|
17
|
+
/**
|
|
18
|
+
* @since 1.0.0
|
|
19
|
+
* @category guards
|
|
20
|
+
*/
|
|
21
|
+
export const isHttpApiGroup = u => Predicate.hasProperty(u, TypeId);
|
|
22
|
+
const Proto = {
|
|
23
|
+
[TypeId]: TypeId,
|
|
24
|
+
pipe() {
|
|
25
|
+
return pipeArguments(this, arguments);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const makeProto = options => {
|
|
29
|
+
function HttpApiGroup() {}
|
|
30
|
+
Object.setPrototypeOf(HttpApiGroup, Proto);
|
|
31
|
+
return Object.assign(HttpApiGroup, options);
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* An `HttpApiGroup` is a collection of `HttpApiEndpoint`s. You can use an `HttpApiGroup` to
|
|
35
|
+
* represent a portion of your domain.
|
|
36
|
+
*
|
|
37
|
+
* The endpoints can be implemented later using the `HttpApiBuilder.group` api.
|
|
38
|
+
*
|
|
39
|
+
* @since 1.0.0
|
|
40
|
+
* @category constructors
|
|
41
|
+
*/
|
|
42
|
+
export const make = identifier => makeProto({
|
|
43
|
+
identifier,
|
|
44
|
+
endpoints: Chunk.empty(),
|
|
45
|
+
errorSchema: Schema.Never,
|
|
46
|
+
annotations: Context.empty()
|
|
47
|
+
});
|
|
48
|
+
/**
|
|
49
|
+
* Add an `HttpApiEndpoint` to an `HttpApiGroup`.
|
|
50
|
+
*
|
|
51
|
+
* @since 1.0.0
|
|
52
|
+
* @category endpoints
|
|
53
|
+
*/
|
|
54
|
+
export const add = /*#__PURE__*/dual(2, (self, endpoint) => makeProto({
|
|
55
|
+
identifier: self.identifier,
|
|
56
|
+
errorSchema: self.errorSchema,
|
|
57
|
+
annotations: self.annotations,
|
|
58
|
+
endpoints: Chunk.append(self.endpoints, endpoint)
|
|
59
|
+
}));
|
|
60
|
+
/**
|
|
61
|
+
* Add an error schema to an `HttpApiGroup`, which is shared by all endpoints in the
|
|
62
|
+
* group.
|
|
63
|
+
*
|
|
64
|
+
* @since 1.0.0
|
|
65
|
+
* @category errors
|
|
66
|
+
*/
|
|
67
|
+
export const addError = /*#__PURE__*/dual(args => isHttpApiGroup(args[0]), (self, schema, annotations) => makeProto({
|
|
68
|
+
identifier: self.identifier,
|
|
69
|
+
annotations: self.annotations,
|
|
70
|
+
endpoints: self.endpoints,
|
|
71
|
+
errorSchema: HttpApiSchema.UnionUnify(self.errorSchema, schema.annotations(HttpApiSchema.annotations({
|
|
72
|
+
status: annotations?.status ?? HttpApiSchema.getStatusError(schema)
|
|
73
|
+
})))
|
|
74
|
+
}));
|
|
75
|
+
/**
|
|
76
|
+
* Add a path prefix to all endpoints in an `HttpApiGroup`. Note that this will only
|
|
77
|
+
* add the prefix to the endpoints before this api is called.
|
|
78
|
+
*
|
|
79
|
+
* @since 1.0.0
|
|
80
|
+
* @category endpoints
|
|
81
|
+
*/
|
|
82
|
+
export const prefix = /*#__PURE__*/dual(2, (self, prefix) => makeProto({
|
|
83
|
+
identifier: self.identifier,
|
|
84
|
+
errorSchema: self.errorSchema,
|
|
85
|
+
annotations: self.annotations,
|
|
86
|
+
endpoints: Chunk.map(self.endpoints, HttpApiEndpoint.prefix(prefix))
|
|
87
|
+
}));
|
|
88
|
+
/**
|
|
89
|
+
* Merge the annotations of an `HttpApiGroup` with a new context.
|
|
90
|
+
*
|
|
91
|
+
* @since 1.0.0
|
|
92
|
+
* @category annotations
|
|
93
|
+
*/
|
|
94
|
+
export const annotateMerge = /*#__PURE__*/dual(2, (self, context) => makeProto({
|
|
95
|
+
...self,
|
|
96
|
+
annotations: Context.merge(self.annotations, context)
|
|
97
|
+
}));
|
|
98
|
+
/**
|
|
99
|
+
* Add an annotation to an `HttpApiGroup`.
|
|
100
|
+
*
|
|
101
|
+
* @since 1.0.0
|
|
102
|
+
* @category annotations
|
|
103
|
+
*/
|
|
104
|
+
export const annotate = /*#__PURE__*/dual(3, (self, tag, value) => makeProto({
|
|
105
|
+
identifier: self.identifier,
|
|
106
|
+
errorSchema: self.errorSchema,
|
|
107
|
+
endpoints: self.endpoints,
|
|
108
|
+
annotations: Context.add(self.annotations, tag, value)
|
|
109
|
+
}));
|
|
110
|
+
/**
|
|
111
|
+
* For each endpoint in an `HttpApiGroup`, update the annotations with a new
|
|
112
|
+
* context.
|
|
113
|
+
*
|
|
114
|
+
* Note that this will only update the annotations before this api is called.
|
|
115
|
+
*
|
|
116
|
+
* @since 1.0.0
|
|
117
|
+
* @category annotations
|
|
118
|
+
*/
|
|
119
|
+
export const annotateEndpointsMerge = /*#__PURE__*/dual(2, (self, context) => makeProto({
|
|
120
|
+
identifier: self.identifier,
|
|
121
|
+
errorSchema: self.errorSchema,
|
|
122
|
+
annotations: self.annotations,
|
|
123
|
+
endpoints: Chunk.map(self.endpoints, HttpApiEndpoint.annotateMerge(context))
|
|
124
|
+
}));
|
|
125
|
+
/**
|
|
126
|
+
* For each endpoint in an `HttpApiGroup`, add an annotation.
|
|
127
|
+
*
|
|
128
|
+
* Note that this will only add the annotation to the endpoints before this api
|
|
129
|
+
* is called.
|
|
130
|
+
*
|
|
131
|
+
* @since 1.0.0
|
|
132
|
+
* @category annotations
|
|
133
|
+
*/
|
|
134
|
+
export const annotateEndpoints = /*#__PURE__*/dual(3, (self, tag, value) => makeProto({
|
|
135
|
+
identifier: self.identifier,
|
|
136
|
+
errorSchema: self.errorSchema,
|
|
137
|
+
annotations: self.annotations,
|
|
138
|
+
endpoints: Chunk.map(self.endpoints, HttpApiEndpoint.annotate(tag, value))
|
|
139
|
+
}));
|
|
140
|
+
//# sourceMappingURL=HttpApiGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpApiGroup.js","names":["Schema","Chunk","Context","dual","pipeArguments","Predicate","HttpApiEndpoint","HttpApiSchema","TypeId","Symbol","for","isHttpApiGroup","u","hasProperty","Proto","pipe","arguments","makeProto","options","HttpApiGroup","Object","setPrototypeOf","assign","make","identifier","endpoints","empty","errorSchema","Never","annotations","add","self","endpoint","append","addError","args","schema","UnionUnify","status","getStatusError","prefix","map","annotateMerge","context","merge","annotate","tag","value","annotateEndpointsMerge","annotateEndpoints"],"sources":["../../src/HttpApiGroup.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @since 1.0.0
|
|
3
|
+
*/
|
|
4
|
+
import * as AST from "@effect/schema/AST";
|
|
5
|
+
import * as Schema from "@effect/schema/Schema";
|
|
6
|
+
import { constVoid, dual } from "effect/Function";
|
|
7
|
+
import * as Struct from "effect/Struct";
|
|
8
|
+
/**
|
|
9
|
+
* @since 1.0.0
|
|
10
|
+
* @category annotations
|
|
11
|
+
*/
|
|
12
|
+
export const AnnotationMultipart = /*#__PURE__*/Symbol.for("@effect/platform/HttpApiSchema/AnnotationMultipart");
|
|
13
|
+
/**
|
|
14
|
+
* @since 1.0.0
|
|
15
|
+
* @category annotations
|
|
16
|
+
*/
|
|
17
|
+
export const AnnotationStatus = /*#__PURE__*/Symbol.for("@effect/platform/HttpApiSchema/AnnotationStatus");
|
|
18
|
+
/**
|
|
19
|
+
* @since 1.0.0
|
|
20
|
+
* @category annotations
|
|
21
|
+
*/
|
|
22
|
+
export const AnnotationEmptyDecodeable = /*#__PURE__*/Symbol.for("@effect/platform/HttpApiSchema/AnnotationEmptyDecodeable");
|
|
23
|
+
/**
|
|
24
|
+
* @since 1.0.0
|
|
25
|
+
* @category annotations
|
|
26
|
+
*/
|
|
27
|
+
export const AnnotationEncoding = /*#__PURE__*/Symbol.for("@effect/platform/HttpApiSchema/AnnotationEncoding");
|
|
28
|
+
const mergedAnnotations = ast => ast._tag === "Transformation" ? {
|
|
29
|
+
...ast.to.annotations,
|
|
30
|
+
...ast.annotations
|
|
31
|
+
} : ast.annotations;
|
|
32
|
+
const getAnnotation = (ast, key) => mergedAnnotations(ast)[key];
|
|
33
|
+
/**
|
|
34
|
+
* @since 1.0.0
|
|
35
|
+
* @category annotations
|
|
36
|
+
*/
|
|
37
|
+
export const getStatus = (ast, defaultStatus) => getAnnotation(ast, AnnotationStatus) ?? defaultStatus;
|
|
38
|
+
/**
|
|
39
|
+
* @since 1.0.0
|
|
40
|
+
* @category annotations
|
|
41
|
+
*/
|
|
42
|
+
export const getEmptyDecodeable = ast => getAnnotation(ast, AnnotationEmptyDecodeable) ?? false;
|
|
43
|
+
/**
|
|
44
|
+
* @since 1.0.0
|
|
45
|
+
* @category annotations
|
|
46
|
+
*/
|
|
47
|
+
export const getMultipart = ast => getAnnotation(ast, AnnotationMultipart) ?? false;
|
|
48
|
+
const encodingJson = {
|
|
49
|
+
kind: "Json",
|
|
50
|
+
contentType: "application/json"
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* @since 1.0.0
|
|
54
|
+
* @category annotations
|
|
55
|
+
*/
|
|
56
|
+
export const getEncoding = ast => getAnnotation(ast, AnnotationEncoding) ?? encodingJson;
|
|
57
|
+
/**
|
|
58
|
+
* @since 1.0.0
|
|
59
|
+
* @category annotations
|
|
60
|
+
*/
|
|
61
|
+
export const annotations = annotations => {
|
|
62
|
+
const result = Struct.omit(annotations, "status");
|
|
63
|
+
if (annotations.status !== undefined) {
|
|
64
|
+
result[AnnotationStatus] = annotations.status;
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* @since 1.0.0
|
|
70
|
+
* @category reflection
|
|
71
|
+
*/
|
|
72
|
+
export const isVoid = ast => {
|
|
73
|
+
switch (ast._tag) {
|
|
74
|
+
case "VoidKeyword":
|
|
75
|
+
{
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
case "Transformation":
|
|
79
|
+
{
|
|
80
|
+
return isVoid(ast.from);
|
|
81
|
+
}
|
|
82
|
+
case "Suspend":
|
|
83
|
+
{
|
|
84
|
+
return isVoid(ast.f());
|
|
85
|
+
}
|
|
86
|
+
default:
|
|
87
|
+
{
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* @since 1.0.0
|
|
94
|
+
* @category reflection
|
|
95
|
+
*/
|
|
96
|
+
export const getStatusSuccessAST = ast => getStatus(ast, isVoid(ast) ? 204 : 200);
|
|
97
|
+
/**
|
|
98
|
+
* @since 1.0.0
|
|
99
|
+
* @category reflection
|
|
100
|
+
*/
|
|
101
|
+
export const getStatusSuccess = self => getStatusSuccessAST(self.ast);
|
|
102
|
+
/**
|
|
103
|
+
* @since 1.0.0
|
|
104
|
+
* @category reflection
|
|
105
|
+
*/
|
|
106
|
+
export const getStatusErrorAST = ast => getStatus(ast, 500);
|
|
107
|
+
/**
|
|
108
|
+
* @since 1.0.0
|
|
109
|
+
* @category reflection
|
|
110
|
+
*/
|
|
111
|
+
export const getStatusError = self => getStatusErrorAST(self.ast);
|
|
112
|
+
/**
|
|
113
|
+
* @since 1.0.0
|
|
114
|
+
*/
|
|
115
|
+
export const UnionUnify = (self, that) => {
|
|
116
|
+
const selfTypes = self.ast._tag === "Union" ? self.ast.types : [self.ast];
|
|
117
|
+
const thatTypes = that.ast._tag === "Union" ? that.ast.types : [that.ast];
|
|
118
|
+
return Schema.make(AST.Union.make([...selfTypes, ...thatTypes]));
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* @since 1.0.0
|
|
122
|
+
* @category empty response
|
|
123
|
+
*/
|
|
124
|
+
export const Empty = status => Schema.Void.annotations(annotations({
|
|
125
|
+
status
|
|
126
|
+
}));
|
|
127
|
+
/**
|
|
128
|
+
* @since 1.0.0
|
|
129
|
+
* @category empty response
|
|
130
|
+
*/
|
|
131
|
+
export const asEmpty = /*#__PURE__*/dual(2, (self, options) => Schema.transform(Schema.Void, Schema.typeSchema(self), {
|
|
132
|
+
decode: options.decode,
|
|
133
|
+
encode: constVoid
|
|
134
|
+
}).annotations(annotations({
|
|
135
|
+
status: options.status,
|
|
136
|
+
[AnnotationEmptyDecodeable]: true
|
|
137
|
+
})));
|
|
138
|
+
/**
|
|
139
|
+
* @since 1.0.0
|
|
140
|
+
* @category empty response
|
|
141
|
+
*/
|
|
142
|
+
export const Created = /*#__PURE__*/Empty(201);
|
|
143
|
+
/**
|
|
144
|
+
* @since 1.0.0
|
|
145
|
+
* @category empty response
|
|
146
|
+
*/
|
|
147
|
+
export const Accepted = /*#__PURE__*/Empty(202);
|
|
148
|
+
/**
|
|
149
|
+
* @since 1.0.0
|
|
150
|
+
* @category empty response
|
|
151
|
+
*/
|
|
152
|
+
export const NoContent = /*#__PURE__*/Empty(204);
|
|
153
|
+
/**
|
|
154
|
+
* @since 1.0.0
|
|
155
|
+
* @category multipart
|
|
156
|
+
*/
|
|
157
|
+
export const MultipartTypeId = /*#__PURE__*/Symbol.for("@effect/platform/HttpApiSchema/Multipart");
|
|
158
|
+
/**
|
|
159
|
+
* @since 1.0.0
|
|
160
|
+
* @category multipart
|
|
161
|
+
*/
|
|
162
|
+
export const Multipart = self => self.annotations({
|
|
163
|
+
[AnnotationMultipart]: true
|
|
164
|
+
});
|
|
165
|
+
const defaultContentType = encoding => {
|
|
166
|
+
switch (encoding) {
|
|
167
|
+
case "Json":
|
|
168
|
+
{
|
|
169
|
+
return "application/json";
|
|
170
|
+
}
|
|
171
|
+
case "UrlParams":
|
|
172
|
+
{
|
|
173
|
+
return "application/x-www-form-urlencoded";
|
|
174
|
+
}
|
|
175
|
+
case "Uint8Array":
|
|
176
|
+
{
|
|
177
|
+
return "application/octet-stream";
|
|
178
|
+
}
|
|
179
|
+
case "Text":
|
|
180
|
+
{
|
|
181
|
+
return "text/plain";
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
/**
|
|
186
|
+
* @since 1.0.0
|
|
187
|
+
* @category encoding
|
|
188
|
+
*/
|
|
189
|
+
export const withEncoding = /*#__PURE__*/dual(2, (self, options) => self.annotations({
|
|
190
|
+
[AnnotationEncoding]: {
|
|
191
|
+
kind: options.kind,
|
|
192
|
+
contentType: options.contentType ?? defaultContentType(options.kind)
|
|
193
|
+
},
|
|
194
|
+
...(options.kind === "Uint8Array" ? {
|
|
195
|
+
jsonSchema: {
|
|
196
|
+
type: "string",
|
|
197
|
+
format: "binary"
|
|
198
|
+
}
|
|
199
|
+
} : undefined)
|
|
200
|
+
}));
|
|
201
|
+
/**
|
|
202
|
+
* @since 1.0.0
|
|
203
|
+
* @category encoding
|
|
204
|
+
*/
|
|
205
|
+
export const Text = options => withEncoding(Schema.String, {
|
|
206
|
+
kind: "Text",
|
|
207
|
+
...options
|
|
208
|
+
});
|
|
209
|
+
/**
|
|
210
|
+
* @since 1.0.0
|
|
211
|
+
* @category encoding
|
|
212
|
+
*/
|
|
213
|
+
export const Uint8Array = options => withEncoding(Schema.Uint8ArrayFromSelf, {
|
|
214
|
+
kind: "Uint8Array",
|
|
215
|
+
...options
|
|
216
|
+
});
|
|
217
|
+
//# sourceMappingURL=HttpApiSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HttpApiSchema.js","names":["AST","Schema","constVoid","dual","Struct","AnnotationMultipart","Symbol","for","AnnotationStatus","AnnotationEmptyDecodeable","AnnotationEncoding","mergedAnnotations","ast","_tag","to","annotations","getAnnotation","key","getStatus","defaultStatus","getEmptyDecodeable","getMultipart","encodingJson","kind","contentType","getEncoding","result","omit","status","undefined","isVoid","from","f","getStatusSuccessAST","getStatusSuccess","self","getStatusErrorAST","getStatusError","UnionUnify","that","selfTypes","types","thatTypes","make","Union","Empty","Void","asEmpty","options","transform","typeSchema","decode","encode","Created","Accepted","NoContent","MultipartTypeId","Multipart","defaultContentType","encoding","withEncoding","jsonSchema","type","format","Text","String","Uint8Array","Uint8ArrayFromSelf"],"sources":["../../src/HttpApiSchema.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|