@visulima/colorize 1.2.1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,9 @@
1
+ import { isStdoutColorSupported } from '@visulima/is-ansi-color-supported';
2
+
3
+ function b({onlyFirst:e=!1}={}){let r=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(r,e?void 0:"g")}var a=(e,r,t)=>r>e?r:e>t?t:e;var u=e=>{let r=e.replace("#","");if(r.length===3)r=r[0]+r[0]+r[1]+r[1]+r[2]+r[2];else if(r.length!==6)return [0,0,0];let t=Number.parseInt(r,16);return [t>>16&255,t>>8&255,t&255]};var n=isStdoutColorSupported()>0?(e,r)=>({close:"\x1B["+r+"m",open:"\x1B["+e+"m"}):()=>({close:"",open:""}),j=e=>n("38;5;"+e,39),v=e=>n("48;5;"+e,49),S=(e,r,t)=>n("38;2;"+e+";"+r+";"+t,39),R=(e,r,t)=>n("48;2;"+e+";"+r+";"+t,49),y={bold:n(1,22),dim:n(2,22),hidden:n(8,28),inverse:n(7,27),italic:n(3,23),overline:n(53,55),reset:n(0,0),strike:n(9,29),strikethrough:n(9,29),underline:n(4,24),visible:{close:"",open:""}},f={bgBlack:n(40,49),bgBlackBright:n(100,49),bgBlue:n(44,49),bgBlueBright:n(104,49),bgCyan:n(46,49),bgCyanBright:n(106,49),bgGray:n(100,49),bgGreen:n(42,49),bgGreenBright:n(102,49),bgGrey:n(100,49),bgMagenta:n(45,49),bgMagentaBright:n(105,49),bgRed:n(41,49),bgRedBright:n(101,49),bgWhite:n(47,49),bgWhiteBright:n(107,49),bgYellow:n(43,49),bgYellowBright:n(103,49),black:n(30,39),blackBright:n(90,39),blue:n(34,39),blueBright:n(94,39),cyan:n(36,39),cyanBright:n(96,39),gray:n(90,39),green:n(32,39),greenBright:n(92,39),grey:n(90,39),magenta:n(35,39),magentaBright:n(95,39),red:n(31,39),redBright:n(91,39),white:n(37,39),whiteBright:n(97,39),yellow:n(33,39),yellowBright:n(93,39)},d={bg:e=>v(a(e,0,255)),bgHex:e=>R(...u(e)),bgRgb:(e,r,t)=>R(a(e,0,255),a(r,0,255),a(t,0,255)),fg:e=>j(a(e,0,255)),hex:e=>S(...u(e)),rgb:(e,r,t)=>S(a(e,0,255),a(r,0,255),a(t,0,255))};var T=(e,r,t)=>{if(r==="")return e;let s=e.indexOf(r);if(s<0)return e;let o=r.length,i=0,l="";for(;~s;)l+=e.slice(i,s)+t,i=s+o,s=e.indexOf(r,i);return l+e.slice(i)};var g={},h=null,H=(e,r,t)=>{if(!e)return "";let s=e.raw==null?e+"":String.raw(e,...r);if(s.includes("\x1B"))for(let o=t;o;o=o.props)s=T(s,o.close,o.open);return s.includes(`
4
+ `)&&(s=s.replace(/(\r*\n)/g,t.closeStack+"$1"+t.openStack)),t.openStack+s+t.closeStack},C=({props:e},{close:r,open:t})=>{let s=(e?.openStack??"")+t,o=r+(e?.closeStack??""),i=(l,...c)=>H(l,c,i.props);return Object.setPrototypeOf(i,h),i.props={close:r,closeStack:o,open:t,openStack:s,props:e},i.open=s,i.close=o,i},O=function(){let e=r=>r+"";e.strip=r=>r.replaceAll(b(),"");for(let r in f)g[r]={get(){let t=C(this,f[r]);return Object.defineProperty(this,r,{value:t}),t}};for(let r in y)g[r]={get(){let t=C(this,y[r]);return Object.defineProperty(this,r,{value:t}),t}};return h=Object.defineProperties({},g),Object.setPrototypeOf(e,h),e};for(let e in d)g[e]={get(){return (...r)=>C(this,d[e](...r))}};g.ansi256=g.fg;g.bgAnsi256=g.bg;var B=O;var x=e=>(r,...t)=>{if(!Array.isArray(r)||!Array.isArray(r.raw))throw new TypeError("A tagged template literal must be provided");let s=[r.raw[0]];for(let o=1;o<r.raw.length;o++)s.push(String(t[o-1]).replaceAll(/[{}\\]/g,"\\$&"),String(r.raw[o]));return e(s.join(""))};var G=new Map([["\\","\\"],["0","\0"],["a","\x07"],["b","\b"],["e","\x1B"],["f","\f"],["n",`
5
+ `],["r","\r"],["t"," "],["v","\v"]]),k=e=>{let r=e.startsWith("u"),t=e[1]==="{";return r&&!t&&e.length===5||e.startsWith("x")&&e.length===3?String.fromCodePoint(Number.parseInt(e.slice(1),16)):r&&t?String.fromCodePoint(Number.parseInt(e.slice(2,-1),16)):G.get(e)??e};var L=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|\{(~)?(#?[\w:]+(?:\([^)]*\))?(?:\.#?[\w:]+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n))|(\})|((?:.|[\r\n\f])+?)/gi,z=/(?:^|\.)(?:(\w+)(?:\(([^)]*)\))?|#(?=[:a-f\d]{2,})([a-f\d]{6})?(?::([a-f\d]{6}))?)/gi,N=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,M=/\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.)|([^\\])/gi,$=(e,r)=>{let t=[],s=r.trim().split(/\s*,\s*/),o;for(let i of s){let l=Number(i);if(!Number.isNaN(l))t.push(l);else if(o=N.exec(i))t.push(o[2].replace(M,(c,p,m)=>p?k(p):m));else throw new Error(`Invalid template style argument: ${i} (in style '${e}')`)}return t},I=e=>{z.lastIndex=0;let r=[],t;for(;(t=z.exec(e))!==null;){let s=t[1];t[2]?r.push([s,...$(s,t[2])]):t[3]||t[4]?(t[3]&&r.push(["rgb",...u(t[3])]),t[4]&&r.push(["bgRgb",...u(t[4])])):r.push([s]);}return r},E=(e,r)=>{let t={};for(let o of r)for(let i of o.styles)t[i[0]]=o.inverse?null:i.slice(1);let s=e;for(let[o,i]of Object.entries(t))if(Array.isArray(i)){if(!(o in s))throw new Error(`Unknown style: ${o}`);s=i.length>0?s[o](...i):s[o];}return s},A=e=>r=>{let t=[],s=[],o=[];if(r.replaceAll(L,(i,l,c,p,m,P)=>{if(l)o.push(k(l));else if(p){let w=o.join("");o=[],s.push(t.length===0?w:E(e,t)(w)),t.push({inverse:c,styles:I(p)});}else if(m){if(t.length===0)throw new Error("Found extraneous } in template literal");s.push(E(e,t)(o.join(""))),o=[],t.pop();}else o.push(P);}),s.push(o.join("")),t.length>0)throw new Error(`template literal is missing ${t.length} closing bracket${t.length===1?"":"s"} (\`}\`)`);return s.join("")};var V=new B,ue=e=>x(A(e)),W=A(V),pe=x(W);
6
+
7
+ export { pe as default, ue as makeTaggedTemplate, W as template };
8
+ //# sourceMappingURL=out.js.map
9
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/ansi-regex@6.0.1/node_modules/ansi-regex/index.js","../src/ansi-codes.ts","../src/util/clamp.ts","../src/util/hex-to-rgb.ts","../src/util/string-replace-all.ts","../src/colorize.server.ts","../src/template/make-colorize-template.ts","../src/util/unescape.ts","../src/template/make-template.ts","../src/template.ts"],"names":["ansiRegex","onlyFirst","pattern","isStdoutColorSupported","clamp","number_","min","max","hexToRgb","hex","color","esc","open","close","createAnsi256","code","createBgAnsi256","createRgb","r","g","b","createBgRgb","baseStyles","baseColors","styleMethods","stringReplaceAll","string_","searchValue","replaceValue","pos","substringLength","lastPos","result","styles","stylePrototype","wrapText","strings","values","properties","string","currentProperties","createStyle","props","openStack","closeStack","style","Colorize","self","value","name","arguments_","colorize_server_default","makeColorizeTemplate","template","firstString","parts","index","ESCAPES","unescape","c","u","bracket","TEMPLATE_REGEX","STYLE_REGEX","STRING_REGEX","ESCAPE_REGEX","parseArguments","results","chunks","matches","chunk","number","_","escape","character","parseStyle","buildStyle","colorize","enabled","layer","current","styleName","enabledStyles","makeTemplate","escapeCharacter","inverse","joinedChunk","makeTaggedTemplate","instance","template_default"],"mappings":"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","sourcesContent":["export default function ansiRegex({onlyFirst = false} = {}) {\n\tconst pattern = [\n\t '[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n}\n","/**\n * Modified copy of https://github.com/webdiscus/ansis/blob/master/src/ansi-codes.js\n *\n * ISC License\n *\n * Copyright (c) 2023, webdiscus\n */\n\nimport { isStdoutColorSupported } from \"@visulima/is-ansi-color-supported\";\n\nimport type { AnsiColors, AnsiStyles, ColorData, ColorValueHex } from \"./types\";\nimport { clamp } from \"./util/clamp\";\nimport { hexToRgb } from \"./util/hex-to-rgb\";\n\nconst esc: (open: number | string, close: number | string) => ColorData =\n isStdoutColorSupported() > 0\n ? (open: number | string, close: number | string): ColorData => {\n return { close: \"\\u001B[\" + close + \"m\", open: \"\\u001B[\" + open + \"m\" };\n }\n : (): ColorData => {\n return { close: \"\", open: \"\" };\n };\n\nconst createAnsi256 = (code: number | string): ColorData => esc(\"38;5;\" + code, 39);\n\nconst createBgAnsi256 = (code: number | string): ColorData => esc(\"48;5;\" + code, 49);\n\nconst createRgb = (r: number | string, g: number | string, b: number | string): ColorData => esc(\"38;2;\" + r + \";\" + g + \";\" + b, 39);\n\nconst createBgRgb = (r: number | string, g: number | string, b: number | string): ColorData => esc(\"48;2;\" + r + \";\" + g + \";\" + b, 49);\n\nexport const baseStyles: Required<Record<AnsiStyles, ColorData>> = {\n // 21 isn't widely supported and 22 does the same thing\n bold: esc(1, 22),\n dim: esc(2, 22),\n hidden: esc(8, 28),\n inverse: esc(7, 27),\n italic: esc(3, 23),\n overline: esc(53, 55),\n reset: esc(0, 0),\n strike: esc(9, 29), // alias for strikethrough\n strikethrough: esc(9, 29),\n underline: esc(4, 24),\n visible: { close: \"\", open: \"\" },\n};\n\nexport const baseColors: Required<Record<AnsiColors, ColorData>> = {\n bgBlack: esc(40, 49),\n bgBlackBright: esc(100, 49),\n bgBlue: esc(44, 49),\n bgBlueBright: esc(104, 49),\n bgCyan: esc(46, 49),\n bgCyanBright: esc(106, 49),\n bgGray: esc(100, 49), // US spelling alias for bgBlackBright\n bgGreen: esc(42, 49),\n bgGreenBright: esc(102, 49),\n bgGrey: esc(100, 49), // UK spelling alias for bgBlackBright\n bgMagenta: esc(45, 49),\n bgMagentaBright: esc(105, 49),\n bgRed: esc(41, 49),\n bgRedBright: esc(101, 49),\n bgWhite: esc(47, 49),\n bgWhiteBright: esc(107, 49),\n bgYellow: esc(43, 49),\n bgYellowBright: esc(103, 49),\n black: esc(30, 39),\n blackBright: esc(90, 39),\n blue: esc(34, 39),\n blueBright: esc(94, 39),\n cyan: esc(36, 39),\n cyanBright: esc(96, 39),\n gray: esc(90, 39), // US spelling alias for blackBright\n green: esc(32, 39),\n greenBright: esc(92, 39),\n grey: esc(90, 39), // UK spelling alias for blackBright\n magenta: esc(35, 39),\n magentaBright: esc(95, 39),\n red: esc(31, 39),\n redBright: esc(91, 39),\n white: esc(37, 39),\n whiteBright: esc(97, 39),\n yellow: esc(33, 39),\n yellowBright: esc(93, 39),\n};\n\nexport const styleMethods: {\n bg: (code: number) => ColorData;\n bgHex: (hex: ColorValueHex) => ColorData;\n bgRgb: (r: number, g: number, b: number) => ColorData;\n fg: (code: number) => ColorData;\n hex: (hex: ColorValueHex) => ColorData;\n rgb: (r: number, g: number, b: number) => ColorData;\n} = {\n bg: (code) => createBgAnsi256(clamp(code, 0, 255)),\n\n bgHex: (hex) => createBgRgb(...hexToRgb(hex)),\n\n bgRgb: (r, g, b) => createBgRgb(clamp(r, 0, 255), clamp(g, 0, 255), clamp(b, 0, 255)),\n\n fg: (code) => createAnsi256(clamp(code, 0, 255)),\n\n hex: (hex) => createRgb(...hexToRgb(hex)),\n\n rgb: (r, g, b) => createRgb(clamp(r, 0, 255), clamp(g, 0, 255), clamp(b, 0, 255)),\n};\n","/**\n * Modified copy of https://github.com/webdiscus/ansis/blob/master/src/utils.js\n *\n * ISC License\n *\n * Copyright (c) 2023, webdiscus\n */\n\n/**\n * Clamp a number within the inclusive range specified by min and max.\n * @note: The ternary operator is a tick quicker than Math.min(Math.max(num, min), max).\n */\n\nexport const clamp = (number_: number, min: number, max: number): number => (min > number_ ? min : number_ > max ? max : number_);\n","/**\n * Modified copy of https://github.com/webdiscus/ansis/blob/master/src/utils.js\n *\n * ISC License\n *\n * Copyright (c) 2023, webdiscus\n */\n\nimport type { ColorValueHex } from \"../types\";\n\n/**\n * Convert hex color string to RGB values.\n *\n * A hexadecimal color code can be 3 or 6 digits with an optional \"#\" prefix.\n *\n * The 3 digits specifies an RGB doublet data as a fully opaque color.\n * For example, \"#123\" specifies the color that is represented by \"#112233\".\n *\n * The 6 digits specifies a fully opaque color.\n * For example, \"#112233\".\n *\n * @param {string} hex A string that contains the hexadecimal RGB color representation.\n * @return {[number, number, number]} The red, green, blue values in range [0, 255] .\n */\nexport const hexToRgb = (hex: ColorValueHex): [number, number, number] => {\n let color: string = hex.replace(\"#\", \"\");\n\n if (color.length === 3) {\n color = (color[0] as string) + (color[0] as string) + (color[1] as string) + (color[1] as string) + (color[2] as string) + (color[2] as string);\n } else if (color.length !== 6) {\n return [0, 0, 0];\n }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const number_ = Number.parseInt(color, 16);\n\n // eslint-disable-next-line no-bitwise\n return [(number_ >> 16) & 255, (number_ >> 8) & 255, number_ & 255];\n};\n","/**\n * Modified copy of https://github.com/webdiscus/ansis/blob/master/src/utils.js\n *\n * ISC License\n *\n * Copyright (c) 2023, webdiscus\n */\n\n/**\n * Replace all matched strings.\n * Note: this implementation is over 30% faster than String.replaceAll().\n */\nexport const stringReplaceAll = (string_: string, searchValue: string, replaceValue: string): string => {\n // visible style has empty open/close props\n if (searchValue === \"\") {\n return string_;\n }\n\n let pos = string_.indexOf(searchValue);\n if (pos < 0) {\n return string_;\n }\n\n const substringLength = searchValue.length;\n let lastPos = 0;\n let result = \"\";\n\n // eslint-disable-next-line no-loops/no-loops,no-bitwise\n while (~pos) {\n result += string_.slice(lastPos, pos) + replaceValue;\n lastPos = pos + substringLength;\n pos = string_.indexOf(searchValue, lastPos);\n }\n\n return result + string_.slice(lastPos);\n};\n","/**\n * Modified copy of https://github.com/webdiscus/ansis/blob/master/src/index.js\n *\n * ISC License\n *\n * Copyright (c) 2023, webdiscus\n */\n\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport ansiRegex from \"ansi-regex\";\n\nimport { baseColors, baseStyles, styleMethods } from \"./ansi-codes\";\nimport type { ColorData, ColorizeType } from \"./types\";\nimport { stringReplaceAll } from \"./util/string-replace-all\";\n\nconst styles: Record<string, object> = {};\n\nlet stylePrototype: object | null = null;\n\nconst wrapText = (\n strings: ArrayLike<string> | ReadonlyArray<string> | number | string | { raw: ArrayLike<string> | ReadonlyArray<string> },\n values: string[],\n properties: ColorizeProperties,\n) => {\n if (!strings) {\n return \"\";\n }\n\n let string =\n (strings as { raw?: ArrayLike<string> | ReadonlyArray<string> | null }).raw == null\n ? (((strings as number | string) + \"\") as string)\n : String.raw(strings as { raw: ArrayLike<string> | ReadonlyArray<string> }, ...values);\n\n if (string.includes(\"\\u001B\")) {\n // eslint-disable-next-line no-loops/no-loops,@typescript-eslint/no-unnecessary-condition\n for (let currentProperties = properties; currentProperties; currentProperties = currentProperties.props) {\n string = stringReplaceAll(string, currentProperties.close, currentProperties.open);\n }\n }\n\n if (string.includes(\"\\n\")) {\n // eslint-disable-next-line unicorn/prefer-string-replace-all\n string = string.replace(/(\\r*\\n)/g, properties.closeStack + \"$1\" + properties.openStack);\n }\n\n return properties.openStack + string + properties.closeStack;\n};\n\ntype ColorizeProperties = { close: string; closeStack: string; open: string; openStack: string; props: ColorizeProperties };\n\nconst createStyle = (\n { props }: { props?: ColorizeProperties },\n { close, open }: ColorData,\n): {\n (strings: ArrayLike<string> | ReadonlyArray<string> | string, ...values: string[]): string;\n close: string;\n open: string;\n props: { close: string; closeStack: string; open: string; openStack: string; props?: ColorizeProperties };\n} => {\n const openStack: string = (props?.openStack ?? \"\") + open;\n const closeStack: string = close + (props?.closeStack ?? \"\");\n\n const style = (strings: ArrayLike<string> | ReadonlyArray<string> | string, ...values: string[]) => wrapText(strings, values, style.props);\n\n Object.setPrototypeOf(style, stylePrototype);\n\n style.props = { close, closeStack, open, openStack, props } as ColorizeProperties;\n style.open = openStack;\n style.close = closeStack;\n\n return style;\n};\n\n// eslint-disable-next-line func-names\nconst Colorize = function () {\n const self = (string_: number | string) => string_ + \"\";\n\n self.strip = (value: string): string => value.replaceAll(ansiRegex(), \"\");\n\n // eslint-disable-next-line guard-for-in,no-loops/no-loops,no-restricted-syntax\n for (const name in baseColors) {\n // eslint-disable-next-line security/detect-object-injection\n styles[name] = {\n get() {\n const style = createStyle(this, baseColors[name as keyof typeof baseColors]);\n\n Object.defineProperty(this, name, { value: style });\n\n return style;\n },\n };\n }\n\n // eslint-disable-next-line guard-for-in,no-loops/no-loops,no-restricted-syntax\n for (const name in baseStyles) {\n // eslint-disable-next-line security/detect-object-injection\n styles[name] = {\n get() {\n const style = createStyle(this, baseStyles[name as keyof typeof baseStyles]);\n\n Object.defineProperty(this, name, { value: style });\n\n return style;\n },\n };\n }\n\n // This needs to be the last thing we do, so that the prototype is fully populated.\n stylePrototype = Object.defineProperties({}, styles);\n\n Object.setPrototypeOf(self, stylePrototype);\n\n return self;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n} as any as new () => ColorizeType;\n\n// eslint-disable-next-line guard-for-in,no-loops/no-loops,no-restricted-syntax\nfor (const name in styleMethods) {\n styles[name as keyof typeof styleMethods] = {\n get() {\n return (...arguments_: (number | string)[]) =>\n // @ts-expect-error: TODO: fix typing of `arguments_`\n\n createStyle(this, styleMethods[name as keyof typeof styleMethods](...arguments_));\n },\n };\n}\n\nstyles[\"ansi256\"] = styles[\"fg\"] as object;\nstyles[\"bgAnsi256\"] = styles[\"bg\"] as object;\n\n// eslint-disable-next-line import/no-default-export\nexport default Colorize;\n","/**\n * Modified copy of https://github.com/chalk/chalk-template/blob/main/index.js\n *\n * MIT License\n *\n * Copyright (c) Josh Junon\n * Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)\n */\n\n// prettier-ignore\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const makeColorizeTemplate = (template: (text: string) => string): ((firstString: TemplateStringsArray, ...arguments_: any[]) => string) =>\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (firstString: TemplateStringsArray, ...arguments_: any[]): string => {\n if (!Array.isArray(firstString) || !Array.isArray(firstString.raw)) {\n // If chalkTemplate() was called by itself or with a string\n throw new TypeError(\"A tagged template literal must be provided\");\n }\n\n const parts = [firstString.raw[0]];\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (let index = 1; index < firstString.raw.length; index++) {\n // eslint-disable-next-line security/detect-object-injection\n parts.push(String(arguments_[index - 1]).replaceAll(/[{}\\\\]/g, \"\\\\$&\"), String(firstString.raw[index]));\n }\n\n return template(parts.join(\"\"));\n };\n","/**\n * Modified copy of https://github.com/chalk/chalk-template/blob/main/index.js\n *\n * MIT License\n *\n * Copyright (c) Josh Junon\n * Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)\n */\n\nconst ESCAPES = new Map([\n [\"\\\\\", \"\\\\\"],\n [\"0\", \"\\0\"],\n [\"a\", \"\\u0007\"],\n [\"b\", \"\\b\"],\n [\"e\", \"\\u001B\"],\n [\"f\", \"\\f\"],\n [\"n\", \"\\n\"],\n [\"r\", \"\\r\"],\n [\"t\", \"\\t\"],\n [\"v\", \"\\v\"],\n]);\n\nexport const unescape = (c: string): string => {\n const u = c.startsWith(\"u\");\n const bracket = c[1] === \"{\";\n\n if ((u && !bracket && c.length === 5) || (c.startsWith(\"x\") && c.length === 3)) {\n return String.fromCodePoint(Number.parseInt(c.slice(1), 16));\n }\n\n if (u && bracket) {\n return String.fromCodePoint(Number.parseInt(c.slice(2, -1), 16));\n }\n\n return ESCAPES.get(c) ?? c;\n};\n","/**\n * Modified copy of https://github.com/chalk/chalk-template/blob/main/index.js\n *\n * MIT License\n *\n * Copyright (c) Josh Junon\n * Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com)\n */\n\nimport type { ColorizeType, ColorValueHex } from \"../types\";\nimport { hexToRgb } from \"../util/hex-to-rgb\";\nimport { unescape } from \"../util/unescape\";\n\nconst TEMPLATE_REGEX =\n // eslint-disable-next-line security/detect-unsafe-regex,regexp/no-lazy-ends,regexp/no-dupe-disjunctions\n /\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.)|\\{(~)?(#?[\\w:]+(?:\\([^)]*\\))?(?:\\.#?[\\w:]+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\n// eslint-disable-next-line security/detect-unsafe-regex,regexp/optimal-lookaround-quantifier\nconst STYLE_REGEX = /(?:^|\\.)(?:(\\w+)(?:\\(([^)]*)\\))?|#(?=[:a-f\\d]{2,})([a-f\\d]{6})?(?::([a-f\\d]{6}))?)/gi;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst parseArguments = (name: string, value: string): (number | string)[] => {\n const results: (number | string)[] = [];\n const chunks = value.trim().split(/\\s*,\\s*/);\n\n let matches;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const chunk of chunks) {\n const number = Number(chunk);\n\n if (!Number.isNaN(number)) {\n results.push(number);\n // eslint-disable-next-line no-cond-assign\n } else if ((matches = STRING_REGEX.exec(chunk))) {\n // eslint-disable-next-line unicorn/prefer-string-replace-all,@typescript-eslint/no-unsafe-return\n results.push((matches[2] as string).replace(ESCAPE_REGEX, (_, escape, character) => (escape ? unescape(escape as string) : character)));\n } else {\n throw new Error(`Invalid template style argument: ${chunk} (in style '${name}')`);\n }\n }\n\n return results;\n};\n\nconst parseStyle: (style: string) => (number | string | undefined)[][] = (style: string) => {\n STYLE_REGEX.lastIndex = 0;\n\n const results: (number | string | undefined)[][] = [];\n let matches;\n\n // eslint-disable-next-line no-loops/no-loops,no-cond-assign\n while ((matches = STYLE_REGEX.exec(style)) !== null) {\n const name = matches[1];\n\n if (matches[2]) {\n results.push([name, ...parseArguments(name as string, matches[2])]);\n } else if (matches[3] || matches[4]) {\n if (matches[3]) {\n results.push([\"rgb\", ...hexToRgb(matches[3] as ColorValueHex)]);\n }\n\n if (matches[4]) {\n results.push([\"bgRgb\", ...hexToRgb(matches[4] as ColorValueHex)]);\n }\n } else {\n results.push([name]);\n }\n }\n\n return results;\n};\n\nconst buildStyle = (\n colorize: ColorizeType,\n styles: {\n inverse: string | undefined;\n styles: (number | string | undefined)[][];\n }[],\n) => {\n const enabled: Record<string, (number | string | undefined)[] | null> = {};\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const layer of styles) {\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const style of layer.styles) {\n enabled[style[0] as string] = layer.inverse ? null : style.slice(1);\n }\n }\n\n let current: ColorizeType = colorize;\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const [styleName, enabledStyles] of Object.entries(enabled)) {\n if (!Array.isArray(enabledStyles)) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (!(styleName in current)) {\n throw new Error(`Unknown style: ${styleName}`);\n }\n\n // @ts-expect-error - @TODO fix types\n\n current = enabledStyles.length > 0 ? current[styleName as keyof ColorizeType](...enabledStyles) : current[styleName as keyof ColorizeType];\n }\n\n return current;\n};\n\nexport const makeTemplate =\n (colorize: ColorizeType): ((string: string) => string) =>\n (string: string) => {\n const styles: {\n inverse: string | undefined;\n styles: (number | string | undefined)[][];\n }[] = [];\n const chunks = [];\n\n let chunk: string[] = [];\n\n string.replaceAll(\n TEMPLATE_REGEX,\n // @ts-expect-error - TS doesn't understand that the regex args are defined\n (\n _: string,\n escapeCharacter: string | undefined,\n inverse: string | undefined,\n style: string | undefined,\n close: string | undefined,\n character: string | undefined,\n ) => {\n if (escapeCharacter) {\n chunk.push(unescape(escapeCharacter) as string);\n } else if (style) {\n const joinedChunk = chunk.join(\"\");\n\n chunk = [];\n chunks.push(styles.length === 0 ? joinedChunk : buildStyle(colorize, styles)(joinedChunk));\n\n styles.push({ inverse, styles: parseStyle(style) });\n } else if (close) {\n if (styles.length === 0) {\n throw new Error(\"Found extraneous } in template literal\");\n }\n\n chunks.push(buildStyle(colorize, styles)(chunk.join(\"\")));\n chunk = [];\n\n styles.pop();\n } else {\n chunk.push(character as string);\n }\n },\n );\n\n chunks.push(chunk.join(\"\"));\n\n if (styles.length > 0) {\n throw new Error(`template literal is missing ${styles.length} closing bracket${styles.length === 1 ? \"\" : \"s\"} (\\`}\\`)`);\n }\n\n return chunks.join(\"\");\n };\n","import ColorizeImpl from \"./colorize.server\";\nimport { makeColorizeTemplate } from \"./template/make-colorize-template\";\nimport { makeTemplate } from \"./template/make-template\";\nimport type { ColorizeType } from \"./types\";\n\nconst colorize: ColorizeType = new ColorizeImpl() as ColorizeType;\n\n// eslint-disable-next-line import/no-unused-modules,@typescript-eslint/no-explicit-any\nexport const makeTaggedTemplate = (instance: ColorizeType): ((firstString: TemplateStringsArray, ...arguments_: any[]) => string) =>\n makeColorizeTemplate(makeTemplate(instance));\n\n// eslint-disable-next-line import/no-unused-modules\nexport const template = makeTemplate(colorize);\n\n// eslint-disable-next-line import/no-default-export\nexport default makeColorizeTemplate(template);\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/colorize",
3
- "version": "1.2.1",
3
+ "version": "1.3.0",
4
4
  "description": "Terminal and Console string styling done right.",
5
5
  "keywords": [
6
6
  "256",
@@ -24,6 +24,8 @@
24
24
  "firefox",
25
25
  "FORCE_COLOR",
26
26
  "formatting",
27
+ "gradient",
28
+ "gradients",
27
29
  "green",
28
30
  "kleur",
29
31
  "log",
@@ -38,6 +40,13 @@
38
40
  "strip-color",
39
41
  "style",
40
42
  "styles",
43
+ "tagged template literal",
44
+ "tagged template string",
45
+ "tagged template",
46
+ "tagged-template",
47
+ "template",
48
+ "template-string",
49
+ "templates",
41
50
  "terminal",
42
51
  "text",
43
52
  "truecolor",
@@ -82,12 +91,31 @@
82
91
  }
83
92
  },
84
93
  "./browser": {
85
- "browser": "./dist/index.browser.js",
86
94
  "import": {
87
95
  "types": "./dist/index.browser.d.ts",
88
96
  "default": "./dist/index.browser.js"
89
97
  }
90
98
  },
99
+ "./template": {
100
+ "require": {
101
+ "types": "./dist/template.d.cts",
102
+ "default": "./dist/template.cjs"
103
+ },
104
+ "import": {
105
+ "types": "./dist/template.d.ts",
106
+ "default": "./dist/template.js"
107
+ }
108
+ },
109
+ "./gradient": {
110
+ "require": {
111
+ "types": "./dist/gradient.d.cts",
112
+ "default": "./dist/gradient.cjs"
113
+ },
114
+ "import": {
115
+ "types": "./dist/gradient.d.ts",
116
+ "default": "./dist/gradient.js"
117
+ }
118
+ },
91
119
  "./package.json": "./package.json"
92
120
  },
93
121
  "main": "dist/index.server.cjs",
@@ -111,54 +139,43 @@
111
139
  "lint:prettier:fix": "prettier --config=.prettierrc.cjs --write .",
112
140
  "lint:types": "tsc --noEmit",
113
141
  "test": "vitest run",
114
- "test:bench": "node __bench__",
115
142
  "test:coverage": "vitest run --coverage",
116
143
  "test:ui": "vitest --ui --coverage.enabled=true",
117
144
  "test:watch": "vitest"
118
145
  },
119
146
  "dependencies": {
120
- "@visulima/is-ansi-color-supported": "1.2.0"
147
+ "@visulima/is-ansi-color-supported": "2.0.1"
121
148
  },
122
149
  "devDependencies": {
123
150
  "@anolilab/eslint-config": "^15.0.3",
124
151
  "@anolilab/prettier-config": "^5.0.14",
125
152
  "@anolilab/semantic-release-preset": "^8.0.3",
126
- "@babel/core": "^7.23.9",
127
- "@rushstack/eslint-plugin-security": "^0.8.0",
128
- "@secretlint/secretlint-rule-preset-recommend": "^8.1.1",
129
- "@types/micromatch": "^4.0.6",
153
+ "@babel/core": "^7.24.0",
154
+ "@rushstack/eslint-plugin-security": "^0.8.1",
155
+ "@secretlint/secretlint-rule-preset-recommend": "^8.1.2",
156
+ "@total-typescript/ts-reset": "^0.5.1",
130
157
  "@types/node": "18.18.14",
131
- "@vitest/coverage-v8": "^1.2.2",
132
- "@vitest/ui": "^1.2.2",
133
- "ansi-colors": "4.1.3",
158
+ "@vitest/coverage-v8": "^1.3.1",
159
+ "@vitest/ui": "^1.3.1",
134
160
  "ansi-regex": "^6.0.1",
135
161
  "ansi-styles": "^6.2.1",
136
- "ansis": "2.2.0",
137
- "benchmark": "2.1.4",
138
- "chalk": "5.3.0",
139
- "cli-color": "2.0.3",
140
- "colorette": "2.0.20",
141
- "colors": "1.4.0",
142
- "colors-cli": "1.0.33",
143
162
  "cross-env": "^7.0.3",
144
- "eslint": "^8.56.0",
163
+ "eslint": "^8.57.0",
145
164
  "eslint-plugin-deprecation": "^2.0.0",
146
165
  "eslint-plugin-etc": "^2.0.3",
147
166
  "eslint-plugin-import": "npm:eslint-plugin-i@^2.29.1",
148
167
  "eslint-plugin-mdx": "^3.1.5",
149
168
  "eslint-plugin-vitest": "^0.3.22",
150
169
  "eslint-plugin-vitest-globals": "^1.4.0",
151
- "kleur": "4.1.5",
152
- "picocolors": "1.0.0",
153
170
  "prettier": "^3.2.5",
154
171
  "rimraf": "^5.0.5",
155
- "secretlint": "8.1.1",
172
+ "secretlint": "8.1.2",
156
173
  "semantic-release": "^23.0.2",
157
- "sort-package-json": "^2.7.0",
174
+ "sort-package-json": "^2.8.0",
158
175
  "tsup": "^8.0.2",
159
- "type-fest": "^4.10.2",
176
+ "type-fest": "^4.10.3",
160
177
  "typescript": "^5.3.3",
161
- "vitest": "^1.2.2"
178
+ "vitest": "^1.3.1"
162
179
  },
163
180
  "engines": {
164
181
  "node": ">=18.* <=21.*"
@@ -191,6 +208,22 @@
191
208
  {
192
209
  "source": "src/index.server.cts",
193
210
  "format": "cjs"
211
+ },
212
+ {
213
+ "source": "src/template.ts",
214
+ "format": "esm"
215
+ },
216
+ {
217
+ "source": "src/template.ts",
218
+ "format": "cjs"
219
+ },
220
+ {
221
+ "source": "src/gradient.ts",
222
+ "format": "esm"
223
+ },
224
+ {
225
+ "source": "src/gradient.ts",
226
+ "format": "cjs"
194
227
  }
195
228
  ]
196
229
  }