typespec-fastify 0.2.0 → 0.3.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/dist/src/components/OperationInterface.js +4 -2
- package/dist/src/components/OperationInterface.js.map +1 -1
- package/dist/src/components/OperationInterface.jsx +3 -1
- package/dist/src/components/OperationInterface.jsx.map +1 -1
- package/dist/src/components/ResponseTypes.js +0 -20
- package/dist/src/components/ResponseTypes.js.map +1 -1
- package/dist/src/components/ResponseTypes.jsx +0 -20
- package/dist/src/components/ResponseTypes.jsx.map +1 -1
- package/dist/src/components/RouteRegistration.d.ts +2 -2
- package/dist/src/components/RouteRegistration.js +110 -29
- package/dist/src/components/RouteRegistration.js.map +1 -1
- package/dist/src/components/RouteRegistration.jsx +111 -21
- package/dist/src/components/RouteRegistration.jsx.map +1 -1
- package/dist/src/components/RouterFile.js +4 -5
- package/dist/src/components/RouterFile.js.map +1 -1
- package/dist/src/components/RouterFile.jsx +4 -1
- package/dist/src/components/RouterFile.jsx.map +1 -1
- package/dist/src/components/RoutesDirectory.js +2 -4
- package/dist/src/components/RoutesDirectory.js.map +1 -1
- package/dist/src/components/RoutesDirectory.jsx +3 -3
- package/dist/src/components/RoutesDirectory.jsx.map +1 -1
- package/dist/src/components/ZodSchemasDirectory.d.ts +9 -0
- package/dist/src/components/ZodSchemasDirectory.js +37 -0
- package/dist/src/components/ZodSchemasDirectory.js.map +1 -0
- package/dist/src/components/ZodSchemasDirectory.jsx +25 -0
- package/dist/src/components/ZodSchemasDirectory.jsx.map +1 -0
- package/dist/src/emitter.js +9 -1
- package/dist/src/emitter.js.map +1 -1
- package/dist/src/emitter.jsx +5 -1
- package/dist/src/emitter.jsx.map +1 -1
- package/dist/src/external-packages/fastify-type-provider-zod.d.ts +5 -0
- package/dist/src/external-packages/fastify-type-provider-zod.js +11 -0
- package/dist/src/external-packages/fastify-type-provider-zod.js.map +1 -0
- package/dist/src/lib.d.ts +8 -1
- package/dist/src/lib.js +8 -1
- package/dist/src/lib.js.map +1 -1
- package/package.json +23 -4
|
@@ -55,13 +55,15 @@ export function OperationInterface(props) {
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
if (operation.parameters.body) {
|
|
58
|
+
const bodyParam = operation.parameters.body;
|
|
58
59
|
parameters.push({
|
|
59
60
|
name: "body",
|
|
60
61
|
type: _$createComponent(TypeExpression, {
|
|
61
62
|
get type() {
|
|
62
|
-
return
|
|
63
|
+
return bodyParam.type;
|
|
63
64
|
}
|
|
64
|
-
})
|
|
65
|
+
}),
|
|
66
|
+
optional: bodyParam.property?.optional ?? false
|
|
65
67
|
});
|
|
66
68
|
}
|
|
67
69
|
for (const param of operation.parameters.parameters) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["For","List","refkey","code","ts","useTSNamePolicy","isVoidType","TypeExpression","getNoContentResponseRef","getOperationInterfaceRef","containerName","OperationInterface","props","operations","interfaceRef","namePolicy","_$createComponent","InterfaceDeclaration","name","children","each","hardline","semicolon","operation","opName","getName","parameters","param","type","paramName","push","optional","body","queryParams","filter","p","length","optionsType","InterfaceExpression","InterfaceMember","isVoid","returnType","is204Response","responses","some","r","statusCodes","shouldEmitVoid","noContentRef","InterfaceMethod"],"sources":["../../../src/components/OperationInterface.tsx"],"sourcesContent":[null],"mappings":";AAAA,SACEA,GAAG,EACHC,IAAI,EACJC,MAAM,EAGNC,IAAI,QACC,gBAAgB;AACvB,OAAO,KAAKC,EAAE,MAAM,sBAAsB;AAC1C,SAASC,eAAe,QAAQ,sBAAsB;AAEtD,SAASC,UAAU,QAAQ,oBAAoB;AAC/C,SAASC,cAAc,QAAQ,wCAAwC;AACvE,SAASC,uBAAuB,QAAQ,oBAAoB;AAM5D;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,wBAAwBA,CAACC,aAAqB,EAAU;EACtE,OAAOR,MAAM,CAACQ,aAAa,EAAE,qBAAqB,CAAC;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,kBAAkBA,CAACC,KAA8B,EAAE;EACjE,MAAM;IAAEF,aAAa;IAAEG;EAAW,CAAC,GAAGD,KAAK;EAC3C,MAAME,YAAY,GAAGL,wBAAwB,CAACC,aAAa,CAAC;EAC5D,MAAMK,UAAU,GAAGV,eAAe,CAAC,CAAC;EACpC,OAAAW,iBAAA,CACGZ,EAAE,CAACa,oBAAoB;IAACC,IAAI,EAAER,aAAa;IAAA;IAASR,MAAM,EAAEY,YAAY;IAAA,IAAAK,SAAA;MAAA,OAAAH,iBAAA,CACtEf,IAAI;QAAA,IAAAkB,SAAA;UAAA,OAAAH,iBAAA,CACFhB,GAAG;YAACoB,IAAI,EAAEP,UAAU;YAAEQ,QAAQ;YAACC,SAAS;YAAAH,QAAA,EACrCI,SAAS,IAAK;cACd,MAAMC,MAAM,GAAGT,UAAU,CAACU,OAAO,CAC/BF,SAAS,CAACA,SAAS,CAACL,IAAI,EACxB,UACF,CAAC;cACD,MAAMQ,UAIH,GAAG,EAAE;cAER,KAAK,MAAMC,KAAK,IAAIJ,SAAS,CAACG,UAAU,CAACA,UAAU,EAAE;gBACnD,IAAIC,KAAK,CAACC,IAAI,KAAK,MAAM,EAAE;kBACzB,MAAMC,SAAS,GAAGd,UAAU,CAACU,OAAO,CAClCE,KAAK,CAACA,KAAK,CAACT,IAAI,EAChB,WACF,CAAC;kBACDQ,UAAU,CAACI,IAAI,CAAC;oBACdZ,IAAI,EAAEW,SAAS;oBACfD,IAAI,EAAAZ,iBAAA,CAAGT,cAAc;sBAAA,IAACqB,IAAIA,CAAA;wBAAA,OAAED,KAAK,CAACA,KAAK,CAACC,IAAI;sBAAA;oBAAA,EAAI;oBAChDG,QAAQ,EAAEJ,KAAK,CAACA,KAAK,CAACI;kBACxB,CAAC,CAAC;gBACJ;cACF;cAEA,IAAIR,SAAS,CAACG,UAAU,CAACM,IAAI,EAAE;
|
|
1
|
+
{"version":3,"names":["For","List","refkey","code","ts","useTSNamePolicy","isVoidType","TypeExpression","getNoContentResponseRef","getOperationInterfaceRef","containerName","OperationInterface","props","operations","interfaceRef","namePolicy","_$createComponent","InterfaceDeclaration","name","children","each","hardline","semicolon","operation","opName","getName","parameters","param","type","paramName","push","optional","body","bodyParam","property","queryParams","filter","p","length","optionsType","InterfaceExpression","InterfaceMember","isVoid","returnType","is204Response","responses","some","r","statusCodes","shouldEmitVoid","noContentRef","InterfaceMethod"],"sources":["../../../src/components/OperationInterface.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -38,9 +38,11 @@ export function OperationInterface(props) {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
if (operation.parameters.body) {
|
|
41
|
+
const bodyParam = operation.parameters.body;
|
|
41
42
|
parameters.push({
|
|
42
43
|
name: "body",
|
|
43
|
-
type: <TypeExpression type={
|
|
44
|
+
type: <TypeExpression type={bodyParam.type}/>,
|
|
45
|
+
optional: bodyParam.property?.optional ?? false,
|
|
44
46
|
});
|
|
45
47
|
}
|
|
46
48
|
for (const param of operation.parameters.parameters) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OperationInterface.jsx","sourceRoot":"","sources":["../../../src/components/OperationInterface.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,GAAG,EACH,IAAI,EACJ,MAAM,EAGN,IAAI,GACL,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAM7D;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,aAAqB;IAC5D,OAAO,MAAM,CAAC,aAAa,EAAE,qBAAqB,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAC5C,MAAM,YAAY,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;IACrC,OAAO,CACL,CAAC,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CACxE;MAAA,CAAC,IAAI,CACH;QAAA,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,SAAS,CACvC;UAAA,CAAC,CAAC,SAAS,EAAE,EAAE;YACb,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAC/B,SAAS,CAAC,SAAS,CAAC,IAAI,EACxB,UAAU,CACX,CAAC;YACF,MAAM,UAAU,GAIV,EAAE,CAAC;YAET,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;gBACpD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC1B,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAClC,KAAK,CAAC,KAAK,CAAC,IAAI,EAChB,WAAW,CACZ,CAAC;oBACF,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAG;wBAChD,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ;qBAC/B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC9B,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"OperationInterface.jsx","sourceRoot":"","sources":["../../../src/components/OperationInterface.tsx"],"names":[],"mappings":"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"}
|
|
@@ -18,24 +18,4 @@ export function ResponseTypes() {
|
|
|
18
18
|
}
|
|
19
19
|
}), "\n\n", ["export interface ResponseWithBody", "<", "TBody", ">", " ", "{", "\n", " ", "statusCode: number;", "\n", " ", "body: TBody;", "\n", "}"]];
|
|
20
20
|
}
|
|
21
|
-
/**
|
|
22
|
-
* not quite working yields
|
|
23
|
-
* export interface ResponseWithBody<t> {
|
|
24
|
-
statusCode: number;
|
|
25
|
-
body: T
|
|
26
|
-
}
|
|
27
|
-
*/
|
|
28
|
-
{
|
|
29
|
-
/* <ts.InterfaceDeclaration
|
|
30
|
-
name="ResponseWithBody"
|
|
31
|
-
export
|
|
32
|
-
refkey={responseWithBodyRef}
|
|
33
|
-
typeParameters={[{ name: "T" }]}
|
|
34
|
-
>
|
|
35
|
-
<>
|
|
36
|
-
statusCode: number;{"\n"}
|
|
37
|
-
body: T
|
|
38
|
-
</>
|
|
39
|
-
</ts.InterfaceDeclaration> */
|
|
40
|
-
}
|
|
41
21
|
//# sourceMappingURL=ResponseTypes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["refkey","ts","getNoContentResponseRef","getResponseWithBodyRef","ResponseTypes","noContentRef","_$createComponent","InterfaceDeclaration","name","children"],"sources":["../../../src/components/ResponseTypes.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,MAAM,QAAqB,gBAAgB;AACpD,OAAO,KAAKC,EAAE,MAAM,sBAAsB;AAE1C,OAAO,SAASC,uBAAuBA,CAAA,EAAW;EAChD,OAAOF,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;AACtD;AAEA,OAAO,SAASG,sBAAsBA,CAAA,EAAW;EAC/C,OAAOH,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;AACrD;AAEA,OAAO,SAASI,aAAaA,CAAA,EAAG;EAC9B,MAAMC,YAAY,GAAGH,uBAAuB,CAAC,CAAC;EAE9C,QAAAI,iBAAA,CAEKL,EAAE,CAACM,oBAAoB;IACtBC,IAAI;IAAA;IAEJR,MAAM,EAAEK,YAAY;IAAA,IAAAI,SAAA;MAAA;IAAA;EAAA,IAIrB,MAAM,wCAE6B,GAAG,WAAO,GAAG,OAAG,GAAG,EACpD,IAAI,EACJ,IAAI,yBACJ,IAAI,EACJ,IAAI,kBACJ,IAAI,EACJ,GAAG;AAIZ
|
|
1
|
+
{"version":3,"names":["refkey","ts","getNoContentResponseRef","getResponseWithBodyRef","ResponseTypes","noContentRef","_$createComponent","InterfaceDeclaration","name","children"],"sources":["../../../src/components/ResponseTypes.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,MAAM,QAAqB,gBAAgB;AACpD,OAAO,KAAKC,EAAE,MAAM,sBAAsB;AAE1C,OAAO,SAASC,uBAAuBA,CAAA,EAAW;EAChD,OAAOF,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC;AACtD;AAEA,OAAO,SAASG,sBAAsBA,CAAA,EAAW;EAC/C,OAAOH,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;AACrD;AAEA,OAAO,SAASI,aAAaA,CAAA,EAAG;EAC9B,MAAMC,YAAY,GAAGH,uBAAuB,CAAC,CAAC;EAE9C,QAAAI,iBAAA,CAEKL,EAAE,CAACM,oBAAoB;IACtBC,IAAI;IAAA;IAEJR,MAAM,EAAEK,YAAY;IAAA,IAAAI,SAAA;MAAA;IAAA;EAAA,IAIrB,MAAM,wCAE6B,GAAG,WAAO,GAAG,OAAG,GAAG,EACpD,IAAI,EACJ,IAAI,yBACJ,IAAI,EACJ,IAAI,kBACJ,IAAI,EACJ,GAAG;AAIZ","ignoreList":[]}
|
|
@@ -24,24 +24,4 @@ export function ResponseTypes() {
|
|
|
24
24
|
</>
|
|
25
25
|
</>);
|
|
26
26
|
}
|
|
27
|
-
/**
|
|
28
|
-
* not quite working yields
|
|
29
|
-
* export interface ResponseWithBody<t> {
|
|
30
|
-
statusCode: number;
|
|
31
|
-
body: T
|
|
32
|
-
}
|
|
33
|
-
*/
|
|
34
|
-
{
|
|
35
|
-
/* <ts.InterfaceDeclaration
|
|
36
|
-
name="ResponseWithBody"
|
|
37
|
-
export
|
|
38
|
-
refkey={responseWithBodyRef}
|
|
39
|
-
typeParameters={[{ name: "T" }]}
|
|
40
|
-
>
|
|
41
|
-
<>
|
|
42
|
-
statusCode: number;{"\n"}
|
|
43
|
-
body: T
|
|
44
|
-
</>
|
|
45
|
-
</ts.InterfaceDeclaration> */
|
|
46
|
-
}
|
|
47
27
|
//# sourceMappingURL=ResponseTypes.jsx.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponseTypes.jsx","sourceRoot":"","sources":["../../../src/components/ResponseTypes.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3C,MAAM,UAAU,uBAAuB;IACrC,OAAO,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAC;IAE/C,OAAO,CACL,EACE;MAAA,CAAC,EAAE,CAAC,oBAAoB,CACtB,IAAI,CAAC,mBAAmB,CACxB,MAAM,CACN,MAAM,CAAC,CAAC,YAAY,CAAC,CAErB;QAAA,EAAE,kBAAkB,GACtB;MAAA,EAAE,EAAE,CAAC,oBAAoB,CACzB;MAAA,CAAC,MAAM,CACP;MAAA,EACE;yCAAiC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAE,CAAA,CAAC,GAAG,CACrD;QAAA,CAAC,IAAI,CACL;QAAA,CAAC,IAAI,CAAC;QACN,CAAC,IAAI,CACL;QAAA,CAAC,IAAI,CAAC;QACN,CAAC,IAAI,CACL;QAAA,CAAC,GAAG,CACN;MAAA,GACF;IAAA,GAAG,CACJ,CAAC;AACJ,CAAC
|
|
1
|
+
{"version":3,"file":"ResponseTypes.jsx","sourceRoot":"","sources":["../../../src/components/ResponseTypes.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3C,MAAM,UAAU,uBAAuB;IACrC,OAAO,MAAM,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,YAAY,GAAG,uBAAuB,EAAE,CAAC;IAE/C,OAAO,CACL,EACE;MAAA,CAAC,EAAE,CAAC,oBAAoB,CACtB,IAAI,CAAC,mBAAmB,CACxB,MAAM,CACN,MAAM,CAAC,CAAC,YAAY,CAAC,CAErB;QAAA,EAAE,kBAAkB,GACtB;MAAA,EAAE,EAAE,CAAC,oBAAoB,CACzB;MAAA,CAAC,MAAM,CACP;MAAA,EACE;yCAAiC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAE,CAAA,CAAC,GAAG,CACrD;QAAA,CAAC,IAAI,CACL;QAAA,CAAC,IAAI,CAAC;QACN,CAAC,IAAI,CACL;QAAA,CAAC,IAAI,CAAC;QACN,CAAC,IAAI,CACL;QAAA,CAAC,GAAG,CACN;MAAA,GACF;IAAA,GAAG,CACJ,CAAC;AACJ,CAAC"}
|
|
@@ -10,7 +10,7 @@ export interface RouteRegistrationProps {
|
|
|
10
10
|
*/
|
|
11
11
|
export declare function getRouteRegistrationRef(containerName: string): Refkey;
|
|
12
12
|
/**
|
|
13
|
-
* Generates Fastify route registration functions.
|
|
14
|
-
*
|
|
13
|
+
* Generates Fastify route registration functions with Zod schema validation.
|
|
14
|
+
* Uses fastify-type-provider-zod for automatic type inference and runtime validation.
|
|
15
15
|
*/
|
|
16
16
|
export declare function RouteRegistration(props: RouteRegistrationProps): Children;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { For, List, refkey } from "@alloy-js/core";
|
|
1
|
+
import { memo as _$memo, createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { code, For, List, refkey } from "@alloy-js/core";
|
|
3
3
|
import * as ts from "@alloy-js/typescript";
|
|
4
4
|
import { useTSNamePolicy } from "@alloy-js/typescript";
|
|
5
5
|
import { isVoidType } from "@typespec/compiler";
|
|
6
6
|
import { getHttpVerb } from "../utils/http-helpers.js";
|
|
7
7
|
import { fastifyLib } from "../external-packages/fastify.js";
|
|
8
|
+
import { fastifyTypeProviderZod } from "../external-packages/fastify-type-provider-zod.js";
|
|
8
9
|
import { getOperationInterfaceRef } from "./OperationInterface.js";
|
|
10
|
+
import { ZodSchema, zod } from "typespec-zod";
|
|
9
11
|
/**
|
|
10
12
|
* Creates a refkey for a route registration function.
|
|
11
13
|
* This allows the loadRoutes function to reference it with automatic imports.
|
|
@@ -15,8 +17,8 @@ export function getRouteRegistrationRef(containerName) {
|
|
|
15
17
|
}
|
|
16
18
|
|
|
17
19
|
/**
|
|
18
|
-
* Generates Fastify route registration functions.
|
|
19
|
-
*
|
|
20
|
+
* Generates Fastify route registration functions with Zod schema validation.
|
|
21
|
+
* Uses fastify-type-provider-zod for automatic type inference and runtime validation.
|
|
20
22
|
*/
|
|
21
23
|
export function RouteRegistration(props) {
|
|
22
24
|
const {
|
|
@@ -45,7 +47,13 @@ export function RouteRegistration(props) {
|
|
|
45
47
|
get children() {
|
|
46
48
|
return _$createComponent(List, {
|
|
47
49
|
get children() {
|
|
48
|
-
return _$createComponent(
|
|
50
|
+
return [_$createComponent(ts.VarDeclaration, {
|
|
51
|
+
name: "server",
|
|
52
|
+
"const": true,
|
|
53
|
+
get children() {
|
|
54
|
+
return ["fastify.withTypeProvider", "<", _$memo(() => fastifyTypeProviderZod.ZodTypeProvider), ">", "()"];
|
|
55
|
+
}
|
|
56
|
+
}), _$createComponent(For, {
|
|
49
57
|
each: operations,
|
|
50
58
|
hardline: true,
|
|
51
59
|
children: operation => {
|
|
@@ -57,38 +65,114 @@ export function RouteRegistration(props) {
|
|
|
57
65
|
optionalParams.add(param.param.name);
|
|
58
66
|
}
|
|
59
67
|
}
|
|
60
|
-
const path = rawPath.replace(/\{([^}]+)\}/g, function (
|
|
68
|
+
const path = rawPath.replace(/\{([^}]+)\}/g, function (_match, p1) {
|
|
61
69
|
const paramName = p1.startsWith("/") ? p1.slice(1) : p1;
|
|
62
70
|
const prefix = p1.startsWith("/") ? "/:" : ":";
|
|
63
71
|
const suffix = optionalParams.has(paramName) ? "?" : "";
|
|
64
72
|
return prefix + paramName + suffix;
|
|
65
73
|
});
|
|
66
74
|
const opName = namePolicy.getName(operation.operation.name, "function");
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
return ["fastify.", verb];
|
|
70
|
-
},
|
|
71
|
-
get args() {
|
|
72
|
-
return [["'", path, "'"], generateRouteHandler(operation, opName, namePolicy)];
|
|
73
|
-
}
|
|
74
|
-
}), ";"];
|
|
75
|
+
const routeSchema = generateZodRouteSchema(operation);
|
|
76
|
+
return [_$memo(() => code`server.${verb}('${path}', ${routeSchema}, ${generateRouteHandler(operation, opName, namePolicy)});`)];
|
|
75
77
|
}
|
|
76
|
-
});
|
|
78
|
+
})];
|
|
77
79
|
}
|
|
78
80
|
});
|
|
79
81
|
}
|
|
80
82
|
});
|
|
81
83
|
}
|
|
84
|
+
function generateZodRouteSchema(operation) {
|
|
85
|
+
const schemaProps = [];
|
|
86
|
+
const pathParams = operation.parameters.parameters.filter(function (p) {
|
|
87
|
+
return p.type === "path";
|
|
88
|
+
});
|
|
89
|
+
if (pathParams.length > 0) {
|
|
90
|
+
const pathProperties = [];
|
|
91
|
+
for (let i = 0; i < pathParams.length; i++) {
|
|
92
|
+
const param = pathParams[i];
|
|
93
|
+
const paramName = param.param.name;
|
|
94
|
+
const isOptional = param.param.optional;
|
|
95
|
+
if (i > 0) pathProperties.push([", "]);
|
|
96
|
+
if (isOptional) {
|
|
97
|
+
pathProperties.push([paramName, ": ", _$createComponent(ZodSchema, {
|
|
98
|
+
get type() {
|
|
99
|
+
return param.param.type;
|
|
100
|
+
}
|
|
101
|
+
}), ".optional()"]);
|
|
102
|
+
} else {
|
|
103
|
+
pathProperties.push([paramName, ": ", _$createComponent(ZodSchema, {
|
|
104
|
+
get type() {
|
|
105
|
+
return param.param.type;
|
|
106
|
+
}
|
|
107
|
+
})]);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
schemaProps.push(["params: ", _$memo(() => zod.z), ".object(", "{", pathProperties, "}", ")"]);
|
|
111
|
+
}
|
|
112
|
+
const queryParams = operation.parameters.parameters.filter(function (p) {
|
|
113
|
+
return p.type === "query";
|
|
114
|
+
});
|
|
115
|
+
if (queryParams.length > 0) {
|
|
116
|
+
if (schemaProps.length > 0) schemaProps.push([", "]);
|
|
117
|
+
const queryProperties = [];
|
|
118
|
+
for (let i = 0; i < queryParams.length; i++) {
|
|
119
|
+
const param = queryParams[i];
|
|
120
|
+
const paramName = param.param.name;
|
|
121
|
+
const isOptional = param.param.optional;
|
|
122
|
+
if (i > 0) queryProperties.push([", "]);
|
|
123
|
+
if (isOptional) {
|
|
124
|
+
queryProperties.push([paramName, ": ", _$createComponent(ZodSchema, {
|
|
125
|
+
get type() {
|
|
126
|
+
return param.param.type;
|
|
127
|
+
}
|
|
128
|
+
}), ".optional()"]);
|
|
129
|
+
} else {
|
|
130
|
+
queryProperties.push([paramName, ": ", _$createComponent(ZodSchema, {
|
|
131
|
+
get type() {
|
|
132
|
+
return param.param.type;
|
|
133
|
+
}
|
|
134
|
+
})]);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
schemaProps.push(["querystring: ", _$memo(() => zod.z), ".object(", "{", queryProperties, "}", ")"]);
|
|
138
|
+
}
|
|
139
|
+
if (operation.parameters.body) {
|
|
140
|
+
const bodyParam = operation.parameters.body;
|
|
141
|
+
const isOptional = bodyParam.property?.optional ?? false;
|
|
142
|
+
if (!isOptional) {
|
|
143
|
+
if (schemaProps.length > 0) schemaProps.push([", "]);
|
|
144
|
+
schemaProps.push(["body: ", _$createComponent(ZodSchema, {
|
|
145
|
+
get type() {
|
|
146
|
+
return bodyParam.type;
|
|
147
|
+
}
|
|
148
|
+
})]);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (schemaProps.length === 0) {
|
|
152
|
+
return _$createComponent(ts.ObjectExpression, {});
|
|
153
|
+
}
|
|
154
|
+
return _$createComponent(ts.ObjectExpression, {
|
|
155
|
+
get children() {
|
|
156
|
+
return ["schema: ", "{", schemaProps, "}"];
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
}
|
|
82
160
|
function generateRouteHandler(operation, opName, namePolicy) {
|
|
83
161
|
const callArgs = [];
|
|
84
162
|
for (const param of operation.parameters.parameters) {
|
|
85
163
|
if (param.type === "path") {
|
|
86
164
|
const paramName = namePolicy.getName(param.param.name, "parameter");
|
|
87
|
-
callArgs.push(["
|
|
165
|
+
callArgs.push(["request.params.", paramName]);
|
|
88
166
|
}
|
|
89
167
|
}
|
|
90
168
|
if (operation.parameters.body) {
|
|
91
|
-
|
|
169
|
+
const bodyParam = operation.parameters.body;
|
|
170
|
+
const isOptional = bodyParam.property?.optional ?? false;
|
|
171
|
+
if (isOptional) {
|
|
172
|
+
callArgs.push(["request.body as any"]);
|
|
173
|
+
} else {
|
|
174
|
+
callArgs.push(["request.body"]);
|
|
175
|
+
}
|
|
92
176
|
}
|
|
93
177
|
for (const param of operation.parameters.parameters) {
|
|
94
178
|
if (param.type === "header") {
|
|
@@ -101,10 +185,11 @@ function generateRouteHandler(operation, opName, namePolicy) {
|
|
|
101
185
|
if (queryParams.length > 0) {
|
|
102
186
|
const optionsObj = _$createComponent(ts.ObjectExpression, {
|
|
103
187
|
get children() {
|
|
104
|
-
return queryParams.map((param, index)
|
|
188
|
+
return queryParams.map(function (param, index) {
|
|
105
189
|
const paramName = namePolicy.getName(param.param.name, "object-member-data");
|
|
106
|
-
|
|
107
|
-
|
|
190
|
+
const separator = index > 0 ? ", " : "";
|
|
191
|
+
return `${separator}${paramName}: request.query.${paramName}`;
|
|
192
|
+
}).join("");
|
|
108
193
|
}
|
|
109
194
|
});
|
|
110
195
|
callArgs.push(optionsObj);
|
|
@@ -116,15 +201,11 @@ function generateRouteHandler(operation, opName, namePolicy) {
|
|
|
116
201
|
const isNoContent = isVoid || is204Response;
|
|
117
202
|
return _$createComponent(ts.FunctionExpression, {
|
|
118
203
|
async: true,
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
name: "reply",
|
|
125
|
-
type: fastifyLib.FastifyReply
|
|
126
|
-
}];
|
|
127
|
-
},
|
|
204
|
+
parameters: [{
|
|
205
|
+
name: "request"
|
|
206
|
+
}, {
|
|
207
|
+
name: "reply"
|
|
208
|
+
}],
|
|
128
209
|
get children() {
|
|
129
210
|
return _$createComponent(List, {
|
|
130
211
|
get children() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["For","List","refkey","ts","useTSNamePolicy","isVoidType","getHttpVerb","fastifyLib","getOperationInterfaceRef","getRouteRegistrationRef","containerName","RouteRegistration","props","operations","namePolicy","functionName","getName","interfaceRef","routeRegRef","_$createComponent","FunctionDeclaration","name","async","parameters","type","FastifyInstance","returnType","children","each","hardline","operation","verb","rawPath","uriTemplate","path","optionalParams","Set","param","optional","add","replace","
|
|
1
|
+
{"version":3,"names":["code","For","List","refkey","ts","useTSNamePolicy","isVoidType","getHttpVerb","fastifyLib","fastifyTypeProviderZod","getOperationInterfaceRef","ZodSchema","zod","getRouteRegistrationRef","containerName","RouteRegistration","props","operations","namePolicy","functionName","getName","interfaceRef","routeRegRef","_$createComponent","FunctionDeclaration","name","async","parameters","type","FastifyInstance","returnType","children","VarDeclaration","_$memo","ZodTypeProvider","each","hardline","operation","verb","rawPath","uriTemplate","path","optionalParams","Set","param","optional","add","replace","_match","p1","paramName","startsWith","slice","prefix","suffix","has","opName","routeSchema","generateZodRouteSchema","generateRouteHandler","schemaProps","pathParams","filter","p","length","pathProperties","i","isOptional","push","z","queryParams","queryProperties","body","bodyParam","property","ObjectExpression","callArgs","headerKey","toLowerCase","headerAccess","optionsObj","map","index","separator","join","isVoid","is204Response","responses","some","r","statusCodes","isNoContent","FunctionExpression","FunctionCallExpression","target","args"],"sources":["../../../src/components/RouteRegistration.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { For, List, refkey } from "@alloy-js/core";
|
|
1
|
+
import { code, For, List, refkey, } from "@alloy-js/core";
|
|
2
2
|
import * as ts from "@alloy-js/typescript";
|
|
3
3
|
import { useTSNamePolicy } from "@alloy-js/typescript";
|
|
4
4
|
import { isVoidType } from "@typespec/compiler";
|
|
5
5
|
import { getHttpVerb } from "../utils/http-helpers.js";
|
|
6
6
|
import { fastifyLib } from "../external-packages/fastify.js";
|
|
7
|
+
import { fastifyTypeProviderZod } from "../external-packages/fastify-type-provider-zod.js";
|
|
7
8
|
import { getOperationInterfaceRef } from "./OperationInterface.js";
|
|
9
|
+
import { ZodSchema, zod } from "typespec-zod";
|
|
8
10
|
/**
|
|
9
11
|
* Creates a refkey for a route registration function.
|
|
10
12
|
* This allows the loadRoutes function to reference it with automatic imports.
|
|
@@ -13,8 +15,8 @@ export function getRouteRegistrationRef(containerName) {
|
|
|
13
15
|
return refkey(containerName, "route-registration");
|
|
14
16
|
}
|
|
15
17
|
/**
|
|
16
|
-
* Generates Fastify route registration functions.
|
|
17
|
-
*
|
|
18
|
+
* Generates Fastify route registration functions with Zod schema validation.
|
|
19
|
+
* Uses fastify-type-provider-zod for automatic type inference and runtime validation.
|
|
18
20
|
*/
|
|
19
21
|
export function RouteRegistration(props) {
|
|
20
22
|
const { containerName, operations } = props;
|
|
@@ -27,6 +29,11 @@ export function RouteRegistration(props) {
|
|
|
27
29
|
{ name: "operations", type: interfaceRef },
|
|
28
30
|
]} returnType="void">
|
|
29
31
|
<List>
|
|
32
|
+
<ts.VarDeclaration name="server" const>
|
|
33
|
+
fastify.withTypeProvider{"<"}
|
|
34
|
+
{fastifyTypeProviderZod.ZodTypeProvider}
|
|
35
|
+
{">"}()
|
|
36
|
+
</ts.VarDeclaration>
|
|
30
37
|
<For each={operations} hardline>
|
|
31
38
|
{(operation) => {
|
|
32
39
|
const verb = getHttpVerb(operation);
|
|
@@ -37,35 +44,121 @@ export function RouteRegistration(props) {
|
|
|
37
44
|
optionalParams.add(param.param.name);
|
|
38
45
|
}
|
|
39
46
|
}
|
|
40
|
-
const path = rawPath.replace(/\{([^}]+)\}/g, function (
|
|
47
|
+
const path = rawPath.replace(/\{([^}]+)\}/g, function (_match, p1) {
|
|
41
48
|
const paramName = p1.startsWith("/") ? p1.slice(1) : p1;
|
|
42
49
|
const prefix = p1.startsWith("/") ? "/:" : ":";
|
|
43
50
|
const suffix = optionalParams.has(paramName) ? "?" : "";
|
|
44
51
|
return prefix + paramName + suffix;
|
|
45
52
|
});
|
|
46
53
|
const opName = namePolicy.getName(operation.operation.name, "function");
|
|
54
|
+
const routeSchema = generateZodRouteSchema(operation);
|
|
47
55
|
return (<>
|
|
48
|
-
|
|
49
|
-
<>'{path}'</>,
|
|
50
|
-
generateRouteHandler(operation, opName, namePolicy),
|
|
51
|
-
]}/>
|
|
52
|
-
{";"}
|
|
56
|
+
{code `server.${verb}('${path}', ${routeSchema}, ${generateRouteHandler(operation, opName, namePolicy)});`}
|
|
53
57
|
</>);
|
|
54
58
|
}}
|
|
55
59
|
</For>
|
|
56
60
|
</List>
|
|
57
61
|
</ts.FunctionDeclaration>);
|
|
58
62
|
}
|
|
63
|
+
function generateZodRouteSchema(operation) {
|
|
64
|
+
const schemaProps = [];
|
|
65
|
+
const pathParams = operation.parameters.parameters.filter(function (p) {
|
|
66
|
+
return p.type === "path";
|
|
67
|
+
});
|
|
68
|
+
if (pathParams.length > 0) {
|
|
69
|
+
const pathProperties = [];
|
|
70
|
+
for (let i = 0; i < pathParams.length; i++) {
|
|
71
|
+
const param = pathParams[i];
|
|
72
|
+
const paramName = param.param.name;
|
|
73
|
+
const isOptional = param.param.optional;
|
|
74
|
+
if (i > 0)
|
|
75
|
+
pathProperties.push(<>, </>);
|
|
76
|
+
if (isOptional) {
|
|
77
|
+
pathProperties.push(<>
|
|
78
|
+
{paramName}: <ZodSchema type={param.param.type}/>
|
|
79
|
+
.optional()
|
|
80
|
+
</>);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
pathProperties.push(<>
|
|
84
|
+
{paramName}: <ZodSchema type={param.param.type}/>
|
|
85
|
+
</>);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
schemaProps.push(<>
|
|
89
|
+
params: {zod.z}.object({"{"}
|
|
90
|
+
{pathProperties}
|
|
91
|
+
{"}"})
|
|
92
|
+
</>);
|
|
93
|
+
}
|
|
94
|
+
const queryParams = operation.parameters.parameters.filter(function (p) {
|
|
95
|
+
return p.type === "query";
|
|
96
|
+
});
|
|
97
|
+
if (queryParams.length > 0) {
|
|
98
|
+
if (schemaProps.length > 0)
|
|
99
|
+
schemaProps.push(<>, </>);
|
|
100
|
+
const queryProperties = [];
|
|
101
|
+
for (let i = 0; i < queryParams.length; i++) {
|
|
102
|
+
const param = queryParams[i];
|
|
103
|
+
const paramName = param.param.name;
|
|
104
|
+
const isOptional = param.param.optional;
|
|
105
|
+
if (i > 0)
|
|
106
|
+
queryProperties.push(<>, </>);
|
|
107
|
+
if (isOptional) {
|
|
108
|
+
queryProperties.push(<>
|
|
109
|
+
{paramName}: <ZodSchema type={param.param.type}/>
|
|
110
|
+
.optional()
|
|
111
|
+
</>);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
queryProperties.push(<>
|
|
115
|
+
{paramName}: <ZodSchema type={param.param.type}/>
|
|
116
|
+
</>);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
schemaProps.push(<>
|
|
120
|
+
querystring: {zod.z}.object({"{"}
|
|
121
|
+
{queryProperties}
|
|
122
|
+
{"}"})
|
|
123
|
+
</>);
|
|
124
|
+
}
|
|
125
|
+
if (operation.parameters.body) {
|
|
126
|
+
const bodyParam = operation.parameters.body;
|
|
127
|
+
const isOptional = bodyParam.property?.optional ?? false;
|
|
128
|
+
if (!isOptional) {
|
|
129
|
+
if (schemaProps.length > 0)
|
|
130
|
+
schemaProps.push(<>, </>);
|
|
131
|
+
schemaProps.push(<>
|
|
132
|
+
body: <ZodSchema type={bodyParam.type}/>
|
|
133
|
+
</>);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
if (schemaProps.length === 0) {
|
|
137
|
+
return <ts.ObjectExpression />;
|
|
138
|
+
}
|
|
139
|
+
return (<ts.ObjectExpression>
|
|
140
|
+
schema: {"{"}
|
|
141
|
+
{schemaProps}
|
|
142
|
+
{"}"}
|
|
143
|
+
</ts.ObjectExpression>);
|
|
144
|
+
}
|
|
59
145
|
function generateRouteHandler(operation, opName, namePolicy) {
|
|
60
146
|
const callArgs = [];
|
|
61
147
|
for (const param of operation.parameters.parameters) {
|
|
62
148
|
if (param.type === "path") {
|
|
63
149
|
const paramName = namePolicy.getName(param.param.name, "parameter");
|
|
64
|
-
callArgs.push(<>
|
|
150
|
+
callArgs.push(<>request.params.{paramName}</>);
|
|
65
151
|
}
|
|
66
152
|
}
|
|
67
153
|
if (operation.parameters.body) {
|
|
68
|
-
|
|
154
|
+
const bodyParam = operation.parameters.body;
|
|
155
|
+
const isOptional = bodyParam.property?.optional ?? false;
|
|
156
|
+
if (isOptional) {
|
|
157
|
+
callArgs.push(<>request.body as any</>);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
callArgs.push(<>request.body</>);
|
|
161
|
+
}
|
|
69
162
|
}
|
|
70
163
|
for (const param of operation.parameters.parameters) {
|
|
71
164
|
if (param.type === "header") {
|
|
@@ -80,13 +173,13 @@ function generateRouteHandler(operation, opName, namePolicy) {
|
|
|
80
173
|
const queryParams = operation.parameters.parameters.filter((p) => p.type === "query");
|
|
81
174
|
if (queryParams.length > 0) {
|
|
82
175
|
const optionsObj = (<ts.ObjectExpression>
|
|
83
|
-
{queryParams
|
|
176
|
+
{queryParams
|
|
177
|
+
.map(function (param, index) {
|
|
84
178
|
const paramName = namePolicy.getName(param.param.name, "object-member-data");
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
})}
|
|
179
|
+
const separator = index > 0 ? ", " : "";
|
|
180
|
+
return `${separator}${paramName}: request.query.${paramName}`;
|
|
181
|
+
})
|
|
182
|
+
.join("")}
|
|
90
183
|
</ts.ObjectExpression>);
|
|
91
184
|
callArgs.push(optionsObj);
|
|
92
185
|
}
|
|
@@ -95,10 +188,7 @@ function generateRouteHandler(operation, opName, namePolicy) {
|
|
|
95
188
|
return r.statusCodes === 204;
|
|
96
189
|
});
|
|
97
190
|
const isNoContent = isVoid || is204Response;
|
|
98
|
-
return (<ts.FunctionExpression async parameters={[
|
|
99
|
-
{ name: "request", type: fastifyLib.FastifyRequest },
|
|
100
|
-
{ name: "reply", type: fastifyLib.FastifyReply },
|
|
101
|
-
]}>
|
|
191
|
+
return (<ts.FunctionExpression async parameters={[{ name: "request" }, { name: "reply" }]}>
|
|
102
192
|
<List>
|
|
103
193
|
<>try {"{"}</>
|
|
104
194
|
<List>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteRegistration.jsx","sourceRoot":"","sources":["../../../src/components/RouteRegistration.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"RouteRegistration.jsx","sourceRoot":"","sources":["../../../src/components/RouteRegistration.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { createComponent as _$createComponent, memo as _$memo } from "@alloy-js/
|
|
|
2
2
|
import { code, For } from "@alloy-js/core";
|
|
3
3
|
import * as ts from "@alloy-js/typescript";
|
|
4
4
|
import { fastifyLib } from "../external-packages/fastify.js";
|
|
5
|
+
import { fastifyTypeProviderZod } from "../external-packages/fastify-type-provider-zod.js";
|
|
5
6
|
import { getOperationInterfaceRef } from "./OperationInterface.js";
|
|
6
7
|
/**
|
|
7
8
|
* Generates the router.ts file which creates a router registration function.
|
|
@@ -45,14 +46,12 @@ export function RouterFile(props) {
|
|
|
45
46
|
},
|
|
46
47
|
returnType: "void",
|
|
47
48
|
get children() {
|
|
48
|
-
return code`await ${_$createComponent(ts.FunctionCallExpression, {
|
|
49
|
+
return [_$memo(() => code`server.setValidatorCompiler(${fastifyTypeProviderZod.validatorCompiler});`), _$memo(() => code`server.setSerializerCompiler(${fastifyTypeProviderZod.serializerCompiler});`), _$memo(() => code`await ${_$createComponent(ts.FunctionCallExpression, {
|
|
49
50
|
get target() {
|
|
50
51
|
return props.loadRoutesRef;
|
|
51
52
|
},
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
55
|
-
})};`;
|
|
53
|
+
args: ["server", "operations"]
|
|
54
|
+
})};`)];
|
|
56
55
|
}
|
|
57
56
|
});
|
|
58
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["code","For","ts","fastifyLib","getOperationInterfaceRef","RouterFile","props","containerNames","Array","from","groupedOperations","keys","operationsType","_$createComponent","InterfaceExpression","children","each","semicolon","hardline","containerName","interfaceRef","InterfaceMember","name","toLowerCase","SourceFile","path","FunctionDeclaration","async","parameters","type","FastifyInstance","returnType","FunctionCallExpression","target","loadRoutesRef","args"],"sources":["../../../src/components/RouterFile.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,IAAI,EAAeC,GAAG,QAAQ,gBAAgB;AACvD,OAAO,KAAKC,EAAE,MAAM,sBAAsB;AAE1C,SAASC,UAAU,QAAQ,iCAAiC;AAC5D,SAASC,wBAAwB,QAAQ,yBAAyB;AAQlE;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAACC,KAAsB,EAAE;EACjD,MAAMC,cAAc,GAAGC,KAAK,CAACC,IAAI,CAACH,KAAK,CAACI,iBAAiB,CAACC,IAAI,CAAC,CAAC,CAAC;EAEjE,MAAMC,cAAc,GAAAC,iBAAA,
|
|
1
|
+
{"version":3,"names":["code","For","ts","fastifyLib","fastifyTypeProviderZod","getOperationInterfaceRef","RouterFile","props","containerNames","Array","from","groupedOperations","keys","operationsType","_$createComponent","InterfaceExpression","children","each","semicolon","hardline","containerName","interfaceRef","InterfaceMember","name","toLowerCase","SourceFile","path","FunctionDeclaration","async","parameters","type","FastifyInstance","returnType","_$memo","validatorCompiler","serializerCompiler","FunctionCallExpression","target","loadRoutesRef","args"],"sources":["../../../src/components/RouterFile.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,IAAI,EAAeC,GAAG,QAAQ,gBAAgB;AACvD,OAAO,KAAKC,EAAE,MAAM,sBAAsB;AAE1C,SAASC,UAAU,QAAQ,iCAAiC;AAC5D,SAASC,sBAAsB,QAAQ,mDAAmD;AAC1F,SAASC,wBAAwB,QAAQ,yBAAyB;AAQlE;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAACC,KAAsB,EAAE;EACjD,MAAMC,cAAc,GAAGC,KAAK,CAACC,IAAI,CAACH,KAAK,CAACI,iBAAiB,CAACC,IAAI,CAAC,CAAC,CAAC;EAEjE,MAAMC,cAAc,GAAAC,iBAAA,CACjBZ,EAAE,CAACa,mBAAmB;IAAA,IAAAC,SAAA;MAAA,OAAAF,iBAAA,CACpBb,GAAG;QAACgB,IAAI,EAAET,cAAc;QAAEU,SAAS;QAACC,QAAQ;QAAAH,QAAA,EACzCI,aAAa,IAAK;UAClB,MAAMC,YAAY,GAAGhB,wBAAwB,CAACe,aAAa,CAAC;UAC5D,OAAAN,iBAAA,CACGZ,EAAE,CAACoB,eAAe;YAAA,IAACC,IAAIA,CAAA;cAAA,OAAEH,aAAa,CAACI,WAAW,CAAC,CAAC;YAAA;YAAAR,QAAA,EAClDK;UAAY;QAGnB;MAAC;IAAA;EAAA,EAGN;EAED,OAAAP,iBAAA,CACGZ,EAAE,CAACuB,UAAU;IAACC,IAAI;IAAA,IAAAV,SAAA;MAAA,OAAAF,iBAAA,CAChBZ,EAAE,CAACyB,mBAAmB;QACrBJ,IAAI;QAAA;QAEJK,KAAK;QAAA,IACLC,UAAUA,CAAA;UAAA,OAAE,CACV;YAAEN,IAAI,EAAE,QAAQ;YAAEO,IAAI,EAAE3B,UAAU,CAAC4B;UAAgB,CAAC,EACpD;YAAER,IAAI,EAAE,YAAY;YAAEO,IAAI,EAAEjB;UAAe,CAAC,CAC7C;QAAA;QACDmB,UAAU;QAAA,IAAAhB,SAAA;UAAA,QAAAiB,MAAA,OAETjC,IAAI,+BAA+BI,sBAAsB,CAAC8B,iBAAiB,IAAI,GAAAD,MAAA,OAC/EjC,IAAI,gCAAgCI,sBAAsB,CAAC+B,kBAAkB,IAAI,GAAAF,MAAA,OACjFjC,IAAI,SAAAc,iBAAA,CACFZ,EAAE,CAACkC,sBAAsB;YAAA,IACxBC,MAAMA,CAAA;cAAA,OAAE9B,KAAK,CAAC+B,aAAa;YAAA;YAC3BC,IAAI,EAAE,CAAC,QAAQ,EAAE,YAAY;UAAC,KAE9B;QAAA;MAAA;IAAA;EAAA;AAIZ","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { code, For } from "@alloy-js/core";
|
|
2
2
|
import * as ts from "@alloy-js/typescript";
|
|
3
3
|
import { fastifyLib } from "../external-packages/fastify.js";
|
|
4
|
+
import { fastifyTypeProviderZod } from "../external-packages/fastify-type-provider-zod.js";
|
|
4
5
|
import { getOperationInterfaceRef } from "./OperationInterface.js";
|
|
5
6
|
/**
|
|
6
7
|
* Generates the router.ts file which creates a router registration function.
|
|
@@ -23,7 +24,9 @@ export function RouterFile(props) {
|
|
|
23
24
|
{ name: "server", type: fastifyLib.FastifyInstance },
|
|
24
25
|
{ name: "operations", type: operationsType },
|
|
25
26
|
]} returnType="void">
|
|
26
|
-
{code `
|
|
27
|
+
{code `server.setValidatorCompiler(${fastifyTypeProviderZod.validatorCompiler});`}
|
|
28
|
+
{code `server.setSerializerCompiler(${fastifyTypeProviderZod.serializerCompiler});`}
|
|
29
|
+
{code `await ${(<ts.FunctionCallExpression target={props.loadRoutesRef} args={["server", "operations"]}/>)};`}
|
|
27
30
|
</ts.FunctionDeclaration>
|
|
28
31
|
</ts.SourceFile>);
|
|
29
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouterFile.jsx","sourceRoot":"","sources":["../../../src/components/RouterFile.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAe,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAQnE;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;IAElE,MAAM,cAAc,GAAG,CACrB,CAAC,EAAE,CAAC,mBAAmB,CACrB;MAAA,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,QAAQ,CAC3C;QAAA,CAAC,CAAC,aAAa,EAAE,EAAE;YACjB,MAAM,YAAY,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAAC;YAC7D,OAAO,CACL,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CACpD;cAAA,CAAC,YAAY,CACf;YAAA,EAAE,EAAE,CAAC,eAAe,CAAC,CACtB,CAAC;QACJ,CAAC,CACH;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAC1B,CAAC;IAEF,OAAO,CACL,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAC7B;MAAA,CAAC,EAAE,CAAC,mBAAmB,CACrB,IAAI,CAAC,gBAAgB,CACrB,MAAM,CACN,KAAK,CACL,UAAU,CAAC,CAAC;YACV,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE;YACpD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE;SAC7C,CAAC,CACF,UAAU,CAAC,MAAM,CAEjB;QAAA,CAAC,IAAI,CAAA,SAAS,CACZ,CAAC,EAAE,CAAC,sBAAsB,CACxB,MAAM,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAC5B,IAAI,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"RouterFile.jsx","sourceRoot":"","sources":["../../../src/components/RouterFile.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAe,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mDAAmD,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAQnE;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;IAElE,MAAM,cAAc,GAAG,CACrB,CAAC,EAAE,CAAC,mBAAmB,CACrB;MAAA,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,QAAQ,CAC3C;QAAA,CAAC,CAAC,aAAa,EAAE,EAAE;YACjB,MAAM,YAAY,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAAC;YAC7D,OAAO,CACL,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CACpD;cAAA,CAAC,YAAY,CACf;YAAA,EAAE,EAAE,CAAC,eAAe,CAAC,CACtB,CAAC;QACJ,CAAC,CACH;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAC1B,CAAC;IAEF,OAAO,CACL,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAC7B;MAAA,CAAC,EAAE,CAAC,mBAAmB,CACrB,IAAI,CAAC,gBAAgB,CACrB,MAAM,CACN,KAAK,CACL,UAAU,CAAC,CAAC;YACV,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE;YACpD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE;SAC7C,CAAC,CACF,UAAU,CAAC,MAAM,CAEjB;QAAA,CAAC,IAAI,CAAA,+BAA+B,sBAAsB,CAAC,iBAAiB,IAAI,CAChF;QAAA,CAAC,IAAI,CAAA,gCAAgC,sBAAsB,CAAC,kBAAkB,IAAI,CAClF;QAAA,CAAC,IAAI,CAAA,SAAS,CACZ,CAAC,EAAE,CAAC,sBAAsB,CACxB,MAAM,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAC5B,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAC/B,CACH,GAAG,CACN;MAAA,EAAE,EAAE,CAAC,mBAAmB,CAC1B;IAAA,EAAE,EAAE,CAAC,UAAU,CAAC,CACjB,CAAC;AACJ,CAAC"}
|
|
@@ -72,14 +72,12 @@ export function RoutesDirectory(props) {
|
|
|
72
72
|
get children() {
|
|
73
73
|
return _$createComponent(For, {
|
|
74
74
|
each: containerNames,
|
|
75
|
-
children: containerName
|
|
75
|
+
children: function (containerName) {
|
|
76
76
|
const routeRegRef = getRouteRegistrationRef(containerName);
|
|
77
77
|
const containerKey = containerName.toLowerCase();
|
|
78
78
|
return ["await", " ", _$createComponent(ts.FunctionCallExpression, {
|
|
79
79
|
target: routeRegRef,
|
|
80
|
-
|
|
81
|
-
return [["server"], ["operations.", containerKey]];
|
|
82
|
-
}
|
|
80
|
+
args: ["server", `operations.${containerKey}`]
|
|
83
81
|
}), ";"];
|
|
84
82
|
}
|
|
85
83
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["For","List","SourceDirectory","ts","RouteRegistration","getRouteRegistrationRef","fastifyLib","getOperationInterfaceRef","RoutesDirectory","props","groupedOperations","loadRoutesRef","containerNames","Array","from","keys","operationsType","_$createComponent","InterfaceExpression","children","each","semicolon","hardline","containerName","interfaceRef","InterfaceMember","name","toLowerCase","path","entries","operations","SourceFile","FunctionDeclaration","refkey","async","parameters","type","FastifyInstance","returnType","routeRegRef","containerKey","FunctionCallExpression","target","args"],"sources":["../../../src/components/RoutesDirectory.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,GAAG,EAAEC,IAAI,EAAEC,eAAe,QAAqB,gBAAgB;AACxE,OAAO,KAAKC,EAAE,MAAM,sBAAsB;AAE1C,SACEC,iBAAiB,EACjBC,uBAAuB,QAClB,wBAAwB;AAC/B,SAASC,UAAU,QAAQ,iCAAiC;AAC5D,SAASC,wBAAwB,QAAQ,yBAAyB;AAOlE;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAACC,KAA2B,EAAE;EAC3D,MAAM;IAAEC,iBAAiB;IAAEC;EAAc,CAAC,GAAGF,KAAK;EAClD,MAAMG,cAAc,GAAGC,KAAK,CAACC,IAAI,CAACJ,iBAAiB,CAACK,IAAI,CAAC,CAAC,CAAC;EAE3D,MAAMC,cAAc,GAAAC,iBAAA,CACjBd,EAAE,CAACe,mBAAmB;IAAA,IAAAC,SAAA;MAAA,OAAAF,iBAAA,CACpBjB,GAAG;QAACoB,IAAI,EAAER,cAAc;QAAES,SAAS;QAACC,QAAQ;QAAAH,QAAA,EACzCI,aAAa,IAAK;UAClB,MAAMC,YAAY,GAAGjB,wBAAwB,CAACgB,aAAa,CAAC;UAC5D,OAAAN,iBAAA,CACGd,EAAE,CAACsB,eAAe;YAAA,IAACC,IAAIA,CAAA;cAAA,OAAEH,aAAa,CAACI,WAAW,CAAC,CAAC;YAAA;YAAAR,QAAA,EAClDK;UAAY;QAGnB;MAAC;IAAA;EAAA,EAGN;EAED,OAAAP,iBAAA,CACGf,eAAe;IAAC0B,IAAI;IAAA,IAAAT,SAAA;MAAA,QAAAF,iBAAA,CAClBjB,GAAG;QAAA,IAACoB,IAAIA,CAAA;UAAA,OAAEP,KAAK,CAACC,IAAI,CAACJ,iBAAiB,CAACmB,OAAO,CAAC,CAAC,CAAC;QAAA;QAAAV,QAAA,EAC/CA,CAAC,CAACI,aAAa,EAAEO,UAAU,CAAC,KAAAb,iBAAA,CAC1Bd,EAAE,CAAC4B,UAAU;UAAA,IAACH,IAAIA,CAAA;YAAA,OAAE,GAAGL,aAAa,CAACI,WAAW,CAAC,CAAC,YAAY;UAAA;UAAA,IAAAR,SAAA;YAAA,OAAAF,iBAAA,CAC5Db,iBAAiB;cAChBmB,aAAa,EAAEA,aAAa;cAC5BO,UAAU,EAAEA;YAAU;UAAA;QAAA;MAG3B,IAAAb,iBAAA,CAGFd,EAAE,CAAC4B,UAAU;QAACH,IAAI;QAAA,IAAAT,SAAA;UAAA,OAAAF,iBAAA,CAChBd,EAAE,CAAC6B,mBAAmB;YACrBN,IAAI;YAAA;YAEJO,MAAM,EAAEtB,aAAa;YACrBuB,KAAK;YAAA,IACLC,UAAUA,CAAA;cAAA,OAAE,CACV;gBAAET,IAAI,EAAE,QAAQ;gBAAEU,IAAI,EAAE9B,UAAU,CAAC+B;cAAgB,CAAC,EACpD;gBAAEX,IAAI,EAAE,YAAY;gBAAEU,IAAI,EAAEpB;cAAe,CAAC,CAC7C;YAAA;YACDsB,UAAU;YAAA,IAAAnB,SAAA;cAAA,OAAAF,iBAAA,CAEThB,IAAI;gBAAA,IAAAkB,SAAA;kBAAA,OAAAF,iBAAA,CACFjB,GAAG;oBAACoB,IAAI,EAAER,cAAc;oBAAAO,QAAA,
|
|
1
|
+
{"version":3,"names":["For","List","SourceDirectory","ts","RouteRegistration","getRouteRegistrationRef","fastifyLib","getOperationInterfaceRef","RoutesDirectory","props","groupedOperations","loadRoutesRef","containerNames","Array","from","keys","operationsType","_$createComponent","InterfaceExpression","children","each","semicolon","hardline","containerName","interfaceRef","InterfaceMember","name","toLowerCase","path","entries","operations","SourceFile","FunctionDeclaration","refkey","async","parameters","type","FastifyInstance","returnType","routeRegRef","containerKey","FunctionCallExpression","target","args"],"sources":["../../../src/components/RoutesDirectory.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,GAAG,EAAEC,IAAI,EAAEC,eAAe,QAAqB,gBAAgB;AACxE,OAAO,KAAKC,EAAE,MAAM,sBAAsB;AAE1C,SACEC,iBAAiB,EACjBC,uBAAuB,QAClB,wBAAwB;AAC/B,SAASC,UAAU,QAAQ,iCAAiC;AAC5D,SAASC,wBAAwB,QAAQ,yBAAyB;AAOlE;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAACC,KAA2B,EAAE;EAC3D,MAAM;IAAEC,iBAAiB;IAAEC;EAAc,CAAC,GAAGF,KAAK;EAClD,MAAMG,cAAc,GAAGC,KAAK,CAACC,IAAI,CAACJ,iBAAiB,CAACK,IAAI,CAAC,CAAC,CAAC;EAE3D,MAAMC,cAAc,GAAAC,iBAAA,CACjBd,EAAE,CAACe,mBAAmB;IAAA,IAAAC,SAAA;MAAA,OAAAF,iBAAA,CACpBjB,GAAG;QAACoB,IAAI,EAAER,cAAc;QAAES,SAAS;QAACC,QAAQ;QAAAH,QAAA,EACzCI,aAAa,IAAK;UAClB,MAAMC,YAAY,GAAGjB,wBAAwB,CAACgB,aAAa,CAAC;UAC5D,OAAAN,iBAAA,CACGd,EAAE,CAACsB,eAAe;YAAA,IAACC,IAAIA,CAAA;cAAA,OAAEH,aAAa,CAACI,WAAW,CAAC,CAAC;YAAA;YAAAR,QAAA,EAClDK;UAAY;QAGnB;MAAC;IAAA;EAAA,EAGN;EAED,OAAAP,iBAAA,CACGf,eAAe;IAAC0B,IAAI;IAAA,IAAAT,SAAA;MAAA,QAAAF,iBAAA,CAClBjB,GAAG;QAAA,IAACoB,IAAIA,CAAA;UAAA,OAAEP,KAAK,CAACC,IAAI,CAACJ,iBAAiB,CAACmB,OAAO,CAAC,CAAC,CAAC;QAAA;QAAAV,QAAA,EAC/CA,CAAC,CAACI,aAAa,EAAEO,UAAU,CAAC,KAAAb,iBAAA,CAC1Bd,EAAE,CAAC4B,UAAU;UAAA,IAACH,IAAIA,CAAA;YAAA,OAAE,GAAGL,aAAa,CAACI,WAAW,CAAC,CAAC,YAAY;UAAA;UAAA,IAAAR,SAAA;YAAA,OAAAF,iBAAA,CAC5Db,iBAAiB;cAChBmB,aAAa,EAAEA,aAAa;cAC5BO,UAAU,EAAEA;YAAU;UAAA;QAAA;MAG3B,IAAAb,iBAAA,CAGFd,EAAE,CAAC4B,UAAU;QAACH,IAAI;QAAA,IAAAT,SAAA;UAAA,OAAAF,iBAAA,CAChBd,EAAE,CAAC6B,mBAAmB;YACrBN,IAAI;YAAA;YAEJO,MAAM,EAAEtB,aAAa;YACrBuB,KAAK;YAAA,IACLC,UAAUA,CAAA;cAAA,OAAE,CACV;gBAAET,IAAI,EAAE,QAAQ;gBAAEU,IAAI,EAAE9B,UAAU,CAAC+B;cAAgB,CAAC,EACpD;gBAAEX,IAAI,EAAE,YAAY;gBAAEU,IAAI,EAAEpB;cAAe,CAAC,CAC7C;YAAA;YACDsB,UAAU;YAAA,IAAAnB,SAAA;cAAA,OAAAF,iBAAA,CAEThB,IAAI;gBAAA,IAAAkB,SAAA;kBAAA,OAAAF,iBAAA,CACFjB,GAAG;oBAACoB,IAAI,EAAER,cAAc;oBAAAO,QAAA,EACtB,SAAAA,CAAUI,aAAa,EAAE;sBACxB,MAAMgB,WAAW,GAAGlC,uBAAuB,CAACkB,aAAa,CAAC;sBAC1D,MAAMiB,YAAY,GAAGjB,aAAa,CAACI,WAAW,CAAC,CAAC;sBAChD,iBAEU,GAAG,EAAAV,iBAAA,CACRd,EAAE,CAACsC,sBAAsB;wBACxBC,MAAM,EAAEH,WAAW;wBACnBI,IAAI,EAAE,CAAC,QAAQ,EAAE,cAAcH,YAAY,EAAE;sBAAC;oBAKtD;kBAAC;gBAAA;cAAA;YAAA;UAAA;QAAA;MAAA;IAAA;EAAA;AAOf","ignoreList":[]}
|
|
@@ -33,13 +33,13 @@ export function RoutesDirectory(props) {
|
|
|
33
33
|
]} returnType="void">
|
|
34
34
|
<List>
|
|
35
35
|
<For each={containerNames}>
|
|
36
|
-
{(containerName)
|
|
36
|
+
{function (containerName) {
|
|
37
37
|
const routeRegRef = getRouteRegistrationRef(containerName);
|
|
38
38
|
const containerKey = containerName.toLowerCase();
|
|
39
39
|
return (<>
|
|
40
40
|
await{" "}
|
|
41
|
-
<ts.FunctionCallExpression target={routeRegRef} args={[
|
|
42
|
-
|
|
41
|
+
<ts.FunctionCallExpression target={routeRegRef} args={["server", `operations.${containerKey}`]}/>
|
|
42
|
+
;
|
|
43
43
|
</>);
|
|
44
44
|
}}
|
|
45
45
|
</For>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RoutesDirectory.jsx","sourceRoot":"","sources":["../../../src/components/RoutesDirectory.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,EAAe,MAAM,gBAAgB,CAAC;AACzE,OAAO,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3C,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAOnE;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IACnD,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;IAE5D,MAAM,cAAc,GAAG,CACrB,CAAC,EAAE,CAAC,mBAAmB,CACrB;MAAA,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,QAAQ,CAC3C;QAAA,CAAC,CAAC,aAAa,EAAE,EAAE;YACjB,MAAM,YAAY,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAAC;YAC7D,OAAO,CACL,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CACpD;cAAA,CAAC,YAAY,CACf;YAAA,EAAE,EAAE,CAAC,eAAe,CAAC,CACtB,CAAC;QACJ,CAAC,CACH;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAC1B,CAAC;IAEF,OAAO,CACL,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAC5B;MAAA,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,CACjD;QAAA,CAAC,CAAC,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAChC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,aAAa,CAAC,WAAW,EAAE,YAAY,CAAC,CAC9D;YAAA,CAAC,iBAAiB,CAChB,aAAa,CAAC,CAAC,aAAa,CAAC,CAC7B,UAAU,CAAC,CAAC,UAAU,CAAC,EAE3B;UAAA,EAAE,EAAE,CAAC,UAAU,CAAC,CACjB,CACH;MAAA,EAAE,GAAG,CAEL;;MAAA,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAC5B;QAAA,CAAC,EAAE,CAAC,mBAAmB,CACrB,IAAI,CAAC,YAAY,CACjB,MAAM,CACN,MAAM,CAAC,CAAC,aAAa,CAAC,CACtB,KAAK,CACL,UAAU,CAAC,CAAC;YACV,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,CAAC,eAAe,EAAE;YACpD,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE;SAC7C,CAAC,CACF,UAAU,CAAC,MAAM,CAEjB;UAAA,CAAC,IAAI,CACH;YAAA,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CACxB;cAAA,CAAC,
|
|
1
|
+
{"version":3,"file":"RoutesDirectory.jsx","sourceRoot":"","sources":["../../../src/components/RoutesDirectory.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Type } from "@typespec/compiler";
|
|
2
|
+
export interface ZodSchemasDirectoryProps {
|
|
3
|
+
namespace: string;
|
|
4
|
+
types: Type[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Generates Zod schemas for TypeSpec types using the typespec-zod library.
|
|
8
|
+
*/
|
|
9
|
+
export declare function ZodSchemasDirectory(props: ZodSchemasDirectoryProps): import("@alloy-js/core").Children;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { createComponent as _$createComponent } from "@alloy-js/core/jsx-runtime";
|
|
2
|
+
import { For, SourceDirectory } from "@alloy-js/core";
|
|
3
|
+
import * as ts from "@alloy-js/typescript";
|
|
4
|
+
import { ZodSchemaDeclaration } from "typespec-zod";
|
|
5
|
+
/**
|
|
6
|
+
* Generates Zod schemas for TypeSpec types using the typespec-zod library.
|
|
7
|
+
*/
|
|
8
|
+
export function ZodSchemasDirectory(props) {
|
|
9
|
+
const declarationTypes = props.types.filter(isDeclarationType);
|
|
10
|
+
return _$createComponent(SourceDirectory, {
|
|
11
|
+
path: "schemas",
|
|
12
|
+
get children() {
|
|
13
|
+
return _$createComponent(ts.SourceFile, {
|
|
14
|
+
get path() {
|
|
15
|
+
return `${props.namespace.toLowerCase()}.ts`;
|
|
16
|
+
},
|
|
17
|
+
get children() {
|
|
18
|
+
return _$createComponent(For, {
|
|
19
|
+
each: declarationTypes,
|
|
20
|
+
hardline: true,
|
|
21
|
+
children: function (type) {
|
|
22
|
+
return _$createComponent(ZodSchemaDeclaration, {
|
|
23
|
+
"export": true,
|
|
24
|
+
"const": true,
|
|
25
|
+
type: type
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
function isDeclarationType(type) {
|
|
35
|
+
return type.kind === "Model" || type.kind === "Enum" || type.kind === "Union" || type.kind === "Scalar";
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=ZodSchemasDirectory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["For","SourceDirectory","ts","ZodSchemaDeclaration","ZodSchemasDirectory","props","declarationTypes","types","filter","isDeclarationType","_$createComponent","path","children","SourceFile","namespace","toLowerCase","each","hardline","type","kind"],"sources":["../../../src/components/ZodSchemasDirectory.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,GAAG,EAAEC,eAAe,QAAQ,gBAAgB;AACrD,OAAO,KAAKC,EAAE,MAAM,sBAAsB;AAE1C,SAASC,oBAAoB,QAAQ,cAAc;AAOnD;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAACC,KAA+B,EAAE;EACnE,MAAMC,gBAAgB,GAAGD,KAAK,CAACE,KAAK,CAACC,MAAM,CAACC,iBAAiB,CAAC;EAE9D,OAAAC,iBAAA,CACGT,eAAe;IAACU,IAAI;IAAA,IAAAC,SAAA;MAAA,OAAAF,iBAAA,CAClBR,EAAE,CAACW,UAAU;QAAA,IAACF,IAAIA,CAAA;UAAA,OAAE,GAAGN,KAAK,CAACS,SAAS,CAACC,WAAW,CAAC,CAAC,KAAK;QAAA;QAAA,IAAAH,SAAA;UAAA,OAAAF,iBAAA,CACvDV,GAAG;YAACgB,IAAI,EAAEV,gBAAgB;YAAEW,QAAQ;YAAAL,QAAA,EAClC,SAAAA,CAAUM,IAAI,EAAE;cACf,OAAAR,iBAAA,CAAQP,oBAAoB;gBAAA;gBAAA;gBAAce,IAAI,EAAEA;cAAI;YACtD;UAAC;QAAA;MAAA;IAAA;EAAA;AAKX;AAOA,SAAST,iBAAiBA,CAACS,IAAU,EAA2B;EAC9D,OACEA,IAAI,CAACC,IAAI,KAAK,OAAO,IACrBD,IAAI,CAACC,IAAI,KAAK,MAAM,IACpBD,IAAI,CAACC,IAAI,KAAK,OAAO,IACrBD,IAAI,CAACC,IAAI,KAAK,QAAQ;AAE1B","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { For, SourceDirectory } from "@alloy-js/core";
|
|
2
|
+
import * as ts from "@alloy-js/typescript";
|
|
3
|
+
import { ZodSchemaDeclaration } from "typespec-zod";
|
|
4
|
+
/**
|
|
5
|
+
* Generates Zod schemas for TypeSpec types using the typespec-zod library.
|
|
6
|
+
*/
|
|
7
|
+
export function ZodSchemasDirectory(props) {
|
|
8
|
+
const declarationTypes = props.types.filter(isDeclarationType);
|
|
9
|
+
return (<SourceDirectory path="schemas">
|
|
10
|
+
<ts.SourceFile path={`${props.namespace.toLowerCase()}.ts`}>
|
|
11
|
+
<For each={declarationTypes} hardline>
|
|
12
|
+
{function (type) {
|
|
13
|
+
return <ZodSchemaDeclaration export const type={type}/>;
|
|
14
|
+
}}
|
|
15
|
+
</For>
|
|
16
|
+
</ts.SourceFile>
|
|
17
|
+
</SourceDirectory>);
|
|
18
|
+
}
|
|
19
|
+
function isDeclarationType(type) {
|
|
20
|
+
return (type.kind === "Model" ||
|
|
21
|
+
type.kind === "Enum" ||
|
|
22
|
+
type.kind === "Union" ||
|
|
23
|
+
type.kind === "Scalar");
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ZodSchemasDirectory.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZodSchemasDirectory.jsx","sourceRoot":"","sources":["../../../src/components/ZodSchemasDirectory.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAOpD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA+B;IACjE,MAAM,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAE/D,OAAO,CACL,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAC7B;MAAA,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CACzD;QAAA,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CACnC;UAAA,CAAC,UAAU,IAAI;YACb,OAAO,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAG,CAAC;QAC3D,CAAC,CACH;QAAA,EAAE,GAAG,CACP;MAAA,EAAE,EAAE,CAAC,UAAU,CACjB;IAAA,EAAE,eAAe,CAAC,CACnB,CAAC;AACJ,CAAC;AAOD,SAAS,iBAAiB,CAAC,IAAU;IACnC,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,OAAO;QACrB,IAAI,CAAC,IAAI,KAAK,MAAM;QACpB,IAAI,CAAC,IAAI,KAAK,OAAO;QACrB,IAAI,CAAC,IAAI,KAAK,QAAQ,CACvB,CAAC;AACJ,CAAC"}
|
package/dist/src/emitter.js
CHANGED
|
@@ -6,7 +6,10 @@ import { ModelsDirectory } from "./components/ModelsDirectory.js";
|
|
|
6
6
|
import { OperationsDirectory } from "./components/OperationsDirectory.js";
|
|
7
7
|
import { RouterFile } from "./components/RouterFile.js";
|
|
8
8
|
import { RoutesDirectory } from "./components/RoutesDirectory.js";
|
|
9
|
+
import { ZodSchemasDirectory } from "./components/ZodSchemasDirectory.js";
|
|
9
10
|
import { fastifyLib } from "./external-packages/fastify.js";
|
|
11
|
+
import { fastifyTypeProviderZod } from "./external-packages/fastify-type-provider-zod.js";
|
|
12
|
+
import { zod } from "typespec-zod";
|
|
10
13
|
import { getHttpOperations, groupOperationsByContainer } from "./utils/http-helpers.js";
|
|
11
14
|
import { discoverTypesFromOperations } from "./utils/type-discovery.js";
|
|
12
15
|
export async function $onEmit(context) {
|
|
@@ -22,7 +25,7 @@ export async function $onEmit(context) {
|
|
|
22
25
|
get program() {
|
|
23
26
|
return context.program;
|
|
24
27
|
},
|
|
25
|
-
externals: [fastifyLib],
|
|
28
|
+
externals: [fastifyLib, zod, fastifyTypeProviderZod],
|
|
26
29
|
get namePolicy() {
|
|
27
30
|
return createTSNamePolicy();
|
|
28
31
|
},
|
|
@@ -35,6 +38,11 @@ export async function $onEmit(context) {
|
|
|
35
38
|
return httpInfo.namespace;
|
|
36
39
|
},
|
|
37
40
|
types: allTypes
|
|
41
|
+
}), _$createComponent(ZodSchemasDirectory, {
|
|
42
|
+
get namespace() {
|
|
43
|
+
return httpInfo.namespace;
|
|
44
|
+
},
|
|
45
|
+
types: allTypes
|
|
38
46
|
}), _$createComponent(OperationsDirectory, {
|
|
39
47
|
groupedOperations: groupedOperations
|
|
40
48
|
}), _$createComponent(RoutesDirectory, {
|
package/dist/src/emitter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["refkey","SourceDirectory","createTSNamePolicy","Output","writeOutput","ModelsDirectory","OperationsDirectory","RouterFile","RoutesDirectory","fastifyLib","getHttpOperations","groupOperationsByContainer","discoverTypesFromOperations","$onEmit","context","httpInfo","program","console","warn","groupedOperations","operations","allTypes","loadRoutesRef","_$createComponent","externals","namePolicy","children","path","namespace","types","emitterOutputDir"],"sources":["../../src/emitter.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,MAAM,EAAEC,eAAe,QAAQ,gBAAgB;AACxD,SAASC,kBAAkB,QAAQ,sBAAsB;AAEzD,SAASC,MAAM,EAAEC,WAAW,QAAQ,6BAA6B;AACjE,SAASC,eAAe,QAAQ,iCAAiC;AACjE,SAASC,mBAAmB,QAAQ,qCAAqC;AACzE,SAASC,UAAU,QAAQ,4BAA4B;AACvD,SAASC,eAAe,QAAQ,iCAAiC;AACjE,SAASC,UAAU,QAAQ,gCAAgC;
|
|
1
|
+
{"version":3,"names":["refkey","SourceDirectory","createTSNamePolicy","Output","writeOutput","ModelsDirectory","OperationsDirectory","RouterFile","RoutesDirectory","ZodSchemasDirectory","fastifyLib","fastifyTypeProviderZod","zod","getHttpOperations","groupOperationsByContainer","discoverTypesFromOperations","$onEmit","context","httpInfo","program","console","warn","groupedOperations","operations","allTypes","loadRoutesRef","_$createComponent","externals","namePolicy","children","path","namespace","types","emitterOutputDir"],"sources":["../../src/emitter.tsx"],"sourcesContent":[null],"mappings":";AAAA,SAASA,MAAM,EAAEC,eAAe,QAAQ,gBAAgB;AACxD,SAASC,kBAAkB,QAAQ,sBAAsB;AAEzD,SAASC,MAAM,EAAEC,WAAW,QAAQ,6BAA6B;AACjE,SAASC,eAAe,QAAQ,iCAAiC;AACjE,SAASC,mBAAmB,QAAQ,qCAAqC;AACzE,SAASC,UAAU,QAAQ,4BAA4B;AACvD,SAASC,eAAe,QAAQ,iCAAiC;AACjE,SAASC,mBAAmB,QAAQ,qCAAqC;AACzE,SAASC,UAAU,QAAQ,gCAAgC;AAC3D,SAASC,sBAAsB,QAAQ,kDAAkD;AACzF,SAASC,GAAG,QAAQ,cAAc;AAElC,SACEC,iBAAiB,EACjBC,0BAA0B,QACrB,yBAAyB;AAChC,SAASC,2BAA2B,QAAQ,2BAA2B;AAEvE,OAAO,eAAeC,OAAOA,CAACC,OAAoC,EAAE;EAClE,MAAMC,QAAQ,GAAGL,iBAAiB,CAACI,OAAO,CAACE,OAAO,CAAC;EAEnD,IAAI,CAACD,QAAQ,EAAE;IACbE,OAAO,CAACC,IAAI,CAAC,kCAAkC,CAAC;IAChD;EACF;EAEA,MAAMC,iBAAiB,GAAGR,0BAA0B,CAACI,QAAQ,CAACK,UAAU,CAAC;EACzE,MAAMC,QAAQ,GAAGT,2BAA2B,CAC1CE,OAAO,CAACE,OAAO,EACfD,QAAQ,CAACK,UACX,CAAC;EACD,MAAME,aAAa,GAAGzB,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC;EAE1D,MAAMI,WAAW,CACfa,OAAO,CAACE,OAAO,EAAAO,iBAAA,CACdvB,MAAM;IAAA,IACLgB,OAAOA,CAAA;MAAA,OAAEF,OAAO,CAACE,OAAO;IAAA;IACxBQ,SAAS,EAAE,CAACjB,UAAU,EAAEE,GAAG,EAAED,sBAAsB,CAAC;IAAA,IACpDiB,UAAUA,CAAA;MAAA,OAAE1B,kBAAkB,CAAC,CAAC;IAAA;IAAA,IAAA2B,SAAA;MAAA,OAAAH,iBAAA,CAE/BzB,eAAe;QAAC6B,IAAI;QAAA,IAAAD,SAAA;UAAA,QAAAH,iBAAA,CAClBrB,eAAe;YAAA,IAAC0B,SAASA,CAAA;cAAA,OAAEb,QAAQ,CAACa,SAAS;YAAA;YAAEC,KAAK,EAAER;UAAQ,IAAAE,iBAAA,CAC9DjB,mBAAmB;YAAA,IAACsB,SAASA,CAAA;cAAA,OAAEb,QAAQ,CAACa,SAAS;YAAA;YAAEC,KAAK,EAAER;UAAQ,IAAAE,iBAAA,CAClEpB,mBAAmB;YAACgB,iBAAiB,EAAEA;UAAiB,IAAAI,iBAAA,CACxDlB,eAAe;YACdc,iBAAiB,EAAEA,iBAAiB;YACpCG,aAAa,EAAEA;UAAa,IAAAC,iBAAA,CAE7BnB,UAAU;YAAA,IACTwB,SAASA,CAAA;cAAA,OAAEb,QAAQ,CAACa,SAAS;YAAA;YAC7BN,aAAa,EAAEA,aAAa;YAC5BH,iBAAiB,EAAEA;UAAiB;QAAA;MAAA;IAAA;EAAA,IAI1CL,OAAO,CAACgB,gBACV,CAAC;AACH","ignoreList":[]}
|
package/dist/src/emitter.jsx
CHANGED
|
@@ -5,7 +5,10 @@ import { ModelsDirectory } from "./components/ModelsDirectory.js";
|
|
|
5
5
|
import { OperationsDirectory } from "./components/OperationsDirectory.js";
|
|
6
6
|
import { RouterFile } from "./components/RouterFile.js";
|
|
7
7
|
import { RoutesDirectory } from "./components/RoutesDirectory.js";
|
|
8
|
+
import { ZodSchemasDirectory } from "./components/ZodSchemasDirectory.js";
|
|
8
9
|
import { fastifyLib } from "./external-packages/fastify.js";
|
|
10
|
+
import { fastifyTypeProviderZod } from "./external-packages/fastify-type-provider-zod.js";
|
|
11
|
+
import { zod } from "typespec-zod";
|
|
9
12
|
import { getHttpOperations, groupOperationsByContainer, } from "./utils/http-helpers.js";
|
|
10
13
|
import { discoverTypesFromOperations } from "./utils/type-discovery.js";
|
|
11
14
|
export async function $onEmit(context) {
|
|
@@ -17,9 +20,10 @@ export async function $onEmit(context) {
|
|
|
17
20
|
const groupedOperations = groupOperationsByContainer(httpInfo.operations);
|
|
18
21
|
const allTypes = discoverTypesFromOperations(context.program, httpInfo.operations);
|
|
19
22
|
const loadRoutesRef = refkey("loadRoutes", "route-loader");
|
|
20
|
-
await writeOutput(context.program, <Output program={context.program} externals={[fastifyLib]} namePolicy={createTSNamePolicy()}>
|
|
23
|
+
await writeOutput(context.program, <Output program={context.program} externals={[fastifyLib, zod, fastifyTypeProviderZod]} namePolicy={createTSNamePolicy()}>
|
|
21
24
|
<SourceDirectory path=".">
|
|
22
25
|
<ModelsDirectory namespace={httpInfo.namespace} types={allTypes}/>
|
|
26
|
+
<ZodSchemasDirectory namespace={httpInfo.namespace} types={allTypes}/>
|
|
23
27
|
<OperationsDirectory groupedOperations={groupedOperations}/>
|
|
24
28
|
<RoutesDirectory groupedOperations={groupedOperations} loadRoutesRef={loadRoutesRef}/>
|
|
25
29
|
<RouterFile namespace={httpInfo.namespace} loadRoutesRef={loadRoutesRef} groupedOperations={groupedOperations}/>
|
package/dist/src/emitter.jsx.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.jsx","sourceRoot":"","sources":["../../src/emitter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"emitter.jsx","sourceRoot":"","sources":["../../src/emitter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAC1F,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC,OAAO,EACL,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAExE,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAoC;IAChE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,2BAA2B,CAC1C,OAAO,CAAC,OAAO,EACf,QAAQ,CAAC,UAAU,CACpB,CAAC;IACF,MAAM,aAAa,GAAG,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IAE3D,MAAM,WAAW,CACf,OAAO,CAAC,OAAO,EACf,CAAC,MAAM,CACL,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CACzB,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC,CACrD,UAAU,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAEjC;MAAA,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CACvB;QAAA,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAChE;QAAA,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EACpE;QAAA,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,EAC1D;QAAA,CAAC,eAAe,CACd,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,aAAa,CAAC,CAAC,aAAa,CAAC,EAE/B;QAAA,CAAC,UAAU,CACT,SAAS,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAC9B,aAAa,CAAC,CAAC,aAAa,CAAC,CAC7B,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,EAEzC;MAAA,EAAE,eAAe,CACnB;IAAA,EAAE,MAAM,CAAC,EACT,OAAO,CAAC,gBAAgB,CACzB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const fastifyTypeProviderZod: {
|
|
2
|
+
serializerCompiler: import("@alloy-js/core").Refkey;
|
|
3
|
+
validatorCompiler: import("@alloy-js/core").Refkey;
|
|
4
|
+
ZodTypeProvider: import("@alloy-js/core").Refkey;
|
|
5
|
+
} & {} & {} & import("@alloy-js/core").SymbolCreator & import("@alloy-js/typescript").ExternalPackage;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createPackage } from "@alloy-js/typescript";
|
|
2
|
+
export const fastifyTypeProviderZod = createPackage({
|
|
3
|
+
name: "fastify-type-provider-zod",
|
|
4
|
+
version: "^4.0.0",
|
|
5
|
+
descriptor: {
|
|
6
|
+
".": {
|
|
7
|
+
named: ["serializerCompiler", "validatorCompiler", "ZodTypeProvider"]
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=fastify-type-provider-zod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createPackage","fastifyTypeProviderZod","name","version","descriptor","named"],"sources":["../../../src/external-packages/fastify-type-provider-zod.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,aAAa,QAAQ,sBAAsB;AAEpD,OAAO,MAAMC,sBAAsB,GAAGD,aAAa,CAAC;EAClDE,IAAI,EAAE,2BAA2B;EACjCC,OAAO,EAAE,QAAQ;EACjBC,UAAU,EAAE;IACV,GAAG,EAAE;MACHC,KAAK,EAAE,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB;IACtE;EACF;AACF,CAAC,CAAC","ignoreList":[]}
|
package/dist/src/lib.d.ts
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
export
|
|
1
|
+
export interface EmitterOptions {
|
|
2
|
+
/**
|
|
3
|
+
* Schema validation library to use.
|
|
4
|
+
* Currently only "zod" is supported.
|
|
5
|
+
* @default "zod"
|
|
6
|
+
*/
|
|
7
|
+
schemaType?: "zod" | "typebox";
|
|
8
|
+
}
|
|
2
9
|
export declare const $lib: import("@typespec/compiler").TypeSpecLibrary<{
|
|
3
10
|
"http-emit-disabled": {
|
|
4
11
|
readonly default: "Cannot emit Fastify server due to errors in HTTP service definition.";
|
package/dist/src/lib.js
CHANGED
|
@@ -2,7 +2,14 @@ import { createTypeSpecLibrary } from "@typespec/compiler";
|
|
|
2
2
|
const EmitterOptionsSchema = {
|
|
3
3
|
type: "object",
|
|
4
4
|
additionalProperties: false,
|
|
5
|
-
properties: {
|
|
5
|
+
properties: {
|
|
6
|
+
schemaType: {
|
|
7
|
+
type: "string",
|
|
8
|
+
enum: ["zod", "typebox"],
|
|
9
|
+
nullable: true,
|
|
10
|
+
default: "zod"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
6
13
|
required: []
|
|
7
14
|
};
|
|
8
15
|
export const $lib = createTypeSpecLibrary({
|
package/dist/src/lib.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createTypeSpecLibrary","EmitterOptionsSchema","type","additionalProperties","properties","required","$lib","name","diagnostics","severity","messages","
|
|
1
|
+
{"version":3,"names":["createTypeSpecLibrary","EmitterOptionsSchema","type","additionalProperties","properties","schemaType","enum","nullable","default","required","$lib","name","diagnostics","severity","messages","emitter","options","reportDiagnostic","createDiagnostic"],"sources":["../../src/lib.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,qBAAqB,QAAwB,oBAAoB;AAW1E,MAAMC,oBAAoD,GAAG;EAC3DC,IAAI,EAAE,QAAQ;EACdC,oBAAoB,EAAE,KAAK;EAC3BC,UAAU,EAAE;IACVC,UAAU,EAAE;MACVH,IAAI,EAAE,QAAQ;MACdI,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;MACxBC,QAAQ,EAAE,IAAI;MACdC,OAAO,EAAE;IACX;EACF,CAAC;EACDC,QAAQ,EAAE;AACZ,CAAC;AAED,OAAO,MAAMC,IAAI,GAAGV,qBAAqB,CAAC;EACxCW,IAAI,EAAE,0BAA0B;EAChCC,WAAW,EAAE;IACX,oBAAoB,EAAE;MACpBC,QAAQ,EAAE,OAAO;MACjBC,QAAQ,EAAE;QACRN,OAAO,EACL;MACJ;IACF,CAAC;IACD,wBAAwB,EAAE;MACxBK,QAAQ,EAAE,OAAO;MACjBC,QAAQ,EAAE;QACRN,OAAO,EACL;MACJ;IACF;EACF,CAAC;EACDO,OAAO,EAAE;IACPC,OAAO,EAAEf;EACX;AACF,CAAC,CAAC;AAEF,OAAO,MAAM;EAAEgB,gBAAgB;EAAEC;AAAiB,CAAC,GAAGR,IAAI","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typespec-fastify",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/src/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -20,8 +20,22 @@
|
|
|
20
20
|
"@alloy-js/core": ">=0.20.0",
|
|
21
21
|
"@alloy-js/typescript": ">=0.20.0",
|
|
22
22
|
"@typespec/compiler": ">=1.0.0",
|
|
23
|
-
"@typespec/emitter-framework": ">=0.
|
|
24
|
-
"@typespec/http": ">=1.0.0"
|
|
23
|
+
"@typespec/emitter-framework": ">=0.15.0",
|
|
24
|
+
"@typespec/http": ">=1.0.0",
|
|
25
|
+
"fastify-type-provider-zod": ">=4.0.0",
|
|
26
|
+
"typespec-zod": ">=0.0.0-63",
|
|
27
|
+
"zod": ">=4.0.0"
|
|
28
|
+
},
|
|
29
|
+
"peerDependenciesMeta": {
|
|
30
|
+
"fastify-type-provider-zod": {
|
|
31
|
+
"optional": false
|
|
32
|
+
},
|
|
33
|
+
"zod": {
|
|
34
|
+
"optional": false
|
|
35
|
+
},
|
|
36
|
+
"typespec-zod": {
|
|
37
|
+
"optional": false
|
|
38
|
+
}
|
|
25
39
|
},
|
|
26
40
|
"files": [
|
|
27
41
|
"dist",
|
|
@@ -47,6 +61,7 @@
|
|
|
47
61
|
"@typescript-eslint/eslint-plugin": "8.53.0",
|
|
48
62
|
"@typescript-eslint/parser": "8.53.0",
|
|
49
63
|
"@typespec/compiler": "1.8.0",
|
|
64
|
+
"@typespec/emitter-framework": "0.15.0",
|
|
50
65
|
"@typespec/http-specs": "0.1.0-alpha.30",
|
|
51
66
|
"@typespec/spector": "0.1.0-alpha.22",
|
|
52
67
|
"@vitest/coverage-v8": "4.0.17",
|
|
@@ -55,10 +70,14 @@
|
|
|
55
70
|
"eslint-config-prettier": "10.1.8",
|
|
56
71
|
"eslint-plugin-prettier": "5.5.5",
|
|
57
72
|
"fastify": "5.6.2",
|
|
73
|
+
"fastify-type-provider-zod": "4.0.2",
|
|
74
|
+
"neostandard": "0.12.2",
|
|
58
75
|
"prettier": "3.7.4",
|
|
59
76
|
"typescript": "5.9.3",
|
|
60
77
|
"typescript-eslint": "8.53.0",
|
|
61
|
-
"
|
|
78
|
+
"typespec-zod": "0.0.0-63",
|
|
79
|
+
"vitest": "4.0.17",
|
|
80
|
+
"zod": "4.3.6"
|
|
62
81
|
},
|
|
63
82
|
"scripts": {
|
|
64
83
|
"build:emitter": "alloy build",
|