@kubb/core
Version:
Core functionality for Kubb's plugin-based code generation system, providing the foundation for transforming OpenAPI specifications.
1 lines • 12.3 kB
Source Map (JSON)
{"version":3,"sources":["../src/fs/clean.ts","../src/fs/read.ts","../src/fs/write.ts","../src/fs/exists.ts","../src/fs/utils.ts","../src/fs/types.ts","../src/fs/index.ts"],"names":["fs","switcher","path","resolve","reader","normalize","relative"],"mappings":"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","file":"chunk-E4XLCCPK.cjs","sourcesContent":["import fs from 'fs-extra'\n\nexport async function clean(path: string): Promise<void> {\n return fs.remove(path)\n}\n","import fs from 'fs-extra'\nimport { switcher } from 'js-runtime'\n\nconst reader = switcher(\n {\n node: async (path: string) => {\n return fs.readFile(path, { encoding: 'utf8' })\n },\n bun: async (path: string) => {\n const file = Bun.file(path)\n\n return file.text()\n },\n },\n 'node',\n)\n\nconst syncReader = switcher(\n {\n node: (path: string) => {\n return fs.readFileSync(path, { encoding: 'utf8' })\n },\n bun: () => {\n throw new Error('Bun cannot read sync')\n },\n },\n 'node',\n)\n\nexport async function read(path: string): Promise<string> {\n return reader(path)\n}\n\nexport function readSync(path: string): string {\n return syncReader(path)\n}\n","import { resolve } from 'node:path'\n\nimport fs from 'fs-extra'\nimport { switcher } from 'js-runtime'\n\ntype Options = { sanity?: boolean }\n\nconst writer = switcher(\n {\n node: async (path: string, data: string, { sanity }: Options) => {\n try {\n const oldContent = await fs.readFile(resolve(path), {\n encoding: 'utf-8',\n })\n if (oldContent?.toString() === data?.toString()) {\n return\n }\n } catch (_err) {\n /* empty */\n }\n\n await fs.outputFile(resolve(path), data, { encoding: 'utf-8' })\n\n if (sanity) {\n const savedData = await fs.readFile(resolve(path), {\n encoding: 'utf-8',\n })\n\n if (savedData?.toString() !== data?.toString()) {\n throw new Error(`Sanity check failed for ${path}\\n\\nData[${data.length}]:\\n${data}\\n\\nSaved[${savedData.length}]:\\n${savedData}\\n`)\n }\n\n return savedData\n }\n\n return data\n },\n bun: async (path: string, data: string, { sanity }: Options) => {\n try {\n await Bun.write(resolve(path), data)\n\n if (sanity) {\n const file = Bun.file(resolve(path))\n const savedData = await file.text()\n\n if (savedData?.toString() !== data?.toString()) {\n throw new Error(`Sanity check failed for ${path}\\n\\nData[${path.length}]:\\n${path}\\n\\nSaved[${savedData.length}]:\\n${savedData}\\n`)\n }\n\n return savedData\n }\n\n return data\n } catch (e) {\n console.error(e)\n }\n },\n },\n 'node',\n)\n\nexport async function write(path: string, data: string, options: Options = {}): Promise<string | undefined> {\n if (data.trim() === '') {\n return undefined\n }\n return writer(path, data.trim(), options)\n}\n","import fs from 'fs-extra'\nimport { switcher } from 'js-runtime'\n\nconst reader = switcher(\n {\n node: async (path: string) => {\n return fs.pathExists(path)\n },\n bun: async (path: string) => {\n const file = Bun.file(path)\n\n return file.exists()\n },\n },\n 'node',\n)\n\nconst syncReader = switcher(\n {\n node: (path: string) => {\n return fs.pathExistsSync(path)\n },\n bun: () => {\n throw new Error('Bun cannot read sync')\n },\n },\n 'node',\n)\n\nexport async function exists(path: string): Promise<boolean> {\n return reader(path)\n}\n\nexport function existsSync(path: string): boolean {\n return syncReader(path)\n}\n","import { normalize, relative } from 'node:path'\n\nfunction slash(path: string, platform: 'windows' | 'mac' | 'linux' = 'linux') {\n const isWindowsPath = /^\\\\\\\\\\?\\\\/.test(path)\n const normalizedPath = normalize(path)\n\n if (['linux', 'mac'].includes(platform) && !isWindowsPath) {\n // linux and mac\n return normalizedPath.replaceAll(/\\\\/g, '/').replace('../', '')\n }\n\n // windows\n return normalizedPath.replaceAll(/\\\\/g, '/').replace('../', '')\n}\n\nexport function getRelativePath(rootDir?: string | null, filePath?: string | null, platform: 'windows' | 'mac' | 'linux' = 'linux'): string {\n if (!rootDir || !filePath) {\n throw new Error(`Root and file should be filled in when retrieving the relativePath, ${rootDir || ''} ${filePath || ''}`)\n }\n\n const relativePath = relative(rootDir, filePath)\n\n // On Windows, paths are separated with a \"\\\"\n // However, web browsers use \"/\" no matter the platform\n const slashedPath = slash(relativePath, platform)\n\n if (slashedPath.startsWith('../')) {\n return slashedPath\n }\n\n return `./${slashedPath}`\n}\n","type BasePath<T extends string = string> = `${T}/`\n\nexport type Import = {\n /**\n * Import name to be used\n * @example [\"useState\"]\n * @example \"React\"\n */\n name:\n | string\n | Array<\n | string\n | {\n propertyName: string\n name?: string\n }\n >\n /**\n * Path for the import\n * @example '@kubb/core'\n */\n path: string\n /**\n * Add `type` prefix to the import, this will result in: `import type { Type } from './path'`.\n */\n isTypeOnly?: boolean\n\n isNameSpace?: boolean\n /**\n * When root is set it will get the path with relative getRelativePath(root, path).\n */\n root?: string\n}\n\nexport type Source = {\n name?: string\n value?: string\n isTypeOnly?: boolean\n /**\n * Has const or type 'export'\n * @default false\n */\n isExportable?: boolean\n /**\n * When set, barrel generation will add this\n * @default false\n */\n isIndexable?: boolean\n}\n\nexport type Export = {\n /**\n * Export name to be used.\n * @example [\"useState\"]\n * @example \"React\"\n */\n name?: string | Array<string>\n /**\n * Path for the import.\n * @example '@kubb/core'\n */\n path: string\n /**\n * Add `type` prefix to the export, this will result in: `export type { Type } from './path'`.\n */\n isTypeOnly?: boolean\n /**\n * Make it possible to override the name, this will result in: `export * as aliasName from './path'`.\n */\n asAlias?: boolean\n}\n\nexport type Extname = '.ts' | '.js' | '.tsx' | '.json' | `.${string}`\n\nexport type Mode = 'single' | 'split'\n\n/**\n * Name to be used to dynamicly create the baseName(based on input.path)\n * Based on UNIX basename\n * @link https://nodejs.org/api/path.html#pathbasenamepath-suffix\n */\nexport type BaseName = `${string}.${string}`\n\n/**\n * Path will be full qualified path to a specified file\n */\nexport type Path = string\n\nexport type AdvancedPath<T extends BaseName = BaseName> = `${BasePath}${T}`\n\nexport type OptionalPath = Path | undefined | null\n\nexport type File<TMeta extends object = object> = {\n /**\n * Name to be used to create the path\n * Based on UNIX basename, `${name}.extname`\n * @link https://nodejs.org/api/path.html#pathbasenamepath-suffix\n */\n baseName: BaseName\n /**\n * Path will be full qualified path to a specified file\n */\n path: AdvancedPath<BaseName> | Path\n sources: Array<Source>\n imports?: Array<Import>\n exports?: Array<Export>\n /**\n * Use extra meta, this is getting used to generate the barrel/index files.\n */\n meta?: TMeta\n banner?: string\n footer?: string\n}\n\nexport type ResolvedImport = Import\n\nexport type ResolvedExport = Export\n\nexport type ResolvedFile<TMeta extends object = object> = File<TMeta> & {\n /**\n * @default object-hash\n */\n id: string\n /**\n * Contains the first part of the baseName, generated based on baseName\n * @link https://nodejs.org/api/path.html#pathformatpathobject\n */\n name: string\n extname: Extname\n imports: Array<ResolvedImport>\n exports: Array<ResolvedExport>\n}\n","export { clean } from './clean.ts'\nexport { read, readSync } from './read.ts'\nexport { write } from './write.ts'\nexport { exists } from './exists.ts'\nexport { getRelativePath } from './utils.ts'\n\nexport function trimExtName(text: string): string {\n return text.replace(/\\.[^/.]+$/, '')\n}\n\nexport * as KubbFile from './types.ts'\n"]}