@kubb/cli 2.18.3 → 2.18.5

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/src/init.ts DELETED
@@ -1,97 +0,0 @@
1
- import path from 'node:path'
2
-
3
- import { write } from '@kubb/core/fs'
4
- import { LogLevel } from '@kubb/core/logger'
5
- import { isPromiseFulfilledResult } from '@kubb/core/utils'
6
-
7
- import { $ } from 'execa'
8
- import c from 'tinyrainbow'
9
-
10
- import { spinner } from './utils/spinner.ts'
11
-
12
- type Preset = 'simple'
13
-
14
- type PackageManager = 'pnpm' | 'npm' | 'yarn'
15
-
16
- type PresetMeta = {
17
- 'kubb.config': string
18
- packages: string[]
19
- }
20
-
21
- type InitProps = {
22
- /**
23
- * @default `'silent'`
24
- */
25
- logLevel?: LogLevel
26
- /**
27
- * @default `'simple'`
28
- */
29
- preset?: Preset
30
- /**
31
- * @default `'pnpm'`
32
- */
33
- packageManager?: PackageManager
34
- }
35
-
36
- const presets: Record<Preset, PresetMeta> = {
37
- simple: {
38
- 'kubb.config': `
39
- import { defineConfig } from '@kubb/core'
40
- import { pluginOas } from '@kubb/plugin-oas'
41
- import { pluginTs } from '@kubb/swagger-ts'
42
- import { pluginTanstackQuery } from '@kubb/swagger-tanstack-query'
43
-
44
- export default defineConfig({
45
- root: '.',
46
- input: {
47
- path: 'https://petstore3.swagger.io/api/v3/openapi.json',
48
- },
49
- output: {
50
- path: './src/gen',
51
- clean: true,
52
- },
53
- hooks: {
54
- done: ['echo "🎉 done"'],
55
- },
56
- plugins: [pluginOas({}), pluginTs({ output: { path: 'models'}, enumType: 'enum' }), pluginTanstackQuery({ output: { path: './hooks' } })],
57
- })
58
- `,
59
- packages: ['@kubb/core', '@kubb/cli', '@kubb/swagger', '@kubb/swagger-ts', '@kubb/swagger-tanstack-query'],
60
- },
61
- }
62
-
63
- export async function init({ preset = 'simple', logLevel = LogLevel.silent, packageManager = 'pnpm' }: InitProps): Promise<undefined> {
64
- spinner.start('📦 Initializing Kubb')
65
-
66
- const presetMeta = presets[preset]
67
- const configPath = path.resolve(process.cwd(), './kubb.config.js')
68
- const installCommand = packageManager === 'npm' ? 'install' : 'add'
69
-
70
- spinner.start(`📀 Writing \`kubb.config.js\` ${c.dim(configPath)}`)
71
- await write(presetMeta['kubb.config'], configPath)
72
- spinner.succeed(`📀 Wrote \`kubb.config.js\` ${c.dim(configPath)}`)
73
-
74
- const results = await Promise.allSettled([
75
- $`npm init es6 -y`,
76
- ...presetMeta.packages.map(async (pack) => {
77
- spinner.start(`📀 Installing ${c.dim(pack)}`)
78
- const { stdout } = await $({
79
- preferLocal: false,
80
- })`${packageManager} ${installCommand} ${pack}`
81
- spinner.succeed(`📀 Installed ${c.dim(pack)}`)
82
-
83
- return stdout
84
- }),
85
- ])
86
-
87
- if (logLevel === LogLevel.info) {
88
- results.forEach((result) => {
89
- if (isPromiseFulfilledResult(result)) {
90
- console.log(result.value)
91
- }
92
- })
93
- }
94
- spinner.succeed('📦 initialized Kubb')
95
-
96
- return
97
- }
@@ -1,59 +0,0 @@
1
- import { LogLevel } from '@kubb/core/logger'
2
-
3
- import PrettyError from 'pretty-error'
4
-
5
- export const prettyError = new PrettyError()
6
- .skipPackage('commander')
7
- .skip(function callback(traceLine: any) {
8
- // exclude renderErrors.ts
9
- const pattern = /renderErrors/
10
-
11
- const hasMatch = traceLine?.file?.match(pattern)
12
-
13
- if (typeof traceLine.packageName !== 'undefined' && hasMatch) {
14
- return true
15
- }
16
- } as PrettyError.Callback)
17
- .start()
18
-
19
- function getErrorCauses(errors: Error[]): Error[] {
20
- return errors
21
- .reduce((prev, error) => {
22
- const causedError = error?.cause as Error
23
- if (causedError) {
24
- prev = [...prev, ...getErrorCauses([causedError])]
25
- return prev
26
- }
27
- prev = [...prev, error]
28
-
29
- return prev
30
- }, [] as Error[])
31
- .filter(Boolean)
32
- }
33
-
34
- export function renderErrors(error: Error | undefined, { logLevel = LogLevel.silent }: { logLevel?: LogLevel }): string {
35
- if (!error) {
36
- return ''
37
- }
38
-
39
- if (logLevel === LogLevel.silent) {
40
- // skip when no debug is set
41
- prettyError.skipNodeFiles()
42
- prettyError.skip(function skip() {
43
- return true
44
- } as PrettyError.Callback)
45
-
46
- return [prettyError.render(error)].filter(Boolean).join('\n')
47
- }
48
-
49
- const errors = getErrorCauses([error])
50
-
51
- if (logLevel === LogLevel.debug) {
52
- console.log(errors)
53
- }
54
-
55
- return errors
56
- .filter(Boolean)
57
- .map((error) => prettyError.render(error))
58
- .join('\n')
59
- }