@visulima/api-platform 3.0.12 → 3.0.14
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/CHANGELOG.md +29 -0
- package/dist/chunk-4C666HHU.js +1 -1
- package/dist/chunk-4C666HHU.js.map +1 -1
- package/dist/chunk-66EUOAFS.mjs +1 -1
- package/dist/chunk-66EUOAFS.mjs.map +1 -1
- package/dist/chunk-GI7VS3DY.mjs +1 -1
- package/dist/chunk-GI7VS3DY.mjs.map +1 -1
- package/dist/chunk-HZWWJL43.mjs +1 -1
- package/dist/chunk-HZWWJL43.mjs.map +1 -1
- package/dist/chunk-MYU5ZKUN.js +1 -1
- package/dist/chunk-MYU5ZKUN.js.map +1 -1
- package/dist/{chunk-IRBDVWUD.mjs → chunk-T4ABIWHW.mjs} +3 -3
- package/dist/chunk-T4ABIWHW.mjs.map +1 -0
- package/dist/chunk-UPRO35MO.js +1 -1
- package/dist/chunk-UPRO35MO.js.map +1 -1
- package/dist/{chunk-GM57ZYYC.js → chunk-UUYCUP6Z.js} +2 -2
- package/dist/chunk-UUYCUP6Z.js.map +1 -0
- package/dist/{chunk-MMLISJII.mjs → chunk-WSYAFKEJ.mjs} +2 -2
- package/dist/chunk-WSYAFKEJ.mjs.map +1 -0
- package/dist/{chunk-IAHCIZME.js → chunk-YG667K32.js} +3 -3
- package/dist/chunk-YG667K32.js.map +1 -0
- package/dist/framework/cli/commander/index.js +3 -3
- package/dist/framework/cli/commander/index.js.map +1 -1
- package/dist/framework/cli/commander/index.mjs +2 -2
- package/dist/framework/cli/commander/index.mjs.map +1 -1
- package/dist/framework/cli/index.js +3 -3
- package/dist/framework/cli/index.js.map +1 -1
- package/dist/framework/cli/index.mjs +2 -2
- package/dist/framework/cli/index.mjs.map +1 -1
- package/dist/framework/next/index-browser.js +1 -1
- package/dist/framework/next/index-browser.js.map +1 -1
- package/dist/framework/next/index-browser.mjs +1 -1
- package/dist/framework/next/index-browser.mjs.map +1 -1
- package/dist/framework/next/index-server.js +3 -3
- package/dist/framework/next/index-server.js.map +1 -1
- package/dist/framework/next/index-server.mjs +2 -2
- package/dist/framework/next/index-server.mjs.map +1 -1
- package/dist/framework/next/routes/pages/redoc/index.js +1 -1
- package/dist/framework/next/routes/pages/redoc/index.js.map +1 -1
- package/dist/framework/next/routes/pages/redoc/index.mjs +1 -1
- package/dist/framework/next/routes/pages/redoc/index.mjs.map +1 -1
- package/dist/framework/next/routes/pages/swagger/index.js +1 -1
- package/dist/framework/next/routes/pages/swagger/index.js.map +1 -1
- package/dist/framework/next/routes/pages/swagger/index.mjs +1 -1
- package/dist/framework/next/routes/pages/swagger/index.mjs.map +1 -1
- package/dist/index-browser.js +1 -1
- package/dist/index-browser.js.map +1 -1
- package/dist/index-browser.mjs +1 -1
- package/dist/index-browser.mjs.map +1 -1
- package/dist/index-server.js +5 -5
- package/dist/index-server.js.map +1 -1
- package/dist/index-server.mjs +3 -3
- package/dist/index-server.mjs.map +1 -1
- package/package.json +19 -19
- package/dist/chunk-GM57ZYYC.js.map +0 -1
- package/dist/chunk-IAHCIZME.js.map +0 -1
- package/dist/chunk-IRBDVWUD.mjs.map +0 -1
- package/dist/chunk-MMLISJII.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
## @visulima/api-platform [3.0.14](https://github.com/visulima/visulima/compare/@visulima/api-platform@3.0.13...@visulima/api-platform@3.0.14) (2024-08-01)
|
|
2
|
+
|
|
3
|
+
### Miscellaneous Chores
|
|
4
|
+
|
|
5
|
+
* updated dev dependencies ([ac67ec1](https://github.com/visulima/visulima/commit/ac67ec1bcba16175d225958e318199f60b10d179))
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Dependencies
|
|
9
|
+
|
|
10
|
+
* **@visulima/jsdoc-open-api:** upgraded to 2.0.53
|
|
11
|
+
* **@visulima/path:** upgraded to 1.0.3
|
|
12
|
+
* **@visulima/crud:** upgraded to 2.0.26
|
|
13
|
+
* **@visulima/fs:** upgraded to 2.1.11
|
|
14
|
+
|
|
15
|
+
## @visulima/api-platform [3.0.13](https://github.com/visulima/visulima/compare/@visulima/api-platform@3.0.12...@visulima/api-platform@3.0.13) (2024-07-16)
|
|
16
|
+
|
|
17
|
+
### Styles
|
|
18
|
+
|
|
19
|
+
* cs fixes ([ee5ed6f](https://github.com/visulima/visulima/commit/ee5ed6f31bdabcfacdb0d1abd1eff2cc6207cefc))
|
|
20
|
+
|
|
21
|
+
### Miscellaneous Chores
|
|
22
|
+
|
|
23
|
+
* updated dev dependencies and sorted the package.json ([9571572](https://github.com/visulima/visulima/commit/95715725a8ed053ca24fd1405a55205c79342ecb))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### Dependencies
|
|
27
|
+
|
|
28
|
+
* **@visulima/crud:** upgraded to 2.0.25
|
|
29
|
+
|
|
1
30
|
## @visulima/api-platform [3.0.12](https://github.com/visulima/visulima/compare/@visulima/api-platform@3.0.11...@visulima/api-platform@3.0.12) (2024-07-02)
|
|
2
31
|
|
|
3
32
|
### Miscellaneous Chores
|
package/dist/chunk-4C666HHU.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-4C666HHU.js"}
|
package/dist/chunk-66EUOAFS.mjs
CHANGED
|
@@ -5,5 +5,5 @@ import { ZodType, ZodParsedType, addIssueToContext, ZodIssueCode, INVALID } from
|
|
|
5
5
|
var x={};a(x,{dateIn:()=>K,dateOut:()=>O});var g="ZodDateIn",N=/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d{3})?)?Z?$/,d=class a extends ZodType{static create=()=>new a({typeName:g});_parse(t){let{ctx:e,status:r}=this._processInputParams(t);if(e.parsedType!==ZodParsedType.string)return addIssueToContext(e,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.string,received:e.parsedType}),INVALID;N.test(e.data)||(addIssueToContext(e,{code:ZodIssueCode.invalid_string,validation:"regex"}),r.dirty());let u=new Date(e.data);return Number.isNaN(u.getTime())?(addIssueToContext(e,{code:ZodIssueCode.invalid_date}),INVALID):{status:r.value,value:u}}};var v="ZodDateOut",o=class a extends ZodType{static create=()=>new a({typeName:v});_parse(t){let{ctx:e,status:r}=this._processInputParams(t);return e.parsedType!==ZodParsedType.date?(addIssueToContext(e,{code:ZodIssueCode.invalid_type,expected:ZodParsedType.date,received:e.parsedType}),INVALID):Number.isNaN(e.data.getTime())?(addIssueToContext(e,{code:ZodIssueCode.invalid_date}),INVALID):{status:r.value,value:e.data.toISOString()}}};var K=(...a)=>withGetType(d.create(...a),t=>t.factory.createKeywordTypeNode(t.SyntaxKind.StringKeyword)),O=(...a)=>withGetType(o.create(...a),t=>t.factory.createKeywordTypeNode(t.SyntaxKind.StringKeyword));
|
|
6
6
|
|
|
7
7
|
export { K as a, O as b, x as c };
|
|
8
|
-
//# sourceMappingURL=
|
|
8
|
+
//# sourceMappingURL=chunk-66EUOAFS.mjs.map
|
|
9
9
|
//# sourceMappingURL=chunk-66EUOAFS.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/zod/index.ts","../src/zod/date-in-schema.ts","../src/zod/date-out-schema.ts"],"names":["zod_exports","__export","dateIn","dateOut","
|
|
1
|
+
{"version":3,"sources":["../src/zod/index.ts","../src/zod/date-in-schema.ts","../src/zod/date-out-schema.ts"],"names":["zod_exports","__export","dateIn","dateOut","zodDateInKind","isoDateRegex","ZodDateIn","_ZodDateIn","ZodType","input","ctx","status","ZodParsedType","addIssueToContext","ZodIssueCode","INVALID","date","zodDateOutKind","ZodDateOut","_ZodDateOut","parameters","withGetType","ts"],"mappings":"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","file":"chunk-66EUOAFS.mjs","sourcesContent":["import { withGetType } from \"zod-to-ts\";\n\nimport { ZodDateIn } from \"./date-in-schema\";\nimport { ZodDateOut } from \"./date-out-schema\";\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const dateIn = (...parameters: Parameters<typeof ZodDateIn.create>) =>\n withGetType(ZodDateIn.create(...parameters), (ts) => ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword));\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const dateOut = (...parameters: Parameters<typeof ZodDateOut.create>) =>\n withGetType(ZodDateOut.create(...parameters), (ts) => ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword));\n","import type { ParseInput, ParseReturnType, ZodTypeDef } from \"zod\";\nimport { addIssueToContext, INVALID, ZodIssueCode, ZodParsedType, ZodType } from \"zod\";\n\nconst zodDateInKind = \"ZodDateIn\";\n\n// simple regex for ISO date, supports the following formats:\n// 2021-01-01T00:00:00.000Z\n// 2021-01-01T00:00:00Z\n// 2021-01-01T00:00:00\n// 2021-01-01\n// eslint-disable-next-line security/detect-unsafe-regex\nexport const isoDateRegex = /^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?)?Z?$/;\n\n// eslint-disable-next-line unicorn/prevent-abbreviations\nexport interface ZodDateInDef extends ZodTypeDef {\n typeName: typeof zodDateInKind;\n}\n\nexport class ZodDateIn extends ZodType<Date, ZodDateInDef, string> {\n public static create = (): ZodDateIn =>\n new ZodDateIn({\n typeName: zodDateInKind,\n });\n\n // eslint-disable-next-line no-underscore-dangle\n public _parse(input: ParseInput): ParseReturnType<Date> {\n // eslint-disable-next-line no-underscore-dangle\n const { ctx, status } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.string) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n\n if (!isoDateRegex.test(ctx.data as string)) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"regex\",\n });\n status.dirty();\n }\n\n const date = new Date(ctx.data as string);\n\n if (Number.isNaN(date.getTime())) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n\n return { status: status.value, value: date };\n }\n}\n","import type { ParseInput, ParseReturnType, ZodTypeDef } from \"zod\";\nimport { addIssueToContext, INVALID, ZodIssueCode, ZodParsedType, ZodType } from \"zod\";\n\nconst zodDateOutKind = \"ZodDateOut\";\n\n// eslint-disable-next-line unicorn/prevent-abbreviations\nexport interface ZodDateOutDef extends ZodTypeDef {\n typeName: typeof zodDateOutKind;\n}\n\nexport class ZodDateOut extends ZodType<string, ZodDateOutDef, Date> {\n public static create = (): ZodDateOut =>\n new ZodDateOut({\n typeName: zodDateOutKind,\n });\n\n // eslint-disable-next-line no-underscore-dangle\n public _parse(input: ParseInput): ParseReturnType<string> {\n // eslint-disable-next-line no-underscore-dangle\n const { ctx, status } = this._processInputParams(input);\n\n if (ctx.parsedType !== ZodParsedType.date) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n\n if (Number.isNaN(ctx.data.getTime())) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n\n return { status: status.value, value: (ctx.data as Date).toISOString() };\n }\n}\n"]}
|
package/dist/chunk-GI7VS3DY.mjs
CHANGED
|
@@ -3,5 +3,5 @@ import a from 'debug';
|
|
|
3
3
|
var p=a("visulima:api-platform:swagger:get-static-properties-swagger"),o=t=>async()=>{let e=await(await fetch(t)).json();return p(e),{props:{swaggerData:JSON.parse(JSON.stringify(e)),swaggerUrl:t}}},g=o;
|
|
4
4
|
|
|
5
5
|
export { g as a };
|
|
6
|
-
//# sourceMappingURL=
|
|
6
|
+
//# sourceMappingURL=chunk-GI7VS3DY.mjs.map
|
|
7
7
|
//# sourceMappingURL=chunk-GI7VS3DY.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/framework/next/routes/pages/get-static-properties-swagger.ts"],"names":["
|
|
1
|
+
{"version":3,"sources":["../src/framework/next/routes/pages/get-static-properties-swagger.ts"],"names":["swaggerDebug","debug","getStaticProps","swaggerUrl","swaggerData","get_static_properties_swagger_default"],"mappings":";;AAIA,IAAMA,EAAeC,CAAM,CAAA,6DAA6D,EAElFC,CACDC,CAAAA,CAAAA,EACD,SAKM,CAGF,IAAMC,CAAc,CAAA,KAAA,CADH,MAAM,KAAMD,CAAAA,CAAU,GACJ,IAAK,EAAA,CAExC,OAAAH,CAAAA,CAAaI,CAAW,CAEjB,CAAA,CACH,MAAO,CACH,WAAA,CAAa,KAAK,KAAM,CAAA,IAAA,CAAK,SAAUA,CAAAA,CAAW,CAAC,CACnD,CAAA,UAAA,CAAAD,CACJ,CACJ,CACJ,EAEGE,CAAQH,CAAAA","file":"chunk-GI7VS3DY.mjs","sourcesContent":["import debug from \"debug\";\nimport type { GetStaticProps } from \"next/types\";\nimport type { OpenAPIV3 } from \"openapi-types\";\n\nconst swaggerDebug = debug(\"visulima:api-platform:swagger:get-static-properties-swagger\");\n\nconst getStaticProps: (swaggerUrl: string) => GetStaticProps =\n (swaggerUrl) =>\n async (): Promise<{\n props: {\n swaggerData: OpenAPIV3.Document;\n swaggerUrl: string;\n };\n }> => {\n // eslint-disable-next-line compat/compat\n const response = await fetch(swaggerUrl);\n const swaggerData = await response.json();\n\n swaggerDebug(swaggerData);\n\n return {\n props: {\n swaggerData: JSON.parse(JSON.stringify(swaggerData)) as OpenAPIV3.Document,\n swaggerUrl,\n },\n };\n };\n\nexport default getStaticProps;\n"]}
|
package/dist/chunk-HZWWJL43.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-HZWWJL43.mjs"}
|
package/dist/chunk-MYU5ZKUN.js
CHANGED
|
@@ -9,5 +9,5 @@ var s__default = /*#__PURE__*/_interopDefault(s);
|
|
|
9
9
|
var a=s__default.default("visulima:api-platform:swagger:get-static-properties-swagger"),p=t=>async()=>{let e=await(await fetch(t)).json();return a(e),{props:{swaggerData:JSON.parse(JSON.stringify(e)),swaggerUrl:t}}},o=p;
|
|
10
10
|
|
|
11
11
|
exports.a = o;
|
|
12
|
-
//# sourceMappingURL=
|
|
12
|
+
//# sourceMappingURL=chunk-MYU5ZKUN.js.map
|
|
13
13
|
//# sourceMappingURL=chunk-MYU5ZKUN.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/framework/next/routes/pages/get-static-properties-swagger.ts"],"names":["
|
|
1
|
+
{"version":3,"sources":["../src/framework/next/routes/pages/get-static-properties-swagger.ts"],"names":["swaggerDebug","debug","getStaticProps","swaggerUrl","swaggerData","get_static_properties_swagger_default"],"mappings":";;;;;;;;AAIA,IAAMA,EAAeC,kBAAM,CAAA,6DAA6D,EAElFC,CACDC,CAAAA,CAAAA,EACD,SAKM,CAGF,IAAMC,CAAc,CAAA,KAAA,CADH,MAAM,KAAMD,CAAAA,CAAU,GACJ,IAAK,EAAA,CAExC,OAAAH,CAAAA,CAAaI,CAAW,CAEjB,CAAA,CACH,MAAO,CACH,WAAA,CAAa,KAAK,KAAM,CAAA,IAAA,CAAK,SAAUA,CAAAA,CAAW,CAAC,CACnD,CAAA,UAAA,CAAAD,CACJ,CACJ,CACJ,EAEGE,CAAQH,CAAAA","file":"chunk-MYU5ZKUN.js","sourcesContent":["import debug from \"debug\";\nimport type { GetStaticProps } from \"next/types\";\nimport type { OpenAPIV3 } from \"openapi-types\";\n\nconst swaggerDebug = debug(\"visulima:api-platform:swagger:get-static-properties-swagger\");\n\nconst getStaticProps: (swaggerUrl: string) => GetStaticProps =\n (swaggerUrl) =>\n async (): Promise<{\n props: {\n swaggerData: OpenAPIV3.Document;\n swaggerUrl: string;\n };\n }> => {\n // eslint-disable-next-line compat/compat\n const response = await fetch(swaggerUrl);\n const swaggerData = await response.json();\n\n swaggerDebug(swaggerData);\n\n return {\n props: {\n swaggerData: JSON.parse(JSON.stringify(swaggerData)) as OpenAPIV3.Document,\n swaggerUrl,\n },\n };\n };\n\nexport default getStaticProps;\n"]}
|
|
@@ -6,8 +6,8 @@ import J from 'debug';
|
|
|
6
6
|
import u from 'lodash.merge';
|
|
7
7
|
import { toXML } from 'jstoxml';
|
|
8
8
|
|
|
9
|
-
var y=e=>stringify(e,{indent:2}),I=y;var j=e=>e.toLowerCase().replaceAll(/[^\s\w]/gu," ").trimEnd().replaceAll(/\s+|_/gu,"-").replaceAll(/\b\w/gu,n=>n.toUpperCase());var P="application/json",A=(e,n,s)=>{e.responses[n].content===void 0&&(e.responses[n].content={}),e.responses[n].content?.[s]===void 0&&(e.responses[n].content[s]={});},h=(e,n,s)=>{typeof e.components!="object"&&(e.components={}),typeof e.components.schemas!="object"&&(e.components.schemas={}),e.components.schemas[n]===void 0&&(e.components.schemas[n]=s);},E=(e,n,s,o,f)=>{A(e,n,s),e.responses[n].content?.[s]?.schema===void 0&&(e.responses[n].content[s].schema={}),e.responses[n].content[s].schema=f?{items:{$ref:`#/components/schemas/${o}`},type:"array"}:{$ref:`#/components/schemas/${o}`};},M=(e,n,s,o,f,p)=>{let a,t;return Object.entries(n.content).forEach(([c,r])=>{if(typeof r.schema=="object"){let{schema:i}=r;c===P&&r.examples!==void 0?t=r.examples:c===P&&r.example!==void 0&&(a=r.example);let l=i.type==="array";Object.entries(s??{}).forEach(([O,V])=>{if(!V)return;let g;i?.$ref===void 0?(g=`${j(o.trim().replace("/",""))}${O==="application/ld+json"?".jsonld":""}`,h(f,g,i)):g=i.$ref.replace("#/components/schemas/",""),E(e,p,O,g,l);});}}),{example:a,examples:t}},T=(e,n,s,o,f,p)=>{Object.keys(n.content).forEach(a=>{a!==P&&Object.entries(o??{}).forEach(([t,c])=>{if(!c)return;A(e,s,t),e.responses[s].content?.[t]?.example===void 0&&(e.responses[s].content[t].example={});let r=!1;f.forEach(({regex:i,transformer:l})=>{!r&&i.test(t)&&(e.responses[s].content[t].example=l(p),r=!0);}),r||(e.responses[s].content[t].example=p);});});},C=(e,n,s)=>{typeof e.components!="object"&&(e.components={}),typeof e.components.examples!="object"&&(e.components.examples={}),e.components.examples[n]===void 0&&s[n]!==void 0&&(e.components.examples[n]=s[n]);},k=(e,n,s,o,f,p)=>{A(n,s,o),n.responses[s].content?.[o]?.examples===void 0&&(n.responses[s].content[o].examples={});let a={};Object.entries(p).forEach(([t,c])=>{let r=!1;f.forEach(({regex:i,transformer:l})=>{if(!r&&i.test(o)){let O="";e.components?.examples?.[t]?O=e.components.examples[t].value:c.$ref?O=(e.components?.examples?.[c.$ref.replace("#/components/examples/","")]).value:typeof c.value=="string"&&(O=c.value),a[t]={value:l(O)},r=!0;}}),r||(a[t]=e.components?.examples?.[t]===void 0?c:{$ref:`#/components/examples/${t}`});}),n.responses[s].content[o].examples=a;}
|
|
9
|
+
var y=e=>stringify(e,{indent:2}),I=y;var j=e=>e.toLowerCase().replaceAll(/[^\s\w]/gu," ").trimEnd().replaceAll(/\s+|_/gu,"-").replaceAll(/\b\w/gu,n=>n.toUpperCase());var P="application/json",A=(e,n,s)=>{e.responses[n].content===void 0&&(e.responses[n].content={}),e.responses[n].content?.[s]===void 0&&(e.responses[n].content[s]={});},h=(e,n,s)=>{typeof e.components!="object"&&(e.components={}),typeof e.components.schemas!="object"&&(e.components.schemas={}),e.components.schemas[n]===void 0&&(e.components.schemas[n]=s);},E=(e,n,s,o,f)=>{A(e,n,s),e.responses[n].content?.[s]?.schema===void 0&&(e.responses[n].content[s].schema={}),e.responses[n].content[s].schema=f?{items:{$ref:`#/components/schemas/${o}`},type:"array"}:{$ref:`#/components/schemas/${o}`};},M=(e,n,s,o,f,p)=>{let a,t;return Object.entries(n.content).forEach(([c,r])=>{if(typeof r.schema=="object"){let{schema:i}=r;c===P&&r.examples!==void 0?t=r.examples:c===P&&r.example!==void 0&&(a=r.example);let l=i.type==="array";Object.entries(s??{}).forEach(([O,V])=>{if(!V)return;let g;i?.$ref===void 0?(g=`${j(o.trim().replace("/",""))}${O==="application/ld+json"?".jsonld":""}`,h(f,g,i)):g=i.$ref.replace("#/components/schemas/",""),E(e,p,O,g,l);});}}),{example:a,examples:t}},T=(e,n,s,o,f,p)=>{Object.keys(n.content).forEach(a=>{a!==P&&Object.entries(o??{}).forEach(([t,c])=>{if(!c)return;A(e,s,t),e.responses[s].content?.[t]?.example===void 0&&(e.responses[s].content[t].example={});let r=!1;f.forEach(({regex:i,transformer:l})=>{!r&&i.test(t)&&(e.responses[s].content[t].example=l(p),r=!0);}),r||(e.responses[s].content[t].example=p);});});},C=(e,n,s)=>{typeof e.components!="object"&&(e.components={}),typeof e.components.examples!="object"&&(e.components.examples={}),e.components.examples[n]===void 0&&s[n]!==void 0&&(e.components.examples[n]=s[n]);},k=(e,n,s,o,f,p)=>{A(n,s,o),n.responses[s].content?.[o]?.examples===void 0&&(n.responses[s].content[o].examples={});let a={};Object.entries(p).forEach(([t,c])=>{let r=!1;f.forEach(({regex:i,transformer:l})=>{if(!r&&i.test(o)){let O="";e.components?.examples?.[t]?O=e.components.examples[t].value:c.$ref?O=(e.components?.examples?.[c.$ref.replace("#/components/examples/","")]).value:typeof c.value=="string"&&(O=c.value),a[t]={value:l(O)},r=!0;}}),r||(a[t]=e.components?.examples?.[t]===void 0?c:{$ref:`#/components/examples/${t}`});}),n.responses[s].content[o].examples=a;},v=(e,n,s,o,f,p,a,t)=>{let c=j(p.trim().replace("/",""));Object.keys(o.content).forEach(r=>{r!==P&&Object.entries(f??{}).forEach(([i,l])=>{l&&(C(e,c,t),k(e,n,s,i,a,t));});});};function m(e,n,s=[{regex:/xml/u,transformer:o=>toXML(o,{header:!0,indent:" "})},{regex:/yaml|yml/,transformer:o=>stringify(o,{indent:2})}]){return typeof e=="object"&&typeof e.paths=="object"&&Object.entries(e.paths).forEach(([o,f])=>{Object.values(f).forEach(p=>{typeof p.responses=="object"&&Object.entries(p.responses).forEach(([a,t])=>{if(typeof t.content=="object"){let{example:c,examples:r}=M(p,t,n,o,e,a);c!==void 0?T(p,t,a,n,s,c):r!==void 0&&v(e,p,a,t,n,o,s,r);}});});}),e}var X=J("visulima:api-platform:swagger:crud:get-static-properties-swagger"),q=(e={})=>{let{allowedMediaTypes:n={"application/json":!0},crud:s,specs:o,swaggerFilePath:f}=e;return async(p,a)=>{let t=join(process.cwd(),f??"swagger/swagger.json");if(!existsSync(t))throw new Error(`Swagger file not found at "${t}".`);let c=readFileSync(t,"utf8"),r=m(JSON.parse(c),n),i={};if(s!==void 0)try{let O=await modelsToOpenApi(s);i={components:{examples:O.examples,schemas:O.schemas},paths:O.paths,tags:O.tags},i=m(i,n),X(JSON.stringify(i,null,2)),r=u(r,i);}catch(O){throw console.log(O),new Error("Please install @visulima/crud to use the crud swagger generator.")}Array.isArray(o)&&o.forEach(O=>{r=u(r,m(O,n));});let l;typeof p.headers.accept=="string"&&/yaml|yml/.test(p.headers.accept)?(a.setHeader("Content-Type",p.headers.accept),l=I(r)):(a.setHeader("Content-Type","application/json"),l=JSON.stringify(r,null,2)),a.statusCode=200,a.end(l);}},re=q;
|
|
10
10
|
|
|
11
11
|
export { j as a, I as b, re as c };
|
|
12
|
-
//# sourceMappingURL=
|
|
13
|
-
//# sourceMappingURL=chunk-
|
|
12
|
+
//# sourceMappingURL=chunk-T4ABIWHW.mjs.map
|
|
13
|
+
//# sourceMappingURL=chunk-T4ABIWHW.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/serializers/transformer/yaml.ts","../src/utils.ts","../src/swagger/extend-swagger-spec.ts","../src/swagger/api/swagger-handler.ts"],"names":["yamlTransformer","data","stringify","yaml_default","toHeaderCase","string_","c","jsonMediaType","prepareStatusContent","methodSpec","status","mediaType","extendComponentSchemas","spec","schemaName","schema","extendResponseSchema","schemaIsArray","extendSwaggerWithMediaTypeSchema","responseSpec","allowedMediaTypes","pathKey","example","examples","mediaName","contentSpec","allowed","extendSwaggerWithMediaTypeExample","transformers","transformed","regex","transformer","extendComponentExamples","exampleName","prepareResponseExamples","transformedExamples","extendSwaggerWithMediaTypeExamples","examplesName","extendSwaggerSpec","value","toXML","pathSpec","swaggerCrudDebug","debug","swaggerHandler","options","crud","specs","swaggerFilePath","request","response","swaggerPath","join","existsSync","fileContents","readFileSync","crudSwagger","modelsOpenApi","modelsToOpenApi","merge","error","swagger_handler_default"],"mappings":";;;;;;;;AAIMA,IAAAA,CAAAA,CAA+BC,CAASC,EAAAA,SAAAA,CAAUD,CAAM,CAAA,CAAE,MAAQ,CAAA,CAAE,CAAC,CAAA,CAEpEE,CAAQH,CAAAA,ECwCFI,IAAAA,CAAAA,CAAgBC,CACzBA,EAAAA,CAAAA,CACK,WAAY,EAAA,CACZ,UAAW,CAAA,WAAA,CAAa,GAAG,CAAA,CAC3B,OAAQ,EAAA,CACR,UAAW,CAAA,SAAA,CAAW,GAAG,CAAA,CACzB,UAAW,CAAA,QAAA,CAAWC,CAAMA,EAAAA,CAAAA,CAAE,WAAY,EAAC,EC3CpD,IAAMC,CAAgB,CAAA,kBAAA,CAEhBC,CAAuB,CAAA,CAACC,CAAuCC,CAAAA,CAAAA,CAAgBC,CAAsB,GAAA,CACjGF,CAAW,CAAA,SAAA,CAAmDC,CAAM,CAAA,CAA+B,OAAY,GAAA,KAAA,CAAA,GAE/GD,CAAW,CAAA,SAAA,CAAmDC,CAAM,CAAA,CAA+B,OAAU,CAAA,EAG7GD,CAAAA,CAAAA,CAAAA,CAAW,SAAmDC,CAAAA,CAAM,CAA+B,CAAA,OAAA,GAAUC,CAAS,CAAA,GAAM,KAG3HF,CAAAA,GAAAA,CAAAA,CAAW,SAAmDC,CAAAA,CAAM,CAA+B,CAAA,OAAA,CAIlGC,CACJ,CAAA,CAAI,EAAC,EAEb,CAEMC,CAAAA,CAAAA,CAAyB,CAACC,CAAAA,CAAmCC,CAAoBC,CAAAA,CAAAA,GAAmC,CAClH,OAAOF,CAAK,CAAA,UAAA,EAAe,QAE3BA,GAAAA,CAAAA,CAAK,UAAa,CAAA,EAGlB,CAAA,CAAA,OAAOA,CAAK,CAAA,UAAA,CAAW,OAAY,EAAA,QAAA,GAEnCA,CAAK,CAAA,UAAA,CAAW,OAAU,CAAA,EAG1BA,CAAAA,CAAAA,CAAAA,CAAK,UAAW,CAAA,OAAA,CAAQC,CAAU,CAAA,GAAM,KAExCD,CAAAA,GAAAA,CAAAA,CAAK,UAAW,CAAA,OAAA,CAAQC,CAAU,CAAA,CAAIC,CAE9C,EAAA,CAAA,CAEMC,CAAuB,CAAA,CAACP,CAAuCC,CAAAA,CAAAA,CAAgBC,CAAmBG,CAAAA,CAAAA,CAAoBG,CAA2B,GAAA,CACnJT,CAAqBC,CAAAA,CAAAA,CAAYC,CAAQC,CAAAA,CAAS,CAE5CF,CAAAA,CAAAA,CAAW,SAAmDC,CAAAA,CAAM,CAA+B,CAAA,OAAA,GAAUC,CAAS,CAAA,EAAG,MAAW,GAAA,KAAA,CAAA,GAGlIF,CAAW,CAAA,SAAA,CAAmDC,CAAM,CAAA,CAA+B,OAI/FC,CAAAA,CACJ,CAAgC,CAAA,MAAA,CAChC,EAAC,CAAA,CAKLF,CAAW,CAAA,SAAA,CAAmDC,CAAM,CAAA,CAA+B,OAI/FC,CAAAA,CACJ,CAAgC,CAAA,MAAA,CAChCM,CACM,CAAA,CACI,KAAO,CAAA,CACH,IAAM,CAAA,CAAA,qBAAA,EAAwBH,CAAU,CAAA,CAC5C,CACA,CAAA,IAAA,CAAM,OACV,CAAA,CACA,CACI,IAAA,CAAM,CAAwBA,qBAAAA,EAAAA,CAAU,CAC5C,CAAA,EACd,CAEMI,CAAAA,CAAAA,CAAmC,CACrCT,CAAAA,CACAU,CACAC,CAAAA,CAAAA,CACAC,CACAR,CAAAA,CAAAA,CACAH,CAIC,GAAA,CACD,IAAIY,CAAAA,CACAC,CAGJ,CAAA,OAAA,MAAA,CAAO,OAAQJ,CAAAA,CAAAA,CAAa,OAAiB,CAAA,CAAE,OAAQ,CAAA,CAAC,CAACK,CAAAA,CAAWC,CAAW,CAAA,GAAM,CACjF,GAAI,OAAOA,CAAAA,CAAY,MAAW,EAAA,QAAA,CAAU,CACxC,GAAM,CAAE,MAAA,CAAAV,CAAO,CAAA,CAAIU,CAEfD,CAAAA,CAAAA,GAAcjB,CAAiBkB,EAAAA,CAAAA,CAAY,QAAa,GAAA,KAAA,CAAA,CACxDF,CAAWE,CAAAA,CAAAA,CAAY,QAChBD,CAAAA,CAAAA,GAAcjB,CAAiBkB,EAAAA,CAAAA,CAAY,OAAY,GAAA,KAAA,CAAA,GAC9DH,CAAUG,CAAAA,CAAAA,CAAY,SAG1B,IAAMR,CAAAA,CAAiBF,CAAkC,CAAA,IAAA,GAAS,OAElE,CAAA,MAAA,CAAO,OAAQK,CAAAA,CAAAA,EAAqB,EAAE,CAAE,CAAA,OAAA,CAAQ,CAAC,CAACT,CAAWe,CAAAA,CAAO,CAAM,GAAA,CACtE,GAAI,CAACA,CACD,CAAA,OAGJ,IAAIZ,CAAAA,CAEAC,CAAQ,EAAA,IAAA,GAAS,KACjBD,CAAAA,EAAAA,CAAAA,CAAa,CAAGV,EAAAA,CAAAA,CAAaiB,CAAQ,CAAA,IAAA,EAAO,CAAA,OAAA,CAAQ,GAAK,CAAA,EAAE,CAAC,CAAC,CAAGV,EAAAA,CAAAA,GAAc,qBAAwB,CAAA,SAAA,CAAY,EAAE,CAAA,CAAA,CAEpHC,CAAuBC,CAAAA,CAAAA,CAA4BC,CAAYC,CAAAA,CAAgC,CAE/FD,EAAAA,CAAAA,CAAcC,CAAqC,CAAA,IAAA,CAAK,OAAQ,CAAA,uBAAA,CAAyB,EAAE,CAAA,CAG/FC,CAAqBP,CAAAA,CAAAA,CAAYC,CAAQC,CAAAA,CAAAA,CAAWG,CAAYG,CAAAA,CAAa,EACjF,CAAC,EACL,CACJ,CAAC,CAAA,CAEM,CAAE,OAAA,CAAAK,CAAS,CAAA,QAAA,CAAAC,CAAS,CAC/B,CAEMI,CAAAA,CAAAA,CAAoC,CACtClB,CAAAA,CACAU,CACAT,CAAAA,CAAAA,CACAU,CACAQ,CAAAA,CAAAA,CACAN,CACC,GAAA,CACD,MAAO,CAAA,IAAA,CAAKH,CAAa,CAAA,OAAiB,CAAE,CAAA,OAAA,CAASK,CAAc,EAAA,CAC3DA,CAAcjB,GAAAA,CAAAA,EAIlB,MAAO,CAAA,OAAA,CAAQa,CAAqB,EAAA,EAAE,CAAA,CAAE,OAAQ,CAAA,CAAC,CAACT,CAAAA,CAAWe,CAAO,CAAA,GAAM,CACtE,GAAI,CAACA,CAAAA,CACD,OAGJlB,CAAAA,CAAqBC,CAAYC,CAAAA,CAAAA,CAAQC,CAAS,CAAA,CAG5CF,CAAW,CAAA,SAAA,CAAmDC,CAAM,CAAA,CAA+B,OAAUC,GAAAA,CAAS,CAAG,EAAA,OAAA,GAAY,KAInIF,CAAAA,GAAAA,CAAAA,CAAW,SAAmDC,CAAAA,CAAM,CAA+B,CAAA,OAAA,CAI/FC,CACJ,CAAA,CAAgC,OAChC,CAAA,EAGR,CAAA,CAAA,IAAIkB,CAAc,CAAA,CAAA,CAAA,CAElBD,CAAa,CAAA,OAAA,CAAQ,CAAC,CAAE,KAAAE,CAAAA,CAAAA,CAAO,WAAAC,CAAAA,CAAY,CAAM,GAAA,CACzC,CAACF,CAAAA,EAAeC,CAAM,CAAA,IAAA,CAAKnB,CAAS,CAAA,GAGhCF,CAAW,CAAA,SAAA,CAAmDC,CAAM,CAAA,CAA+B,OAI/FC,CAAAA,CACJ,CAAgC,CAAA,OAAA,CAChCoB,CAAYT,CAAAA,CAAO,CAEvBO,CAAAA,CAAAA,CAAc,CAEtB,CAAA,EAAA,CAAC,CAEIA,CAAAA,CAAAA,GAGGpB,CAAW,CAAA,SAAA,CAAmDC,CAAM,CAAA,CAA+B,OAI/FC,CAAAA,CACJ,CAAgC,CAAA,OAAA,CAChCW,CAEZ,EAAA,CAAC,EACL,CAAC,EACL,CAAA,CAEMU,CAA0B,CAAA,CAC5BnB,CACAoB,CAAAA,CAAAA,CACAV,CACC,GAAA,CACG,OAAOV,CAAAA,CAAK,UAAe,EAAA,QAAA,GAE3BA,CAAK,CAAA,UAAA,CAAa,EAAC,CAAA,CAGnB,OAAOA,CAAAA,CAAK,UAAW,CAAA,QAAA,EAAa,QAEpCA,GAAAA,CAAAA,CAAK,UAAW,CAAA,QAAA,CAAW,EAAC,CAAA,CAG5BA,CAAK,CAAA,UAAA,CAAW,QAASoB,CAAAA,CAAW,CAAM,GAAA,KAAA,CAAA,EAAaV,CAASU,CAAAA,CAAW,CAAM,GAAA,KAAA,CAAA,GAEjFpB,CAAK,CAAA,UAAA,CAAW,QAASoB,CAAAA,CAAW,CAAIV,CAAAA,CAAAA,CAASU,CAAW,CAAA,EAEpE,CAEMC,CAAAA,CAAAA,CAA0B,CAC5BrB,CAAAA,CACAJ,CACAC,CAAAA,CAAAA,CACAC,CACAiB,CAAAA,CAAAA,CACAL,CAEC,GAAA,CACDf,CAAqBC,CAAAA,CAAAA,CAAYC,CAAQC,CAAAA,CAAS,CAE5CF,CAAAA,CAAAA,CAAW,SAAmDC,CAAAA,CAAM,CAA+B,CAAA,OAAA,GAAUC,CAAS,CAAA,EAAG,QAAa,GAAA,KAAA,CAAA,GAGpIF,CAAW,CAAA,SAAA,CAAmDC,CAAM,CAAA,CAA+B,QAI/FC,CACJ,CAAA,CAAgC,QAChC,CAAA,EAGR,CAAA,CAAA,IAAMwB,CAA2F,CAAA,EAEjG,CAAA,MAAA,CAAO,OAAQZ,CAAAA,CAAQ,CAAE,CAAA,OAAA,CAAQ,CAAC,CAACU,CAAaX,CAAAA,CAAO,CAAM,GAAA,CACzD,IAAIO,CAAAA,CAAc,CAElBD,CAAAA,CAAAA,CAAAA,CAAa,OAAQ,CAAA,CAAC,CAAE,KAAA,CAAAE,CAAO,CAAA,WAAA,CAAAC,CAAY,CAAA,GAAM,CAC7C,GAAI,CAACF,CAAAA,EAAeC,CAAM,CAAA,IAAA,CAAKnB,CAAS,CAAA,CAAG,CACvC,IAAIV,CAAY,CAAA,EAAA,CAEZY,CAAK,CAAA,UAAA,EAAY,QAAWoB,GAAAA,CAAW,CACvChC,CAAAA,CAAAA,CAAQY,CAAK,CAAA,UAAA,CAAW,QAASoB,CAAAA,CAAW,CAA8B,CAAA,KAAA,CAClEX,CAAsC,CAAA,IAAA,CAC9CrB,CACIY,CAAAA,CAAAA,CAAAA,CAAK,UAAY,EAAA,QAAA,GACZS,CAAsC,CAAA,IAAA,CAAK,OAAQ,CAAA,wBAAA,CAA0B,EAAE,CACpF,CACF,EAAA,KAAA,CACK,OAAQA,CAAAA,CAAoC,KAAU,EAAA,QAAA,GAC7DrB,CAAQqB,CAAAA,CAAAA,CAAoC,KAGhDa,CAAAA,CAAAA,CAAAA,CAAoBF,CAAW,CAAA,CAAI,CAC/B,KAAA,CAAOF,CAAY9B,CAAAA,CAAI,CAC3B,CAAA,CAEA4B,CAAc,CAAA,CAAA,EAClB,CACJ,CAAC,CAEIA,CAAAA,CAAAA,GACDM,CAAoBF,CAAAA,CAAW,CAC3BpB,CAAAA,CAAAA,CAAK,UAAY,EAAA,QAAA,GAAWoB,CAAW,CAAA,GAAM,KACvCX,CAAAA,CAAAA,CAAAA,CACA,CACI,IAAA,CAAM,CAAyBW,sBAAAA,EAAAA,CAAW,CAC9C,CAAA,CAAA,EAElB,CAAC,CAAA,CAIGxB,CAAW,CAAA,SAAA,CAAmDC,CAAM,CAAA,CAA+B,OAI/FC,CAAAA,CACJ,CAAgC,CAAA,QAAA,CAChCwB,EACR,CAAA,CAEMC,CAAqC,CAAA,CACvCvB,CACAJ,CAAAA,CAAAA,CACAC,CACAS,CAAAA,CAAAA,CACAC,CACAC,CAAAA,CAAAA,CACAO,CACAL,CAAAA,CAAAA,GACC,CACD,IAAMc,CAAejC,CAAAA,CAAAA,CAAaiB,CAAQ,CAAA,IAAA,EAAO,CAAA,OAAA,CAAQ,GAAK,CAAA,EAAE,CAAC,CAAA,CAEjE,MAAO,CAAA,IAAA,CAAKF,CAAa,CAAA,OAAiB,CAAE,CAAA,OAAA,CAASK,CAAc,EAAA,CAC3DA,CAAcjB,GAAAA,CAAAA,EAIlB,MAAO,CAAA,OAAA,CAAQa,CAAqB,EAAA,EAAE,CAAA,CAAE,OAAQ,CAAA,CAAC,CAACT,CAAAA,CAAWe,CAAO,CAAA,GAAM,CACjEA,CAAAA,GAILM,CAAwBnB,CAAAA,CAAAA,CAAMwB,CAAcd,CAAAA,CAAQ,CAEpDW,CAAAA,CAAAA,CAAwBrB,CAAMJ,CAAAA,CAAAA,CAAYC,CAAQC,CAAAA,CAAAA,CAAWiB,CAAcL,CAAAA,CAAQ,CACvF,EAAA,CAAC,EACL,CAAC,EACL,CAAA,CAGe,SAARe,CAAAA,CACHzB,CACAO,CAAAA,CAAAA,CACAQ,CAA6B,CAAA,CACzB,CACI,KAAA,CAAO,MACP,CAAA,WAAA,CAAcW,CACVC,EAAAA,KAAAA,CAAMD,CAAO,CAAA,CACT,MAAQ,CAAA,CAAA,CAAA,CACR,MAAQ,CAAA,IACZ,CAAC,CACT,CACA,CAAA,CACI,KAAO,CAAA,UAAA,CACP,WAAcA,CAAAA,CAAAA,EAAUrC,SAAUqC,CAAAA,CAAAA,CAAO,CAAE,MAAA,CAAQ,CAAE,CAAC,CAC1D,CACJ,CAC2B,CAAA,CAC3B,OAAI,OAAO1B,CAAS,EAAA,QAAA,EAAY,OAAOA,CAAAA,CAAK,KAAU,EAAA,QAAA,EAClD,MAAO,CAAA,OAAA,CAAQA,CAAK,CAAA,KAAK,CAAE,CAAA,OAAA,CAAQ,CAAC,CAACQ,CAASoB,CAAAA,CAAQ,CAAM,GAAA,CACxD,MAAO,CAAA,MAAA,CAAOA,CAA6D,CAAA,CAAE,OAAShC,CAAAA,CAAAA,EAAe,CAC7F,OAAQA,CAAyC,CAAA,SAAA,EAAc,QAC/D,EAAA,MAAA,CAAO,OAASA,CAAAA,CAAAA,CAAyC,SAAS,CAAE,CAAA,OAAA,CAAQ,CAAC,CAACC,CAAQS,CAAAA,CAAY,CAAM,GAAA,CACpG,GAAI,OAAQA,CAA0C,CAAA,OAAA,EAAY,QAAU,CAAA,CACxE,GAAM,CAAE,OAAAG,CAAAA,CAAAA,CAAS,QAAAC,CAAAA,CAAS,CAAIL,CAAAA,CAAAA,CAC1BT,CACAU,CAAAA,CAAAA,CACAC,CACAC,CAAAA,CAAAA,CACAR,CACAH,CAAAA,CACJ,CAEIY,CAAAA,CAAAA,GAAY,KACZK,CAAAA,CAAAA,CAAAA,CACIlB,CACAU,CAAAA,CAAAA,CACAT,CACAU,CAAAA,CAAAA,CACAQ,CACAN,CAAAA,CACJ,CACOC,CAAAA,CAAAA,GAAa,KACpBa,CAAAA,EAAAA,CAAAA,CACIvB,CACAJ,CAAAA,CAAAA,CACAC,CACAS,CAAAA,CAAAA,CACAC,CACAC,CAAAA,CAAAA,CACAO,CACAL,CAAAA,CACJ,EAER,CACJ,CAAC,EAET,CAAC,EACL,CAAC,CAAA,CAGEV,CACX,CClXM6B,IAAAA,CAAAA,CAAmBC,CAAM,CAAA,kEAAkE,CAE3FC,CAAAA,CAAAA,CAAiB,CACnBC,CAAAA,CAA2D,EAAC,GACc,CAC1E,GAAM,CACF,iBAAA,CAAAzB,CAAoB,CAAA,CAChB,kBAAoB,CAAA,CAAA,CACxB,CACA,CAAA,IAAA,CAAA0B,CACA,CAAA,KAAA,CAAAC,CACA,CAAA,eAAA,CAAAC,CACJ,CAAA,CAAIH,CAEJ,CAAA,OAAgFI,MAAAA,CAAAA,CAAkBC,CAAuB,GAAA,CACrH,IAAMC,CAAAA,CAAcC,IAAK,CAAA,OAAA,CAAQ,GAAI,EAAA,CAAGJ,CAAmB,EAAA,sBAAsB,CAEjF,CAAA,GAAI,CAACK,UAAAA,CAAWF,CAAW,CAAA,CACvB,MAAM,IAAI,KAAM,CAAA,CAAA,2BAAA,EAA8BA,CAAW,CAAA,EAAA,CAAI,CAGjE,CAAA,IAAMG,CAAeC,CAAAA,YAAAA,CAAaJ,CAAa,CAAA,MAAM,CAEjDtC,CAAAA,CAAAA,CAAOyB,CAAkB,CAAA,IAAA,CAAK,KAAMgB,CAAAA,CAAY,CAAyBlC,CAAAA,CAAiB,CAC1FoC,CAAAA,CAAAA,CAA2C,EAAC,CAEhD,GAAIV,CAAAA,GAAS,KACT,CAAA,CAAA,GAAI,CACA,IAAMW,CAAgB,CAAA,MAAMC,eAAgBZ,CAAAA,CAAI,CAEhDU,CAAAA,CAAAA,CAAc,CACV,UAAA,CAAY,CAAE,QAAA,CAAUC,CAAc,CAAA,QAAA,CAAU,OAASA,CAAAA,CAAAA,CAAc,OAAQ,CAAA,CAC/E,KAAOA,CAAAA,CAAAA,CAAc,KACrB,CAAA,IAAA,CAAMA,CAAc,CAAA,IACxB,CAEAD,CAAAA,CAAAA,CAAclB,CAAkBkB,CAAAA,CAAAA,CAAapC,CAAiB,CAAA,CAE9DsB,CAAiB,CAAA,IAAA,CAAK,SAAUc,CAAAA,CAAAA,CAAa,IAAM,CAAA,CAAC,CAAC,CAAA,CAErD3C,CAAO8C,CAAAA,CAAAA,CAAM9C,CAAM2C,CAAAA,CAAW,EAClC,CAAA,MAASI,CAAO,CAAA,CAEZ,MAAQ,OAAA,CAAA,GAAA,CAAIA,CAAK,CAAA,CAEX,IAAI,KAAA,CAAM,kEAAkE,CACtF,CAGA,KAAA,CAAM,OAAQb,CAAAA,CAAK,CACnBA,EAAAA,CAAAA,CAAM,OAASR,CAAAA,CAAAA,EAAU,CACrB1B,CAAAA,CAAO8C,CAAM9C,CAAAA,CAAAA,CAAMyB,CAAkBC,CAAAA,CAAAA,CAAOnB,CAAiB,CAAC,EAClE,CAAC,CAGL,CAAA,IAAInB,CAEA,CAAA,OAAOgD,CAAQ,CAAA,OAAA,CAAQ,MAAW,EAAA,QAAA,EAAY,UAAW,CAAA,IAAA,CAAKA,CAAQ,CAAA,OAAA,CAAQ,MAAM,CAAA,EACpFC,CAAS,CAAA,SAAA,CAAU,cAAgBD,CAAAA,CAAAA,CAAQ,OAAQ,CAAA,MAAM,CAEzDhD,CAAAA,CAAAA,CAAOE,CAAgBU,CAAAA,CAAI,CAE3BqC,GAAAA,CAAAA,CAAS,SAAU,CAAA,cAAA,CAAgB,kBAAkB,CAAA,CAErDjD,CAAO,CAAA,IAAA,CAAK,SAAUY,CAAAA,CAAAA,CAAM,IAAM,CAAA,CAAC,CAGvCqC,CAAAA,CAAAA,CAAAA,CAAS,UAAa,CAAA,GAAA,CACtBA,CAAS,CAAA,GAAA,CAAIjD,CAAI,EACrB,CACJ,CAAA,CAaO4D,EAAQjB,CAAAA","file":"chunk-T4ABIWHW.mjs","sourcesContent":["import { stringify } from \"yaml\";\n\nimport type { Serializer } from \"../types\";\n\nconst yamlTransformer: Serializer = (data) => stringify(data, { indent: 2 });\n\nexport default yamlTransformer;\n","import type { IncomingMessage, ServerResponse } from \"node:http\";\nimport { URL } from \"node:url\";\n\ntype IncomingApiRequest<TApiRequest = IncomingMessage> = TApiRequest & {\n body?: any;\n query?: any;\n};\n\nexport const jsonResponse = (response: ServerResponse, status: number, data?: unknown): void => {\n response.statusCode = status;\n response.setHeader(\"Content-Type\", \"application/json\");\n response.end(data ? JSON.stringify(data) : \"\");\n};\n\nexport const parseBody = async (request: IncomingApiRequest): Promise<any> => {\n if (request.body) {\n return request.body;\n }\n\n const buffers = [];\n\n // eslint-disable-next-line no-restricted-syntax,no-loops/no-loops\n for await (const chunk of request) {\n buffers.push(chunk);\n }\n\n const data = Buffer.concat(buffers).toString();\n\n return data ? JSON.parse(data) : null;\n};\n\nexport const parseQuery = (request: IncomingApiRequest): Record<string, unknown> => {\n if (request.query) {\n return request.query;\n }\n\n if (!request.url) {\n return {};\n }\n\n // Note: Fake protocol is required to parse query string\n const url = new URL(`https://${request.headers.host?.replace(/\\/$/u, \"\")}/${request.url}`);\n\n return Object.fromEntries(url.searchParams.entries());\n};\n\nexport const toHeaderCase = (string_: string): string =>\n string_\n .toLowerCase()\n .replaceAll(/[^\\s\\w]/gu, \" \") // Remove all non-word characters\n .trimEnd() // Remove trailing spaces\n .replaceAll(/\\s+|_/gu, \"-\") // Replace multiple spaces or underline with a single hyphen\n .replaceAll(/\\b\\w/gu, (c) => c.toUpperCase());\n","import type { XmlElement } from \"jstoxml\";\nimport { toXML } from \"jstoxml\";\nimport type { OpenAPIV3 } from \"openapi-types\";\nimport { stringify } from \"yaml\";\n\nimport { toHeaderCase } from \"../utils\";\n\ntype Transformers = { regex: RegExp; transformer: (data: any) => string }[];\n\nconst jsonMediaType = \"application/json\";\n\nconst prepareStatusContent = (methodSpec: OpenAPIV3.OperationObject, status: string, mediaType: string) => {\n if (((methodSpec.responses as unknown as OpenAPIV3.ResponsesObject)[status] as OpenAPIV3.ResponseObject).content === undefined) {\n // eslint-disable-next-line no-param-reassign\n ((methodSpec.responses as unknown as OpenAPIV3.ResponsesObject)[status] as OpenAPIV3.ResponseObject).content = {};\n }\n\n if (((methodSpec.responses as unknown as OpenAPIV3.ResponsesObject)[status] as OpenAPIV3.ResponseObject).content?.[mediaType] === undefined) {\n // prettier-ignore\n // eslint-disable-next-line no-param-reassign\n (((methodSpec.responses as unknown as OpenAPIV3.ResponsesObject)[status] as OpenAPIV3.ResponseObject).content as Record<\n string,\n OpenAPIV3.MediaTypeObject\n >)[\n mediaType\n ] = {} as OpenAPIV3.MediaTypeObject;\n }\n};\n\nconst extendComponentSchemas = (spec: Partial<OpenAPIV3.Document>, schemaName: string, schema: OpenAPIV3.SchemaObject) => {\n if (typeof spec.components !== \"object\") {\n // eslint-disable-next-line no-param-reassign\n spec.components = {};\n }\n\n if (typeof spec.components.schemas !== \"object\") {\n // eslint-disable-next-line no-param-reassign\n spec.components.schemas = {};\n }\n\n if (spec.components.schemas[schemaName] === undefined) {\n // eslint-disable-next-line no-param-reassign\n spec.components.schemas[schemaName] = schema;\n }\n};\n\nconst extendResponseSchema = (methodSpec: OpenAPIV3.OperationObject, status: string, mediaType: string, schemaName: string, schemaIsArray: boolean) => {\n prepareStatusContent(methodSpec, status, mediaType);\n\n if (((methodSpec.responses as unknown as OpenAPIV3.ResponsesObject)[status] as OpenAPIV3.ResponseObject).content?.[mediaType]?.schema === undefined) {\n // prettier-ignore\n // eslint-disable-next-line no-param-reassign\n ((((methodSpec.responses as unknown as OpenAPIV3.ResponsesObject)[status] as OpenAPIV3.ResponseObject).content as Record<\n string,\n OpenAPIV3.MediaTypeObject\n >)[\n mediaType\n ] as OpenAPIV3.MediaTypeObject).schema =\n {} as OpenAPIV3.SchemaObject;\n }\n\n // prettier-ignore\n // eslint-disable-next-line no-param-reassign\n ((((methodSpec.responses as unknown as OpenAPIV3.ResponsesObject)[status] as OpenAPIV3.ResponseObject).content as Record<\n string,\n OpenAPIV3.MediaTypeObject\n >)[\n mediaType\n ] as OpenAPIV3.MediaTypeObject).schema =\n schemaIsArray\n ? {\n items: {\n $ref: `#/components/schemas/${schemaName}`,\n },\n type: \"array\",\n }\n : {\n $ref: `#/components/schemas/${schemaName}`,\n };\n};\n\nconst extendSwaggerWithMediaTypeSchema = (\n methodSpec: OpenAPIV3.OperationObject,\n responseSpec: OpenAPIV3.ResponseObject,\n allowedMediaTypes: Record<string, boolean> | undefined,\n pathKey: string,\n spec: Partial<OpenAPIV3.Document>,\n status: string,\n): {\n example?: any;\n examples?: Record<string, OpenAPIV3.ExampleObject | OpenAPIV3.ReferenceObject>;\n} => {\n let example: any | undefined;\n let examples: Record<string, OpenAPIV3.ExampleObject | OpenAPIV3.ReferenceObject> | undefined;\n\n // eslint-disable-next-line sonarjs/cognitive-complexity\n Object.entries(responseSpec.content as object).forEach(([mediaName, contentSpec]) => {\n if (typeof contentSpec.schema === \"object\") {\n const { schema } = contentSpec;\n\n if (mediaName === jsonMediaType && contentSpec.examples !== undefined) {\n examples = contentSpec.examples;\n } else if (mediaName === jsonMediaType && contentSpec.example !== undefined) {\n example = contentSpec.example;\n }\n\n const schemaIsArray = (schema as OpenAPIV3.SchemaObject).type === \"array\";\n\n Object.entries(allowedMediaTypes ?? {}).forEach(([mediaType, allowed]) => {\n if (!allowed) {\n return;\n }\n\n let schemaName: string;\n\n if (schema?.$ref === undefined) {\n schemaName = `${toHeaderCase(pathKey.trim().replace(\"/\", \"\"))}${mediaType === \"application/ld+json\" ? \".jsonld\" : \"\"}`;\n\n extendComponentSchemas(spec as OpenAPIV3.Document, schemaName, schema as OpenAPIV3.SchemaObject);\n } else {\n schemaName = (schema as OpenAPIV3.ReferenceObject).$ref.replace(\"#/components/schemas/\", \"\");\n }\n\n extendResponseSchema(methodSpec, status, mediaType, schemaName, schemaIsArray);\n });\n }\n });\n\n return { example, examples };\n};\n\nconst extendSwaggerWithMediaTypeExample = (\n methodSpec: OpenAPIV3.OperationObject,\n responseSpec: OpenAPIV3.ResponseObject,\n status: string,\n allowedMediaTypes: Record<string, boolean> | undefined,\n transformers: Transformers,\n example: any,\n) => {\n Object.keys(responseSpec.content as object).forEach((mediaName) => {\n if (mediaName === jsonMediaType) {\n return;\n }\n\n Object.entries(allowedMediaTypes ?? {}).forEach(([mediaType, allowed]) => {\n if (!allowed) {\n return;\n }\n\n prepareStatusContent(methodSpec, status, mediaType);\n\n if (\n ((methodSpec.responses as unknown as OpenAPIV3.ResponsesObject)[status] as OpenAPIV3.ResponseObject).content?.[mediaType]?.example === undefined\n ) {\n // prettier-ignore\n // eslint-disable-next-line no-param-reassign\n ((((methodSpec.responses as unknown as OpenAPIV3.ResponsesObject)[status] as OpenAPIV3.ResponseObject).content as Record<\n string,\n OpenAPIV3.MediaTypeObject\n >)[\n mediaType\n ] as OpenAPIV3.MediaTypeObject).example =\n {};\n }\n\n let transformed = false;\n\n transformers.forEach(({ regex, transformer }) => {\n if (!transformed && regex.test(mediaType)) {\n // prettier-ignore\n // eslint-disable-next-line no-param-reassign\n ((((methodSpec.responses as unknown as OpenAPIV3.ResponsesObject)[status] as OpenAPIV3.ResponseObject).content as Record<\n string,\n OpenAPIV3.MediaTypeObject\n >)[\n mediaType\n ] as OpenAPIV3.MediaTypeObject).example =\n transformer(example);\n\n transformed = true;\n }\n });\n\n if (!transformed) {\n // prettier-ignore\n // eslint-disable-next-line no-param-reassign\n ((((methodSpec.responses as unknown as OpenAPIV3.ResponsesObject)[status] as OpenAPIV3.ResponseObject).content as Record<\n string,\n OpenAPIV3.MediaTypeObject\n >)[\n mediaType\n ] as OpenAPIV3.MediaTypeObject).example =\n example;\n }\n });\n });\n};\n\nconst extendComponentExamples = (\n spec: Partial<OpenAPIV3.Document>,\n exampleName: string,\n examples: Record<string, OpenAPIV3.ExampleObject | OpenAPIV3.ReferenceObject>,\n) => {\n if (typeof spec.components !== \"object\") {\n // eslint-disable-next-line no-param-reassign\n spec.components = {};\n }\n\n if (typeof spec.components.examples !== \"object\") {\n // eslint-disable-next-line no-param-reassign\n spec.components.examples = {};\n }\n\n if (spec.components.examples[exampleName] === undefined && examples[exampleName] !== undefined) {\n // eslint-disable-next-line no-param-reassign\n spec.components.examples[exampleName] = examples[exampleName] as OpenAPIV3.ExampleObject;\n }\n};\n\nconst prepareResponseExamples = (\n spec: Partial<OpenAPIV3.Document>,\n methodSpec: OpenAPIV3.OperationObject,\n status: string,\n mediaType: string,\n transformers: Transformers,\n examples: Record<string, OpenAPIV3.ExampleObject | OpenAPIV3.ReferenceObject>,\n // eslint-disable-next-line sonarjs/cognitive-complexity\n) => {\n prepareStatusContent(methodSpec, status, mediaType);\n\n if (((methodSpec.responses as unknown as OpenAPIV3.ResponsesObject)[status] as OpenAPIV3.ResponseObject).content?.[mediaType]?.examples === undefined) {\n // prettier-ignore\n // eslint-disable-next-line no-param-reassign\n ((((methodSpec.responses as unknown as OpenAPIV3.ResponsesObject)[status] as OpenAPIV3.ResponseObject).content as Record<\n string,\n OpenAPIV3.MediaTypeObject\n >)[\n mediaType\n ] as OpenAPIV3.MediaTypeObject).examples =\n {};\n }\n\n const transformedExamples: Record<string, OpenAPIV3.ExampleObject | OpenAPIV3.ReferenceObject> = {};\n\n Object.entries(examples).forEach(([exampleName, example]) => {\n let transformed = false;\n\n transformers.forEach(({ regex, transformer }) => {\n if (!transformed && regex.test(mediaType)) {\n let data: any = \"\";\n\n if (spec.components?.examples?.[exampleName]) {\n data = (spec.components.examples[exampleName] as OpenAPIV3.ExampleObject).value;\n } else if ((example as OpenAPIV3.ReferenceObject).$ref) {\n data = (\n spec.components?.examples?.[\n (example as OpenAPIV3.ReferenceObject).$ref.replace(\"#/components/examples/\", \"\")\n ] as OpenAPIV3.ExampleObject\n ).value;\n } else if (typeof (example as OpenAPIV3.ExampleObject).value === \"string\") {\n data = (example as OpenAPIV3.ExampleObject).value;\n }\n\n transformedExamples[exampleName] = {\n value: transformer(data),\n };\n\n transformed = true;\n }\n });\n\n if (!transformed) {\n transformedExamples[exampleName] =\n spec.components?.examples?.[exampleName] === undefined\n ? example\n : {\n $ref: `#/components/examples/${exampleName}`,\n };\n }\n });\n\n // prettier-ignore\n // eslint-disable-next-line no-param-reassign\n ((((methodSpec.responses as unknown as OpenAPIV3.ResponsesObject)[status] as OpenAPIV3.ResponseObject).content as Record<\n string,\n OpenAPIV3.MediaTypeObject\n >)[\n mediaType\n ] as OpenAPIV3.MediaTypeObject).examples =\n transformedExamples;\n};\n\nconst extendSwaggerWithMediaTypeExamples = (\n spec: Partial<OpenAPIV3.Document>,\n methodSpec: OpenAPIV3.OperationObject,\n status: string,\n responseSpec: OpenAPIV3.ResponseObject,\n allowedMediaTypes: Record<string, boolean> | undefined,\n pathKey: string,\n transformers: Transformers,\n examples: Record<string, OpenAPIV3.ExampleObject | OpenAPIV3.ReferenceObject>,\n) => {\n const examplesName = toHeaderCase(pathKey.trim().replace(\"/\", \"\"));\n\n Object.keys(responseSpec.content as object).forEach((mediaName) => {\n if (mediaName === jsonMediaType) {\n return;\n }\n\n Object.entries(allowedMediaTypes ?? {}).forEach(([mediaType, allowed]) => {\n if (!allowed) {\n return;\n }\n\n extendComponentExamples(spec, examplesName, examples);\n\n prepareResponseExamples(spec, methodSpec, status, mediaType, transformers, examples);\n });\n });\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nexport default function extendSwaggerSpec(\n spec: Partial<OpenAPIV3.Document>,\n allowedMediaTypes?: Record<string, boolean>,\n transformers: Transformers = [\n {\n regex: /xml/u,\n transformer: (value: XmlElement | XmlElement[] | undefined) =>\n toXML(value, {\n header: true,\n indent: \" \",\n }),\n },\n {\n regex: /yaml|yml/,\n transformer: (value) => stringify(value, { indent: 2 }),\n },\n ],\n): Partial<OpenAPIV3.Document> {\n if (typeof spec === \"object\" && typeof spec.paths === \"object\") {\n Object.entries(spec.paths).forEach(([pathKey, pathSpec]) => {\n Object.values(pathSpec as OpenAPIV3.OperationObject & OpenAPIV3.PathsObject).forEach((methodSpec) => {\n if (typeof (methodSpec as OpenAPIV3.OperationObject).responses === \"object\") {\n Object.entries((methodSpec as OpenAPIV3.OperationObject).responses).forEach(([status, responseSpec]) => {\n if (typeof (responseSpec as OpenAPIV3.ResponseObject).content === \"object\") {\n const { example, examples } = extendSwaggerWithMediaTypeSchema(\n methodSpec as OpenAPIV3.OperationObject,\n responseSpec as OpenAPIV3.ResponseObject,\n allowedMediaTypes,\n pathKey,\n spec,\n status,\n );\n\n if (example !== undefined) {\n extendSwaggerWithMediaTypeExample(\n methodSpec as OpenAPIV3.OperationObject,\n responseSpec as OpenAPIV3.ResponseObject,\n status,\n allowedMediaTypes,\n transformers,\n example,\n );\n } else if (examples !== undefined) {\n extendSwaggerWithMediaTypeExamples(\n spec,\n methodSpec as OpenAPIV3.OperationObject,\n status,\n responseSpec as OpenAPIV3.ResponseObject,\n allowedMediaTypes,\n pathKey,\n transformers,\n examples,\n );\n }\n }\n });\n }\n });\n });\n }\n\n return spec;\n}\n","import { existsSync, readFileSync } from \"node:fs\";\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\n\nimport type { ModelsToOpenApiParameters, SwaggerModelsConfig } from \"@visulima/crud\";\nimport { modelsToOpenApi } from \"@visulima/crud\";\nimport { join } from \"@visulima/path\";\nimport debug from \"debug\";\n// eslint-disable-next-line no-restricted-imports\nimport merge from \"lodash.merge\";\nimport type { OpenAPIV3 } from \"openapi-types\";\n\nimport yamlTransformer from \"../../serializers/transformer/yaml\";\nimport extendSwaggerSpec from \"../extend-swagger-spec\";\n\nconst swaggerCrudDebug = debug(\"visulima:api-platform:swagger:crud:get-static-properties-swagger\");\n\nconst swaggerHandler = <M extends string, PrismaClient>(\n options: Partial<SwaggerHandlerOptions<M, PrismaClient>> = {},\n): ((request: IncomingMessage, response: ServerResponse) => Promise<void>) => {\n const {\n allowedMediaTypes = {\n \"application/json\": true,\n },\n crud,\n specs,\n swaggerFilePath,\n } = options;\n\n return async <Request extends IncomingMessage, Response extends ServerResponse>(request: Request, response: Response) => {\n const swaggerPath = join(process.cwd(), swaggerFilePath ?? \"swagger/swagger.json\");\n\n if (!existsSync(swaggerPath)) {\n throw new Error(`Swagger file not found at \"${swaggerPath}\".`);\n }\n\n const fileContents = readFileSync(swaggerPath, \"utf8\");\n\n let spec = extendSwaggerSpec(JSON.parse(fileContents) as OpenAPIV3.Document, allowedMediaTypes) as OpenAPIV3.Document;\n let crudSwagger: Partial<OpenAPIV3.Document> = {};\n\n if (crud !== undefined) {\n try {\n const modelsOpenApi = await modelsToOpenApi(crud);\n\n crudSwagger = {\n components: { examples: modelsOpenApi.examples, schemas: modelsOpenApi.schemas },\n paths: modelsOpenApi.paths,\n tags: modelsOpenApi.tags,\n };\n\n crudSwagger = extendSwaggerSpec(crudSwagger, allowedMediaTypes);\n\n swaggerCrudDebug(JSON.stringify(crudSwagger, null, 2));\n\n spec = merge(spec, crudSwagger);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.log(error);\n\n throw new Error(\"Please install @visulima/crud to use the crud swagger generator.\");\n }\n }\n\n if (Array.isArray(specs)) {\n specs.forEach((value) => {\n spec = merge(spec, extendSwaggerSpec(value, allowedMediaTypes));\n });\n }\n\n let data: Buffer | Uint8Array | string;\n\n if (typeof request.headers.accept === \"string\" && /yaml|yml/.test(request.headers.accept)) {\n response.setHeader(\"Content-Type\", request.headers.accept);\n\n data = yamlTransformer(spec);\n } else {\n response.setHeader(\"Content-Type\", \"application/json\");\n\n data = JSON.stringify(spec, null, 2);\n }\n\n response.statusCode = 200;\n response.end(data);\n };\n};\n\nexport interface SwaggerHandlerOptions<M extends string, PrismaClient> {\n allowedMediaTypes: Record<string, boolean>;\n crud: Exclude<ModelsToOpenApiParameters<M, PrismaClient>, \"swagger\"> & {\n swagger?: {\n models?: SwaggerModelsConfig<M>;\n };\n };\n specs?: Partial<OpenAPIV3.Document>[];\n swaggerFilePath: string;\n}\n\nexport default swaggerHandler;\n"]}
|
package/dist/chunk-UPRO35MO.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/zod/index.ts","../src/zod/date-in-schema.ts","../src/zod/date-out-schema.ts"],"names":["zod_exports","__export","dateIn","dateOut","
|
|
1
|
+
{"version":3,"sources":["../src/zod/index.ts","../src/zod/date-in-schema.ts","../src/zod/date-out-schema.ts"],"names":["zod_exports","__export","dateIn","dateOut","zodDateInKind","isoDateRegex","ZodDateIn","_ZodDateIn","ZodType","input","ctx","status","ZodParsedType","addIssueToContext","ZodIssueCode","INVALID","date","zodDateOutKind","ZodDateOut","_ZodDateOut","parameters","withGetType","ts"],"mappings":"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","file":"chunk-UPRO35MO.js","sourcesContent":["import { withGetType } from \"zod-to-ts\";\n\nimport { ZodDateIn } from \"./date-in-schema\";\nimport { ZodDateOut } from \"./date-out-schema\";\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const dateIn = (...parameters: Parameters<typeof ZodDateIn.create>) =>\n withGetType(ZodDateIn.create(...parameters), (ts) => ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword));\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const dateOut = (...parameters: Parameters<typeof ZodDateOut.create>) =>\n withGetType(ZodDateOut.create(...parameters), (ts) => ts.factory.createKeywordTypeNode(ts.SyntaxKind.StringKeyword));\n","import type { ParseInput, ParseReturnType, ZodTypeDef } from \"zod\";\nimport { addIssueToContext, INVALID, ZodIssueCode, ZodParsedType, ZodType } from \"zod\";\n\nconst zodDateInKind = \"ZodDateIn\";\n\n// simple regex for ISO date, supports the following formats:\n// 2021-01-01T00:00:00.000Z\n// 2021-01-01T00:00:00Z\n// 2021-01-01T00:00:00\n// 2021-01-01\n// eslint-disable-next-line security/detect-unsafe-regex\nexport const isoDateRegex = /^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?)?Z?$/;\n\n// eslint-disable-next-line unicorn/prevent-abbreviations\nexport interface ZodDateInDef extends ZodTypeDef {\n typeName: typeof zodDateInKind;\n}\n\nexport class ZodDateIn extends ZodType<Date, ZodDateInDef, string> {\n public static create = (): ZodDateIn =>\n new ZodDateIn({\n typeName: zodDateInKind,\n });\n\n // eslint-disable-next-line no-underscore-dangle\n public _parse(input: ParseInput): ParseReturnType<Date> {\n // eslint-disable-next-line no-underscore-dangle\n const { ctx, status } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.string) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n\n if (!isoDateRegex.test(ctx.data as string)) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"regex\",\n });\n status.dirty();\n }\n\n const date = new Date(ctx.data as string);\n\n if (Number.isNaN(date.getTime())) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n\n return { status: status.value, value: date };\n }\n}\n","import type { ParseInput, ParseReturnType, ZodTypeDef } from \"zod\";\nimport { addIssueToContext, INVALID, ZodIssueCode, ZodParsedType, ZodType } from \"zod\";\n\nconst zodDateOutKind = \"ZodDateOut\";\n\n// eslint-disable-next-line unicorn/prevent-abbreviations\nexport interface ZodDateOutDef extends ZodTypeDef {\n typeName: typeof zodDateOutKind;\n}\n\nexport class ZodDateOut extends ZodType<string, ZodDateOutDef, Date> {\n public static create = (): ZodDateOut =>\n new ZodDateOut({\n typeName: zodDateOutKind,\n });\n\n // eslint-disable-next-line no-underscore-dangle\n public _parse(input: ParseInput): ParseReturnType<string> {\n // eslint-disable-next-line no-underscore-dangle\n const { ctx, status } = this._processInputParams(input);\n\n if (ctx.parsedType !== ZodParsedType.date) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n\n if (Number.isNaN(ctx.data.getTime())) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n\n return { status: status.value, value: (ctx.data as Date).toISOString() };\n }\n}\n"]}
|