diff --git a/deno_lib/styles.ts b/deno_lib/styles.ts index 3d6042f..4c51cf4 100644 --- a/deno_lib/styles.ts +++ b/deno_lib/styles.ts @@ -166,11 +166,11 @@ export const addStyleFunction = ( export const addStyleAlias = ( alias: string, - aliased: CrayonStyle & string + aliased: CrayonStyle | string ): boolean => { - const style = styles[aliased] + const style = styles[aliased as CrayonStyle] - if (style) { + if (!style) { crayonError(`Could not find style "${aliased}"`) return false } @@ -181,13 +181,13 @@ export const addStyleAlias = ( } export const addStyleAliases = (aliases: { - [name: string]: CrayonStyle & string + [name: string]: CrayonStyle | string }): boolean => { let status = true for (let alias in aliases) { const aliased = aliases[alias] - const style = styles[aliased] + const style = styles[aliased as CrayonStyle] if (!style) { crayonError(`Could not find style "${aliased}"`) diff --git a/lib/styles.d.ts b/lib/styles.d.ts index 3076bbb..e43a3ad 100644 --- a/lib/styles.d.ts +++ b/lib/styles.d.ts @@ -12,9 +12,9 @@ export declare const functions: { }; export declare const styles: StyleObject; export declare const addStyleFunction: (name: string, func: (...any: any[]) => string) => boolean; -export declare const addStyleAlias: (alias: string, aliased: CrayonStyle & string) => boolean; +export declare const addStyleAlias: (alias: string, aliased: CrayonStyle | string) => boolean; export declare const addStyleAliases: (aliases: { - [name: string]: "black" | "red" | "green" | "yellow" | "blue" | "magenta" | "cyan" | "white" | "lightBlack" | "lightRed" | "lightGreen" | "lightYellow" | "lightBlue" | "lightMagenta" | "lightCyan" | "lightWhite" | "bgBlack" | "bgRed" | "bgGreen" | "bgYellow" | "bgBlue" | "bgMagenta" | "bgCyan" | "bgWhite" | "bgLightBlack" | "bgLightRed" | "bgLightGreen" | "bgLightYellow" | "bgLightBlue" | "bgLightMagenta" | "bgLightCyan" | "bgLightWhite" | "reset" | "bold" | "dim" | "italic" | "underline" | "blink" | "fastBlink" | "invert" | "hidden" | "strikethrough" | "boldOff" | "doubleUnderline" | "boldOrDimOff" | "italicOff" | "underlineOff" | "blinkOff" | "invertOff" | "hiddenOff" | "strikethroughOff"; + [name: string]: string; }) => boolean; export declare const addStyle: (name: string, value: string) => boolean; export declare const addStyles: (styleObject: { diff --git a/lib/styles.js b/lib/styles.js index 04185d9..5ff86d9 100644 --- a/lib/styles.js +++ b/lib/styles.js @@ -1 +1 @@ -import{ansi4ToAnsi3,ansi8ToAnsi4,hslToRgb,rgbToAnsi8}from"./conversions.js";import{reloadFunctions,reloadStyles}from"./index.js";import{clamp,crayonError}from"./util.js";const colorSupport=new Proxy({threeBitColor:!0,fourBitColor:!0,highColor:!0,trueColor:!0},{});const fourBitColors={black:"",lightBlack:"",red:"",lightRed:"",green:"",lightGreen:"",yellow:"",lightYellow:"",blue:"",lightBlue:"",magenta:"",lightMagenta:"",cyan:"",lightCyan:"",white:"",lightWhite:""};for(const a in fourBitColors){const b=fourBitColors[a];const c=/[0-9][0-9]/.exec(b);if(c){const d=a[0].toUpperCase()+a.slice(1);const e=c[0];Reflect.set(fourBitColors,`bg${d}`,b.replace(e,String(parseInt(e)+10)))}}const attributes={reset:"",bold:"",dim:"",italic:"",underline:"",blink:"",fastBlink:"",invert:"",hidden:"",strikethrough:"",boldOff:"",doubleUnderline:"",boldOrDimOff:"",italicOff:"",underlineOff:"",blinkOff:"",invertOff:"",hiddenOff:"",strikethroughOff:""};const functions={keyword(t){const o=styles[t];return o||(crayonError("Invalid keyword given in keyword function"),"")},ansi3(t,o){return("number"!=typeof t||7parseInt(t,16));return o?functions.ansi8(rgbToAnsi8(...e),r):functions.rgb(...e,r)}return crayonError('Incorrect usage of hex function, syntax: "#[0-F]{6}"'),""},bgHex(t,o){return functions.hex(t,o,!0)}};const styles={};Object.assign(styles,attributes,fourBitColors);const addStyleFunction=(t,o)=>{const r=Reflect.set(functions,t,o);return r&&reloadFunctions(),r};const addStyleAlias=(t,o)=>{const r=styles[o];if(r)return crayonError(`Could not find style "${o}"`),!1;const n=Reflect.set(styles,t,r);return n&&reloadStyles(),n};const addStyleAliases=o=>{let r=!0;for(let t in o){const n=o[t];const e=styles[n];e||(crayonError(`Could not find style "${n}"`),r=!1),r=r&&Reflect.set(styles,t,e)}return r&&reloadStyles(),r};const addStyle=(t,o)=>{const r=Reflect.set(styles,t,o);return r&&reloadStyles(),r};const addStyles=t=>{try{return Object.assign(styles,t),reloadStyles(),!0}catch(t){return crayonError(`Failed adding styles:\n${t}`),!1}};export{colorSupport,fourBitColors,attributes,functions,styles,addStyleFunction,addStyleAlias,addStyleAliases,addStyle,addStyles}; \ No newline at end of file +import{ansi4ToAnsi3,ansi8ToAnsi4,hslToRgb,rgbToAnsi8}from"./conversions.js";import{reloadFunctions,reloadStyles}from"./index.js";import{clamp,crayonError}from"./util.js";const colorSupport=new Proxy({threeBitColor:!0,fourBitColor:!0,highColor:!0,trueColor:!0},{});const fourBitColors={black:"",lightBlack:"",red:"",lightRed:"",green:"",lightGreen:"",yellow:"",lightYellow:"",blue:"",lightBlue:"",magenta:"",lightMagenta:"",cyan:"",lightCyan:"",white:"",lightWhite:""};for(const a in fourBitColors){const b=fourBitColors[a];const c=/[0-9][0-9]/.exec(b);if(c){const d=a[0].toUpperCase()+a.slice(1);const e=c[0];Reflect.set(fourBitColors,`bg${d}`,b.replace(e,String(parseInt(e)+10)))}}const attributes={reset:"",bold:"",dim:"",italic:"",underline:"",blink:"",fastBlink:"",invert:"",hidden:"",strikethrough:"",boldOff:"",doubleUnderline:"",boldOrDimOff:"",italicOff:"",underlineOff:"",blinkOff:"",invertOff:"",hiddenOff:"",strikethroughOff:""};const functions={keyword(t){const o=styles[t];return o||(crayonError("Invalid keyword given in keyword function"),"")},ansi3(t,o){return("number"!=typeof t||7parseInt(t,16));return o?functions.ansi8(rgbToAnsi8(...e),r):functions.rgb(...e,r)}return crayonError('Incorrect usage of hex function, syntax: "#[0-F]{6}"'),""},bgHex(t,o){return functions.hex(t,o,!0)}};const styles={};Object.assign(styles,attributes,fourBitColors);const addStyleFunction=(t,o)=>{const r=Reflect.set(functions,t,o);return r&&reloadFunctions(),r};const addStyleAlias=(t,o)=>{const r=styles[o];if(!r)return crayonError(`Could not find style "${o}"`),!1;const n=Reflect.set(styles,t,r);return n&&reloadStyles(),n};const addStyleAliases=o=>{let r=!0;for(let t in o){const n=o[t];const e=styles[n];e||(crayonError(`Could not find style "${n}"`),r=!1),r=r&&Reflect.set(styles,t,e)}return r&&reloadStyles(),r};const addStyle=(t,o)=>{const r=Reflect.set(styles,t,o);return r&&reloadStyles(),r};const addStyles=t=>{try{return Object.assign(styles,t),reloadStyles(),!0}catch(t){return crayonError(`Failed adding styles:\n${t}`),!1}};export{colorSupport,fourBitColors,attributes,functions,styles,addStyleFunction,addStyleAlias,addStyleAliases,addStyle,addStyles}; \ No newline at end of file diff --git a/src/styles.ts b/src/styles.ts index e5627ce..c863038 100644 --- a/src/styles.ts +++ b/src/styles.ts @@ -166,11 +166,11 @@ export const addStyleFunction = ( export const addStyleAlias = ( alias: string, - aliased: CrayonStyle & string + aliased: CrayonStyle | string ): boolean => { - const style = styles[aliased] + const style = styles[aliased as CrayonStyle] - if (style) { + if (!style) { crayonError(`Could not find style "${aliased}"`) return false } @@ -181,13 +181,13 @@ export const addStyleAlias = ( } export const addStyleAliases = (aliases: { - [name: string]: CrayonStyle & string + [name: string]: CrayonStyle | string }): boolean => { let status = true for (let alias in aliases) { const aliased = aliases[alias] - const style = styles[aliased] + const style = styles[aliased as CrayonStyle] if (!style) { crayonError(`Could not find style "${aliased}"`)