{"version":3,"file":"index.umd.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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"}