@xemahq/api-client-generator 0.2.0 → 0.4.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/bin/xema-openapi.js +2 -2
- package/dist/bin/xema-openapi.js.map +1 -1
- package/dist/lib/client-package.d.ts.map +1 -1
- package/dist/lib/client-package.js +9 -4
- package/dist/lib/client-package.js.map +1 -1
- package/dist/lib/custom-fetch-template.d.ts +1 -1
- package/dist/lib/custom-fetch-template.d.ts.map +1 -1
- package/dist/lib/custom-fetch-template.js +28 -30
- package/dist/lib/custom-fetch-template.js.map +1 -1
- package/dist/lib/default-stubs.d.ts.map +1 -1
- package/dist/lib/default-stubs.js +35 -10
- package/dist/lib/default-stubs.js.map +1 -1
- package/dist/lib/extract-openapi.d.ts +2 -2
- package/dist/lib/extract-openapi.d.ts.map +1 -1
- package/dist/lib/extract-openapi.js +16 -7
- package/dist/lib/extract-openapi.js.map +1 -1
- package/dist/lib/generate-clients.d.ts +1 -1
- package/dist/lib/generate-clients.d.ts.map +1 -1
- package/dist/lib/generate-clients.js +1 -1
- package/dist/lib/generate-clients.js.map +1 -1
- package/dist/lib/overrides.d.ts.map +1 -1
- package/dist/lib/overrides.js +10 -2
- package/dist/lib/overrides.js.map +1 -1
- package/dist/lib/repo-post-process.d.ts.map +1 -1
- package/dist/lib/repo-post-process.js +2 -1
- package/dist/lib/repo-post-process.js.map +1 -1
- package/dist/lib/seed-openapi-env.d.ts.map +1 -1
- package/dist/lib/seed-openapi-env.js +0 -20
- package/dist/lib/seed-openapi-env.js.map +1 -1
- package/dist/lib/service-config.d.ts +1 -1
- package/dist/lib/service-config.d.ts.map +1 -1
- package/dist/lib/service-config.js +2 -2
- package/dist/lib/service-config.js.map +1 -1
- package/dist/lib/service-nest.d.ts.map +1 -1
- package/dist/lib/service-nest.js.map +1 -1
- package/package.json +5 -3
- package/src/bin/xema-client-generate.ts +11 -0
- package/src/bin/xema-openapi.ts +51 -0
- package/src/index.ts +9 -0
- package/src/lib/client-package.ts +215 -0
- package/src/lib/client-readme.ts +124 -0
- package/src/lib/custom-fetch-template.ts +198 -0
- package/src/lib/default-stubs.ts +422 -0
- package/src/lib/extract-openapi.ts +240 -0
- package/src/lib/generate-clients.ts +240 -0
- package/src/lib/overrides.ts +81 -0
- package/src/lib/repo-post-process.ts +106 -0
- package/src/lib/seed-openapi-env.ts +137 -0
- package/src/lib/service-config.ts +170 -0
- package/src/lib/service-nest.ts +58 -0
package/dist/bin/xema-openapi.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const node_module_1 = require("node:module");
|
|
4
5
|
const node_path_1 = require("node:path");
|
|
5
|
-
const { Module } = require('node:module');
|
|
6
6
|
function registerTsNode(cwd) {
|
|
7
7
|
const tsNode = require.resolve('ts-node', { paths: [cwd] });
|
|
8
8
|
require(tsNode).register({
|
|
@@ -19,7 +19,7 @@ function ensureNodePath() {
|
|
|
19
19
|
process.env.NODE_PATH = process.env.NODE_PATH
|
|
20
20
|
? `node_modules${node_path_1.delimiter}${process.env.NODE_PATH}`
|
|
21
21
|
: 'node_modules';
|
|
22
|
-
Module._initPaths();
|
|
22
|
+
node_module_1.Module._initPaths();
|
|
23
23
|
}
|
|
24
24
|
ensureNodePath();
|
|
25
25
|
registerTsNode(process.cwd());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xema-openapi.js","sourceRoot":"","sources":["../../src/bin/xema-openapi.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"xema-openapi.js","sourceRoot":"","sources":["../../src/bin/xema-openapi.ts"],"names":[],"mappings":";;;AAiBA,6CAAqC;AACrC,yCAAsC;AAEtC,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAE3D,OAAO,CAAC,MAAM,CAAwC,CAAC,QAAQ,CAAC;QAC/D,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3E,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;AACH,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS;QAC3C,CAAC,CAAC,eAAe,qBAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE;QACpD,CAAC,CAAC,cAAc,CAAC;IAClB,oBAAgD,CAAC,UAAU,EAAE,CAAC;AACjE,CAAC;AAED,cAAc,EAAE,CAAC;AACjB,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAI9B,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,wBAAwB,CAEzD,CAAC;AAEF,aAAa,EAAE,CAAC"}
|
|
@@ -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;
|
|
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;AA6CD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,OAAO,EACjB,cAAc,EAAE,MAAM,GACrB,MAAM,CAqBR;AASD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,sBAAsB,EAC3B,OAAO,EAAE,UAAU,GAClB;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CA+E1C"}
|
|
@@ -5,8 +5,8 @@ exports.ensureClientPackage = ensureClientPackage;
|
|
|
5
5
|
const node_fs_1 = require("node:fs");
|
|
6
6
|
const node_path_1 = require("node:path");
|
|
7
7
|
const xema_decorators_1 = require("@xemahq/xema-decorators");
|
|
8
|
-
const service_config_1 = require("./service-config");
|
|
9
8
|
const custom_fetch_template_1 = require("./custom-fetch-template");
|
|
9
|
+
const service_config_1 = require("./service-config");
|
|
10
10
|
const CLIENT_TSCONFIG = {
|
|
11
11
|
compilerOptions: {
|
|
12
12
|
target: 'ES2022',
|
|
@@ -26,6 +26,11 @@ function generatorTag() {
|
|
|
26
26
|
const pkg = require('../../package.json');
|
|
27
27
|
return `@xemahq/api-client-generator@${pkg.version}`;
|
|
28
28
|
}
|
|
29
|
+
function recordOrEmpty(value) {
|
|
30
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value)
|
|
31
|
+
? Object.fromEntries(Object.entries(value))
|
|
32
|
+
: {};
|
|
33
|
+
}
|
|
29
34
|
function parseVersionCore(v) {
|
|
30
35
|
const m = /^(\d+)\.(\d+)\.(\d+)/.exec(v.trim());
|
|
31
36
|
return m ? [Number(m[1]), Number(m[2]), Number(m[3])] : null;
|
|
@@ -70,9 +75,9 @@ function ensureClientPackage(ctx, surface) {
|
|
|
70
75
|
const existing = (0, node_fs_1.existsSync)(pkgPath)
|
|
71
76
|
? JSON.parse((0, node_fs_1.readFileSync)(pkgPath, 'utf8'))
|
|
72
77
|
: {};
|
|
73
|
-
const existingScripts = existing.scripts
|
|
74
|
-
const existingDevDeps = existing.devDependencies
|
|
75
|
-
const existingPublishConfig = existing.publishConfig
|
|
78
|
+
const existingScripts = recordOrEmpty(existing.scripts);
|
|
79
|
+
const existingDevDeps = recordOrEmpty(existing.devDependencies);
|
|
80
|
+
const existingPublishConfig = recordOrEmpty(existing.publishConfig);
|
|
76
81
|
const pkg = {
|
|
77
82
|
...existing,
|
|
78
83
|
name: packageName,
|
|
@@ -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":";;AAwEA,0DAwBC;AASD,kDAkFC;AA3LD,qCAMiB;AACjB,yCAAiC;AAEjC,6DAAqD;AAErD,mEAAiE;AACjE,qDAI0B;AAa1B,MAAM,eAAe,GAAG;IACtB,eAAe,EAAE;QACf,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,UAAU;QAClB,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;QACtB,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,IAAI;QACZ,eAAe,EAAE,IAAI;QACrB,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,IAAI;QACjB,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,OAAO;KACjB;IACD,OAAO,EAAE,CAAC,aAAa,CAAC;CACzB,CAAC;AAEF,SAAS,YAAY;IACnB,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;IACjE,OAAO,gCAAgC,GAAG,CAAC,OAAO,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAGD,SAAS,gBAAgB,CAAC,CAAS;IACjC,MAAM,CAAC,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/D,CAAC;AAYD,SAAgB,uBAAuB,CACrC,QAAiB,EACjB,cAAsB;IAEtB,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3D,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,MAAM,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC;IACjD,CAAC;IACD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC;IACjD,CAAC;IACD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC;IACjD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AASD,SAAgB,mBAAmB,CACjC,GAA2B,EAC3B,OAAmB;IAEnB,MAAM,SAAS,GAAG,IAAA,iCAAgB,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACzC,IAAA,mBAAS,EAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE1C,MAAM,WAAW,GAAG,IAAA,yCAAwB,EAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACzE,MAAM,IAAI,GAA6B;QACrC,IAAI,EAAE,YAAY;QAClB,OAAO;QACP,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS;QAC1B,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO;QACtB,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,YAAY,EAAE;QACzB,MAAM,EAAE,WAAW,OAAO,OAAO;KAClC,CAAC;IAEF,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAA,oBAAU,EAAC,OAAO,CAAC;QAClC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAA6B;QACxE,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IAChE,MAAM,qBAAqB,GAAG,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAQpE,MAAM,GAAG,GAA4B;QACnC,GAAG,QAAQ;QACX,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,uBAAuB,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC;QAC/D,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,mBAAmB;QAC1B,KAAK,EAAE,CAAC,MAAM,CAAC;QACf,OAAO,EAAE;YACP,GAAG,eAAe;YAElB,KAAK,EAAE,sBAAsB;YAC7B,cAAc,EAAE,eAAe;SAChC;QAUD,aAAa,EAAE;YACb,MAAM,EAAE,QAAQ;YAChB,GAAG,qBAAqB;YACxB,QAAQ,EAAE,6BAA6B;SACxC;QACD,eAAe,EAAE;YACf,GAAG,eAAe;YAElB,UAAU,EAAE,UAAU;SACvB;QAED,IAAI;KACL,CAAC;IACF,IAAA,uBAAa,EAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAEpE,MAAM,YAAY,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IACtD,IAAI,CAAC,IAAA,oBAAU,EAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,IAAA,uBAAa,EACX,YAAY,EACZ,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAC/C,MAAM,CACP,CAAC;IACJ,CAAC;IAED,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAElC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC;AASD,SAAS,iBAAiB,CACxB,GAA2B,EAC3B,SAAiB;IAEjB,MAAM,MAAM,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAClD,IAAI,IAAA,oBAAU,EAAC,MAAM,CAAC,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IACD,MAAM,aAAa,GAAG,IAAA,gBAAI,EACxB,IAAA,iCAAgB,EAAC,GAAG,EAAE,4BAAU,CAAC,MAAM,CAAC,EACxC,KAAK,EACL,iBAAiB,CAClB,CAAC;IACF,IAAI,IAAA,oBAAU,EAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,IAAA,gBAAM,EAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IACD,IAAA,uBAAa,EAAC,MAAM,EAAE,8CAAsB,EAAE,MAAM,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CANONICAL_CUSTOM_FETCH = "/**\n * Configurable fetch wrapper for Orval-generated clients.\n *\n * Consumers must call `configureClient()` before using any endpoint function.\n * The baseUrl is prepended to the relative paths generated by Orval.\n */\n\nexport interface ClientConfig {\n /** Static base URL (e.g. 'http://localhost:3140') \u2014 no trailing slash. */\n baseUrl?: string;\n /** Per-request base-URL resolver (service-registry-safe). */\n baseUrlResolver?: () => string | Promise<string>;\n /** Optional async callback to get an auth token. */\n getAuthToken?: () => Promise<string>;\n /** Optional callback returning headers to inject on every request. */\n getHeaders?: () => Record<string, string> | Promise<Record<string, string>>;\n /** Optional callback invoked on 401 before a single retry. */\n onUnauthorized?: () => Promise<void>;\n /** Maximum retry attempts for transient failures (default: 3). */\n maxRetries?: number;\n}\n\nexport class ClientError extends Error {\n constructor(\n public readonly status: number,\n public readonly url: string,\n public readonly body: unknown,\n ) {\n super(`HTTP ${status} from ${url}`);\n this.name = 'ClientError';\n }\n}\n\nlet clientConfig: ClientConfig | null = null;\n\nexport function configureClient(config: ClientConfig): void {\n clientConfig = config;\n}\n\nexport function getClientConfig(): ClientConfig {\n if (!clientConfig) {\n throw new Error(\n 'Client not configured. Call configureClient({ baseUrl }) before using endpoint functions.',\n );\n }\n return clientConfig;\n}\n\nconst RETRYABLE_STATUSES = [429, 502, 503, 504];\n\nasync function buildHeaders(\n config: ClientConfig,\n callerHeaders: RequestInit['headers'],\n): Promise<Headers> {\n const headers = new Headers(callerHeaders);\n if (config.getHeaders) {\n const globalHeaders = await Promise.resolve(config.getHeaders());\n for (const [key, value] of Object.entries(globalHeaders)) {\n if (!headers.has(key)) {\n headers.set(key, value);\n }\n }\n }\n if (config.getAuthToken && !headers.has('Authorization')) {\n const token = await config.getAuthToken();\n headers.set('Authorization', `Bearer ${token}`);\n }\n return headers;\n}\n\nexport const customFetch = async <T>(\n url: string,\n options: RequestInit,\n): Promise<T> => {\n const config = getClientConfig();\n const base = config.baseUrlResolver\n ? await config.baseUrlResolver()\n : config.baseUrl;\n if (base === undefined) {\n throw new Error(\n 'Client not configured: set baseUrl or baseUrlResolver via configureClient().',\n );\n }\n const fullUrl = `${base}${url}`;\n const maxRetries = config.maxRetries ?? 3;\n\n const headers = await buildHeaders(config, options.headers);\n const requestInit: RequestInit = { ...options, headers };\n\n let delay = 1000;\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n const response = await fetch(fullUrl, requestInit);\n\n if (response.status === 401 && config.onUnauthorized && attempt === 0) {\n await config.onUnauthorized();\n const refreshedHeaders = await buildHeaders(config, options.headers);\n const retryResponse = await fetch(fullUrl, { ...options, headers: refreshedHeaders });\n const retryBody = await parseBody(retryResponse);\n if (retryResponse.status >= 400) {\n throw new ClientError(retryResponse.status, fullUrl, retryBody);\n }\n return
|
|
1
|
+
export declare const CANONICAL_CUSTOM_FETCH = "/**\n * Configurable fetch wrapper for Orval-generated clients.\n *\n * Consumers must call `configureClient()` before using any endpoint function.\n * The baseUrl is prepended to the relative paths generated by Orval.\n */\n\nexport interface ClientConfig {\n /** Static base URL (e.g. 'http://localhost:3140') \u2014 no trailing slash. */\n baseUrl?: string;\n /** Per-request base-URL resolver (service-registry-safe). */\n baseUrlResolver?: () => string | Promise<string>;\n /** Optional async callback to get an auth token. */\n getAuthToken?: () => Promise<string>;\n /** Optional callback returning headers to inject on every request. */\n getHeaders?: () => Record<string, string> | Promise<Record<string, string>>;\n /** Optional callback invoked on 401 before a single retry. */\n onUnauthorized?: () => Promise<void>;\n /** Maximum retry attempts for transient failures (default: 3). */\n maxRetries?: number;\n}\n\nexport class ClientError extends Error {\n constructor(\n public readonly status: number,\n public readonly url: string,\n public readonly body: unknown,\n ) {\n super(`HTTP ${status} from ${url}`);\n this.name = 'ClientError';\n }\n}\n\nlet clientConfig: ClientConfig | null = null;\n\nexport function configureClient(config: ClientConfig): void {\n clientConfig = config;\n}\n\nexport function getClientConfig(): ClientConfig {\n if (!clientConfig) {\n throw new Error(\n 'Client not configured. Call configureClient({ baseUrl }) before using endpoint functions.',\n );\n }\n return clientConfig;\n}\n\nconst RETRYABLE_STATUSES = [429, 502, 503, 504];\n\nasync function buildHeaders(\n config: ClientConfig,\n callerHeaders: RequestInit['headers'],\n): Promise<Headers> {\n const headers = new Headers(callerHeaders);\n if (config.getHeaders) {\n const globalHeaders = await Promise.resolve(config.getHeaders());\n for (const [key, value] of Object.entries(globalHeaders)) {\n if (!headers.has(key)) {\n headers.set(key, value);\n }\n }\n }\n if (config.getAuthToken && !headers.has('Authorization')) {\n const token = await config.getAuthToken();\n headers.set('Authorization', `Bearer ${token}`);\n }\n return headers;\n}\n\nexport const customFetch = async <T>(\n url: string,\n options: RequestInit,\n): Promise<T> => {\n const config = getClientConfig();\n const base = config.baseUrlResolver\n ? await config.baseUrlResolver()\n : config.baseUrl;\n if (base === undefined) {\n throw new Error(\n 'Client not configured: set baseUrl or baseUrlResolver via configureClient().',\n );\n }\n const fullUrl = `${base}${url}`;\n const maxRetries = config.maxRetries ?? 3;\n\n const headers = await buildHeaders(config, options.headers);\n const requestInit: RequestInit = { ...options, headers };\n\n let delay = 1000;\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n try {\n const response = await fetch(fullUrl, requestInit);\n\n if (response.status === 401 && config.onUnauthorized && attempt === 0) {\n await config.onUnauthorized();\n const refreshedHeaders = await buildHeaders(config, options.headers);\n const retryResponse = await fetch(fullUrl, { ...options, headers: refreshedHeaders });\n const retryBody = await parseBody(retryResponse);\n if (retryResponse.status >= 400) {\n throw new ClientError(retryResponse.status, fullUrl, retryBody);\n }\n return retryBody as T;\n }\n\n if (!RETRYABLE_STATUSES.includes(response.status) || attempt >= maxRetries) {\n const body = await parseBody(response);\n if (response.status >= 400) {\n throw new ClientError(response.status, fullUrl, body);\n }\n return body as T;\n }\n\n const retryAfter = parseRetryAfter(response.headers.get('Retry-After'));\n const waitMs = retryAfter ?? addJitter(delay);\n await sleep(waitMs);\n delay = Math.min(delay * 2, 30_000);\n } catch (error) {\n if (error instanceof ClientError) throw error;\n lastError = error instanceof Error ? error : new Error(String(error));\n if (attempt >= maxRetries) throw lastError;\n const waitMs = addJitter(delay);\n await sleep(waitMs);\n delay = Math.min(delay * 2, 30_000);\n }\n }\n\n throw lastError ?? new Error(`All retries exhausted for ${fullUrl}`);\n};\n\n/*\n * THE TRANSPORT RETURNS THE BODY UNCHANGED. Do not reintroduce an unwrap here.\n *\n * Xema services wrap every 2xx payload in a { data: T } envelope via the global\n * ResponseEnvelopeInterceptor (platform-common), and the generator now emits\n * types that describe THAT ENVELOPE \u2014 every endpoint returns\n * Promise<XDataEnvelope> or Promise<XPaginatedEnvelope>, never a bare inner\n * T. Consumers read the data property themselves.\n *\n * This template used to peel data, justified by a comment claiming generated\n * types describe the inner T. That stopped being true when the generator moved\n * to envelope-typed returns, and the comment outlived the fact \u2014 so the peel\n * then contradicted every type in every package it seeded. Four clients shipped\n * that way (resource-governance x3, workload-runtime-api): declared\n * *DataEnvelope, returned the already-peeled inner object, so .data read\n * undefined at runtime on every non-paginated endpoint. Paginated calls hid\n * it, because the old peel deliberately preserved an envelope carrying\n * pagination.\n *\n * ensureCustomFetch seeds this template into any client that lacks a\n * transport, so a peel here is not one bug \u2014 it is re-imported into every new\n * client generated from now on, which is exactly how those four were born after\n * the hand-fix of their siblings.\n *\n * Enforced fleet-wide by check-client-transport-envelope in xema-base, which\n * reads the RETURN SITES rather than banning a name \u2014 a rename, an inline\n * .data, or ?? body.data all walk past a string ban.\n */\n\nasync function parseBody(response: Response): Promise<unknown> {\n const contentType = response.headers.get('content-type');\n if (contentType?.includes('application/json')) {\n return response.json();\n }\n if (response.status === 204) {\n return undefined;\n }\n return response.text();\n}\n\nfunction parseRetryAfter(value: string | null): number | undefined {\n if (!value) return undefined;\n const seconds = Number(value);\n if (!isNaN(seconds) && seconds >= 0) return seconds * 1000;\n const date = new Date(value);\n if (!isNaN(date.getTime())) return Math.max(0, date.getTime() - Date.now());\n return undefined;\n}\n\nfunction addJitter(delay: number): number {\n return delay + (Math.random() * 2 - 1) * delay * 0.25;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nexport default customFetch;\n";
|
|
2
2
|
//# sourceMappingURL=custom-fetch-template.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-fetch-template.d.ts","sourceRoot":"","sources":["../../src/lib/custom-fetch-template.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"custom-fetch-template.d.ts","sourceRoot":"","sources":["../../src/lib/custom-fetch-template.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,sBAAsB,6yNA8LlC,CAAC"}
|
|
@@ -105,7 +105,7 @@ export const customFetch = async <T>(
|
|
|
105
105
|
if (retryResponse.status >= 400) {
|
|
106
106
|
throw new ClientError(retryResponse.status, fullUrl, retryBody);
|
|
107
107
|
}
|
|
108
|
-
return
|
|
108
|
+
return retryBody as T;
|
|
109
109
|
}
|
|
110
110
|
|
|
111
111
|
if (!RETRYABLE_STATUSES.includes(response.status) || attempt >= maxRetries) {
|
|
@@ -113,7 +113,7 @@ export const customFetch = async <T>(
|
|
|
113
113
|
if (response.status >= 400) {
|
|
114
114
|
throw new ClientError(response.status, fullUrl, body);
|
|
115
115
|
}
|
|
116
|
-
return
|
|
116
|
+
return body as T;
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
const retryAfter = parseRetryAfter(response.headers.get('Retry-After'));
|
|
@@ -133,36 +133,34 @@ export const customFetch = async <T>(
|
|
|
133
133
|
throw lastError ?? new Error(\`All retries exhausted for \${fullUrl}\`);
|
|
134
134
|
};
|
|
135
135
|
|
|
136
|
-
|
|
137
|
-
*
|
|
138
|
-
* the global ResponseEnvelopeInterceptor (platform-common). Generated types
|
|
139
|
-
* describe the INNER T (controllers declare their return type as T, not
|
|
140
|
-
* { data: T }), so the client must peel data to keep the static types and the
|
|
141
|
-
* wire shape consistent — otherwise consumers read fields off the envelope and
|
|
142
|
-
* get undefined.
|
|
136
|
+
/*
|
|
137
|
+
* THE TRANSPORT RETURNS THE BODY UNCHANGED. Do not reintroduce an unwrap here.
|
|
143
138
|
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
139
|
+
* Xema services wrap every 2xx payload in a { data: T } envelope via the global
|
|
140
|
+
* ResponseEnvelopeInterceptor (platform-common), and the generator now emits
|
|
141
|
+
* types that describe THAT ENVELOPE — every endpoint returns
|
|
142
|
+
* Promise<XDataEnvelope> or Promise<XPaginatedEnvelope>, never a bare inner
|
|
143
|
+
* T. Consumers read the data property themselves.
|
|
144
|
+
*
|
|
145
|
+
* This template used to peel data, justified by a comment claiming generated
|
|
146
|
+
* types describe the inner T. That stopped being true when the generator moved
|
|
147
|
+
* to envelope-typed returns, and the comment outlived the fact — so the peel
|
|
148
|
+
* then contradicted every type in every package it seeded. Four clients shipped
|
|
149
|
+
* that way (resource-governance x3, workload-runtime-api): declared
|
|
150
|
+
* *DataEnvelope, returned the already-peeled inner object, so .data read
|
|
151
|
+
* undefined at runtime on every non-paginated endpoint. Paginated calls hid
|
|
152
|
+
* it, because the old peel deliberately preserved an envelope carrying
|
|
153
|
+
* pagination.
|
|
154
|
+
*
|
|
155
|
+
* ensureCustomFetch seeds this template into any client that lacks a
|
|
156
|
+
* transport, so a peel here is not one bug — it is re-imported into every new
|
|
157
|
+
* client generated from now on, which is exactly how those four were born after
|
|
158
|
+
* the hand-fix of their siblings.
|
|
159
|
+
*
|
|
160
|
+
* Enforced fleet-wide by check-client-transport-envelope in xema-base, which
|
|
161
|
+
* reads the RETURN SITES rather than banning a name — a rename, an inline
|
|
162
|
+
* .data, or ?? body.data all walk past a string ban.
|
|
150
163
|
*/
|
|
151
|
-
function unwrapEnvelope(body: unknown): unknown {
|
|
152
|
-
if (
|
|
153
|
-
body === null ||
|
|
154
|
-
typeof body !== 'object' ||
|
|
155
|
-
Array.isArray(body) ||
|
|
156
|
-
!('data' in body)
|
|
157
|
-
) {
|
|
158
|
-
return body;
|
|
159
|
-
}
|
|
160
|
-
const envelope = body as { data: unknown; pagination?: unknown };
|
|
161
|
-
if ('pagination' in envelope) {
|
|
162
|
-
return envelope;
|
|
163
|
-
}
|
|
164
|
-
return envelope.data;
|
|
165
|
-
}
|
|
166
164
|
|
|
167
165
|
async function parseBody(response: Response): Promise<unknown> {
|
|
168
166
|
const contentType = response.headers.get('content-type');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-fetch-template.js","sourceRoot":"","sources":["../../src/lib/custom-fetch-template.ts"],"names":[],"mappings":";;;AAOa,QAAA,sBAAsB,GAAG
|
|
1
|
+
{"version":3,"file":"custom-fetch-template.js","sourceRoot":"","sources":["../../src/lib/custom-fetch-template.ts"],"names":[],"mappings":";;;AAOa,QAAA,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8LrC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-stubs.d.ts","sourceRoot":"","sources":["../../src/lib/default-stubs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"default-stubs.d.ts","sourceRoot":"","sources":["../../src/lib/default-stubs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAsL5D,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,oBAAoB,EAC7B,UAAU,EAAE,MAAM,GACjB,oBAAoB,CA6JtB"}
|
|
@@ -21,25 +21,46 @@ function readServiceName(serviceDir) {
|
|
|
21
21
|
}
|
|
22
22
|
catch {
|
|
23
23
|
}
|
|
24
|
-
return (0, node_path_1.dirname)((0, node_path_1.join)(serviceDir, 'x')).split(/[\\/]/).pop() ?? 'openapi-service';
|
|
24
|
+
return ((0, node_path_1.dirname)((0, node_path_1.join)(serviceDir, 'x')).split(/[\\/]/).pop() ?? 'openapi-service');
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
const CLIENT_ACCESSORS = new Set(['asSystem', 'forOrg']);
|
|
27
|
+
function readGeneratedModels(serviceDir) {
|
|
28
|
+
const client = tryResolveExport(serviceDir, '@prisma/client', 'Prisma');
|
|
29
|
+
const models = client?.dmmf?.datamodel?.models;
|
|
30
|
+
if (models === undefined) {
|
|
31
|
+
throw new Error(`[openapi-stubs] ${serviceDir} has a PrismaService but its generated ` +
|
|
32
|
+
`Prisma client exposes no dmmf datamodel. Run \`pnpm prisma:generate\` ` +
|
|
33
|
+
`in that service before extracting — the extraction cannot fabricate a ` +
|
|
34
|
+
`schema, and a service using OrgErasureModule asserts against it at boot.`);
|
|
35
|
+
}
|
|
36
|
+
return Object.fromEntries(models.map((model) => [model.name, model]));
|
|
37
|
+
}
|
|
38
|
+
function createPrismaStub(serviceDir) {
|
|
39
|
+
const runtimeDataModel = { models: readGeneratedModels(serviceDir) };
|
|
27
40
|
const handler = {
|
|
28
41
|
get: (_t, prop) => {
|
|
29
|
-
if (prop === 'then')
|
|
42
|
+
if (prop === 'then') {
|
|
30
43
|
return undefined;
|
|
44
|
+
}
|
|
45
|
+
if (prop === '_runtimeDataModel') {
|
|
46
|
+
return runtimeDataModel;
|
|
47
|
+
}
|
|
31
48
|
if (prop === '$connect' || prop === '$disconnect' || prop === '$on') {
|
|
32
49
|
return () => Promise.resolve();
|
|
33
50
|
}
|
|
34
|
-
|
|
51
|
+
if (typeof prop === 'string' && CLIENT_ACCESSORS.has(prop)) {
|
|
52
|
+
return () => stub;
|
|
53
|
+
}
|
|
54
|
+
return new Proxy(() => Promise.resolve([]), handler);
|
|
35
55
|
},
|
|
36
56
|
apply: () => Promise.resolve([]),
|
|
37
57
|
};
|
|
38
|
-
|
|
58
|
+
const stub = new Proxy({}, handler);
|
|
59
|
+
return stub;
|
|
39
60
|
}
|
|
40
61
|
const IDENTITY_STUB = {
|
|
41
|
-
waitForReady:
|
|
42
|
-
getAccessToken:
|
|
62
|
+
waitForReady: () => Promise.resolve(true),
|
|
63
|
+
getAccessToken: () => Promise.resolve('dummy-token'),
|
|
43
64
|
getKeycloakBaseUrl: () => 'http://localhost:8180',
|
|
44
65
|
getAllowedRealms: () => ['master'],
|
|
45
66
|
getClientId: () => 'openapi-extraction',
|
|
@@ -48,7 +69,7 @@ const EVENT_HUB_BOOTSTRAP_STUB = {
|
|
|
48
69
|
onModuleInit: async () => { },
|
|
49
70
|
onModuleDestroy: async () => { },
|
|
50
71
|
isEventHubRegistered: () => true,
|
|
51
|
-
waitForRegistration:
|
|
72
|
+
waitForRegistration: () => Promise.resolve(true),
|
|
52
73
|
};
|
|
53
74
|
const EVENT_HUB_CLIENT_STUB = {
|
|
54
75
|
getAuthInfo: () => ({
|
|
@@ -65,7 +86,9 @@ const FOREIGN_CORE_INJECTORS = [
|
|
|
65
86
|
function applyDefaultOpenApiStubs(builder, serviceDir) {
|
|
66
87
|
const PrismaService = tryResolveExport(serviceDir, (0, node_path_1.join)(serviceDir, 'src', 'prisma', 'prisma.service'), 'PrismaService');
|
|
67
88
|
if (PrismaService) {
|
|
68
|
-
builder
|
|
89
|
+
builder
|
|
90
|
+
.overrideProvider(PrismaService)
|
|
91
|
+
.useValue(createPrismaStub(serviceDir));
|
|
69
92
|
}
|
|
70
93
|
const IdentityBootstrapService = tryResolveExport(serviceDir, '@xemahq/identity-client', 'IdentityBootstrapService');
|
|
71
94
|
if (IdentityBootstrapService) {
|
|
@@ -120,7 +143,9 @@ function applyDefaultOpenApiStubs(builder, serviceDir) {
|
|
|
120
143
|
const DiscoveryService = tryResolveExport(root, '@nestjs/core', 'DiscoveryService');
|
|
121
144
|
if (DiscoveryService && !seenDiscovery.has(DiscoveryService)) {
|
|
122
145
|
seenDiscovery.add(DiscoveryService);
|
|
123
|
-
builder
|
|
146
|
+
builder
|
|
147
|
+
.overrideProvider(DiscoveryService)
|
|
148
|
+
.useValue(discoveryStub);
|
|
124
149
|
}
|
|
125
150
|
}
|
|
126
151
|
const SERVICE_REGISTRY_TOKEN = tryResolveExport(serviceDir, '@xemahq/service-registry-nest', 'SERVICE_REGISTRY_TOKEN');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-stubs.js","sourceRoot":"","sources":["../../src/lib/default-stubs.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"default-stubs.js","sourceRoot":"","sources":["../../src/lib/default-stubs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiSurface } from '@xemahq/xema-decorators';
|
|
2
|
-
export declare function extractOpenApiForService(serviceDir?: string): Promise<ApiSurface[]>;
|
|
1
|
+
import { type ApiSurface } from '@xemahq/xema-decorators';
|
|
2
|
+
export declare function extractOpenApiForService(serviceDir?: string, outDir?: string): Promise<ApiSurface[]>;
|
|
3
3
|
export declare function runOpenApiCli(): void;
|
|
4
4
|
//# sourceMappingURL=extract-openapi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract-openapi.d.ts","sourceRoot":"","sources":["../../src/lib/extract-openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"extract-openapi.d.ts","sourceRoot":"","sources":["../../src/lib/extract-openapi.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,UAAU,EAQhB,MAAM,yBAAyB,CAAC;AAwDjC,wBAAsB,wBAAwB,CAC5C,UAAU,GAAE,MAAsB,EAOlC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,EAAE,CAAC,CA6IvB;AAGD,wBAAgB,aAAa,IAAI,IAAI,CAiBpC"}
|
|
@@ -8,8 +8,8 @@ const xema_decorators_1 = require("@xemahq/xema-decorators");
|
|
|
8
8
|
const default_stubs_1 = require("./default-stubs");
|
|
9
9
|
const overrides_1 = require("./overrides");
|
|
10
10
|
const seed_openapi_env_1 = require("./seed-openapi-env");
|
|
11
|
-
const service_nest_1 = require("./service-nest");
|
|
12
11
|
const service_config_1 = require("./service-config");
|
|
12
|
+
const service_nest_1 = require("./service-nest");
|
|
13
13
|
async function buildApp(ctx, nest) {
|
|
14
14
|
const appModuleMod = require((0, node_path_1.join)(ctx.serviceDir, 'src', 'app.module'));
|
|
15
15
|
if (!appModuleMod.AppModule) {
|
|
@@ -27,14 +27,15 @@ async function buildApp(ctx, nest) {
|
|
|
27
27
|
const moduleRef = await builder.compile();
|
|
28
28
|
return moduleRef.createNestApplication();
|
|
29
29
|
}
|
|
30
|
-
async function extractOpenApiForService(serviceDir = process.cwd()) {
|
|
30
|
+
async function extractOpenApiForService(serviceDir = process.cwd(), outDir) {
|
|
31
31
|
const ctx = (0, service_config_1.resolveServiceContext)(serviceDir);
|
|
32
32
|
(0, seed_openapi_env_1.seedOpenApiEnv)(ctx.api.serviceId);
|
|
33
33
|
const overrides = (0, overrides_1.loadServiceOverrides)(ctx.serviceDir);
|
|
34
34
|
if (overrides?.env) {
|
|
35
35
|
for (const [k, v] of Object.entries(overrides.env)) {
|
|
36
|
-
if (process.env[k] === undefined)
|
|
36
|
+
if (process.env[k] === undefined) {
|
|
37
37
|
process.env[k] = v;
|
|
38
|
+
}
|
|
38
39
|
}
|
|
39
40
|
}
|
|
40
41
|
const nest = (0, service_nest_1.loadServiceNest)(ctx.serviceDir);
|
|
@@ -80,15 +81,17 @@ async function extractOpenApiForService(serviceDir = process.cwd()) {
|
|
|
80
81
|
const keep = new Set([...scan.surfaces.entries()]
|
|
81
82
|
.filter(([, s]) => s === surface)
|
|
82
83
|
.map(([id]) => id));
|
|
83
|
-
const specPath = (0, service_config_1.surfaceSpecPath)(ctx, surface);
|
|
84
|
+
const specPath = (0, service_config_1.surfaceSpecPath)(ctx, surface, outDir);
|
|
84
85
|
const { doc, pathCount } = (0, xema_decorators_1.pruneSpecForSurface)(fullDoc, keep);
|
|
85
86
|
if (pathCount === 0) {
|
|
86
|
-
if ((0, node_fs_1.existsSync)(specPath))
|
|
87
|
+
if ((0, node_fs_1.existsSync)(specPath)) {
|
|
87
88
|
(0, node_fs_1.rmSync)(specPath);
|
|
89
|
+
}
|
|
88
90
|
continue;
|
|
89
91
|
}
|
|
90
|
-
for (const id of (0, xema_decorators_1.collectOperationIds)(doc))
|
|
92
|
+
for (const id of (0, xema_decorators_1.collectOperationIds)(doc)) {
|
|
91
93
|
emitted.add(id);
|
|
94
|
+
}
|
|
92
95
|
(0, node_fs_1.writeFileSync)(specPath, `${JSON.stringify(doc, null, 2)}\n`, 'utf8');
|
|
93
96
|
written.push(surface);
|
|
94
97
|
}
|
|
@@ -111,7 +114,13 @@ async function extractOpenApiForService(serviceDir = process.cwd()) {
|
|
|
111
114
|
}
|
|
112
115
|
}
|
|
113
116
|
function runOpenApiCli() {
|
|
114
|
-
|
|
117
|
+
const flagIndex = process.argv.indexOf('--out-dir');
|
|
118
|
+
if (flagIndex !== -1 && process.argv[flagIndex + 1] === undefined) {
|
|
119
|
+
console.error('[xema-openapi] --out-dir requires a path');
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
const outDir = flagIndex === -1 ? undefined : process.argv[flagIndex + 1];
|
|
123
|
+
extractOpenApiForService(process.cwd(), outDir)
|
|
115
124
|
.then(() => process.exit(0))
|
|
116
125
|
.catch((err) => {
|
|
117
126
|
console.error('[xema-openapi] extraction failed:', err);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract-openapi.js","sourceRoot":"","sources":["../../src/lib/extract-openapi.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"extract-openapi.js","sourceRoot":"","sources":["../../src/lib/extract-openapi.ts"],"names":[],"mappings":";;AAqEA,4DAsJC;AAGD,sCAiBC;AA/OD,qCAA4D;AAC5D,yCAAiC;AAEjC,6DAUiC;AAEjC,mDAA2D;AAC3D,2CAAmD;AACnD,yDAAoD;AACpD,qDAI0B;AAC1B,iDAAmE;AAInE,KAAK,UAAU,QAAQ,CACrB,GAA2B,EAC3B,IAAiB;IAKjB,MAAM,YAAY,GAAG,OAAO,CAAC,IAAA,gBAAI,EAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,CAErE,CAAC;IACF,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAA,gBAAI,EAAC,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,YAAY;YACzE,uBAAuB,CAC1B,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC;QAC1C,OAAO,EAAE,CAAC,YAAY,CAAC,SAAkB,CAAC;KAC3C,CAAC,CAAC;IACH,OAAO,GAAG,IAAA,wCAAwB,EAAC,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,IAAA,gCAAoB,EAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvD,IAAI,SAAS,EAAE,cAAc,EAAE,CAAC;QAC9B,OAAO,GAAG,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;IACzD,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IAG1C,OAAO,SAAS,CAAC,qBAAqB,EAAE,CAAC;AAC3C,CAAC;AAcM,KAAK,UAAU,wBAAwB,CAC5C,aAAqB,OAAO,CAAC,GAAG,EAAE,EAOlC,MAAe;IAMf,MAAM,GAAG,GAAG,IAAA,sCAAqB,EAAC,UAAU,CAAC,CAAC;IAC9C,IAAA,iCAAc,EAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAClC,MAAM,SAAS,GAAG,IAAA,gCAAoB,EAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACvD,IAAI,SAAS,EAAE,GAAG,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACnD,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,IAAA,8BAAe,EAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE;aACvC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;aACvB,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC;aACvB,aAAa,EAAE,CAAC;QACnB,IAAI,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE;YACtE,kBAAkB,EAAE,CAAC,aAAqB,EAAE,SAAiB,EAAE,EAAE,CAC/D,GAAG,aAAa,IAAI,SAAS,EAAE;SAClC,CAA0B,CAAC;QAM5B,MAAM,gBAAgB,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3E,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAC9D,MAAM,eAAe,GAAG,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACnD,MAAM,IAAI,GAAG,IAAA,iCAAe,EAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QAMzD,MAAM,MAAM,GAAG,IAAA,qCAAmB,EAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACvD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAC1B,CAAC;QACF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,IAAA,8CAA4B,EAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE;gBAC9C,YAAY,EAAE,iBAAiB;aAChC,CAAC,CAAC;QACL,CAAC;QAID,MAAM,IAAI,GAAG,IAAI,GAAG,CAAS;YAC3B,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YACvB,GAAG,IAAI,CAAC,QAAQ;YAChB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;SAC/C,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,yBAAyB,GAAG,CAAC,GAAG,CAAC,SAAS,QAAQ,WAAW,CAAC,MAAM,GAAG;gBACrE,kDAAkD;gBAClD,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,2CAA2C;gBACrE,iDAAiD,CACpD,CAAC;QACJ,CAAC;QAcD,MAAM,QAAQ,GAAG,IAAA,sCAAoB,EAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAEjE,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,KAAK,MAAM,OAAO,IAAI,8BAAY,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,GAAG,CAClB,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;iBACzB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC;iBAChC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CACrB,CAAC;YACF,MAAM,QAAQ,GAAG,IAAA,gCAAe,EAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACvD,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,IAAA,qCAAmB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC9D,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;gBAEpB,IAAI,IAAA,oBAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;oBACzB,IAAA,gBAAM,EAAC,QAAQ,CAAC,CAAC;gBACnB,CAAC;gBACD,SAAS;YACX,CAAC;YACD,KAAK,MAAM,EAAE,IAAI,IAAA,qCAAmB,EAAC,GAAG,CAAC,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;YACD,IAAA,uBAAa,EAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAQD,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CACjC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CACxD,CAAC;QACF,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,yBAAyB,GAAG,CAAC,GAAG,CAAC,SAAS,cAAc;gBACtD,GAAG,QAAQ,CAAC,MAAM,uCAAuC;gBACzD,GAAG,OAAO,CAAC,IAAI,MAAM,IAAI,CAAC,MAAM,sCAAsC;gBACtE,yCAAyC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS;gBACjE,oEAAoE;gBACpE,SAAS,CACZ,CAAC;QACJ,CAAC;QAGD,OAAO,CAAC,GAAG,CACT,kBAAkB,GAAG,CAAC,GAAG,CAAC,SAAS,WACjC,OAAO,CAAC,MACV,sBAAsB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG;YACrD,IAAI,IAAA,8CAA4B,EAAC,QAAQ,CAAC,GAAG,CAChD,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;YAAS,CAAC;QACT,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAGD,SAAgB,aAAa;IAI3B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACpD,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAClE,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAE1E,wBAAwB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC;SAC5C,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC3B,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;QACtB,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiSurface } from '@xemahq/xema-decorators';
|
|
1
|
+
import { type ApiSurface } from '@xemahq/xema-decorators';
|
|
2
2
|
export declare function generateClientsForService(serviceDir?: string): Promise<ApiSurface[]>;
|
|
3
3
|
export declare function runClientGenerateCli(): void;
|
|
4
4
|
//# sourceMappingURL=generate-clients.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-clients.d.ts","sourceRoot":"","sources":["../../src/lib/generate-clients.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgB,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;AAyKxE,wBAAsB,yBAAyB,CAC7C,UAAU,GAAE,MAAsB,GACjC,OAAO,CAAC,UAAU,EAAE,CAAC,CAqDvB;AAGD,wBAAgB,oBAAoB,IAAI,IAAI,CAO3C"}
|
|
@@ -19,7 +19,7 @@ async function importFromService(serviceDir, request) {
|
|
|
19
19
|
async function resolveOrvalGenerate(serviceDir) {
|
|
20
20
|
const mod = await importFromService(serviceDir, 'orval');
|
|
21
21
|
const generate = mod.generate ??
|
|
22
|
-
|
|
22
|
+
mod.default?.generate;
|
|
23
23
|
if (typeof generate !== 'function') {
|
|
24
24
|
throw new Error('api-client-generator: could not resolve orval `generate` from the service.');
|
|
25
25
|
}
|
|
@@ -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":"overrides.d.ts","sourceRoot":"","sources":["../../src/lib/overrides.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAiB5D,MAAM,WAAW,gBAAgB;IAE/B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAMtC,QAAQ,CAAC,cAAc,CAAC,EAAE,CACxB,OAAO,EAAE,oBAAoB,KAC1B,oBAAoB,GAAG,IAAI,CAAC;CAClC;AASD,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,GACjB,gBAAgB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"overrides.d.ts","sourceRoot":"","sources":["../../src/lib/overrides.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAiB5D,MAAM,WAAW,gBAAgB;IAE/B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAMtC,QAAQ,CAAC,cAAc,CAAC,EAAE,CACxB,OAAO,EAAE,oBAAoB,KAC1B,oBAAoB,GAAG,IAAI,CAAC;CAClC;AASD,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,GACjB,gBAAgB,GAAG,SAAS,CAsC9B"}
|
package/dist/lib/overrides.js
CHANGED
|
@@ -11,8 +11,16 @@ function loadServiceOverrides(serviceDir) {
|
|
|
11
11
|
if (!candidate) {
|
|
12
12
|
return undefined;
|
|
13
13
|
}
|
|
14
|
-
const
|
|
15
|
-
|
|
14
|
+
const loaded = require(candidate);
|
|
15
|
+
if (loaded === null || typeof loaded !== 'object') {
|
|
16
|
+
throw new Error(`api-client-generator: ${candidate} must export an overrides object.`);
|
|
17
|
+
}
|
|
18
|
+
const selected = 'default' in loaded &&
|
|
19
|
+
loaded.default !== null &&
|
|
20
|
+
typeof loaded.default === 'object'
|
|
21
|
+
? loaded.default
|
|
22
|
+
: loaded;
|
|
23
|
+
const overrides = Object.fromEntries(Object.entries(selected));
|
|
16
24
|
if (overrides.env !== undefined &&
|
|
17
25
|
(typeof overrides.env !== 'object' || overrides.env === null)) {
|
|
18
26
|
throw new Error(`api-client-generator: ${candidate} \`env\` must be a Record<string,string>.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../src/lib/overrides.ts"],"names":[],"mappings":";;AAwCA,
|
|
1
|
+
{"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../src/lib/overrides.ts"],"names":[],"mappings":";;AAwCA,oDAwCC;AAhFD,qCAAqC;AACrC,yCAAiC;AAgCjC,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAO/C,SAAgB,oBAAoB,CAClC,UAAkB;IAElB,MAAM,SAAS,GAAG,CAAC,GAAG,kBAAkB,KAAK,EAAE,GAAG,kBAAkB,KAAK,CAAC;SACvE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,gBAAI,EAAC,UAAU,EAAE,CAAC,CAAC,CAAC;SAC/B,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,oBAAU,EAAC,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAY,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CACb,yBAAyB,SAAS,mCAAmC,CACtE,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GACZ,SAAS,IAAI,MAAM;QACnB,MAAM,CAAC,OAAO,KAAK,IAAI;QACvB,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;QAChC,CAAC,CAAC,MAAM,CAAC,OAAO;QAChB,CAAC,CAAC,MAAM,CAAC;IACb,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,IACE,SAAS,CAAC,GAAG,KAAK,SAAS;QAC3B,CAAC,OAAO,SAAS,CAAC,GAAG,KAAK,QAAQ,IAAI,SAAS,CAAC,GAAG,KAAK,IAAI,CAAC,EAC7D,CAAC;QACD,MAAM,IAAI,KAAK,CACb,yBAAyB,SAAS,2CAA2C,CAC9E,CAAC;IACJ,CAAC;IACD,IACE,SAAS,CAAC,cAAc,KAAK,SAAS;QACtC,OAAO,SAAS,CAAC,cAAc,KAAK,UAAU,EAC9C,CAAC;QACD,MAAM,IAAI,KAAK,CACb,yBAAyB,SAAS,yCAAyC,CAC5E,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-post-process.d.ts","sourceRoot":"","sources":["../../src/lib/repo-post-process.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"repo-post-process.d.ts","sourceRoot":"","sources":["../../src/lib/repo-post-process.ts"],"names":[],"mappings":"AAUA,UAAU,cAAc;IACtB,sBAAsB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IACtD,qBAAqB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;IACvD,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CACpD;AAcD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAcvE;AAqDD,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,IAAI,CAMN"}
|
|
@@ -33,8 +33,9 @@ function rebuildIndexBarrel(clientSrc) {
|
|
|
33
33
|
const endpointsDir = (0, node_path_1.join)(clientSrc, 'endpoints');
|
|
34
34
|
if ((0, node_fs_1.existsSync)(endpointsDir)) {
|
|
35
35
|
for (const entry of (0, node_fs_1.readdirSync)(endpointsDir, { withFileTypes: true })) {
|
|
36
|
-
if (!entry.isDirectory())
|
|
36
|
+
if (!entry.isDirectory()) {
|
|
37
37
|
continue;
|
|
38
|
+
}
|
|
38
39
|
const files = (0, node_fs_1.readdirSync)((0, node_path_1.join)(endpointsDir, entry.name));
|
|
39
40
|
const tsFile = files.find((f) => f.endsWith('.ts') && !f.endsWith('.d.ts'));
|
|
40
41
|
if (tsFile) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-post-process.js","sourceRoot":"","sources":["../../src/lib/repo-post-process.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"repo-post-process.js","sourceRoot":"","sources":["../../src/lib/repo-post-process.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed-openapi-env.d.ts","sourceRoot":"","sources":["../../src/lib/seed-openapi-env.ts"],"names":[],"mappings":"AA0CA,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAI9D;AAMD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"seed-openapi-env.d.ts","sourceRoot":"","sources":["../../src/lib/seed-openapi-env.ts"],"names":[],"mappings":"AA0CA,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAI9D;AAMD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAoFtD"}
|