@effect/platform 0.70.6 → 0.71.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 +22 -34
- package/dist/cjs/HttpApi.js +15 -6
- package/dist/cjs/HttpApi.js.map +1 -1
- package/dist/cjs/HttpApiBuilder.js +1 -1
- package/dist/cjs/HttpApiBuilder.js.map +1 -1
- package/dist/cjs/HttpApiClient.js.map +1 -1
- package/dist/cjs/HttpApiError.js +109 -1
- package/dist/cjs/HttpApiError.js.map +1 -1
- package/dist/cjs/HttpApiGroup.js.map +1 -1
- package/dist/cjs/HttpApiSchema.js +46 -2
- package/dist/cjs/HttpApiSchema.js.map +1 -1
- package/dist/cjs/OpenApi.js +20 -4
- package/dist/cjs/OpenApi.js.map +1 -1
- package/dist/cjs/OpenApiJsonSchema.js +18 -477
- package/dist/cjs/OpenApiJsonSchema.js.map +1 -1
- package/dist/dts/HttpApi.d.ts +13 -12
- package/dist/dts/HttpApi.d.ts.map +1 -1
- package/dist/dts/HttpApiBuilder.d.ts +8 -8
- package/dist/dts/HttpApiBuilder.d.ts.map +1 -1
- package/dist/dts/HttpApiClient.d.ts +3 -3
- package/dist/dts/HttpApiClient.d.ts.map +1 -1
- package/dist/dts/HttpApiError.d.ts +85 -0
- package/dist/dts/HttpApiError.d.ts.map +1 -1
- package/dist/dts/HttpApiGroup.d.ts +3 -2
- package/dist/dts/HttpApiGroup.d.ts.map +1 -1
- package/dist/dts/HttpApiSchema.d.ts +19 -1
- package/dist/dts/HttpApiSchema.d.ts.map +1 -1
- package/dist/dts/OpenApi.d.ts +8 -0
- package/dist/dts/OpenApi.d.ts.map +1 -1
- package/dist/dts/OpenApiJsonSchema.d.ts +34 -5
- package/dist/dts/OpenApiJsonSchema.d.ts.map +1 -1
- package/dist/esm/HttpApi.js +13 -5
- package/dist/esm/HttpApi.js.map +1 -1
- package/dist/esm/HttpApiBuilder.js +1 -1
- package/dist/esm/HttpApiBuilder.js.map +1 -1
- package/dist/esm/HttpApiClient.js.map +1 -1
- package/dist/esm/HttpApiError.js +96 -0
- package/dist/esm/HttpApiError.js.map +1 -1
- package/dist/esm/HttpApiGroup.js.map +1 -1
- package/dist/esm/HttpApiSchema.js +45 -2
- package/dist/esm/HttpApiSchema.js.map +1 -1
- package/dist/esm/OpenApi.js +17 -2
- package/dist/esm/OpenApi.js.map +1 -1
- package/dist/esm/OpenApiJsonSchema.js +18 -477
- package/dist/esm/OpenApiJsonSchema.js.map +1 -1
- package/package.json +2 -2
- package/src/HttpApi.ts +35 -19
- package/src/HttpApiBuilder.ts +17 -15
- package/src/HttpApiClient.ts +8 -6
- package/src/HttpApiError.ts +108 -0
- package/src/HttpApiGroup.ts +4 -3
- package/src/HttpApiSchema.ts +63 -5
- package/src/OpenApi.ts +19 -3
- package/src/OpenApiJsonSchema.ts +45 -513
package/dist/esm/OpenApi.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
4
|
import * as Context from "effect/Context";
|
|
5
|
+
import { constFalse } from "effect/Function";
|
|
5
6
|
import { globalValue } from "effect/GlobalValue";
|
|
6
7
|
import * as Option from "effect/Option";
|
|
7
8
|
import * as Schema from "effect/Schema";
|
|
@@ -65,6 +66,13 @@ export class Deprecated extends /*#__PURE__*/Context.Tag("@effect/platform/OpenA
|
|
|
65
66
|
* @category annotations
|
|
66
67
|
*/
|
|
67
68
|
export class Override extends /*#__PURE__*/Context.Tag("@effect/platform/OpenApi/Override")() {}
|
|
69
|
+
/**
|
|
70
|
+
* @since 1.0.0
|
|
71
|
+
* @category annotations
|
|
72
|
+
*/
|
|
73
|
+
export class Exclude extends /*#__PURE__*/Context.Reference()("@effect/platform/OpenApi/Exclude", {
|
|
74
|
+
defaultValue: constFalse
|
|
75
|
+
}) {}
|
|
68
76
|
/**
|
|
69
77
|
* Transforms the generated OpenAPI specification
|
|
70
78
|
* @since 1.0.0
|
|
@@ -98,6 +106,7 @@ export const annotations = /*#__PURE__*/contextPartial({
|
|
|
98
106
|
servers: Servers,
|
|
99
107
|
format: Format,
|
|
100
108
|
override: Override,
|
|
109
|
+
exclude: Exclude,
|
|
101
110
|
transform: Transform
|
|
102
111
|
});
|
|
103
112
|
const apiCache = /*#__PURE__*/globalValue("@effect/platform/OpenApi/apiCache", () => new WeakMap());
|
|
@@ -127,8 +136,7 @@ export const fromApi = self => {
|
|
|
127
136
|
};
|
|
128
137
|
function makeJsonSchemaOrRef(schema) {
|
|
129
138
|
return JsonSchema.makeWithDefs(schema, {
|
|
130
|
-
defs: jsonSchemaDefs
|
|
131
|
-
defsPath: "#/components/schemas/"
|
|
139
|
+
defs: jsonSchemaDefs
|
|
132
140
|
});
|
|
133
141
|
}
|
|
134
142
|
function registerSecurity(name, security) {
|
|
@@ -171,6 +179,9 @@ export const fromApi = self => {
|
|
|
171
179
|
onGroup({
|
|
172
180
|
group
|
|
173
181
|
}) {
|
|
182
|
+
if (Context.get(group.annotations, Exclude)) {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
174
185
|
let tag = {
|
|
175
186
|
name: Context.getOrElse(group.annotations, Title, () => group.identifier)
|
|
176
187
|
};
|
|
@@ -192,10 +203,14 @@ export const fromApi = self => {
|
|
|
192
203
|
endpoint,
|
|
193
204
|
errors,
|
|
194
205
|
group,
|
|
206
|
+
mergedAnnotations,
|
|
195
207
|
middleware,
|
|
196
208
|
payloads,
|
|
197
209
|
successes
|
|
198
210
|
}) {
|
|
211
|
+
if (Context.get(mergedAnnotations, Exclude)) {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
199
214
|
const path = endpoint.path.replace(/:(\w+)[^/]*/g, "{$1}");
|
|
200
215
|
const method = endpoint.method.toLowerCase();
|
|
201
216
|
let op = {
|
package/dist/esm/OpenApi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenApi.js","names":["Context","globalValue","Option","Schema","HttpApi","HttpApiMiddleware","HttpApiSchema","HttpMethod","JsonSchema","Identifier","Tag","Title","Version","Description","License","ExternalDocs","Servers","Format","Summary","Deprecated","Override","Transform","contextPartial","tags","entries","Object","options","context","empty","key","tag","undefined","add","annotations","identifier","title","version","description","license","summary","externalDocs","servers","format","override","transform","apiCache","WeakMap","fromApi","self","has","get","api","jsonSchemaDefs","spec","openapi","info","getOrElse","paths","components","schemas","securitySchemes","security","makeJsonSchemaOrRef","schema","makeWithDefs","defs","defsPath","registerSecurity","name","scheme","makeSecurityScheme","map","getOption","AdditionalSchemas","componentSchemas","forEach","componentSchema","assign","middlewares","middleware","isSecurity","push","reflect","onGroup","group","fn","onEndpoint","endpoint","errors","payloads","successes","path","replace","method","toLowerCase","op","operationId","topLevel","parameters","responses","deprecated","size","content","ast","contentType","make","requestBody","required","status","pipe","filter","getEmptyDecodeable","isSome","pathSchema","value","properties","jsonSchema","in","includes","hasBody","payloadSchema","headersSchema","urlParamsSchema","transformFn","set","meta","_tag","type","bearerFormat","getOrUndefined"],"sources":["../../src/OpenApi.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,SAASC,WAAW,QAAQ,oBAAoB;AAChD,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC,OAAO,KAAKC,OAAO,MAAM,cAAc;AACvC,OAAO,KAAKC,iBAAiB,MAAM,wBAAwB;AAC3D,OAAO,KAAKC,aAAa,MAAM,oBAAoB;AAEnD,OAAO,KAAKC,UAAU,MAAM,iBAAiB;AAC7C,OAAO,KAAKC,UAAU,MAAM,wBAAwB;AAEpD;;;;AAIA,OAAM,MAAOC,UAAW,sBAAQT,OAAO,CAACU,GAAG,CAAC,qCAAqC,CAAC,EAAsB;AAExG;;;;AAIA,OAAM,MAAOC,KAAM,sBAAQX,OAAO,CAACU,GAAG,CAAC,gCAAgC,CAAC,EAAiB;AAEzF;;;;AAIA,OAAM,MAAOE,OAAQ,sBAAQZ,OAAO,CAACU,GAAG,CAAC,kCAAkC,CAAC,EAAmB;AAE/F;;;;AAIA,OAAM,MAAOG,WAAY,sBAAQb,OAAO,CAACU,GAAG,CAAC,sCAAsC,CAAC,EAAuB;AAE3G;;;;AAIA,OAAM,MAAOI,OAAQ,sBAAQd,OAAO,CAACU,GAAG,CAAC,kCAAkC,CAAC,EAA+B;AAE3G;;;;AAIA,OAAM,MAAOK,YACX,sBAAQf,OAAO,CAACU,GAAG,CAAC,uCAAuC,CAAC,EAAyC;AAGvG;;;;AAIA,OAAM,MAAOM,OACX,sBAAQhB,OAAO,CAACU,GAAG,CAAC,kCAAkC,CAAC,EAA6C;AAGtG;;;;AAIA,OAAM,MAAOO,MAAO,sBAAQjB,OAAO,CAACU,GAAG,CAAC,iCAAiC,CAAC,EAAkB;AAE5F;;;;AAIA,OAAM,MAAOQ,OAAQ,sBAAQlB,OAAO,CAACU,GAAG,CAAC,kCAAkC,CAAC,EAAmB;AAE/F;;;;AAIA,OAAM,MAAOS,UAAW,sBAAQnB,OAAO,CAACU,GAAG,CAAC,qCAAqC,CAAC,EAAuB;AAEzG;;;;AAIA,OAAM,MAAOU,QAAS,sBAAQpB,OAAO,CAACU,GAAG,CAAC,mCAAmC,CAAC,EAAqC;AAEnH;;;;;AAKA,OAAM,MAAOW,SAAU,sBAAQrB,OAAO,CAACU,GAAG,CAAC,oCAAoC,CAAC,EAG7E;AAEH,MAAMY,cAAc,GAAwDC,IAAU,IAIxD;EAC5B,MAAMC,OAAO,GAAGC,MAAM,CAACD,OAAO,CAACD,IAAI,CAAC;EACpC,OAAQG,OAAO,IAAI;IACjB,IAAIC,OAAO,GAAG3B,OAAO,CAAC4B,KAAK,EAAE;IAC7B,KAAK,MAAM,CAACC,GAAG,EAAEC,GAAG,CAAC,IAAIN,OAAO,EAAE;MAChC,IAAIE,OAAO,CAACG,GAAG,CAAC,KAAKE,SAAS,EAAE;QAC9BJ,OAAO,GAAG3B,OAAO,CAACgC,GAAG,CAACL,OAAO,EAAEG,GAAG,EAAEJ,OAAO,CAACG,GAAG,CAAE,CAAC;MACpD;IACF;IACA,OAAOF,OAAO;EAChB,CAAC;AACH,CAAC;AAED;;;;AAIA,OAAO,MAAMM,WAAW,gBAcMX,cAAc,CAAC;EAC3CY,UAAU,EAAEzB,UAAU;EACtB0B,KAAK,EAAExB,KAAK;EACZyB,OAAO,EAAExB,OAAO;EAChByB,WAAW,EAAExB,WAAW;EACxByB,OAAO,EAAExB,OAAO;EAChByB,OAAO,EAAErB,OAAO;EAChBsB,YAAY,EAAEzB,YAAY;EAC1B0B,OAAO,EAAEzB,OAAO;EAChB0B,MAAM,EAAEzB,MAAM;EACd0B,QAAQ,EAAEvB,QAAQ;EAClBwB,SAAS,EAAEvB;CACZ,CAAC;AAEF,MAAMwB,QAAQ,gBAAG5C,WAAW,CAAC,mCAAmC,EAAE,MAAM,IAAI6C,OAAO,EAAoC,CAAC;AAExH;;;;AAIA,OAAO,MAAMC,OAAO,GAAmCC,IAAO,IAAiB;EAC7E,IAAIH,QAAQ,CAACI,GAAG,CAACD,IAAI,CAAC,EAAE;IACtB,OAAOH,QAAQ,CAACK,GAAG,CAACF,IAAI,CAAE;EAC5B;EACA,MAAMG,GAAG,GAAGH,IAA+C;EAC3D,MAAMI,cAAc,GAA0C,EAAE;EAChE,IAAIC,IAAI,GAA6B;IACnCC,OAAO,EAAE,OAAO;IAChBC,IAAI,EAAE;MACJpB,KAAK,EAAEnC,OAAO,CAACwD,SAAS,CAACL,GAAG,CAAClB,WAAW,EAAEtB,KAAK,EAAE,MAAM,KAAK,CAAC;MAC7DyB,OAAO,EAAEpC,OAAO,CAACwD,SAAS,CAACL,GAAG,CAAClB,WAAW,EAAErB,OAAO,EAAE,MAAM,OAAO;KACnE;IACD6C,KAAK,EAAE,EAAE;IACTlC,IAAI,EAAE,EAAE;IACRmC,UAAU,EAAE;MACVC,OAAO,EAAEP,cAAc;MACvBQ,eAAe,EAAE;KAClB;IACDC,QAAQ,EAAE;GACX;EACD,SAASC,mBAAmBA,CAACC,MAAyB;IACpD,OAAOvD,UAAU,CAACwD,YAAY,CAACD,MAAa,EAAE;MAC5CE,IAAI,EAAEb,cAAc;MACpBc,QAAQ,EAAE;KACX,CAAC;EACJ;EACA,SAASC,gBAAgBA,CACvBC,IAAY,EACZP,QAAyB;IAEzB,IAAIR,IAAI,CAACK,UAAW,CAACE,eAAgB,CAACQ,IAAI,CAAC,EAAE;MAC3C;IACF;IACA,MAAMC,MAAM,GAAGC,kBAAkB,CAACT,QAAQ,CAAC;IAC3CR,IAAI,CAACK,UAAW,CAACE,eAAgB,CAACQ,IAAI,CAAC,GAAGC,MAAM;EAClD;EACAnE,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACrB,GAAG,CAAClB,WAAW,EAAE7B,OAAO,CAACqE,iBAAiB,CAAC,EAAGC,gBAAgB,IAAI;IAC7FA,gBAAgB,CAACC,OAAO,CAAEC,eAAe,IAAKd,mBAAmB,CAACc,eAAe,CAAC,CAAC;EACrF,CAAC,CAAC;EACF1E,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACrB,GAAG,CAAClB,WAAW,EAAEpB,WAAW,CAAC,EAAGwB,WAAW,IAAI;IAC1EgB,IAAI,CAACE,IAAI,CAAClB,WAAW,GAAGA,WAAW;EACrC,CAAC,CAAC;EACFnC,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACrB,GAAG,CAAClB,WAAW,EAAEnB,OAAO,CAAC,EAAGwB,OAAO,IAAI;IAClEe,IAAI,CAACE,IAAI,CAACjB,OAAO,GAAGA,OAAO;EAC7B,CAAC,CAAC;EACFpC,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACrB,GAAG,CAAClB,WAAW,EAAEf,OAAO,CAAC,EAAGqB,OAAO,IAAI;IAClEc,IAAI,CAACE,IAAI,CAAChB,OAAO,GAAGA,OAAc;EACpC,CAAC,CAAC;EACFrC,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACrB,GAAG,CAAClB,WAAW,EAAEjB,OAAO,CAAC,EAAGyB,OAAO,IAAI;IAClEY,IAAI,CAACZ,OAAO,GAAGA,OAAc;EAC/B,CAAC,CAAC;EACFvC,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACrB,GAAG,CAAClB,WAAW,EAAEb,QAAQ,CAAC,EAAGuB,QAAQ,IAAI;IACpElB,MAAM,CAACoD,MAAM,CAACxB,IAAI,EAAEV,QAAQ,CAAC;EAC/B,CAAC,CAAC;EACFQ,GAAG,CAAC2B,WAAW,CAACH,OAAO,CAAEI,UAAU,IAAI;IACrC,IAAI,CAAC1E,iBAAiB,CAAC2E,UAAU,CAACD,UAAU,CAAC,EAAE;MAC7C;IACF;IACA,KAAK,MAAM,CAACX,IAAI,EAAEP,QAAQ,CAAC,IAAIpC,MAAM,CAACD,OAAO,CAACuD,UAAU,CAAClB,QAAQ,CAAC,EAAE;MAClEM,gBAAgB,CAACC,IAAI,EAAEP,QAAQ,CAAC;MAChCR,IAAI,CAACQ,QAAS,CAACoB,IAAI,CAAC;QAAE,CAACb,IAAI,GAAG;MAAE,CAAE,CAAC;IACrC;EACF,CAAC,CAAC;EACFhE,OAAO,CAAC8E,OAAO,CAAC/B,GAAU,EAAE;IAC1BgC,OAAOA,CAAC;MAAEC;IAAK,CAAE;MACf,IAAItD,GAAG,GAA4B;QACjCsC,IAAI,EAAEpE,OAAO,CAACwD,SAAS,CAAC4B,KAAK,CAACnD,WAAW,EAAEtB,KAAK,EAAE,MAAMyE,KAAK,CAAClD,UAAU;OACzE;MACDhC,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACY,KAAK,CAACnD,WAAW,EAAEpB,WAAW,CAAC,EAAGwB,WAAW,IAAI;QAC5EP,GAAG,CAACO,WAAW,GAAGA,WAAW;MAC/B,CAAC,CAAC;MACFnC,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACY,KAAK,CAACnD,WAAW,EAAElB,YAAY,CAAC,EAAGyB,YAAY,IAAI;QAC9EV,GAAG,CAACU,YAAY,GAAGA,YAAY;MACjC,CAAC,CAAC;MACFtC,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACY,KAAK,CAACnD,WAAW,EAAEb,QAAQ,CAAC,EAAGuB,QAAQ,IAAI;QACtElB,MAAM,CAACoD,MAAM,CAAC/C,GAAG,EAAEa,QAAQ,CAAC;MAC9B,CAAC,CAAC;MACFzC,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACY,KAAK,CAACnD,WAAW,EAAEZ,SAAS,CAAC,EAAGgE,EAAE,IAAI;QACjEvD,GAAG,GAAGuD,EAAE,CAACvD,GAAG,CAAmB;MACjC,CAAC,CAAC;MACFuB,IAAI,CAAC9B,IAAK,CAAC0D,IAAI,CAACnD,GAAG,CAAC;IACtB,CAAC;IACDwD,UAAUA,CAAC;MAAEC,QAAQ;MAAEC,MAAM;MAAEJ,KAAK;MAAEL,UAAU;MAAEU,QAAQ;MAAEC;IAAS,CAAE;MACrE,MAAMC,IAAI,GAAGJ,QAAQ,CAACI,IAAI,CAACC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC;MAC1D,MAAMC,MAAM,GAAGN,QAAQ,CAACM,MAAM,CAACC,WAAW,EAA2B;MACrE,IAAIC,EAAE,GAAsC;QAC1CxE,IAAI,EAAE,CAACvB,OAAO,CAACwD,SAAS,CAAC4B,KAAK,CAACnD,WAAW,EAAEtB,KAAK,EAAE,MAAMyE,KAAK,CAAClD,UAAU,CAAC,CAAC;QAC3E8D,WAAW,EAAEhG,OAAO,CAACwD,SAAS,CAC5B+B,QAAQ,CAACtD,WAAW,EACpBxB,UAAU,EACV,MAAM2E,KAAK,CAACa,QAAQ,GAAGV,QAAQ,CAACnB,IAAI,GAAG,GAAGgB,KAAK,CAAClD,UAAU,IAAIqD,QAAQ,CAACnB,IAAI,EAAE,CAC9E;QACD8B,UAAU,EAAE,EAAE;QACdrC,QAAQ,EAAE,EAAE;QACZsC,SAAS,EAAE;OACZ;MACDjG,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACe,QAAQ,CAACtD,WAAW,EAAEpB,WAAW,CAAC,EAAGwB,WAAW,IAAI;QAC/E0D,EAAE,CAAC1D,WAAW,GAAGA,WAAW;MAC9B,CAAC,CAAC;MACFnC,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACe,QAAQ,CAACtD,WAAW,EAAEf,OAAO,CAAC,EAAGqB,OAAO,IAAI;QACvEwD,EAAE,CAACxD,OAAO,GAAGA,OAAO;MACtB,CAAC,CAAC;MACFrC,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACe,QAAQ,CAACtD,WAAW,EAAEd,UAAU,CAAC,EAAGiF,UAAU,IAAI;QAC7EL,EAAE,CAACK,UAAU,GAAGA,UAAU;MAC5B,CAAC,CAAC;MACFlG,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACe,QAAQ,CAACtD,WAAW,EAAElB,YAAY,CAAC,EAAGyB,YAAY,IAAI;QACjFuD,EAAE,CAACvD,YAAY,GAAGA,YAAY;MAChC,CAAC,CAAC;MACFuC,UAAU,CAACJ,OAAO,CAAEI,UAAU,IAAI;QAChC,IAAI,CAAC1E,iBAAiB,CAAC2E,UAAU,CAACD,UAAU,CAAC,EAAE;UAC7C;QACF;QACA,KAAK,MAAM,CAACX,IAAI,EAAEP,QAAQ,CAAC,IAAIpC,MAAM,CAACD,OAAO,CAACuD,UAAU,CAAClB,QAAQ,CAAC,EAAE;UAClEM,gBAAgB,CAACC,IAAI,EAAEP,QAAQ,CAAC;UAChCkC,EAAE,CAAClC,QAAS,CAACoB,IAAI,CAAC;YAAE,CAACb,IAAI,GAAG;UAAE,CAAE,CAAC;QACnC;MACF,CAAC,CAAC;MACF,IAAIqB,QAAQ,CAACY,IAAI,GAAG,CAAC,EAAE;QACrB,MAAMC,OAAO,GAAgC,EAAE;QAC/Cb,QAAQ,CAACd,OAAO,CAAC,CAAC;UAAE4B;QAAG,CAAE,EAAEC,WAAW,KAAI;UACxCF,OAAO,CAACE,WAAqC,CAAC,GAAG;YAC/CzC,MAAM,EAAED,mBAAmB,CAAC3D,MAAM,CAACsG,IAAI,CAACF,GAAG,CAAC;WAC7C;QACH,CAAC,CAAC;QACFR,EAAE,CAACW,WAAW,GAAG;UAAEJ,OAAO;UAAEK,QAAQ,EAAE;QAAI,CAAE;MAC9C;MACA,KAAK,MAAM,CAACC,MAAM,EAAE;QAAEL,GAAG;QAAElE;MAAW,CAAE,CAAC,IAAIqD,SAAS,EAAE;QACtD,IAAIK,EAAE,CAACI,SAAU,CAACS,MAAM,CAAC,EAAE;QAC3Bb,EAAE,CAACI,SAAU,CAACS,MAAM,CAAC,GAAG;UACtBvE,WAAW,EAAEnC,MAAM,CAACsD,SAAS,CAACnB,WAAW,EAAE,MAAM,SAAS;SAC3D;QACDkE,GAAG,CAACM,IAAI,CACN3G,MAAM,CAAC4G,MAAM,CAAEP,GAAG,IAAK,CAACjG,aAAa,CAACyG,kBAAkB,CAACR,GAAG,CAAC,CAAC,EAC9DrG,MAAM,CAACqE,GAAG,CAAEgC,GAAG,IAAI;UACjBR,EAAE,CAACI,SAAU,CAACS,MAAM,CAAC,CAACN,OAAO,GAAG;YAC9B,kBAAkB,EAAE;cAClBvC,MAAM,EAAED,mBAAmB,CAAC3D,MAAM,CAACsG,IAAI,CAACF,GAAG,CAAC;;WAE/C;QACH,CAAC,CAAC,CACH;MACH;MACA,IAAIrG,MAAM,CAAC8G,MAAM,CAACzB,QAAQ,CAAC0B,UAAU,CAAC,EAAE;QACtC,MAAMlD,MAAM,GAAGD,mBAAmB,CAACyB,QAAQ,CAAC0B,UAAU,CAACC,KAAK,CAAsB;QAClF,IAAI,YAAY,IAAInD,MAAM,EAAE;UAC1BtC,MAAM,CAACD,OAAO,CAACuC,MAAM,CAACoD,UAAU,CAAC,CAACxC,OAAO,CAAC,CAAC,CAACP,IAAI,EAAEgD,UAAU,CAAC,KAAI;YAC/DrB,EAAE,CAACG,UAAW,CAACjB,IAAI,CAAC;cAClBb,IAAI;cACJiD,EAAE,EAAE,MAAM;cACVtD,MAAM,EAAEqD,UAAU;cAClBT,QAAQ,EAAE5C,MAAM,CAAC4C,QAAQ,CAACW,QAAQ,CAAClD,IAAI,CAAC;cACxC,IAAIgD,UAAU,CAAC/E,WAAW,GAAG;gBAAEA,WAAW,EAAE+E,UAAU,CAAC/E;cAAW,CAAE,GAAG,EAAE;aAC1E,CAAC;UACJ,CAAC,CAAC;QACJ;MACF;MACA,IAAI,CAAC9B,UAAU,CAACgH,OAAO,CAAChC,QAAQ,CAACM,MAAM,CAAC,IAAI3F,MAAM,CAAC8G,MAAM,CAACzB,QAAQ,CAACiC,aAAa,CAAC,EAAE;QACjF,MAAMzD,MAAM,GAAGD,mBAAmB,CAACyB,QAAQ,CAACiC,aAAa,CAACN,KAAK,CAAsB;QACrF,IAAI,YAAY,IAAInD,MAAM,EAAE;UAC1BtC,MAAM,CAACD,OAAO,CAACuC,MAAM,CAACoD,UAAU,CAAC,CAACxC,OAAO,CAAC,CAAC,CAACP,IAAI,EAAEgD,UAAU,CAAC,KAAI;YAC/DrB,EAAE,CAACG,UAAW,CAACjB,IAAI,CAAC;cAClBb,IAAI;cACJiD,EAAE,EAAE,OAAO;cACXtD,MAAM,EAAEqD,UAAU;cAClBT,QAAQ,EAAE5C,MAAM,CAAC4C,QAAQ,CAACW,QAAQ,CAAClD,IAAI,CAAC;cACxC,IAAIgD,UAAU,CAAC/E,WAAW,GAAG;gBAAEA,WAAW,EAAE+E,UAAU,CAAC/E;cAAW,CAAE,GAAG,EAAE;aAC1E,CAAC;UACJ,CAAC,CAAC;QACJ;MACF;MACA,IAAInC,MAAM,CAAC8G,MAAM,CAACzB,QAAQ,CAACkC,aAAa,CAAC,EAAE;QACzC,MAAM1D,MAAM,GAAGD,mBAAmB,CAACyB,QAAQ,CAACkC,aAAa,CAACP,KAAK,CAAsB;QACrF,IAAI,YAAY,IAAInD,MAAM,EAAE;UAC1BtC,MAAM,CAACD,OAAO,CAACuC,MAAM,CAACoD,UAAU,CAAC,CAACxC,OAAO,CAAC,CAAC,CAACP,IAAI,EAAEgD,UAAU,CAAC,KAAI;YAC/DrB,EAAE,CAACG,UAAW,CAACjB,IAAI,CAAC;cAClBb,IAAI;cACJiD,EAAE,EAAE,QAAQ;cACZtD,MAAM,EAAEqD,UAAU;cAClBT,QAAQ,EAAE5C,MAAM,CAAC4C,QAAQ,CAACW,QAAQ,CAAClD,IAAI,CAAC;cACxC,IAAIgD,UAAU,CAAC/E,WAAW,GAAG;gBAAEA,WAAW,EAAE+E,UAAU,CAAC/E;cAAW,CAAE,GAAG,EAAE;aAC1E,CAAC;UACJ,CAAC,CAAC;QACJ;MACF;MACA,IAAInC,MAAM,CAAC8G,MAAM,CAACzB,QAAQ,CAACmC,eAAe,CAAC,EAAE;QAC3C,MAAM3D,MAAM,GAAGD,mBAAmB,CAACyB,QAAQ,CAACmC,eAAe,CAACR,KAAK,CAAsB;QACvF,IAAI,YAAY,IAAInD,MAAM,EAAE;UAC1BtC,MAAM,CAACD,OAAO,CAACuC,MAAM,CAACoD,UAAU,CAAC,CAACxC,OAAO,CAAC,CAAC,CAACP,IAAI,EAAEgD,UAAU,CAAC,KAAI;YAC/DrB,EAAE,CAACG,UAAW,CAACjB,IAAI,CAAC;cAClBb,IAAI;cACJiD,EAAE,EAAE,OAAO;cACXtD,MAAM,EAAEqD,UAAU;cAClBT,QAAQ,EAAE5C,MAAM,CAAC4C,QAAQ,CAACW,QAAQ,CAAClD,IAAI,CAAC;cACxC,IAAIgD,UAAU,CAAC/E,WAAW,GAAG;gBAAEA,WAAW,EAAE+E,UAAU,CAAC/E;cAAW,CAAE,GAAG,EAAE;aAC1E,CAAC;UACJ,CAAC,CAAC;QACJ;MACF;MACA,KAAK,MAAM,CAACuE,MAAM,EAAE;QAAEL,GAAG;QAAElE;MAAW,CAAE,CAAC,IAAImD,MAAM,EAAE;QACnD,IAAIO,EAAE,CAACI,SAAU,CAACS,MAAM,CAAC,EAAE;QAC3Bb,EAAE,CAACI,SAAU,CAACS,MAAM,CAAC,GAAG;UACtBvE,WAAW,EAAEnC,MAAM,CAACsD,SAAS,CAACnB,WAAW,EAAE,MAAM,OAAO;SACzD;QACDkE,GAAG,CAACM,IAAI,CACN3G,MAAM,CAAC4G,MAAM,CAAEP,GAAG,IAAK,CAACjG,aAAa,CAACyG,kBAAkB,CAACR,GAAG,CAAC,CAAC,EAC9DrG,MAAM,CAACqE,GAAG,CAAEgC,GAAG,IAAI;UACjBR,EAAE,CAACI,SAAU,CAACS,MAAM,CAAC,CAACN,OAAO,GAAG;YAC9B,kBAAkB,EAAE;cAClBvC,MAAM,EAAED,mBAAmB,CAAC3D,MAAM,CAACsG,IAAI,CAACF,GAAG,CAAC;;WAE/C;QACH,CAAC,CAAC,CACH;MACH;MACA,IAAI,CAAClD,IAAI,CAACI,KAAK,CAACkC,IAAI,CAAC,EAAE;QACrBtC,IAAI,CAACI,KAAK,CAACkC,IAAI,CAAC,GAAG,EAAE;MACvB;MACAzF,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACe,QAAQ,CAACtD,WAAW,EAAEb,QAAQ,CAAC,EAAGuB,QAAQ,IAAI;QACzElB,MAAM,CAACoD,MAAM,CAACkB,EAAE,EAAEpD,QAAQ,CAAC;MAC7B,CAAC,CAAC;MACFzC,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACe,QAAQ,CAACtD,WAAW,EAAEZ,SAAS,CAAC,EAAGsG,WAAW,IAAI;QAC7E5B,EAAE,GAAG4B,WAAW,CAAC5B,EAAE,CAAC;MACtB,CAAC,CAAC;MACF1C,IAAI,CAACI,KAAK,CAACkC,IAAI,CAAC,CAACE,MAAM,CAAC,GAAGE,EAAE;IAC/B;GACD,CAAC;EAEF7F,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACrB,GAAG,CAAClB,WAAW,EAAEZ,SAAS,CAAC,EAAGsG,WAAW,IAAI;IACxEtE,IAAI,GAAGsE,WAAW,CAACtE,IAAI,CAAgB;EACzC,CAAC,CAAC;EAEFR,QAAQ,CAAC+E,GAAG,CAAC5E,IAAI,EAAEK,IAAI,CAAC;EAExB,OAAOA,IAAI;AACb,CAAC;AAED,MAAMiB,kBAAkB,GAAIT,QAAyB,IAA2B;EAC9E,MAAMgE,IAAI,GAA4C,EAAE;EACxD3H,MAAM,CAACqE,GAAG,CAACvE,OAAO,CAACwE,SAAS,CAACX,QAAQ,CAAC5B,WAAW,EAAEpB,WAAW,CAAC,EAAGwB,WAAW,IAAI;IAC/EwF,IAAI,CAACxF,WAAW,GAAGA,WAAW;EAChC,CAAC,CAAC;EACF,QAAQwB,QAAQ,CAACiE,IAAI;IACnB,KAAK,OAAO;MAAE;QACZ,OAAO;UACL,GAAGD,IAAI;UACPE,IAAI,EAAE,MAAM;UACZ1D,MAAM,EAAE;SACT;MACH;IACA,KAAK,QAAQ;MAAE;QACb,MAAM3B,MAAM,GAAG1C,OAAO,CAACwE,SAAS,CAACX,QAAQ,CAAC5B,WAAW,EAAEhB,MAAM,CAAC,CAAC4F,IAAI,CACjE3G,MAAM,CAACqE,GAAG,CAAE7B,MAAM,KAAM;UAAEsF,YAAY,EAAEtF;QAAM,CAAE,CAAC,CAAC,EAClDxC,MAAM,CAAC+H,cAAc,CACtB;QACD,OAAO;UACL,GAAGJ,IAAI;UACPE,IAAI,EAAE,MAAM;UACZ1D,MAAM,EAAE,QAAQ;UAChB,GAAG3B;SACJ;MACH;IACA,KAAK,QAAQ;MAAE;QACb,OAAO;UACL,GAAGmF,IAAI;UACPE,IAAI,EAAE,QAAQ;UACd3D,IAAI,EAAEP,QAAQ,CAAChC,GAAG;UAClBwF,EAAE,EAAExD,QAAQ,CAACwD;SACd;MACH;EACF;AACF,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"OpenApi.js","names":["Context","constFalse","globalValue","Option","Schema","HttpApi","HttpApiMiddleware","HttpApiSchema","HttpMethod","JsonSchema","Identifier","Tag","Title","Version","Description","License","ExternalDocs","Servers","Format","Summary","Deprecated","Override","Exclude","Reference","defaultValue","Transform","contextPartial","tags","entries","Object","options","context","empty","key","tag","undefined","add","annotations","identifier","title","version","description","license","summary","externalDocs","servers","format","override","exclude","transform","apiCache","WeakMap","fromApi","self","has","get","api","jsonSchemaDefs","spec","openapi","info","getOrElse","paths","components","schemas","securitySchemes","security","makeJsonSchemaOrRef","schema","makeWithDefs","defs","registerSecurity","name","scheme","makeSecurityScheme","map","getOption","AdditionalSchemas","componentSchemas","forEach","componentSchema","assign","middlewares","middleware","isSecurity","push","reflect","onGroup","group","fn","onEndpoint","endpoint","errors","mergedAnnotations","payloads","successes","path","replace","method","toLowerCase","op","operationId","topLevel","parameters","responses","deprecated","size","content","ast","contentType","make","requestBody","required","status","pipe","filter","getEmptyDecodeable","isSome","pathSchema","value","properties","jsonSchema","in","includes","hasBody","payloadSchema","headersSchema","urlParamsSchema","transformFn","set","meta","_tag","type","bearerFormat","getOrUndefined"],"sources":["../../src/OpenApi.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,499 +1,40 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @since 1.0.0
|
|
3
3
|
*/
|
|
4
|
-
import * as
|
|
5
|
-
import * as Option from "effect/Option";
|
|
6
|
-
import * as Predicate from "effect/Predicate";
|
|
4
|
+
import * as JSONSchema from "effect/JSONSchema";
|
|
7
5
|
import * as Record from "effect/Record";
|
|
8
|
-
import * as AST from "effect/SchemaAST";
|
|
9
6
|
/**
|
|
10
7
|
* @category encoding
|
|
11
8
|
* @since 1.0.0
|
|
12
9
|
*/
|
|
13
10
|
export const make = schema => {
|
|
14
|
-
const
|
|
11
|
+
const defs = {};
|
|
15
12
|
const out = makeWithDefs(schema, {
|
|
16
|
-
defs
|
|
13
|
+
defs
|
|
17
14
|
});
|
|
18
|
-
if (!Record.isEmptyRecord(
|
|
19
|
-
out.$defs =
|
|
15
|
+
if (!Record.isEmptyRecord(defs)) {
|
|
16
|
+
out.$defs = defs;
|
|
20
17
|
}
|
|
21
18
|
return out;
|
|
22
19
|
};
|
|
23
20
|
/**
|
|
21
|
+
* Creates a schema with additional options and definitions.
|
|
22
|
+
*
|
|
23
|
+
* - `defs`: A record of definitions that are included in the schema.
|
|
24
|
+
* - `defsPath`: The path to the definitions within the schema (defaults to "#/$defs/").
|
|
25
|
+
* - `topLevelReferenceStrategy`: Controls the handling of the top-level reference. Possible values are:
|
|
26
|
+
* - `"keep"`: Keep the top-level reference (default behavior).
|
|
27
|
+
* - `"skip"`: Skip the top-level reference.
|
|
28
|
+
*
|
|
24
29
|
* @category encoding
|
|
25
30
|
* @since 1.0.0
|
|
26
31
|
*/
|
|
27
32
|
export const makeWithDefs = (schema, options) => {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
33
|
+
return JSONSchema.fromAST(schema.ast, {
|
|
34
|
+
definitions: options.defs,
|
|
35
|
+
definitionPath: options.defsPath ?? "#/components/schemas/",
|
|
36
|
+
target: "openApi3.1",
|
|
37
|
+
topLevelReferenceStrategy: options.topLevelReferenceStrategy ?? "keep"
|
|
32
38
|
});
|
|
33
|
-
for (const id in options.defs) {
|
|
34
|
-
if (options.defs[id]["$ref"] === getRef(id)) {
|
|
35
|
-
delete options.defs[id];
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return out;
|
|
39
|
-
};
|
|
40
|
-
const constAny = {
|
|
41
|
-
$id: "/schemas/any"
|
|
42
|
-
};
|
|
43
|
-
const constUnknown = {
|
|
44
|
-
$id: "/schemas/unknown"
|
|
45
|
-
};
|
|
46
|
-
const constVoid = {
|
|
47
|
-
$id: "/schemas/void"
|
|
48
|
-
};
|
|
49
|
-
const constAnyObject = {
|
|
50
|
-
"$id": "/schemas/object",
|
|
51
|
-
"anyOf": [{
|
|
52
|
-
"type": "object"
|
|
53
|
-
}, {
|
|
54
|
-
"type": "array"
|
|
55
|
-
}]
|
|
56
|
-
};
|
|
57
|
-
const constEmpty = {
|
|
58
|
-
"$id": "/schemas/{}",
|
|
59
|
-
"anyOf": [{
|
|
60
|
-
"type": "object"
|
|
61
|
-
}, {
|
|
62
|
-
"type": "array"
|
|
63
|
-
}]
|
|
64
|
-
};
|
|
65
|
-
const getJsonSchemaAnnotations = annotated => Record.getSomes({
|
|
66
|
-
description: AST.getDescriptionAnnotation(annotated),
|
|
67
|
-
title: AST.getTitleAnnotation(annotated),
|
|
68
|
-
examples: AST.getExamplesAnnotation(annotated),
|
|
69
|
-
default: AST.getDefaultAnnotation(annotated)
|
|
70
|
-
});
|
|
71
|
-
const removeDefaultJsonSchemaAnnotations = (jsonSchemaAnnotations, ast) => {
|
|
72
|
-
if (jsonSchemaAnnotations["title"] === ast.annotations[AST.TitleAnnotationId]) {
|
|
73
|
-
delete jsonSchemaAnnotations["title"];
|
|
74
|
-
}
|
|
75
|
-
if (jsonSchemaAnnotations["description"] === ast.annotations[AST.DescriptionAnnotationId]) {
|
|
76
|
-
delete jsonSchemaAnnotations["description"];
|
|
77
|
-
}
|
|
78
|
-
return jsonSchemaAnnotations;
|
|
79
|
-
};
|
|
80
|
-
const getASTJsonSchemaAnnotations = ast => {
|
|
81
|
-
const jsonSchemaAnnotations = getJsonSchemaAnnotations(ast);
|
|
82
|
-
switch (ast._tag) {
|
|
83
|
-
case "StringKeyword":
|
|
84
|
-
return removeDefaultJsonSchemaAnnotations(jsonSchemaAnnotations, AST.stringKeyword);
|
|
85
|
-
case "NumberKeyword":
|
|
86
|
-
return removeDefaultJsonSchemaAnnotations(jsonSchemaAnnotations, AST.numberKeyword);
|
|
87
|
-
case "BooleanKeyword":
|
|
88
|
-
return removeDefaultJsonSchemaAnnotations(jsonSchemaAnnotations, AST.booleanKeyword);
|
|
89
|
-
default:
|
|
90
|
-
return jsonSchemaAnnotations;
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
const pruneUndefinedFromPropertySignature = ast => {
|
|
94
|
-
if (Option.isNone(AST.getJSONSchemaAnnotation(ast))) {
|
|
95
|
-
switch (ast._tag) {
|
|
96
|
-
case "Union":
|
|
97
|
-
{
|
|
98
|
-
const types = ast.types.filter(type => !AST.isUndefinedKeyword(type));
|
|
99
|
-
if (types.length < ast.types.length) {
|
|
100
|
-
return AST.Union.make(types, ast.annotations);
|
|
101
|
-
}
|
|
102
|
-
break;
|
|
103
|
-
}
|
|
104
|
-
case "Transformation":
|
|
105
|
-
return pruneUndefinedFromPropertySignature(isParseJsonTransformation(ast.from) ? ast.to : ast.from);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
const getRefinementInnerTransformation = ast => {
|
|
110
|
-
switch (ast.from._tag) {
|
|
111
|
-
case "Transformation":
|
|
112
|
-
return ast.from;
|
|
113
|
-
case "Refinement":
|
|
114
|
-
return getRefinementInnerTransformation(ast.from);
|
|
115
|
-
case "Suspend":
|
|
116
|
-
{
|
|
117
|
-
const from = ast.from.f();
|
|
118
|
-
if (AST.isRefinement(from)) {
|
|
119
|
-
return getRefinementInnerTransformation(from);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
};
|
|
124
|
-
const isParseJsonTransformation = ast => ast.annotations[AST.SchemaIdAnnotationId] === AST.ParseJsonSchemaId;
|
|
125
|
-
const isOverrideAnnotation = jsonSchema => {
|
|
126
|
-
return "type" in jsonSchema || "oneOf" in jsonSchema || "anyOf" in jsonSchema || "const" in jsonSchema || "enum" in jsonSchema || "$ref" in jsonSchema;
|
|
127
|
-
};
|
|
128
|
-
const go = (ast, $defs, handleIdentifier, path, options) => {
|
|
129
|
-
const hook = AST.getJSONSchemaAnnotation(ast);
|
|
130
|
-
if (Option.isSome(hook)) {
|
|
131
|
-
const handler = hook.value;
|
|
132
|
-
if (AST.isRefinement(ast)) {
|
|
133
|
-
const t = getRefinementInnerTransformation(ast);
|
|
134
|
-
if (t === undefined) {
|
|
135
|
-
try {
|
|
136
|
-
return {
|
|
137
|
-
...go(ast.from, $defs, true, path, options),
|
|
138
|
-
...getJsonSchemaAnnotations(ast),
|
|
139
|
-
...handler
|
|
140
|
-
};
|
|
141
|
-
} catch (e) {
|
|
142
|
-
return {
|
|
143
|
-
...getJsonSchemaAnnotations(ast),
|
|
144
|
-
...handler
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
} else if (!isOverrideAnnotation(handler)) {
|
|
148
|
-
return {
|
|
149
|
-
...go(t, $defs, true, path, options),
|
|
150
|
-
...getJsonSchemaAnnotations(ast)
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
return handler;
|
|
155
|
-
}
|
|
156
|
-
const surrogate = AST.getSurrogateAnnotation(ast);
|
|
157
|
-
if (handleIdentifier && !AST.isRefinement(ast)) {
|
|
158
|
-
const identifier = AST.getJSONIdentifier(Option.isSome(surrogate) ? {
|
|
159
|
-
annotations: {
|
|
160
|
-
...(ast._tag === "Transformation" ? ast.to.annotations : {}),
|
|
161
|
-
...ast.annotations
|
|
162
|
-
}
|
|
163
|
-
} : ast);
|
|
164
|
-
if (Option.isSome(identifier)) {
|
|
165
|
-
const id = identifier.value;
|
|
166
|
-
const out = {
|
|
167
|
-
$ref: options.getRef(id)
|
|
168
|
-
};
|
|
169
|
-
if (!Record.has($defs, id)) {
|
|
170
|
-
$defs[id] = out;
|
|
171
|
-
$defs[id] = go(ast, $defs, false, path, options);
|
|
172
|
-
}
|
|
173
|
-
return out;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
if (Option.isSome(surrogate)) {
|
|
177
|
-
return {
|
|
178
|
-
...go(surrogate.value, $defs, handleIdentifier, path, options),
|
|
179
|
-
...(ast._tag === "Transformation" ? getJsonSchemaAnnotations(ast.to) : {}),
|
|
180
|
-
...getJsonSchemaAnnotations(ast)
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
switch (ast._tag) {
|
|
184
|
-
case "Declaration":
|
|
185
|
-
throw new Error(getJSONSchemaMissingAnnotationErrorMessage(path, ast));
|
|
186
|
-
case "Literal":
|
|
187
|
-
{
|
|
188
|
-
const literal = ast.literal;
|
|
189
|
-
if (literal === null) {
|
|
190
|
-
return {
|
|
191
|
-
enum: [null],
|
|
192
|
-
...getJsonSchemaAnnotations(ast)
|
|
193
|
-
};
|
|
194
|
-
} else if (Predicate.isString(literal) || Predicate.isNumber(literal) || Predicate.isBoolean(literal)) {
|
|
195
|
-
return {
|
|
196
|
-
enum: [literal],
|
|
197
|
-
...getJsonSchemaAnnotations(ast)
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
throw new Error(getJSONSchemaMissingAnnotationErrorMessage(path, ast));
|
|
201
|
-
}
|
|
202
|
-
case "UniqueSymbol":
|
|
203
|
-
throw new Error(getJSONSchemaMissingAnnotationErrorMessage(path, ast));
|
|
204
|
-
case "UndefinedKeyword":
|
|
205
|
-
throw new Error(getJSONSchemaMissingAnnotationErrorMessage(path, ast));
|
|
206
|
-
case "VoidKeyword":
|
|
207
|
-
return {
|
|
208
|
-
...constVoid,
|
|
209
|
-
...getJsonSchemaAnnotations(ast)
|
|
210
|
-
};
|
|
211
|
-
case "NeverKeyword":
|
|
212
|
-
throw new Error(getJSONSchemaMissingAnnotationErrorMessage(path, ast));
|
|
213
|
-
case "UnknownKeyword":
|
|
214
|
-
return {
|
|
215
|
-
...constUnknown,
|
|
216
|
-
...getJsonSchemaAnnotations(ast)
|
|
217
|
-
};
|
|
218
|
-
case "AnyKeyword":
|
|
219
|
-
return {
|
|
220
|
-
...constAny,
|
|
221
|
-
...getJsonSchemaAnnotations(ast)
|
|
222
|
-
};
|
|
223
|
-
case "ObjectKeyword":
|
|
224
|
-
return {
|
|
225
|
-
...constAnyObject,
|
|
226
|
-
...getJsonSchemaAnnotations(ast)
|
|
227
|
-
};
|
|
228
|
-
case "StringKeyword":
|
|
229
|
-
return {
|
|
230
|
-
type: "string",
|
|
231
|
-
...getASTJsonSchemaAnnotations(ast)
|
|
232
|
-
};
|
|
233
|
-
case "NumberKeyword":
|
|
234
|
-
return {
|
|
235
|
-
type: "number",
|
|
236
|
-
...getASTJsonSchemaAnnotations(ast)
|
|
237
|
-
};
|
|
238
|
-
case "BooleanKeyword":
|
|
239
|
-
return {
|
|
240
|
-
type: "boolean",
|
|
241
|
-
...getASTJsonSchemaAnnotations(ast)
|
|
242
|
-
};
|
|
243
|
-
case "BigIntKeyword":
|
|
244
|
-
throw new Error(getJSONSchemaMissingAnnotationErrorMessage(path, ast));
|
|
245
|
-
case "SymbolKeyword":
|
|
246
|
-
throw new Error(getJSONSchemaMissingAnnotationErrorMessage(path, ast));
|
|
247
|
-
case "TupleType":
|
|
248
|
-
{
|
|
249
|
-
const elements = ast.elements.map((e, i) => ({
|
|
250
|
-
...go(e.type, $defs, true, path.concat(i), options),
|
|
251
|
-
...getJsonSchemaAnnotations(e)
|
|
252
|
-
}));
|
|
253
|
-
const rest = ast.rest.map(annotatedAST => ({
|
|
254
|
-
...go(annotatedAST.type, $defs, true, path, options),
|
|
255
|
-
...getJsonSchemaAnnotations(annotatedAST)
|
|
256
|
-
}));
|
|
257
|
-
const output = {
|
|
258
|
-
type: "array"
|
|
259
|
-
};
|
|
260
|
-
// ---------------------------------------------
|
|
261
|
-
// handle elements
|
|
262
|
-
// ---------------------------------------------
|
|
263
|
-
const len = ast.elements.length;
|
|
264
|
-
if (len > 0) {
|
|
265
|
-
output.minItems = len - ast.elements.filter(element => element.isOptional).length;
|
|
266
|
-
output.items = elements;
|
|
267
|
-
}
|
|
268
|
-
// ---------------------------------------------
|
|
269
|
-
// handle rest element
|
|
270
|
-
// ---------------------------------------------
|
|
271
|
-
const restLength = rest.length;
|
|
272
|
-
if (restLength > 0) {
|
|
273
|
-
const head = rest[0];
|
|
274
|
-
const isHomogeneous = restLength === 1 && ast.elements.every(e => e.type === ast.rest[0].type);
|
|
275
|
-
if (isHomogeneous) {
|
|
276
|
-
output.items = head;
|
|
277
|
-
} else {
|
|
278
|
-
output.additionalItems = head;
|
|
279
|
-
}
|
|
280
|
-
// ---------------------------------------------
|
|
281
|
-
// handle post rest elements
|
|
282
|
-
// ---------------------------------------------
|
|
283
|
-
if (restLength > 1) {
|
|
284
|
-
throw new Error(getJSONSchemaUnsupportedPostRestElementsErrorMessage(path));
|
|
285
|
-
}
|
|
286
|
-
} else {
|
|
287
|
-
if (len > 0) {
|
|
288
|
-
output.additionalItems = false;
|
|
289
|
-
} else {
|
|
290
|
-
output.maxItems = 0;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
return {
|
|
294
|
-
...output,
|
|
295
|
-
...getJsonSchemaAnnotations(ast)
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
|
-
case "TypeLiteral":
|
|
299
|
-
{
|
|
300
|
-
if (ast.propertySignatures.length === 0 && ast.indexSignatures.length === 0) {
|
|
301
|
-
return {
|
|
302
|
-
...constEmpty,
|
|
303
|
-
...getJsonSchemaAnnotations(ast)
|
|
304
|
-
};
|
|
305
|
-
}
|
|
306
|
-
let patternProperties = undefined;
|
|
307
|
-
let propertyNames = undefined;
|
|
308
|
-
for (const is of ast.indexSignatures) {
|
|
309
|
-
const parameter = is.parameter;
|
|
310
|
-
switch (parameter._tag) {
|
|
311
|
-
case "StringKeyword":
|
|
312
|
-
{
|
|
313
|
-
patternProperties = go(is.type, $defs, true, path, options);
|
|
314
|
-
break;
|
|
315
|
-
}
|
|
316
|
-
case "TemplateLiteral":
|
|
317
|
-
{
|
|
318
|
-
patternProperties = go(is.type, $defs, true, path, options);
|
|
319
|
-
propertyNames = {
|
|
320
|
-
type: "string",
|
|
321
|
-
pattern: AST.getTemplateLiteralRegExp(parameter).source
|
|
322
|
-
};
|
|
323
|
-
break;
|
|
324
|
-
}
|
|
325
|
-
case "Refinement":
|
|
326
|
-
{
|
|
327
|
-
patternProperties = go(is.type, $defs, true, path, options);
|
|
328
|
-
propertyNames = go(parameter, $defs, true, path, options);
|
|
329
|
-
break;
|
|
330
|
-
}
|
|
331
|
-
case "SymbolKeyword":
|
|
332
|
-
throw new Error(getJSONSchemaUnsupportedParameterErrorMessage(path, parameter));
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
const output = {
|
|
336
|
-
type: "object",
|
|
337
|
-
required: [],
|
|
338
|
-
properties: {},
|
|
339
|
-
additionalProperties: false
|
|
340
|
-
};
|
|
341
|
-
// ---------------------------------------------
|
|
342
|
-
// handle property signatures
|
|
343
|
-
// ---------------------------------------------
|
|
344
|
-
for (let i = 0; i < ast.propertySignatures.length; i++) {
|
|
345
|
-
const ps = ast.propertySignatures[i];
|
|
346
|
-
const name = ps.name;
|
|
347
|
-
if (Predicate.isString(name)) {
|
|
348
|
-
const pruned = pruneUndefinedFromPropertySignature(ps.type);
|
|
349
|
-
output.properties[name] = {
|
|
350
|
-
...go(pruned ? pruned : ps.type, $defs, true, path.concat(ps.name), options),
|
|
351
|
-
...getJsonSchemaAnnotations(ps)
|
|
352
|
-
};
|
|
353
|
-
// ---------------------------------------------
|
|
354
|
-
// handle optional property signatures
|
|
355
|
-
// ---------------------------------------------
|
|
356
|
-
if (!ps.isOptional && pruned === undefined) {
|
|
357
|
-
output.required.push(name);
|
|
358
|
-
}
|
|
359
|
-
} else {
|
|
360
|
-
throw new Error(getJSONSchemaUnsupportedKeyErrorMessage(name, path));
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
// ---------------------------------------------
|
|
364
|
-
// handle index signatures
|
|
365
|
-
// ---------------------------------------------
|
|
366
|
-
if (patternProperties !== undefined) {
|
|
367
|
-
delete output.additionalProperties;
|
|
368
|
-
output.patternProperties = {
|
|
369
|
-
"": patternProperties
|
|
370
|
-
};
|
|
371
|
-
}
|
|
372
|
-
if (propertyNames !== undefined) {
|
|
373
|
-
output.propertyNames = propertyNames;
|
|
374
|
-
}
|
|
375
|
-
return {
|
|
376
|
-
...output,
|
|
377
|
-
...getJsonSchemaAnnotations(ast)
|
|
378
|
-
};
|
|
379
|
-
}
|
|
380
|
-
case "Union":
|
|
381
|
-
{
|
|
382
|
-
const enums = [];
|
|
383
|
-
const anyOf = [];
|
|
384
|
-
for (const type of ast.types) {
|
|
385
|
-
const schema = go(type, $defs, true, path, options);
|
|
386
|
-
if ("enum" in schema) {
|
|
387
|
-
if (Object.keys(schema).length > 1) {
|
|
388
|
-
anyOf.push(schema);
|
|
389
|
-
} else {
|
|
390
|
-
for (const e of schema.enum) {
|
|
391
|
-
enums.push(e);
|
|
392
|
-
}
|
|
393
|
-
}
|
|
394
|
-
} else {
|
|
395
|
-
anyOf.push(schema);
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
if (anyOf.length === 0) {
|
|
399
|
-
return {
|
|
400
|
-
enum: enums,
|
|
401
|
-
...getJsonSchemaAnnotations(ast)
|
|
402
|
-
};
|
|
403
|
-
} else {
|
|
404
|
-
if (enums.length >= 1) {
|
|
405
|
-
anyOf.push({
|
|
406
|
-
enum: enums
|
|
407
|
-
});
|
|
408
|
-
}
|
|
409
|
-
return {
|
|
410
|
-
anyOf,
|
|
411
|
-
...getJsonSchemaAnnotations(ast)
|
|
412
|
-
};
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
case "Enums":
|
|
416
|
-
{
|
|
417
|
-
return {
|
|
418
|
-
$comment: "/schemas/enums",
|
|
419
|
-
anyOf: ast.enums.map(e => ({
|
|
420
|
-
title: e[0],
|
|
421
|
-
enum: [e[1]]
|
|
422
|
-
})),
|
|
423
|
-
...getJsonSchemaAnnotations(ast)
|
|
424
|
-
};
|
|
425
|
-
}
|
|
426
|
-
case "Refinement":
|
|
427
|
-
{
|
|
428
|
-
if (AST.encodedBoundAST(ast) === ast) {
|
|
429
|
-
throw new Error(getJSONSchemaMissingAnnotationErrorMessage(path, ast));
|
|
430
|
-
}
|
|
431
|
-
return go(ast.from, $defs, true, path, options);
|
|
432
|
-
}
|
|
433
|
-
case "TemplateLiteral":
|
|
434
|
-
{
|
|
435
|
-
const regex = AST.getTemplateLiteralRegExp(ast);
|
|
436
|
-
return {
|
|
437
|
-
type: "string",
|
|
438
|
-
description: "a template literal",
|
|
439
|
-
pattern: regex.source,
|
|
440
|
-
...getJsonSchemaAnnotations(ast)
|
|
441
|
-
};
|
|
442
|
-
}
|
|
443
|
-
case "Suspend":
|
|
444
|
-
{
|
|
445
|
-
const identifier = Option.orElse(AST.getJSONIdentifier(ast), () => AST.getJSONIdentifier(ast.f()));
|
|
446
|
-
if (Option.isNone(identifier)) {
|
|
447
|
-
throw new Error(getJSONSchemaMissingIdentifierAnnotationErrorMessage(path, ast));
|
|
448
|
-
}
|
|
449
|
-
return {
|
|
450
|
-
...go(ast.f(), $defs, true, path, options),
|
|
451
|
-
...getJsonSchemaAnnotations(ast)
|
|
452
|
-
};
|
|
453
|
-
}
|
|
454
|
-
case "Transformation":
|
|
455
|
-
{
|
|
456
|
-
// Properly handle S.parseJson transformations by focusing on
|
|
457
|
-
// the 'to' side of the AST. This approach prevents the generation of useless schemas
|
|
458
|
-
// derived from the 'from' side (type: string), ensuring the output matches the intended
|
|
459
|
-
// complex schema type.
|
|
460
|
-
if (isParseJsonTransformation(ast.from)) {
|
|
461
|
-
return {
|
|
462
|
-
type: "string",
|
|
463
|
-
contentMediaType: "application/json",
|
|
464
|
-
contentSchema: go(ast.to, $defs, true, path, options),
|
|
465
|
-
...getJsonSchemaAnnotations(ast)
|
|
466
|
-
};
|
|
467
|
-
}
|
|
468
|
-
return {
|
|
469
|
-
...getASTJsonSchemaAnnotations(ast.to),
|
|
470
|
-
...go(ast.from, $defs, true, path, options),
|
|
471
|
-
...getJsonSchemaAnnotations(ast)
|
|
472
|
-
};
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
};
|
|
476
|
-
const getJSONSchemaMissingAnnotationErrorMessage = (path, ast) => getMissingAnnotationErrorMessage(`Generating a JSON Schema for this schema requires a "jsonSchema" annotation`, path, ast);
|
|
477
|
-
const getJSONSchemaMissingIdentifierAnnotationErrorMessage = (path, ast) => getMissingAnnotationErrorMessage(`Generating a JSON Schema for this schema requires an "identifier" annotation`, path, ast);
|
|
478
|
-
const getJSONSchemaUnsupportedParameterErrorMessage = (path, parameter) => getErrorMessage("Unsupported index signature parameter", undefined, path, parameter);
|
|
479
|
-
const getJSONSchemaUnsupportedPostRestElementsErrorMessage = path => getErrorMessage("Generating a JSON Schema for post-rest elements is not currently supported. You're welcome to contribute by submitting a Pull Request", undefined, path);
|
|
480
|
-
const getJSONSchemaUnsupportedKeyErrorMessage = (key, path) => getErrorMessage("Unsupported key", `Cannot encode ${formatPropertyKey(key)} key to JSON Schema`, path);
|
|
481
|
-
const getMissingAnnotationErrorMessage = (details, path, ast) => getErrorMessage("Missing annotation", details, path, ast);
|
|
482
|
-
const getErrorMessage = (reason, details, path, ast) => {
|
|
483
|
-
let out = reason;
|
|
484
|
-
if (path && Arr.isNonEmptyReadonlyArray(path)) {
|
|
485
|
-
out += `\nat path: ${formatPath(path)}`;
|
|
486
|
-
}
|
|
487
|
-
if (details !== undefined) {
|
|
488
|
-
out += `\ndetails: ${details}`;
|
|
489
|
-
}
|
|
490
|
-
if (ast) {
|
|
491
|
-
out += `\nschema (${ast._tag}): ${ast}`;
|
|
492
|
-
}
|
|
493
|
-
return out;
|
|
494
39
|
};
|
|
495
|
-
const formatPathKey = key => `[${formatPropertyKey(key)}]`;
|
|
496
|
-
const formatPath = path => isNonEmpty(path) ? path.map(formatPathKey).join("") : formatPathKey(path);
|
|
497
|
-
const isNonEmpty = x => Array.isArray(x);
|
|
498
|
-
const formatPropertyKey = name => typeof name === "string" ? JSON.stringify(name) : String(name);
|
|
499
40
|
//# sourceMappingURL=OpenApiJsonSchema.js.map
|