{"version":3,"file":"index.cjs.development.cjs","sources":["../src/index.ts"],"sourcesContent":["import { ITSAndTypeAndStringLiteral, ITSTypeAndStringLiteral } from 'ts-type/lib/helper/string';\n\nexport const enum EnumLineBreak\n{\n\tCR = \"\\r\",\n\tCRLF = \"\\r\\n\",\n\tLF = \"\\n\",\n}\n\nexport const enum EnumLineBreakCharCode\n{\n\tCR = 0x0d,\n\tLF = 0x0a,\n}\n\nconst CR = EnumLineBreak.CR as const;\nconst CRLF = EnumLineBreak.CRLF as const;\nconst LF = EnumLineBreak.LF as const;\n\nconst R_CRLF = /\\r\\n|\\r(?!\\n)|\\n/g;\nconst R_CRLF_MATCH = new RegExp(`(${R_CRLF.source})`, R_CRLF.flags);\n\nexport { CR, CRLF, LF, R_CRLF, R_CRLF_MATCH }\n\nexport type ILineBreak = ITSTypeAndStringLiteral<EnumLineBreak>;\n\nexport type ILineBreakInput = ITSAndTypeAndStringLiteral<EnumLineBreak>;\n\nexport interface IOptions\n{\n\tdisable?: {\n\t\tlf?: boolean,\n\t\tcrlf?: boolean,\n\t\tcr?: boolean,\n\t}\n}\n\nexport function crlf(text: string, newline: ILineBreakInput = EnumLineBreak.LF): string\n{\n\treturn text.replace(R_CRLF, newline);\n}\n\nexport function chkcrlf(text: string, options?: IOptions)\n{\n\tconst disable = options?.disable ?? {};\n\n\treturn {\n\t\tlf: !disable.lf && /\\n/.test(text.replace(/\\r\\n/g, '')),\n\t\tcrlf: !disable.crlf && /\\r\\n/.test(text),\n\t\tcr: !disable.cr && /\\r(?!\\n)/.test(text),\n\t} as const;\n}\n\nexport type IChkCrlf = ReturnType<typeof chkcrlf>;\n\nexport function detectLineBreak(text: string, options?: IOptions)\n{\n\tconst _lb = chkcrlf(text, options);\n\treturn _detectLineBreakCore(_lb)\n}\n\nexport function _detectLineBreakCore(_lb: IChkCrlf)\n{\n\treturn _lb.crlf ? EnumLineBreak.CRLF : (_lb.lf || !_lb.cr) ? EnumLineBreak.LF : EnumLineBreak.CR\n}\n\nexport function isCRLF(newline: string): newline is EnumLineBreak.CRLF\n{\n\treturn newline === EnumLineBreak.CRLF\n}\n\nexport function isLF(newline: string): newline is EnumLineBreak.LF\n{\n\treturn newline === EnumLineBreak.LF\n}\n\nexport function isCR(newline: string): newline is EnumLineBreak.CR\n{\n\treturn newline === EnumLineBreak.CR\n}\n\nexport function charCodeIsLF(charCode: number): charCode is EnumLineBreakCharCode.LF\n{\n\treturn charCode === EnumLineBreakCharCode.LF\n}\n\nexport function charCodeIsCR(charCode: number): charCode is EnumLineBreakCharCode.CR\n{\n\treturn charCode === EnumLineBreakCharCode.CR\n}\n\nexport function lineSplit(text: string)\n{\n\treturn text.split(R_CRLF);\n}\n\nexport function crlf_unicode_normalize(text: string, newline: ILineBreakInput = EnumLineBreak.LF): string\n{\n\tconst ln3 = newline + newline + newline;\n\tconst ln2 = newline + newline;\n\n\treturn text\n\t\t.replace(/\\u000C/g, ln3)\n\t\t.replace(/\\u2028/g, newline)\n\t\t.replace(/\\u2029/g, ln2)\n\t\t;\n}\n\nexport function isEqualWithIgnoreLineSeparators(a: string, b: string)\n{\n\tconst _lb_a: IChkCrlf = chkcrlf(a);\n\tconst _lb_b: IChkCrlf = chkcrlf(b);\n\n\tlet bool = false;\n\n\tif (_lb_a.cr === _lb_b.cr && _lb_a.crlf === _lb_b.crlf && _lb_a.lf === _lb_b.lf)\n\t{\n\t\tbool = crlf(a) === crlf(b);\n\t}\n\n\treturn {\n\t\tbool,\n\t\t_lb_a,\n\t\t_lb_b,\n\t}\n}\n\nexport type ILineBreakName = keyof typeof EnumLineBreak;\n\nexport function toLineBreakName(newline: ILineBreakInput): ILineBreakName\n{\n\tswitch (newline)\n\t{\n\t\tcase EnumLineBreak.LF:\n\t\t\treturn 'LF'\n\t\tcase EnumLineBreak.CR:\n\t\t\treturn 'CR'\n\t\tcase EnumLineBreak.CRLF:\n\t\t\treturn 'CRLF'\n\t}\n\n\tthrow new TypeError(`Invalid line break`);\n}\n\nexport function nameToLineBreak(name: ILineBreakName | Lowercase<ILineBreakName> | Capitalize<Lowercase<ILineBreakName>> | string): EnumLineBreak\n{\n\tswitch (name?.toUpperCase())\n\t{\n\t\tcase 'LF':\n\t\t\treturn EnumLineBreak.LF\n\t\tcase 'CR':\n\t\t\treturn EnumLineBreak.CR\n\t\tcase 'CRLF':\n\t\t\treturn EnumLineBreak.CRLF\n\t}\n\n\tthrow new TypeError(`Invalid line break name: ${name}`);\n}\n\nexport function detectCurrentIndexLineBreakFromBufferLike<T extends number, A extends {\n\t[n: number]: number\n}>(buffer: A, index: T)\n{\n\tconst cur = buffer[index];\n\tconst next = index + 1;\n\tif (charCodeIsLF(cur))\n\t{\n\t\treturn {\n\t\t\tnewline: EnumLineBreak.LF as const,\n\t\t\tcur: cur as EnumLineBreakCharCode.LF,\n\t\t\tindex,\n\t\t\tnext,\n\t\t\tlength: 1 as const,\n\t\t} as const\n\t}\n\telse if (charCodeIsCR(cur))\n\t{\n\t\tif (charCodeIsLF(buffer[next]))\n\t\t{\n\t\t\treturn {\n\t\t\t\tnewline: EnumLineBreak.CRLF as const,\n\t\t\t\tcur: cur as EnumLineBreakCharCode.CR,\n\t\t\t\tindex,\n\t\t\t\tnext: next + 1,\n\t\t\t\tlength: 2 as const,\n\t\t\t} as const\n\t\t}\n\n\t\treturn {\n\t\t\tnewline: EnumLineBreak.CR as const,\n\t\t\tcur: cur as EnumLineBreakCharCode.CR,\n\t\t\tindex,\n\t\t\tnext,\n\t\t\tlength: 1 as const,\n\t\t} as const\n\t}\n\n\treturn {\n\t\tnewline: void 0 as undefined,\n\t\tcur,\n\t\tindex,\n\t\tnext,\n\t\tlength: 0 as const,\n\t} as const\n}\n\nexport function detectCurrentIndexLineBreak<T extends number, A extends {\n\t[n: number]: string\n}>(buffer: A, index: T)\n{\n\tconst cur = buffer[index];\n\tconst next = index + 1;\n\tif (isLF(cur))\n\t{\n\t\treturn {\n\t\t\tnewline: EnumLineBreak.LF as const,\n\t\t\tcur: cur as EnumLineBreak.LF,\n\t\t\tindex,\n\t\t\tnext,\n\t\t\tlength: 1 as const,\n\t\t} as const\n\t}\n\telse if (isCR(cur))\n\t{\n\t\tif (isLF(buffer[next]))\n\t\t{\n\t\t\treturn {\n\t\t\t\tnewline: EnumLineBreak.CRLF as const,\n\t\t\t\tcur: cur as EnumLineBreak.CR,\n\t\t\t\tindex,\n\t\t\t\tnext: next + 1,\n\t\t\t\tlength: 2 as const,\n\t\t\t} as const\n\t\t}\n\n\t\treturn {\n\t\t\tnewline: EnumLineBreak.CR as const,\n\t\t\tcur: cur as EnumLineBreak.CR,\n\t\t\tindex,\n\t\t\tnext,\n\t\t\tlength: 1 as const,\n\t\t} as const\n\t}\n\n\treturn {\n\t\tnewline: void 0 as void,\n\t\tcur,\n\t\tindex,\n\t\tnext,\n\t\tlength: 0 as const,\n\t} as const\n}\n\nexport default crlf;\n"],"names":["EnumLineBreak","EnumLineBreakCharCode","CR","CRLF","LF","R_CRLF","R_CRLF_MATCH","RegExp","source","flags","crlf","text","newline","replace","chkcrlf","options","_options$disable","disable","lf","test","cr","detectLineBreak","_lb","_detectLineBreakCore","isCRLF","isLF","isCR","charCodeIsLF","charCode","charCodeIsCR","lineSplit","split","crlf_unicode_normalize","ln3","ln2","isEqualWithIgnoreLineSeparators","a","b","_lb_a","_lb_b","bool","toLineBreakName","TypeError","nameToLineBreak","name","toUpperCase","detectCurrentIndexLineBreakFromBufferLike","buffer","index","cur","next","length","detectCurrentIndexLineBreak"],"mappings":"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"}