spec-cat 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/.output/nitro.json +1 -1
  2. package/.output/public/_nuxt/{Bqlz6CoK.js → BE_75kPa.js} +1 -1
  3. package/.output/public/_nuxt/{B2wdmh_w.js → BJ7m4fRW.js} +53 -53
  4. package/.output/public/_nuxt/{KNuzSjk0.js → CCNYUZ9m.js} +1 -1
  5. package/.output/public/_nuxt/{BvosqTnx.js → DGtcdWVl.js} +1 -1
  6. package/.output/public/_nuxt/DxEx-kFx.js +1 -0
  7. package/.output/public/_nuxt/{BwcbSlWF.js → DyMq_cQC.js} +2 -2
  8. package/.output/public/_nuxt/{COTT6rNZ.js → _cj5lOdZ.js} +1 -1
  9. package/.output/public/_nuxt/builds/latest.json +1 -1
  10. package/.output/public/_nuxt/builds/meta/3a0aacc1-0bd1-4d15-8b8a-3cee48cbfc69.json +1 -0
  11. package/.output/public/_nuxt/{BUOk7wkI.js → gDut6QrP.js} +1 -1
  12. package/.output/public/_nuxt/{C5wk2twv.js → nJpWpjzg.js} +1 -1
  13. package/.output/public/_nuxt/{DBab5Zcv.js → waQ9fPC1.js} +1 -1
  14. package/.output/server/chunks/_/codexProvider.mjs +64 -18
  15. package/.output/server/chunks/_/codexProvider.mjs.map +1 -1
  16. package/.output/server/chunks/build/client.precomputed.mjs +1 -1
  17. package/.output/server/chunks/build/client.precomputed.mjs.map +1 -1
  18. package/.output/server/chunks/nitro/nitro.mjs +702 -703
  19. package/.output/server/chunks/routes/_ws.mjs +37 -7
  20. package/.output/server/chunks/routes/_ws.mjs.map +1 -1
  21. package/.output/server/node_modules/@huggingface/jinja/dist/index.js +1572 -0
  22. package/.output/server/node_modules/@huggingface/jinja/package.json +55 -0
  23. package/.output/server/node_modules/@xenova/transformers/package.json +84 -0
  24. package/.output/server/node_modules/@xenova/transformers/src/backends/onnx.js +50 -0
  25. package/.output/server/node_modules/@xenova/transformers/src/configs.js +107 -0
  26. package/.output/server/node_modules/@xenova/transformers/src/env.js +128 -0
  27. package/.output/server/node_modules/@xenova/transformers/src/models.js +6267 -0
  28. package/.output/server/node_modules/@xenova/transformers/src/pipelines.js +3287 -0
  29. package/.output/server/node_modules/@xenova/transformers/src/processors.js +2248 -0
  30. package/.output/server/node_modules/@xenova/transformers/src/tokenizers.js +4479 -0
  31. package/.output/server/node_modules/@xenova/transformers/src/transformers.js +24 -0
  32. package/.output/server/node_modules/@xenova/transformers/src/utils/audio.js +672 -0
  33. package/.output/server/node_modules/@xenova/transformers/src/utils/core.js +175 -0
  34. package/.output/server/node_modules/@xenova/transformers/src/utils/data-structures.js +415 -0
  35. package/.output/server/node_modules/@xenova/transformers/src/utils/generation.js +873 -0
  36. package/.output/server/node_modules/@xenova/transformers/src/utils/hub.js +658 -0
  37. package/.output/server/node_modules/@xenova/transformers/src/utils/image.js +731 -0
  38. package/.output/server/node_modules/@xenova/transformers/src/utils/maths.js +985 -0
  39. package/.output/server/node_modules/@xenova/transformers/src/utils/tensor.js +1239 -0
  40. package/.output/server/node_modules/color/index.js +496 -0
  41. package/.output/server/node_modules/color/package.json +47 -0
  42. package/.output/server/node_modules/color-convert/conversions.js +839 -0
  43. package/.output/server/node_modules/color-convert/index.js +81 -0
  44. package/.output/server/node_modules/color-convert/package.json +48 -0
  45. package/.output/server/node_modules/color-convert/route.js +97 -0
  46. package/.output/server/node_modules/color-name/index.js +152 -0
  47. package/.output/server/node_modules/color-name/package.json +28 -0
  48. package/.output/server/node_modules/color-string/index.js +242 -0
  49. package/.output/server/node_modules/color-string/package.json +39 -0
  50. package/.output/server/node_modules/detect-libc/lib/detect-libc.js +313 -0
  51. package/.output/server/node_modules/detect-libc/lib/elf.js +39 -0
  52. package/.output/server/node_modules/detect-libc/lib/filesystem.js +51 -0
  53. package/.output/server/node_modules/detect-libc/lib/process.js +24 -0
  54. package/.output/server/node_modules/detect-libc/package.json +44 -0
  55. package/.output/server/node_modules/is-arrayish/index.js +9 -0
  56. package/.output/server/node_modules/is-arrayish/package.json +45 -0
  57. package/.output/server/node_modules/onnxruntime-common/dist/ort-common.node.js +7 -0
  58. package/.output/server/node_modules/onnxruntime-common/package.json +31 -0
  59. package/.output/server/node_modules/onnxruntime-node/bin/napi-v3/darwin/arm64/onnxruntime_binding.node +0 -0
  60. package/.output/server/node_modules/onnxruntime-node/bin/napi-v3/darwin/x64/onnxruntime_binding.node +0 -0
  61. package/.output/server/node_modules/onnxruntime-node/bin/napi-v3/linux/arm64/libonnxruntime.so.1.14.0 +0 -0
  62. package/.output/server/node_modules/onnxruntime-node/bin/napi-v3/linux/arm64/onnxruntime_binding.node +0 -0
  63. package/.output/server/node_modules/onnxruntime-node/bin/napi-v3/linux/x64/libonnxruntime.so.1.14.0 +0 -0
  64. package/.output/server/node_modules/onnxruntime-node/bin/napi-v3/linux/x64/onnxruntime_binding.node +0 -0
  65. package/.output/server/node_modules/onnxruntime-node/bin/napi-v3/win32/arm64/onnxruntime_binding.node +0 -0
  66. package/.output/server/node_modules/onnxruntime-node/bin/napi-v3/win32/x64/onnxruntime_binding.node +0 -0
  67. package/.output/server/node_modules/onnxruntime-node/dist/backend.js +75 -0
  68. package/.output/server/node_modules/onnxruntime-node/dist/binding.js +10 -0
  69. package/.output/server/node_modules/onnxruntime-node/dist/index.js +23 -0
  70. package/.output/server/node_modules/onnxruntime-node/package.json +58 -0
  71. package/.output/server/node_modules/onnxruntime-web/dist/ort-web.node.js +7 -0
  72. package/.output/server/node_modules/onnxruntime-web/package.json +84 -0
  73. package/.output/server/node_modules/semver/classes/semver.js +333 -0
  74. package/.output/server/node_modules/semver/functions/coerce.js +62 -0
  75. package/.output/server/node_modules/semver/functions/compare.js +7 -0
  76. package/.output/server/node_modules/semver/functions/gte.js +5 -0
  77. package/.output/server/node_modules/semver/functions/parse.js +18 -0
  78. package/.output/server/node_modules/semver/internal/constants.js +37 -0
  79. package/.output/server/node_modules/semver/internal/debug.js +11 -0
  80. package/.output/server/node_modules/semver/internal/identifiers.js +29 -0
  81. package/.output/server/node_modules/semver/internal/parse-options.js +17 -0
  82. package/.output/server/node_modules/semver/internal/re.js +223 -0
  83. package/.output/server/node_modules/semver/package.json +78 -0
  84. package/.output/server/node_modules/sharp/build/Release/sharp-linux-x64.node +0 -0
  85. package/.output/server/node_modules/sharp/lib/channel.js +174 -0
  86. package/.output/server/node_modules/sharp/lib/colour.js +184 -0
  87. package/.output/server/node_modules/sharp/lib/composite.js +210 -0
  88. package/.output/server/node_modules/sharp/lib/constructor.js +439 -0
  89. package/.output/server/node_modules/sharp/lib/index.js +16 -0
  90. package/.output/server/node_modules/sharp/lib/input.js +631 -0
  91. package/.output/server/node_modules/sharp/lib/is.js +155 -0
  92. package/.output/server/node_modules/sharp/lib/libvips.js +140 -0
  93. package/.output/server/node_modules/sharp/lib/operation.js +919 -0
  94. package/.output/server/node_modules/sharp/lib/output.js +1413 -0
  95. package/.output/server/node_modules/sharp/lib/platform.js +30 -0
  96. package/.output/server/node_modules/sharp/lib/resize.js +582 -0
  97. package/.output/server/node_modules/sharp/lib/sharp.js +38 -0
  98. package/.output/server/node_modules/sharp/lib/utility.js +287 -0
  99. package/.output/server/node_modules/sharp/package.json +204 -0
  100. package/.output/server/node_modules/sharp/vendor/8.14.5/linux-x64/THIRD-PARTY-NOTICES.md +43 -0
  101. package/.output/server/node_modules/sharp/vendor/8.14.5/linux-x64/lib/libvips-cpp.so.42 +0 -0
  102. package/.output/server/node_modules/sharp/vendor/8.14.5/linux-x64/platform.json +1 -0
  103. package/.output/server/node_modules/sharp/vendor/8.14.5/linux-x64/versions.json +31 -0
  104. package/.output/server/node_modules/simple-swizzle/index.js +29 -0
  105. package/.output/server/node_modules/simple-swizzle/package.json +36 -0
  106. package/.output/server/package.json +15 -1
  107. package/README.md +2 -0
  108. package/package.json +12 -19
  109. package/.output/public/_nuxt/5FxpIoe_.js +0 -1
  110. package/.output/public/_nuxt/builds/meta/21578a05-1b7e-4847-a8ff-7480800ea4a6.json +0 -1
@@ -0,0 +1,81 @@
1
+ const conversions = require('./conversions');
2
+ const route = require('./route');
3
+
4
+ const convert = {};
5
+
6
+ const models = Object.keys(conversions);
7
+
8
+ function wrapRaw(fn) {
9
+ const wrappedFn = function (...args) {
10
+ const arg0 = args[0];
11
+ if (arg0 === undefined || arg0 === null) {
12
+ return arg0;
13
+ }
14
+
15
+ if (arg0.length > 1) {
16
+ args = arg0;
17
+ }
18
+
19
+ return fn(args);
20
+ };
21
+
22
+ // Preserve .conversion property if there is one
23
+ if ('conversion' in fn) {
24
+ wrappedFn.conversion = fn.conversion;
25
+ }
26
+
27
+ return wrappedFn;
28
+ }
29
+
30
+ function wrapRounded(fn) {
31
+ const wrappedFn = function (...args) {
32
+ const arg0 = args[0];
33
+
34
+ if (arg0 === undefined || arg0 === null) {
35
+ return arg0;
36
+ }
37
+
38
+ if (arg0.length > 1) {
39
+ args = arg0;
40
+ }
41
+
42
+ const result = fn(args);
43
+
44
+ // We're assuming the result is an array here.
45
+ // see notice in conversions.js; don't use box types
46
+ // in conversion functions.
47
+ if (typeof result === 'object') {
48
+ for (let len = result.length, i = 0; i < len; i++) {
49
+ result[i] = Math.round(result[i]);
50
+ }
51
+ }
52
+
53
+ return result;
54
+ };
55
+
56
+ // Preserve .conversion property if there is one
57
+ if ('conversion' in fn) {
58
+ wrappedFn.conversion = fn.conversion;
59
+ }
60
+
61
+ return wrappedFn;
62
+ }
63
+
64
+ models.forEach(fromModel => {
65
+ convert[fromModel] = {};
66
+
67
+ Object.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});
68
+ Object.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});
69
+
70
+ const routes = route(fromModel);
71
+ const routeModels = Object.keys(routes);
72
+
73
+ routeModels.forEach(toModel => {
74
+ const fn = routes[toModel];
75
+
76
+ convert[fromModel][toModel] = wrapRounded(fn);
77
+ convert[fromModel][toModel].raw = wrapRaw(fn);
78
+ });
79
+ });
80
+
81
+ module.exports = convert;
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "color-convert",
3
+ "description": "Plain color conversion functions",
4
+ "version": "2.0.1",
5
+ "author": "Heather Arthur <fayearthur@gmail.com>",
6
+ "license": "MIT",
7
+ "repository": "Qix-/color-convert",
8
+ "scripts": {
9
+ "pretest": "xo",
10
+ "test": "node test/basic.js"
11
+ },
12
+ "engines": {
13
+ "node": ">=7.0.0"
14
+ },
15
+ "keywords": [
16
+ "color",
17
+ "colour",
18
+ "convert",
19
+ "converter",
20
+ "conversion",
21
+ "rgb",
22
+ "hsl",
23
+ "hsv",
24
+ "hwb",
25
+ "cmyk",
26
+ "ansi",
27
+ "ansi16"
28
+ ],
29
+ "files": [
30
+ "index.js",
31
+ "conversions.js",
32
+ "route.js"
33
+ ],
34
+ "xo": {
35
+ "rules": {
36
+ "default-case": 0,
37
+ "no-inline-comments": 0,
38
+ "operator-linebreak": 0
39
+ }
40
+ },
41
+ "devDependencies": {
42
+ "chalk": "^2.4.2",
43
+ "xo": "^0.24.0"
44
+ },
45
+ "dependencies": {
46
+ "color-name": "~1.1.4"
47
+ }
48
+ }
@@ -0,0 +1,97 @@
1
+ const conversions = require('./conversions');
2
+
3
+ /*
4
+ This function routes a model to all other models.
5
+
6
+ all functions that are routed have a property `.conversion` attached
7
+ to the returned synthetic function. This property is an array
8
+ of strings, each with the steps in between the 'from' and 'to'
9
+ color models (inclusive).
10
+
11
+ conversions that are not possible simply are not included.
12
+ */
13
+
14
+ function buildGraph() {
15
+ const graph = {};
16
+ // https://jsperf.com/object-keys-vs-for-in-with-closure/3
17
+ const models = Object.keys(conversions);
18
+
19
+ for (let len = models.length, i = 0; i < len; i++) {
20
+ graph[models[i]] = {
21
+ // http://jsperf.com/1-vs-infinity
22
+ // micro-opt, but this is simple.
23
+ distance: -1,
24
+ parent: null
25
+ };
26
+ }
27
+
28
+ return graph;
29
+ }
30
+
31
+ // https://en.wikipedia.org/wiki/Breadth-first_search
32
+ function deriveBFS(fromModel) {
33
+ const graph = buildGraph();
34
+ const queue = [fromModel]; // Unshift -> queue -> pop
35
+
36
+ graph[fromModel].distance = 0;
37
+
38
+ while (queue.length) {
39
+ const current = queue.pop();
40
+ const adjacents = Object.keys(conversions[current]);
41
+
42
+ for (let len = adjacents.length, i = 0; i < len; i++) {
43
+ const adjacent = adjacents[i];
44
+ const node = graph[adjacent];
45
+
46
+ if (node.distance === -1) {
47
+ node.distance = graph[current].distance + 1;
48
+ node.parent = current;
49
+ queue.unshift(adjacent);
50
+ }
51
+ }
52
+ }
53
+
54
+ return graph;
55
+ }
56
+
57
+ function link(from, to) {
58
+ return function (args) {
59
+ return to(from(args));
60
+ };
61
+ }
62
+
63
+ function wrapConversion(toModel, graph) {
64
+ const path = [graph[toModel].parent, toModel];
65
+ let fn = conversions[graph[toModel].parent][toModel];
66
+
67
+ let cur = graph[toModel].parent;
68
+ while (graph[cur].parent) {
69
+ path.unshift(graph[cur].parent);
70
+ fn = link(conversions[graph[cur].parent][cur], fn);
71
+ cur = graph[cur].parent;
72
+ }
73
+
74
+ fn.conversion = path;
75
+ return fn;
76
+ }
77
+
78
+ module.exports = function (fromModel) {
79
+ const graph = deriveBFS(fromModel);
80
+ const conversion = {};
81
+
82
+ const models = Object.keys(graph);
83
+ for (let len = models.length, i = 0; i < len; i++) {
84
+ const toModel = models[i];
85
+ const node = graph[toModel];
86
+
87
+ if (node.parent === null) {
88
+ // No possible conversion, or this node is the source model.
89
+ continue;
90
+ }
91
+
92
+ conversion[toModel] = wrapConversion(toModel, graph);
93
+ }
94
+
95
+ return conversion;
96
+ };
97
+
@@ -0,0 +1,152 @@
1
+ 'use strict'
2
+
3
+ module.exports = {
4
+ "aliceblue": [240, 248, 255],
5
+ "antiquewhite": [250, 235, 215],
6
+ "aqua": [0, 255, 255],
7
+ "aquamarine": [127, 255, 212],
8
+ "azure": [240, 255, 255],
9
+ "beige": [245, 245, 220],
10
+ "bisque": [255, 228, 196],
11
+ "black": [0, 0, 0],
12
+ "blanchedalmond": [255, 235, 205],
13
+ "blue": [0, 0, 255],
14
+ "blueviolet": [138, 43, 226],
15
+ "brown": [165, 42, 42],
16
+ "burlywood": [222, 184, 135],
17
+ "cadetblue": [95, 158, 160],
18
+ "chartreuse": [127, 255, 0],
19
+ "chocolate": [210, 105, 30],
20
+ "coral": [255, 127, 80],
21
+ "cornflowerblue": [100, 149, 237],
22
+ "cornsilk": [255, 248, 220],
23
+ "crimson": [220, 20, 60],
24
+ "cyan": [0, 255, 255],
25
+ "darkblue": [0, 0, 139],
26
+ "darkcyan": [0, 139, 139],
27
+ "darkgoldenrod": [184, 134, 11],
28
+ "darkgray": [169, 169, 169],
29
+ "darkgreen": [0, 100, 0],
30
+ "darkgrey": [169, 169, 169],
31
+ "darkkhaki": [189, 183, 107],
32
+ "darkmagenta": [139, 0, 139],
33
+ "darkolivegreen": [85, 107, 47],
34
+ "darkorange": [255, 140, 0],
35
+ "darkorchid": [153, 50, 204],
36
+ "darkred": [139, 0, 0],
37
+ "darksalmon": [233, 150, 122],
38
+ "darkseagreen": [143, 188, 143],
39
+ "darkslateblue": [72, 61, 139],
40
+ "darkslategray": [47, 79, 79],
41
+ "darkslategrey": [47, 79, 79],
42
+ "darkturquoise": [0, 206, 209],
43
+ "darkviolet": [148, 0, 211],
44
+ "deeppink": [255, 20, 147],
45
+ "deepskyblue": [0, 191, 255],
46
+ "dimgray": [105, 105, 105],
47
+ "dimgrey": [105, 105, 105],
48
+ "dodgerblue": [30, 144, 255],
49
+ "firebrick": [178, 34, 34],
50
+ "floralwhite": [255, 250, 240],
51
+ "forestgreen": [34, 139, 34],
52
+ "fuchsia": [255, 0, 255],
53
+ "gainsboro": [220, 220, 220],
54
+ "ghostwhite": [248, 248, 255],
55
+ "gold": [255, 215, 0],
56
+ "goldenrod": [218, 165, 32],
57
+ "gray": [128, 128, 128],
58
+ "green": [0, 128, 0],
59
+ "greenyellow": [173, 255, 47],
60
+ "grey": [128, 128, 128],
61
+ "honeydew": [240, 255, 240],
62
+ "hotpink": [255, 105, 180],
63
+ "indianred": [205, 92, 92],
64
+ "indigo": [75, 0, 130],
65
+ "ivory": [255, 255, 240],
66
+ "khaki": [240, 230, 140],
67
+ "lavender": [230, 230, 250],
68
+ "lavenderblush": [255, 240, 245],
69
+ "lawngreen": [124, 252, 0],
70
+ "lemonchiffon": [255, 250, 205],
71
+ "lightblue": [173, 216, 230],
72
+ "lightcoral": [240, 128, 128],
73
+ "lightcyan": [224, 255, 255],
74
+ "lightgoldenrodyellow": [250, 250, 210],
75
+ "lightgray": [211, 211, 211],
76
+ "lightgreen": [144, 238, 144],
77
+ "lightgrey": [211, 211, 211],
78
+ "lightpink": [255, 182, 193],
79
+ "lightsalmon": [255, 160, 122],
80
+ "lightseagreen": [32, 178, 170],
81
+ "lightskyblue": [135, 206, 250],
82
+ "lightslategray": [119, 136, 153],
83
+ "lightslategrey": [119, 136, 153],
84
+ "lightsteelblue": [176, 196, 222],
85
+ "lightyellow": [255, 255, 224],
86
+ "lime": [0, 255, 0],
87
+ "limegreen": [50, 205, 50],
88
+ "linen": [250, 240, 230],
89
+ "magenta": [255, 0, 255],
90
+ "maroon": [128, 0, 0],
91
+ "mediumaquamarine": [102, 205, 170],
92
+ "mediumblue": [0, 0, 205],
93
+ "mediumorchid": [186, 85, 211],
94
+ "mediumpurple": [147, 112, 219],
95
+ "mediumseagreen": [60, 179, 113],
96
+ "mediumslateblue": [123, 104, 238],
97
+ "mediumspringgreen": [0, 250, 154],
98
+ "mediumturquoise": [72, 209, 204],
99
+ "mediumvioletred": [199, 21, 133],
100
+ "midnightblue": [25, 25, 112],
101
+ "mintcream": [245, 255, 250],
102
+ "mistyrose": [255, 228, 225],
103
+ "moccasin": [255, 228, 181],
104
+ "navajowhite": [255, 222, 173],
105
+ "navy": [0, 0, 128],
106
+ "oldlace": [253, 245, 230],
107
+ "olive": [128, 128, 0],
108
+ "olivedrab": [107, 142, 35],
109
+ "orange": [255, 165, 0],
110
+ "orangered": [255, 69, 0],
111
+ "orchid": [218, 112, 214],
112
+ "palegoldenrod": [238, 232, 170],
113
+ "palegreen": [152, 251, 152],
114
+ "paleturquoise": [175, 238, 238],
115
+ "palevioletred": [219, 112, 147],
116
+ "papayawhip": [255, 239, 213],
117
+ "peachpuff": [255, 218, 185],
118
+ "peru": [205, 133, 63],
119
+ "pink": [255, 192, 203],
120
+ "plum": [221, 160, 221],
121
+ "powderblue": [176, 224, 230],
122
+ "purple": [128, 0, 128],
123
+ "rebeccapurple": [102, 51, 153],
124
+ "red": [255, 0, 0],
125
+ "rosybrown": [188, 143, 143],
126
+ "royalblue": [65, 105, 225],
127
+ "saddlebrown": [139, 69, 19],
128
+ "salmon": [250, 128, 114],
129
+ "sandybrown": [244, 164, 96],
130
+ "seagreen": [46, 139, 87],
131
+ "seashell": [255, 245, 238],
132
+ "sienna": [160, 82, 45],
133
+ "silver": [192, 192, 192],
134
+ "skyblue": [135, 206, 235],
135
+ "slateblue": [106, 90, 205],
136
+ "slategray": [112, 128, 144],
137
+ "slategrey": [112, 128, 144],
138
+ "snow": [255, 250, 250],
139
+ "springgreen": [0, 255, 127],
140
+ "steelblue": [70, 130, 180],
141
+ "tan": [210, 180, 140],
142
+ "teal": [0, 128, 128],
143
+ "thistle": [216, 191, 216],
144
+ "tomato": [255, 99, 71],
145
+ "turquoise": [64, 224, 208],
146
+ "violet": [238, 130, 238],
147
+ "wheat": [245, 222, 179],
148
+ "white": [255, 255, 255],
149
+ "whitesmoke": [245, 245, 245],
150
+ "yellow": [255, 255, 0],
151
+ "yellowgreen": [154, 205, 50]
152
+ };
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "color-name",
3
+ "version": "1.1.4",
4
+ "description": "A list of color names and its values",
5
+ "main": "index.js",
6
+ "files": [
7
+ "index.js"
8
+ ],
9
+ "scripts": {
10
+ "test": "node test.js"
11
+ },
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git@github.com:colorjs/color-name.git"
15
+ },
16
+ "keywords": [
17
+ "color-name",
18
+ "color",
19
+ "color-keyword",
20
+ "keyword"
21
+ ],
22
+ "author": "DY <dfcreative@gmail.com>",
23
+ "license": "MIT",
24
+ "bugs": {
25
+ "url": "https://github.com/colorjs/color-name/issues"
26
+ },
27
+ "homepage": "https://github.com/colorjs/color-name"
28
+ }
@@ -0,0 +1,242 @@
1
+ /* MIT license */
2
+ var colorNames = require('color-name');
3
+ var swizzle = require('simple-swizzle');
4
+ var hasOwnProperty = Object.hasOwnProperty;
5
+
6
+ var reverseNames = Object.create(null);
7
+
8
+ // create a list of reverse color names
9
+ for (var name in colorNames) {
10
+ if (hasOwnProperty.call(colorNames, name)) {
11
+ reverseNames[colorNames[name]] = name;
12
+ }
13
+ }
14
+
15
+ var cs = module.exports = {
16
+ to: {},
17
+ get: {}
18
+ };
19
+
20
+ cs.get = function (string) {
21
+ var prefix = string.substring(0, 3).toLowerCase();
22
+ var val;
23
+ var model;
24
+ switch (prefix) {
25
+ case 'hsl':
26
+ val = cs.get.hsl(string);
27
+ model = 'hsl';
28
+ break;
29
+ case 'hwb':
30
+ val = cs.get.hwb(string);
31
+ model = 'hwb';
32
+ break;
33
+ default:
34
+ val = cs.get.rgb(string);
35
+ model = 'rgb';
36
+ break;
37
+ }
38
+
39
+ if (!val) {
40
+ return null;
41
+ }
42
+
43
+ return {model: model, value: val};
44
+ };
45
+
46
+ cs.get.rgb = function (string) {
47
+ if (!string) {
48
+ return null;
49
+ }
50
+
51
+ var abbr = /^#([a-f0-9]{3,4})$/i;
52
+ var hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;
53
+ var rgba = /^rgba?\(\s*([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)(?=[\s,])\s*(?:,\s*)?([+-]?\d+)\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/;
54
+ var per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*,?\s*([+-]?[\d\.]+)\%\s*(?:[,|\/]\s*([+-]?[\d\.]+)(%?)\s*)?\)$/;
55
+ var keyword = /^(\w+)$/;
56
+
57
+ var rgb = [0, 0, 0, 1];
58
+ var match;
59
+ var i;
60
+ var hexAlpha;
61
+
62
+ if (match = string.match(hex)) {
63
+ hexAlpha = match[2];
64
+ match = match[1];
65
+
66
+ for (i = 0; i < 3; i++) {
67
+ // https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19
68
+ var i2 = i * 2;
69
+ rgb[i] = parseInt(match.slice(i2, i2 + 2), 16);
70
+ }
71
+
72
+ if (hexAlpha) {
73
+ rgb[3] = parseInt(hexAlpha, 16) / 255;
74
+ }
75
+ } else if (match = string.match(abbr)) {
76
+ match = match[1];
77
+ hexAlpha = match[3];
78
+
79
+ for (i = 0; i < 3; i++) {
80
+ rgb[i] = parseInt(match[i] + match[i], 16);
81
+ }
82
+
83
+ if (hexAlpha) {
84
+ rgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;
85
+ }
86
+ } else if (match = string.match(rgba)) {
87
+ for (i = 0; i < 3; i++) {
88
+ rgb[i] = parseInt(match[i + 1], 0);
89
+ }
90
+
91
+ if (match[4]) {
92
+ if (match[5]) {
93
+ rgb[3] = parseFloat(match[4]) * 0.01;
94
+ } else {
95
+ rgb[3] = parseFloat(match[4]);
96
+ }
97
+ }
98
+ } else if (match = string.match(per)) {
99
+ for (i = 0; i < 3; i++) {
100
+ rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);
101
+ }
102
+
103
+ if (match[4]) {
104
+ if (match[5]) {
105
+ rgb[3] = parseFloat(match[4]) * 0.01;
106
+ } else {
107
+ rgb[3] = parseFloat(match[4]);
108
+ }
109
+ }
110
+ } else if (match = string.match(keyword)) {
111
+ if (match[1] === 'transparent') {
112
+ return [0, 0, 0, 0];
113
+ }
114
+
115
+ if (!hasOwnProperty.call(colorNames, match[1])) {
116
+ return null;
117
+ }
118
+
119
+ rgb = colorNames[match[1]];
120
+ rgb[3] = 1;
121
+
122
+ return rgb;
123
+ } else {
124
+ return null;
125
+ }
126
+
127
+ for (i = 0; i < 3; i++) {
128
+ rgb[i] = clamp(rgb[i], 0, 255);
129
+ }
130
+ rgb[3] = clamp(rgb[3], 0, 1);
131
+
132
+ return rgb;
133
+ };
134
+
135
+ cs.get.hsl = function (string) {
136
+ if (!string) {
137
+ return null;
138
+ }
139
+
140
+ var hsl = /^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d\.]+)%\s*,?\s*([+-]?[\d\.]+)%\s*(?:[,|\/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/;
141
+ var match = string.match(hsl);
142
+
143
+ if (match) {
144
+ var alpha = parseFloat(match[4]);
145
+ var h = ((parseFloat(match[1]) % 360) + 360) % 360;
146
+ var s = clamp(parseFloat(match[2]), 0, 100);
147
+ var l = clamp(parseFloat(match[3]), 0, 100);
148
+ var a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);
149
+
150
+ return [h, s, l, a];
151
+ }
152
+
153
+ return null;
154
+ };
155
+
156
+ cs.get.hwb = function (string) {
157
+ if (!string) {
158
+ return null;
159
+ }
160
+
161
+ var hwb = /^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:[eE][+-]?\d+)?)\s*)?\)$/;
162
+ var match = string.match(hwb);
163
+
164
+ if (match) {
165
+ var alpha = parseFloat(match[4]);
166
+ var h = ((parseFloat(match[1]) % 360) + 360) % 360;
167
+ var w = clamp(parseFloat(match[2]), 0, 100);
168
+ var b = clamp(parseFloat(match[3]), 0, 100);
169
+ var a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);
170
+ return [h, w, b, a];
171
+ }
172
+
173
+ return null;
174
+ };
175
+
176
+ cs.to.hex = function () {
177
+ var rgba = swizzle(arguments);
178
+
179
+ return (
180
+ '#' +
181
+ hexDouble(rgba[0]) +
182
+ hexDouble(rgba[1]) +
183
+ hexDouble(rgba[2]) +
184
+ (rgba[3] < 1
185
+ ? (hexDouble(Math.round(rgba[3] * 255)))
186
+ : '')
187
+ );
188
+ };
189
+
190
+ cs.to.rgb = function () {
191
+ var rgba = swizzle(arguments);
192
+
193
+ return rgba.length < 4 || rgba[3] === 1
194
+ ? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'
195
+ : 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';
196
+ };
197
+
198
+ cs.to.rgb.percent = function () {
199
+ var rgba = swizzle(arguments);
200
+
201
+ var r = Math.round(rgba[0] / 255 * 100);
202
+ var g = Math.round(rgba[1] / 255 * 100);
203
+ var b = Math.round(rgba[2] / 255 * 100);
204
+
205
+ return rgba.length < 4 || rgba[3] === 1
206
+ ? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'
207
+ : 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';
208
+ };
209
+
210
+ cs.to.hsl = function () {
211
+ var hsla = swizzle(arguments);
212
+ return hsla.length < 4 || hsla[3] === 1
213
+ ? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'
214
+ : 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';
215
+ };
216
+
217
+ // hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax
218
+ // (hwb have alpha optional & 1 is default value)
219
+ cs.to.hwb = function () {
220
+ var hwba = swizzle(arguments);
221
+
222
+ var a = '';
223
+ if (hwba.length >= 4 && hwba[3] !== 1) {
224
+ a = ', ' + hwba[3];
225
+ }
226
+
227
+ return 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';
228
+ };
229
+
230
+ cs.to.keyword = function (rgb) {
231
+ return reverseNames[rgb.slice(0, 3)];
232
+ };
233
+
234
+ // helpers
235
+ function clamp(num, min, max) {
236
+ return Math.min(Math.max(min, num), max);
237
+ }
238
+
239
+ function hexDouble(num) {
240
+ var str = Math.round(num).toString(16).toUpperCase();
241
+ return (str.length < 2) ? '0' + str : str;
242
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "color-string",
3
+ "description": "Parser and generator for CSS color strings",
4
+ "version": "1.9.1",
5
+ "author": "Heather Arthur <fayearthur@gmail.com>",
6
+ "contributors": [
7
+ "Maxime Thirouin",
8
+ "Dyma Ywanov <dfcreative@gmail.com>",
9
+ "Josh Junon"
10
+ ],
11
+ "repository": "Qix-/color-string",
12
+ "scripts": {
13
+ "pretest": "xo",
14
+ "test": "node test/basic.js"
15
+ },
16
+ "license": "MIT",
17
+ "files": [
18
+ "index.js"
19
+ ],
20
+ "xo": {
21
+ "rules": {
22
+ "no-cond-assign": 0,
23
+ "operator-linebreak": 0
24
+ }
25
+ },
26
+ "dependencies": {
27
+ "color-name": "^1.0.0",
28
+ "simple-swizzle": "^0.2.2"
29
+ },
30
+ "devDependencies": {
31
+ "xo": "^0.12.1"
32
+ },
33
+ "keywords": [
34
+ "color",
35
+ "colour",
36
+ "rgb",
37
+ "css"
38
+ ]
39
+ }