{"version":3,"file":"sanitization.mjs","sources":["../../src/util/sanitization.ts"],"sourcesContent":["import { camelCase, pascalCase } from 'change-case'\nimport { GeneratorOptions } from '../client/generator-context'\n\nconst replaceInvalidWithUnderscore = (value: string) => value.replace(/[^a-z0-9_$]+/gi, '_')\n\nconst escapeQuotes = (value: string) => value.replace(/['\"]/g, (val) => `\\\\${val}`)\n\nconst removeEnclosingQuotes = (value: string) => value.replace(/^\"|\"$/g, '')\n\nexport interface Sanitizer {\n  makeSafeTypeIdentifier(value: string): string\n  makeSafeMethodIdentifier(value: string): string\n  makeSafeVariableIdentifier(value: string): string\n  makeSafePropertyIdentifier(value: string): string\n  makeSafeStringTypeLiteral(value: string): string\n  getSafeMemberAccessor(value: string): string\n  isSafeVariableIdentifier(value: string): boolean\n}\n\nconst defaultSanitiser: Sanitizer = {\n  makeSafePropertyIdentifier(value: string) {\n    const options = value.startsWith('_') ? { prefixCharacters: '_' } : {}\n    return camelCase(replaceInvalidWithUnderscore(value), options)\n  },\n  makeSafeTypeIdentifier(value: string) {\n    const options = value.startsWith('_') ? { prefixCharacters: '_' } : {}\n    return pascalCase(replaceInvalidWithUnderscore(value), options)\n  },\n  makeSafeMethodIdentifier(value: string) {\n    const options = value.startsWith('_') ? { prefixCharacters: '_' } : {}\n    return camelCase(replaceInvalidWithUnderscore(value), options)\n  },\n  isSafeVariableIdentifier(value: string) {\n    return /^[a-z$_][a-z0-9_$]*$/i.test(value)\n  },\n  makeSafeVariableIdentifier(value: string) {\n    const options = value.startsWith('_') ? { prefixCharacters: '_' } : {}\n    return camelCase(replaceInvalidWithUnderscore(value), options)\n  },\n  makeSafeStringTypeLiteral(value: string): string {\n    return escapeQuotes(value)\n  },\n  getSafeMemberAccessor(value: string): string {\n    return this.isSafeVariableIdentifier(value) ? `.${value}` : `['${this.makeSafeStringTypeLiteral(value)}']`\n  },\n}\n\nconst preservingSanitiser: Sanitizer = {\n  isSafeVariableIdentifier(value: string): boolean {\n    return /^[a-z$_][a-z0-9_$]*$/i.test(value)\n  },\n  makeSafeMethodIdentifier(value: string): string {\n    return this.isSafeVariableIdentifier(value) ? value : `\"${this.makeSafeStringTypeLiteral(value)}\"`\n  },\n  makeSafePropertyIdentifier(value: string): string {\n    return this.isSafeVariableIdentifier(value) ? value : `\"${this.makeSafeStringTypeLiteral(value)}\"`\n  },\n  makeSafeTypeIdentifier(value: string): string {\n    return replaceInvalidWithUnderscore(value)\n  },\n  makeSafeVariableIdentifier(value: string): string {\n    return replaceInvalidWithUnderscore(value)\n  },\n  makeSafeStringTypeLiteral(value: string): string {\n    return escapeQuotes(value)\n  },\n  getSafeMemberAccessor(value: string): string {\n    return this.isSafeVariableIdentifier(value) ? `.${value}` : `['${removeEnclosingQuotes(value)}']`\n  },\n}\n\nexport const getSanitizer = (options: GeneratorOptions) => (options.preserveNames ? preservingSanitiser : defaultSanitiser)\n"],"names":[],"mappings":";;AAGA,MAAM,4BAA4B,GAAG,CAAC,KAAa,KAAK,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;AAE5F,MAAM,YAAY,GAAG,CAAC,KAAa,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,CAAA,EAAA,EAAK,GAAG,CAAA,CAAE,CAAC;AAEnF,MAAM,qBAAqB,GAAG,CAAC,KAAa,KAAK,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;AAY5E,MAAM,gBAAgB,GAAc;AAClC,IAAA,0BAA0B,CAAC,KAAa,EAAA;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,EAAE;QACtE,OAAO,SAAS,CAAC,4BAA4B,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChE,CAAC;AACD,IAAA,sBAAsB,CAAC,KAAa,EAAA;QAClC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,EAAE;QACtE,OAAO,UAAU,CAAC,4BAA4B,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACjE,CAAC;AACD,IAAA,wBAAwB,CAAC,KAAa,EAAA;QACpC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,EAAE;QACtE,OAAO,SAAS,CAAC,4BAA4B,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChE,CAAC;AACD,IAAA,wBAAwB,CAAC,KAAa,EAAA;AACpC,QAAA,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5C,CAAC;AACD,IAAA,0BAA0B,CAAC,KAAa,EAAA;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,EAAE;QACtE,OAAO,SAAS,CAAC,4BAA4B,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChE,CAAC;AACD,IAAA,yBAAyB,CAAC,KAAa,EAAA;AACrC,QAAA,OAAO,YAAY,CAAC,KAAK,CAAC;IAC5B,CAAC;AACD,IAAA,qBAAqB,CAAC,KAAa,EAAA;QACjC,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAA,CAAA,EAAI,KAAK,EAAE,GAAG,CAAA,EAAA,EAAK,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAA,EAAA,CAAI;IAC5G,CAAC;CACF;AAED,MAAM,mBAAmB,GAAc;AACrC,IAAA,wBAAwB,CAAC,KAAa,EAAA;AACpC,QAAA,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5C,CAAC;AACD,IAAA,wBAAwB,CAAC,KAAa,EAAA;QACpC,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG;IACpG,CAAC;AACD,IAAA,0BAA0B,CAAC,KAAa,EAAA;QACtC,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAA,CAAA,CAAG;IACpG,CAAC;AACD,IAAA,sBAAsB,CAAC,KAAa,EAAA;AAClC,QAAA,OAAO,4BAA4B,CAAC,KAAK,CAAC;IAC5C,CAAC;AACD,IAAA,0BAA0B,CAAC,KAAa,EAAA;AACtC,QAAA,OAAO,4BAA4B,CAAC,KAAK,CAAC;IAC5C,CAAC;AACD,IAAA,yBAAyB,CAAC,KAAa,EAAA;AACrC,QAAA,OAAO,YAAY,CAAC,KAAK,CAAC;IAC5B,CAAC;AACD,IAAA,qBAAqB,CAAC,KAAa,EAAA;QACjC,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,GAAG,CAAA,EAAA,EAAK,qBAAqB,CAAC,KAAK,CAAC,CAAA,EAAA,CAAI;IACnG,CAAC;CACF;MAEY,YAAY,GAAG,CAAC,OAAyB,MAAM,OAAO,CAAC,aAAa,GAAG,mBAAmB,GAAG,gBAAgB;;;;"}