@kubb/core
Version:
Core functionality for Kubb's plugin-based code generation system, providing the foundation for transforming OpenAPI specifications.
1 lines • 19.7 kB
Source Map (JSON)
{"version":3,"file":"transformers-Bwrz5_qV.cjs","names":["preserveConsecutiveUppercase","camelCase","_camelcase","value"],"sources":["../src/transformers/transformReservedWord.ts","../src/transformers/trim.ts","../../../node_modules/.pnpm/camelcase@8.0.0/node_modules/camelcase/index.js","../src/transformers/casing.ts","../src/transformers/combineCodes.ts","../src/transformers/createJSDocBlockText.ts","../src/transformers/escape.ts","../src/transformers/indent.ts","../src/transformers/nameSorter.ts","../src/transformers/searchAndReplace.ts","../src/transformers/stringify.ts","../src/transformers/toRegExp.ts","../src/transformers/index.ts"],"sourcesContent":["/**\n * @link https://github.com/jonschlinkert/reserved/blob/master/index.js\n */\nconst reservedWords = [\n 'abstract',\n 'arguments',\n 'boolean',\n 'break',\n 'byte',\n 'case',\n 'catch',\n 'char',\n 'class',\n 'const',\n 'continue',\n 'debugger',\n 'default',\n 'delete',\n 'do',\n 'double',\n 'else',\n 'enum',\n 'eval',\n 'export',\n 'extends',\n 'false',\n 'final',\n 'finally',\n 'float',\n 'for',\n 'function',\n 'goto',\n 'if',\n 'implements',\n 'import',\n 'in',\n 'instanceof',\n 'int',\n 'interface',\n 'let',\n 'long',\n 'native',\n 'new',\n 'null',\n 'package',\n 'private',\n 'protected',\n 'public',\n 'return',\n 'short',\n 'static',\n 'super',\n 'switch',\n 'synchronized',\n 'this',\n 'throw',\n 'throws',\n 'transient',\n 'true',\n 'try',\n 'typeof',\n 'var',\n 'void',\n 'volatile',\n 'while',\n 'with',\n 'yield',\n\n 'Array',\n 'Date',\n 'eval',\n 'function',\n 'hasOwnProperty',\n 'Infinity',\n 'isFinite',\n 'isNaN',\n 'isPrototypeOf',\n 'length',\n 'Math',\n 'name',\n 'NaN',\n 'Number',\n 'Object',\n 'prototype',\n 'String',\n 'toString',\n 'undefined',\n 'valueOf',\n]\n\nexport function transformReservedWord(word: string): string {\n if ((word && reservedWords.includes(word)) || word?.match(/^\\d/)) {\n return `_${word}`\n }\n\n return word\n}\n\nexport function isValidVarName(name: string) {\n try {\n Function(`var ${name}`)\n } catch (_e) {\n return false\n }\n return true\n}\n","export function trim(text: string): string {\n return text.replaceAll(/\\n/g, '').trim()\n}\n\nexport function trimQuotes(text: string): string {\n if (text.match(/^\"(.*)\"$/)) {\n return text.replace(/^\"(.*)\"$/, '$1')\n }\n if (text.match(/^'(.*)'$/)) {\n return text.replace(/^'(.*)'$/, '$1')\n }\n\n if (text.match(/^`(.*)`$/)) {\n return text.replace(/^`(.*)`$/, '$1')\n }\n\n return text\n}\n","const UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst LEADING_CAPITAL = /^[\\p{Lu}](?![\\p{Lu}])/gu;\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');\nconst NUMBERS_AND_IDENTIFIER = new RegExp('\\\\d+' + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string, toLowerCase, toUpperCase, preserveConsecutiveUppercase) => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\tlet isLastLastCharPreserved = false;\n\n\tfor (let index = 0; index < string.length; index++) {\n\t\tconst character = string[index];\n\t\tisLastLastCharPreserved = index > 2 ? string[index - 3] === '-' : true;\n\n\t\tif (isLastCharLower && UPPERCASE.test(character)) {\n\t\t\tstring = string.slice(0, index) + '-' + string.slice(index);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\tindex++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character) && (!isLastLastCharPreserved || preserveConsecutiveUppercase)) {\n\t\t\tstring = string.slice(0, index - 1) + '-' + string.slice(index - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst preserveConsecutiveUppercase = (input, toLowerCase) => {\n\tLEADING_CAPITAL.lastIndex = 0;\n\n\treturn input.replaceAll(LEADING_CAPITAL, match => toLowerCase(match));\n};\n\nconst postProcess = (input, toUpperCase) => {\n\tSEPARATORS_AND_IDENTIFIER.lastIndex = 0;\n\tNUMBERS_AND_IDENTIFIER.lastIndex = 0;\n\n\treturn input\n\t\t.replaceAll(NUMBERS_AND_IDENTIFIER, (match, pattern, offset) => ['_', '-'].includes(input.charAt(offset + match.length)) ? match : toUpperCase(match))\n\t\t.replaceAll(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier));\n};\n\nexport default function camelCase(input, options) {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = {\n\t\tpascalCase: false,\n\t\tpreserveConsecutiveUppercase: false,\n\t\t...options,\n\t};\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tconst toLowerCase = options.locale === false\n\t\t? string => string.toLowerCase()\n\t\t: string => string.toLocaleLowerCase(options.locale);\n\n\tconst toUpperCase = options.locale === false\n\t\t? string => string.toUpperCase()\n\t\t: string => string.toLocaleUpperCase(options.locale);\n\n\tif (input.length === 1) {\n\t\tif (SEPARATORS.test(input)) {\n\t\t\treturn '';\n\t\t}\n\n\t\treturn options.pascalCase ? toUpperCase(input) : toLowerCase(input);\n\t}\n\n\tconst hasUpperCase = input !== toLowerCase(input);\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input, toLowerCase, toUpperCase, options.preserveConsecutiveUppercase);\n\t}\n\n\tinput = input.replace(LEADING_SEPARATORS, '');\n\tinput = options.preserveConsecutiveUppercase ? preserveConsecutiveUppercase(input, toLowerCase) : toLowerCase(input);\n\n\tif (options.pascalCase) {\n\t\tinput = toUpperCase(input.charAt(0)) + input.slice(1);\n\t}\n\n\treturn postProcess(input, toUpperCase);\n}\n","import _camelcase from 'camelcase'\n\ntype Options = {\n /**\n * When set it will replace all `.` with `/`.\n */\n isFile?: boolean\n prefix?: string\n suffix?: string\n}\n\nexport function camelCase(text: string, { isFile, prefix = '', suffix = '' }: Options = {}): string {\n if (isFile) {\n const splitArray = text.split('.')\n return splitArray.map((item, i) => (i === splitArray.length - 1 ? camelCase(item, { prefix, suffix }) : camelCase(item))).join('/')\n }\n\n return _camelcase(`${prefix} ${text} ${suffix}`, { pascalCase: false, preserveConsecutiveUppercase: true }).replace(/[^a-zA-Z0-9]/g, '')\n}\n\nexport function pascalCase(text: string, { isFile, prefix = '', suffix = '' }: Options = {}): string {\n if (isFile) {\n const splitArray = text.split('.')\n return splitArray.map((item, i) => (i === splitArray.length - 1 ? pascalCase(item, { prefix, suffix }) : camelCase(item))).join('/')\n }\n\n return _camelcase(`${prefix} ${text} ${suffix}`, { pascalCase: true, preserveConsecutiveUppercase: true }).replace(/[^a-zA-Z0-9]/g, '')\n}\n\nexport function snakeCase(text: string, { prefix = '', suffix = '' }: Omit<Options, 'isFile'> = {}): string {\n const processed = `${prefix} ${text} ${suffix}`.trim()\n // Convert to lowercase and replace non-alphanumeric characters with underscores\n return processed\n .replace(/([a-z])([A-Z])/g, '$1_$2') // camelCase to snake_case\n .replace(/[\\s\\-.]+/g, '_') // spaces, hyphens, dots to underscores\n .replace(/[^a-zA-Z0-9_]/g, '') // remove other special chars\n .toLowerCase()\n .replace(/_+/g, '_') // collapse multiple underscores\n .replace(/^_|_$/g, '') // trim underscores from start and end\n}\n\nexport function screamingSnakeCase(text: string, { prefix = '', suffix = '' }: Omit<Options, 'isFile'> = {}): string {\n return snakeCase(text, { prefix, suffix }).toUpperCase()\n}\n","export function combineCodes(codes: string[]): string {\n return codes.join('\\n')\n}\n","export function createJSDocBlockText({ comments }: { comments: Array<string> }): string {\n const filteredComments = comments.filter(Boolean)\n\n if (!filteredComments.length) {\n return ''\n }\n\n return `/**\\n * ${filteredComments.join('\\n * ')}\\n */`\n}\n","export function escape(text?: string): string {\n return text ? text.replaceAll('`', '\\\\`') : ''\n}\n\n/**\n * Escape all characters not included in SingleStringCharacters and DoubleStringCharacters on\n * @link http://www.ecma-international.org/ecma-262/5.1/#sec-7.8.4\n * @link https://github.com/joliss/js-string-escape/blob/master/index.js\n */\n\nexport function jsStringEscape(input: any): string {\n return `${input}`.replace(/[\"'\\\\\\n\\r\\u2028\\u2029]/g, (character) => {\n switch (character) {\n case '\"':\n case \"'\":\n case '\\\\':\n return `\\\\${character}`\n // Four possible LineTerminator characters need to be escaped:\n case '\\n':\n return '\\\\n'\n case '\\r':\n return '\\\\r'\n case '\\u2028':\n return '\\\\u2028'\n case '\\u2029':\n return '\\\\u2029'\n default:\n return ''\n }\n })\n}\n","export function createIndent(size: number): string {\n return Array.from({ length: size + 1 }).join(' ')\n}\n","export function nameSorter<T extends { name: string }>(a: T, b: T): 0 | 1 | -1 {\n if (a.name < b.name) {\n return -1\n }\n if (a.name > b.name) {\n return 1\n }\n return 0\n}\n","type Options = {\n text: string\n replaceBy: string\n prefix?: string\n key: string\n searchValues?: (prefix: string, key: string) => Array<RegExp | string>\n}\n\nexport function searchAndReplace(options: Options): string {\n const { text, replaceBy, prefix = '', key } = options\n\n const searchValues = options.searchValues?.(prefix, key) || [\n `${prefix}[\"${key}\"]`,\n `${prefix}['${key}']`,\n `${prefix}[\\`${key}\\`]`,\n `${prefix}\"${key}\"`,\n `${prefix}'${key}'`,\n `${prefix}\\`${key}\\``,\n new RegExp(`${prefix}${key}`, 'g'),\n ]\n\n return searchValues.reduce((prev, searchValue) => {\n return prev.toString().replaceAll(searchValue, replaceBy)\n }, text) as string\n}\n","import { trimQuotes } from './trim'\n\nexport function stringify(value: string | number | boolean | undefined): string {\n if (value === undefined || value === null) {\n return '\"\"'\n }\n\n return JSON.stringify(trimQuotes(value.toString()))\n}\n\nexport function stringifyObject(value: object): string {\n const items = Object.entries(value)\n .map(([key, value]) => {\n if (typeof value === 'object') {\n return `${key}: {\n ${stringifyObject(value)}\n }`\n }\n\n return `${key}: ${value}`\n })\n .filter(Boolean)\n\n return items.join(',\\n')\n}\n","import { trimQuotes } from './trim'\n\nexport function toRegExpString(text: string, func: string | null = 'RegExp'): string {\n const raw = trimQuotes(text)\n\n const [, replacementTarget = '', matchedFlags] = raw.match(/^\\^(\\(\\?([igmsuy]+)\\))/i) ?? []\n const cleaned = raw\n .replace(/^\\\\?\\//, '')\n .replace(/\\\\?\\/$/, '')\n .replace(replacementTarget, '')\n\n const regex = new RegExp(cleaned, matchedFlags)\n const source = regex.source\n const flags = regex.flags\n\n if (func === null) {\n return `/${source}/${flags}`\n }\n\n // return as constructor → new RegExp(\"pattern\", \"flags\")\n return `new ${func}(${JSON.stringify(source)}${flags ? `, ${JSON.stringify(flags)}` : ''})`\n}\n","import { orderBy } from 'natural-orderby'\nimport { merge } from 'remeda'\n\nimport { camelCase, pascalCase, screamingSnakeCase, snakeCase } from './casing.ts'\nimport { combineCodes } from './combineCodes.ts'\nimport { createJSDocBlockText } from './createJSDocBlockText.ts'\nimport { escape, jsStringEscape } from './escape.ts'\nimport { createIndent } from './indent.ts'\nimport { nameSorter } from './nameSorter.ts'\nimport { searchAndReplace } from './searchAndReplace.ts'\nimport { stringify, stringifyObject } from './stringify.ts'\nimport { toRegExpString } from './toRegExp.ts'\nimport { isValidVarName, transformReservedWord } from './transformReservedWord.ts'\nimport { trim, trimQuotes } from './trim.ts'\n\nexport { orderBy } from 'natural-orderby'\nexport { merge } from 'remeda'\nexport { camelCase, pascalCase, screamingSnakeCase, snakeCase } from './casing.ts'\nexport { combineCodes } from './combineCodes.ts'\nexport { createJSDocBlockText } from './createJSDocBlockText.ts'\nexport { escape, jsStringEscape } from './escape.ts'\nexport { createIndent } from './indent.ts'\nexport { nameSorter } from './nameSorter.ts'\nexport { searchAndReplace } from './searchAndReplace.ts'\nexport { stringify, stringifyObject } from './stringify.ts'\nexport { toRegExpString } from './toRegExp.ts'\nexport { isValidVarName, transformReservedWord } from './transformReservedWord.ts'\nexport { trim, trimQuotes } from './trim.ts'\n\nexport default {\n combineCodes,\n escape,\n jsStringEscape,\n createIndent,\n transformReservedWord,\n isValidVarName,\n nameSorter,\n searchAndReplace,\n stringify,\n stringifyObject,\n toRegExpString,\n trim,\n trimQuotes,\n JSDoc: {\n createJSDocBlockText,\n },\n orderBy,\n merge,\n camelCase,\n pascalCase,\n snakeCase,\n screamingSnakeCase,\n} as const\n"],"x_google_ignoreList":[2],"mappings":"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"}