@keq-request/cli 5.0.0-alpha.29 → 5.0.0-alpha.31

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.
Files changed (83) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/chunk-7HHTHYRA.cjs +2895 -0
  3. package/dist/chunk-7HHTHYRA.cjs.map +1 -0
  4. package/dist/chunk-DZ2SC5HL.js +2895 -0
  5. package/dist/chunk-DZ2SC5HL.js.map +1 -0
  6. package/dist/chunk-HN7ZZFKC.js +19 -0
  7. package/dist/chunk-HN7ZZFKC.js.map +1 -0
  8. package/dist/chunk-JX74ZR2O.cjs +670 -0
  9. package/dist/chunk-JX74ZR2O.cjs.map +1 -0
  10. package/dist/chunk-OC36G3PF.cjs +19 -0
  11. package/dist/chunk-OC36G3PF.cjs.map +1 -0
  12. package/dist/chunk-XRZLO2PB.js +670 -0
  13. package/dist/chunk-XRZLO2PB.js.map +1 -0
  14. package/dist/cli.cjs +171 -2757
  15. package/dist/cli.cjs.map +1 -1
  16. package/dist/cli.js +161 -2724
  17. package/dist/cli.js.map +1 -1
  18. package/dist/compiler/compiler.d.ts +2 -0
  19. package/dist/compiler/compiler.d.ts.map +1 -1
  20. package/dist/index.cjs +8 -2777
  21. package/dist/index.cjs.map +1 -1
  22. package/dist/index.js +15 -2738
  23. package/dist/index.js.map +1 -1
  24. package/dist/plugins/body-fallback/constants/metadata-storage.d.ts +1 -0
  25. package/dist/plugins/body-fallback/constants/metadata-storage.d.ts.map +1 -1
  26. package/dist/plugins/body-fallback/index.d.ts.map +1 -1
  27. package/dist/plugins/chinese-to-pinyin/chinese-to-pinyin.plugin.d.ts.map +1 -1
  28. package/dist/plugins/chinese-to-pinyin/constants/metadata-storage.d.ts +1 -0
  29. package/dist/plugins/chinese-to-pinyin/constants/metadata-storage.d.ts.map +1 -1
  30. package/dist/plugins/download-http-file/constants/metadata-storage.d.ts +1 -0
  31. package/dist/plugins/download-http-file/constants/metadata-storage.d.ts.map +1 -1
  32. package/dist/plugins/download-http-file/download-http-file.plugin.d.ts.map +1 -1
  33. package/dist/plugins/download-local-file/constants/metadata-storage.d.ts +1 -0
  34. package/dist/plugins/download-local-file/constants/metadata-storage.d.ts.map +1 -1
  35. package/dist/plugins/download-local-file/download-local-file.plugin.d.ts.map +1 -1
  36. package/dist/plugins/eslint/constants/metadata-storage.d.ts +1 -0
  37. package/dist/plugins/eslint/constants/metadata-storage.d.ts.map +1 -1
  38. package/dist/plugins/eslint/eslint.plugin.d.ts.map +1 -1
  39. package/dist/plugins/generate-declaration/constants/metadata-storage.d.ts +2 -1
  40. package/dist/plugins/generate-declaration/constants/metadata-storage.d.ts.map +1 -1
  41. package/dist/plugins/generate-declaration/generate-declaration.plugin.d.ts.map +1 -1
  42. package/dist/plugins/generate-micro-function/constants/metadata-storage.d.ts +1 -0
  43. package/dist/plugins/generate-micro-function/constants/metadata-storage.d.ts.map +1 -1
  44. package/dist/plugins/generate-micro-function/generate-micro-function.plugin.d.ts.map +1 -1
  45. package/dist/plugins/generate-nestjs-module/constants/metadata-storage.d.ts +1 -0
  46. package/dist/plugins/generate-nestjs-module/constants/metadata-storage.d.ts.map +1 -1
  47. package/dist/plugins/generate-nestjs-module/generate-nestjs-module.d.ts.map +1 -1
  48. package/dist/plugins/index.d.ts +1 -0
  49. package/dist/plugins/index.d.ts.map +1 -1
  50. package/dist/plugins/prettier/constants/metadata-storage.d.ts +1 -0
  51. package/dist/plugins/prettier/constants/metadata-storage.d.ts.map +1 -1
  52. package/dist/plugins/prettier/prettier.plugin.d.ts.map +1 -1
  53. package/dist/plugins/shaking/constants/metadata-storage.d.ts +1 -0
  54. package/dist/plugins/shaking/constants/metadata-storage.d.ts.map +1 -1
  55. package/dist/plugins/shaking/shaking.plugin.d.ts.map +1 -1
  56. package/dist/plugins/terminal-select/constants/metadata-storage.d.ts +1 -0
  57. package/dist/plugins/terminal-select/constants/metadata-storage.d.ts.map +1 -1
  58. package/dist/plugins/terminal-select/terminal-select.plugin.d.ts.map +1 -1
  59. package/dist/plugins/use-valibot/constants/index.d.ts +2 -0
  60. package/dist/plugins/use-valibot/constants/index.d.ts.map +1 -0
  61. package/dist/plugins/use-valibot/constants/metadata-storage.d.ts +6 -0
  62. package/dist/plugins/use-valibot/constants/metadata-storage.d.ts.map +1 -0
  63. package/dist/plugins/use-valibot/index.d.ts +3 -0
  64. package/dist/plugins/use-valibot/index.d.ts.map +1 -0
  65. package/dist/plugins/use-valibot/use-valibot.plugin.d.ts +12 -0
  66. package/dist/plugins/use-valibot/use-valibot.plugin.d.ts.map +1 -0
  67. package/dist/plugins.cjs +3 -2532
  68. package/dist/plugins.cjs.map +1 -1
  69. package/dist/plugins.js +31 -2500
  70. package/dist/plugins.js.map +1 -1
  71. package/dist/transformers/json-schema/json-schema.transformer.d.ts +2 -0
  72. package/dist/transformers/json-schema/json-schema.transformer.d.ts.map +1 -1
  73. package/dist/transformers/json-schema/valibot.renderer.d.ts +26 -0
  74. package/dist/transformers/json-schema/valibot.renderer.d.ts.map +1 -0
  75. package/dist/transformers/schema-definition/schema-definition.transformer.d.ts +5 -0
  76. package/dist/transformers/schema-definition/schema-definition.transformer.d.ts.map +1 -1
  77. package/dist/translators.cjs +8 -2047
  78. package/dist/translators.cjs.map +1 -1
  79. package/dist/translators.js +7 -2008
  80. package/dist/translators.js.map +1 -1
  81. package/dist/utils/scan-generated-files.d.ts +15 -0
  82. package/dist/utils/scan-generated-files.d.ts.map +1 -0
  83. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/compiler/compiler.ts","../src/compiler/tasks/setup/index.ts","../src/utils/ignore-matcher.ts","../src/compiler/tasks/setup/utils/find-nearest-package-json.ts","../src/compiler/tasks/setup/utils/get-project-module-system.ts","../src/compiler/tasks/setup/utils/parse-runtime-config.ts","../src/types/address.ts","../src/types/runtime-config.ts","../src/utils/is-valid-url.ts","../src/compiler/tasks/download/index.ts","../src/compiler/tasks/persist/index.ts","../src/compiler/tasks/compile/index.ts","../src/compiler/intercepter/print-information.ts","../src/compiler/intercepter/perfect-error-message.ts"],"sourcesContent":["\n\nimport { Listr } from 'listr2'\nimport { AsyncParallelHook, AsyncSeriesBailHook, AsyncSeriesHook, SyncHook } from 'tapable'\nimport { CompilerHooks, CompilerContext } from './types/index.js'\nimport {\n ModuleDefinition,\n} from '~/models/index.js'\nimport {\n createCompileTask,\n createDownloadTask,\n createPersistTask,\n createSetupTask,\n SetupTaskOptions,\n TaskWrapper,\n} from './tasks/index.js'\nimport {\n perfectErrorMessage,\n printInformation,\n} from './intercepter/index.js'\nimport {\n InitializePlugin,\n TerminalSelectPluginOptions,\n} from '~/plugins/index.js'\nimport { Address } from '~/types/index.js'\n\n\ninterface Options extends SetupTaskOptions {\n includes: string[]\n build: boolean\n persist?: boolean\n silent?: boolean\n interactive?: boolean | TerminalSelectPluginOptions\n}\n\n\nexport class Compiler {\n context: CompilerContext = {}\n\n hooks: CompilerHooks = {\n setup: new AsyncParallelHook<[TaskWrapper]>(['task']),\n afterSetup: new AsyncSeriesHook<[TaskWrapper]>(['task']),\n\n beforeDownload: new AsyncSeriesHook<[TaskWrapper]>(['task']),\n download: new AsyncSeriesBailHook<[Address, ModuleDefinition, TaskWrapper], string | undefined>(['address', 'moduleDefinition', 'task']),\n afterDownload: new AsyncSeriesHook<[TaskWrapper]>(['task']),\n\n beforeCompile: new AsyncSeriesHook<[TaskWrapper]>(['task']),\n compile: new AsyncParallelHook<[TaskWrapper]>(['task']),\n afterCompile: new AsyncSeriesHook<[TaskWrapper]>(['task']),\n\n beforePersist: new AsyncSeriesHook<[TaskWrapper]>(['task']),\n persist: new AsyncParallelHook<[TaskWrapper]>(['task']),\n afterPersist: new AsyncSeriesHook<[TaskWrapper]>(['task']),\n\n done: new SyncHook<[]>(),\n }\n\n constructor(\n public options: Options,\n ) {\n for (const hook of Object.values(this.hooks)) {\n hook.intercept(perfectErrorMessage())\n }\n\n this.hooks.afterSetup.intercept(printInformation(0))\n this.hooks.afterPersist.intercept(printInformation(0))\n\n new InitializePlugin({\n build: options.build,\n interactive: options.interactive,\n includes: options.includes,\n }).apply(this)\n }\n\n async run(): Promise<void> {\n const options = this.options\n\n const tasks = new Listr<CompilerContext, 'default' | 'silent'>(\n [\n createSetupTask(this, options),\n createDownloadTask(this, { skipIgnoredModules: !options.interactive }),\n createCompileTask(this, { enabled: !!options.build }),\n createPersistTask(this, { enabled: !!options.persist }),\n ],\n {\n concurrent: false,\n renderer: options.silent ? 'silent' : 'default',\n rendererOptions: {\n suffixSkips: true,\n collapseSubtasks: false,\n collapseErrors: false,\n },\n },\n )\n\n await tasks.run(this.context)\n\n await this.hooks.done.promise()\n }\n}\n","import fs from 'fs-extra'\nimport path from 'path'\nimport { CosmiconfigResult } from 'cosmiconfig'\nimport { cosmiconfig } from 'cosmiconfig'\nimport { ListrTask } from 'listr2'\nimport { IgnoreMatcher, IgnoreMatcherRule } from '~/utils/ignore-matcher.js'\nimport { findNearestPackageJson, getProjectModuleSystem } from './utils/index.js'\nimport type { BaseTaskOptions } from '../types/base-task-options.js'\nimport type { Compiler } from '../../compiler.js'\nimport { CompilerContext } from '../../types/index.js'\nimport { parseRuntimeConfig } from './utils/parse-runtime-config.js'\nimport { MicroFunctionTranslator } from '~/translators/micro-function.translator.js'\n\n\nexport interface SetupTaskOptions {\n config?: string\n debug?: boolean\n tolerant?: boolean\n\n ignore?: false | {\n rules: IgnoreMatcherRule[]\n }\n}\n\nconst explore = cosmiconfig('keq')\n\n\nfunction main(compiler: Compiler, options: SetupTaskOptions): ListrTask<CompilerContext> {\n return {\n task: async (context, task) => {\n const result: CosmiconfigResult = options?.config\n ? await explore.load(options.config)\n : await explore.search()\n\n if (!result || ('isEmpty' in result && result.isEmpty)) {\n throw new Error('Cannot find config file.')\n }\n\n const rc = parseRuntimeConfig(result.config)\n\n if (options?.debug) {\n await fs.ensureDir('.keq')\n rc.debug = true\n }\n\n rc.tolerant = Boolean(rc.tolerant)\n\n if (!rc.translators || !rc.translators.length) {\n rc.translators = [new MicroFunctionTranslator()]\n }\n\n const packageJsonInfo = findNearestPackageJson()\n if (packageJsonInfo) {\n const moduleSystem = getProjectModuleSystem(packageJsonInfo)\n rc.esm = moduleSystem === 'esm'\n }\n\n context.rc = rc\n\n\n // Setup IgnoreMatcher\n\n let matcher: IgnoreMatcher = new IgnoreMatcher([])\n if (result.filepath) {\n const ignoreFilepath = path.resolve(path.dirname(result.filepath), '.keqignore')\n if (await fs.exists(ignoreFilepath)) {\n matcher = await IgnoreMatcher.read(ignoreFilepath)\n }\n }\n\n const ignoreRules = options.ignore === false ? [] : options.ignore?.rules || []\n for (const rule of ignoreRules) {\n matcher.append({\n persist: !!rule.persist,\n ignore: rule.ignore,\n moduleName: rule.moduleName,\n operationMethod: rule.operationMethod,\n operationPathname: rule.operationPathname,\n })\n }\n\n context.matcher = matcher\n\n await compiler.hooks.setup.promise(task)\n },\n }\n}\n\nexport function createSetupTask(compiler: Compiler, options: SetupTaskOptions & BaseTaskOptions): ListrTask<CompilerContext> {\n return {\n title: 'Setup',\n enabled: options?.enabled,\n skip: options?.skip,\n task: (context, task) => task.newListr(\n [\n main(compiler, options),\n {\n task: (context, task) => compiler.hooks.afterSetup\n .promise(task),\n },\n ],\n {\n concurrent: false,\n },\n ),\n }\n}\n","import * as R from 'ramda'\nimport fs from 'fs-extra'\nimport { OperationDefinition, ModuleDefinition } from '~/models/index.js'\n\n\nexport interface IgnoreMatcherRule {\n persist: boolean\n ignore: boolean\n moduleName: string\n operationMethod: string\n operationPathname: string\n}\n\n\nexport class IgnoreMatcher {\n private rules: IgnoreMatcherRule[]\n\n constructor(rules: IgnoreMatcherRule[]) {\n this.rules = rules\n }\n\n static async read(filepath: string): Promise<IgnoreMatcher> {\n let content = await fs.readFile(filepath, 'utf-8')\n\n content = content\n .replace(/\\r\\n/g, '\\n')\n .replace(/\\r/g, '\\n')\n .replace(/#.*$/gm, '')\n .replace(/\\n+/g, '\\n')\n .trim()\n\n let rules = content\n .split('\\n')\n .map((line) => line.trim())\n .filter((line) => line.length > 0)\n .map((line): IgnoreMatcherRule => {\n const matched = line.match(/^(!)?\\s*([^\\s/]+)\\s+([^\\s/]+)\\s+([^\\s]+)$/)\n if (!matched) throw new Error(`Invalid ignore rule: \"${line}\"`)\n\n const [, flag, moduleName, operationMethod, operationPathname] = matched\n\n return {\n persist: true,\n ignore: !flag,\n moduleName,\n operationMethod: operationMethod.toLowerCase(),\n operationPathname,\n }\n })\n rules = R.sortBy(\n R.prop('ignore'),\n rules,\n )\n\n rules = R.uniqWith(\n (a, b) => a.moduleName === b.moduleName && a.operationMethod === b.operationMethod && a.operationPathname === b.operationPathname,\n rules,\n )\n\n return new IgnoreMatcher(rules)\n }\n\n async write(filepath: string): Promise<void> {\n const ruleGroups = R.compose(\n R.groupBy((rule: IgnoreMatcherRule) => rule.moduleName),\n R.reverse,\n R.uniqWith<IgnoreMatcherRule>(\n (a, b) => a.moduleName === b.moduleName && a.operationMethod === b.operationMethod && a.operationPathname === b.operationPathname,\n ),\n R.filter((rule: IgnoreMatcherRule) => rule.persist),\n )(this.rules)\n\n const content = Object.entries(ruleGroups)\n .sort((a, b) => {\n const aModuleName = a[0]\n const bModuleName = b[0]\n\n if (aModuleName === '*') return -1\n if (bModuleName === '*') return 1\n\n return aModuleName.localeCompare(bModuleName)\n })\n .map(([, rules]) => (rules || [])\n .sort((a, b) => {\n if (a.ignore !== b.ignore) return a.ignore ? -1 : 1\n\n if (a.operationMethod === '*') return -1\n if (b.operationMethod === '*') return 1\n if (a.operationPathname === '*') return -1\n if (b.operationPathname === '*') return 1\n\n if (a.operationMethod !== b.operationMethod) return a.operationMethod.localeCompare(b.operationMethod)\n if (a.operationPathname !== b.operationPathname) return a.operationPathname.localeCompare(b.operationPathname)\n\n return 0\n })\n .map((rule) => `${rule.ignore ? '' : '! '}${rule.moduleName} ${rule.operationMethod.toUpperCase()} ${rule.operationPathname}`)\n .join('\\n'))\n .join('\\n\\n')\n\n await fs.writeFile(filepath, content, 'utf-8')\n }\n\n append(rule: IgnoreMatcherRule): void {\n this.rules.unshift(rule)\n }\n\n // if operation is ignored, return true\n isOperationIgnored(operationDefinition: OperationDefinition): boolean {\n const moduleName = operationDefinition.module.name\n const operationMethod = operationDefinition.method.toLowerCase()\n const operationPathname = operationDefinition.pathname\n\n for (const rule of this.rules) {\n if (rule.moduleName !== '*' && rule.moduleName !== moduleName) continue\n if (rule.operationMethod !== '*' && rule.operationMethod !== operationMethod) continue\n if (rule.operationPathname !== '*' && rule.operationPathname !== operationPathname) continue\n\n return rule.ignore\n }\n\n return false\n }\n\n isModuleIgnored(moduleDefinition: ModuleDefinition): boolean {\n const moduleName = moduleDefinition.name\n\n for (const rule of this.rules) {\n if (!rule.ignore) {\n if (rule.moduleName === '*' || rule.moduleName === moduleName) return false\n continue\n }\n\n if (rule.operationMethod !== '*') continue\n if (rule.operationPathname !== '*') continue\n\n if (rule.moduleName === '*' || rule.moduleName === moduleName) return true\n }\n\n return false\n }\n}\n","import fs from 'node:fs'\nimport path from 'node:path'\n\nexport interface PackageJsonInfo {\n json: any\n path: string\n}\n\n\nexport function findNearestPackageJson(startDir = process.cwd()): PackageJsonInfo | null {\n let dir = startDir\n // 向上遍历直到磁盘根目录\n while (true) {\n const pkgPath = path.join(dir, 'package.json')\n if (fs.existsSync(pkgPath)) {\n const json = JSON.parse(fs.readFileSync(pkgPath, 'utf8'))\n return { json, path: pkgPath }\n }\n const parent = path.dirname(dir)\n if (parent === dir) break\n dir = parent\n }\n return null\n}\n","import { PackageJsonInfo } from './find-nearest-package-json.js'\n\ntype ModuleSystem = 'esm' | 'cjs'\n\nexport function getProjectModuleSystem(pkgInfo: PackageJsonInfo): ModuleSystem {\n if (!pkgInfo?.json) return 'cjs'\n const { json } = pkgInfo\n\n if (json.type === 'module') return 'esm'\n return 'cjs'\n}\n","import { Value } from '@sinclair/typebox/value'\nimport { RawConfig, RuntimeConfig, Plugin, Translator } from '~/types/index.js'\n\n\nexport function parseRuntimeConfig(data: unknown): RuntimeConfig {\n try {\n // Preserve the original plugins array to avoid losing Plugin instance properties\n const originalPlugins = typeof data === 'object' && data !== null && 'plugins' in data\n ? (data as Record<string, unknown>).plugins\n : undefined\n\n const originTranslators = typeof data === 'object' && data !== null && 'translators' in data\n ? (data as Record<string, unknown>).translators\n : undefined\n\n const parsed = Value.Parse(RawConfig, data)\n\n // Restore the original plugins if they existed\n if (originalPlugins !== undefined) {\n parsed.plugins = originalPlugins as Plugin[]\n }\n\n // Restore the original translators if they existed\n if (originTranslators !== undefined) {\n parsed.translators = originTranslators as Translator[]\n }\n\n return parsed\n } catch (error) {\n if (error instanceof Error) {\n error.message = `Invalid Config: ${error.message}`\n }\n throw error\n }\n}\n","import { Static, Type } from '@sinclair/typebox'\n\n\nexport const Address = Type.Object({\n url: Type.String(),\n headers: Type.Optional(Type.Record(Type.String(), Type.String(), { default: {} })),\n encoding: Type.Optional(\n Type.Union([\n Type.Literal('utf8'),\n Type.Literal('ascii'),\n ], { default: 'utf8' }),\n ),\n})\n\nexport type Address = Static<typeof Address>\n","import * as R from 'ramda'\nimport { StaticDecode, StaticEncode, Type } from '@sinclair/typebox'\nimport { FileNamingStyle } from '../constants/file-naming-style.js'\nimport { Plugin } from './plugin.js'\nimport { Address } from './address.js'\nimport { isValidURL } from '../utils/is-valid-url.js'\nimport { Translator } from './index.js'\n\n\nconst Modules = Type.Transform(\n Type.Record(\n Type.String(),\n Type.Union([Type.String(), Address]),\n ),\n)\n .Decode((value): Record<string, Address> => {\n const keys = Object.keys(value)\n\n for (const key of keys) {\n if (!/^[A-Za-z_][A-Za-z0-9_$]*$/.test(key)) {\n throw new Error(`Module name \"${key}\" is not valid. It must start with a letter or underscore, and can only contain letters, numbers, and underscores.`)\n }\n }\n\n const keysGroupByLowerCase = R.groupBy(R.toLower, keys)\n\n for (const groupKey in keysGroupByLowerCase) {\n const keys = keysGroupByLowerCase[groupKey] || []\n if (keys.length > 1) {\n throw new Error(`Module names ${keys.map((name) => `\"${name}\"`).join(', ')} are case-insensitively duplicated.`)\n }\n }\n\n for (const key in value) {\n const url = typeof value[key] === 'string' ? value[key] : value[key].url\n\n if (isValidURL(url)) continue\n\n throw new Error(`The ${JSON.stringify(url)} of module \"${key}\" is not a valid URL.`)\n }\n\n return R.map(\n (item: string | Address): Address => (typeof item !== 'string' ? item : { url: item, headers: {}, encoding: 'utf8' }),\n value,\n )\n })\n .Encode((value) => value)\n\n\nexport const RawConfig = Type.Object({\n /**\n * Whether to generate ES Module code\n *\n * If not specified, the module system will be inferred from the nearest package.json \"type\" field\n * or defaults to \"cjs\" if no package.json is found.\n */\n esm: Type.Optional(Type.Boolean({ default: false })),\n\n /**\n * Output directory for generated files\n */\n outdir: Type.String({ default: `${process.cwd()}/api` }),\n\n /**\n * File naming style for generated files\n */\n fileNamingStyle: Type.Enum(FileNamingStyle, { default: FileNamingStyle.snakeCase }),\n\n /**\n * OpenAPI/Swagger document sources\n *\n * A map of module names to their document URLs or Address objects.\n * The module name must be a valid JavaScript identifier.\n */\n modules: Modules,\n\n /**\n * Enable debug mode to output detailed logs during compilation\n */\n debug: Type.Optional(Type.Boolean({ default: false })),\n\n /**\n * Whether to tolerate wrong openapi/swagger structure\n */\n tolerant: Type.Optional(Type.Boolean({ default: false })),\n\n /**\n * Translators to transform generated code\n *\n * Used to customize the code generation process for different frameworks or patterns.\n * Can be a single translator or an array of translators.\n */\n translators: Type.Optional(\n Type.Transform(\n Type.Union([\n Type.Unsafe<Translator>(Type.Any()),\n Type.Array(Type.Unsafe<Translator>(Type.Any())),\n ], { default: [] }),\n )\n .Decode((value): Translator[] => {\n if (value === undefined) return []\n if (Array.isArray(value)) return value\n return [value]\n })\n .Encode((value) => value),\n ),\n\n /**\n * Plugins to extend code generation functionality\n *\n * An array of plugin instances that can hook into various stages of the compilation process,\n * such as code transformation, formatting, linting, or custom file generation.\n */\n plugins: Type.Optional(Type.Array(Type.Unsafe<Plugin>(Type.Any()), { default: [] })),\n})\n\nexport type RawConfig = StaticEncode<typeof RawConfig>\nexport type RuntimeConfig = StaticDecode<typeof RawConfig>\n","/**\n * 通用 URL 验证正则表达式,支持任意协议\n *\n * 格式: protocol://[user:password@][host][:port][/path][?query][#fragment]\n *\n * 支持的协议示例:\n * - http://, https://\n * - file:// (支持 file:///path 和 file://host/path 两种格式)\n * - ftp://, sftp://\n * - ws://, wss://\n * - 以及任何其他自定义协议\n */\nconst URL_REGEX = /^[a-zA-Z][a-zA-Z0-9+.-]*:\\/\\/(?:[^\\s@]+@)?[^\\s/:?#]*(?::\\d+)?(?:\\/[^\\s?#]*)?(?:\\?[^\\s#]*)?(?:#[^\\s]*)?$/\n\n/**\n * 验证是否为有效的 URL\n *\n * @param url - 待验证的 URL 字符串\n * @returns 如果是有效的 URL 返回 true,否则返回 false\n *\n * @example\n * ```typescript\n * isValidURL('http://example.com') // true\n * isValidURL('https://example.com:8080/path?query=1#fragment') // true\n * isValidURL('file:///path/to/file.json') // true\n * isValidURL('not a url') // false\n * ```\n */\nexport function isValidURL(url: string): boolean {\n return URL_REGEX.test(url)\n}\n","import { ListrTask, PRESET_TIMER } from 'listr2'\nimport { validate } from '@scalar/openapi-parser'\nimport { ModuleDefinition, ApiDocumentV3_1 } from '~/models/index.js'\nimport { BaseTaskOptions } from '../types/base-task-options.js'\nimport type { Compiler } from '~/compiler/compiler.js'\nimport { CompilerContext } from '~/compiler/index.js'\nimport { Exception } from '~/exception.js'\nimport { OpenapiUtils } from '~/utils/openapi-utils/index.js'\n\n\ninterface DownloadTaskOptions {\n skipIgnoredModules?: boolean\n}\n\nfunction main(compiler: Compiler, options?: DownloadTaskOptions): ListrTask<CompilerContext> {\n return {\n task: (context, task) => {\n if (!context.rc || !context.matcher) {\n throw new Error('Please run setup task first.')\n }\n\n const rc = context.rc\n const matcher = context.matcher\n\n context.documents = []\n\n return task.newListr(\n Object.entries(rc.modules)\n .map(([moduleName, address]) => new ModuleDefinition(moduleName, address))\n .map((moduleDefinition): ListrTask<CompilerContext> => ({\n title: moduleDefinition.name,\n task: async (ctx, task) => {\n if (options?.skipIgnoredModules && matcher.isModuleIgnored(moduleDefinition)) {\n task.skip(`(${moduleDefinition.name}) is ignored`)\n return\n }\n\n task.output = `Downloaded from ${moduleDefinition.address.url}`\n\n const content = await compiler.hooks.download.promise(moduleDefinition.address, moduleDefinition, task)\n\n if (!content) {\n throw new Exception(moduleDefinition, `Cannot download document from ${moduleDefinition.address.url}`)\n }\n\n const spec = JSON.parse(content)\n\n const { valid, errors } = await validate(spec)\n if (!valid) {\n const message = `${moduleDefinition.name} module openapi/swagger file does not conform to the openapi specifications or have grammatical errors, which may cause unexpected errors: \\n${errors?.map((e) => ` - ${e.message}`).join('\\n')}`\n task.output = message\n }\n\n OpenapiUtils.dereferenceOperation(spec)\n\n const document = new ApiDocumentV3_1(\n spec,\n moduleDefinition,\n )\n\n ctx.documents?.push(document)\n },\n })),\n {\n concurrent: true,\n exitOnError: false,\n collectErrors: 'minimal',\n rendererOptions: {\n collapseSubtasks: false,\n // collapseSkips: false,\n suffixSkips: true,\n timer: PRESET_TIMER,\n },\n },\n )\n },\n }\n}\n\nexport function createDownloadTask(compiler: Compiler, options?: DownloadTaskOptions & BaseTaskOptions): ListrTask<CompilerContext> {\n return {\n title: 'Download',\n enabled: options?.enabled,\n skip: options?.skip,\n task: (_, task) => task.newListr(\n [\n main(compiler, options),\n {\n task: (context, task) => compiler.hooks.afterDownload\n .promise(task),\n },\n ],\n {\n concurrent: false,\n },\n ),\n }\n}\n","import * as path from 'path'\nimport fs from 'fs-extra'\nimport { ListrTask } from 'listr2'\nimport { BaseTaskOptions } from '../types/base-task-options.js'\nimport type { Compiler, CompilerContext } from '~/compiler/index.js'\nimport { Asset } from '~/models/index.js'\n\n\nfunction createPersistArtifactTask(): ListrTask<CompilerContext> {\n return {\n title: 'Write files',\n task: async (context, task) => {\n if (!context.rc) throw new Error('Please run setup task first.')\n if (!context.artifacts || context.artifacts.length === 0) {\n task.skip('No compiled artifacts to persist.')\n return\n }\n\n const rc = context.rc\n const artifacts = context.artifacts\n\n const total = artifacts.length\n let completed = 0\n\n const files = await Promise.all(artifacts.map(async (artifact): Promise<Asset> => {\n const realpath = `./${path.join(rc.outdir, artifact.filepath)}`\n await fs.ensureFile(realpath)\n await fs.writeFile(realpath, artifact.renderer())\n\n completed += 1\n task.output = `Persisted ${completed}/${total} files`\n\n return new Asset(path.resolve(realpath))\n }))\n\n context.assets = files\n },\n }\n}\n\nfunction createPersistIgnoreTask(): ListrTask<CompilerContext> {\n return {\n title: 'Update .keqignore',\n task: async (context, task) => {\n if (!context.matcher) throw new Error('Please run setup task first.')\n\n const matcher = context.matcher\n await matcher.write('.keqignore')\n },\n }\n}\n\n\nfunction main(): ListrTask<CompilerContext> {\n return {\n task: (context, task) => task.newListr(\n [\n createPersistArtifactTask(),\n createPersistIgnoreTask(),\n ],\n {\n concurrent: true,\n rendererOptions: {\n collapseSubtasks: true,\n },\n },\n ),\n }\n}\n\nexport function createPersistTask(compiler: Compiler, options?: BaseTaskOptions): ListrTask<CompilerContext> {\n return {\n title: 'Persist',\n enabled: options?.enabled,\n skip: options?.skip,\n task: (context, task) => task.newListr(\n [\n main(),\n {\n task: (context, task) => compiler.hooks.afterPersist\n .promise(task),\n },\n ],\n {\n concurrent: false,\n },\n ),\n }\n}\n","import { ListrTask } from 'listr2'\nimport { BaseTaskOptions } from '../types/base-task-options.js'\nimport type { Compiler } from '~/compiler/compiler.js'\nimport { CompilerContext } from '~/compiler/index.js'\n// import { RequestGenerator } from '~/generators/index.js'\n\n\nfunction main(compiler: Compiler): ListrTask<CompilerContext> {\n return {\n task: async (context, task) => {\n if (!context.rc) throw new Error('Please run setup task first.')\n if (!context.documents) throw new Error('Please run shaking task first.')\n\n context.artifacts = []\n\n await compiler.hooks.compile.promise(task)\n },\n }\n}\n\nexport function createCompileTask(compiler: Compiler, options?: BaseTaskOptions): ListrTask<CompilerContext> {\n return {\n title: 'Compile',\n enabled: options?.enabled,\n skip: options?.skip,\n task: (context, task) => task.newListr(\n [\n {\n task: (context, task) => compiler.hooks.beforeCompile\n .promise(task),\n },\n main(compiler),\n {\n task: (context, task) => compiler.hooks.afterCompile\n .promise(task),\n },\n ],\n {\n concurrent: false,\n },\n ),\n }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { FullTap, HookInterceptor } from 'tapable'\nimport { TaskWrapper } from '../tasks/index.js'\n\n\nexport function proxyTaskWrapper(pluginName: string, task: TaskWrapper): TaskWrapper {\n return new Proxy(task, {\n set(target, prop, value) {\n if (prop !== 'output') {\n return Reflect.set(target, prop, value)\n }\n\n target.output = `[Plugin: ${pluginName}] ${value}`\n return true\n },\n })\n}\n\n\nexport function printInformation(taskIndex: number): HookInterceptor<unknown, unknown> {\n return {\n register: <T extends FullTap>(tap: T): T => {\n const fn = tap.fn\n\n if (tap.type === 'promise') {\n tap.fn = (...args: any[]) => {\n const task = args[taskIndex] as TaskWrapper\n const proxyTask = proxyTaskWrapper(tap.name, task)\n args[taskIndex] = proxyTask\n proxyTask.output = 'Processing...'\n return fn(...args)\n }\n }\n\n if (tap.type === 'sync') {\n tap.fn = (...args: any[]) => {\n const task = args[taskIndex] as TaskWrapper\n const proxyTask = proxyTaskWrapper(tap.name, task)\n args[taskIndex] = proxyTask\n proxyTask.output = 'Processing...'\n return fn(...args)\n }\n }\n\n if (tap.type === 'async') {\n tap.fn = (...args: any[]) => {\n const task = args[taskIndex] as TaskWrapper\n const proxyTask = proxyTaskWrapper(tap.name, task)\n args[taskIndex] = proxyTask\n proxyTask.output = 'Processing...'\n return fn(...args)\n }\n }\n\n return tap\n },\n }\n}\n\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport * as R from 'ramda'\nimport { FullTap, HookInterceptor, InnerCallback } from 'tapable'\n\nexport function perfectErrorMessage(): HookInterceptor<unknown, unknown> {\n return {\n register: <T extends FullTap>(tap: T): T => {\n const fn = tap.fn\n\n function prefix(err: unknown): void {\n if (err instanceof Error) {\n err.message = `[Plugin: ${tap.name}] ${err.message}`\n }\n }\n\n if (tap.type === 'promise') {\n tap.fn = async (...args: any[]) => {\n try {\n return await fn(...args)\n } catch (err) {\n prefix(err)\n throw err\n }\n }\n }\n\n if (tap.type === 'sync') {\n tap.fn = (...args: any[]) => {\n try {\n return fn(...args)\n } catch (err) {\n prefix(err)\n throw err\n }\n }\n }\n\n if (tap.type === 'async') {\n tap.fn = (...args: any[]) => {\n const callback = R.last(args) as InnerCallback<Error, any>\n\n return fn(...R.init(args), (err: Error | null, result: any) => {\n prefix(err)\n return callback(err, result)\n })\n }\n }\n\n return tap\n },\n }\n}\n"],"mappings":"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","names":["fs","path","fs","R","Type","Type","keys","fs","path","context","task","main","task","path","fs","fs","main","context","task","main","context","task","prop","R"]}