fork of hey-api/openapi-ts because I need some additional things
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at feat/use-query-options 55 lines 1.4 kB view raw
1import { regexp } from './regexp'; 2import type { ReservedList } from './reserved'; 3import { reserved } from './reserved'; 4 5export const safeAccessorName = (name: string): string => { 6 regexp.number.lastIndex = 0; 7 if (regexp.number.test(name)) { 8 return name.startsWith('-') ? `'${name}'` : name; 9 } 10 11 regexp.pythonIdentifier.lastIndex = 0; 12 if (regexp.pythonIdentifier.test(name)) { 13 return name; 14 } 15 return `'${name}'`; 16}; 17 18const validPythonChar = /^[a-zA-Z0-9_]$/; 19 20const safeName = (name: string, reserved: ReservedList): string => { 21 let sanitized = ''; 22 let index: number; 23 24 const first = name[0] ?? ''; 25 regexp.illegalStartCharacters.lastIndex = 0; 26 if (regexp.illegalStartCharacters.test(first)) { 27 // Check if character becomes valid when not in leading position (e.g., digits) 28 if (validPythonChar.test(first)) { 29 sanitized += '_'; 30 index = 0; 31 } else { 32 sanitized += '_'; 33 index = 1; 34 } 35 } else { 36 sanitized += first; 37 index = 1; 38 } 39 40 while (index < name.length) { 41 const char = name[index] ?? ''; 42 sanitized += validPythonChar.test(char) ? char : '_'; 43 index += 1; 44 } 45 46 if (reserved['~values'].has(sanitized)) { 47 sanitized = `${sanitized}_`; 48 } 49 50 return sanitized || '_'; 51}; 52 53export const safeRuntimeName = (name: string): string => safeName(name, reserved.runtime); 54 55export const safeKeywordName = (name: string): string => safeName(name, reserved.keywords);