unplugin-kubb 5.0.0-beta.75 → 5.0.0-beta.9
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 +8 -18
- package/dist/astro.cjs +1 -1
- package/dist/astro.cjs.map +1 -1
- package/dist/astro.js.map +1 -1
- package/dist/esbuild.cjs +1 -1
- package/dist/esbuild.js +1 -1
- package/dist/farm.cjs +1 -1
- package/dist/farm.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/dist/nuxt.cjs +1 -1
- package/dist/nuxt.cjs.map +1 -1
- package/dist/nuxt.js.map +1 -1
- package/dist/rolldown.cjs +1 -1
- package/dist/rolldown.js +1 -1
- package/dist/rollup.cjs +1 -1
- package/dist/rollup.js +1 -1
- package/dist/rspack.cjs +1 -1
- package/dist/rspack.js +1 -1
- package/dist/{unpluginFactory-B9g6Ykbq.cjs → unpluginFactory-Amggr1Ea.cjs} +53 -48
- package/dist/unpluginFactory-Amggr1Ea.cjs.map +1 -0
- package/dist/{unpluginFactory-BWwh02eg.js → unpluginFactory-C_rK_c2a.js} +54 -49
- package/dist/unpluginFactory-C_rK_c2a.js.map +1 -0
- package/dist/unpluginFactory.cjs +1 -1
- package/dist/unpluginFactory.js +1 -1
- package/dist/vite.cjs +1 -1
- package/dist/vite.js +1 -1
- package/dist/webpack.cjs +1 -1
- package/dist/webpack.js +1 -1
- package/package.json +12 -15
- package/src/nuxt.ts +0 -2
- package/src/unpluginFactory.ts +74 -67
- package/dist/unpluginFactory-B9g6Ykbq.cjs.map +0 -1
- package/dist/unpluginFactory-BWwh02eg.js.map +0 -1
package/README.md
CHANGED
|
@@ -21,12 +21,16 @@
|
|
|
21
21
|
</h4>
|
|
22
22
|
</div>
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
Universal build integration for Kubb using [unplugin](https://github.com/unjs/unplugin). Runs OpenAPI code generation as part of your build pipeline in Vite, Webpack, Rollup, esbuild, Rspack, Nuxt, and Astro.
|
|
25
25
|
|
|
26
|
-
##
|
|
26
|
+
## Installation
|
|
27
27
|
|
|
28
28
|
```bash
|
|
29
|
-
|
|
29
|
+
bun add -D unplugin-kubb @kubb/core
|
|
30
|
+
# or
|
|
31
|
+
pnpm add -D unplugin-kubb @kubb/core
|
|
32
|
+
# or
|
|
33
|
+
npm install -D unplugin-kubb @kubb/core
|
|
30
34
|
```
|
|
31
35
|
|
|
32
36
|
```typescript
|
|
@@ -77,20 +81,6 @@ export default defineNuxtConfig({
|
|
|
77
81
|
})
|
|
78
82
|
```
|
|
79
83
|
|
|
80
|
-
> This module works for both Nuxt 2 and [Nuxt Vite](https://github.com/nuxt/vite)
|
|
81
|
-
|
|
82
|
-
```typescript
|
|
83
|
-
module.exports = {
|
|
84
|
-
configureWebpack: {
|
|
85
|
-
plugins: [
|
|
86
|
-
require('unplugin-kubb/webpack')({
|
|
87
|
-
/* options */
|
|
88
|
-
}),
|
|
89
|
-
],
|
|
90
|
-
},
|
|
91
|
-
}
|
|
92
|
-
```
|
|
93
|
-
|
|
94
84
|
```typescript
|
|
95
85
|
import { build } from 'esbuild'
|
|
96
86
|
import kubb from 'unplugin-kubb/esbuild'
|
|
@@ -114,7 +104,7 @@ type Options = {
|
|
|
114
104
|
|
|
115
105
|
## Supporting Kubb
|
|
116
106
|
|
|
117
|
-
Kubb
|
|
107
|
+
Kubb is an MIT-licensed open source project with its ongoing development made possible entirely by the support of Sponsors. If you would like to become a sponsor, please consider:
|
|
118
108
|
|
|
119
109
|
- [Become a Sponsor on GitHub](https://github.com/sponsors/stijnvanhulle)
|
|
120
110
|
|
package/dist/astro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_unpluginFactory = require("./unpluginFactory-
|
|
1
|
+
const require_unpluginFactory = require("./unpluginFactory-Amggr1Ea.cjs");
|
|
2
2
|
const require_vite = require("./vite.cjs");
|
|
3
3
|
//#region src/astro.ts
|
|
4
4
|
var astro_default = /* @__PURE__ */ require_unpluginFactory.__name((options) => ({
|
package/dist/astro.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astro.cjs","names":["vitePlugin"],"sources":["../src/astro.ts"],"sourcesContent":["import type { Options } from './types.ts'\nimport vitePlugin from './vite.ts'\n\nexport default (options: Options): any => ({\n name: 'unplugin-kubb',\n hooks: {\n 'astro:config:setup': async (astro: any) => {\n astro.config.vite.plugins ||= []\n astro.config.vite.plugins.push(vitePlugin(options))\n },\n },\n})\n"],"mappings":";;;AAGA,IAAA,gBAAA,wCAAA,QAAgB,aAA2B;CACzC,MAAM;CACN,OAAO,EACL,sBAAsB,OAAO,UAAe;
|
|
1
|
+
{"version":3,"file":"astro.cjs","names":["vitePlugin"],"sources":["../src/astro.ts"],"sourcesContent":["import type { Options } from './types.ts'\nimport vitePlugin from './vite.ts'\n\nexport default (options: Options): any => ({\n name: 'unplugin-kubb',\n hooks: {\n 'astro:config:setup': async (astro: any) => {\n astro.config.vite.plugins ||= []\n astro.config.vite.plugins.push(vitePlugin(options))\n },\n },\n})\n"],"mappings":";;;AAGA,IAAA,gBAAA,wCAAA,QAAgB,aAA2B;CACzC,MAAM;CACN,OAAO,EACL,sBAAsB,OAAO,UAAe;EAC1C,MAAM,OAAO,KAAK,YAAY,EAAE;EAChC,MAAM,OAAO,KAAK,QAAQ,KAAKA,aAAW,QAAQ,CAAC;IAEtD;CACF,GAAA,UAAA"}
|
package/dist/astro.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"astro.js","names":["vitePlugin"],"sources":["../src/astro.ts"],"sourcesContent":["import type { Options } from './types.ts'\nimport vitePlugin from './vite.ts'\n\nexport default (options: Options): any => ({\n name: 'unplugin-kubb',\n hooks: {\n 'astro:config:setup': async (astro: any) => {\n astro.config.vite.plugins ||= []\n astro.config.vite.plugins.push(vitePlugin(options))\n },\n },\n})\n"],"mappings":";;;AAGA,IAAA,gBAAA,wBAAgB,aAA2B;CACzC,MAAM;CACN,OAAO,EACL,sBAAsB,OAAO,UAAe;
|
|
1
|
+
{"version":3,"file":"astro.js","names":["vitePlugin"],"sources":["../src/astro.ts"],"sourcesContent":["import type { Options } from './types.ts'\nimport vitePlugin from './vite.ts'\n\nexport default (options: Options): any => ({\n name: 'unplugin-kubb',\n hooks: {\n 'astro:config:setup': async (astro: any) => {\n astro.config.vite.plugins ||= []\n astro.config.vite.plugins.push(vitePlugin(options))\n },\n },\n})\n"],"mappings":";;;AAGA,IAAA,gBAAA,wBAAgB,aAA2B;CACzC,MAAM;CACN,OAAO,EACL,sBAAsB,OAAO,UAAe;EAC1C,MAAM,OAAO,KAAK,YAAY,EAAE;EAChC,MAAM,OAAO,KAAK,QAAQ,KAAKA,aAAW,QAAQ,CAAC;IAEtD;CACF,GAAA,UAAA"}
|
package/dist/esbuild.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_unpluginFactory = require("./unpluginFactory-
|
|
1
|
+
const require_unpluginFactory = require("./unpluginFactory-Amggr1Ea.cjs");
|
|
2
2
|
//#region src/esbuild.ts
|
|
3
3
|
var esbuild_default = (0, require("unplugin").createEsbuildPlugin)(require_unpluginFactory.unpluginFactory);
|
|
4
4
|
//#endregion
|
package/dist/esbuild.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as unpluginFactory } from "./unpluginFactory-
|
|
1
|
+
import { t as unpluginFactory } from "./unpluginFactory-C_rK_c2a.js";
|
|
2
2
|
import { createEsbuildPlugin } from "unplugin";
|
|
3
3
|
//#region src/esbuild.ts
|
|
4
4
|
var esbuild_default = createEsbuildPlugin(unpluginFactory);
|
package/dist/farm.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_unpluginFactory = require("./unpluginFactory-
|
|
1
|
+
const require_unpluginFactory = require("./unpluginFactory-Amggr1Ea.cjs");
|
|
2
2
|
//#region src/farm.ts
|
|
3
3
|
var farm_default = (0, require("unplugin").createFarmPlugin)(require_unpluginFactory.unpluginFactory);
|
|
4
4
|
//#endregion
|
package/dist/farm.js
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_unpluginFactory = require("./unpluginFactory-
|
|
5
|
+
const require_unpluginFactory = require("./unpluginFactory-Amggr1Ea.cjs");
|
|
6
6
|
//#region src/index.ts
|
|
7
7
|
const plugin = /* @__PURE__ */ (0, require("unplugin").createUnplugin)(require_unpluginFactory.unpluginFactory);
|
|
8
8
|
//#endregion
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as unpluginFactory } from "./unpluginFactory-
|
|
1
|
+
import { t as unpluginFactory } from "./unpluginFactory-C_rK_c2a.js";
|
|
2
2
|
import { createUnplugin } from "unplugin";
|
|
3
3
|
//#region src/index.ts
|
|
4
4
|
const plugin = /* @__PURE__ */ createUnplugin(unpluginFactory);
|
package/dist/nuxt.cjs
CHANGED
package/dist/nuxt.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nuxt.cjs","names":["vite","webpack"],"sources":["../src/nuxt.ts"],"sourcesContent":["import { addVitePlugin, addWebpackPlugin, defineNuxtModule } from '@nuxt/kit'\nimport '@nuxt/schema'\n\nimport type { Options } from './types.ts'\nimport vite from './vite.ts'\nimport webpack from './webpack.ts'\n\nexport interface ModuleOptions extends Options {}\n\nexport default defineNuxtModule<ModuleOptions>({\n meta: {\n name: 'nuxt-unplugin-kubb',\n configKey: 'unpluginKubb',\n },\n defaults: undefined,\n setup(options, _nuxt) {\n addVitePlugin(() => vite(options))\n addWebpackPlugin(() => webpack(options))\n
|
|
1
|
+
{"version":3,"file":"nuxt.cjs","names":["vite","webpack"],"sources":["../src/nuxt.ts"],"sourcesContent":["import { addVitePlugin, addWebpackPlugin, defineNuxtModule } from '@nuxt/kit'\nimport '@nuxt/schema'\n\nimport type { Options } from './types.ts'\nimport vite from './vite.ts'\nimport webpack from './webpack.ts'\n\nexport interface ModuleOptions extends Options {}\n\nexport default defineNuxtModule<ModuleOptions>({\n meta: {\n name: 'nuxt-unplugin-kubb',\n configKey: 'unpluginKubb',\n },\n defaults: undefined,\n setup(options, _nuxt) {\n addVitePlugin(() => vite(options))\n addWebpackPlugin(() => webpack(options))\n },\n})\n"],"mappings":";;;;;;AASA,IAAA,gBAAA,GAAA,UAAA,kBAA+C;CAC7C,MAAM;EACJ,MAAM;EACN,WAAW;EACZ;CACD,UAAU,KAAA;CACV,MAAM,SAAS,OAAO;EACpB,CAAA,GAAA,UAAA,qBAAoBA,aAAK,QAAQ,CAAC;EAClC,CAAA,GAAA,UAAA,wBAAuBC,gBAAQ,QAAQ,CAAC;;CAE3C,CAAC"}
|
package/dist/nuxt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nuxt.js","names":["vite","webpack"],"sources":["../src/nuxt.ts"],"sourcesContent":["import { addVitePlugin, addWebpackPlugin, defineNuxtModule } from '@nuxt/kit'\nimport '@nuxt/schema'\n\nimport type { Options } from './types.ts'\nimport vite from './vite.ts'\nimport webpack from './webpack.ts'\n\nexport interface ModuleOptions extends Options {}\n\nexport default defineNuxtModule<ModuleOptions>({\n meta: {\n name: 'nuxt-unplugin-kubb',\n configKey: 'unpluginKubb',\n },\n defaults: undefined,\n setup(options, _nuxt) {\n addVitePlugin(() => vite(options))\n addWebpackPlugin(() => webpack(options))\n
|
|
1
|
+
{"version":3,"file":"nuxt.js","names":["vite","webpack"],"sources":["../src/nuxt.ts"],"sourcesContent":["import { addVitePlugin, addWebpackPlugin, defineNuxtModule } from '@nuxt/kit'\nimport '@nuxt/schema'\n\nimport type { Options } from './types.ts'\nimport vite from './vite.ts'\nimport webpack from './webpack.ts'\n\nexport interface ModuleOptions extends Options {}\n\nexport default defineNuxtModule<ModuleOptions>({\n meta: {\n name: 'nuxt-unplugin-kubb',\n configKey: 'unpluginKubb',\n },\n defaults: undefined,\n setup(options, _nuxt) {\n addVitePlugin(() => vite(options))\n addWebpackPlugin(() => webpack(options))\n },\n})\n"],"mappings":";;;;;;AASA,IAAA,eAAe,iBAAgC;CAC7C,MAAM;EACJ,MAAM;EACN,WAAW;EACZ;CACD,UAAU,KAAA;CACV,MAAM,SAAS,OAAO;EACpB,oBAAoBA,aAAK,QAAQ,CAAC;EAClC,uBAAuBC,gBAAQ,QAAQ,CAAC;;CAE3C,CAAC"}
|
package/dist/rolldown.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_unpluginFactory = require("./unpluginFactory-
|
|
1
|
+
const require_unpluginFactory = require("./unpluginFactory-Amggr1Ea.cjs");
|
|
2
2
|
//#region src/rolldown.ts
|
|
3
3
|
var rolldown_default = (0, require("unplugin").createRolldownPlugin)(require_unpluginFactory.unpluginFactory);
|
|
4
4
|
//#endregion
|
package/dist/rolldown.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as unpluginFactory } from "./unpluginFactory-
|
|
1
|
+
import { t as unpluginFactory } from "./unpluginFactory-C_rK_c2a.js";
|
|
2
2
|
import { createRolldownPlugin } from "unplugin";
|
|
3
3
|
//#region src/rolldown.ts
|
|
4
4
|
var rolldown_default = createRolldownPlugin(unpluginFactory);
|
package/dist/rollup.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_unpluginFactory = require("./unpluginFactory-
|
|
1
|
+
const require_unpluginFactory = require("./unpluginFactory-Amggr1Ea.cjs");
|
|
2
2
|
//#region src/rollup.ts
|
|
3
3
|
var rollup_default = (0, require("unplugin").createRollupPlugin)(require_unpluginFactory.unpluginFactory);
|
|
4
4
|
//#endregion
|
package/dist/rollup.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as unpluginFactory } from "./unpluginFactory-
|
|
1
|
+
import { t as unpluginFactory } from "./unpluginFactory-C_rK_c2a.js";
|
|
2
2
|
import { createRollupPlugin } from "unplugin";
|
|
3
3
|
//#region src/rollup.ts
|
|
4
4
|
var rollup_default = createRollupPlugin(unpluginFactory);
|
package/dist/rspack.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_unpluginFactory = require("./unpluginFactory-
|
|
1
|
+
const require_unpluginFactory = require("./unpluginFactory-Amggr1Ea.cjs");
|
|
2
2
|
//#region src/rspack.ts
|
|
3
3
|
var rspack_default = (0, require("unplugin").createRspackPlugin)(require_unpluginFactory.unpluginFactory);
|
|
4
4
|
//#endregion
|
package/dist/rspack.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as unpluginFactory } from "./unpluginFactory-
|
|
1
|
+
import { t as unpluginFactory } from "./unpluginFactory-C_rK_c2a.js";
|
|
2
2
|
import { createRspackPlugin } from "unplugin";
|
|
3
3
|
//#region src/rspack.ts
|
|
4
4
|
var rspack_default = createRspackPlugin(unpluginFactory);
|
|
@@ -155,14 +155,43 @@ var AsyncEventEmitter = class {
|
|
|
155
155
|
};
|
|
156
156
|
//#endregion
|
|
157
157
|
//#region package.json
|
|
158
|
-
var version = "5.0.0-beta.
|
|
158
|
+
var version = "5.0.0-beta.9";
|
|
159
159
|
//#endregion
|
|
160
160
|
//#region src/unpluginFactory.ts
|
|
161
161
|
const unpluginFactory = (options, meta) => {
|
|
162
162
|
const name = "unplugin-kubb";
|
|
163
163
|
const hooks = new AsyncEventEmitter();
|
|
164
164
|
const isVite = meta.framework === "vite";
|
|
165
|
-
|
|
165
|
+
hooks.on("kubb:lifecycle:start", ({ version }) => {
|
|
166
|
+
console.log(`Kubb Unplugin ${version} 🧩`);
|
|
167
|
+
});
|
|
168
|
+
hooks.on("kubb:error", ({ error }) => {
|
|
169
|
+
console.error(`✗ ${error?.message || "failed"}`);
|
|
170
|
+
});
|
|
171
|
+
hooks.on("kubb:warn", ({ message }) => {
|
|
172
|
+
console.warn(`⚠ ${message}`);
|
|
173
|
+
});
|
|
174
|
+
hooks.on("kubb:info", ({ message }) => {
|
|
175
|
+
console.info(`ℹ ${message}`);
|
|
176
|
+
});
|
|
177
|
+
hooks.on("kubb:success", ({ message }) => {
|
|
178
|
+
console.log(`✓ ${message}`);
|
|
179
|
+
});
|
|
180
|
+
hooks.on("kubb:plugin:end", ({ plugin, duration }) => {
|
|
181
|
+
const durationStr = duration >= 1e3 ? `${(duration / 1e3).toFixed(2)}s` : `${duration}ms`;
|
|
182
|
+
console.log(`✓ ${plugin.name} completed in ${durationStr}`);
|
|
183
|
+
});
|
|
184
|
+
hooks.on("kubb:files:processing:end", () => {
|
|
185
|
+
console.log("✓ Files written successfully");
|
|
186
|
+
});
|
|
187
|
+
hooks.on("kubb:generation:end", ({ config }) => {
|
|
188
|
+
console.log(config.name ? `✓ Generation completed for ${config.name}` : "✓ Generation completed");
|
|
189
|
+
});
|
|
190
|
+
hooks.on("kubb:generation:summary", ({ config, status, failedPlugins }) => {
|
|
191
|
+
const pluginsCount = config.plugins.length;
|
|
192
|
+
const successCount = pluginsCount - failedPlugins.size;
|
|
193
|
+
console.log(status === "success" ? `Kubb Summary: ✓ ${`${successCount} successful`}, ${pluginsCount} total` : `Kubb Summary: ✓ ${`${successCount} successful`}, ✗ ${`${failedPlugins.size} failed`}, ${pluginsCount} total`);
|
|
194
|
+
});
|
|
166
195
|
async function runBuild(ctx) {
|
|
167
196
|
if (!options?.config) {
|
|
168
197
|
if (ctx.error) ctx.error?.(`[${name}] Config is not set`);
|
|
@@ -172,67 +201,35 @@ const unpluginFactory = (options, meta) => {
|
|
|
172
201
|
const middleware = options.config.middleware?.length ? options.config.middleware : [(0, _kubb_middleware_barrel.middlewareBarrel)()];
|
|
173
202
|
const hasBarrelMiddleware = middleware.some((m) => m.name === _kubb_middleware_barrel.middlewareBarrelName);
|
|
174
203
|
const output = { ...options.config.output };
|
|
175
|
-
if (hasBarrelMiddleware && output.
|
|
204
|
+
if (hasBarrelMiddleware && output.barrel === void 0) output.barrel = { type: "named" };
|
|
176
205
|
if (output.format === void 0) output.format = false;
|
|
177
206
|
if (output.lint === void 0) output.lint = false;
|
|
178
207
|
const config = {
|
|
179
208
|
...options.config,
|
|
180
209
|
adapter: options.config.adapter ?? (0, _kubb_adapter_oas.adapterOas)(),
|
|
181
|
-
parsers: options.config.parsers?.length ? options.config.parsers : [_kubb_parser_ts.parserTs],
|
|
210
|
+
parsers: options.config.parsers?.length ? options.config.parsers : [_kubb_parser_ts.parserTs, _kubb_parser_ts.parserTsx],
|
|
182
211
|
middleware,
|
|
183
212
|
output
|
|
184
213
|
};
|
|
185
|
-
|
|
186
|
-
console.log(`Kubb Unplugin ${version} 🧩`);
|
|
187
|
-
});
|
|
188
|
-
hooks.on("kubb:error", ({ error }) => {
|
|
189
|
-
console.error(`✗ ${error?.message || "failed"}`);
|
|
190
|
-
});
|
|
191
|
-
hooks.on("kubb:warn", ({ message }) => {
|
|
192
|
-
console.warn(`⚠ ${message}`);
|
|
193
|
-
});
|
|
194
|
-
hooks.on("kubb:info", ({ message }) => {
|
|
195
|
-
console.info(`ℹ ${message}`);
|
|
196
|
-
});
|
|
197
|
-
hooks.on("kubb:success", ({ message }) => {
|
|
198
|
-
console.log(`✓ ${message}`);
|
|
199
|
-
});
|
|
200
|
-
hooks.on("kubb:plugin:end", ({ plugin, duration }) => {
|
|
201
|
-
const durationStr = duration >= 1e3 ? `${(duration / 1e3).toFixed(2)}s` : `${duration}ms`;
|
|
202
|
-
console.log(`✓ ${plugin.name} completed in ${durationStr}`);
|
|
203
|
-
});
|
|
204
|
-
hooks.on("kubb:files:processing:end", () => {
|
|
205
|
-
console.log("✓ Files written successfully");
|
|
206
|
-
});
|
|
207
|
-
hooks.on("kubb:generation:end", ({ config }) => {
|
|
208
|
-
console.log(config.name ? `✓ Generation completed for ${config.name}` : "✓ Generation completed");
|
|
209
|
-
});
|
|
210
|
-
hooks.on("kubb:generation:summary", ({ config, status, failedPlugins }) => {
|
|
211
|
-
const pluginsCount = config.plugins.length;
|
|
212
|
-
const successCount = pluginsCount - failedPlugins.size;
|
|
213
|
-
console.log(status === "success" ? `Kubb Summary: ✓ ${`${successCount} successful`}, ${pluginsCount} total` : `Kubb Summary: ✓ ${`${successCount} successful`}, ✗ ${`${failedPlugins.size} failed`}, ${pluginsCount} total`);
|
|
214
|
-
});
|
|
214
|
+
const hrStart = node_process.default.hrtime();
|
|
215
215
|
await hooks.emit("kubb:lifecycle:start", { version });
|
|
216
|
-
const
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
}
|
|
225
|
-
}, { hooks }).safeBuild();
|
|
226
|
-
if (failedPlugins.size > 0 || error) [error, ...Array.from(failedPlugins).filter((it) => it.error).map((it) => it.error)].filter(Boolean).forEach((err) => {
|
|
216
|
+
const userConfig = config;
|
|
217
|
+
const kubb = (0, _kubb_core.createKubb)(userConfig, { hooks });
|
|
218
|
+
await kubb.setup();
|
|
219
|
+
const resolvedConfig = kubb.config ?? userConfig;
|
|
220
|
+
await hooks.emit("kubb:generation:start", { config: resolvedConfig });
|
|
221
|
+
const { error, failedPlugins, pluginTimings, files, sources } = await kubb.safeBuild();
|
|
222
|
+
const hasFailures = failedPlugins.size > 0 || error;
|
|
223
|
+
if (hasFailures) [error, ...Array.from(failedPlugins).filter((it) => it.error).map((it) => it.error)].filter(Boolean).forEach((err) => {
|
|
227
224
|
hooks.emit("kubb:error", { error: err });
|
|
228
225
|
});
|
|
229
226
|
await hooks.emit("kubb:generation:end", {
|
|
230
|
-
config,
|
|
227
|
+
config: resolvedConfig,
|
|
231
228
|
files,
|
|
232
229
|
sources
|
|
233
230
|
});
|
|
234
231
|
await hooks.emit("kubb:generation:summary", {
|
|
235
|
-
config,
|
|
232
|
+
config: resolvedConfig,
|
|
236
233
|
failedPlugins,
|
|
237
234
|
filesCreated: files.length,
|
|
238
235
|
status: failedPlugins.size > 0 || error ? "failed" : "success",
|
|
@@ -240,6 +237,14 @@ const unpluginFactory = (options, meta) => {
|
|
|
240
237
|
pluginTimings
|
|
241
238
|
});
|
|
242
239
|
await hooks.emit("kubb:lifecycle:end");
|
|
240
|
+
if (hasFailures) {
|
|
241
|
+
const message = error?.message ?? `Build Error with ${failedPlugins.size} failed plugins`;
|
|
242
|
+
if (ctx.error) {
|
|
243
|
+
ctx.error(`[${name}] ${message}`);
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
throw new Error(`[${name}] ${message}`, { cause: error });
|
|
247
|
+
}
|
|
243
248
|
}
|
|
244
249
|
return {
|
|
245
250
|
name,
|
|
@@ -271,4 +276,4 @@ Object.defineProperty(exports, "unpluginFactory", {
|
|
|
271
276
|
}
|
|
272
277
|
});
|
|
273
278
|
|
|
274
|
-
//# sourceMappingURL=unpluginFactory-
|
|
279
|
+
//# sourceMappingURL=unpluginFactory-Amggr1Ea.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unpluginFactory-Amggr1Ea.cjs","names":["#emitter","NodeEventEmitter","middlewareBarrelName","parserTs","parserTsx","process","unpluginVersion"],"sources":["../../../internals/utils/src/errors.ts","../../../internals/utils/src/asyncEventEmitter.ts","../package.json","../src/unpluginFactory.ts"],"sourcesContent":["/**\n * Thrown when one or more errors occur during a Kubb build.\n * Carries the full list of underlying errors on `errors`.\n *\n * @example\n * ```ts\n * throw new BuildError('Build failed', { errors: [err1, err2] })\n * ```\n */\nexport class BuildError extends Error {\n errors: Array<Error>\n\n constructor(message: string, options: { cause?: Error; errors: Array<Error> }) {\n super(message, { cause: options.cause })\n this.name = 'BuildError'\n this.errors = options.errors\n }\n}\n\n/**\n * Coerces an unknown thrown value to an `Error` instance.\n * Returns the value as-is when it is already an `Error`; otherwise wraps it with `String(value)`.\n *\n * @example\n * ```ts\n * try { ... } catch(err) {\n * throw new BuildError('Build failed', { cause: toError(err), errors: [] })\n * }\n * ```\n */\nexport function toError(value: unknown): Error {\n return value instanceof Error ? value : new Error(String(value))\n}\n\n/**\n * Extracts a human-readable message from any thrown value.\n *\n * @example\n * ```ts\n * getErrorMessage(new Error('oops')) // 'oops'\n * getErrorMessage('plain string') // 'plain string'\n * ```\n */\nexport function getErrorMessage(value: unknown): string {\n return value instanceof Error ? value.message : String(value)\n}\n\n/**\n * Extracts the `.cause` of an `Error` as an `Error`, or `undefined` when absent or not an `Error`.\n *\n * @example\n * ```ts\n * const cause = toCause(buildError) // Error | undefined\n * ```\n */\nexport function toCause(error: Error): Error | undefined {\n return error.cause instanceof Error ? error.cause : undefined\n}\n","import { EventEmitter as NodeEventEmitter } from 'node:events'\nimport { toError } from './errors.ts'\n\n/**\n * A function that can be registered as an event listener, synchronous or async.\n */\ntype AsyncListener<TArgs extends unknown[]> = (...args: TArgs) => void | Promise<void>\n\n/**\n * Typed `EventEmitter` that awaits all async listeners before resolving.\n * Wraps Node's `EventEmitter` with full TypeScript event-map inference.\n *\n * @example\n * ```ts\n * const emitter = new AsyncEventEmitter<{ build: [name: string] }>()\n * emitter.on('build', async (name) => { console.log(name) })\n * await emitter.emit('build', 'petstore') // all listeners awaited\n * ```\n */\nexport class AsyncEventEmitter<TEvents extends { [K in keyof TEvents]: unknown[] }> {\n /**\n * Maximum number of listeners per event before Node emits a memory-leak warning.\n * @default 10\n */\n constructor(maxListener = 10) {\n this.#emitter.setMaxListeners(maxListener)\n }\n\n #emitter = new NodeEventEmitter()\n\n /**\n * Emits `eventName` and awaits all registered listeners sequentially.\n * Throws if any listener rejects, wrapping the cause with the event name and serialized arguments.\n *\n * @example\n * ```ts\n * await emitter.emit('build', 'petstore')\n * ```\n */\n async emit<TEventName extends keyof TEvents & string>(eventName: TEventName, ...eventArgs: TEvents[TEventName]): Promise<void> {\n const listeners = this.#emitter.listeners(eventName) as Array<AsyncListener<TEvents[TEventName]>>\n\n if (listeners.length === 0) {\n return\n }\n\n for (const listener of listeners) {\n try {\n await listener(...eventArgs)\n } catch (err) {\n let serializedArgs: string\n try {\n serializedArgs = JSON.stringify(eventArgs)\n } catch {\n serializedArgs = String(eventArgs)\n }\n throw new Error(`Error in async listener for \"${eventName}\" with eventArgs ${serializedArgs}`, { cause: toError(err) })\n }\n }\n }\n\n /**\n * Registers a persistent listener for `eventName`.\n *\n * @example\n * ```ts\n * emitter.on('build', async (name) => { console.log(name) })\n * ```\n */\n on<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: AsyncListener<TEvents[TEventName]>): void {\n this.#emitter.on(eventName, handler as AsyncListener<unknown[]>)\n }\n\n /**\n * Registers a one-shot listener that removes itself after the first invocation.\n *\n * @example\n * ```ts\n * emitter.onOnce('build', async (name) => { console.log(name) })\n * ```\n */\n onOnce<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: AsyncListener<TEvents[TEventName]>): void {\n const wrapper: AsyncListener<TEvents[TEventName]> = (...args) => {\n this.off(eventName, wrapper)\n return handler(...args)\n }\n this.on(eventName, wrapper)\n }\n\n /**\n * Removes a previously registered listener.\n *\n * @example\n * ```ts\n * emitter.off('build', handler)\n * ```\n */\n off<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: AsyncListener<TEvents[TEventName]>): void {\n this.#emitter.off(eventName, handler as AsyncListener<unknown[]>)\n }\n\n /**\n * Returns the number of listeners registered for `eventName`.\n *\n * @example\n * ```ts\n * emitter.on('build', handler)\n * emitter.listenerCount('build') // 1\n * ```\n */\n listenerCount<TEventName extends keyof TEvents & string>(eventName: TEventName): number {\n return this.#emitter.listenerCount(eventName)\n }\n\n /**\n * Removes all listeners from every event channel.\n *\n * @example\n * ```ts\n * emitter.removeAll()\n * ```\n */\n removeAll(): void {\n this.#emitter.removeAllListeners()\n }\n}\n","","import process from 'node:process'\nimport { AsyncEventEmitter } from '@internals/utils'\nimport { adapterOas } from '@kubb/adapter-oas'\nimport { type Config, createKubb, type KubbHooks } from '@kubb/core'\nimport { middlewareBarrel, middlewareBarrelName } from '@kubb/middleware-barrel'\nimport { parserTs, parserTsx } from '@kubb/parser-ts'\nimport type { UnpluginFactory } from 'unplugin'\nimport { version as unpluginVersion } from '../package.json'\nimport type { Options } from './types.ts'\n\ntype RollupContext = {\n info?: (message: string) => void\n warn?: (message: string) => void\n error?: (message: string) => void\n}\n\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (options, meta) => {\n const name = 'unplugin-kubb' as const\n const hooks = new AsyncEventEmitter<KubbHooks>()\n const isVite = meta.framework === 'vite'\n\n hooks.on('kubb:lifecycle:start', ({ version }) => {\n console.log(`Kubb Unplugin ${version} 🧩`)\n })\n\n hooks.on('kubb:error', ({ error }) => {\n console.error(`✗ ${error?.message || 'failed'}`)\n })\n\n hooks.on('kubb:warn', ({ message }) => {\n console.warn(`⚠ ${message}`)\n })\n\n hooks.on('kubb:info', ({ message }) => {\n console.info(`ℹ ${message}`)\n })\n\n hooks.on('kubb:success', ({ message }) => {\n console.log(`✓ ${message}`)\n })\n\n hooks.on('kubb:plugin:end', ({ plugin, duration }) => {\n const durationStr = duration >= 1000 ? `${(duration / 1000).toFixed(2)}s` : `${duration}ms`\n\n console.log(`✓ ${plugin.name} completed in ${durationStr}`)\n })\n\n hooks.on('kubb:files:processing:end', () => {\n const text = '✓ Files written successfully'\n\n console.log(text)\n })\n\n hooks.on('kubb:generation:end', ({ config }) => {\n console.log(config.name ? `✓ Generation completed for ${config.name}` : '✓ Generation completed')\n })\n\n hooks.on('kubb:generation:summary', ({ config, status, failedPlugins }) => {\n const pluginsCount = config.plugins.length\n const successCount = pluginsCount - failedPlugins.size\n\n console.log(\n status === 'success'\n ? `Kubb Summary: ✓ ${`${successCount} successful`}, ${pluginsCount} total`\n : `Kubb Summary: ✓ ${`${successCount} successful`}, ✗ ${`${failedPlugins.size} failed`}, ${pluginsCount} total`,\n )\n })\n\n async function runBuild(ctx: RollupContext) {\n if (!options?.config) {\n if (ctx.error) {\n ctx.error?.(`[${name}] Config is not set`)\n } else {\n console.error(`[${name}] Config is not set`)\n }\n return\n }\n\n const middleware = options.config.middleware?.length ? options.config.middleware : [middlewareBarrel()]\n const hasBarrelMiddleware = middleware.some((m) => m.name === middlewareBarrelName)\n const output = { ...options.config.output }\n if (hasBarrelMiddleware && output.barrel === undefined) {\n output.barrel = { type: 'named' }\n }\n if (output.format === undefined) {\n output.format = false\n }\n if (output.lint === undefined) {\n output.lint = false\n }\n\n const config = {\n ...options.config,\n adapter: options.config.adapter ?? adapterOas(),\n parsers: options.config.parsers?.length ? options.config.parsers : [parserTs, parserTsx],\n middleware,\n output,\n }\n const hrStart = process.hrtime()\n\n await hooks.emit('kubb:lifecycle:start', { version: unpluginVersion })\n\n const userConfig = config as Config\n\n const kubb = createKubb(\n userConfig,\n { hooks },\n )\n await kubb.setup()\n\n const resolvedConfig = kubb.config ?? userConfig\n\n await hooks.emit('kubb:generation:start', { config: resolvedConfig })\n\n const { error, failedPlugins, pluginTimings, files, sources } = await kubb.safeBuild()\n\n const hasFailures = failedPlugins.size > 0 || error\n if (hasFailures) {\n // Collect all errors from failed plugins and general error\n const allErrors: Error[] = [\n error,\n ...Array.from(failedPlugins)\n .filter((it) => it.error)\n .map((it) => it.error),\n ].filter(Boolean)\n\n allErrors.forEach((err) => {\n hooks.emit('kubb:error', { error: err })\n })\n }\n\n await hooks.emit('kubb:generation:end', { config: resolvedConfig, files, sources })\n await hooks.emit('kubb:generation:summary', {\n config: resolvedConfig,\n failedPlugins,\n filesCreated: files.length,\n status: failedPlugins.size > 0 || error ? 'failed' : 'success',\n hrStart,\n pluginTimings,\n })\n\n await hooks.emit('kubb:lifecycle:end')\n\n if (hasFailures) {\n const message = error?.message ?? `Build Error with ${failedPlugins.size} failed plugins`\n if (ctx.error) {\n ctx.error(`[${name}] ${message}`)\n return\n }\n\n throw new Error(`[${name}] ${message}`, { cause: error })\n }\n }\n\n return {\n name,\n enforce: 'pre',\n apply: isVite ? 'build' : undefined,\n async buildStart() {\n await runBuild(this as unknown as RollupContext)\n },\n vite: {},\n }\n}\n"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { EventEmitter } from "node:events";
|
|
|
4
4
|
import { adapterOas } from "@kubb/adapter-oas";
|
|
5
5
|
import { createKubb } from "@kubb/core";
|
|
6
6
|
import { middlewareBarrel, middlewareBarrelName } from "@kubb/middleware-barrel";
|
|
7
|
-
import { parserTs } from "@kubb/parser-ts";
|
|
7
|
+
import { parserTs, parserTsx } from "@kubb/parser-ts";
|
|
8
8
|
//#region ../../internals/utils/src/errors.ts
|
|
9
9
|
/**
|
|
10
10
|
* Coerces an unknown thrown value to an `Error` instance.
|
|
@@ -129,14 +129,43 @@ var AsyncEventEmitter = class {
|
|
|
129
129
|
};
|
|
130
130
|
//#endregion
|
|
131
131
|
//#region package.json
|
|
132
|
-
var version = "5.0.0-beta.
|
|
132
|
+
var version = "5.0.0-beta.9";
|
|
133
133
|
//#endregion
|
|
134
134
|
//#region src/unpluginFactory.ts
|
|
135
135
|
const unpluginFactory = (options, meta) => {
|
|
136
136
|
const name = "unplugin-kubb";
|
|
137
137
|
const hooks = new AsyncEventEmitter();
|
|
138
138
|
const isVite = meta.framework === "vite";
|
|
139
|
-
|
|
139
|
+
hooks.on("kubb:lifecycle:start", ({ version }) => {
|
|
140
|
+
console.log(`Kubb Unplugin ${version} 🧩`);
|
|
141
|
+
});
|
|
142
|
+
hooks.on("kubb:error", ({ error }) => {
|
|
143
|
+
console.error(`✗ ${error?.message || "failed"}`);
|
|
144
|
+
});
|
|
145
|
+
hooks.on("kubb:warn", ({ message }) => {
|
|
146
|
+
console.warn(`⚠ ${message}`);
|
|
147
|
+
});
|
|
148
|
+
hooks.on("kubb:info", ({ message }) => {
|
|
149
|
+
console.info(`ℹ ${message}`);
|
|
150
|
+
});
|
|
151
|
+
hooks.on("kubb:success", ({ message }) => {
|
|
152
|
+
console.log(`✓ ${message}`);
|
|
153
|
+
});
|
|
154
|
+
hooks.on("kubb:plugin:end", ({ plugin, duration }) => {
|
|
155
|
+
const durationStr = duration >= 1e3 ? `${(duration / 1e3).toFixed(2)}s` : `${duration}ms`;
|
|
156
|
+
console.log(`✓ ${plugin.name} completed in ${durationStr}`);
|
|
157
|
+
});
|
|
158
|
+
hooks.on("kubb:files:processing:end", () => {
|
|
159
|
+
console.log("✓ Files written successfully");
|
|
160
|
+
});
|
|
161
|
+
hooks.on("kubb:generation:end", ({ config }) => {
|
|
162
|
+
console.log(config.name ? `✓ Generation completed for ${config.name}` : "✓ Generation completed");
|
|
163
|
+
});
|
|
164
|
+
hooks.on("kubb:generation:summary", ({ config, status, failedPlugins }) => {
|
|
165
|
+
const pluginsCount = config.plugins.length;
|
|
166
|
+
const successCount = pluginsCount - failedPlugins.size;
|
|
167
|
+
console.log(status === "success" ? `Kubb Summary: ✓ ${`${successCount} successful`}, ${pluginsCount} total` : `Kubb Summary: ✓ ${`${successCount} successful`}, ✗ ${`${failedPlugins.size} failed`}, ${pluginsCount} total`);
|
|
168
|
+
});
|
|
140
169
|
async function runBuild(ctx) {
|
|
141
170
|
if (!options?.config) {
|
|
142
171
|
if (ctx.error) ctx.error?.(`[${name}] Config is not set`);
|
|
@@ -146,67 +175,35 @@ const unpluginFactory = (options, meta) => {
|
|
|
146
175
|
const middleware = options.config.middleware?.length ? options.config.middleware : [middlewareBarrel()];
|
|
147
176
|
const hasBarrelMiddleware = middleware.some((m) => m.name === middlewareBarrelName);
|
|
148
177
|
const output = { ...options.config.output };
|
|
149
|
-
if (hasBarrelMiddleware && output.
|
|
178
|
+
if (hasBarrelMiddleware && output.barrel === void 0) output.barrel = { type: "named" };
|
|
150
179
|
if (output.format === void 0) output.format = false;
|
|
151
180
|
if (output.lint === void 0) output.lint = false;
|
|
152
181
|
const config = {
|
|
153
182
|
...options.config,
|
|
154
183
|
adapter: options.config.adapter ?? adapterOas(),
|
|
155
|
-
parsers: options.config.parsers?.length ? options.config.parsers : [parserTs],
|
|
184
|
+
parsers: options.config.parsers?.length ? options.config.parsers : [parserTs, parserTsx],
|
|
156
185
|
middleware,
|
|
157
186
|
output
|
|
158
187
|
};
|
|
159
|
-
|
|
160
|
-
console.log(`Kubb Unplugin ${version} 🧩`);
|
|
161
|
-
});
|
|
162
|
-
hooks.on("kubb:error", ({ error }) => {
|
|
163
|
-
console.error(`✗ ${error?.message || "failed"}`);
|
|
164
|
-
});
|
|
165
|
-
hooks.on("kubb:warn", ({ message }) => {
|
|
166
|
-
console.warn(`⚠ ${message}`);
|
|
167
|
-
});
|
|
168
|
-
hooks.on("kubb:info", ({ message }) => {
|
|
169
|
-
console.info(`ℹ ${message}`);
|
|
170
|
-
});
|
|
171
|
-
hooks.on("kubb:success", ({ message }) => {
|
|
172
|
-
console.log(`✓ ${message}`);
|
|
173
|
-
});
|
|
174
|
-
hooks.on("kubb:plugin:end", ({ plugin, duration }) => {
|
|
175
|
-
const durationStr = duration >= 1e3 ? `${(duration / 1e3).toFixed(2)}s` : `${duration}ms`;
|
|
176
|
-
console.log(`✓ ${plugin.name} completed in ${durationStr}`);
|
|
177
|
-
});
|
|
178
|
-
hooks.on("kubb:files:processing:end", () => {
|
|
179
|
-
console.log("✓ Files written successfully");
|
|
180
|
-
});
|
|
181
|
-
hooks.on("kubb:generation:end", ({ config }) => {
|
|
182
|
-
console.log(config.name ? `✓ Generation completed for ${config.name}` : "✓ Generation completed");
|
|
183
|
-
});
|
|
184
|
-
hooks.on("kubb:generation:summary", ({ config, status, failedPlugins }) => {
|
|
185
|
-
const pluginsCount = config.plugins.length;
|
|
186
|
-
const successCount = pluginsCount - failedPlugins.size;
|
|
187
|
-
console.log(status === "success" ? `Kubb Summary: ✓ ${`${successCount} successful`}, ${pluginsCount} total` : `Kubb Summary: ✓ ${`${successCount} successful`}, ✗ ${`${failedPlugins.size} failed`}, ${pluginsCount} total`);
|
|
188
|
-
});
|
|
188
|
+
const hrStart = process.hrtime();
|
|
189
189
|
await hooks.emit("kubb:lifecycle:start", { version });
|
|
190
|
-
const
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
}
|
|
199
|
-
}, { hooks }).safeBuild();
|
|
200
|
-
if (failedPlugins.size > 0 || error) [error, ...Array.from(failedPlugins).filter((it) => it.error).map((it) => it.error)].filter(Boolean).forEach((err) => {
|
|
190
|
+
const userConfig = config;
|
|
191
|
+
const kubb = createKubb(userConfig, { hooks });
|
|
192
|
+
await kubb.setup();
|
|
193
|
+
const resolvedConfig = kubb.config ?? userConfig;
|
|
194
|
+
await hooks.emit("kubb:generation:start", { config: resolvedConfig });
|
|
195
|
+
const { error, failedPlugins, pluginTimings, files, sources } = await kubb.safeBuild();
|
|
196
|
+
const hasFailures = failedPlugins.size > 0 || error;
|
|
197
|
+
if (hasFailures) [error, ...Array.from(failedPlugins).filter((it) => it.error).map((it) => it.error)].filter(Boolean).forEach((err) => {
|
|
201
198
|
hooks.emit("kubb:error", { error: err });
|
|
202
199
|
});
|
|
203
200
|
await hooks.emit("kubb:generation:end", {
|
|
204
|
-
config,
|
|
201
|
+
config: resolvedConfig,
|
|
205
202
|
files,
|
|
206
203
|
sources
|
|
207
204
|
});
|
|
208
205
|
await hooks.emit("kubb:generation:summary", {
|
|
209
|
-
config,
|
|
206
|
+
config: resolvedConfig,
|
|
210
207
|
failedPlugins,
|
|
211
208
|
filesCreated: files.length,
|
|
212
209
|
status: failedPlugins.size > 0 || error ? "failed" : "success",
|
|
@@ -214,6 +211,14 @@ const unpluginFactory = (options, meta) => {
|
|
|
214
211
|
pluginTimings
|
|
215
212
|
});
|
|
216
213
|
await hooks.emit("kubb:lifecycle:end");
|
|
214
|
+
if (hasFailures) {
|
|
215
|
+
const message = error?.message ?? `Build Error with ${failedPlugins.size} failed plugins`;
|
|
216
|
+
if (ctx.error) {
|
|
217
|
+
ctx.error(`[${name}] ${message}`);
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
throw new Error(`[${name}] ${message}`, { cause: error });
|
|
221
|
+
}
|
|
217
222
|
}
|
|
218
223
|
return {
|
|
219
224
|
name,
|
|
@@ -228,4 +233,4 @@ const unpluginFactory = (options, meta) => {
|
|
|
228
233
|
//#endregion
|
|
229
234
|
export { unpluginFactory as t };
|
|
230
235
|
|
|
231
|
-
//# sourceMappingURL=unpluginFactory-
|
|
236
|
+
//# sourceMappingURL=unpluginFactory-C_rK_c2a.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unpluginFactory-C_rK_c2a.js","names":["#emitter","NodeEventEmitter","unpluginVersion"],"sources":["../../../internals/utils/src/errors.ts","../../../internals/utils/src/asyncEventEmitter.ts","../package.json","../src/unpluginFactory.ts"],"sourcesContent":["/**\n * Thrown when one or more errors occur during a Kubb build.\n * Carries the full list of underlying errors on `errors`.\n *\n * @example\n * ```ts\n * throw new BuildError('Build failed', { errors: [err1, err2] })\n * ```\n */\nexport class BuildError extends Error {\n errors: Array<Error>\n\n constructor(message: string, options: { cause?: Error; errors: Array<Error> }) {\n super(message, { cause: options.cause })\n this.name = 'BuildError'\n this.errors = options.errors\n }\n}\n\n/**\n * Coerces an unknown thrown value to an `Error` instance.\n * Returns the value as-is when it is already an `Error`; otherwise wraps it with `String(value)`.\n *\n * @example\n * ```ts\n * try { ... } catch(err) {\n * throw new BuildError('Build failed', { cause: toError(err), errors: [] })\n * }\n * ```\n */\nexport function toError(value: unknown): Error {\n return value instanceof Error ? value : new Error(String(value))\n}\n\n/**\n * Extracts a human-readable message from any thrown value.\n *\n * @example\n * ```ts\n * getErrorMessage(new Error('oops')) // 'oops'\n * getErrorMessage('plain string') // 'plain string'\n * ```\n */\nexport function getErrorMessage(value: unknown): string {\n return value instanceof Error ? value.message : String(value)\n}\n\n/**\n * Extracts the `.cause` of an `Error` as an `Error`, or `undefined` when absent or not an `Error`.\n *\n * @example\n * ```ts\n * const cause = toCause(buildError) // Error | undefined\n * ```\n */\nexport function toCause(error: Error): Error | undefined {\n return error.cause instanceof Error ? error.cause : undefined\n}\n","import { EventEmitter as NodeEventEmitter } from 'node:events'\nimport { toError } from './errors.ts'\n\n/**\n * A function that can be registered as an event listener, synchronous or async.\n */\ntype AsyncListener<TArgs extends unknown[]> = (...args: TArgs) => void | Promise<void>\n\n/**\n * Typed `EventEmitter` that awaits all async listeners before resolving.\n * Wraps Node's `EventEmitter` with full TypeScript event-map inference.\n *\n * @example\n * ```ts\n * const emitter = new AsyncEventEmitter<{ build: [name: string] }>()\n * emitter.on('build', async (name) => { console.log(name) })\n * await emitter.emit('build', 'petstore') // all listeners awaited\n * ```\n */\nexport class AsyncEventEmitter<TEvents extends { [K in keyof TEvents]: unknown[] }> {\n /**\n * Maximum number of listeners per event before Node emits a memory-leak warning.\n * @default 10\n */\n constructor(maxListener = 10) {\n this.#emitter.setMaxListeners(maxListener)\n }\n\n #emitter = new NodeEventEmitter()\n\n /**\n * Emits `eventName` and awaits all registered listeners sequentially.\n * Throws if any listener rejects, wrapping the cause with the event name and serialized arguments.\n *\n * @example\n * ```ts\n * await emitter.emit('build', 'petstore')\n * ```\n */\n async emit<TEventName extends keyof TEvents & string>(eventName: TEventName, ...eventArgs: TEvents[TEventName]): Promise<void> {\n const listeners = this.#emitter.listeners(eventName) as Array<AsyncListener<TEvents[TEventName]>>\n\n if (listeners.length === 0) {\n return\n }\n\n for (const listener of listeners) {\n try {\n await listener(...eventArgs)\n } catch (err) {\n let serializedArgs: string\n try {\n serializedArgs = JSON.stringify(eventArgs)\n } catch {\n serializedArgs = String(eventArgs)\n }\n throw new Error(`Error in async listener for \"${eventName}\" with eventArgs ${serializedArgs}`, { cause: toError(err) })\n }\n }\n }\n\n /**\n * Registers a persistent listener for `eventName`.\n *\n * @example\n * ```ts\n * emitter.on('build', async (name) => { console.log(name) })\n * ```\n */\n on<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: AsyncListener<TEvents[TEventName]>): void {\n this.#emitter.on(eventName, handler as AsyncListener<unknown[]>)\n }\n\n /**\n * Registers a one-shot listener that removes itself after the first invocation.\n *\n * @example\n * ```ts\n * emitter.onOnce('build', async (name) => { console.log(name) })\n * ```\n */\n onOnce<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: AsyncListener<TEvents[TEventName]>): void {\n const wrapper: AsyncListener<TEvents[TEventName]> = (...args) => {\n this.off(eventName, wrapper)\n return handler(...args)\n }\n this.on(eventName, wrapper)\n }\n\n /**\n * Removes a previously registered listener.\n *\n * @example\n * ```ts\n * emitter.off('build', handler)\n * ```\n */\n off<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: AsyncListener<TEvents[TEventName]>): void {\n this.#emitter.off(eventName, handler as AsyncListener<unknown[]>)\n }\n\n /**\n * Returns the number of listeners registered for `eventName`.\n *\n * @example\n * ```ts\n * emitter.on('build', handler)\n * emitter.listenerCount('build') // 1\n * ```\n */\n listenerCount<TEventName extends keyof TEvents & string>(eventName: TEventName): number {\n return this.#emitter.listenerCount(eventName)\n }\n\n /**\n * Removes all listeners from every event channel.\n *\n * @example\n * ```ts\n * emitter.removeAll()\n * ```\n */\n removeAll(): void {\n this.#emitter.removeAllListeners()\n }\n}\n","","import process from 'node:process'\nimport { AsyncEventEmitter } from '@internals/utils'\nimport { adapterOas } from '@kubb/adapter-oas'\nimport { type Config, createKubb, type KubbHooks } from '@kubb/core'\nimport { middlewareBarrel, middlewareBarrelName } from '@kubb/middleware-barrel'\nimport { parserTs, parserTsx } from '@kubb/parser-ts'\nimport type { UnpluginFactory } from 'unplugin'\nimport { version as unpluginVersion } from '../package.json'\nimport type { Options } from './types.ts'\n\ntype RollupContext = {\n info?: (message: string) => void\n warn?: (message: string) => void\n error?: (message: string) => void\n}\n\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (options, meta) => {\n const name = 'unplugin-kubb' as const\n const hooks = new AsyncEventEmitter<KubbHooks>()\n const isVite = meta.framework === 'vite'\n\n hooks.on('kubb:lifecycle:start', ({ version }) => {\n console.log(`Kubb Unplugin ${version} 🧩`)\n })\n\n hooks.on('kubb:error', ({ error }) => {\n console.error(`✗ ${error?.message || 'failed'}`)\n })\n\n hooks.on('kubb:warn', ({ message }) => {\n console.warn(`⚠ ${message}`)\n })\n\n hooks.on('kubb:info', ({ message }) => {\n console.info(`ℹ ${message}`)\n })\n\n hooks.on('kubb:success', ({ message }) => {\n console.log(`✓ ${message}`)\n })\n\n hooks.on('kubb:plugin:end', ({ plugin, duration }) => {\n const durationStr = duration >= 1000 ? `${(duration / 1000).toFixed(2)}s` : `${duration}ms`\n\n console.log(`✓ ${plugin.name} completed in ${durationStr}`)\n })\n\n hooks.on('kubb:files:processing:end', () => {\n const text = '✓ Files written successfully'\n\n console.log(text)\n })\n\n hooks.on('kubb:generation:end', ({ config }) => {\n console.log(config.name ? `✓ Generation completed for ${config.name}` : '✓ Generation completed')\n })\n\n hooks.on('kubb:generation:summary', ({ config, status, failedPlugins }) => {\n const pluginsCount = config.plugins.length\n const successCount = pluginsCount - failedPlugins.size\n\n console.log(\n status === 'success'\n ? `Kubb Summary: ✓ ${`${successCount} successful`}, ${pluginsCount} total`\n : `Kubb Summary: ✓ ${`${successCount} successful`}, ✗ ${`${failedPlugins.size} failed`}, ${pluginsCount} total`,\n )\n })\n\n async function runBuild(ctx: RollupContext) {\n if (!options?.config) {\n if (ctx.error) {\n ctx.error?.(`[${name}] Config is not set`)\n } else {\n console.error(`[${name}] Config is not set`)\n }\n return\n }\n\n const middleware = options.config.middleware?.length ? options.config.middleware : [middlewareBarrel()]\n const hasBarrelMiddleware = middleware.some((m) => m.name === middlewareBarrelName)\n const output = { ...options.config.output }\n if (hasBarrelMiddleware && output.barrel === undefined) {\n output.barrel = { type: 'named' }\n }\n if (output.format === undefined) {\n output.format = false\n }\n if (output.lint === undefined) {\n output.lint = false\n }\n\n const config = {\n ...options.config,\n adapter: options.config.adapter ?? adapterOas(),\n parsers: options.config.parsers?.length ? options.config.parsers : [parserTs, parserTsx],\n middleware,\n output,\n }\n const hrStart = process.hrtime()\n\n await hooks.emit('kubb:lifecycle:start', { version: unpluginVersion })\n\n const userConfig = config as Config\n\n const kubb = createKubb(\n userConfig,\n { hooks },\n )\n await kubb.setup()\n\n const resolvedConfig = kubb.config ?? userConfig\n\n await hooks.emit('kubb:generation:start', { config: resolvedConfig })\n\n const { error, failedPlugins, pluginTimings, files, sources } = await kubb.safeBuild()\n\n const hasFailures = failedPlugins.size > 0 || error\n if (hasFailures) {\n // Collect all errors from failed plugins and general error\n const allErrors: Error[] = [\n error,\n ...Array.from(failedPlugins)\n .filter((it) => it.error)\n .map((it) => it.error),\n ].filter(Boolean)\n\n allErrors.forEach((err) => {\n hooks.emit('kubb:error', { error: err })\n })\n }\n\n await hooks.emit('kubb:generation:end', { config: resolvedConfig, files, sources })\n await hooks.emit('kubb:generation:summary', {\n config: resolvedConfig,\n failedPlugins,\n filesCreated: files.length,\n status: failedPlugins.size > 0 || error ? 'failed' : 'success',\n hrStart,\n pluginTimings,\n })\n\n await hooks.emit('kubb:lifecycle:end')\n\n if (hasFailures) {\n const message = error?.message ?? `Build Error with ${failedPlugins.size} failed plugins`\n if (ctx.error) {\n ctx.error(`[${name}] ${message}`)\n return\n }\n\n throw new Error(`[${name}] ${message}`, { cause: error })\n }\n }\n\n return {\n name,\n enforce: 'pre',\n apply: isVite ? 'build' : undefined,\n async buildStart() {\n await runBuild(this as unknown as RollupContext)\n },\n vite: {},\n }\n}\n"],"mappings":"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"}
|
package/dist/unpluginFactory.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_unpluginFactory = require("./unpluginFactory-
|
|
2
|
+
const require_unpluginFactory = require("./unpluginFactory-Amggr1Ea.cjs");
|
|
3
3
|
exports.unpluginFactory = require_unpluginFactory.unpluginFactory;
|
package/dist/unpluginFactory.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as unpluginFactory } from "./unpluginFactory-
|
|
1
|
+
import { t as unpluginFactory } from "./unpluginFactory-C_rK_c2a.js";
|
|
2
2
|
export { unpluginFactory };
|
package/dist/vite.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_unpluginFactory = require("./unpluginFactory-
|
|
1
|
+
const require_unpluginFactory = require("./unpluginFactory-Amggr1Ea.cjs");
|
|
2
2
|
//#region src/vite.ts
|
|
3
3
|
var vite_default = (0, require("unplugin").createVitePlugin)(require_unpluginFactory.unpluginFactory);
|
|
4
4
|
//#endregion
|
package/dist/vite.js
CHANGED
package/dist/webpack.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_unpluginFactory = require("./unpluginFactory-
|
|
1
|
+
const require_unpluginFactory = require("./unpluginFactory-Amggr1Ea.cjs");
|
|
2
2
|
//#region src/webpack.ts
|
|
3
3
|
var webpack_default = (0, require("unplugin").createWebpackPlugin)(require_unpluginFactory.unpluginFactory);
|
|
4
4
|
//#endregion
|
package/dist/webpack.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as unpluginFactory } from "./unpluginFactory-
|
|
1
|
+
import { t as unpluginFactory } from "./unpluginFactory-C_rK_c2a.js";
|
|
2
2
|
import { createWebpackPlugin } from "unplugin";
|
|
3
3
|
//#region src/webpack.ts
|
|
4
4
|
var webpack_default = createWebpackPlugin(unpluginFactory);
|
package/package.json
CHANGED
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "unplugin-kubb",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
4
|
-
"description": "Universal build
|
|
3
|
+
"version": "5.0.0-beta.9",
|
|
4
|
+
"description": "Universal build integration for Kubb using unplugin. Plug OpenAPI code generation into Vite, Webpack, Rollup, esbuild, Rspack, Nuxt, and Astro as part of your regular build pipeline.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"astro",
|
|
7
|
-
"
|
|
8
|
-
"bundler",
|
|
9
|
-
"code-generator",
|
|
7
|
+
"codegen",
|
|
10
8
|
"esbuild",
|
|
9
|
+
"farm",
|
|
11
10
|
"kubb",
|
|
12
11
|
"nuxt",
|
|
13
12
|
"openapi",
|
|
14
13
|
"rollup",
|
|
15
14
|
"rspack",
|
|
16
|
-
"swagger",
|
|
17
|
-
"transform",
|
|
18
15
|
"typescript",
|
|
19
16
|
"unplugin",
|
|
20
17
|
"vite",
|
|
@@ -104,19 +101,19 @@
|
|
|
104
101
|
},
|
|
105
102
|
"dependencies": {
|
|
106
103
|
"unplugin": "^3.0.0",
|
|
107
|
-
"@kubb/adapter-oas": "5.0.0-beta.
|
|
108
|
-
"@kubb/core": "5.0.0-beta.
|
|
109
|
-
"@kubb/
|
|
110
|
-
"@kubb/
|
|
104
|
+
"@kubb/adapter-oas": "5.0.0-beta.9",
|
|
105
|
+
"@kubb/core": "5.0.0-beta.9",
|
|
106
|
+
"@kubb/parser-ts": "5.0.0-beta.9",
|
|
107
|
+
"@kubb/middleware-barrel": "5.0.0-beta.9"
|
|
111
108
|
},
|
|
112
109
|
"devDependencies": {
|
|
113
110
|
"@farmfe/core": "^1.7.11",
|
|
114
|
-
"@nuxt/kit": "^4.4.
|
|
115
|
-
"@nuxt/schema": "^4.4.
|
|
111
|
+
"@nuxt/kit": "^4.4.4",
|
|
112
|
+
"@nuxt/schema": "^4.4.4",
|
|
116
113
|
"esbuild": "^0.28.0",
|
|
117
114
|
"rolldown": "1.0.0-rc.16",
|
|
118
|
-
"rollup": "^4.60.
|
|
119
|
-
"vite": "^8.0.
|
|
115
|
+
"rollup": "^4.60.3",
|
|
116
|
+
"vite": "^8.0.11",
|
|
120
117
|
"webpack": "^5.106.2",
|
|
121
118
|
"@internals/utils": "0.0.0"
|
|
122
119
|
},
|
package/src/nuxt.ts
CHANGED
package/src/unpluginFactory.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { AsyncEventEmitter } from '@internals/utils'
|
|
|
3
3
|
import { adapterOas } from '@kubb/adapter-oas'
|
|
4
4
|
import { type Config, createKubb, type KubbHooks } from '@kubb/core'
|
|
5
5
|
import { middlewareBarrel, middlewareBarrelName } from '@kubb/middleware-barrel'
|
|
6
|
-
import { parserTs } from '@kubb/parser-ts'
|
|
6
|
+
import { parserTs, parserTsx } from '@kubb/parser-ts'
|
|
7
7
|
import type { UnpluginFactory } from 'unplugin'
|
|
8
8
|
import { version as unpluginVersion } from '../package.json'
|
|
9
9
|
import type { Options } from './types.ts'
|
|
@@ -18,7 +18,53 @@ export const unpluginFactory: UnpluginFactory<Options | undefined> = (options, m
|
|
|
18
18
|
const name = 'unplugin-kubb' as const
|
|
19
19
|
const hooks = new AsyncEventEmitter<KubbHooks>()
|
|
20
20
|
const isVite = meta.framework === 'vite'
|
|
21
|
-
|
|
21
|
+
|
|
22
|
+
hooks.on('kubb:lifecycle:start', ({ version }) => {
|
|
23
|
+
console.log(`Kubb Unplugin ${version} 🧩`)
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
hooks.on('kubb:error', ({ error }) => {
|
|
27
|
+
console.error(`✗ ${error?.message || 'failed'}`)
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
hooks.on('kubb:warn', ({ message }) => {
|
|
31
|
+
console.warn(`⚠ ${message}`)
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
hooks.on('kubb:info', ({ message }) => {
|
|
35
|
+
console.info(`ℹ ${message}`)
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
hooks.on('kubb:success', ({ message }) => {
|
|
39
|
+
console.log(`✓ ${message}`)
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
hooks.on('kubb:plugin:end', ({ plugin, duration }) => {
|
|
43
|
+
const durationStr = duration >= 1000 ? `${(duration / 1000).toFixed(2)}s` : `${duration}ms`
|
|
44
|
+
|
|
45
|
+
console.log(`✓ ${plugin.name} completed in ${durationStr}`)
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
hooks.on('kubb:files:processing:end', () => {
|
|
49
|
+
const text = '✓ Files written successfully'
|
|
50
|
+
|
|
51
|
+
console.log(text)
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
hooks.on('kubb:generation:end', ({ config }) => {
|
|
55
|
+
console.log(config.name ? `✓ Generation completed for ${config.name}` : '✓ Generation completed')
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
hooks.on('kubb:generation:summary', ({ config, status, failedPlugins }) => {
|
|
59
|
+
const pluginsCount = config.plugins.length
|
|
60
|
+
const successCount = pluginsCount - failedPlugins.size
|
|
61
|
+
|
|
62
|
+
console.log(
|
|
63
|
+
status === 'success'
|
|
64
|
+
? `Kubb Summary: ✓ ${`${successCount} successful`}, ${pluginsCount} total`
|
|
65
|
+
: `Kubb Summary: ✓ ${`${successCount} successful`}, ✗ ${`${failedPlugins.size} failed`}, ${pluginsCount} total`,
|
|
66
|
+
)
|
|
67
|
+
})
|
|
22
68
|
|
|
23
69
|
async function runBuild(ctx: RollupContext) {
|
|
24
70
|
if (!options?.config) {
|
|
@@ -33,8 +79,8 @@ export const unpluginFactory: UnpluginFactory<Options | undefined> = (options, m
|
|
|
33
79
|
const middleware = options.config.middleware?.length ? options.config.middleware : [middlewareBarrel()]
|
|
34
80
|
const hasBarrelMiddleware = middleware.some((m) => m.name === middlewareBarrelName)
|
|
35
81
|
const output = { ...options.config.output }
|
|
36
|
-
if (hasBarrelMiddleware && output.
|
|
37
|
-
output.
|
|
82
|
+
if (hasBarrelMiddleware && output.barrel === undefined) {
|
|
83
|
+
output.barrel = { type: 'named' }
|
|
38
84
|
}
|
|
39
85
|
if (output.format === undefined) {
|
|
40
86
|
output.format = false
|
|
@@ -46,75 +92,27 @@ export const unpluginFactory: UnpluginFactory<Options | undefined> = (options, m
|
|
|
46
92
|
const config = {
|
|
47
93
|
...options.config,
|
|
48
94
|
adapter: options.config.adapter ?? adapterOas(),
|
|
49
|
-
parsers: options.config.parsers?.length ? options.config.parsers : [parserTs],
|
|
95
|
+
parsers: options.config.parsers?.length ? options.config.parsers : [parserTs, parserTsx],
|
|
50
96
|
middleware,
|
|
51
97
|
output,
|
|
52
98
|
}
|
|
99
|
+
const hrStart = process.hrtime()
|
|
53
100
|
|
|
54
|
-
hooks.
|
|
55
|
-
console.log(`Kubb Unplugin ${version} 🧩`)
|
|
56
|
-
})
|
|
57
|
-
|
|
58
|
-
hooks.on('kubb:error', ({ error }) => {
|
|
59
|
-
console.error(`✗ ${error?.message || 'failed'}`)
|
|
60
|
-
})
|
|
61
|
-
|
|
62
|
-
hooks.on('kubb:warn', ({ message }) => {
|
|
63
|
-
console.warn(`⚠ ${message}`)
|
|
64
|
-
})
|
|
65
|
-
|
|
66
|
-
hooks.on('kubb:info', ({ message }) => {
|
|
67
|
-
console.info(`ℹ ${message}`)
|
|
68
|
-
})
|
|
69
|
-
|
|
70
|
-
hooks.on('kubb:success', ({ message }) => {
|
|
71
|
-
console.log(`✓ ${message}`)
|
|
72
|
-
})
|
|
73
|
-
|
|
74
|
-
hooks.on('kubb:plugin:end', ({ plugin, duration }) => {
|
|
75
|
-
const durationStr = duration >= 1000 ? `${(duration / 1000).toFixed(2)}s` : `${duration}ms`
|
|
76
|
-
|
|
77
|
-
console.log(`✓ ${plugin.name} completed in ${durationStr}`)
|
|
78
|
-
})
|
|
79
|
-
|
|
80
|
-
hooks.on('kubb:files:processing:end', () => {
|
|
81
|
-
const text = '✓ Files written successfully'
|
|
82
|
-
|
|
83
|
-
console.log(text)
|
|
84
|
-
})
|
|
85
|
-
|
|
86
|
-
hooks.on('kubb:generation:end', ({ config }) => {
|
|
87
|
-
console.log(config.name ? `✓ Generation completed for ${config.name}` : '✓ Generation completed')
|
|
88
|
-
})
|
|
89
|
-
|
|
90
|
-
hooks.on('kubb:generation:summary', ({ config, status, failedPlugins }) => {
|
|
91
|
-
const pluginsCount = config.plugins.length
|
|
92
|
-
const successCount = pluginsCount - failedPlugins.size
|
|
101
|
+
await hooks.emit('kubb:lifecycle:start', { version: unpluginVersion })
|
|
93
102
|
|
|
94
|
-
|
|
95
|
-
status === 'success'
|
|
96
|
-
? `Kubb Summary: ✓ ${`${successCount} successful`}, ${pluginsCount} total`
|
|
97
|
-
: `Kubb Summary: ✓ ${`${successCount} successful`}, ✗ ${`${failedPlugins.size} failed`}, ${pluginsCount} total`,
|
|
98
|
-
)
|
|
99
|
-
})
|
|
103
|
+
const userConfig = config as Config
|
|
100
104
|
|
|
101
|
-
|
|
105
|
+
const kubb = createKubb(
|
|
106
|
+
userConfig,
|
|
107
|
+
{ hooks },
|
|
108
|
+
)
|
|
109
|
+
await kubb.setup()
|
|
102
110
|
|
|
103
|
-
const
|
|
111
|
+
const resolvedConfig = kubb.config ?? userConfig
|
|
104
112
|
|
|
105
|
-
await hooks.emit('kubb:generation:start', { config:
|
|
113
|
+
await hooks.emit('kubb:generation:start', { config: resolvedConfig })
|
|
106
114
|
|
|
107
|
-
const { error, failedPlugins, pluginTimings, files, sources } = await
|
|
108
|
-
{
|
|
109
|
-
root: process.cwd(),
|
|
110
|
-
...userConfig,
|
|
111
|
-
output: {
|
|
112
|
-
write: true,
|
|
113
|
-
...userConfig.output,
|
|
114
|
-
},
|
|
115
|
-
},
|
|
116
|
-
{ hooks },
|
|
117
|
-
).safeBuild()
|
|
115
|
+
const { error, failedPlugins, pluginTimings, files, sources } = await kubb.safeBuild()
|
|
118
116
|
|
|
119
117
|
const hasFailures = failedPlugins.size > 0 || error
|
|
120
118
|
if (hasFailures) {
|
|
@@ -131,9 +129,9 @@ export const unpluginFactory: UnpluginFactory<Options | undefined> = (options, m
|
|
|
131
129
|
})
|
|
132
130
|
}
|
|
133
131
|
|
|
134
|
-
await hooks.emit('kubb:generation:end', { config:
|
|
132
|
+
await hooks.emit('kubb:generation:end', { config: resolvedConfig, files, sources })
|
|
135
133
|
await hooks.emit('kubb:generation:summary', {
|
|
136
|
-
config:
|
|
134
|
+
config: resolvedConfig,
|
|
137
135
|
failedPlugins,
|
|
138
136
|
filesCreated: files.length,
|
|
139
137
|
status: failedPlugins.size > 0 || error ? 'failed' : 'success',
|
|
@@ -142,6 +140,16 @@ export const unpluginFactory: UnpluginFactory<Options | undefined> = (options, m
|
|
|
142
140
|
})
|
|
143
141
|
|
|
144
142
|
await hooks.emit('kubb:lifecycle:end')
|
|
143
|
+
|
|
144
|
+
if (hasFailures) {
|
|
145
|
+
const message = error?.message ?? `Build Error with ${failedPlugins.size} failed plugins`
|
|
146
|
+
if (ctx.error) {
|
|
147
|
+
ctx.error(`[${name}] ${message}`)
|
|
148
|
+
return
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
throw new Error(`[${name}] ${message}`, { cause: error })
|
|
152
|
+
}
|
|
145
153
|
}
|
|
146
154
|
|
|
147
155
|
return {
|
|
@@ -151,7 +159,6 @@ export const unpluginFactory: UnpluginFactory<Options | undefined> = (options, m
|
|
|
151
159
|
async buildStart() {
|
|
152
160
|
await runBuild(this as unknown as RollupContext)
|
|
153
161
|
},
|
|
154
|
-
|
|
155
162
|
vite: {},
|
|
156
163
|
}
|
|
157
164
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unpluginFactory-B9g6Ykbq.cjs","names":["#emitter","NodeEventEmitter","process","middlewareBarrelName","parserTs","unpluginVersion"],"sources":["../../../internals/utils/src/errors.ts","../../../internals/utils/src/asyncEventEmitter.ts","../package.json","../src/unpluginFactory.ts"],"sourcesContent":["/**\n * Thrown when one or more errors occur during a Kubb build.\n * Carries the full list of underlying errors on `errors`.\n *\n * @example\n * ```ts\n * throw new BuildError('Build failed', { errors: [err1, err2] })\n * ```\n */\nexport class BuildError extends Error {\n errors: Array<Error>\n\n constructor(message: string, options: { cause?: Error; errors: Array<Error> }) {\n super(message, { cause: options.cause })\n this.name = 'BuildError'\n this.errors = options.errors\n }\n}\n\n/**\n * Coerces an unknown thrown value to an `Error` instance.\n * Returns the value as-is when it is already an `Error`; otherwise wraps it with `String(value)`.\n *\n * @example\n * ```ts\n * try { ... } catch(err) {\n * throw new BuildError('Build failed', { cause: toError(err), errors: [] })\n * }\n * ```\n */\nexport function toError(value: unknown): Error {\n return value instanceof Error ? value : new Error(String(value))\n}\n\n/**\n * Extracts a human-readable message from any thrown value.\n *\n * @example\n * ```ts\n * getErrorMessage(new Error('oops')) // 'oops'\n * getErrorMessage('plain string') // 'plain string'\n * ```\n */\nexport function getErrorMessage(value: unknown): string {\n return value instanceof Error ? value.message : String(value)\n}\n\n/**\n * Extracts the `.cause` of an `Error` as an `Error`, or `undefined` when absent or not an `Error`.\n *\n * @example\n * ```ts\n * const cause = toCause(buildError) // Error | undefined\n * ```\n */\nexport function toCause(error: Error): Error | undefined {\n return error.cause instanceof Error ? error.cause : undefined\n}\n","import { EventEmitter as NodeEventEmitter } from 'node:events'\nimport { toError } from './errors.ts'\n\n/**\n * A function that can be registered as an event listener, synchronous or async.\n */\ntype AsyncListener<TArgs extends unknown[]> = (...args: TArgs) => void | Promise<void>\n\n/**\n * Typed `EventEmitter` that awaits all async listeners before resolving.\n * Wraps Node's `EventEmitter` with full TypeScript event-map inference.\n *\n * @example\n * ```ts\n * const emitter = new AsyncEventEmitter<{ build: [name: string] }>()\n * emitter.on('build', async (name) => { console.log(name) })\n * await emitter.emit('build', 'petstore') // all listeners awaited\n * ```\n */\nexport class AsyncEventEmitter<TEvents extends { [K in keyof TEvents]: unknown[] }> {\n /**\n * Maximum number of listeners per event before Node emits a memory-leak warning.\n * @default 10\n */\n constructor(maxListener = 10) {\n this.#emitter.setMaxListeners(maxListener)\n }\n\n #emitter = new NodeEventEmitter()\n\n /**\n * Emits `eventName` and awaits all registered listeners sequentially.\n * Throws if any listener rejects, wrapping the cause with the event name and serialized arguments.\n *\n * @example\n * ```ts\n * await emitter.emit('build', 'petstore')\n * ```\n */\n async emit<TEventName extends keyof TEvents & string>(eventName: TEventName, ...eventArgs: TEvents[TEventName]): Promise<void> {\n const listeners = this.#emitter.listeners(eventName) as Array<AsyncListener<TEvents[TEventName]>>\n\n if (listeners.length === 0) {\n return\n }\n\n for (const listener of listeners) {\n try {\n await listener(...eventArgs)\n } catch (err) {\n let serializedArgs: string\n try {\n serializedArgs = JSON.stringify(eventArgs)\n } catch {\n serializedArgs = String(eventArgs)\n }\n throw new Error(`Error in async listener for \"${eventName}\" with eventArgs ${serializedArgs}`, { cause: toError(err) })\n }\n }\n }\n\n /**\n * Registers a persistent listener for `eventName`.\n *\n * @example\n * ```ts\n * emitter.on('build', async (name) => { console.log(name) })\n * ```\n */\n on<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: AsyncListener<TEvents[TEventName]>): void {\n this.#emitter.on(eventName, handler as AsyncListener<unknown[]>)\n }\n\n /**\n * Registers a one-shot listener that removes itself after the first invocation.\n *\n * @example\n * ```ts\n * emitter.onOnce('build', async (name) => { console.log(name) })\n * ```\n */\n onOnce<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: AsyncListener<TEvents[TEventName]>): void {\n const wrapper: AsyncListener<TEvents[TEventName]> = (...args) => {\n this.off(eventName, wrapper)\n return handler(...args)\n }\n this.on(eventName, wrapper)\n }\n\n /**\n * Removes a previously registered listener.\n *\n * @example\n * ```ts\n * emitter.off('build', handler)\n * ```\n */\n off<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: AsyncListener<TEvents[TEventName]>): void {\n this.#emitter.off(eventName, handler as AsyncListener<unknown[]>)\n }\n\n /**\n * Returns the number of listeners registered for `eventName`.\n *\n * @example\n * ```ts\n * emitter.on('build', handler)\n * emitter.listenerCount('build') // 1\n * ```\n */\n listenerCount<TEventName extends keyof TEvents & string>(eventName: TEventName): number {\n return this.#emitter.listenerCount(eventName)\n }\n\n /**\n * Removes all listeners from every event channel.\n *\n * @example\n * ```ts\n * emitter.removeAll()\n * ```\n */\n removeAll(): void {\n this.#emitter.removeAllListeners()\n }\n}\n","","import process from 'node:process'\nimport { AsyncEventEmitter } from '@internals/utils'\nimport { adapterOas } from '@kubb/adapter-oas'\nimport { type Config, createKubb, type KubbHooks } from '@kubb/core'\nimport { middlewareBarrel, middlewareBarrelName } from '@kubb/middleware-barrel'\nimport { parserTs } from '@kubb/parser-ts'\nimport type { UnpluginFactory } from 'unplugin'\nimport { version as unpluginVersion } from '../package.json'\nimport type { Options } from './types.ts'\n\ntype RollupContext = {\n info?: (message: string) => void\n warn?: (message: string) => void\n error?: (message: string) => void\n}\n\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (options, meta) => {\n const name = 'unplugin-kubb' as const\n const hooks = new AsyncEventEmitter<KubbHooks>()\n const isVite = meta.framework === 'vite'\n const hrStart = process.hrtime()\n\n async function runBuild(ctx: RollupContext) {\n if (!options?.config) {\n if (ctx.error) {\n ctx.error?.(`[${name}] Config is not set`)\n } else {\n console.error(`[${name}] Config is not set`)\n }\n return\n }\n\n const middleware = options.config.middleware?.length ? options.config.middleware : [middlewareBarrel()]\n const hasBarrelMiddleware = middleware.some((m) => m.name === middlewareBarrelName)\n const output = { ...options.config.output }\n if (hasBarrelMiddleware && output.barrelType === undefined) {\n output.barrelType = 'named'\n }\n if (output.format === undefined) {\n output.format = false\n }\n if (output.lint === undefined) {\n output.lint = false\n }\n\n const config = {\n ...options.config,\n adapter: options.config.adapter ?? adapterOas(),\n parsers: options.config.parsers?.length ? options.config.parsers : [parserTs],\n middleware,\n output,\n }\n\n hooks.on('kubb:lifecycle:start', ({ version }) => {\n console.log(`Kubb Unplugin ${version} 🧩`)\n })\n\n hooks.on('kubb:error', ({ error }) => {\n console.error(`✗ ${error?.message || 'failed'}`)\n })\n\n hooks.on('kubb:warn', ({ message }) => {\n console.warn(`⚠ ${message}`)\n })\n\n hooks.on('kubb:info', ({ message }) => {\n console.info(`ℹ ${message}`)\n })\n\n hooks.on('kubb:success', ({ message }) => {\n console.log(`✓ ${message}`)\n })\n\n hooks.on('kubb:plugin:end', ({ plugin, duration }) => {\n const durationStr = duration >= 1000 ? `${(duration / 1000).toFixed(2)}s` : `${duration}ms`\n\n console.log(`✓ ${plugin.name} completed in ${durationStr}`)\n })\n\n hooks.on('kubb:files:processing:end', () => {\n const text = '✓ Files written successfully'\n\n console.log(text)\n })\n\n hooks.on('kubb:generation:end', ({ config }) => {\n console.log(config.name ? `✓ Generation completed for ${config.name}` : '✓ Generation completed')\n })\n\n hooks.on('kubb:generation:summary', ({ config, status, failedPlugins }) => {\n const pluginsCount = config.plugins.length\n const successCount = pluginsCount - failedPlugins.size\n\n console.log(\n status === 'success'\n ? `Kubb Summary: ✓ ${`${successCount} successful`}, ${pluginsCount} total`\n : `Kubb Summary: ✓ ${`${successCount} successful`}, ✗ ${`${failedPlugins.size} failed`}, ${pluginsCount} total`,\n )\n })\n\n await hooks.emit('kubb:lifecycle:start', { version: unpluginVersion })\n\n const { root: _root, ...userConfig } = config as Config\n\n await hooks.emit('kubb:generation:start', { config: config as Config })\n\n const { error, failedPlugins, pluginTimings, files, sources } = await createKubb(\n {\n root: process.cwd(),\n ...userConfig,\n output: {\n write: true,\n ...userConfig.output,\n },\n },\n { hooks },\n ).safeBuild()\n\n const hasFailures = failedPlugins.size > 0 || error\n if (hasFailures) {\n // Collect all errors from failed plugins and general error\n const allErrors: Error[] = [\n error,\n ...Array.from(failedPlugins)\n .filter((it) => it.error)\n .map((it) => it.error),\n ].filter(Boolean)\n\n allErrors.forEach((err) => {\n hooks.emit('kubb:error', { error: err })\n })\n }\n\n await hooks.emit('kubb:generation:end', { config: config as Config, files, sources })\n await hooks.emit('kubb:generation:summary', {\n config: config as Config,\n failedPlugins,\n filesCreated: files.length,\n status: failedPlugins.size > 0 || error ? 'failed' : 'success',\n hrStart,\n pluginTimings,\n })\n\n await hooks.emit('kubb:lifecycle:end')\n }\n\n return {\n name,\n enforce: 'pre',\n apply: isVite ? 'build' : undefined,\n async buildStart() {\n await runBuild(this as unknown as RollupContext)\n },\n\n vite: {},\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unpluginFactory-BWwh02eg.js","names":["#emitter","NodeEventEmitter","unpluginVersion"],"sources":["../../../internals/utils/src/errors.ts","../../../internals/utils/src/asyncEventEmitter.ts","../package.json","../src/unpluginFactory.ts"],"sourcesContent":["/**\n * Thrown when one or more errors occur during a Kubb build.\n * Carries the full list of underlying errors on `errors`.\n *\n * @example\n * ```ts\n * throw new BuildError('Build failed', { errors: [err1, err2] })\n * ```\n */\nexport class BuildError extends Error {\n errors: Array<Error>\n\n constructor(message: string, options: { cause?: Error; errors: Array<Error> }) {\n super(message, { cause: options.cause })\n this.name = 'BuildError'\n this.errors = options.errors\n }\n}\n\n/**\n * Coerces an unknown thrown value to an `Error` instance.\n * Returns the value as-is when it is already an `Error`; otherwise wraps it with `String(value)`.\n *\n * @example\n * ```ts\n * try { ... } catch(err) {\n * throw new BuildError('Build failed', { cause: toError(err), errors: [] })\n * }\n * ```\n */\nexport function toError(value: unknown): Error {\n return value instanceof Error ? value : new Error(String(value))\n}\n\n/**\n * Extracts a human-readable message from any thrown value.\n *\n * @example\n * ```ts\n * getErrorMessage(new Error('oops')) // 'oops'\n * getErrorMessage('plain string') // 'plain string'\n * ```\n */\nexport function getErrorMessage(value: unknown): string {\n return value instanceof Error ? value.message : String(value)\n}\n\n/**\n * Extracts the `.cause` of an `Error` as an `Error`, or `undefined` when absent or not an `Error`.\n *\n * @example\n * ```ts\n * const cause = toCause(buildError) // Error | undefined\n * ```\n */\nexport function toCause(error: Error): Error | undefined {\n return error.cause instanceof Error ? error.cause : undefined\n}\n","import { EventEmitter as NodeEventEmitter } from 'node:events'\nimport { toError } from './errors.ts'\n\n/**\n * A function that can be registered as an event listener, synchronous or async.\n */\ntype AsyncListener<TArgs extends unknown[]> = (...args: TArgs) => void | Promise<void>\n\n/**\n * Typed `EventEmitter` that awaits all async listeners before resolving.\n * Wraps Node's `EventEmitter` with full TypeScript event-map inference.\n *\n * @example\n * ```ts\n * const emitter = new AsyncEventEmitter<{ build: [name: string] }>()\n * emitter.on('build', async (name) => { console.log(name) })\n * await emitter.emit('build', 'petstore') // all listeners awaited\n * ```\n */\nexport class AsyncEventEmitter<TEvents extends { [K in keyof TEvents]: unknown[] }> {\n /**\n * Maximum number of listeners per event before Node emits a memory-leak warning.\n * @default 10\n */\n constructor(maxListener = 10) {\n this.#emitter.setMaxListeners(maxListener)\n }\n\n #emitter = new NodeEventEmitter()\n\n /**\n * Emits `eventName` and awaits all registered listeners sequentially.\n * Throws if any listener rejects, wrapping the cause with the event name and serialized arguments.\n *\n * @example\n * ```ts\n * await emitter.emit('build', 'petstore')\n * ```\n */\n async emit<TEventName extends keyof TEvents & string>(eventName: TEventName, ...eventArgs: TEvents[TEventName]): Promise<void> {\n const listeners = this.#emitter.listeners(eventName) as Array<AsyncListener<TEvents[TEventName]>>\n\n if (listeners.length === 0) {\n return\n }\n\n for (const listener of listeners) {\n try {\n await listener(...eventArgs)\n } catch (err) {\n let serializedArgs: string\n try {\n serializedArgs = JSON.stringify(eventArgs)\n } catch {\n serializedArgs = String(eventArgs)\n }\n throw new Error(`Error in async listener for \"${eventName}\" with eventArgs ${serializedArgs}`, { cause: toError(err) })\n }\n }\n }\n\n /**\n * Registers a persistent listener for `eventName`.\n *\n * @example\n * ```ts\n * emitter.on('build', async (name) => { console.log(name) })\n * ```\n */\n on<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: AsyncListener<TEvents[TEventName]>): void {\n this.#emitter.on(eventName, handler as AsyncListener<unknown[]>)\n }\n\n /**\n * Registers a one-shot listener that removes itself after the first invocation.\n *\n * @example\n * ```ts\n * emitter.onOnce('build', async (name) => { console.log(name) })\n * ```\n */\n onOnce<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: AsyncListener<TEvents[TEventName]>): void {\n const wrapper: AsyncListener<TEvents[TEventName]> = (...args) => {\n this.off(eventName, wrapper)\n return handler(...args)\n }\n this.on(eventName, wrapper)\n }\n\n /**\n * Removes a previously registered listener.\n *\n * @example\n * ```ts\n * emitter.off('build', handler)\n * ```\n */\n off<TEventName extends keyof TEvents & string>(eventName: TEventName, handler: AsyncListener<TEvents[TEventName]>): void {\n this.#emitter.off(eventName, handler as AsyncListener<unknown[]>)\n }\n\n /**\n * Returns the number of listeners registered for `eventName`.\n *\n * @example\n * ```ts\n * emitter.on('build', handler)\n * emitter.listenerCount('build') // 1\n * ```\n */\n listenerCount<TEventName extends keyof TEvents & string>(eventName: TEventName): number {\n return this.#emitter.listenerCount(eventName)\n }\n\n /**\n * Removes all listeners from every event channel.\n *\n * @example\n * ```ts\n * emitter.removeAll()\n * ```\n */\n removeAll(): void {\n this.#emitter.removeAllListeners()\n }\n}\n","","import process from 'node:process'\nimport { AsyncEventEmitter } from '@internals/utils'\nimport { adapterOas } from '@kubb/adapter-oas'\nimport { type Config, createKubb, type KubbHooks } from '@kubb/core'\nimport { middlewareBarrel, middlewareBarrelName } from '@kubb/middleware-barrel'\nimport { parserTs } from '@kubb/parser-ts'\nimport type { UnpluginFactory } from 'unplugin'\nimport { version as unpluginVersion } from '../package.json'\nimport type { Options } from './types.ts'\n\ntype RollupContext = {\n info?: (message: string) => void\n warn?: (message: string) => void\n error?: (message: string) => void\n}\n\nexport const unpluginFactory: UnpluginFactory<Options | undefined> = (options, meta) => {\n const name = 'unplugin-kubb' as const\n const hooks = new AsyncEventEmitter<KubbHooks>()\n const isVite = meta.framework === 'vite'\n const hrStart = process.hrtime()\n\n async function runBuild(ctx: RollupContext) {\n if (!options?.config) {\n if (ctx.error) {\n ctx.error?.(`[${name}] Config is not set`)\n } else {\n console.error(`[${name}] Config is not set`)\n }\n return\n }\n\n const middleware = options.config.middleware?.length ? options.config.middleware : [middlewareBarrel()]\n const hasBarrelMiddleware = middleware.some((m) => m.name === middlewareBarrelName)\n const output = { ...options.config.output }\n if (hasBarrelMiddleware && output.barrelType === undefined) {\n output.barrelType = 'named'\n }\n if (output.format === undefined) {\n output.format = false\n }\n if (output.lint === undefined) {\n output.lint = false\n }\n\n const config = {\n ...options.config,\n adapter: options.config.adapter ?? adapterOas(),\n parsers: options.config.parsers?.length ? options.config.parsers : [parserTs],\n middleware,\n output,\n }\n\n hooks.on('kubb:lifecycle:start', ({ version }) => {\n console.log(`Kubb Unplugin ${version} 🧩`)\n })\n\n hooks.on('kubb:error', ({ error }) => {\n console.error(`✗ ${error?.message || 'failed'}`)\n })\n\n hooks.on('kubb:warn', ({ message }) => {\n console.warn(`⚠ ${message}`)\n })\n\n hooks.on('kubb:info', ({ message }) => {\n console.info(`ℹ ${message}`)\n })\n\n hooks.on('kubb:success', ({ message }) => {\n console.log(`✓ ${message}`)\n })\n\n hooks.on('kubb:plugin:end', ({ plugin, duration }) => {\n const durationStr = duration >= 1000 ? `${(duration / 1000).toFixed(2)}s` : `${duration}ms`\n\n console.log(`✓ ${plugin.name} completed in ${durationStr}`)\n })\n\n hooks.on('kubb:files:processing:end', () => {\n const text = '✓ Files written successfully'\n\n console.log(text)\n })\n\n hooks.on('kubb:generation:end', ({ config }) => {\n console.log(config.name ? `✓ Generation completed for ${config.name}` : '✓ Generation completed')\n })\n\n hooks.on('kubb:generation:summary', ({ config, status, failedPlugins }) => {\n const pluginsCount = config.plugins.length\n const successCount = pluginsCount - failedPlugins.size\n\n console.log(\n status === 'success'\n ? `Kubb Summary: ✓ ${`${successCount} successful`}, ${pluginsCount} total`\n : `Kubb Summary: ✓ ${`${successCount} successful`}, ✗ ${`${failedPlugins.size} failed`}, ${pluginsCount} total`,\n )\n })\n\n await hooks.emit('kubb:lifecycle:start', { version: unpluginVersion })\n\n const { root: _root, ...userConfig } = config as Config\n\n await hooks.emit('kubb:generation:start', { config: config as Config })\n\n const { error, failedPlugins, pluginTimings, files, sources } = await createKubb(\n {\n root: process.cwd(),\n ...userConfig,\n output: {\n write: true,\n ...userConfig.output,\n },\n },\n { hooks },\n ).safeBuild()\n\n const hasFailures = failedPlugins.size > 0 || error\n if (hasFailures) {\n // Collect all errors from failed plugins and general error\n const allErrors: Error[] = [\n error,\n ...Array.from(failedPlugins)\n .filter((it) => it.error)\n .map((it) => it.error),\n ].filter(Boolean)\n\n allErrors.forEach((err) => {\n hooks.emit('kubb:error', { error: err })\n })\n }\n\n await hooks.emit('kubb:generation:end', { config: config as Config, files, sources })\n await hooks.emit('kubb:generation:summary', {\n config: config as Config,\n failedPlugins,\n filesCreated: files.length,\n status: failedPlugins.size > 0 || error ? 'failed' : 'success',\n hrStart,\n pluginTimings,\n })\n\n await hooks.emit('kubb:lifecycle:end')\n }\n\n return {\n name,\n enforce: 'pre',\n apply: isVite ? 'build' : undefined,\n async buildStart() {\n await runBuild(this as unknown as RollupContext)\n },\n\n vite: {},\n }\n}\n"],"mappings":"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"}
|