{"version":3,"file":"NamingConvention.mjs","sources":["../../src/utils/NamingConvention.ts"],"sourcesContent":["export namespace NamingConvention {\n  export function snake(str: string): string {\n    const indexes: number[] = [];\n    for (let i: number = 0; i < str.length; i++) {\n      const code: number = str.charCodeAt(i);\n      if (65 <= code && code <= 90) indexes.push(i);\n    }\n    for (let i: number = indexes.length - 1; i > 0; --i) {\n      const now: number = indexes[i]!;\n      const prev: number = indexes[i - 1]!;\n      if (now - prev === 1) indexes.splice(i, 1);\n    }\n    if (indexes.length !== 0 && indexes[0] === 0) indexes.splice(0, 1);\n    if (indexes.length === 0) return str.toLowerCase();\n\n    let ret: string = \"\";\n    for (let i: number = 0; i < indexes.length; i++) {\n      const first: number = i === 0 ? 0 : indexes[i - 1]!;\n      const last: number = indexes[i]!;\n\n      ret += str.substring(first, last).toLowerCase();\n      ret += \"_\";\n    }\n    ret += str.substring(indexes[indexes.length - 1]!).toLowerCase();\n    return ret;\n  }\n\n  export function camel(str: string): string {\n    return unsnake((str: string) => {\n      if (str.length === 0) return str;\n      else if (str[0] === str[0]!.toUpperCase())\n        return str[0]!.toLowerCase() + str.substring(1);\n      else return str;\n    })(str);\n  }\n\n  export function pascal(str: string): string {\n    return unsnake((str: string) => {\n      if (str.length === 0) return str;\n      else if (str[0] === str[0]!.toLowerCase())\n        return str[0]!.toUpperCase() + str.substring(1);\n      else return str;\n    })(str);\n  }\n\n  const unsnake =\n    (escaper: (str: string) => string) =>\n    (str: string): string => {\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      let prefix: string = \"\";\n      for (let i: number = 0; i < str.length; i++) {\n        if (str[i] === \"_\") prefix += \"_\";\n        else break;\n      }\n      if (prefix.length !== 0) str = str.substring(prefix.length);\n\n      const indexes: [number, number][] = [];\n      for (let i: number = 0; i < str.length; i++) {\n        const ch: string = str[i]!;\n        if (ch !== \"_\") continue;\n\n        const last = indexes[indexes.length - 1];\n        if (last === undefined || last[0] + last[1] !== i) indexes.push([i, 1]);\n        else ++last[1];\n      }\n      if (indexes.length === 0) return prefix + escaper(str);\n\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      let ret: string = \"\";\n      for (let i: number = 0; i < indexes.length; i++) {\n        const [first] = indexes[i]!;\n        if (i === 0)\n          if (first === 0) ret += \"_\";\n          else ret += str.substring(0, first);\n        else {\n          const [prevFirst, prevLength] = indexes[i - 1]!;\n          const piece: string = str.substring(prevFirst + prevLength, first);\n          if (piece.length) ret += capitalize(piece);\n        }\n      }\n      const last = indexes[indexes.length - 1]!;\n      const piece: string = str.substring(last[0] + last[1]);\n      if (last.length) ret += capitalize(piece);\n      return prefix + escaper(ret);\n    };\n\n  export const capitalize = (str: string): string =>\n    str.length !== 0 ? str[0].toUpperCase() + str.slice(1).toLowerCase() : str;\n\n  export const variable = (str: string): boolean =>\n    reserved(str) === false && /^[a-zA-Z_$][a-zA-Z_$0-9]*$/g.test(str);\n\n  export const reserved = (str: string): boolean => RESERVED.has(str);\n}\n\nconst RESERVED: Set<string> = new Set([\n  \"break\",\n  \"case\",\n  \"catch\",\n  \"class\",\n  \"const\",\n  \"continue\",\n  \"debugger\",\n  \"default\",\n  \"delete\",\n  \"do\",\n  \"else\",\n  \"enum\",\n  \"export\",\n  \"extends\",\n  \"false\",\n  \"finally\",\n  \"for\",\n  \"function\",\n  \"if\",\n  \"import\",\n  \"in\",\n  \"instanceof\",\n  \"module\",\n  \"new\",\n  \"null\",\n  \"package\",\n  \"public\",\n  \"private\",\n  \"protected\",\n  \"return\",\n  \"super\",\n  \"switch\",\n  \"this\",\n  \"throw\",\n  \"true\",\n  \"try\",\n  \"typeof\",\n  \"var\",\n  \"void\",\n  \"while\",\n  \"with\",\n]);\n"],"names":["NamingConvention","snake","str","indexes","i","length","code","charCodeAt","push","now","prev","splice","toLowerCase","ret","first","last","substring","camel","unsnake","toUpperCase","pascal","escaper","prefix","ch","undefined","prevFirst","prevLength","piece","capitalize","slice","variable","reserved","test","RESERVED","has","Set"],"mappings":"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"}