├── .eslintrc ├── .github └── FUNDING.yml ├── .gitignore ├── .nvmrc ├── LICENSE ├── Readme.md ├── index.js ├── media ├── logo.png ├── logo.svg └── screenshot.png └── package.json /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | // Fork: https://gist.github.com/niftylettuce/c61383e0bd92129faf11 3 | // Source: http://eslint.org/docs/rules/ 4 | 5 | "ecmaFeatures": { 6 | "arrowFunctions": false, // enable arrow functions 7 | "binaryLiterals": false, // enable binary literals 8 | "blockBindings": false, // enable let and const (aka block bindings) 9 | "classes": false, // enable classes 10 | "defaultParams": false, // enable default function parameters 11 | "destructuring": false, // enable destructuring 12 | "forOf": false, // enable for-of loops 13 | "generators": false, // enable generators 14 | "modules": false, // enable modules and global strict mode 15 | "objectLiteralComputedProperties": false, // enable computed object literal property names 16 | "objectLiteralDuplicateProperties": false, // enable duplicate object literal properties in strict mode 17 | "objectLiteralShorthandMethods": false, // enable object literal shorthand methods 18 | "objectLiteralShorthandProperties": false, // enable object literal shorthand properties 19 | "octalLiterals": false, // enable octal literals 20 | "regexUFlag": false, // enable the regular expression u flag 21 | "regexYFlag": false, // enable the regular expression y flag 22 | "restParams": false, // enable the rest parameters 23 | "spread": false, // enable the spread operator 24 | "superInFunctions": false, // enable super references inside of functions 25 | "templateStrings": false, // enable template strings 26 | "unicodeCodePointEscapes": false, // enable code point escapes 27 | "globalReturn": false, // allow return statements in the global scope 28 | "jsx": false // enable JSX 29 | }, 30 | 31 | "env": { 32 | "browser": false, // browser global variables 33 | "node": true, // Node.js global variables and Node.js-specific rules 34 | "amd": false, // defines require() and define() as global variables as per the amd spec 35 | "mocha": false, // adds all of the Mocha testing global variables 36 | "jasmine": false, // adds all of the Jasmine testing global variables for version 1.3 and 2.0 37 | "phantomjs": false, // phantomjs global variables 38 | "jquery": false, // jquery global variables 39 | "prototypejs": false, // prototypejs global variables 40 | "shelljs": false, // shelljs global variables 41 | }, 42 | 43 | "globals": { 44 | // e.g. "angular": true 45 | }, 46 | 47 | "plugins": [ 48 | // e.g. "react" (must run `npm install eslint-plugin-react` first) 49 | ], 50 | 51 | "rules": { 52 | ////////// Possible Errors ////////// 53 | 54 | "comma-dangle": 0, // disallow trailing commas in object literals 55 | "no-cond-assign": 0, // disallow assignment in conditional expressions 56 | "no-console": 0, // disallow use of console (off by default in the node environment) 57 | "no-constant-condition": 0, // disallow use of constant expressions in conditions 58 | "no-control-regex": 0, // disallow control characters in regular expressions 59 | "no-debugger": 0, // disallow use of debugger 60 | "no-dupe-args": 0, // disallow duplicate arguments in functions 61 | "no-dupe-keys": 0, // disallow duplicate keys when creating object literals 62 | "no-duplicate-case": 0, // disallow a duplicate case label 63 | "no-empty-character-class": 0, // disallow the use of empty character classes in regular expressions 64 | "no-empty": 0, // disallow empty statements 65 | "no-ex-assign": 0, // disallow assigning to the exception in a catch block 66 | "no-extra-boolean-cast": 0, // disallow double-negation boolean casts in a boolean context 67 | "no-extra-parens": 0, // disallow unnecessary parentheses (off by default) 68 | "no-extra-semi": 0, // disallow unnecessary semicolons 69 | "no-func-assign": 0, // disallow overwriting functions written as function declarations 70 | "no-inner-declarations": 0, // disallow function or variable declarations in nested blocks 71 | "no-invalid-regexp": 0, // disallow invalid regular expression strings in the RegExp constructor 72 | "no-irregular-whitespace": 0, // disallow irregular whitespace outside of strings and comments 73 | "no-negated-in-lhs": 0, // disallow negation of the left operand of an in expression 74 | "no-obj-calls": 0, // disallow the use of object properties of the global object (Math and JSON) as functions 75 | "no-regex-spaces": 0, // disallow multiple spaces in a regular expression literal 76 | "no-reserved-keys": 0, // disallow reserved words being used as object literal keys (off by default) 77 | "no-sparse-arrays": 0, // disallow sparse arrays 78 | "no-unreachable": 0, // disallow unreachable statements after a return, throw, continue, or break statement 79 | "use-isnan": 0, // disallow comparisons with the value NaN 80 | "valid-jsdoc": 0, // Ensure JSDoc comments are valid (off by default) 81 | "valid-typeof": 0, // Ensure that the results of typeof are compared against a valid string 82 | "no-unexpected-multiline": 0, // Avoid code that looks like two expressions but is actually one (off by default) 83 | 84 | 85 | ////////// Best Practices ////////// 86 | 87 | "accessor-pairs": 0, // enforces getter/setter pairs in objects (off by default) 88 | "block-scoped-var": 0, // treat var statements as if they were block scoped (off by default) 89 | "complexity": 0, // specify the maximum cyclomatic complexity allowed in a program (off by default) 90 | "consistent-return": 0, // require return statements to either always or never specify values 91 | "curly": 0, // specify curly brace conventions for all control statements 92 | "default-case": 0, // require default case in switch statements (off by default) 93 | "dot-notation": 0, // encourages use of dot notation whenever possible 94 | "dot-location": 0, // enforces consistent newlines before or after dots (off by default) 95 | "eqeqeq": 2, // require the use of === and !== 96 | "guard-for-in": 0, // make sure for-in loops have an if statement (off by default) 97 | "no-alert": 0, // disallow the use of alert, confirm, and prompt 98 | "no-caller": 0, // disallow use of arguments.caller or arguments.callee 99 | "no-div-regex": 0, // disallow division operators explicitly at beginning of regular expression (off by default) 100 | "no-else-return": 0, // disallow else after a return in an if (off by default) 101 | "no-empty-label": 0, // disallow use of labels for anything other then loops and switches 102 | "no-eq-null": 0, // disallow comparisons to null without a type-checking operator (off by default) 103 | "no-eval": 0, // disallow use of eval() 104 | "no-extend-native": 0, // disallow adding to native types 105 | "no-extra-bind": 0, // disallow unnecessary function binding 106 | "no-fallthrough": 0, // disallow fallthrough of case statements 107 | "no-floating-decimal": 0, // disallow the use of leading or trailing decimal points in numeric literals (off by default) 108 | "no-implied-eval": 0, // disallow use of eval()-like methods 109 | "no-iterator": 0, // disallow usage of __iterator__ property 110 | "no-labels": 0, // disallow use of labeled statements 111 | "no-lone-blocks": 0, // disallow unnecessary nested blocks 112 | "no-loop-func": 0, // disallow creation of functions within loops 113 | "no-multi-spaces": 0, // disallow use of multiple spaces 114 | "no-multi-str": 0, // disallow use of multiline strings 115 | "no-native-reassign": 0, // disallow reassignments of native objects 116 | "no-new-func": 0, // disallow use of new operator for Function object 117 | "no-new-wrappers": 0, // disallows creating new instances of String, Number, and Boolean 118 | "no-new": 0, // disallow use of new operator when not part of the assignment or comparison 119 | "no-octal-escape": 0, // disallow use of octal escape sequences in string literals, such as var foo = "Copyright \251"; 120 | "no-octal": 0, // disallow use of octal literals 121 | "no-param-reassign": 0, // disallow reassignment of function parameters (off by default) 122 | "no-process-env": 0, // disallow use of process.env (off by default) 123 | "no-proto": 0, // disallow usage of __proto__ property 124 | "no-redeclare": 0, // disallow declaring the same variable more then once 125 | "no-return-assign": 0, // disallow use of assignment in return statement 126 | "no-script-url": 0, // disallow use of javascript: urls 127 | "no-self-compare": 0, // disallow comparisons where both sides are exactly the same (off by default) 128 | "no-sequences": 0, // disallow use of comma operator 129 | "no-throw-literal": 0, // restrict what can be thrown as an exception (off by default) 130 | "no-unused-expressions": 2, // disallow usage of expressions in statement position 131 | "no-void": 0, // disallow use of void operator (off by default) 132 | "no-warning-comments": 0, // disallow usage of configurable warning terms in comments, e.g. TODO or FIXME (off by default) 133 | "no-with": 0, // disallow use of the with statement 134 | "radix": 0, // require use of the second argument for parseInt() (off by default) 135 | "vars-on-top": 0, // requires to declare all vars on top of their containing scope (off by default) 136 | "wrap-iife": 0, // require immediate function invocation to be wrapped in parentheses (off by default) 137 | "yoda": 0, // require or disallow Yoda conditions 138 | 139 | 140 | ////////// Strict Mode ////////// 141 | 142 | "strict": 0, // controls location of Use Strict Directives 143 | 144 | 145 | ////////// Variables ////////// 146 | 147 | "no-catch-shadow": 0, // disallow the catch clause parameter name being the same as a variable in the outer scope (off by default in the node environment) 148 | "no-delete-var": 0, // disallow deletion of variables 149 | "no-label-var": 0, // disallow labels that share a name with a variable 150 | "no-shadow": 0, // disallow declaration of variables already declared in the outer scope 151 | "no-shadow-restricted-names": 0, // disallow shadowing of names such as arguments 152 | "no-undef": 2, // disallow use of undeclared variables unless mentioned in a /*global */ block 153 | "no-undef-init": 0, // disallow use of undefined when initializing variables 154 | "no-undefined": 0, // disallow use of undefined variable (off by default) 155 | "no-unused-vars": 0, // disallow declaration of variables that are not used in the code 156 | "no-use-before-define": 0, // disallow use of variables before they are defined 157 | 158 | 159 | ////////// Node.js ////////// 160 | 161 | // enforces error handling in callbacks (off by default) (on by default in the node environment) 162 | "handle-callback-err": [2, "^(err|error|errorMsg)$" ], 163 | 164 | "no-mixed-requires": 0, // disallow mixing regular variable and require declarations (off by default) (on by default in the node environment) 165 | "no-new-require": 0, // disallow use of new operator with the require function (off by default) (on by default in the node environment) 166 | "no-path-concat": 0, // disallow string concatenation with __dirname and __filename (off by default) (on by default in the node environment) 167 | "no-process-exit": 0, // disallow process.exit() (on by default in the node environment) 168 | "no-restricted-modules": 0, // restrict usage of specified node modules (off by default) 169 | "no-sync": 0, // disallow use of synchronous methods (off by default) 170 | 171 | 172 | ////////// Stylistic Issues ////////// 173 | 174 | "array-bracket-spacing": 0, // enforce spacing inside array brackets (off by default) 175 | "brace-style": 0, // enforce one true brace style (off by default) 176 | "camelcase": 0, // require camel case names 177 | "comma-spacing": 0, // enforce spacing before and after comma 178 | "comma-style": 0, // enforce one true comma style (off by default) 179 | "computed-property-spacing": 0, // require or disallow padding inside computed properties (off by default) 180 | "consistent-this": 0, // enforces consistent naming when capturing the current execution context (off by default) 181 | "eol-last": 0, // enforce newline at the end of file, with no multiple empty lines 182 | "func-names": 0, // require function expressions to have a name (off by default) 183 | "func-style": 0, // enforces use of function declarations or expressions (off by default) 184 | "indent": 0, // this option sets a specific tab width for your code (off by default) 185 | "key-spacing": 0, // enforces spacing between keys and values in object literal properties 186 | "lines-around-comment": 0, // enforces empty lines around comments (off by default) 187 | "linebreak-style": 0, // disallow mixed 'LF' and 'CRLF' as linebreaks (off by default) 188 | "max-nested-callbacks": 0, // specify the maximum depth callbacks can be nested (off by default) 189 | "new-cap": 0, // require a capital letter for constructors 190 | "new-parens": 0, // disallow the omission of parentheses when invoking a constructor with no arguments 191 | "new-parens": 0, // disallow the omission of parentheses when invoking a constructor with no arguments 192 | "newline-after-var": 0, // allow/disallow an empty newline after var statement (off by default) 193 | "no-array-constructor": 0, // disallow use of the Array constructor 194 | "no-continue": 0, // disallow use of the continue statement (off by default) 195 | "no-inline-comments": 0, // disallow comments inline after code (off by default) 196 | "no-lonely-if": 0, // disallow if as the only statement in an else block (off by default) 197 | "no-mixed-spaces-and-tabs": 0, // disallow mixed spaces and tabs for indentation 198 | "no-multiple-empty-lines": 0, // disallow multiple empty lines (off by default) 199 | "no-nested-ternary": 0, // disallow nested ternary expressions (off by default) 200 | "no-new-object": 0, // disallow use of the Object constructor 201 | "no-spaced-func": 0, // disallow space between function identifier and application 202 | "no-ternary": 0, // disallow the use of ternary operators (off by default) 203 | "no-trailing-spaces": 0, // disallow trailing whitespace at the end of lines 204 | "no-underscore-dangle": 0, // disallow dangling underscores in identifiers 205 | "one-var": 0, // allow just one var statement per function (off by default) 206 | "operator-assignment": 0, // require assignment operator shorthand where possible or prohibit it entirely (off by default) 207 | "operator-linebreak": 0, // enforce operators to be placed before or after line breaks (off by default) 208 | "padded-blocks": 0, // enforce padding within blocks (off by default) 209 | "quote-props": 0, // require quotes around object literal property names (off by default) 210 | "quotes": 0, // specify whether double or single quotes should be used 211 | "semi-spacing": 0, // enforce spacing before and after semicolons 212 | "semi": 0, // require or disallow use of semicolons instead of ASI 213 | "sort-vars": 0, // sort variables within the same declaration block (off by default) 214 | "space-after-keywords": 0, // require a space after certain keywords (off by default) 215 | "space-before-blocks": 0, // require or disallow space before blocks (off by default) 216 | "space-before-function-paren": 0, // require or disallow space before function opening parenthesis (off by default) 217 | "space-in-parens": 0, // require or disallow spaces inside parentheses (off by default) 218 | "space-infix-ops": 0, // require spaces around operators 219 | "space-return-throw-case": 0, // require a space after return, throw, and case 220 | "space-unary-ops": 0, // require or disallow spaces before/after unary operators (words on by default, nonwords off by default) 221 | "spaced-comment": 0, // require or disallow a space immediately following the // or /* in a comment (off by default) 222 | "wrap-regex": 0, // require regex literals to be wrapped in parentheses (off by default) 223 | 224 | 225 | ////////// ECMAScript 6 ////////// 226 | 227 | "constructor-super": 0, // verify super() callings in constructors (off by default) 228 | "generator-star-spacing": 0, // enforce the spacing around the * in generator functions (off by default) 229 | "no-this-before-super": 0, // disallow to use this/super before super() calling in constructors (off by default) 230 | "no-var": 0, // require let or const instead of var (off by default) 231 | "object-shorthand": 0, // require method and property shorthand syntax for object literals (off by default) 232 | "prefer-const": 0, // suggest using of const declaration for variables that are never modified after declared (off by default) 233 | 234 | 235 | ////////// Legacy ////////// 236 | 237 | "max-depth": 0, // specify the maximum depth that blocks can be nested (off by default) 238 | "max-len": 0, // specify the maximum length of a line in your program (off by default) 239 | "max-params": 0, // limits the number of parameters that can be used in the function declaration. (off by default) 240 | "max-statements": 0, // specify the maximum number of statement allowed in a function (off by default) 241 | "no-bitwise": 0, // disallow use of bitwise operators (off by default) 242 | "no-plusplus": 0 // disallow use of unary operators, ++ and -- (off by default) 243 | } 244 | } 245 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: niftylettuce 4 | patreon: niftylettuce 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v4.1.2 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2015- Nick Baugh (http://niftylettuce.com/) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /Readme.md: -------------------------------------------------------------------------------- 1 | 2 | [![MIT License][license-image]][license-url] 3 | [![Unicorn Approved][unicorn-approved]][unicorn-url] 4 | 5 | > Draw a big chalkline in your terminal! 6 | 7 |

8 | 9 | chalkline screenshot 10 |

11 | 12 | 13 | ## Install 14 | 15 | ```bash 16 | npm install --save chalkline 17 | ``` 18 | 19 | 20 | ## Usage 21 | 22 | Chalkline extends the [chalk][chalk] package, so you can log any color line to the console. 23 | 24 | ```js 25 | var cl = require('chalkline'); 26 | 27 | cl.green(); 28 | cl.blue.bgMagenta(); 29 | cl.white(); 30 | cl.bgYellow.red(); 31 | ``` 32 | 33 | 34 | ## Colors and Background colors 35 | 36 | Please see [chalk's colors][chalks-colors] for a list of supported colors and background colors for your chalklines. 37 | 38 | 39 | ## License 40 | 41 | [MIT][license-url] 42 | 43 | 44 | [chalk]: https://github.com/chalk/chalk 45 | [chalks-colors]: https://github.com/chalk/chalk#colors 46 | [license-image]: http://img.shields.io/badge/license-MIT-blue.svg?style=flat 47 | [license-url]: LICENSE 48 | [unicorn-approved]: http://img.shields.io/badge/unicorn-approved-ff69b4.svg 49 | [unicorn-url]: https://www.youtube.com/watch?v=9auOCbH5Ns4 50 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | 2 | // TODO: expose more of `chalk` and condense this file more 3 | // directly copy/pasted and manipulated from `chalk`'s index.js file 4 | 5 | var escapeStringRegexp = require('escape-string-regexp'); 6 | var defineProps = Object.defineProperties; 7 | var isSimpleWindowsTerm = process.platform === 'win32' && !/^xterm/i.test(process.env.TERM); 8 | var ansiStyles = require('ansi-styles'); 9 | var util = require('util'); 10 | var chalk = require('chalk'); 11 | var block = "\u2588"; 12 | 13 | var columns = 80; 14 | 15 | if (process.stdout.isTTY && process.stdout.columns) 16 | columns = process.stdout.columns; 17 | 18 | var str = new Array(columns + 1).join(block); 19 | 20 | var styles = (function () { 21 | var ret = {}; 22 | 23 | Object.keys(ansiStyles).forEach(function (key) { 24 | ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); 25 | 26 | ret[key] = { 27 | get: function () { 28 | return build.call(this, this._styles.concat(key)); 29 | } 30 | }; 31 | }); 32 | 33 | return ret; 34 | })(); 35 | 36 | var proto = defineProps(function chalk() {}, styles); 37 | 38 | function Chalkline(options) { 39 | this.enabled = !options || options.enabled === undefined ? chalk.supportsColor : options.enabled; 40 | } 41 | 42 | function init() { 43 | var chalkline = {}; 44 | Object.keys(chalk.styles).forEach(function(name) { 45 | chalkline[name] = { 46 | get: function () { 47 | return build.call(this, [name]); 48 | } 49 | }; 50 | }); 51 | return chalkline; 52 | } 53 | 54 | function applyStyle() { 55 | // support varags, but simply cast to string in case there's only one arg 56 | var args = arguments; 57 | var argsLen = args.length; 58 | var str = argsLen !== 0 && String(arguments[0]); 59 | 60 | if (argsLen > 1) { 61 | // don't slice `arguments`, it prevents v8 optimizations 62 | for (var a = 1; a < argsLen; a++) { 63 | str += ' ' + args[a]; 64 | } 65 | } 66 | 67 | if (!this.enabled || !str) { 68 | return str; 69 | } 70 | 71 | var nestedStyles = this._styles; 72 | var i = nestedStyles.length; 73 | 74 | // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, 75 | // see https://github.com/chalk/chalk/issues/58 76 | // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. 77 | var originalDim = ansiStyles.dim.open; 78 | if (isSimpleWindowsTerm && (nestedStyles.indexOf('gray') !== -1 || nestedStyles.indexOf('grey') !== -1)) { 79 | ansiStyles.dim.open = ''; 80 | } 81 | 82 | while (i--) { 83 | var code = ansiStyles[nestedStyles[i]]; 84 | 85 | // Replace any instances already present with a re-opening code 86 | // otherwise only the part of the string until said closing code 87 | // will be colored, and the rest will simply be 'plain'. 88 | str = code.open + str.replace(code.closeRe, code.open) + code.close; 89 | } 90 | 91 | // Reset the original 'dim' if we changed it to work around the Windows dimmed gray issue. 92 | ansiStyles.dim.open = originalDim; 93 | return str; 94 | } 95 | 96 | 97 | function build(_styles) { 98 | // This is where the magic happens by using `.call(builder, str)` 99 | // instead of calling `applyStyle.apply(builder, arguments)` 100 | // like `chalk` does, we simply pass it the argument of str 101 | // maybe we can rewrite this a better way! PR's welcome 102 | var builder = function () { 103 | return console.log(applyStyle.call(builder, str)); 104 | }; 105 | builder._styles = _styles; 106 | builder.enabled = this.enabled; 107 | // __proto__ is used because we must return a function, but there is 108 | // no way to create a function with a different prototype. 109 | /* eslint-disable no-proto */ 110 | builder.__proto__ = proto; 111 | return builder; 112 | } 113 | 114 | 115 | defineProps(Chalkline.prototype, init()); 116 | module.exports = new Chalkline(); 117 | -------------------------------------------------------------------------------- /media/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladjs/chalkline/a9a7e293158e66b2a820f2424b601306a131aac8/media/logo.png -------------------------------------------------------------------------------- /media/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ladjs/chalkline/a9a7e293158e66b2a820f2424b601306a131aac8/media/screenshot.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "chalkline", 3 | "version": "0.0.5", 4 | "description": "chalkline draws a horizontal line in your console to help you easily debug and see what you're looking for", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [ 10 | "chalk", 11 | "line", 12 | "chalkline", 13 | "horizontal", 14 | "bar", 15 | "console", 16 | "logger", 17 | "logging", 18 | "debug", 19 | "utility", 20 | "easy" 21 | ], 22 | "author": "Nick Baugh ", 23 | "license": "MIT", 24 | "dependencies": { 25 | "ansi-styles": "^2.1.0", 26 | "chalk": "^1.1.1", 27 | "escape-string-regexp": "^1.0.3" 28 | }, 29 | "engines": { 30 | "node": ">=0.10.0" 31 | }, 32 | "repository": "niftylettuce/chalkline" 33 | } 34 | --------------------------------------------------------------------------------