@povio/openapi-codegen-cli 3.0.0-rc.9 → 3.1.0-rc.1

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/vite.mjs CHANGED
@@ -1,28 +1,21 @@
1
- import { S as Profiler } from "./generateCodeFromOpenAPIDoc-NA2XZmIv.mjs";
2
- import { t as runGenerate } from "./generate.runner-DSZ2ivlU.mjs";
1
+ import "./generateCodeFromOpenAPIDoc-C-n0Knj8.mjs";
2
+ import "./generate.runner-BXTc97I0.mjs";
3
+ import { t as createOpenApiCodegenRunner } from "./openapi-codegen.runner-QGd35-a3.mjs";
4
+ import { i as normalizeWatchFolders, r as isTinyOpenApiFakeMode, t as createTinyOpenApiSourceRunner } from "./openapi-source.runner-D19XnvMe.mjs";
3
5
  import path from "path";
4
6
 
5
7
  //#region src/vite/openapi-codegen.plugin.ts
6
8
  function openApiCodegen(config) {
7
9
  let resolvedViteConfig;
8
- let queue = Promise.resolve();
9
- const isLocalInput = typeof config.input === "string" && !/^https?:\/\//i.test(config.input);
10
- const { formatGeneratedFile, ...normalizedConfig } = config;
10
+ const codegen = createOpenApiCodegenRunner(config);
11
11
  const enqueueGenerate = () => {
12
- queue = queue.then(async () => {
13
- const currentConfig = resolvedViteConfig;
14
- if (!currentConfig) return;
15
- await runGenerate({
16
- fileConfig: normalizePaths(normalizedConfig, currentConfig.root),
17
- formatGeneratedFile,
18
- profiler: new Profiler(process.env.OPENAPI_CODEGEN_PROFILE === "1")
19
- });
20
- });
21
- return queue;
12
+ const currentConfig = resolvedViteConfig;
13
+ if (!currentConfig) return Promise.resolve();
14
+ return codegen.enqueueGenerate(currentConfig.root);
22
15
  };
23
16
  const setupWatcher = (server) => {
24
- if (!isLocalInput || !config.input) return;
25
- const openApiPath = path.resolve(server.config.root, config.input);
17
+ const openApiPath = codegen.getLocalInputPath(server.config.root);
18
+ if (!openApiPath) return;
26
19
  server.watcher.add(openApiPath);
27
20
  server.watcher.on("change", (changedPath) => {
28
21
  if (path.resolve(changedPath) === openApiPath) enqueueGenerate();
@@ -42,12 +35,76 @@ function openApiCodegen(config) {
42
35
  }
43
36
  };
44
37
  }
45
- function normalizePaths(config, root) {
46
- const normalized = { ...config };
47
- if (typeof normalized.output === "string" && !path.isAbsolute(normalized.output)) normalized.output = path.resolve(root, normalized.output);
48
- if (typeof normalized.input === "string" && !path.isAbsolute(normalized.input) && !/^https?:\/\//i.test(normalized.input)) normalized.input = path.resolve(root, normalized.input);
49
- return normalized;
38
+
39
+ //#endregion
40
+ //#region src/vite/tiny-openapi-codegen.plugin.ts
41
+ const watchedEvents = new Set([
42
+ "add",
43
+ "change",
44
+ "unlink"
45
+ ]);
46
+ function tinyOpenApiCodegenPlugin(codegenConfig, options) {
47
+ const debounceMs = options.debounceMs ?? 150;
48
+ const codegenRunner = createOpenApiCodegenRunner(codegenConfig);
49
+ let resolvedConfig;
50
+ let debounceTimer;
51
+ const getRunner = () => {
52
+ const root = resolvedConfig?.root ?? process.cwd();
53
+ return createTinyOpenApiSourceRunner({
54
+ cwd: options.cwd,
55
+ env: options.env,
56
+ generateOpenApiFile: options.generateOpenApiFile,
57
+ input: codegenConfig.input,
58
+ root
59
+ });
60
+ };
61
+ let runner = getRunner();
62
+ const enqueueGenerate = async () => {
63
+ const root = resolvedConfig?.root ?? process.cwd();
64
+ await runner.enqueueGenerate();
65
+ await codegenRunner.enqueueGenerate(root);
66
+ };
67
+ const scheduleGenerate = (server) => {
68
+ if (debounceTimer) clearTimeout(debounceTimer);
69
+ debounceTimer = setTimeout(() => {
70
+ enqueueGenerate().catch((error) => {
71
+ server.config.logger.error(`[tiny-openapi] ${error instanceof Error ? error.message : String(error)}`);
72
+ });
73
+ }, debounceMs);
74
+ };
75
+ const setupWatcher = (server) => {
76
+ const watchFolders = normalizeWatchFolders(resolvedConfig?.root ?? server.config.root, options.watchFolders);
77
+ server.watcher.add(watchFolders);
78
+ server.watcher.on("all", (event, changedPath) => {
79
+ if (watchedEvents.has(event) && isPathInWatchFolders(changedPath, watchFolders)) scheduleGenerate(server);
80
+ });
81
+ };
82
+ return {
83
+ name: "tiny-openapi-codegen",
84
+ configResolved(config) {
85
+ resolvedConfig = config;
86
+ runner = getRunner();
87
+ },
88
+ async buildStart() {
89
+ await enqueueGenerate();
90
+ },
91
+ async configureServer(server) {
92
+ await enqueueGenerate();
93
+ setupWatcher(server);
94
+ }
95
+ };
96
+ }
97
+ function tinyOpenApiCodegen(codegenConfig, options) {
98
+ if (!isTinyOpenApiFakeMode(options.apiMode)) return [openApiCodegen(codegenConfig)];
99
+ return [tinyOpenApiCodegenPlugin(codegenConfig, options)];
100
+ }
101
+ function isPathInWatchFolders(changedPath, watchFolders) {
102
+ const resolvedChangedPath = path.resolve(changedPath);
103
+ return watchFolders.some((folder) => {
104
+ const relativePath = path.relative(folder, resolvedChangedPath);
105
+ return relativePath === "" || !relativePath.startsWith("..") && !path.isAbsolute(relativePath);
106
+ });
50
107
  }
51
108
 
52
109
  //#endregion
53
- export { openApiCodegen };
110
+ export { openApiCodegen, tinyOpenApiCodegen };
package/dist/zod.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { a as ErrorHandler } from "./error-handling-B4aYKmyL.mjs";
1
+ import { a as ErrorHandler } from "./error-handling-CDeKUFHF.mjs";
2
2
  import { z } from "zod";
3
3
 
4
4
  //#region src/zod.d.ts
package/package.json CHANGED
@@ -1,6 +1,5 @@
1
1
  {
2
2
  "name": "@povio/openapi-codegen-cli",
3
- "version": "3.0.0-rc.9",
4
3
  "keywords": [
5
4
  "codegen",
6
5
  "openapi",
@@ -35,6 +34,14 @@
35
34
  "types": "./dist/vite.d.mts",
36
35
  "import": "./dist/vite.mjs"
37
36
  },
37
+ "./metro": {
38
+ "types": "./dist/metro.d.mts",
39
+ "import": "./dist/metro.mjs"
40
+ },
41
+ "./tiny": {
42
+ "types": "./dist/tiny.d.mts",
43
+ "import": "./dist/tiny.mjs"
44
+ },
38
45
  "./generator": {
39
46
  "types": "./dist/generator.d.mts",
40
47
  "import": "./dist/generator.mjs"
@@ -72,6 +79,9 @@
72
79
  },
73
80
  "dependencies": {
74
81
  "@apidevtools/swagger-parser": "^10.1.0",
82
+ "@orpc/contract": "^1.14.3",
83
+ "@orpc/openapi": "^1.14.3",
84
+ "@orpc/zod": "^1.14.3",
75
85
  "i18next": "^25.8.13",
76
86
  "import-fresh": "^3.3.1",
77
87
  "openapi-types": "^12.1.3",
@@ -127,5 +137,6 @@
127
137
  "node": ">= 14",
128
138
  "pnpm": ">= 9"
129
139
  },
130
- "packageManager": "pnpm@10.4.0"
140
+ "packageManager": "pnpm@10.4.0",
141
+ "version": "3.1.0-rc.1"
131
142
  }