@xemahq/api-client-generator 0.6.0 → 0.8.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/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/client-package.d.ts +1 -2
- package/dist/lib/client-package.d.ts.map +1 -1
- package/dist/lib/client-package.js +2 -29
- package/dist/lib/client-package.js.map +1 -1
- package/dist/lib/client-version.d.ts +17 -0
- package/dist/lib/client-version.d.ts.map +1 -0
- package/dist/lib/client-version.js +0 -0
- package/dist/lib/client-version.js.map +1 -0
- package/dist/lib/generate-clients.d.ts.map +1 -1
- package/dist/lib/generate-clients.js +37 -2
- package/dist/lib/generate-clients.js.map +1 -1
- package/dist/lib/service-config.d.ts.map +1 -1
- package/dist/lib/service-config.js +38 -3
- package/dist/lib/service-config.js.map +1 -1
- package/package.json +3 -2
package/dist/index.d.ts
CHANGED
|
@@ -5,5 +5,6 @@ export * from './lib/default-stubs';
|
|
|
5
5
|
export * from './lib/extract-openapi';
|
|
6
6
|
export * from './lib/repo-post-process';
|
|
7
7
|
export * from './lib/client-package';
|
|
8
|
+
export * from './lib/client-version';
|
|
8
9
|
export * from './lib/generate-clients';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -21,5 +21,6 @@ __exportStar(require("./lib/default-stubs"), exports);
|
|
|
21
21
|
__exportStar(require("./lib/extract-openapi"), exports);
|
|
22
22
|
__exportStar(require("./lib/repo-post-process"), exports);
|
|
23
23
|
__exportStar(require("./lib/client-package"), exports);
|
|
24
|
+
__exportStar(require("./lib/client-version"), exports);
|
|
24
25
|
__exportStar(require("./lib/generate-clients"), exports);
|
|
25
26
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,uDAAqC;AACrC,kDAAgC;AAChC,yDAAuC;AACvC,sDAAoC;AACpC,wDAAsC;AACtC,0DAAwC;AACxC,uDAAqC;AACrC,yDAAuC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,uDAAqC;AACrC,kDAAgC;AAChC,yDAAuC;AACvC,sDAAoC;AACpC,wDAAsC;AACtC,0DAAwC;AACxC,uDAAqC;AACrC,uDAAqC;AACrC,yDAAuC"}
|
|
@@ -9,8 +9,7 @@ export interface GeneratedClientXemaBlock {
|
|
|
9
9
|
readonly generator: string;
|
|
10
10
|
readonly source: string;
|
|
11
11
|
}
|
|
12
|
-
export declare function
|
|
13
|
-
export declare function ensureClientPackage(ctx: ResolvedServiceContext, surface: ApiSurface): {
|
|
12
|
+
export declare function ensureClientPackage(ctx: ResolvedServiceContext, surface: ApiSurface, version: string): {
|
|
14
13
|
clientDir: string;
|
|
15
14
|
clientSrc: string;
|
|
16
15
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-package.d.ts","sourceRoot":"","sources":["../../src/lib/client-package.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"client-package.d.ts","sourceRoot":"","sources":["../../src/lib/client-package.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAyCD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,sBAAsB,EAC3B,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,MAAM,GACd;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAqF1C"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.resolveMonotonicVersion = resolveMonotonicVersion;
|
|
4
3
|
exports.ensureClientPackage = ensureClientPackage;
|
|
5
4
|
const node_fs_1 = require("node:fs");
|
|
6
5
|
const node_path_1 = require("node:path");
|
|
@@ -31,33 +30,7 @@ function recordOrEmpty(value) {
|
|
|
31
30
|
? Object.fromEntries(Object.entries(value))
|
|
32
31
|
: {};
|
|
33
32
|
}
|
|
34
|
-
function
|
|
35
|
-
const m = /^(\d+)\.(\d+)\.(\d+)/.exec(v.trim());
|
|
36
|
-
return m ? [Number(m[1]), Number(m[2]), Number(m[3])] : null;
|
|
37
|
-
}
|
|
38
|
-
function resolveMonotonicVersion(existing, serviceVersion) {
|
|
39
|
-
if (typeof existing !== 'string' || existing.trim() === '') {
|
|
40
|
-
return serviceVersion;
|
|
41
|
-
}
|
|
42
|
-
const e = parseVersionCore(existing);
|
|
43
|
-
const s = parseVersionCore(serviceVersion);
|
|
44
|
-
if (!e || !s) {
|
|
45
|
-
return existing;
|
|
46
|
-
}
|
|
47
|
-
const [eMaj, eMin, ePat] = e;
|
|
48
|
-
const [sMaj, sMin, sPat] = s;
|
|
49
|
-
if (sMaj !== eMaj) {
|
|
50
|
-
return sMaj > eMaj ? serviceVersion : existing;
|
|
51
|
-
}
|
|
52
|
-
if (sMin !== eMin) {
|
|
53
|
-
return sMin > eMin ? serviceVersion : existing;
|
|
54
|
-
}
|
|
55
|
-
if (sPat !== ePat) {
|
|
56
|
-
return sPat > ePat ? serviceVersion : existing;
|
|
57
|
-
}
|
|
58
|
-
return existing;
|
|
59
|
-
}
|
|
60
|
-
function ensureClientPackage(ctx, surface) {
|
|
33
|
+
function ensureClientPackage(ctx, surface, version) {
|
|
61
34
|
const clientDir = (0, service_config_1.surfaceClientDir)(ctx, surface);
|
|
62
35
|
const clientSrc = (0, node_path_1.join)(clientDir, 'src');
|
|
63
36
|
(0, node_fs_1.mkdirSync)(clientSrc, { recursive: true });
|
|
@@ -81,7 +54,7 @@ function ensureClientPackage(ctx, surface) {
|
|
|
81
54
|
const pkg = {
|
|
82
55
|
...existing,
|
|
83
56
|
name: packageName,
|
|
84
|
-
version
|
|
57
|
+
version,
|
|
85
58
|
main: './dist/index.js',
|
|
86
59
|
types: './dist/index.d.ts',
|
|
87
60
|
files: ['dist'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-package.js","sourceRoot":"","sources":["../../src/lib/client-package.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"client-package.js","sourceRoot":"","sources":["../../src/lib/client-package.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ApiSurface } from '@xemahq/xema-decorators';
|
|
2
|
+
import { type ResolvedServiceContext } from './service-config';
|
|
3
|
+
export declare function parseVersionCore(v: string): [number, number, number] | null;
|
|
4
|
+
export declare function compareVersionCore(a: string, b: string): number;
|
|
5
|
+
export declare function bumpPatch(version: string): string;
|
|
6
|
+
export declare function resolveClientVersionBaseline(existingClientVersions: readonly string[], serviceVersion: string): string;
|
|
7
|
+
export declare function advanceClientVersionLine(args: {
|
|
8
|
+
readonly baseline: string;
|
|
9
|
+
readonly contentChanged: boolean;
|
|
10
|
+
readonly hadExistingClients: boolean;
|
|
11
|
+
}): string;
|
|
12
|
+
export declare function readExistingClientVersions(ctx: ResolvedServiceContext): {
|
|
13
|
+
surface: ApiSurface;
|
|
14
|
+
version: string;
|
|
15
|
+
}[];
|
|
16
|
+
export declare function fingerprintGeneratedOutput(clientSrc: string): string;
|
|
17
|
+
//# sourceMappingURL=client-version.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-version.d.ts","sourceRoot":"","sources":["../../src/lib/client-version.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAExE,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,kBAAkB,CAAC;AAwD1B,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAG3E;AAOD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAmB/D;AAGD,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAUjD;AASD,wBAAgB,4BAA4B,CAC1C,sBAAsB,EAAE,SAAS,MAAM,EAAE,EACzC,cAAc,EAAE,MAAM,GACrB,MAAM,CAcR;AAUD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;CACtC,GAAG,MAAM,CAGT;AAaD,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,sBAAsB,GAC1B;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAiC5C;AAcD,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAepE"}
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-version.js","sourceRoot":"","sources":["../../src/lib/client-version.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-clients.d.ts","sourceRoot":"","sources":["../../src/lib/generate-clients.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-clients.d.ts","sourceRoot":"","sources":["../../src/lib/generate-clients.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AA6OxE,wBAAsB,yBAAyB,CAC7C,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,UAAU,EAAE,CAAC,CAkGvB;AAGD,wBAAgB,oBAAoB,IAAI,IAAI,CAO3C"}
|
|
@@ -9,6 +9,7 @@ const node_url_1 = require("node:url");
|
|
|
9
9
|
const xema_decorators_1 = require("@xemahq/xema-decorators");
|
|
10
10
|
const client_package_1 = require("./client-package");
|
|
11
11
|
const client_readme_1 = require("./client-readme");
|
|
12
|
+
const client_version_1 = require("./client-version");
|
|
12
13
|
const repo_post_process_1 = require("./repo-post-process");
|
|
13
14
|
const service_config_1 = require("./service-config");
|
|
14
15
|
async function importFromService(serviceDir, request) {
|
|
@@ -77,15 +78,35 @@ function assertNoOrphanedSurfaceClients(ctx, surfacesWithSpec) {
|
|
|
77
78
|
`has. Delete the package (and its workspace consumers) or restore the ` +
|
|
78
79
|
`surface classification.`);
|
|
79
80
|
}
|
|
81
|
+
function restampClientVersion(clientDir, version) {
|
|
82
|
+
const pkgPath = (0, node_path_1.join)(clientDir, 'package.json');
|
|
83
|
+
const pkg = JSON.parse((0, node_fs_1.readFileSync)(pkgPath, 'utf8'));
|
|
84
|
+
if (pkg.version === version) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
pkg.version = version;
|
|
88
|
+
(0, node_fs_1.writeFileSync)(pkgPath, `${JSON.stringify(pkg, null, 2)}\n`, 'utf8');
|
|
89
|
+
}
|
|
80
90
|
async function generateClientsForService(serviceDir = process.cwd()) {
|
|
81
91
|
const ctx = (0, service_config_1.resolveServiceContext)(serviceDir);
|
|
82
92
|
const generate = await resolveOrvalGenerate(ctx.serviceDir);
|
|
83
93
|
const surfacesWithSpec = xema_decorators_1.ALL_SURFACES.filter((s) => (0, node_fs_1.existsSync)((0, service_config_1.surfaceSpecPath)(ctx, s)));
|
|
84
94
|
assertNoOrphanedSurfaceClients(ctx, surfacesWithSpec);
|
|
95
|
+
const existingClientVersions = (0, client_version_1.readExistingClientVersions)(ctx);
|
|
96
|
+
const baseline = (0, client_version_1.resolveClientVersionBaseline)(existingClientVersions.map((c) => c.version), ctx.version);
|
|
97
|
+
const split = new Set(existingClientVersions.map((c) => c.version));
|
|
98
|
+
if (split.size > 1) {
|
|
99
|
+
console.warn(`[xema-client-generate] ${ctx.api.serviceId}: surface clients were SPLIT across ` +
|
|
100
|
+
`${[...split].sort().join(', ')} — realigning all surfaces to ${baseline}.`);
|
|
101
|
+
}
|
|
85
102
|
const generated = [];
|
|
103
|
+
const clientDirs = new Map();
|
|
104
|
+
let contentChanged = false;
|
|
86
105
|
for (const surface of surfacesWithSpec) {
|
|
87
106
|
const specPath = (0, service_config_1.surfaceSpecPath)(ctx, surface);
|
|
88
|
-
const { clientDir, clientSrc } = (0, client_package_1.ensureClientPackage)(ctx, surface);
|
|
107
|
+
const { clientDir, clientSrc } = (0, client_package_1.ensureClientPackage)(ctx, surface, baseline);
|
|
108
|
+
clientDirs.set(surface, clientDir);
|
|
109
|
+
const fingerprintBefore = (0, client_version_1.fingerprintGeneratedOutput)(clientSrc);
|
|
89
110
|
(0, client_readme_1.ensureClientReadme)({
|
|
90
111
|
clientDir,
|
|
91
112
|
packageName: (0, service_config_1.surfaceClientPackageName)(ctx.api.serviceId, surface),
|
|
@@ -97,6 +118,9 @@ async function generateClientsForService(serviceDir = process.cwd()) {
|
|
|
97
118
|
(0, node_fs_1.rmSync)((0, node_path_1.join)(clientSrc, 'models'), { recursive: true, force: true });
|
|
98
119
|
await generate(orvalConfigFor(specPath, clientSrc));
|
|
99
120
|
(0, repo_post_process_1.postProcessClient)(ctx.repoRoot, ctx.serviceDir, clientSrc);
|
|
121
|
+
if ((0, client_version_1.fingerprintGeneratedOutput)(clientSrc) !== fingerprintBefore) {
|
|
122
|
+
contentChanged = true;
|
|
123
|
+
}
|
|
100
124
|
(0, node_fs_1.rmSync)((0, node_path_1.join)(clientDir, 'dist'), { recursive: true, force: true });
|
|
101
125
|
(0, node_child_process_1.execFileSync)('pnpm', ['exec', 'tsc', '-p', 'tsconfig.json'], {
|
|
102
126
|
cwd: clientDir,
|
|
@@ -104,7 +128,18 @@ async function generateClientsForService(serviceDir = process.cwd()) {
|
|
|
104
128
|
});
|
|
105
129
|
generated.push(surface);
|
|
106
130
|
}
|
|
107
|
-
|
|
131
|
+
const resolvedVersion = (0, client_version_1.advanceClientVersionLine)({
|
|
132
|
+
baseline,
|
|
133
|
+
contentChanged,
|
|
134
|
+
hadExistingClients: existingClientVersions.length > 0,
|
|
135
|
+
});
|
|
136
|
+
for (const surface of generated) {
|
|
137
|
+
restampClientVersion(clientDirs.get(surface), resolvedVersion);
|
|
138
|
+
}
|
|
139
|
+
console.log(`[xema-client-generate] ${ctx.api.serviceId}: generated ${generated.length} client(s) → ${generated.join(', ') || '(none)'} @ ${resolvedVersion}` +
|
|
140
|
+
(resolvedVersion === baseline
|
|
141
|
+
? ' (unchanged output — version line held)'
|
|
142
|
+
: ` (output changed — advanced from ${baseline})`));
|
|
108
143
|
return generated;
|
|
109
144
|
}
|
|
110
145
|
function runClientGenerateCli() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-clients.js","sourceRoot":"","sources":["../../src/lib/generate-clients.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"generate-clients.js","sourceRoot":"","sources":["../../src/lib/generate-clients.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;
|
|
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;IAQ5B,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 ` +
|
|
@@ -41,8 +44,8 @@ function resolveServiceContext(serviceDir) {
|
|
|
41
44
|
}
|
|
42
45
|
}
|
|
43
46
|
if (typeof pkg.version !== 'string' || pkg.version.trim() === '') {
|
|
44
|
-
throw new Error(`api-client-generator: ${pkgPath} is missing a \`version\` —
|
|
45
|
-
`
|
|
47
|
+
throw new Error(`api-client-generator: ${pkgPath} is missing a \`version\` — it is the ` +
|
|
48
|
+
`floor of this service's generated-client version line.`);
|
|
46
49
|
}
|
|
47
50
|
return {
|
|
48
51
|
serviceDir: (0, node_path_1.resolve)(serviceDir),
|
|
@@ -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":";;
|
|
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,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xemahq/api-client-generator",
|
|
3
|
-
"version": "0.
|
|
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 (
|
|
3
|
+
"version": "0.8.0",
|
|
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 (every surface of a service landing on ONE derived version — the highest its clients already carry, advanced a patch when the generated output changes), 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, and no client version is ever typed by hand.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"xema",
|
|
7
7
|
"openapi",
|
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
"build": "tsc -p tsconfig.build.json",
|
|
76
76
|
"format": "prettier --write \"src/**/*.ts\"",
|
|
77
77
|
"lint": "eslint .",
|
|
78
|
+
"test": "node --test \"tests/**/*.test.cjs\"",
|
|
78
79
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
79
80
|
}
|
|
80
81
|
}
|