Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added ansi16/256 conversion #18

Merged
merged 1 commit into from
Jul 23, 2015
Merged

added ansi16/256 conversion #18

merged 1 commit into from
Jul 23, 2015

Conversation

Qix-
Copy link
Owner

@Qix- Qix- commented Jul 22, 2015

So the ANSI escape codes common in modern TTY console emulators have a defined palette and scheme; I've added them here.

Over at Chalk, we're looking to perform some color operations that have to convert from full colors to the ANSI 16/256 palettes, including allowing HSV/HSL/etc. Figured it'd be useful to put these conversion algorithms in this library and promote this since this is impressively light but comprehensive. 👍

At the time of this writing, I haven't added tests; It's 1:30am and I have work in a few hours. I'll get back to this tomorrow and add them. I wanted to get this posted before I headed off, though, and see if this is something you'd want to add and to get any feedback you may have on the algorithms themselves.

It appears they work fine as it stands, though.

screen shot 2015-07-22 at 1 59 39 am

At face value, they are pretty simple, but things like the greyscale palette maths required me to sit down and figure out domains and translations and stuff. Head hurts, need advil.

At any rate, we'd likely be wrapping this to use it in the event these don't land anyway, though I figured they could be of some use to users of a more general library, such as color-convert.

Thanks, and great library!

// @sindresorhus @jbnicolai

@MoOx
Copy link
Collaborator

MoOx commented Jul 22, 2015

Awesome !
Waiting for some tests before merging.

@Qix-
Copy link
Owner Author

Qix- commented Jul 22, 2015

Had to get the 16 color palette tuned up. It was acting funky.

Original:
nature-colorful_00341259

With white-biased (funky) palette:
white-bias

Fixed:
nature-good

- Improved upon the 16 color palette
- Fixed 256-to-rgb blue channel
- Added tests
@Qix-
Copy link
Owner Author

Qix- commented Jul 22, 2015

@MoOx that should do it.

MoOx added a commit that referenced this pull request Jul 23, 2015
added ansi16/256 conversion
@MoOx MoOx merged commit 7d4ba20 into Qix-:master Jul 23, 2015
@MoOx
Copy link
Collaborator

MoOx commented Jul 23, 2015

Released as 0.6.0

cuginoAle added a commit to cuginoAle/svg-inliner that referenced this pull request Aug 27, 2019
diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..706e22d
Binary files /dev/null and b/.DS_Store differ
diff --git a/icons/activity.svg b/icons/activity.svg
new file mode 100755
index 0000000..4044b44
--- /dev/null
+++ b/icons/activity.svg
@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M10.7069 3.00248C11.1545 3.03412 11.5262 3.36 11.6161 3.79959L14.2191 16.5255L15.7076 12.796C15.8593 12.4159 16.2272 12.1667 16.6364 12.1667H21C21.5523 12.1667 22 12.6144 22 13.1667C22 13.7189 21.5523 14.1667 21 14.1667H17.314L14.8379 20.3707C14.6741 20.7811 14.2603 21.0353 13.8202 20.996C13.3801 20.9568 13.0179 20.6333 12.9294 20.2004L10.3742 7.70839L8.30541 13.5029C8.1633 13.9009 7.78629 14.1667 7.36364 14.1667H3C2.44772 14.1667 2 13.7189 2 13.1667C2 12.6144 2.44772 12.1667 3 12.1667H6.65884L9.69459 3.66375C9.84545 3.24118 10.2593 2.97084 10.7069 3.00248Z" fill="#7A7F8F"/>
+</svg>
diff --git a/icons/all-icons.js b/icons/all-icons.js
new file mode 100644
index 0000000..a322a0f
--- /dev/null
+++ b/icons/all-icons.js
@@ -0,0 +1,27 @@
+
+module.exports = {
+  ['activity'] : `<svg class="icon-img activity-svg" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M10.7069 3.00248C11.1545 3.03412 11.5262 3.36 11.6161 3.79959L14.2191 16.5255L15.7076 12.796C15.8593 12.4159 16.2272 12.1667 16.6364 12.1667H21C21.5523 12.1667 22 12.6144 22 13.1667C22 13.7189 21.5523 14.1667 21 14.1667H17.314L14.8379 20.3707C14.6741 20.7811 14.2603 21.0353 13.8202 20.996C13.3801 20.9568 13.0179 20.6333 12.9294 20.2004L10.3742 7.70839L8.30541 13.5029C8.1633 13.9009 7.78629 14.1667 7.36364 14.1667H3C2.44772 14.1667 2 13.7189 2 13.1667C2 12.6144 2.44772 12.1667 3 12.1667H6.65884L9.69459 3.66375C9.84545 3.24118 10.2593 2.97084 10.7069 3.00248Z" fill="#7A7F8F"/>
+</svg>
+`,['arrow-down'] : `<svg class="icon-img arrow-down-svg" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12 4C12.5523 4 13 4.44772 13 5V16.6711L18.2905 11.344C18.6796 10.9521 19.3128 10.9499 19.7047 11.3391C20.0965 11.7282 20.0987 12.3614 19.7095 12.7533L12.7095 19.8019C12.5218 19.9909 12.2664 20.0972 12 20.0972C11.7336 20.0972 11.4782 19.9909 11.2905 19.8019L4.29045 12.7533C3.90128 12.3614 3.90347 11.7282 4.29534 11.3391C4.68722 10.9499 5.32038 10.9521 5.70955 11.344L11 16.6711L11 5C11 4.44772 11.4477 4 12 4Z" fill="#7A7F8F"/>
+</svg>
+`,['arrow-left'] : `<svg class="icon-img arrow-left-svg" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12.7047 4.29045C13.0965 4.67962 13.0987 5.31278 12.7095 5.70466L7.40245 11.0486L19 11.0486C19.5523 11.0486 20 11.4963 20 12.0486C20 12.6009 19.5523 13.0486 19 13.0486L7.40245 13.0486L12.7095 18.3926C13.0987 18.7844 13.0965 19.4176 12.7047 19.8068C12.3128 20.1959 11.6796 20.1938 11.2905 19.8019L4.29045 12.7533C3.90318 12.3633 3.90318 11.7339 4.29045 11.344L11.2905 4.29534C11.6796 3.90347 12.3128 3.90128 12.7047 4.29045Z" fill="#7A7F8F"/>
+</svg>
+`,['arrow-right'] : `<svg class="icon-img arrow-right-svg" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M11.2953 4.29045C11.6872 3.90128 12.3204 3.90347 12.7095 4.29534L19.7095 11.344C20.0968 11.7339 20.0968 12.3633 19.7095 12.7533L12.7095 19.8019C12.3204 20.1938 11.6872 20.1959 11.2953 19.8068C10.9035 19.4176 10.9013 18.7844 11.2905 18.3926L16.5976 13.0486H5C4.44772 13.0486 4 12.6009 4 12.0486C4 11.4963 4.44772 11.0486 5 11.0486L16.5976 11.0486L11.2905 5.70466C10.9013 5.31278 10.9035 4.67962 11.2953 4.29045Z" fill="#7A7F8F"/>
+</svg>
+`,['arrow-up'] : `<svg class="icon-img arrow-up-svg" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12 4C12.2664 4 12.5218 4.10631 12.7095 4.29534L19.7095 11.344C20.0987 11.7358 20.0965 12.369 19.7047 12.7582C19.3128 13.1473 18.6796 13.1451 18.2905 12.7533L13 7.42608L13 19.0972C13 19.6495 12.5523 20.0972 12 20.0972C11.4477 20.0972 11 19.6495 11 19.0972L11 7.42608L5.70955 12.7533C5.32038 13.1451 4.68722 13.1473 4.29534 12.7582C3.90347 12.369 3.90128 11.7358 4.29045 11.344L11.2905 4.29534C11.4782 4.10631 11.7336 4 12 4Z" fill="#7A7F8F"/>
+</svg>
+`,['attachment'] : `<svg class="icon-img attachment-svg" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M17.0752 5.61917C16.3037 4.89388 15.0139 4.66135 13.8838 5.72375C12.3271 7.18712 10.4177 8.98869 8.8971 10.4247C8.13688 11.1427 7.47399 11.7691 7.00116 12.2161L6.24891 12.9274L6.24807 12.9281C5.29067 13.8399 4.97297 14.7875 5.0018 15.6165C5.0314 16.4675 5.43038 17.2972 6.08976 17.9314C7.38689 19.1789 9.59283 19.589 11.5486 17.7504C13.9289 15.5128 15.8722 13.7038 17.2208 12.4539C17.8951 11.829 18.4207 11.3438 18.7778 11.0148C18.9564 10.8502 19.0929 10.7247 19.1848 10.6403L19.3238 10.5127L20 11.2494L20.6756 11.9867L20.5379 12.1131C20.4467 12.1969 20.3109 12.3218 20.133 12.4857C19.7772 12.8135 19.253 13.2973 18.5803 13.9208C17.2348 15.1678 15.2949 16.9736 12.9185 19.2076C10.1176 21.8407 6.6984 21.2916 4.70338 19.3729C3.7167 18.424 3.05284 17.1188 3.00301 15.6861C2.95241 14.2313 3.53869 12.7465 4.86883 11.4798L4.87127 11.4775L5.62726 10.7627C6.10027 10.3155 6.7634 9.68887 7.52389 8.97066C9.04474 7.53437 10.9555 5.73153 12.5139 4.26655C14.4988 2.4006 16.9916 2.79557 18.4451 4.16196C19.1656 4.83928 19.6663 5.78424 19.7051 6.841C19.7447 7.9206 19.2977 9.00097 18.3338 9.90711C16.7773 11.3703 15.2922 12.7731 13.9837 14.0097C13.7866 14.196 13.5935 14.3785 13.4047 14.5569C12.3408 15.5625 11.415 16.4376 10.6935 17.1159C9.4666 18.2693 7.88974 18.1519 6.94453 17.2522C6.48739 16.817 6.18474 16.1981 6.18857 15.5031C6.19247 14.7949 6.51278 14.1177 7.09855 13.567C7.93202 12.7835 9.84124 10.9821 11.543 9.37576C12.3937 8.57276 13.1923 7.81877 13.7782 7.26553L14.7369 6.36009L15.4238 7.08683L16.1104 7.8139L15.1513 8.71967C14.5653 9.27297 13.7667 10.027 12.9159 10.8302C11.2147 12.436 9.30373 14.239 8.46843 15.0242C8.21982 15.258 8.18898 15.4338 8.18854 15.5141C8.18803 15.6076 8.22782 15.7125 8.32347 15.8036C8.41928 15.8948 8.55499 15.9544 8.70752 15.954C8.84814 15.9536 9.06561 15.9012 9.32358 15.6587C10.0428 14.9826 10.9661 14.1099 12.0299 13.1044C12.2189 12.9257 12.4124 12.7429 12.6099 12.5562C13.9187 11.3193 15.4054 9.91504 16.9639 8.44991C17.5576 7.89187 17.7225 7.35119 17.7064 6.91432C17.6896 6.45461 17.4672 5.98768 17.0752 5.61917ZM20 11.2494L20.6756 11.9867C21.0828 11.6136 21.1104 10.981 20.7373 10.5739C20.3642 10.1667 19.731 10.1396 19.3238 10.5127L20 11.2494ZM16.1508 6.40019C16.5301 6.8017 16.5119 7.43468 16.1104 7.8139L15.4238 7.08683L14.7369 6.36009C15.1384 5.98087 15.7716 5.99868 16.1508 6.40019Z" fill="#7A7F8F"/>
+</svg>
+`,['bell'] : `<svg class="icon-img bell-svg" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M11.9333 4C8.70519 4 6.05778 6.6693 6.05778 10V14.8462C6.05778 15.2802 5.99774 15.6638 5.89932 16H17.9673C17.8689 15.6638 17.8089 15.2802 17.8089 14.8462V10.0007C17.8089 6.67003 15.1615 4 11.9333 4ZM19.8089 10C19.8089 5.59874 16.2997 2 11.9333 2C7.56695 2 4.05778 5.59871 4.05778 10V14.8462C4.05778 15.4158 3.87748 15.7393 3.7426 15.911C3.67025 16.0031 3.60134 16.063 3.5584 16.0958C3.54025 16.1097 3.52739 16.1182 3.52186 16.1217C3.12579 16.3372 2.92188 16.7926 3.02759 17.2333C3.13546 17.6829 3.53757 18 4 18H19.8667C20.3291 18 20.7312 17.6829 20.8391 17.2333C20.9448 16.7926 20.7409 16.3372 20.3448 16.1217C20.3393 16.1182 20.3264 16.1097 20.3083 16.0958C20.2653 16.063 20.1964 16.0031 20.1241 15.911C19.9892 15.7393 19.8089 15.4158 19.8089 14.8462V10Z" fill="#7A7F8F"/>
+<path d="M14 19.3333C14 20.2538 13.1046 21 12 21C10.8954 21 10 20.2538 10 19.3333C10 19 10 19 12 19C14 19 14 19 14 19.3333Z" fill="#7A7F8F"/>
+</svg>
+`
+
+  }
diff --git a/icons/all-icons.md b/icons/all-icons.md
new file mode 100644
index 0000000..29d64b1
--- /dev/null
+++ b/icons/all-icons.md
@@ -0,0 +1,9 @@
+| Name | icon |
+|---|---|
+|activity|<img src=".//activity.svg" width="100%" height="44" />|
+|arrow-down|<img src=".//arrow-down.svg" width="100%" height="44" />|
+|arrow-left|<img src=".//arrow-left.svg" width="100%" height="44" />|
+|arrow-right|<img src=".//arrow-right.svg" width="100%" height="44" />|
+|arrow-up|<img src=".//arrow-up.svg" width="100%" height="44" />|
+|attachment|<img src=".//attachment.svg" width="100%" height="44" />|
+|bell|<img src=".//bell.svg" width="100%" height="44" />|
\ No newline at end of file
diff --git a/icons/arrow-down.svg b/icons/arrow-down.svg
new file mode 100755
index 0000000..8a6e2fd
--- /dev/null
+++ b/icons/arrow-down.svg
@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12 4C12.5523 4 13 4.44772 13 5V16.6711L18.2905 11.344C18.6796 10.9521 19.3128 10.9499 19.7047 11.3391C20.0965 11.7282 20.0987 12.3614 19.7095 12.7533L12.7095 19.8019C12.5218 19.9909 12.2664 20.0972 12 20.0972C11.7336 20.0972 11.4782 19.9909 11.2905 19.8019L4.29045 12.7533C3.90128 12.3614 3.90347 11.7282 4.29534 11.3391C4.68722 10.9499 5.32038 10.9521 5.70955 11.344L11 16.6711L11 5C11 4.44772 11.4477 4 12 4Z" fill="#7A7F8F"/>
+</svg>
diff --git a/icons/arrow-left.svg b/icons/arrow-left.svg
new file mode 100755
index 0000000..e174e6d
--- /dev/null
+++ b/icons/arrow-left.svg
@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12.7047 4.29045C13.0965 4.67962 13.0987 5.31278 12.7095 5.70466L7.40245 11.0486L19 11.0486C19.5523 11.0486 20 11.4963 20 12.0486C20 12.6009 19.5523 13.0486 19 13.0486L7.40245 13.0486L12.7095 18.3926C13.0987 18.7844 13.0965 19.4176 12.7047 19.8068C12.3128 20.1959 11.6796 20.1938 11.2905 19.8019L4.29045 12.7533C3.90318 12.3633 3.90318 11.7339 4.29045 11.344L11.2905 4.29534C11.6796 3.90347 12.3128 3.90128 12.7047 4.29045Z" fill="#7A7F8F"/>
+</svg>
diff --git a/icons/arrow-right.svg b/icons/arrow-right.svg
new file mode 100755
index 0000000..843f590
--- /dev/null
+++ b/icons/arrow-right.svg
@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M11.2953 4.29045C11.6872 3.90128 12.3204 3.90347 12.7095 4.29534L19.7095 11.344C20.0968 11.7339 20.0968 12.3633 19.7095 12.7533L12.7095 19.8019C12.3204 20.1938 11.6872 20.1959 11.2953 19.8068C10.9035 19.4176 10.9013 18.7844 11.2905 18.3926L16.5976 13.0486H5C4.44772 13.0486 4 12.6009 4 12.0486C4 11.4963 4.44772 11.0486 5 11.0486L16.5976 11.0486L11.2905 5.70466C10.9013 5.31278 10.9035 4.67962 11.2953 4.29045Z" fill="#7A7F8F"/>
+</svg>
diff --git a/icons/arrow-up.svg b/icons/arrow-up.svg
new file mode 100755
index 0000000..6f1c307
--- /dev/null
+++ b/icons/arrow-up.svg
@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12 4C12.2664 4 12.5218 4.10631 12.7095 4.29534L19.7095 11.344C20.0987 11.7358 20.0965 12.369 19.7047 12.7582C19.3128 13.1473 18.6796 13.1451 18.2905 12.7533L13 7.42608L13 19.0972C13 19.6495 12.5523 20.0972 12 20.0972C11.4477 20.0972 11 19.6495 11 19.0972L11 7.42608L5.70955 12.7533C5.32038 13.1451 4.68722 13.1473 4.29534 12.7582C3.90347 12.369 3.90128 11.7358 4.29045 11.344L11.2905 4.29534C11.4782 4.10631 11.7336 4 12 4Z" fill="#7A7F8F"/>
+</svg>
diff --git a/icons/attachment.svg b/icons/attachment.svg
new file mode 100755
index 0000000..6eed93a
--- /dev/null
+++ b/icons/attachment.svg
@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M17.0752 5.61917C16.3037 4.89388 15.0139 4.66135 13.8838 5.72375C12.3271 7.18712 10.4177 8.98869 8.8971 10.4247C8.13688 11.1427 7.47399 11.7691 7.00116 12.2161L6.24891 12.9274L6.24807 12.9281C5.29067 13.8399 4.97297 14.7875 5.0018 15.6165C5.0314 16.4675 5.43038 17.2972 6.08976 17.9314C7.38689 19.1789 9.59283 19.589 11.5486 17.7504C13.9289 15.5128 15.8722 13.7038 17.2208 12.4539C17.8951 11.829 18.4207 11.3438 18.7778 11.0148C18.9564 10.8502 19.0929 10.7247 19.1848 10.6403L19.3238 10.5127L20 11.2494L20.6756 11.9867L20.5379 12.1131C20.4467 12.1969 20.3109 12.3218 20.133 12.4857C19.7772 12.8135 19.253 13.2973 18.5803 13.9208C17.2348 15.1678 15.2949 16.9736 12.9185 19.2076C10.1176 21.8407 6.6984 21.2916 4.70338 19.3729C3.7167 18.424 3.05284 17.1188 3.00301 15.6861C2.95241 14.2313 3.53869 12.7465 4.86883 11.4798L4.87127 11.4775L5.62726 10.7627C6.10027 10.3155 6.7634 9.68887 7.52389 8.97066C9.04474 7.53437 10.9555 5.73153 12.5139 4.26655C14.4988 2.4006 16.9916 2.79557 18.4451 4.16196C19.1656 4.83928 19.6663 5.78424 19.7051 6.841C19.7447 7.9206 19.2977 9.00097 18.3338 9.90711C16.7773 11.3703 15.2922 12.7731 13.9837 14.0097C13.7866 14.196 13.5935 14.3785 13.4047 14.5569C12.3408 15.5625 11.415 16.4376 10.6935 17.1159C9.4666 18.2693 7.88974 18.1519 6.94453 17.2522C6.48739 16.817 6.18474 16.1981 6.18857 15.5031C6.19247 14.7949 6.51278 14.1177 7.09855 13.567C7.93202 12.7835 9.84124 10.9821 11.543 9.37576C12.3937 8.57276 13.1923 7.81877 13.7782 7.26553L14.7369 6.36009L15.4238 7.08683L16.1104 7.8139L15.1513 8.71967C14.5653 9.27297 13.7667 10.027 12.9159 10.8302C11.2147 12.436 9.30373 14.239 8.46843 15.0242C8.21982 15.258 8.18898 15.4338 8.18854 15.5141C8.18803 15.6076 8.22782 15.7125 8.32347 15.8036C8.41928 15.8948 8.55499 15.9544 8.70752 15.954C8.84814 15.9536 9.06561 15.9012 9.32358 15.6587C10.0428 14.9826 10.9661 14.1099 12.0299 13.1044C12.2189 12.9257 12.4124 12.7429 12.6099 12.5562C13.9187 11.3193 15.4054 9.91504 16.9639 8.44991C17.5576 7.89187 17.7225 7.35119 17.7064 6.91432C17.6896 6.45461 17.4672 5.98768 17.0752 5.61917ZM20 11.2494L20.6756 11.9867C21.0828 11.6136 21.1104 10.981 20.7373 10.5739C20.3642 10.1667 19.731 10.1396 19.3238 10.5127L20 11.2494ZM16.1508 6.40019C16.5301 6.8017 16.5119 7.43468 16.1104 7.8139L15.4238 7.08683L14.7369 6.36009C15.1384 5.98087 15.7716 5.99868 16.1508 6.40019Z" fill="#7A7F8F"/>
+</svg>
diff --git a/icons/bell.svg b/icons/bell.svg
new file mode 100755
index 0000000..8b4864c
--- /dev/null
+++ b/icons/bell.svg
@@ -0,0 +1,4 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M11.9333 4C8.70519 4 6.05778 6.6693 6.05778 10V14.8462C6.05778 15.2802 5.99774 15.6638 5.89932 16H17.9673C17.8689 15.6638 17.8089 15.2802 17.8089 14.8462V10.0007C17.8089 6.67003 15.1615 4 11.9333 4ZM19.8089 10C19.8089 5.59874 16.2997 2 11.9333 2C7.56695 2 4.05778 5.59871 4.05778 10V14.8462C4.05778 15.4158 3.87748 15.7393 3.7426 15.911C3.67025 16.0031 3.60134 16.063 3.5584 16.0958C3.54025 16.1097 3.52739 16.1182 3.52186 16.1217C3.12579 16.3372 2.92188 16.7926 3.02759 17.2333C3.13546 17.6829 3.53757 18 4 18H19.8667C20.3291 18 20.7312 17.6829 20.8391 17.2333C20.9448 16.7926 20.7409 16.3372 20.3448 16.1217C20.3393 16.1182 20.3264 16.1097 20.3083 16.0958C20.2653 16.063 20.1964 16.0031 20.1241 15.911C19.9892 15.7393 19.8089 15.4158 19.8089 14.8462V10Z" fill="#7A7F8F"/>
+<path d="M14 19.3333C14 20.2538 13.1046 21 12 21C10.8954 21 10 20.2538 10 19.3333C10 19 10 19 12 19C14 19 14 19 14 19.3333Z" fill="#7A7F8F"/>
+</svg>
diff --git a/icons/icons.md b/icons/icons.md
new file mode 100644
index 0000000..29d64b1
--- /dev/null
+++ b/icons/icons.md
@@ -0,0 +1,9 @@
+| Name | icon |
+|---|---|
+|activity|<img src=".//activity.svg" width="100%" height="44" />|
+|arrow-down|<img src=".//arrow-down.svg" width="100%" height="44" />|
+|arrow-left|<img src=".//arrow-left.svg" width="100%" height="44" />|
+|arrow-right|<img src=".//arrow-right.svg" width="100%" height="44" />|
+|arrow-up|<img src=".//arrow-up.svg" width="100%" height="44" />|
+|attachment|<img src=".//attachment.svg" width="100%" height="44" />|
+|bell|<img src=".//bell.svg" width="100%" height="44" />|
\ No newline at end of file
diff --git a/index.js b/index.js
new file mode 100755
index 0000000..4ead8cf
--- /dev/null
+++ b/index.js
@@ -0,0 +1,53 @@
+#!/usr/bin/env node
+
+const fs = require('fs')
+const chalk = require('chalk')
+
+const exportDir = `${__dirname}/icons`
+const indexFile = `${exportDir}/all-icons.js`
+const iconsDir = `./`
+const mdIconsMap = `${exportDir}/all-icons.md`
+const ver = require('./package.json').version
+
+const logo = `
+---------------------------------------------
+╔═╗┬  ┬┌─┐  ╦┌┐┌┬  ┬┌┐┌┌─┐┬─┐
+╚═╗└┐┌┘│ ┬  ║││││  ││││├┤ ├┬┘
+╚═╝ └┘ └─┘  ╩┘└┘┴─┘┴┘└┘└─┘┴└─    ver. ${ver}
+---------------------------------------------
+
+`
+
+console.log(logo)
+
+const svgs = []
+fs.readdir(iconsDir, function (err, items) {
+  if (err) {
+    console.error(err)
+  } else {
+    const files = items.filter(file => file.indexOf('.svg') > 0)
+    console.log(`Working...`)
+
+    files.forEach((file, i) => {
+      const svg = fs.readFileSync(`${iconsDir}/${file}`, 'utf8')
+      const fileName = file.split('.')[0]
+
+      const svgTag = svg.replace('<svg ', `<svg class="icon-img ${fileName}-svg" `)
+      svgs.push(`['${fileName}'] : \`${svgTag}\``)
+    })
+
+    const md = files.map(f => `|${f.split('.')[0]}|<img src="${iconsDir}/${f}" width="100%" height="44" />|`).join('\n')
+    fs.writeFileSync(mdIconsMap, `| Name | icon |\n|---|---|\n${md}`)
+  }
+
+  // write our generic index.js
+
+  fs.writeFileSync(indexFile, `
+module.exports = {
+  ${svgs.join(',')}\n
+  }\n`)
+
+  console.log(`${chalk.green('✔')} Exported ${svgs.length} svgs to all-index.js`)
+  console.log('---------------------------------------------')
+  console.log()
+})
diff --git a/node_modules/ansi-styles/index.js b/node_modules/ansi-styles/index.js
new file mode 100644
index 0000000..90a871c
--- /dev/null
+++ b/node_modules/ansi-styles/index.js
@@ -0,0 +1,165 @@
+'use strict';
+const colorConvert = require('color-convert');
+
+const wrapAnsi16 = (fn, offset) => function () {
+	const code = fn.apply(colorConvert, arguments);
+	return `\u001B[${code + offset}m`;
+};
+
+const wrapAnsi256 = (fn, offset) => function () {
+	const code = fn.apply(colorConvert, arguments);
+	return `\u001B[${38 + offset};5;${code}m`;
+};
+
+const wrapAnsi16m = (fn, offset) => function () {
+	const rgb = fn.apply(colorConvert, arguments);
+	return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
+};
+
+function assembleStyles() {
+	const codes = new Map();
+	const styles = {
+		modifier: {
+			reset: [0, 0],
+			// 21 isn't widely supported and 22 does the same thing
+			bold: [1, 22],
+			dim: [2, 22],
+			italic: [3, 23],
+			underline: [4, 24],
+			inverse: [7, 27],
+			hidden: [8, 28],
+			strikethrough: [9, 29]
+		},
+		color: {
+			black: [30, 39],
+			red: [31, 39],
+			green: [32, 39],
+			yellow: [33, 39],
+			blue: [34, 39],
+			magenta: [35, 39],
+			cyan: [36, 39],
+			white: [37, 39],
+			gray: [90, 39],
+
+			// Bright color
+			redBright: [91, 39],
+			greenBright: [92, 39],
+			yellowBright: [93, 39],
+			blueBright: [94, 39],
+			magentaBright: [95, 39],
+			cyanBright: [96, 39],
+			whiteBright: [97, 39]
+		},
+		bgColor: {
+			bgBlack: [40, 49],
+			bgRed: [41, 49],
+			bgGreen: [42, 49],
+			bgYellow: [43, 49],
+			bgBlue: [44, 49],
+			bgMagenta: [45, 49],
+			bgCyan: [46, 49],
+			bgWhite: [47, 49],
+
+			// Bright color
+			bgBlackBright: [100, 49],
+			bgRedBright: [101, 49],
+			bgGreenBright: [102, 49],
+			bgYellowBright: [103, 49],
+			bgBlueBright: [104, 49],
+			bgMagentaBright: [105, 49],
+			bgCyanBright: [106, 49],
+			bgWhiteBright: [107, 49]
+		}
+	};
+
+	// Fix humans
+	styles.color.grey = styles.color.gray;
+
+	for (const groupName of Object.keys(styles)) {
+		const group = styles[groupName];
+
+		for (const styleName of Object.keys(group)) {
+			const style = group[styleName];
+
+			styles[styleName] = {
+				open: `\u001B[${style[0]}m`,
+				close: `\u001B[${style[1]}m`
+			};
+
+			group[styleName] = styles[styleName];
+
+			codes.set(style[0], style[1]);
+		}
+
+		Object.defineProperty(styles, groupName, {
+			value: group,
+			enumerable: false
+		});
+
+		Object.defineProperty(styles, 'codes', {
+			value: codes,
+			enumerable: false
+		});
+	}
+
+	const ansi2ansi = n => n;
+	const rgb2rgb = (r, g, b) => [r, g, b];
+
+	styles.color.close = '\u001B[39m';
+	styles.bgColor.close = '\u001B[49m';
+
+	styles.color.ansi = {
+		ansi: wrapAnsi16(ansi2ansi, 0)
+	};
+	styles.color.ansi256 = {
+		ansi256: wrapAnsi256(ansi2ansi, 0)
+	};
+	styles.color.ansi16m = {
+		rgb: wrapAnsi16m(rgb2rgb, 0)
+	};
+
+	styles.bgColor.ansi = {
+		ansi: wrapAnsi16(ansi2ansi, 10)
+	};
+	styles.bgColor.ansi256 = {
+		ansi256: wrapAnsi256(ansi2ansi, 10)
+	};
+	styles.bgColor.ansi16m = {
+		rgb: wrapAnsi16m(rgb2rgb, 10)
+	};
+
+	for (let key of Object.keys(colorConvert)) {
+		if (typeof colorConvert[key] !== 'object') {
+			continue;
+		}
+
+		const suite = colorConvert[key];
+
+		if (key === 'ansi16') {
+			key = 'ansi';
+		}
+
+		if ('ansi16' in suite) {
+			styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);
+			styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);
+		}
+
+		if ('ansi256' in suite) {
+			styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);
+			styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);
+		}
+
+		if ('rgb' in suite) {
+			styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);
+			styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);
+		}
+	}
+
+	return styles;
+}
+
+// Make the export immutable
+Object.defineProperty(module, 'exports', {
+	enumerable: true,
+	get: assembleStyles
+});
diff --git a/node_modules/ansi-styles/license b/node_modules/ansi-styles/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/ansi-styles/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+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:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+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.
diff --git a/node_modules/ansi-styles/package.json b/node_modules/ansi-styles/package.json
new file mode 100644
index 0000000..5452169
--- /dev/null
+++ b/node_modules/ansi-styles/package.json
@@ -0,0 +1,88 @@
+{
+  "_from": "ansi-styles@^3.2.1",
+  "_id": "ansi-styles@3.2.1",
+  "_inBundle": false,
+  "_integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+  "_location": "/ansi-styles",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "range",
+    "registry": true,
+    "raw": "ansi-styles@^3.2.1",
+    "name": "ansi-styles",
+    "escapedName": "ansi-styles",
+    "rawSpec": "^3.2.1",
+    "saveSpec": null,
+    "fetchSpec": "^3.2.1"
+  },
+  "_requiredBy": [
+    "/chalk"
+  ],
+  "_resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+  "_shasum": "41fbb20243e50b12be0f04b8dedbf07520ce841d",
+  "_spec": "ansi-styles@^3.2.1",
+  "_where": "/Users/alessio/Sites/inline-svg-cli/node_modules/chalk",
+  "author": {
+    "name": "Sindre Sorhus",
+    "email": "sindresorhus@gmail.com",
+    "url": "sindresorhus.com"
+  },
+  "ava": {
+    "require": "babel-polyfill"
+  },
+  "bugs": {
+    "url": "https://github.com/chalk/ansi-styles/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "color-convert": "^1.9.0"
+  },
+  "deprecated": false,
+  "description": "ANSI escape codes for styling strings in the terminal",
+  "devDependencies": {
+    "ava": "*",
+    "babel-polyfill": "^6.23.0",
+    "svg-term-cli": "^2.1.1",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "index.js"
+  ],
+  "homepage": "https://github.com/chalk/ansi-styles#readme",
+  "keywords": [
+    "ansi",
+    "styles",
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "tty",
+    "escape",
+    "formatting",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "log",
+    "logging",
+    "command-line",
+    "text"
+  ],
+  "license": "MIT",
+  "name": "ansi-styles",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/ansi-styles.git"
+  },
+  "scripts": {
+    "screenshot": "svg-term --command='node screenshot' --out=screenshot.svg --padding=3 --width=55 --height=3 --at=1000 --no-cursor",
+    "test": "xo && ava"
+  },
+  "version": "3.2.1"
+}
diff --git a/node_modules/ansi-styles/readme.md b/node_modules/ansi-styles/readme.md
new file mode 100644
index 0000000..3158e2d
--- /dev/null
+++ b/node_modules/ansi-styles/readme.md
@@ -0,0 +1,147 @@
+# ansi-styles [![Build Status](https://travis-ci.org/chalk/ansi-styles.svg?branch=master)](https://travis-ci.org/chalk/ansi-styles)
+
+> [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code#Colors_and_Styles) for styling strings in the terminal
+
+You probably want the higher-level [chalk](https://github.com/chalk/chalk) module for styling your strings.
+
+<img src="https://cdn.rawgit.com/chalk/ansi-styles/8261697c95bf34b6c7767e2cbe9941a851d59385/screenshot.svg" width="900">
+
+
+## Install
+
+```
+$ npm install ansi-styles
+```
+
+
+## Usage
+
+```js
+const style = require('ansi-styles');
+
+console.log(`${style.green.open}Hello world!${style.green.close}`);
+
+
+// Color conversion between 16/256/truecolor
+// NOTE: If conversion goes to 16 colors or 256 colors, the original color
+//       may be degraded to fit that color palette. This means terminals
+//       that do not support 16 million colors will best-match the
+//       original color.
+console.log(style.bgColor.ansi.hsl(120, 80, 72) + 'Hello world!' + style.bgColor.close);
+console.log(style.color.ansi256.rgb(199, 20, 250) + 'Hello world!' + style.color.close);
+console.log(style.color.ansi16m.hex('#ABCDEF') + 'Hello world!' + style.color.close);
+```
+
+## API
+
+Each style has an `open` and `close` property.
+
+
+## Styles
+
+### Modifiers
+
+- `reset`
+- `bold`
+- `dim`
+- `italic` *(Not widely supported)*
+- `underline`
+- `inverse`
+- `hidden`
+- `strikethrough` *(Not widely supported)*
+
+### Colors
+
+- `black`
+- `red`
+- `green`
+- `yellow`
+- `blue`
+- `magenta`
+- `cyan`
+- `white`
+- `gray` ("bright black")
+- `redBright`
+- `greenBright`
+- `yellowBright`
+- `blueBright`
+- `magentaBright`
+- `cyanBright`
+- `whiteBright`
+
+### Background colors
+
+- `bgBlack`
+- `bgRed`
+- `bgGreen`
+- `bgYellow`
+- `bgBlue`
+- `bgMagenta`
+- `bgCyan`
+- `bgWhite`
+- `bgBlackBright`
+- `bgRedBright`
+- `bgGreenBright`
+- `bgYellowBright`
+- `bgBlueBright`
+- `bgMagentaBright`
+- `bgCyanBright`
+- `bgWhiteBright`
+
+
+## Advanced usage
+
+By default, you get a map of styles, but the styles are also available as groups. They are non-enumerable so they don't show up unless you access them explicitly. This makes it easier to expose only a subset in a higher-level module.
+
+- `style.modifier`
+- `style.color`
+- `style.bgColor`
+
+###### Example
+
+```js
+console.log(style.color.green.open);
+```
+
+Raw escape codes (i.e. without the CSI escape prefix `\u001B[` and render mode postfix `m`) are available under `style.codes`, which returns a `Map` with the open codes as keys and close codes as values.
+
+###### Example
+
+```js
+console.log(style.codes.get(36));
+//=> 39
+```
+
+
+## [256 / 16 million (TrueColor) support](https://gist.github.com/XVilka/8346728)
+
+`ansi-styles` uses the [`color-convert`](https://github.com/Qix-/color-convert) package to allow for converting between various colors and ANSI escapes, with support for 256 and 16 million colors.
+
+To use these, call the associated conversion function with the intended output, for example:
+
+```js
+style.color.ansi.rgb(100, 200, 15); // RGB to 16 color ansi foreground code
+style.bgColor.ansi.rgb(100, 200, 15); // RGB to 16 color ansi background code
+
+style.color.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code
+style.bgColor.ansi256.hsl(120, 100, 60); // HSL to 256 color ansi foreground code
+
+style.color.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color foreground code
+style.bgColor.ansi16m.hex('#C0FFEE'); // Hex (RGB) to 16 million color background code
+```
+
+
+## Related
+
+- [ansi-escapes](https://github.com/sindresorhus/ansi-escapes) - ANSI escape codes for manipulating the terminal
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+
+## License
+
+MIT
diff --git a/node_modules/chalk/index.js b/node_modules/chalk/index.js
new file mode 100644
index 0000000..1cc5fa8
--- /dev/null
+++ b/node_modules/chalk/index.js
@@ -0,0 +1,228 @@
+'use strict';
+const escapeStringRegexp = require('escape-string-regexp');
+const ansiStyles = require('ansi-styles');
+const stdoutColor = require('supports-color').stdout;
+
+const template = require('./templates.js');
+
+const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');
+
+// `supportsColor.level` → `ansiStyles.color[name]` mapping
+const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];
+
+// `color-convert` models to exclude from the Chalk API due to conflicts and such
+const skipModels = new Set(['gray']);
+
+const styles = Object.create(null);
+
+function applyOptions(obj, options) {
+	options = options || {};
+
+	// Detect level if not set manually
+	const scLevel = stdoutColor ? stdoutColor.level : 0;
+	obj.level = options.level === undefined ? scLevel : options.level;
+	obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;
+}
+
+function Chalk(options) {
+	// We check for this.template here since calling `chalk.constructor()`
+	// by itself will have a `this` of a previously constructed chalk object
+	if (!this || !(this instanceof Chalk) || this.template) {
+		const chalk = {};
+		applyOptions(chalk, options);
+
+		chalk.template = function () {
+			const args = [].slice.call(arguments);
+			return chalkTag.apply(null, [chalk.template].concat(args));
+		};
+
+		Object.setPrototypeOf(chalk, Chalk.prototype);
+		Object.setPrototypeOf(chalk.template, chalk);
+
+		chalk.template.constructor = Chalk;
+
+		return chalk.template;
+	}
+
+	applyOptions(this, options);
+}
+
+// Use bright blue on Windows as the normal blue color is illegible
+if (isSimpleWindowsTerm) {
+	ansiStyles.blue.open = '\u001B[94m';
+}
+
+for (const key of Object.keys(ansiStyles)) {
+	ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
+
+	styles[key] = {
+		get() {
+			const codes = ansiStyles[key];
+			return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);
+		}
+	};
+}
+
+styles.visible = {
+	get() {
+		return build.call(this, this._styles || [], true, 'visible');
+	}
+};
+
+ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');
+for (const model of Object.keys(ansiStyles.color.ansi)) {
+	if (skipModels.has(model)) {
+		continue;
+	}
+
+	styles[model] = {
+		get() {
+			const level = this.level;
+			return function () {
+				const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);
+				const codes = {
+					open,
+					close: ansiStyles.color.close,
+					closeRe: ansiStyles.color.closeRe
+				};
+				return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
+			};
+		}
+	};
+}
+
+ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');
+for (const model of Object.keys(ansiStyles.bgColor.ansi)) {
+	if (skipModels.has(model)) {
+		continue;
+	}
+
+	const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);
+	styles[bgModel] = {
+		get() {
+			const level = this.level;
+			return function () {
+				const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);
+				const codes = {
+					open,
+					close: ansiStyles.bgColor.close,
+					closeRe: ansiStyles.bgColor.closeRe
+				};
+				return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
+			};
+		}
+	};
+}
+
+const proto = Object.defineProperties(() => {}, styles);
+
+function build(_styles, _empty, key) {
+	const builder = function () {
+		return applyStyle.apply(builder, arguments);
+	};
+
+	builder._styles = _styles;
+	builder._empty = _empty;
+
+	const self = this;
+
+	Object.defineProperty(builder, 'level', {
+		enumerable: true,
+		get() {
+			return self.level;
+		},
+		set(level) {
+			self.level = level;
+		}
+	});
+
+	Object.defineProperty(builder, 'enabled', {
+		enumerable: true,
+		get() {
+			return self.enabled;
+		},
+		set(enabled) {
+			self.enabled = enabled;
+		}
+	});
+
+	// See below for fix regarding invisible grey/dim combination on Windows
+	builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';
+
+	// `__proto__` is used because we must return a function, but there is
+	// no way to create a function with a different prototype
+	builder.__proto__ = proto; // eslint-disable-line no-proto
+
+	return builder;
+}
+
+function applyStyle() {
+	// Support varags, but simply cast to string in case there's only one arg
+	const args = arguments;
+	const argsLen = args.length;
+	let str = String(arguments[0]);
+
+	if (argsLen === 0) {
+		return '';
+	}
+
+	if (argsLen > 1) {
+		// Don't slice `arguments`, it prevents V8 optimizations
+		for (let a = 1; a < argsLen; a++) {
+			str += ' ' + args[a];
+		}
+	}
+
+	if (!this.enabled || this.level <= 0 || !str) {
+		return this._empty ? '' : str;
+	}
+
+	// Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,
+	// see https://github.com/chalk/chalk/issues/58
+	// If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.
+	const originalDim = ansiStyles.dim.open;
+	if (isSimpleWindowsTerm && this.hasGrey) {
+		ansiStyles.dim.open = '';
+	}
+
+	for (const code of this._styles.slice().reverse()) {
+		// Replace any instances already present with a re-opening code
+		// otherwise only the part of the string until said closing code
+		// will be colored, and the rest will simply be 'plain'.
+		str = code.open + str.replace(code.closeRe, code.open) + code.close;
+
+		// Close the styling before a linebreak and reopen
+		// after next line to fix a bleed issue on macOS
+		// https://github.com/chalk/chalk/pull/92
+		str = str.replace(/\r?\n/g, `${code.close}$&${code.open}`);
+	}
+
+	// Reset the original `dim` if we changed it to work around the Windows dimmed gray issue
+	ansiStyles.dim.open = originalDim;
+
+	return str;
+}
+
+function chalkTag(chalk, strings) {
+	if (!Array.isArray(strings)) {
+		// If chalk() was called by itself or with a string,
+		// return the string itself as a string.
+		return [].slice.call(arguments, 1).join(' ');
+	}
+
+	const args = [].slice.call(arguments, 2);
+	const parts = [strings.raw[0]];
+
+	for (let i = 1; i < strings.length; i++) {
+		parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&'));
+		parts.push(String(strings.raw[i]));
+	}
+
+	return template(chalk, parts.join(''));
+}
+
+Object.defineProperties(Chalk.prototype, styles);
+
+module.exports = Chalk(); // eslint-disable-line new-cap
+module.exports.supportsColor = stdoutColor;
+module.exports.default = module.exports; // For TypeScript
diff --git a/node_modules/chalk/index.js.flow b/node_modules/chalk/index.js.flow
new file mode 100644
index 0000000..622caaa
--- /dev/null
+++ b/node_modules/chalk/index.js.flow
@@ -0,0 +1,93 @@
+// @flow strict
+
+type TemplateStringsArray = $ReadOnlyArray<string>;
+
+export type Level = $Values<{
+	None: 0,
+	Basic: 1,
+	Ansi256: 2,
+	TrueColor: 3
+}>;
+
+export type ChalkOptions = {|
+	enabled?: boolean,
+	level?: Level
+|};
+
+export type ColorSupport = {|
+	level: Level,
+	hasBasic: boolean,
+	has256: boolean,
+	has16m: boolean
+|};
+
+export interface Chalk {
+	(...text: string[]): string,
+	(text: TemplateStringsArray, ...placeholders: string[]): string,
+	constructor(options?: ChalkOptions): Chalk,
+	enabled: boolean,
+	level: Level,
+	rgb(r: number, g: number, b: number): Chalk,
+	hsl(h: number, s: number, l: number): Chalk,
+	hsv(h: number, s: number, v: number): Chalk,
+	hwb(h: number, w: number, b: number): Chalk,
+	bgHex(color: string): Chalk,
+	bgKeyword(color: string): Chalk,
+	bgRgb(r: number, g: number, b: number): Chalk,
+	bgHsl(h: number, s: number, l: number): Chalk,
+	bgHsv(h: number, s: number, v: number): Chalk,
+	bgHwb(h: number, w: number, b: number): Chalk,
+	hex(color: string): Chalk,
+	keyword(color: string): Chalk,
+
+	+reset: Chalk,
+	+bold: Chalk,
+	+dim: Chalk,
+	+italic: Chalk,
+	+underline: Chalk,
+	+inverse: Chalk,
+	+hidden: Chalk,
+	+strikethrough: Chalk,
+
+	+visible: Chalk,
+
+	+black: Chalk,
+	+red: Chalk,
+	+green: Chalk,
+	+yellow: Chalk,
+	+blue: Chalk,
+	+magenta: Chalk,
+	+cyan: Chalk,
+	+white: Chalk,
+	+gray: Chalk,
+	+grey: Chalk,
+	+blackBright: Chalk,
+	+redBright: Chalk,
+	+greenBright: Chalk,
+	+yellowBright: Chalk,
+	+blueBright: Chalk,
+	+magentaBright: Chalk,
+	+cyanBright: Chalk,
+	+whiteBright: Chalk,
+
+	+bgBlack: Chalk,
+	+bgRed: Chalk,
+	+bgGreen: Chalk,
+	+bgYellow: Chalk,
+	+bgBlue: Chalk,
+	+bgMagenta: Chalk,
+	+bgCyan: Chalk,
+	+bgWhite: Chalk,
+	+bgBlackBright: Chalk,
+	+bgRedBright: Chalk,
+	+bgGreenBright: Chalk,
+	+bgYellowBright: Chalk,
+	+bgBlueBright: Chalk,
+	+bgMagentaBright: Chalk,
+	+bgCyanBright: Chalk,
+	+bgWhiteBrigh: Chalk,
+
+	supportsColor: ColorSupport
+};
+
+declare module.exports: Chalk;
diff --git a/node_modules/chalk/license b/node_modules/chalk/license
new file mode 100644
index 0000000..e7af2f7
--- /dev/null
+++ b/node_modules/chalk/license
@@ -0,0 +1,9 @@
+MIT License
+
+Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
+
+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:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+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.
diff --git a/node_modules/chalk/package.json b/node_modules/chalk/package.json
new file mode 100644
index 0000000..7c46386
--- /dev/null
+++ b/node_modules/chalk/package.json
@@ -0,0 +1,104 @@
+{
+  "_from": "chalk",
+  "_id": "chalk@2.4.2",
+  "_inBundle": false,
+  "_integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+  "_location": "/chalk",
+  "_phantomChildren": {},
+  "_requested": {
+    "type": "tag",
+    "registry": true,
+    "raw": "chalk",
+    "name": "chalk",
+    "escapedName": "chalk",
+    "rawSpec": "",
+    "saveSpec": null,
+    "fetchSpec": "latest"
+  },
+  "_requiredBy": [
+    "#USER",
+    "/"
+  ],
+  "_resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+  "_shasum": "cd42541677a54333cf541a49108c1432b44c9424",
+  "_spec": "chalk",
+  "_where": "/Users/alessio/Sites/inline-svg-cli",
+  "bugs": {
+    "url": "https://github.com/chalk/chalk/issues"
+  },
+  "bundleDependencies": false,
+  "dependencies": {
+    "ansi-styles": "^3.2.1",
+    "escape-string-regexp": "^1.0.5",
+    "supports-color": "^5.3.0"
+  },
+  "deprecated": false,
+  "description": "Terminal string styling done right",
+  "devDependencies": {
+    "ava": "*",
+    "coveralls": "^3.0.0",
+    "execa": "^0.9.0",
+    "flow-bin": "^0.68.0",
+    "import-fresh": "^2.0.0",
+    "matcha": "^0.7.0",
+    "nyc": "^11.0.2",
+    "resolve-from": "^4.0.0",
+    "typescript": "^2.5.3",
+    "xo": "*"
+  },
+  "engines": {
+    "node": ">=4"
+  },
+  "files": [
+    "index.js",
+    "templates.js",
+    "types/index.d.ts",
+    "index.js.flow"
+  ],
+  "homepage": "https://github.com/chalk/chalk#readme",
+  "keywords": [
+    "color",
+    "colour",
+    "colors",
+    "terminal",
+    "console",
+    "cli",
+    "string",
+    "str",
+    "ansi",
+    "style",
+    "styles",
+    "tty",
+    "formatting",
+    "rgb",
+    "256",
+    "shell",
+    "xterm",
+    "log",
+    "logging",
+    "command-line",
+    "text"
+  ],
+  "license": "MIT",
+  "name": "chalk",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/chalk/chalk.git"
+  },
+  "scripts": {
+    "bench": "matcha benchmark.js",
+    "coveralls": "nyc report --reporter=text-lcov | coveralls",
+    "test": "xo && tsc --project types && flow --max-warnings=0 && nyc ava"
+  },
+  "types": "types/index.d.ts",
+  "version": "2.4.2",
+  "xo": {
+    "envs": [
+      "node",
+      "mocha"
+    ],
+    "ignores": [
+      "test/_flow.js"
+    ]
+  }
+}
diff --git a/node_modules/chalk/readme.md b/node_modules/chalk/readme.md
new file mode 100644
index 0000000..d298e2c
--- /dev/null
+++ b/node_modules/chalk/readme.md
@@ -0,0 +1,314 @@
+<h1 align="center">
+	<br>
+	<br>
+	<img width="320" src="media/logo.svg" alt="Chalk">
+	<br>
+	<br>
+	<br>
+</h1>
+
+> Terminal string styling done right
+
+[![Build Status](https://travis-ci.org/chalk/chalk.svg?branch=master)](https://travis-ci.org/chalk/chalk) [![Coverage Status](https://coveralls.io/repos/github/chalk/chalk/badge.svg?branch=master)](https://coveralls.io/github/chalk/chalk?branch=master) [![](https://img.shields.io/badge/unicorn-approved-ff69b4.svg)](https://www.youtube.com/watch?v=9auOCbH5Ns4) [![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/xojs/xo) [![Mentioned in Awesome Node.js](https://awesome.re/mentioned-badge.svg)](https://github.com/sindresorhus/awesome-nodejs)
+
+### [See what's new in Chalk 2](https://github.com/chalk/chalk/releases/tag/v2.0.0)
+
+<img src="https://cdn.rawgit.com/chalk/ansi-styles/8261697c95bf34b6c7767e2cbe9941a851d59385/screenshot.svg" alt="" width="900">
+
+
+## Highlights
+
+- Expressive API
+- Highly performant
+- Ability to nest styles
+- [256/Truecolor color support](#256-and-truecolor-color-support)
+- Auto-detects color support
+- Doesn't extend `String.prototype`
+- Clean and focused
+- Actively maintained
+- [Used by ~23,000 packages](https://www.npmjs.com/browse/depended/chalk) as of December 31, 2017
+
+
+## Install
+
+```console
+$ npm install chalk
+```
+
+<a href="https://www.patreon.com/sindresorhus">
+	<img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" width="160">
+</a>
+
+
+## Usage
+
+```js
+const chalk = require('chalk');
+
+console.log(chalk.blue('Hello world!'));
+```
+
+Chalk comes with an easy to use composable API where you just chain and nest the styles you want.
+
+```js
+const chalk = require('chalk');
+const log = console.log;
+
+// Combine styled and normal strings
+log(chalk.blue('Hello') + ' World' + chalk.red('!'));
+
+// Compose multiple styles using the chainable API
+log(chalk.blue.bgRed.bold('Hello world!'));
+
+// Pass in multiple arguments
+log(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz'));
+
+// Nest styles
+log(chalk.red('Hello', chalk.underline.bgBlue('world') + '!'));
+
+// Nest styles of the same type even (color, underline, background)
+log(chalk.green(
+	'I am a green line ' +
+	chalk.blue.underline.bold('with a blue substring') +
+	' that becomes green again!'
+));
+
+// ES2015 template literal
+log(`
+CPU: ${chalk.red('90%')}
+RAM: ${chalk.green('40%')}
+DISK: ${chalk.yellow('70%')}
+`);
+
+// ES2015 tagged template literal
+log(chalk`
+CPU: {red ${cpu.totalPercent}%}
+RAM: {green ${ram.used / ram.total * 100}%}
+DISK: {rgb(255,131,0) ${disk.used / disk.total * 100}%}
+`);
+
+// Use RGB colors in terminal emulators that support it.
+log(chalk.keyword('orange')('Yay for orange colored text!'));
+log(chalk.rgb(123, 45, 67).underline('Underlined reddish color'));
+log(chalk.hex('#DEADED').bold('Bold gray!'));
+```
+
+Easily define your own themes:
+
+```js
+const chalk = require('chalk');
+
+const error = chalk.bold.red;
+const warning = chalk.keyword('orange');
+
+console.log(error('Error!'));
+console.log(warning('Warning!'));
+```
+
+Take advantage of console.log [string substitution](https://nodejs.org/docs/latest/api/console.html#console_console_log_data_args):
+
+```js
+const name = 'Sindre';
+console.log(chalk.green('Hello %s'), name);
+//=> 'Hello Sindre'
+```
+
+
+## API
+
+### chalk.`<style>[.<style>...](string, [string...])`
+
+Example: `chalk.red.bold.underline('Hello', 'world');`
+
+Chain [styles](#styles) and call the last one as a method with a string argument. Order doesn't matter, and later styles take precedent in case of a conflict. This simply means that `chalk.red.yellow.green` is equivalent to `chalk.green`.
+
+Multiple arguments will be separated by space.
+
+### chalk.enabled
+
+Color support is automatically detected, as is the level (see `chalk.level`). However, if you'd like to simply enable/disable Chalk, you can do so via the `.enabled` property.
+
+Chalk is enabled by default unless explicitly disabled via the constructor or `chalk.level` is `0`.
+
+If you need to change this in a reusable module, create a new instance:
+
+```js
+const ctx = new chalk.constructor({enabled: false});
+```
+
+### chalk.level
+
+Color support is automatically detected, but you can override it by setting the `level` property. You should however only do this in your own code as it applies globally to all Chalk consumers.
+
+If you need to change this in a reusable module, create a new instance:
+
+```js
+const ctx = new chalk.constructor({level: 0});
+```
+
+Levels are as follows:
+
+0. All colors disabled
+1. Basic color support (16 colors)
+2. 256 color support
+3. Truecolor support (16 million colors)
+
+### chalk.supportsColor
+
+Detect whether the terminal [supports color](https://github.com/chalk/supports-color). Used internally and handled for you, but exposed for convenience.
+
+Can be overridden by the user with the flags `--color` and `--no-color`. For situations where using `--color` is not possible, add the environment variable `FORCE_COLOR=1` to forcefully enable color or `FORCE_COLOR=0` to forcefully disable. The use of `FORCE_COLOR` overrides all other color support checks.
+
+Explicit 256/Truecolor mode can be enabled using the `--color=256` and `--color=16m` flags, respectively.
+
+
+## Styles
+
+### Modifiers
+
+- `reset`
+- `bold`
+- `dim`
+- `italic` *(Not widely supported)*
+- `underline`
+- `inverse`
+- `hidden`
+- `strikethrough` *(Not widely supported)*
+- `visible` (Text is emitted only if enabled)
+
+### Colors
+
+- `black`
+- `red`
+- `green`
+- `yellow`
+- `blue` *(On Windows the bright version is used since normal blue is illegible)*
+- `magenta`
+- `cyan`
+- `white`
+- `gray` ("bright black")
+- `redBright`
+- `greenBright`
+- `yellowBright`
+- `blueBright`
+- `magentaBright`
+- `cyanBright`
+- `whiteBright`
+
+### Background colors
+
+- `bgBlack`
+- `bgRed`
+- `bgGreen`
+- `bgYellow`
+- `bgBlue`
+- `bgMagenta`
+- `bgCyan`
+- `bgWhite`
+- `bgBlackBright`
+- `bgRedBright`
+- `bgGreenBright`
+- `bgYellowBright`
+- `bgBlueBright`
+- `bgMagentaBright`
+- `bgCyanBright`
+- `bgWhiteBright`
+
+
+## Tagged template literal
+
+Chalk can be used as a [tagged template literal](http://exploringjs.com/es6/ch_template-literals.html#_tagged-template-literals).
+
+```js
+const chalk = require('chalk');
+
+const miles = 18;
+const calculateFeet = miles => miles * 5280;
+
+console.log(chalk`
+  There are {bold 5280 feet} in a mile.
+  In {bold ${miles} miles}, there are {green.bold ${calculateFeet(miles)} feet}.
+`);
+```
+
+Blocks are delimited by an opening curly brace (`{`), a style, some content, and a closing curly brace (`}`).
+
+Template styles are chained exactly like normal Chalk styles. The following two statements are equivalent:
+
+```js
+console.log(chalk.bold.rgb(10, 100, 200)('Hello!'));
+console.log(chalk`{bold.rgb(10,100,200) Hello!}`);
+```
+
+Note that function styles (`rgb()`, `hsl()`, `keyword()`, etc.) may not contain spaces between parameters.
+
+All interpolated values (`` chalk`${foo}` ``) are converted to strings via the `.toString()` method. All curly braces (`{` and `}`) in interpolated value strings are escaped.
+
+
+## 256 and Truecolor color support
+
+Chalk supports 256 colors and [Truecolor](https://gist.github.com/XVilka/8346728) (16 million colors) on supported terminal apps.
+
+Colors are downsampled from 16 million RGB values to an ANSI color format that is supported by the terminal emulator (or by specifying `{level: n}` as a Chalk option). For example, Chalk configured to run at level 1 (basic color support) will downsample an RGB value of #FF0000 (red) to 31 (ANSI escape for red).
+
+Examples:
+
+- `chalk.hex('#DEADED').underline('Hello, world!')`
+- `chalk.keyword('orange')('Some orange text')`
+- `chalk.rgb(15, 100, 204).inverse('Hello!')`
+
+Background versions of these models are prefixed with `bg` and the first level of the module capitalized (e.g. `keyword` for foreground colors and `bgKeyword` for background colors).
+
+- `chalk.bgHex('#DEADED').underline('Hello, world!')`
+- `chalk.bgKeyword('orange')('Some orange text')`
+- `chalk.bgRgb(15, 100, 204).inverse('Hello!')`
+
+The following color models can be used:
+
+- [`rgb`](https://en.wikipedia.org/wiki/RGB_color_model) - Example: `chalk.rgb(255, 136, 0).bold('Orange!')`
+- [`hex`](https://en.wikipedia.org/wiki/Web_colors#Hex_triplet) - Example: `chalk.hex('#FF8800').bold('Orange!')`
+- [`keyword`](https://www.w3.org/wiki/CSS/Properties/color/keywords) (CSS keywords) - Example: `chalk.keyword('orange').bold('Orange!')`
+- [`hsl`](https://en.wikipedia.org/wiki/HSL_and_HSV) - Example: `chalk.hsl(32, 100, 50).bold('Orange!')`
+- [`hsv`](https://en.wikipedia.org/wiki/HSL_and_HSV) - Example: `chalk.hsv(32, 100, 100).bold('Orange!')`
+- [`hwb`](https://en.wikipedia.org/wiki/HWB_color_model)  - Example: `chalk.hwb(32, 0, 50).bold('Orange!')`
+- `ansi16`
+- `ansi256`
+
+
+## Windows
+
+If you're on Windows, do yourself a favor and use [`cmder`](http://cmder.net/) instead of `cmd.exe`.
+
+
+## Origin story
+
+[colors.js](https://github.com/Marak/colors.js) used to be the most popular string styling module, but it has serious deficiencies like extending `String.prototype` which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68) and the package is unmaintained. Although there are other packages, they either do too much or not enough. Chalk is a clean and focused alternative.
+
+
+## Related
+
+- [chalk-cli](https://github.com/chalk/chalk-cli) - CLI for this module
+- [ansi-styles](https://github.com/chalk/ansi-styles) - ANSI escape codes for styling strings in the terminal
+- [supports-color](https://github.com/chalk/supports-color) - Detect whether a terminal supports color
+- [strip-ansi](https://github.com/chalk/strip-ansi) - Strip ANSI escape codes
+- [strip-ansi-stream](https://github.com/chalk/strip-ansi-stream) - Strip ANSI escape codes from a stream
+- [has-ansi](https://github.com/chalk/has-ansi) - Check if a string has ANSI escape codes
+- [ansi-regex](https://github.com/chalk/ansi-regex) - Regular expression for matching ANSI escape codes
+- [wrap-ansi](https://github.com/chalk/wrap-ansi) - Wordwrap a string with ANSI escape codes
+- [slice-ansi](https://github.com/chalk/slice-ansi) - Slice a string with ANSI escape codes
+- [color-convert](https://github.com/qix-/color-convert) - Converts colors between different models
+- [chalk-animation](https://github.com/bokub/chalk-animation) - Animate strings in the terminal
+- [gradient-string](https://github.com/bokub/gradient-string) - Apply color gradients to strings
+- [chalk-pipe](https://github.com/LitoMore/chalk-pipe) - Create chalk style schemes with simpler style strings
+- [terminal-link](https://github.com/sindresorhus/terminal-link) - Create clickable links in the terminal
+
+
+## Maintainers
+
+- [Sindre Sorhus](https://github.com/sindresorhus)
+- [Josh Junon](https://github.com/qix-)
+
+
+## License
+
+MIT
diff --git a/node_modules/chalk/templates.js b/node_modules/chalk/templates.js
new file mode 100644
index 0000000..dbdf9b2
--- /dev/null
+++ b/node_modules/chalk/templates.js
@@ -0,0 +1,128 @@
+'use strict';
+const TEMPLATE_REGEX = /(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi;
+const STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g;
+const STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/;
+const ESCAPE_REGEX = /\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi;
+
+const ESCAPES = new Map([
+	['n', '\n'],
+	['r', '\r'],
+	['t', '\t'],
+	['b', '\b'],
+	['f', '\f'],
+	['v', '\v'],
+	['0', '\0'],
+	['\\', '\\'],
+	['e', '\u001B'],
+	['a', '\u0007']
+]);
+
+function unescape(c) {
+	if ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) {
+		return String.fromCharCode(parseInt(c.slice(1), 16));
+	}
+
+	return ESCAPES.get(c) || c;
+}
+
+function parseArguments(name, args) {
+	const results = [];
+	const chunks = args.trim().split(/\s*,\s*/g);
+	let matches;
+
+	for (const chunk of chunks) {
+		if (!isNaN(chunk)) {
+			results.push(Number(chunk));
+		} else if ((matches = chunk.match(STRING_REGEX))) {
+			results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr));
+		} else {
+			throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);
+		}
+	}
+
+	return results;
+}
+
+function parseStyle(style) {
+	STYLE_REGEX.lastIndex = 0;
+
+	const results = [];
+	let matches;
+
+	while ((matches = STYLE_REGEX.exec(style)) !== null) {
+		const name = matches[1];
+
+		if (matches[2]) {
+			const args = parseArguments(name, matches[2]);
+			results.push([name].concat(args));
+		} else {
+			results.push([name]);
+		}
+	}
+
+	return results;
+}
+
+function buildStyle(chalk, styles) {
+	const enabled = {};
+
+	for (const layer of styles) {
+		for (const style of layer.styles) {
+			enabled[style[0]] = layer.inverse ? null : style.slice(1);
+		}
+	}
+
+	let current = chalk;
+	for (const styleName of Object.keys(enabled)) {
+		if (Array.isArray(enabled[styleName])) {
+			if (!(styleName in current)) {
+				throw new Error(`Unknown Chalk style: ${styleName}`);
+			}
+
+			if (enabled[styleName].length > 0) {
+				current = current[styleName].apply(current, enabled[styleName]);
+			} else {
+				current = current[styleName];
+			}
+		}
+	}
+
+	return current;
+}
+
+module.exports = (chalk, tmp) => {
+	const styles = [];
+	const chunks = [];
+	let chunk = [];
+
+	// eslint-disable-next-line max-params
+	tmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => {
+		if (escapeChar) {
+			chunk.push(unescape(escapeChar));
+		} else if (style) {
+			const str = chunk.join('');
+			chunk = [];
+			chunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));
+			styles.push({inverse, styles: parseStyle(style)});
+		} else if (close) {
+			if (styles.length === 0) {
+				throw new Error('Found extraneous } in Chalk template literal');
+			}
+
+			chunks.push(buildStyle(chalk, styles)(chunk.join('')));
+			chunk = [];
+			styles.pop();
+		} else {
+			chunk.push(chr);
+		}
+	});
+
+	chunks.push(chunk.join(''));
+
+	if (styles.length > 0) {
+		const errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`;
+		throw new Error(errMsg);
+	}
+
+	return chunks.join('');
+};
diff --git a/node_modules/chalk/types/index.d.ts b/node_modules/chalk/types/index.d.ts
new file mode 100644
index 0000000..b4e4dc5
--- /dev/null
+++ b/node_modules/chalk/types/index.d.ts
@@ -0,0 +1,97 @@
+// Type definitions for Chalk
+// Definitions by: Thomas Sauer <https://github.com/t-sauer>
+
+export const enum Level {
+	None = 0,
+	Basic = 1,
+	Ansi256 = 2,
+	TrueColor = 3
+}
+
+export interface ChalkOptions {
+	enabled?: boolean;
+	level?: Level;
+}
+
+export interface ChalkConstructor {
+	new (options?: ChalkOptions): Chalk;
+	(options?: ChalkOptions): Chalk;
+}
+
+export interface ColorSupport {
+	level: Level;
+	hasBasic: boolean;
+	has256: boolean;
+	has16m: boolean;
+}
+
+export interface Chalk {
+	(...text: string[]): string;
+	(text: TemplateStringsArray, ...placeholders: string[]): string;
+	constructor: ChalkConstructor;
+	enabled: boolean;
+	level: Level;
+	rgb(r: number, g: number, b: number): this;
+	hsl(h: number, s: number, l: number): this;
+	hsv(h: number, s: number, v: number): this;
+	hwb(h: number, w: number, b: number): this;
+	bgHex(color: string): this;
+	bgKeyword(color: string): this;
+	bgRgb(r: number, g: number, b: number): this;
+	bgHsl(h: number, s: number, l: number): this;
+	bgHsv(h: number, s: number, v: number): this;
+	bgHwb(h: number, w: number, b: number): this;
+	hex(color: string): this;
+	keyword(color: string): this;
+
+	readonly reset: this;
+	readonly bold: this;
+	readonly dim: this;
+	readonly italic: this;
+	readonly underline: this;
+	readonly inverse: this;
+	readonly hidden: this;
+	readonly strikethrough: this;
+
+	readonly visible: this;
+
+	readonly black: this;
+	readonly red: this;
+	readonly green: this;
+	readonly yellow: this;
+	readonly blue: this;
+	readonly magenta: this;
+	readonly cyan: this;
+	readonly white: this;
+	readonly gray: this;
+	readonly grey: this;
+	readonly blackBright: this;
+	readonly redBright: this;
+	readonly greenBright: this;
+	readonly yellowBright: this;
+	readonly blueBright: this;
+	readonly magentaBright: this;
+	readonly cyanBright: this;
+	readonly whiteBright: this;
+
+	readonly bgBlack: this;
+	readonly bgRed: this;
+	readonly bgGreen: this;
+	readonly bgYellow: this;
+	readonly bgBlue: this;
+	readonly bgMagenta: this;
+	readonly bgCyan: this;
+	readonly bgWhite: this;
+	readonly bgBlackBright: this;
+	readonly bgRedBright: this;
+	readonly bgGreenBright: this;
+	readonly bgYellowBright: this;
+	readonly bgBlueBright: this;
+	readonly bgMagentaBright: this;
+	readonly bgCyanBright: this;
+	readonly bgWhiteBright: this;
+}
+
+declare const chalk: Chalk & { supportsColor: ColorSupport };
+
+export default chalk
diff --git a/node_modules/color-convert/CHANGELOG.md b/node_modules/color-convert/CHANGELOG.md
new file mode 100644
index 0000000..0a7bce4
--- /dev/null
+++ b/node_modules/color-convert/CHANGELOG.md
@@ -0,0 +1,54 @@
+# 1.0.0 - 2016-01-07
+
+- Removed: unused speed test
+- Added: Automatic routing between previously unsupported conversions
+([#27](https://github.com/Qix-/color-convert/pull/27))
+- Removed: `xxx2xxx()` and `xxx2xxxRaw()` functions
+([#27](https://github.com/Qix-/color-convert/pull/27))
+- Removed: `convert()` class
+([#27](https://github.com/Qix-/color-convert/pull/27))
+- Changed: all functions to lookup dictionary
+([#27](https://github.com/Qix-/color-convert/pull/27))
+- Changed: `ansi` to `ansi256`
+([#27](https://github.com/Qix-/color-convert/pull/27))
+- Fixed: argument grouping for functions requiring only one argument
+([#27](https://github.com/Qix-/color-convert/pull/27))
+
+# 0.6.0 - 2015-07-23
+
+- Added: methods to handle
+[ANSI](https://en.wikipedia.org/wiki/ANSI_escape_code#Colors) 16/256 colors:
+  - rgb2ansi16
+  - rgb2ansi
+  - hsl2ansi16
+  - hsl2ansi
+  - hsv2ansi16
+  - hsv2ansi
+  - hwb2ansi16
+  - hwb2ansi
+  - cmyk2ansi16
+  - cmyk2ansi
+  - keyword2ansi16
+  - keyword2ansi
+  - ansi162rgb
+  - ansi162hsl
+  - ansi162hsv
+  - ansi162hwb
+  - ansi162cmyk
+  - ansi162keyword
+  - ansi2rgb
+  - ansi2hsl
+  - ansi2hsv
+  - ansi2hwb
+  - ansi2cmyk
+  - ansi2keyword
+([#18](https://github.com/harthur/color-convert/pull/18))
+
+# 0.5.3 - 2015-06-02
+
+- Fixed: hsl2hsv does not return `NaN` anymore when using `[0,0,0]`
+([#15](https://github.com/harthur/color-convert/issues/15))
+
+---
+
+Check out commit logs for older releases
diff --git a/node_modules/color-convert/LICENSE b/node_modules/color-convert/LICENSE
new file mode 100644
index 0000000..5b4c386
--- /dev/null
+++ b/node_modules/color-convert/LICENSE
@@ -0,0 +1,21 @@
+Copyright (c) 2011-2016 Heather Arthur <fayearthur@gmail.com>
+
+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:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+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.
+
diff --git a/node_modules/color-convert/README.md b/node_modules/color-convert/README.md
new file mode 100644
index 0000000..d4b08fc
--- /dev/null
+++ b/node_modules/color-convert/README.md
@@ -0,0 +1,68 @@
+# color-convert
+
+[![Build Status](https://travis-ci.org/Qix-/color-convert.svg?branch=master)](https://travis-ci.org/Qix-/color-convert)
+
+Color-convert is a color conversion library for JavaScript and node.
+It converts all ways between `rgb`, `hsl`, `hsv`, `hwb`, `cmyk`, `ansi`, `ansi16`, `hex` strings, and CSS `keyword`s (will round to closest):
+
+```js
+var convert = require('color-convert');
+
+convert.rgb.hsl(140, 200, 100);             // [96, 48, 59]
+convert.keyword.rgb('blue');                // [0, 0, 255]
+
+var rgbChannels = convert.rgb.channels;     // 3
+var cmykChannels = convert.cmyk.channels;   // 4
+var ansiChannels = convert.ansi16.channels; // 1
+```
+
+# Install
+
+```console
+$ npm install color-convert
+```
+
+# API
+
+Simply get the property of the _from_ and _to_ conversion that you're looking for.
+
+All functions have a rounded and unrounded variant. By default, return values are rounded. To get the unrounded (raw) results, simply tack on `.raw` to the function.
+
+All 'from' functions have a hidden property called `.channels` that indicates the number of channels the function expects (not including alpha).
+
+```js
+var convert = require('color-convert');
+
+// Hex to LAB
+convert.hex.lab('DEADBF');         // [ 76, 21, -2 ]
+convert.hex.lab.raw('DEADBF');     // [ 75.56213190997677, 20.653827952644754, -2.290532499330533 ]
+
+// RGB to CMYK
+convert.rgb.cmyk(167, 255, 4);     // [ 35, 0, 98, 0 ]
+convert.rgb.cmyk.raw(167, 255, 4); // [ 34.509803921568626, 0, 98.43137254901961, 0 ]
+```
+
+### Arrays
+All functions that accept multiple arguments also support passing an array.
+
+Note that this does **not** apply to functions that convert from a color that only requires one value (e.g. `keyword`, `ansi256`, `hex`, etc.)
+
+```js
+var convert = require('color-convert');
+
+convert.rgb.hex(123, 45, 67);      // '7B2D43'
+convert.rgb.hex([123, 45, 67]);    // '7B2D43'
+```
+
+## Routing
+
+Conversions that don't have an _explicitly_ defined conversion (in [conversions.js](conversions.js)), but can be converted by means of sub-conversions (e.g. XYZ -> **RGB** -> CMYK), are automatically routed together. This allows just about any color model supported by `color-convert` to be converted to any other model, so …
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants