@atmaticai/agent-tools-core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/README.md +742 -0
  2. package/dist/archive/index.d.mts +1 -0
  3. package/dist/archive/index.d.ts +1 -0
  4. package/dist/archive/index.js +90 -0
  5. package/dist/archive/index.js.map +1 -0
  6. package/dist/archive/index.mjs +80 -0
  7. package/dist/archive/index.mjs.map +1 -0
  8. package/dist/color/index.d.mts +1 -0
  9. package/dist/color/index.d.ts +1 -0
  10. package/dist/color/index.js +347 -0
  11. package/dist/color/index.js.map +1 -0
  12. package/dist/color/index.mjs +336 -0
  13. package/dist/color/index.mjs.map +1 -0
  14. package/dist/crypto/index.d.mts +1 -0
  15. package/dist/crypto/index.d.ts +1 -0
  16. package/dist/crypto/index.js +116 -0
  17. package/dist/crypto/index.js.map +1 -0
  18. package/dist/crypto/index.mjs +108 -0
  19. package/dist/crypto/index.mjs.map +1 -0
  20. package/dist/csv/index.d.mts +1 -0
  21. package/dist/csv/index.d.ts +1 -0
  22. package/dist/csv/index.js +371 -0
  23. package/dist/csv/index.js.map +1 -0
  24. package/dist/csv/index.mjs +348 -0
  25. package/dist/csv/index.mjs.map +1 -0
  26. package/dist/datetime/index.d.mts +1 -0
  27. package/dist/datetime/index.d.ts +1 -0
  28. package/dist/datetime/index.js +234 -0
  29. package/dist/datetime/index.js.map +1 -0
  30. package/dist/datetime/index.mjs +224 -0
  31. package/dist/datetime/index.mjs.map +1 -0
  32. package/dist/diff/index.d.mts +2 -0
  33. package/dist/diff/index.d.ts +2 -0
  34. package/dist/diff/index.js +84 -0
  35. package/dist/diff/index.js.map +1 -0
  36. package/dist/diff/index.mjs +78 -0
  37. package/dist/diff/index.mjs.map +1 -0
  38. package/dist/excel/index.d.mts +1 -0
  39. package/dist/excel/index.d.ts +1 -0
  40. package/dist/excel/index.js +163 -0
  41. package/dist/excel/index.js.map +1 -0
  42. package/dist/excel/index.mjs +153 -0
  43. package/dist/excel/index.mjs.map +1 -0
  44. package/dist/image/index.d.mts +1 -0
  45. package/dist/image/index.d.ts +1 -0
  46. package/dist/image/index.js +123 -0
  47. package/dist/image/index.js.map +1 -0
  48. package/dist/image/index.mjs +107 -0
  49. package/dist/image/index.mjs.map +1 -0
  50. package/dist/index--vbnYfdE.d.mts +142 -0
  51. package/dist/index--vbnYfdE.d.ts +142 -0
  52. package/dist/index-7FZQloN-.d.mts +62 -0
  53. package/dist/index-7FZQloN-.d.ts +62 -0
  54. package/dist/index-7XgaTVH5.d.mts +93 -0
  55. package/dist/index-7XgaTVH5.d.ts +93 -0
  56. package/dist/index-7bvFmh45.d.mts +87 -0
  57. package/dist/index-7bvFmh45.d.ts +87 -0
  58. package/dist/index-BDZcIVCU.d.mts +53 -0
  59. package/dist/index-BDZcIVCU.d.ts +53 -0
  60. package/dist/index-BN00EnUU.d.mts +55 -0
  61. package/dist/index-BN00EnUU.d.ts +55 -0
  62. package/dist/index-CQ1EukC4.d.mts +59 -0
  63. package/dist/index-CQ1EukC4.d.ts +59 -0
  64. package/dist/index-CgRVnFOt.d.mts +91 -0
  65. package/dist/index-CgRVnFOt.d.ts +91 -0
  66. package/dist/index-DjBDZzuj.d.mts +54 -0
  67. package/dist/index-DjBDZzuj.d.ts +54 -0
  68. package/dist/index-FFrvmr-n.d.mts +50 -0
  69. package/dist/index-FFrvmr-n.d.ts +50 -0
  70. package/dist/index-QWC8yIgW.d.mts +106 -0
  71. package/dist/index-QWC8yIgW.d.ts +106 -0
  72. package/dist/index-RVqNunxE.d.mts +193 -0
  73. package/dist/index-RVqNunxE.d.ts +193 -0
  74. package/dist/index-fJD8SORm.d.mts +61 -0
  75. package/dist/index-fJD8SORm.d.ts +61 -0
  76. package/dist/index-pPy_XDQU.d.mts +56 -0
  77. package/dist/index-pPy_XDQU.d.ts +56 -0
  78. package/dist/index-rwh9hdD9.d.mts +68 -0
  79. package/dist/index-rwh9hdD9.d.ts +68 -0
  80. package/dist/index-uXdkAfea.d.mts +93 -0
  81. package/dist/index-uXdkAfea.d.ts +93 -0
  82. package/dist/index.d.mts +17 -0
  83. package/dist/index.d.ts +17 -0
  84. package/dist/index.js +3744 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/index.mjs +3694 -0
  87. package/dist/index.mjs.map +1 -0
  88. package/dist/json/index.d.mts +1 -0
  89. package/dist/json/index.d.ts +1 -0
  90. package/dist/json/index.js +599 -0
  91. package/dist/json/index.js.map +1 -0
  92. package/dist/json/index.mjs +552 -0
  93. package/dist/json/index.mjs.map +1 -0
  94. package/dist/markdown/index.d.mts +1 -0
  95. package/dist/markdown/index.d.ts +1 -0
  96. package/dist/markdown/index.js +151 -0
  97. package/dist/markdown/index.js.map +1 -0
  98. package/dist/markdown/index.mjs +139 -0
  99. package/dist/markdown/index.mjs.map +1 -0
  100. package/dist/math/index.d.mts +1 -0
  101. package/dist/math/index.d.ts +1 -0
  102. package/dist/math/index.js +247 -0
  103. package/dist/math/index.js.map +1 -0
  104. package/dist/math/index.mjs +240 -0
  105. package/dist/math/index.mjs.map +1 -0
  106. package/dist/pdf/index.d.mts +1 -0
  107. package/dist/pdf/index.d.ts +1 -0
  108. package/dist/pdf/index.js +546 -0
  109. package/dist/pdf/index.js.map +1 -0
  110. package/dist/pdf/index.mjs +518 -0
  111. package/dist/pdf/index.mjs.map +1 -0
  112. package/dist/regex/index.d.mts +1 -0
  113. package/dist/regex/index.d.ts +1 -0
  114. package/dist/regex/index.js +93 -0
  115. package/dist/regex/index.js.map +1 -0
  116. package/dist/regex/index.mjs +88 -0
  117. package/dist/regex/index.mjs.map +1 -0
  118. package/dist/settings/index.d.mts +41 -0
  119. package/dist/settings/index.d.ts +41 -0
  120. package/dist/settings/index.js +146 -0
  121. package/dist/settings/index.js.map +1 -0
  122. package/dist/settings/index.mjs +139 -0
  123. package/dist/settings/index.mjs.map +1 -0
  124. package/dist/sql/index.d.mts +1 -0
  125. package/dist/sql/index.d.ts +1 -0
  126. package/dist/sql/index.js +146 -0
  127. package/dist/sql/index.js.map +1 -0
  128. package/dist/sql/index.mjs +139 -0
  129. package/dist/sql/index.mjs.map +1 -0
  130. package/dist/text/index.d.mts +1 -0
  131. package/dist/text/index.d.ts +1 -0
  132. package/dist/text/index.js +250 -0
  133. package/dist/text/index.js.map +1 -0
  134. package/dist/text/index.mjs +242 -0
  135. package/dist/text/index.mjs.map +1 -0
  136. package/dist/xml/index.d.mts +1 -0
  137. package/dist/xml/index.d.ts +1 -0
  138. package/dist/xml/index.js +188 -0
  139. package/dist/xml/index.js.map +1 -0
  140. package/dist/xml/index.mjs +180 -0
  141. package/dist/xml/index.mjs.map +1 -0
  142. package/package.json +150 -0
@@ -0,0 +1 @@
1
+ export { A as ArchiveCreateOptions, a as ArchiveEntry, b as ArchiveExtractOptions, c as ArchiveFile, d as ArchiveFormat, e as ArchiveStats, f as create, g as extract, h as getStats, l as list } from '../index-FFrvmr-n.mjs';
@@ -0,0 +1 @@
1
+ export { A as ArchiveCreateOptions, a as ArchiveEntry, b as ArchiveExtractOptions, c as ArchiveFile, d as ArchiveFormat, e as ArchiveStats, f as create, g as extract, h as getStats, l as list } from '../index-FFrvmr-n.js';
@@ -0,0 +1,90 @@
1
+ 'use strict';
2
+
3
+ var archiver = require('archiver');
4
+ var stream = require('stream');
5
+ var AdmZip = require('adm-zip');
6
+
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var archiver__default = /*#__PURE__*/_interopDefault(archiver);
10
+ var AdmZip__default = /*#__PURE__*/_interopDefault(AdmZip);
11
+
12
+ // src/archive/create.ts
13
+ async function create(files, options = {}) {
14
+ const format = options.format ?? "zip";
15
+ const level = options.compressionLevel ?? 6;
16
+ return new Promise((resolve, reject) => {
17
+ const chunks = [];
18
+ const output = new stream.PassThrough();
19
+ output.on("data", (chunk) => chunks.push(chunk));
20
+ output.on("end", () => resolve(new Uint8Array(Buffer.concat(chunks))));
21
+ output.on("error", reject);
22
+ const archiverFormat = format === "tar.gz" ? "tar" : format;
23
+ const archiverOptions = format === "tar.gz" ? { gzip: true, gzipOptions: { level } } : format === "zip" ? { zlib: { level } } : {};
24
+ const archive = archiver__default.default(archiverFormat, archiverOptions);
25
+ archive.on("error", reject);
26
+ archive.pipe(output);
27
+ for (const file of files) {
28
+ archive.append(file.content, { name: file.path });
29
+ }
30
+ archive.finalize();
31
+ });
32
+ }
33
+ async function extract(file, options = {}) {
34
+ const zip = new AdmZip__default.default(Buffer.from(file));
35
+ const entries = zip.getEntries();
36
+ const results = [];
37
+ for (const entry of entries) {
38
+ if (entry.isDirectory) continue;
39
+ if (options.files && !options.files.includes(entry.entryName)) {
40
+ continue;
41
+ }
42
+ results.push({
43
+ path: entry.entryName,
44
+ content: entry.getData()
45
+ });
46
+ }
47
+ return results;
48
+ }
49
+ async function list(file) {
50
+ const zip = new AdmZip__default.default(Buffer.from(file));
51
+ const entries = zip.getEntries();
52
+ return entries.map((entry) => ({
53
+ path: entry.entryName,
54
+ size: entry.header.size,
55
+ compressedSize: entry.header.compressedSize,
56
+ isDirectory: entry.isDirectory,
57
+ modified: entry.header.time ? new Date(entry.header.time).toISOString() : void 0
58
+ }));
59
+ }
60
+ async function getStats(file) {
61
+ const entries = await list(file);
62
+ let totalSize = 0;
63
+ let compressedSize = 0;
64
+ let fileCount = 0;
65
+ let directoryCount = 0;
66
+ for (const entry of entries) {
67
+ if (entry.isDirectory) {
68
+ directoryCount++;
69
+ } else {
70
+ fileCount++;
71
+ totalSize += entry.size;
72
+ compressedSize += entry.compressedSize ?? entry.size;
73
+ }
74
+ }
75
+ return {
76
+ format: "zip",
77
+ fileCount,
78
+ directoryCount,
79
+ totalSize,
80
+ compressedSize,
81
+ entries
82
+ };
83
+ }
84
+
85
+ exports.create = create;
86
+ exports.extract = extract;
87
+ exports.getStats = getStats;
88
+ exports.list = list;
89
+ //# sourceMappingURL=index.js.map
90
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/archive/create.ts","../../src/archive/extract.ts","../../src/archive/list.ts"],"names":["PassThrough","archiver","AdmZip"],"mappings":"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","file":"index.js","sourcesContent":["import archiver from 'archiver';\nimport { PassThrough } from 'stream';\nimport type { ArchiveCreateOptions, ArchiveFile } from './types';\n\nexport async function create(\n files: ArchiveFile[],\n options: ArchiveCreateOptions = {}\n): Promise<Uint8Array> {\n const format = options.format ?? 'zip';\n const level = options.compressionLevel ?? 6;\n\n return new Promise((resolve, reject) => {\n const chunks: Buffer[] = [];\n const output = new PassThrough();\n\n output.on('data', (chunk: Buffer) => chunks.push(chunk));\n output.on('end', () => resolve(new Uint8Array(Buffer.concat(chunks))));\n output.on('error', reject);\n\n const archiverFormat = format === 'tar.gz' ? 'tar' : format;\n const archiverOptions =\n format === 'tar.gz'\n ? { gzip: true, gzipOptions: { level } }\n : format === 'zip'\n ? { zlib: { level } }\n : {};\n\n const archive = archiver(archiverFormat as 'zip' | 'tar', archiverOptions);\n archive.on('error', reject);\n archive.pipe(output);\n\n for (const file of files) {\n archive.append(file.content, { name: file.path });\n }\n\n archive.finalize();\n });\n}\n","import AdmZip from 'adm-zip';\nimport type { ArchiveFile, ArchiveExtractOptions } from './types';\n\nexport async function extract(\n file: Buffer | Uint8Array,\n options: ArchiveExtractOptions = {}\n): Promise<ArchiveFile[]> {\n const zip = new AdmZip(Buffer.from(file));\n const entries = zip.getEntries();\n const results: ArchiveFile[] = [];\n\n for (const entry of entries) {\n if (entry.isDirectory) continue;\n\n if (options.files && !options.files.includes(entry.entryName)) {\n continue;\n }\n\n results.push({\n path: entry.entryName,\n content: entry.getData(),\n });\n }\n\n return results;\n}\n","import AdmZip from 'adm-zip';\nimport type { ArchiveEntry, ArchiveStats } from './types';\n\nexport async function list(\n file: Buffer | Uint8Array\n): Promise<ArchiveEntry[]> {\n const zip = new AdmZip(Buffer.from(file));\n const entries = zip.getEntries();\n\n return entries.map((entry) => ({\n path: entry.entryName,\n size: entry.header.size,\n compressedSize: entry.header.compressedSize,\n isDirectory: entry.isDirectory,\n modified: entry.header.time ? new Date(entry.header.time).toISOString() : undefined,\n }));\n}\n\nexport async function getStats(\n file: Buffer | Uint8Array\n): Promise<ArchiveStats> {\n const entries = await list(file);\n\n let totalSize = 0;\n let compressedSize = 0;\n let fileCount = 0;\n let directoryCount = 0;\n\n for (const entry of entries) {\n if (entry.isDirectory) {\n directoryCount++;\n } else {\n fileCount++;\n totalSize += entry.size;\n compressedSize += entry.compressedSize ?? entry.size;\n }\n }\n\n return {\n format: 'zip',\n fileCount,\n directoryCount,\n totalSize,\n compressedSize,\n entries,\n };\n}\n"]}
@@ -0,0 +1,80 @@
1
+ import archiver from 'archiver';
2
+ import { PassThrough } from 'stream';
3
+ import AdmZip from 'adm-zip';
4
+
5
+ // src/archive/create.ts
6
+ async function create(files, options = {}) {
7
+ const format = options.format ?? "zip";
8
+ const level = options.compressionLevel ?? 6;
9
+ return new Promise((resolve, reject) => {
10
+ const chunks = [];
11
+ const output = new PassThrough();
12
+ output.on("data", (chunk) => chunks.push(chunk));
13
+ output.on("end", () => resolve(new Uint8Array(Buffer.concat(chunks))));
14
+ output.on("error", reject);
15
+ const archiverFormat = format === "tar.gz" ? "tar" : format;
16
+ const archiverOptions = format === "tar.gz" ? { gzip: true, gzipOptions: { level } } : format === "zip" ? { zlib: { level } } : {};
17
+ const archive = archiver(archiverFormat, archiverOptions);
18
+ archive.on("error", reject);
19
+ archive.pipe(output);
20
+ for (const file of files) {
21
+ archive.append(file.content, { name: file.path });
22
+ }
23
+ archive.finalize();
24
+ });
25
+ }
26
+ async function extract(file, options = {}) {
27
+ const zip = new AdmZip(Buffer.from(file));
28
+ const entries = zip.getEntries();
29
+ const results = [];
30
+ for (const entry of entries) {
31
+ if (entry.isDirectory) continue;
32
+ if (options.files && !options.files.includes(entry.entryName)) {
33
+ continue;
34
+ }
35
+ results.push({
36
+ path: entry.entryName,
37
+ content: entry.getData()
38
+ });
39
+ }
40
+ return results;
41
+ }
42
+ async function list(file) {
43
+ const zip = new AdmZip(Buffer.from(file));
44
+ const entries = zip.getEntries();
45
+ return entries.map((entry) => ({
46
+ path: entry.entryName,
47
+ size: entry.header.size,
48
+ compressedSize: entry.header.compressedSize,
49
+ isDirectory: entry.isDirectory,
50
+ modified: entry.header.time ? new Date(entry.header.time).toISOString() : void 0
51
+ }));
52
+ }
53
+ async function getStats(file) {
54
+ const entries = await list(file);
55
+ let totalSize = 0;
56
+ let compressedSize = 0;
57
+ let fileCount = 0;
58
+ let directoryCount = 0;
59
+ for (const entry of entries) {
60
+ if (entry.isDirectory) {
61
+ directoryCount++;
62
+ } else {
63
+ fileCount++;
64
+ totalSize += entry.size;
65
+ compressedSize += entry.compressedSize ?? entry.size;
66
+ }
67
+ }
68
+ return {
69
+ format: "zip",
70
+ fileCount,
71
+ directoryCount,
72
+ totalSize,
73
+ compressedSize,
74
+ entries
75
+ };
76
+ }
77
+
78
+ export { create, extract, getStats, list };
79
+ //# sourceMappingURL=index.mjs.map
80
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/archive/create.ts","../../src/archive/extract.ts","../../src/archive/list.ts"],"names":["AdmZip"],"mappings":"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","file":"index.mjs","sourcesContent":["import archiver from 'archiver';\nimport { PassThrough } from 'stream';\nimport type { ArchiveCreateOptions, ArchiveFile } from './types';\n\nexport async function create(\n files: ArchiveFile[],\n options: ArchiveCreateOptions = {}\n): Promise<Uint8Array> {\n const format = options.format ?? 'zip';\n const level = options.compressionLevel ?? 6;\n\n return new Promise((resolve, reject) => {\n const chunks: Buffer[] = [];\n const output = new PassThrough();\n\n output.on('data', (chunk: Buffer) => chunks.push(chunk));\n output.on('end', () => resolve(new Uint8Array(Buffer.concat(chunks))));\n output.on('error', reject);\n\n const archiverFormat = format === 'tar.gz' ? 'tar' : format;\n const archiverOptions =\n format === 'tar.gz'\n ? { gzip: true, gzipOptions: { level } }\n : format === 'zip'\n ? { zlib: { level } }\n : {};\n\n const archive = archiver(archiverFormat as 'zip' | 'tar', archiverOptions);\n archive.on('error', reject);\n archive.pipe(output);\n\n for (const file of files) {\n archive.append(file.content, { name: file.path });\n }\n\n archive.finalize();\n });\n}\n","import AdmZip from 'adm-zip';\nimport type { ArchiveFile, ArchiveExtractOptions } from './types';\n\nexport async function extract(\n file: Buffer | Uint8Array,\n options: ArchiveExtractOptions = {}\n): Promise<ArchiveFile[]> {\n const zip = new AdmZip(Buffer.from(file));\n const entries = zip.getEntries();\n const results: ArchiveFile[] = [];\n\n for (const entry of entries) {\n if (entry.isDirectory) continue;\n\n if (options.files && !options.files.includes(entry.entryName)) {\n continue;\n }\n\n results.push({\n path: entry.entryName,\n content: entry.getData(),\n });\n }\n\n return results;\n}\n","import AdmZip from 'adm-zip';\nimport type { ArchiveEntry, ArchiveStats } from './types';\n\nexport async function list(\n file: Buffer | Uint8Array\n): Promise<ArchiveEntry[]> {\n const zip = new AdmZip(Buffer.from(file));\n const entries = zip.getEntries();\n\n return entries.map((entry) => ({\n path: entry.entryName,\n size: entry.header.size,\n compressedSize: entry.header.compressedSize,\n isDirectory: entry.isDirectory,\n modified: entry.header.time ? new Date(entry.header.time).toISOString() : undefined,\n }));\n}\n\nexport async function getStats(\n file: Buffer | Uint8Array\n): Promise<ArchiveStats> {\n const entries = await list(file);\n\n let totalSize = 0;\n let compressedSize = 0;\n let fileCount = 0;\n let directoryCount = 0;\n\n for (const entry of entries) {\n if (entry.isDirectory) {\n directoryCount++;\n } else {\n fileCount++;\n totalSize += entry.size;\n compressedSize += entry.compressedSize ?? entry.size;\n }\n }\n\n return {\n format: 'zip',\n fileCount,\n directoryCount,\n totalSize,\n compressedSize,\n entries,\n };\n}\n"]}
@@ -0,0 +1 @@
1
+ export { B as BlendResult, C as ColorConversionResult, a as ColorFormat, b as ColorNameResult, c as ContrastResult, H as HSL, P as PaletteOptions, d as PaletteType, R as RGB, e as blendColors, f as colorName, g as contrastRatio, h as convertColor, j as generatePalette, k as hexToRgb, l as hslToRgb, p as parseColor, r as rgbToHex, m as rgbToHsl } from '../index-7bvFmh45.mjs';
@@ -0,0 +1 @@
1
+ export { B as BlendResult, C as ColorConversionResult, a as ColorFormat, b as ColorNameResult, c as ContrastResult, H as HSL, P as PaletteOptions, d as PaletteType, R as RGB, e as blendColors, f as colorName, g as contrastRatio, h as convertColor, j as generatePalette, k as hexToRgb, l as hslToRgb, p as parseColor, r as rgbToHex, m as rgbToHsl } from '../index-7bvFmh45.js';
@@ -0,0 +1,347 @@
1
+ 'use strict';
2
+
3
+ // src/color/parse.ts
4
+ function hexToRgb(hex) {
5
+ let h = hex.replace(/^#/, "");
6
+ if (h.length === 3) {
7
+ h = h[0] + h[0] + h[1] + h[1] + h[2] + h[2];
8
+ }
9
+ if (h.length !== 6) {
10
+ throw new Error(`Invalid hex color: ${hex}`);
11
+ }
12
+ const num = parseInt(h, 16);
13
+ if (isNaN(num)) {
14
+ throw new Error(`Invalid hex color: ${hex}`);
15
+ }
16
+ return {
17
+ r: num >> 16 & 255,
18
+ g: num >> 8 & 255,
19
+ b: num & 255
20
+ };
21
+ }
22
+ function hslToRgb(h, s, l) {
23
+ const sNorm = s / 100;
24
+ const lNorm = l / 100;
25
+ const c = (1 - Math.abs(2 * lNorm - 1)) * sNorm;
26
+ const hPrime = h / 60;
27
+ const x = c * (1 - Math.abs(hPrime % 2 - 1));
28
+ const m = lNorm - c / 2;
29
+ let r1 = 0;
30
+ let g1 = 0;
31
+ let b1 = 0;
32
+ if (hPrime >= 0 && hPrime < 1) {
33
+ r1 = c;
34
+ g1 = x;
35
+ b1 = 0;
36
+ } else if (hPrime >= 1 && hPrime < 2) {
37
+ r1 = x;
38
+ g1 = c;
39
+ b1 = 0;
40
+ } else if (hPrime >= 2 && hPrime < 3) {
41
+ r1 = 0;
42
+ g1 = c;
43
+ b1 = x;
44
+ } else if (hPrime >= 3 && hPrime < 4) {
45
+ r1 = 0;
46
+ g1 = x;
47
+ b1 = c;
48
+ } else if (hPrime >= 4 && hPrime < 5) {
49
+ r1 = x;
50
+ g1 = 0;
51
+ b1 = c;
52
+ } else if (hPrime >= 5 && hPrime < 6) {
53
+ r1 = c;
54
+ g1 = 0;
55
+ b1 = x;
56
+ }
57
+ return {
58
+ r: Math.round((r1 + m) * 255),
59
+ g: Math.round((g1 + m) * 255),
60
+ b: Math.round((b1 + m) * 255)
61
+ };
62
+ }
63
+ function rgbToHsl(r, g, b) {
64
+ const rNorm = r / 255;
65
+ const gNorm = g / 255;
66
+ const bNorm = b / 255;
67
+ const max = Math.max(rNorm, gNorm, bNorm);
68
+ const min = Math.min(rNorm, gNorm, bNorm);
69
+ const delta = max - min;
70
+ let h = 0;
71
+ let s = 0;
72
+ const l = (max + min) / 2;
73
+ if (delta !== 0) {
74
+ s = l > 0.5 ? delta / (2 - max - min) : delta / (max + min);
75
+ if (max === rNorm) {
76
+ h = ((gNorm - bNorm) / delta + (gNorm < bNorm ? 6 : 0)) * 60;
77
+ } else if (max === gNorm) {
78
+ h = ((bNorm - rNorm) / delta + 2) * 60;
79
+ } else {
80
+ h = ((rNorm - gNorm) / delta + 4) * 60;
81
+ }
82
+ }
83
+ return {
84
+ h: Math.round(h),
85
+ s: Math.round(s * 100),
86
+ l: Math.round(l * 100)
87
+ };
88
+ }
89
+ function rgbToHex(r, g, b) {
90
+ const toHex = (c) => {
91
+ const hex = Math.max(0, Math.min(255, c)).toString(16);
92
+ return hex.length === 1 ? "0" + hex : hex;
93
+ };
94
+ return "#" + toHex(r) + toHex(g) + toHex(b);
95
+ }
96
+ function parseColor(input) {
97
+ const trimmed = input.trim().toLowerCase();
98
+ let rgb;
99
+ const hexMatch = trimmed.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/);
100
+ if (hexMatch) {
101
+ rgb = hexToRgb(trimmed);
102
+ } else {
103
+ const rgbMatch = trimmed.match(/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/);
104
+ if (rgbMatch) {
105
+ rgb = {
106
+ r: Math.min(255, parseInt(rgbMatch[1], 10)),
107
+ g: Math.min(255, parseInt(rgbMatch[2], 10)),
108
+ b: Math.min(255, parseInt(rgbMatch[3], 10))
109
+ };
110
+ } else {
111
+ const hslMatch = trimmed.match(/^hsl\(\s*(\d{1,3})\s*,\s*(\d{1,3})%\s*,\s*(\d{1,3})%\s*\)$/);
112
+ if (hslMatch) {
113
+ const h = Math.min(360, parseInt(hslMatch[1], 10));
114
+ const s = Math.min(100, parseInt(hslMatch[2], 10));
115
+ const l = Math.min(100, parseInt(hslMatch[3], 10));
116
+ rgb = hslToRgb(h, s, l);
117
+ } else {
118
+ throw new Error(`Unsupported color format: ${input}`);
119
+ }
120
+ }
121
+ }
122
+ const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);
123
+ const hex = rgbToHex(rgb.r, rgb.g, rgb.b);
124
+ return {
125
+ hex,
126
+ rgb: `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`,
127
+ hsl: `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`,
128
+ values: {
129
+ rgb,
130
+ hsl
131
+ }
132
+ };
133
+ }
134
+
135
+ // src/color/convert.ts
136
+ function convertColor(input, to) {
137
+ const result = parseColor(input);
138
+ switch (to) {
139
+ case "hex":
140
+ return result.hex;
141
+ case "rgb":
142
+ return result.rgb;
143
+ case "hsl":
144
+ return result.hsl;
145
+ default:
146
+ throw new Error(`Unsupported target format: ${to}`);
147
+ }
148
+ }
149
+
150
+ // src/color/contrast.ts
151
+ function srgbChannel(c) {
152
+ const normalized = c / 255;
153
+ return normalized <= 0.03928 ? normalized / 12.92 : Math.pow((normalized + 0.055) / 1.055, 2.4);
154
+ }
155
+ function relativeLuminance(r, g, b) {
156
+ return 0.2126 * srgbChannel(r) + 0.7152 * srgbChannel(g) + 0.0722 * srgbChannel(b);
157
+ }
158
+ function contrastRatio(color1, color2) {
159
+ const c1 = parseColor(color1);
160
+ const c2 = parseColor(color2);
161
+ const l1 = relativeLuminance(c1.values.rgb.r, c1.values.rgb.g, c1.values.rgb.b);
162
+ const l2 = relativeLuminance(c2.values.rgb.r, c2.values.rgb.g, c2.values.rgb.b);
163
+ const lighter = Math.max(l1, l2);
164
+ const darker = Math.min(l1, l2);
165
+ const ratio = (lighter + 0.05) / (darker + 0.05);
166
+ const roundedRatio = Math.round(ratio * 100) / 100;
167
+ return {
168
+ ratio: roundedRatio,
169
+ formatted: `${roundedRatio.toFixed(2)}:1`,
170
+ aa: {
171
+ normal: roundedRatio >= 4.5,
172
+ large: roundedRatio >= 3
173
+ },
174
+ aaa: {
175
+ normal: roundedRatio >= 7,
176
+ large: roundedRatio >= 4.5
177
+ }
178
+ };
179
+ }
180
+
181
+ // src/color/palette.ts
182
+ function hslToConversionResult(h, s, l) {
183
+ const normalizedH = (h % 360 + 360) % 360;
184
+ const rgb = hslToRgb(normalizedH, s, l);
185
+ const hex = rgbToHex(rgb.r, rgb.g, rgb.b);
186
+ const hslRecalc = rgbToHsl(rgb.r, rgb.g, rgb.b);
187
+ return {
188
+ hex,
189
+ rgb: `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`,
190
+ hsl: `hsl(${hslRecalc.h}, ${hslRecalc.s}%, ${hslRecalc.l}%)`,
191
+ values: {
192
+ rgb,
193
+ hsl: hslRecalc
194
+ }
195
+ };
196
+ }
197
+ function generatePalette(base, options) {
198
+ const parsed = parseColor(base);
199
+ const { h, s, l } = parsed.values.hsl;
200
+ const count = options.count ?? 5;
201
+ switch (options.type) {
202
+ case "complementary": {
203
+ return [
204
+ hslToConversionResult(h, s, l),
205
+ hslToConversionResult(h + 180, s, l)
206
+ ];
207
+ }
208
+ case "analogous": {
209
+ const results = [];
210
+ const spread = 30;
211
+ const step = spread * 2 / (count - 1);
212
+ for (let i = 0; i < count; i++) {
213
+ const hue = h - spread + step * i;
214
+ results.push(hslToConversionResult(hue, s, l));
215
+ }
216
+ return results;
217
+ }
218
+ case "triadic": {
219
+ return [
220
+ hslToConversionResult(h, s, l),
221
+ hslToConversionResult(h + 120, s, l),
222
+ hslToConversionResult(h + 240, s, l)
223
+ ];
224
+ }
225
+ case "shades": {
226
+ const results = [];
227
+ const minL = 10;
228
+ const step = (l - minL) / (count - 1);
229
+ for (let i = 0; i < count; i++) {
230
+ const lightness = Math.round(l - step * i);
231
+ results.push(hslToConversionResult(h, s, lightness));
232
+ }
233
+ return results;
234
+ }
235
+ case "tints": {
236
+ const results = [];
237
+ const maxL = 95;
238
+ const step = (maxL - l) / (count - 1);
239
+ for (let i = 0; i < count; i++) {
240
+ const lightness = Math.round(l + step * i);
241
+ results.push(hslToConversionResult(h, s, lightness));
242
+ }
243
+ return results;
244
+ }
245
+ default:
246
+ throw new Error(`Unsupported palette type: ${options.type}`);
247
+ }
248
+ }
249
+
250
+ // src/color/blend.ts
251
+ function blendColors(color1, color2, ratio = 0.5) {
252
+ if (ratio < 0 || ratio > 1) {
253
+ throw new Error(`Ratio must be between 0 and 1, got: ${ratio}`);
254
+ }
255
+ const c1 = parseColor(color1);
256
+ const c2 = parseColor(color2);
257
+ const r = Math.round(c1.values.rgb.r * (1 - ratio) + c2.values.rgb.r * ratio);
258
+ const g = Math.round(c1.values.rgb.g * (1 - ratio) + c2.values.rgb.g * ratio);
259
+ const b = Math.round(c1.values.rgb.b * (1 - ratio) + c2.values.rgb.b * ratio);
260
+ const hex = rgbToHex(r, g, b);
261
+ const hsl = rgbToHsl(r, g, b);
262
+ return {
263
+ color: {
264
+ hex,
265
+ rgb: `rgb(${r}, ${g}, ${b})`,
266
+ hsl: `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`,
267
+ values: {
268
+ rgb: { r, g, b },
269
+ hsl
270
+ }
271
+ },
272
+ ratio
273
+ };
274
+ }
275
+
276
+ // src/color/name.ts
277
+ var NAMED_COLORS = {
278
+ black: "#000000",
279
+ white: "#FFFFFF",
280
+ red: "#FF0000",
281
+ green: "#008000",
282
+ blue: "#0000FF",
283
+ yellow: "#FFFF00",
284
+ cyan: "#00FFFF",
285
+ magenta: "#FF00FF",
286
+ orange: "#FFA500",
287
+ purple: "#800080",
288
+ pink: "#FFC0CB",
289
+ brown: "#A52A2A",
290
+ gray: "#808080",
291
+ silver: "#C0C0C0",
292
+ maroon: "#800000",
293
+ navy: "#000080",
294
+ teal: "#008080",
295
+ olive: "#808000",
296
+ lime: "#00FF00",
297
+ aqua: "#00FFFF",
298
+ coral: "#FF7F50",
299
+ salmon: "#FA8072",
300
+ gold: "#FFD700",
301
+ khaki: "#F0E68C",
302
+ plum: "#DDA0DD",
303
+ violet: "#EE82EE",
304
+ indigo: "#4B0082",
305
+ beige: "#F5F5DC",
306
+ ivory: "#FFFFF0",
307
+ lavender: "#E6E6FA"
308
+ };
309
+ function euclideanDistance(r1, g1, b1, r2, g2, b2) {
310
+ return Math.sqrt(
311
+ Math.pow(r1 - r2, 2) + Math.pow(g1 - g2, 2) + Math.pow(b1 - b2, 2)
312
+ );
313
+ }
314
+ function colorName(input) {
315
+ const parsed = parseColor(input);
316
+ const { r, g, b } = parsed.values.rgb;
317
+ let closestName = "";
318
+ let closestHex = "";
319
+ let closestDistance = Infinity;
320
+ for (const [name, hex] of Object.entries(NAMED_COLORS)) {
321
+ const namedRgb = hexToRgb(hex);
322
+ const distance = euclideanDistance(r, g, b, namedRgb.r, namedRgb.g, namedRgb.b);
323
+ if (distance < closestDistance) {
324
+ closestDistance = distance;
325
+ closestName = name;
326
+ closestHex = hex.toLowerCase();
327
+ }
328
+ }
329
+ return {
330
+ name: closestName,
331
+ exact: closestDistance === 0,
332
+ hex: closestHex
333
+ };
334
+ }
335
+
336
+ exports.blendColors = blendColors;
337
+ exports.colorName = colorName;
338
+ exports.contrastRatio = contrastRatio;
339
+ exports.convertColor = convertColor;
340
+ exports.generatePalette = generatePalette;
341
+ exports.hexToRgb = hexToRgb;
342
+ exports.hslToRgb = hslToRgb;
343
+ exports.parseColor = parseColor;
344
+ exports.rgbToHex = rgbToHex;
345
+ exports.rgbToHsl = rgbToHsl;
346
+ //# sourceMappingURL=index.js.map
347
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/color/parse.ts","../../src/color/convert.ts","../../src/color/contrast.ts","../../src/color/palette.ts","../../src/color/blend.ts","../../src/color/name.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { RGB, HSL, ColorConversionResult } from './types';\n\nexport function hexToRgb(hex: string): RGB {\n let h = hex.replace(/^#/, '');\n if (h.length === 3) {\n h = h[0] + h[0] + h[1] + h[1] + h[2] + h[2];\n }\n if (h.length !== 6) {\n throw new Error(`Invalid hex color: ${hex}`);\n }\n const num = parseInt(h, 16);\n if (isNaN(num)) {\n throw new Error(`Invalid hex color: ${hex}`);\n }\n return {\n r: (num >> 16) & 255,\n g: (num >> 8) & 255,\n b: num & 255,\n };\n}\n\nexport function hslToRgb(h: number, s: number, l: number): RGB {\n const sNorm = s / 100;\n const lNorm = l / 100;\n\n const c = (1 - Math.abs(2 * lNorm - 1)) * sNorm;\n const hPrime = h / 60;\n const x = c * (1 - Math.abs((hPrime % 2) - 1));\n const m = lNorm - c / 2;\n\n let r1 = 0;\n let g1 = 0;\n let b1 = 0;\n\n if (hPrime >= 0 && hPrime < 1) {\n r1 = c; g1 = x; b1 = 0;\n } else if (hPrime >= 1 && hPrime < 2) {\n r1 = x; g1 = c; b1 = 0;\n } else if (hPrime >= 2 && hPrime < 3) {\n r1 = 0; g1 = c; b1 = x;\n } else if (hPrime >= 3 && hPrime < 4) {\n r1 = 0; g1 = x; b1 = c;\n } else if (hPrime >= 4 && hPrime < 5) {\n r1 = x; g1 = 0; b1 = c;\n } else if (hPrime >= 5 && hPrime < 6) {\n r1 = c; g1 = 0; b1 = x;\n }\n\n return {\n r: Math.round((r1 + m) * 255),\n g: Math.round((g1 + m) * 255),\n b: Math.round((b1 + m) * 255),\n };\n}\n\nexport function rgbToHsl(r: number, g: number, b: number): HSL {\n const rNorm = r / 255;\n const gNorm = g / 255;\n const bNorm = b / 255;\n\n const max = Math.max(rNorm, gNorm, bNorm);\n const min = Math.min(rNorm, gNorm, bNorm);\n const delta = max - min;\n\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (delta !== 0) {\n s = l > 0.5 ? delta / (2 - max - min) : delta / (max + min);\n\n if (max === rNorm) {\n h = ((gNorm - bNorm) / delta + (gNorm < bNorm ? 6 : 0)) * 60;\n } else if (max === gNorm) {\n h = ((bNorm - rNorm) / delta + 2) * 60;\n } else {\n h = ((rNorm - gNorm) / delta + 4) * 60;\n }\n }\n\n return {\n h: Math.round(h),\n s: Math.round(s * 100),\n l: Math.round(l * 100),\n };\n}\n\nexport function rgbToHex(r: number, g: number, b: number): string {\n const toHex = (c: number): string => {\n const hex = Math.max(0, Math.min(255, c)).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n };\n return '#' + toHex(r) + toHex(g) + toHex(b);\n}\n\nexport function parseColor(input: string): ColorConversionResult {\n const trimmed = input.trim().toLowerCase();\n\n let rgb: RGB;\n\n // Try hex format\n const hexMatch = trimmed.match(/^#([0-9a-f]{3}|[0-9a-f]{6})$/);\n if (hexMatch) {\n rgb = hexToRgb(trimmed);\n }\n // Try rgb() format\n else {\n const rgbMatch = trimmed.match(/^rgb\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*\\)$/);\n if (rgbMatch) {\n rgb = {\n r: Math.min(255, parseInt(rgbMatch[1], 10)),\n g: Math.min(255, parseInt(rgbMatch[2], 10)),\n b: Math.min(255, parseInt(rgbMatch[3], 10)),\n };\n }\n // Try hsl() format\n else {\n const hslMatch = trimmed.match(/^hsl\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})%\\s*,\\s*(\\d{1,3})%\\s*\\)$/);\n if (hslMatch) {\n const h = Math.min(360, parseInt(hslMatch[1], 10));\n const s = Math.min(100, parseInt(hslMatch[2], 10));\n const l = Math.min(100, parseInt(hslMatch[3], 10));\n rgb = hslToRgb(h, s, l);\n } else {\n throw new Error(`Unsupported color format: ${input}`);\n }\n }\n }\n\n const hsl = rgbToHsl(rgb.r, rgb.g, rgb.b);\n const hex = rgbToHex(rgb.r, rgb.g, rgb.b);\n\n return {\n hex,\n rgb: `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`,\n hsl: `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`,\n values: {\n rgb,\n hsl,\n },\n };\n}\n","import type { ColorFormat } from './types';\nimport { parseColor } from './parse';\n\nexport function convertColor(input: string, to: ColorFormat): string {\n const result = parseColor(input);\n\n switch (to) {\n case 'hex':\n return result.hex;\n case 'rgb':\n return result.rgb;\n case 'hsl':\n return result.hsl;\n default:\n throw new Error(`Unsupported target format: ${to}`);\n }\n}\n","import type { ContrastResult } from './types';\nimport { parseColor } from './parse';\n\nfunction srgbChannel(c: number): number {\n const normalized = c / 255;\n return normalized <= 0.03928\n ? normalized / 12.92\n : Math.pow((normalized + 0.055) / 1.055, 2.4);\n}\n\nfunction relativeLuminance(r: number, g: number, b: number): number {\n return 0.2126 * srgbChannel(r) + 0.7152 * srgbChannel(g) + 0.0722 * srgbChannel(b);\n}\n\nexport function contrastRatio(color1: string, color2: string): ContrastResult {\n const c1 = parseColor(color1);\n const c2 = parseColor(color2);\n\n const l1 = relativeLuminance(c1.values.rgb.r, c1.values.rgb.g, c1.values.rgb.b);\n const l2 = relativeLuminance(c2.values.rgb.r, c2.values.rgb.g, c2.values.rgb.b);\n\n const lighter = Math.max(l1, l2);\n const darker = Math.min(l1, l2);\n\n const ratio = (lighter + 0.05) / (darker + 0.05);\n const roundedRatio = Math.round(ratio * 100) / 100;\n\n return {\n ratio: roundedRatio,\n formatted: `${roundedRatio.toFixed(2)}:1`,\n aa: {\n normal: roundedRatio >= 4.5,\n large: roundedRatio >= 3,\n },\n aaa: {\n normal: roundedRatio >= 7,\n large: roundedRatio >= 4.5,\n },\n };\n}\n","import type { PaletteOptions, ColorConversionResult } from './types';\nimport { parseColor, hslToRgb, rgbToHsl, rgbToHex } from './parse';\n\nfunction hslToConversionResult(h: number, s: number, l: number): ColorConversionResult {\n const normalizedH = ((h % 360) + 360) % 360;\n const rgb = hslToRgb(normalizedH, s, l);\n const hex = rgbToHex(rgb.r, rgb.g, rgb.b);\n const hslRecalc = rgbToHsl(rgb.r, rgb.g, rgb.b);\n\n return {\n hex,\n rgb: `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`,\n hsl: `hsl(${hslRecalc.h}, ${hslRecalc.s}%, ${hslRecalc.l}%)`,\n values: {\n rgb,\n hsl: hslRecalc,\n },\n };\n}\n\nexport function generatePalette(base: string, options: PaletteOptions): ColorConversionResult[] {\n const parsed = parseColor(base);\n const { h, s, l } = parsed.values.hsl;\n const count = options.count ?? 5;\n\n switch (options.type) {\n case 'complementary': {\n return [\n hslToConversionResult(h, s, l),\n hslToConversionResult(h + 180, s, l),\n ];\n }\n\n case 'analogous': {\n const results: ColorConversionResult[] = [];\n const spread = 30;\n const step = (spread * 2) / (count - 1);\n for (let i = 0; i < count; i++) {\n const hue = h - spread + step * i;\n results.push(hslToConversionResult(hue, s, l));\n }\n return results;\n }\n\n case 'triadic': {\n return [\n hslToConversionResult(h, s, l),\n hslToConversionResult(h + 120, s, l),\n hslToConversionResult(h + 240, s, l),\n ];\n }\n\n case 'shades': {\n const results: ColorConversionResult[] = [];\n const minL = 10;\n const step = (l - minL) / (count - 1);\n for (let i = 0; i < count; i++) {\n const lightness = Math.round(l - step * i);\n results.push(hslToConversionResult(h, s, lightness));\n }\n return results;\n }\n\n case 'tints': {\n const results: ColorConversionResult[] = [];\n const maxL = 95;\n const step = (maxL - l) / (count - 1);\n for (let i = 0; i < count; i++) {\n const lightness = Math.round(l + step * i);\n results.push(hslToConversionResult(h, s, lightness));\n }\n return results;\n }\n\n default:\n throw new Error(`Unsupported palette type: ${options.type}`);\n }\n}\n","import type { BlendResult } from './types';\nimport { parseColor, rgbToHex, rgbToHsl } from './parse';\n\nexport function blendColors(color1: string, color2: string, ratio: number = 0.5): BlendResult {\n if (ratio < 0 || ratio > 1) {\n throw new Error(`Ratio must be between 0 and 1, got: ${ratio}`);\n }\n\n const c1 = parseColor(color1);\n const c2 = parseColor(color2);\n\n const r = Math.round(c1.values.rgb.r * (1 - ratio) + c2.values.rgb.r * ratio);\n const g = Math.round(c1.values.rgb.g * (1 - ratio) + c2.values.rgb.g * ratio);\n const b = Math.round(c1.values.rgb.b * (1 - ratio) + c2.values.rgb.b * ratio);\n\n const hex = rgbToHex(r, g, b);\n const hsl = rgbToHsl(r, g, b);\n\n return {\n color: {\n hex,\n rgb: `rgb(${r}, ${g}, ${b})`,\n hsl: `hsl(${hsl.h}, ${hsl.s}%, ${hsl.l}%)`,\n values: {\n rgb: { r, g, b },\n hsl,\n },\n },\n ratio,\n };\n}\n","import type { ColorNameResult } from './types';\nimport { parseColor, hexToRgb } from './parse';\n\nconst NAMED_COLORS: Record<string, string> = {\n black: '#000000',\n white: '#FFFFFF',\n red: '#FF0000',\n green: '#008000',\n blue: '#0000FF',\n yellow: '#FFFF00',\n cyan: '#00FFFF',\n magenta: '#FF00FF',\n orange: '#FFA500',\n purple: '#800080',\n pink: '#FFC0CB',\n brown: '#A52A2A',\n gray: '#808080',\n silver: '#C0C0C0',\n maroon: '#800000',\n navy: '#000080',\n teal: '#008080',\n olive: '#808000',\n lime: '#00FF00',\n aqua: '#00FFFF',\n coral: '#FF7F50',\n salmon: '#FA8072',\n gold: '#FFD700',\n khaki: '#F0E68C',\n plum: '#DDA0DD',\n violet: '#EE82EE',\n indigo: '#4B0082',\n beige: '#F5F5DC',\n ivory: '#FFFFF0',\n lavender: '#E6E6FA',\n};\n\nfunction euclideanDistance(r1: number, g1: number, b1: number, r2: number, g2: number, b2: number): number {\n return Math.sqrt(\n Math.pow(r1 - r2, 2) +\n Math.pow(g1 - g2, 2) +\n Math.pow(b1 - b2, 2)\n );\n}\n\nexport function colorName(input: string): ColorNameResult {\n const parsed = parseColor(input);\n const { r, g, b } = parsed.values.rgb;\n\n let closestName = '';\n let closestHex = '';\n let closestDistance = Infinity;\n\n for (const [name, hex] of Object.entries(NAMED_COLORS)) {\n const namedRgb = hexToRgb(hex);\n const distance = euclideanDistance(r, g, b, namedRgb.r, namedRgb.g, namedRgb.b);\n\n if (distance < closestDistance) {\n closestDistance = distance;\n closestName = name;\n closestHex = hex.toLowerCase();\n }\n }\n\n return {\n name: closestName,\n exact: closestDistance === 0,\n hex: closestHex,\n };\n}\n"]}