@effect/platform 0.62.4 → 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.
Files changed (123) hide show
  1. package/HttpApi/package.json +6 -0
  2. package/HttpApiBuilder/package.json +6 -0
  3. package/HttpApiClient/package.json +6 -0
  4. package/HttpApiEndpoint/package.json +6 -0
  5. package/HttpApiError/package.json +6 -0
  6. package/HttpApiGroup/package.json +6 -0
  7. package/HttpApiSchema/package.json +6 -0
  8. package/HttpApiSecurity/package.json +6 -0
  9. package/HttpApiSwagger/package.json +6 -0
  10. package/OpenApi/package.json +6 -0
  11. package/README.md +863 -302
  12. package/dist/cjs/HttpApi.js +168 -0
  13. package/dist/cjs/HttpApi.js.map +1 -0
  14. package/dist/cjs/HttpApiBuilder.js +471 -0
  15. package/dist/cjs/HttpApiBuilder.js.map +1 -0
  16. package/dist/cjs/HttpApiClient.js +134 -0
  17. package/dist/cjs/HttpApiClient.js.map +1 -0
  18. package/dist/cjs/HttpApiEndpoint.js +181 -0
  19. package/dist/cjs/HttpApiEndpoint.js.map +1 -0
  20. package/dist/cjs/HttpApiError.js +69 -0
  21. package/dist/cjs/HttpApiError.js.map +1 -0
  22. package/dist/cjs/HttpApiGroup.js +151 -0
  23. package/dist/cjs/HttpApiGroup.js.map +1 -0
  24. package/dist/cjs/HttpApiSchema.js +241 -0
  25. package/dist/cjs/HttpApiSchema.js.map +1 -0
  26. package/dist/cjs/HttpApiSecurity.js +83 -0
  27. package/dist/cjs/HttpApiSecurity.js.map +1 -0
  28. package/dist/cjs/HttpApiSwagger.js +50 -0
  29. package/dist/cjs/HttpApiSwagger.js.map +1 -0
  30. package/dist/cjs/HttpMethod.js +1 -1
  31. package/dist/cjs/HttpMethod.js.map +1 -1
  32. package/dist/cjs/HttpRouter.js +6 -1
  33. package/dist/cjs/HttpRouter.js.map +1 -1
  34. package/dist/cjs/OpenApi.js +317 -0
  35. package/dist/cjs/OpenApi.js.map +1 -0
  36. package/dist/cjs/index.js +21 -1
  37. package/dist/cjs/internal/apiSwagger.js +2 -0
  38. package/dist/cjs/internal/apiSwagger.js.map +1 -0
  39. package/dist/cjs/internal/httpRouter.js +6 -1
  40. package/dist/cjs/internal/httpRouter.js.map +1 -1
  41. package/dist/cjs/internal/multipart.js +5 -1
  42. package/dist/cjs/internal/multipart.js.map +1 -1
  43. package/dist/dts/HttpApi.d.ts +156 -0
  44. package/dist/dts/HttpApi.d.ts.map +1 -0
  45. package/dist/dts/HttpApiBuilder.d.ts +296 -0
  46. package/dist/dts/HttpApiBuilder.d.ts.map +1 -0
  47. package/dist/dts/HttpApiClient.d.ts +31 -0
  48. package/dist/dts/HttpApiClient.d.ts.map +1 -0
  49. package/dist/dts/HttpApiEndpoint.d.ts +350 -0
  50. package/dist/dts/HttpApiEndpoint.d.ts.map +1 -0
  51. package/dist/dts/HttpApiError.d.ts +70 -0
  52. package/dist/dts/HttpApiError.d.ts.map +1 -0
  53. package/dist/dts/HttpApiGroup.d.ts +196 -0
  54. package/dist/dts/HttpApiGroup.d.ts.map +1 -0
  55. package/dist/dts/HttpApiSchema.d.ts +223 -0
  56. package/dist/dts/HttpApiSchema.d.ts.map +1 -0
  57. package/dist/dts/HttpApiSecurity.d.ts +122 -0
  58. package/dist/dts/HttpApiSecurity.d.ts.map +1 -0
  59. package/dist/dts/HttpApiSwagger.d.ts +10 -0
  60. package/dist/dts/HttpApiSwagger.d.ts.map +1 -0
  61. package/dist/dts/HttpMethod.d.ts +16 -0
  62. package/dist/dts/HttpMethod.d.ts.map +1 -1
  63. package/dist/dts/HttpRouter.d.ts +8 -0
  64. package/dist/dts/HttpRouter.d.ts.map +1 -1
  65. package/dist/dts/HttpServerResponse.d.ts +3 -3
  66. package/dist/dts/HttpServerResponse.d.ts.map +1 -1
  67. package/dist/dts/OpenApi.d.ts +348 -0
  68. package/dist/dts/OpenApi.d.ts.map +1 -0
  69. package/dist/dts/index.d.ts +40 -0
  70. package/dist/dts/index.d.ts.map +1 -1
  71. package/dist/dts/internal/apiSwagger.d.ts +2 -0
  72. package/dist/dts/internal/apiSwagger.d.ts.map +1 -0
  73. package/dist/dts/internal/httpRouter.d.ts.map +1 -1
  74. package/dist/esm/HttpApi.js +157 -0
  75. package/dist/esm/HttpApi.js.map +1 -0
  76. package/dist/esm/HttpApiBuilder.js +447 -0
  77. package/dist/esm/HttpApiBuilder.js.map +1 -0
  78. package/dist/esm/HttpApiClient.js +124 -0
  79. package/dist/esm/HttpApiClient.js.map +1 -0
  80. package/dist/esm/HttpApiEndpoint.js +169 -0
  81. package/dist/esm/HttpApiEndpoint.js.map +1 -0
  82. package/dist/esm/HttpApiError.js +59 -0
  83. package/dist/esm/HttpApiError.js.map +1 -0
  84. package/dist/esm/HttpApiGroup.js +140 -0
  85. package/dist/esm/HttpApiGroup.js.map +1 -0
  86. package/dist/esm/HttpApiSchema.js +217 -0
  87. package/dist/esm/HttpApiSchema.js.map +1 -0
  88. package/dist/esm/HttpApiSecurity.js +73 -0
  89. package/dist/esm/HttpApiSecurity.js.map +1 -0
  90. package/dist/esm/HttpApiSwagger.js +40 -0
  91. package/dist/esm/HttpApiSwagger.js.map +1 -0
  92. package/dist/esm/HttpMethod.js +1 -1
  93. package/dist/esm/HttpMethod.js.map +1 -1
  94. package/dist/esm/HttpRouter.js +5 -0
  95. package/dist/esm/HttpRouter.js.map +1 -1
  96. package/dist/esm/OpenApi.js +299 -0
  97. package/dist/esm/OpenApi.js.map +1 -0
  98. package/dist/esm/index.js +40 -0
  99. package/dist/esm/index.js.map +1 -1
  100. package/dist/esm/internal/apiSwagger.js +2 -0
  101. package/dist/esm/internal/apiSwagger.js.map +1 -0
  102. package/dist/esm/internal/httpRouter.js +5 -0
  103. package/dist/esm/internal/httpRouter.js.map +1 -1
  104. package/dist/esm/internal/multipart.js +5 -1
  105. package/dist/esm/internal/multipart.js.map +1 -1
  106. package/package.json +83 -3
  107. package/src/HttpApi.ts +342 -0
  108. package/src/HttpApiBuilder.ts +869 -0
  109. package/src/HttpApiClient.ts +228 -0
  110. package/src/HttpApiEndpoint.ts +818 -0
  111. package/src/HttpApiError.ts +113 -0
  112. package/src/HttpApiGroup.ts +365 -0
  113. package/src/HttpApiSchema.ts +384 -0
  114. package/src/HttpApiSecurity.ts +169 -0
  115. package/src/HttpApiSwagger.ts +46 -0
  116. package/src/HttpMethod.ts +19 -1
  117. package/src/HttpRouter.ts +9 -0
  118. package/src/HttpServerResponse.ts +3 -3
  119. package/src/OpenApi.ts +665 -0
  120. package/src/index.ts +50 -0
  121. package/src/internal/apiSwagger.ts +7 -0
  122. package/src/internal/httpRouter.ts +9 -0
  123. 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":[]}