@xemahq/api-client-generator 0.6.0 → 0.7.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-config.d.ts","sourceRoot":"","sources":["../../src/lib/service-config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAerD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IAErC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAE5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYlD;AAOD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,sBAAsB,
|
|
1
|
+
{"version":3,"file":"service-config.d.ts","sourceRoot":"","sources":["../../src/lib/service-config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAerD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IAErC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,QAAQ,CAAC,GAAG,EAAE,aAAa,CAAC;IAE5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAGD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYlD;AAOD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,sBAAsB,CA0DhF;AAeD,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,UAAU,GAClB,MAAM,CAUR;AAGD,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,UAAU,GAClB,MAAM,CAER;AAGD,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,sBAAsB,EAC3B,OAAO,EAAE,UAAU,GAClB,MAAM,CAMR;AAGD,wBAAgB,eAAe,CAC7B,GAAG,EAAE,sBAAsB,EAC3B,OAAO,EAAE,UAAU,EAWnB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAER"}
|
|
@@ -33,7 +33,10 @@ function resolveServiceContext(serviceDir) {
|
|
|
33
33
|
`block. Add: { "xema": { "api": { "serviceId": "<id>", "biomeId": ` +
|
|
34
34
|
`"<biome>", "title": "<title>" } } }.`);
|
|
35
35
|
}
|
|
36
|
-
const { serviceId, biomeId
|
|
36
|
+
const { serviceId, biomeId } = api;
|
|
37
|
+
const derived = deriveFromBiomeManifest(serviceDir, serviceId);
|
|
38
|
+
const title = api.title ?? derived.title;
|
|
39
|
+
const description = api.description ?? derived.description;
|
|
37
40
|
for (const [field, value] of Object.entries({ serviceId, biomeId, title })) {
|
|
38
41
|
if (typeof value !== 'string' || value.trim() === '') {
|
|
39
42
|
throw new Error(`api-client-generator: \`xema.api.${field}\` is required and must be a ` +
|
|
@@ -77,4 +80,36 @@ function surfaceClientDir(ctx, surface) {
|
|
|
77
80
|
function surfaceSpecPath(ctx, surface, outDir) {
|
|
78
81
|
return (0, node_path_1.join)(outDir ?? ctx.serviceDir, `openapi.${surface}.json`);
|
|
79
82
|
}
|
|
83
|
+
function deriveFromBiomeManifest(serviceDir, serviceId) {
|
|
84
|
+
const manifestPath = (0, node_path_1.join)(serviceDir, '..', '..', 'xema-biome.json');
|
|
85
|
+
if (!(0, node_fs_1.existsSync)(manifestPath)) {
|
|
86
|
+
return {};
|
|
87
|
+
}
|
|
88
|
+
let manifest;
|
|
89
|
+
try {
|
|
90
|
+
manifest = JSON.parse((0, node_fs_1.readFileSync)(manifestPath, 'utf8'));
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return {};
|
|
94
|
+
}
|
|
95
|
+
const services = (manifest.xema?.components ?? []).filter((component) => component.kind === 'service');
|
|
96
|
+
const component = services.find((c) => c.protocol?.serviceName === serviceId) ??
|
|
97
|
+
(services.length === 1 ? services[0] : undefined);
|
|
98
|
+
if (!component) {
|
|
99
|
+
return {};
|
|
100
|
+
}
|
|
101
|
+
const biomeDisplayName = typeof manifest.xema?.displayName === 'string'
|
|
102
|
+
? `${manifest.xema.displayName} API`
|
|
103
|
+
: undefined;
|
|
104
|
+
const title = typeof component.protocol?.displayName === 'string'
|
|
105
|
+
? component.protocol.displayName
|
|
106
|
+
: biomeDisplayName;
|
|
107
|
+
const description = typeof component.protocol?.description === 'string'
|
|
108
|
+
? component.protocol.description
|
|
109
|
+
: undefined;
|
|
110
|
+
return {
|
|
111
|
+
...(title === undefined ? {} : { title }),
|
|
112
|
+
...(description === undefined ? {} : { description }),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
80
115
|
//# sourceMappingURL=service-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-config.js","sourceRoot":"","sources":["../../src/lib/service-config.ts"],"names":[],"mappings":";;AAqCA,oCAYC;AAOD,
|
|
1
|
+
{"version":3,"file":"service-config.js","sourceRoot":"","sources":["../../src/lib/service-config.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xemahq/api-client-generator",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Layer 1 — the single, central OpenAPI + ORVAL client generator for every Xema NestJS service. Replaces the per-service orval.config.ts / scripts/extract-openapi.ts / scripts/build-client-index.js trio with two bins (xema-openapi, xema-client-generate). Extracts one OpenAPI document per ApiSurface (public/internal/operator) using the @XemaApiSurface decorator metadata, generates one ORVAL client package per non-empty surface (all sharing the owning service's version), and stamps deterministic `xema` provenance metadata into each generated client package.json. No heuristics: a route ships in a surface only if it (or its controller) is explicitly classified.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"xema",
|