@codewithagents/openapi-server 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +239 -2
- package/dist/cli.cjs +292 -44
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -0
- package/dist/config.js.map +1 -1
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +6 -2
- package/dist/generator.js.map +1 -1
- package/dist/plugins/router.d.ts +13 -0
- package/dist/plugins/router.d.ts.map +1 -1
- package/dist/plugins/router.js +405 -43
- package/dist/plugins/router.js.map +1 -1
- package/dist/plugins/service.d.ts +17 -1
- package/dist/plugins/service.d.ts.map +1 -1
- package/dist/plugins/service.js +23 -4
- package/dist/plugins/service.js.map +1 -1
- package/dist/plugins/shared.d.ts +1 -1
- package/dist/plugins/shared.d.ts.map +1 -1
- package/dist/plugins/shared.js +13 -0
- package/dist/plugins/shared.js.map +1 -1
- package/package.json +1 -1
package/dist/config.d.ts
CHANGED
|
@@ -9,6 +9,15 @@ export interface ServerConfig {
|
|
|
9
9
|
framework?: 'hono' | 'express' | 'fastify' | 'none';
|
|
10
10
|
/** Path to user-owned Zod schema file (same file as openapi-zod-ts's input_schema). Optional. */
|
|
11
11
|
input_schema?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Optional TypeScript type name for a caller context threaded through every service method.
|
|
14
|
+
* When set, the generated interface becomes `XService<Ctx = never>` and each method
|
|
15
|
+
* receives a final `ctx: Ctx` argument. The generated router passes the framework's
|
|
16
|
+
* native request/context object (Hono: c, Express: req, Fastify: req) as ctx.
|
|
17
|
+
*
|
|
18
|
+
* Example: `"context_type": "RequestContext"`
|
|
19
|
+
*/
|
|
20
|
+
context_type?: string;
|
|
12
21
|
}
|
|
13
22
|
export declare function loadConfig(cwd: string, configPath?: string): Promise<ServerConfig>;
|
|
14
23
|
/**
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAA;AAEpE,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAA;IACrB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAA;IACd,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;IACnD,iGAAiG;IACjG,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAA;AAEpE,MAAM,WAAW,YAAY;IAC3B,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAA;IACrB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAA;IACd,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAA;IACnD,iGAAiG;IACjG,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAoCD,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAOxF;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAO3F"}
|
package/dist/config.js
CHANGED
|
@@ -13,10 +13,15 @@ function parseServerConfig(raw, base) {
|
|
|
13
13
|
(typeof raw['input_schema'] !== 'string' || !raw['input_schema'])) {
|
|
14
14
|
throw new Error('"input_schema" must be a non-empty string path to your Zod schema file');
|
|
15
15
|
}
|
|
16
|
+
if (raw['context_type'] !== undefined &&
|
|
17
|
+
(typeof raw['context_type'] !== 'string' || !raw['context_type'])) {
|
|
18
|
+
throw new Error('"context_type" must be a non-empty string TypeScript type name');
|
|
19
|
+
}
|
|
16
20
|
return {
|
|
17
21
|
...base,
|
|
18
22
|
framework: framework,
|
|
19
23
|
input_schema: raw['input_schema'],
|
|
24
|
+
context_type: raw['context_type'],
|
|
20
25
|
};
|
|
21
26
|
}
|
|
22
27
|
export async function loadConfig(cwd, configPath) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,CAAA;AAsBpE,SAAS,iBAAiB,CACxB,GAA4B,EAC5B,IAAqD;IAErD,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,CAAA;IAClC,IACE,SAAS,KAAK,SAAS;QACvB,SAAS,KAAK,MAAM;QACpB,SAAS,KAAK,SAAS;QACvB,SAAS,KAAK,SAAS;QACvB,SAAS,KAAK,MAAM,EACpB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAA;IACxF,CAAC;IACD,IACE,GAAG,CAAC,cAAc,CAAC,KAAK,SAAS;QACjC,CAAC,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EACjE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAA;IAC3F,CAAC;IACD,IACE,GAAG,CAAC,cAAc,CAAC,KAAK,SAAS;QACjC,CAAC,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EACjE,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;IACnF,CAAC;IACD,OAAO;QACL,GAAG,IAAI;QACP,SAAS,EAAE,SAAgE;QAC3E,YAAY,EAAE,GAAG,CAAC,cAAc,CAAuB;QACvD,YAAY,EAAE,GAAG,CAAC,cAAc,CAAuB;KACxD,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,UAAmB;IAC/D,OAAO,cAAc,CAAe;QAClC,GAAG;QACH,UAAU;QACV,eAAe,EAAE,4BAA4B;QAC7C,KAAK,EAAE,iBAAiB;KACzB,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,UAAmB;IAChE,OAAO,eAAe,CAAe;QACnC,GAAG;QACH,UAAU;QACV,eAAe,EAAE,4BAA4B;QAC7C,KAAK,EAAE,iBAAiB;KACzB,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/generator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAwGA,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI9E"}
|
package/dist/generator.js
CHANGED
|
@@ -26,9 +26,12 @@ async function generateOne(cwd, config, label) {
|
|
|
26
26
|
const prefix = label !== undefined ? `[${label}] ` : '';
|
|
27
27
|
console.log(`${prefix}Parsing spec: ${inputPath}`);
|
|
28
28
|
const spec = await parseSpec(inputPath);
|
|
29
|
-
const
|
|
29
|
+
const serviceOptions = config.context_type !== undefined ? { contextType: config.context_type } : undefined;
|
|
30
|
+
const generatedFiles = [generateService(spec, serviceOptions)];
|
|
30
31
|
if (framework !== 'none') {
|
|
31
|
-
generatedFiles.push(buildRouterFile(spec, framework
|
|
32
|
+
generatedFiles.push(buildRouterFile(spec, framework, {
|
|
33
|
+
contextType: config.context_type,
|
|
34
|
+
}));
|
|
32
35
|
}
|
|
33
36
|
console.log(`${prefix}Writing output to: ${outputDir}`);
|
|
34
37
|
await mkdir(outputDir, { recursive: true });
|
|
@@ -67,6 +70,7 @@ async function generateSchemaEnhancedRouter(cwd, config, spec, framework, output
|
|
|
67
70
|
const routerFile = buildRouterFile(spec, framework, {
|
|
68
71
|
schemaNames: exportedSchemas,
|
|
69
72
|
schemaImportPath: schemaImportPathJs,
|
|
73
|
+
contextType: config.context_type,
|
|
70
74
|
});
|
|
71
75
|
const routerPath = join(outputDir, routerFile.filename);
|
|
72
76
|
await writeFile(routerPath, await formatTs(routerFile.content, routerPath), 'utf-8');
|
package/dist/generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,WAAW,EAAqB,MAAM,aAAa,CAAA;AAC5D,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
|
package/dist/plugins/router.d.ts
CHANGED
|
@@ -3,6 +3,19 @@ import type { GeneratedFile } from 'openapi-zod-ts';
|
|
|
3
3
|
interface RouterOptions {
|
|
4
4
|
schemaNames?: Set<string>;
|
|
5
5
|
schemaImportPath?: string;
|
|
6
|
+
/**
|
|
7
|
+
* When set, matches the `contextType` from ServiceOptions. The generated router
|
|
8
|
+
* handlers extract a context value from the framework's native channel and pass
|
|
9
|
+
* it as the final argument to every service call.
|
|
10
|
+
*
|
|
11
|
+
* Framework channels used:
|
|
12
|
+
* Hono: `c` (the Hono Context object)
|
|
13
|
+
* Express: `req` (the Express Request object)
|
|
14
|
+
* Fastify: `req` (the Fastify Request object)
|
|
15
|
+
*
|
|
16
|
+
* Must match the value set in ServiceOptions so service call signatures align.
|
|
17
|
+
*/
|
|
18
|
+
contextType?: string;
|
|
6
19
|
}
|
|
7
20
|
export declare function generateExpressRouter(spec: OpenAPIV3_1.Document, options?: RouterOptions): GeneratedFile;
|
|
8
21
|
export declare function generateFastifyRouter(spec: OpenAPIV3_1.Document, options?: RouterOptions): GeneratedFile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/plugins/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/plugins/router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAiwBnD,UAAU,aAAa;IACrB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAk2BD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,WAAW,CAAC,QAAQ,EAC1B,OAAO,CAAC,EAAE,aAAa,GACtB,aAAa,CA+Cf;AAKD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,WAAW,CAAC,QAAQ,EAC1B,OAAO,CAAC,EAAE,aAAa,GACtB,aAAa,CA6Ff;AAKD,wBAAgB,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,aAAa,CA+CjG"}
|