capivara-solidaria-ts-sdk 1.0.1
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.
- package/dist/enums/index.d.mts +1005 -0
- package/dist/enums/index.d.ts +1005 -0
- package/dist/enums/index.js +6603 -0
- package/dist/enums/index.js.map +1 -0
- package/dist/enums/index.mjs +6555 -0
- package/dist/enums/index.mjs.map +1 -0
- package/dist/index.d.mts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +6715 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +6663 -0
- package/dist/index.mjs.map +1 -0
- package/dist/utils/index.d.mts +40 -0
- package/dist/utils/index.d.ts +40 -0
- package/dist/utils/index.js +140 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/index.mjs +110 -0
- package/dist/utils/index.mjs.map +1 -0
- package/package.json +27 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ZodError } from 'zod';
|
|
2
|
+
|
|
3
|
+
type ColorVariants = {
|
|
4
|
+
ultraLight: string;
|
|
5
|
+
tint: string;
|
|
6
|
+
original: string;
|
|
7
|
+
shade: string;
|
|
8
|
+
deep: string;
|
|
9
|
+
};
|
|
10
|
+
declare function generateColorVariants(hex: string): ColorVariants;
|
|
11
|
+
|
|
12
|
+
declare const isValidEmail: (email: string) => boolean;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Converts a given `File` object into a Base64-encoded string.
|
|
16
|
+
*
|
|
17
|
+
* This utility wraps the `FileReader` API in a `Promise`, allowing
|
|
18
|
+
* asynchronous conversion of files (e.g., images, PDFs) into a string
|
|
19
|
+
* that can be used for inline display, uploading, or storage.
|
|
20
|
+
*
|
|
21
|
+
* Example usage:
|
|
22
|
+
* ```ts
|
|
23
|
+
* const fileInput = document.querySelector('input[type="file"]');
|
|
24
|
+
* const file = fileInput.files[0];
|
|
25
|
+
* const base64String = await toBase64(file);
|
|
26
|
+
* console.log(base64String); // data:image/png;base64,iVBORw0...
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @param {File} file - The file to convert to Base64.
|
|
30
|
+
* @returns {Promise<string>} A promise that resolves with the Base64 string
|
|
31
|
+
* representation of the file, or rejects if an error occurs during reading.
|
|
32
|
+
*/
|
|
33
|
+
declare const toBase64: (file: File) => Promise<string>;
|
|
34
|
+
|
|
35
|
+
declare const ZodErrorFormatter: (err: ZodError) => {
|
|
36
|
+
path: string;
|
|
37
|
+
message: string;
|
|
38
|
+
}[];
|
|
39
|
+
|
|
40
|
+
export { ZodErrorFormatter, generateColorVariants, isValidEmail, toBase64 };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ZodError } from 'zod';
|
|
2
|
+
|
|
3
|
+
type ColorVariants = {
|
|
4
|
+
ultraLight: string;
|
|
5
|
+
tint: string;
|
|
6
|
+
original: string;
|
|
7
|
+
shade: string;
|
|
8
|
+
deep: string;
|
|
9
|
+
};
|
|
10
|
+
declare function generateColorVariants(hex: string): ColorVariants;
|
|
11
|
+
|
|
12
|
+
declare const isValidEmail: (email: string) => boolean;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Converts a given `File` object into a Base64-encoded string.
|
|
16
|
+
*
|
|
17
|
+
* This utility wraps the `FileReader` API in a `Promise`, allowing
|
|
18
|
+
* asynchronous conversion of files (e.g., images, PDFs) into a string
|
|
19
|
+
* that can be used for inline display, uploading, or storage.
|
|
20
|
+
*
|
|
21
|
+
* Example usage:
|
|
22
|
+
* ```ts
|
|
23
|
+
* const fileInput = document.querySelector('input[type="file"]');
|
|
24
|
+
* const file = fileInput.files[0];
|
|
25
|
+
* const base64String = await toBase64(file);
|
|
26
|
+
* console.log(base64String); // data:image/png;base64,iVBORw0...
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @param {File} file - The file to convert to Base64.
|
|
30
|
+
* @returns {Promise<string>} A promise that resolves with the Base64 string
|
|
31
|
+
* representation of the file, or rejects if an error occurs during reading.
|
|
32
|
+
*/
|
|
33
|
+
declare const toBase64: (file: File) => Promise<string>;
|
|
34
|
+
|
|
35
|
+
declare const ZodErrorFormatter: (err: ZodError) => {
|
|
36
|
+
path: string;
|
|
37
|
+
message: string;
|
|
38
|
+
}[];
|
|
39
|
+
|
|
40
|
+
export { ZodErrorFormatter, generateColorVariants, isValidEmail, toBase64 };
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/utils/index.ts
|
|
21
|
+
var utils_exports = {};
|
|
22
|
+
__export(utils_exports, {
|
|
23
|
+
ZodErrorFormatter: () => ZodErrorFormatter,
|
|
24
|
+
generateColorVariants: () => generateColorVariants,
|
|
25
|
+
isValidEmail: () => isValidEmail,
|
|
26
|
+
toBase64: () => toBase64
|
|
27
|
+
});
|
|
28
|
+
module.exports = __toCommonJS(utils_exports);
|
|
29
|
+
|
|
30
|
+
// src/utils/generate-collor-pallete/index.ts
|
|
31
|
+
function hexToHsl(hex) {
|
|
32
|
+
const clean = hex.replace("#", "");
|
|
33
|
+
const r = parseInt(clean.slice(0, 2), 16) / 255;
|
|
34
|
+
const g = parseInt(clean.slice(2, 4), 16) / 255;
|
|
35
|
+
const b = parseInt(clean.slice(4, 6), 16) / 255;
|
|
36
|
+
const max = Math.max(r, g, b);
|
|
37
|
+
const min = Math.min(r, g, b);
|
|
38
|
+
let h = 0;
|
|
39
|
+
let s = 0;
|
|
40
|
+
const l = (max + min) / 2;
|
|
41
|
+
if (max !== min) {
|
|
42
|
+
const d = max - min;
|
|
43
|
+
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
44
|
+
switch (max) {
|
|
45
|
+
case r:
|
|
46
|
+
h = ((g - b) / d + (g < b ? 6 : 0)) / 6;
|
|
47
|
+
break;
|
|
48
|
+
case g:
|
|
49
|
+
h = ((b - r) / d + 2) / 6;
|
|
50
|
+
break;
|
|
51
|
+
case b:
|
|
52
|
+
h = ((r - g) / d + 4) / 6;
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return [Math.round(h * 360), Math.round(s * 100), Math.round(l * 100)];
|
|
57
|
+
}
|
|
58
|
+
function hslToHex(h, s, l) {
|
|
59
|
+
const sNorm = s / 100;
|
|
60
|
+
const lNorm = l / 100;
|
|
61
|
+
const c = (1 - Math.abs(2 * lNorm - 1)) * sNorm;
|
|
62
|
+
const x = c * (1 - Math.abs(h / 60 % 2 - 1));
|
|
63
|
+
const m = lNorm - c / 2;
|
|
64
|
+
let r = 0, g = 0, b = 0;
|
|
65
|
+
if (h < 60) {
|
|
66
|
+
r = c;
|
|
67
|
+
g = x;
|
|
68
|
+
b = 0;
|
|
69
|
+
} else if (h < 120) {
|
|
70
|
+
r = x;
|
|
71
|
+
g = c;
|
|
72
|
+
b = 0;
|
|
73
|
+
} else if (h < 180) {
|
|
74
|
+
r = 0;
|
|
75
|
+
g = c;
|
|
76
|
+
b = x;
|
|
77
|
+
} else if (h < 240) {
|
|
78
|
+
r = 0;
|
|
79
|
+
g = x;
|
|
80
|
+
b = c;
|
|
81
|
+
} else if (h < 300) {
|
|
82
|
+
r = x;
|
|
83
|
+
g = 0;
|
|
84
|
+
b = c;
|
|
85
|
+
} else {
|
|
86
|
+
r = c;
|
|
87
|
+
g = 0;
|
|
88
|
+
b = x;
|
|
89
|
+
}
|
|
90
|
+
const toHex = (n) => Math.round((n + m) * 255).toString(16).padStart(2, "0");
|
|
91
|
+
return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
|
|
92
|
+
}
|
|
93
|
+
function clamp(value, min, max) {
|
|
94
|
+
return Math.min(Math.max(value, min), max);
|
|
95
|
+
}
|
|
96
|
+
function generateColorVariants(hex) {
|
|
97
|
+
const [h, s, l] = hexToHsl(hex);
|
|
98
|
+
const ultraLight = hslToHex(h, clamp(s * 0.4, 10, 50), clamp(l + 35, 85, 97));
|
|
99
|
+
const tint = hslToHex(h, clamp(s * 0.8, 20, 90), clamp(l + 18, 60, 85));
|
|
100
|
+
const shade = hslToHex(h, clamp(s * 1.05, 20, 100), clamp(l - 18, 20, 60));
|
|
101
|
+
const deep = hslToHex(h, clamp(s * 0.9, 15, 90), clamp(l - 38, 8, 35));
|
|
102
|
+
return {
|
|
103
|
+
ultraLight,
|
|
104
|
+
tint,
|
|
105
|
+
original: hex,
|
|
106
|
+
shade,
|
|
107
|
+
deep
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// src/utils/is-valid-email/index.ts
|
|
112
|
+
var isValidEmail = (email) => {
|
|
113
|
+
const trimmed = email.trim();
|
|
114
|
+
if (trimmed.length === 0 || trimmed.length > 254) return false;
|
|
115
|
+
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(trimmed);
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
// src/utils/to-base-64/index.ts
|
|
119
|
+
var toBase64 = (file) => new Promise((resolve, reject) => {
|
|
120
|
+
const reader = new FileReader();
|
|
121
|
+
reader.onload = () => resolve(reader.result);
|
|
122
|
+
reader.onerror = reject;
|
|
123
|
+
reader.readAsDataURL(file);
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
// src/utils/zod-error-formatter/index.ts
|
|
127
|
+
var ZodErrorFormatter = (err) => {
|
|
128
|
+
return err.issues.map((e) => ({
|
|
129
|
+
path: e.path.join("."),
|
|
130
|
+
message: e.message
|
|
131
|
+
}));
|
|
132
|
+
};
|
|
133
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
134
|
+
0 && (module.exports = {
|
|
135
|
+
ZodErrorFormatter,
|
|
136
|
+
generateColorVariants,
|
|
137
|
+
isValidEmail,
|
|
138
|
+
toBase64
|
|
139
|
+
});
|
|
140
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/index.ts","../../src/utils/generate-collor-pallete/index.ts","../../src/utils/is-valid-email/index.ts","../../src/utils/to-base-64/index.ts","../../src/utils/zod-error-formatter/index.ts"],"sourcesContent":["export * from \"./generate-collor-pallete\";\r\nexport * from \"./is-valid-email\";\r\nexport * from \"./to-base-64\";\r\nexport * from \"./zod-error-formatter\";\r\n","type ColorVariants = {\r\n ultraLight: string\r\n tint: string\r\n original: string\r\n shade: string\r\n deep: string\r\n}\r\n\r\nfunction hexToHsl(hex: string): [number, number, number] {\r\n const clean = hex.replace('#', '')\r\n const r = parseInt(clean.slice(0, 2), 16) / 255\r\n const g = parseInt(clean.slice(2, 4), 16) / 255\r\n const b = parseInt(clean.slice(4, 6), 16) / 255\r\n\r\n const max = Math.max(r, g, b)\r\n const min = Math.min(r, g, b)\r\n let h = 0\r\n let s = 0\r\n const l = (max + min) / 2\r\n\r\n if (max !== min) {\r\n const d = max - min\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min)\r\n\r\n switch (max) {\r\n case r:\r\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6\r\n break\r\n case g:\r\n h = ((b - r) / d + 2) / 6\r\n break\r\n case b:\r\n h = ((r - g) / d + 4) / 6\r\n break\r\n }\r\n }\r\n\r\n return [Math.round(h * 360), Math.round(s * 100), Math.round(l * 100)]\r\n}\r\n\r\nfunction hslToHex(h: number, s: number, l: number): string {\r\n const sNorm = s / 100\r\n const lNorm = l / 100\r\n\r\n const c = (1 - Math.abs(2 * lNorm - 1)) * sNorm\r\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1))\r\n const m = lNorm - c / 2\r\n\r\n let r = 0,\r\n g = 0,\r\n b = 0\r\n\r\n if (h < 60) {\r\n r = c\r\n g = x\r\n b = 0\r\n } else if (h < 120) {\r\n r = x\r\n g = c\r\n b = 0\r\n } else if (h < 180) {\r\n r = 0\r\n g = c\r\n b = x\r\n } else if (h < 240) {\r\n r = 0\r\n g = x\r\n b = c\r\n } else if (h < 300) {\r\n r = x\r\n g = 0\r\n b = c\r\n } else {\r\n r = c\r\n g = 0\r\n b = x\r\n }\r\n\r\n const toHex = (n: number) =>\r\n Math.round((n + m) * 255)\r\n .toString(16)\r\n .padStart(2, '0')\r\n\r\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`\r\n}\r\n\r\nfunction clamp(value: number, min: number, max: number): number {\r\n return Math.min(Math.max(value, min), max)\r\n}\r\n\r\nexport function generateColorVariants(hex: string): ColorVariants {\r\n const [h, s, l] = hexToHsl(hex)\r\n\r\n // ultraLight: very washed out, close to white — high lightness, low saturation\r\n const ultraLight = hslToHex(h, clamp(s * 0.4, 10, 50), clamp(l + 35, 85, 97))\r\n\r\n // tint: lighter but still recognizable — bumps lightness, softens saturation slightly\r\n const tint = hslToHex(h, clamp(s * 0.8, 20, 90), clamp(l + 18, 60, 85))\r\n\r\n // shade: darker, richer version — drops lightness, keeps saturation\r\n const shade = hslToHex(h, clamp(s * 1.05, 20, 100), clamp(l - 18, 20, 60))\r\n\r\n // deep: much darker, almost shadow-like — significantly drops lightness\r\n const deep = hslToHex(h, clamp(s * 0.9, 15, 90), clamp(l - 38, 8, 35))\r\n\r\n return {\r\n ultraLight,\r\n tint,\r\n original: hex,\r\n shade,\r\n deep\r\n }\r\n}\r\n","export const isValidEmail = (email: string): boolean => {\r\n const trimmed = email.trim()\r\n if (trimmed.length === 0 || trimmed.length > 254) return false\r\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(trimmed)\r\n}\r\n","/**\r\n * Converts a given `File` object into a Base64-encoded string.\r\n *\r\n * This utility wraps the `FileReader` API in a `Promise`, allowing\r\n * asynchronous conversion of files (e.g., images, PDFs) into a string\r\n * that can be used for inline display, uploading, or storage.\r\n *\r\n * Example usage:\r\n * ```ts\r\n * const fileInput = document.querySelector('input[type=\"file\"]');\r\n * const file = fileInput.files[0];\r\n * const base64String = await toBase64(file);\r\n * console.log(base64String); // data:image/png;base64,iVBORw0...\r\n * ```\r\n *\r\n * @param {File} file - The file to convert to Base64.\r\n * @returns {Promise<string>} A promise that resolves with the Base64 string\r\n * representation of the file, or rejects if an error occurs during reading.\r\n */\r\nexport const toBase64 = (file: File): Promise<string> =>\r\n new Promise((resolve, reject) => {\r\n const reader = new FileReader()\r\n reader.onload = () => resolve(reader.result as string)\r\n reader.onerror = reject\r\n reader.readAsDataURL(file)\r\n })\r\n","import type { ZodError } from \"zod\";\r\n\r\nexport const ZodErrorFormatter = (err: ZodError) => {\r\n return err.issues.map((e) => ({\r\n path: e.path.join(\".\"),\r\n message: e.message,\r\n }));\r\n};\r\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// src/utils/generate-collor-pallete/index.ts
|
|
2
|
+
function hexToHsl(hex) {
|
|
3
|
+
const clean = hex.replace("#", "");
|
|
4
|
+
const r = parseInt(clean.slice(0, 2), 16) / 255;
|
|
5
|
+
const g = parseInt(clean.slice(2, 4), 16) / 255;
|
|
6
|
+
const b = parseInt(clean.slice(4, 6), 16) / 255;
|
|
7
|
+
const max = Math.max(r, g, b);
|
|
8
|
+
const min = Math.min(r, g, b);
|
|
9
|
+
let h = 0;
|
|
10
|
+
let s = 0;
|
|
11
|
+
const l = (max + min) / 2;
|
|
12
|
+
if (max !== min) {
|
|
13
|
+
const d = max - min;
|
|
14
|
+
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
15
|
+
switch (max) {
|
|
16
|
+
case r:
|
|
17
|
+
h = ((g - b) / d + (g < b ? 6 : 0)) / 6;
|
|
18
|
+
break;
|
|
19
|
+
case g:
|
|
20
|
+
h = ((b - r) / d + 2) / 6;
|
|
21
|
+
break;
|
|
22
|
+
case b:
|
|
23
|
+
h = ((r - g) / d + 4) / 6;
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return [Math.round(h * 360), Math.round(s * 100), Math.round(l * 100)];
|
|
28
|
+
}
|
|
29
|
+
function hslToHex(h, s, l) {
|
|
30
|
+
const sNorm = s / 100;
|
|
31
|
+
const lNorm = l / 100;
|
|
32
|
+
const c = (1 - Math.abs(2 * lNorm - 1)) * sNorm;
|
|
33
|
+
const x = c * (1 - Math.abs(h / 60 % 2 - 1));
|
|
34
|
+
const m = lNorm - c / 2;
|
|
35
|
+
let r = 0, g = 0, b = 0;
|
|
36
|
+
if (h < 60) {
|
|
37
|
+
r = c;
|
|
38
|
+
g = x;
|
|
39
|
+
b = 0;
|
|
40
|
+
} else if (h < 120) {
|
|
41
|
+
r = x;
|
|
42
|
+
g = c;
|
|
43
|
+
b = 0;
|
|
44
|
+
} else if (h < 180) {
|
|
45
|
+
r = 0;
|
|
46
|
+
g = c;
|
|
47
|
+
b = x;
|
|
48
|
+
} else if (h < 240) {
|
|
49
|
+
r = 0;
|
|
50
|
+
g = x;
|
|
51
|
+
b = c;
|
|
52
|
+
} else if (h < 300) {
|
|
53
|
+
r = x;
|
|
54
|
+
g = 0;
|
|
55
|
+
b = c;
|
|
56
|
+
} else {
|
|
57
|
+
r = c;
|
|
58
|
+
g = 0;
|
|
59
|
+
b = x;
|
|
60
|
+
}
|
|
61
|
+
const toHex = (n) => Math.round((n + m) * 255).toString(16).padStart(2, "0");
|
|
62
|
+
return `#${toHex(r)}${toHex(g)}${toHex(b)}`;
|
|
63
|
+
}
|
|
64
|
+
function clamp(value, min, max) {
|
|
65
|
+
return Math.min(Math.max(value, min), max);
|
|
66
|
+
}
|
|
67
|
+
function generateColorVariants(hex) {
|
|
68
|
+
const [h, s, l] = hexToHsl(hex);
|
|
69
|
+
const ultraLight = hslToHex(h, clamp(s * 0.4, 10, 50), clamp(l + 35, 85, 97));
|
|
70
|
+
const tint = hslToHex(h, clamp(s * 0.8, 20, 90), clamp(l + 18, 60, 85));
|
|
71
|
+
const shade = hslToHex(h, clamp(s * 1.05, 20, 100), clamp(l - 18, 20, 60));
|
|
72
|
+
const deep = hslToHex(h, clamp(s * 0.9, 15, 90), clamp(l - 38, 8, 35));
|
|
73
|
+
return {
|
|
74
|
+
ultraLight,
|
|
75
|
+
tint,
|
|
76
|
+
original: hex,
|
|
77
|
+
shade,
|
|
78
|
+
deep
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// src/utils/is-valid-email/index.ts
|
|
83
|
+
var isValidEmail = (email) => {
|
|
84
|
+
const trimmed = email.trim();
|
|
85
|
+
if (trimmed.length === 0 || trimmed.length > 254) return false;
|
|
86
|
+
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(trimmed);
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
// src/utils/to-base-64/index.ts
|
|
90
|
+
var toBase64 = (file) => new Promise((resolve, reject) => {
|
|
91
|
+
const reader = new FileReader();
|
|
92
|
+
reader.onload = () => resolve(reader.result);
|
|
93
|
+
reader.onerror = reject;
|
|
94
|
+
reader.readAsDataURL(file);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
// src/utils/zod-error-formatter/index.ts
|
|
98
|
+
var ZodErrorFormatter = (err) => {
|
|
99
|
+
return err.issues.map((e) => ({
|
|
100
|
+
path: e.path.join("."),
|
|
101
|
+
message: e.message
|
|
102
|
+
}));
|
|
103
|
+
};
|
|
104
|
+
export {
|
|
105
|
+
ZodErrorFormatter,
|
|
106
|
+
generateColorVariants,
|
|
107
|
+
isValidEmail,
|
|
108
|
+
toBase64
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/utils/generate-collor-pallete/index.ts","../../src/utils/is-valid-email/index.ts","../../src/utils/to-base-64/index.ts","../../src/utils/zod-error-formatter/index.ts"],"sourcesContent":["type ColorVariants = {\r\n ultraLight: string\r\n tint: string\r\n original: string\r\n shade: string\r\n deep: string\r\n}\r\n\r\nfunction hexToHsl(hex: string): [number, number, number] {\r\n const clean = hex.replace('#', '')\r\n const r = parseInt(clean.slice(0, 2), 16) / 255\r\n const g = parseInt(clean.slice(2, 4), 16) / 255\r\n const b = parseInt(clean.slice(4, 6), 16) / 255\r\n\r\n const max = Math.max(r, g, b)\r\n const min = Math.min(r, g, b)\r\n let h = 0\r\n let s = 0\r\n const l = (max + min) / 2\r\n\r\n if (max !== min) {\r\n const d = max - min\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min)\r\n\r\n switch (max) {\r\n case r:\r\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6\r\n break\r\n case g:\r\n h = ((b - r) / d + 2) / 6\r\n break\r\n case b:\r\n h = ((r - g) / d + 4) / 6\r\n break\r\n }\r\n }\r\n\r\n return [Math.round(h * 360), Math.round(s * 100), Math.round(l * 100)]\r\n}\r\n\r\nfunction hslToHex(h: number, s: number, l: number): string {\r\n const sNorm = s / 100\r\n const lNorm = l / 100\r\n\r\n const c = (1 - Math.abs(2 * lNorm - 1)) * sNorm\r\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1))\r\n const m = lNorm - c / 2\r\n\r\n let r = 0,\r\n g = 0,\r\n b = 0\r\n\r\n if (h < 60) {\r\n r = c\r\n g = x\r\n b = 0\r\n } else if (h < 120) {\r\n r = x\r\n g = c\r\n b = 0\r\n } else if (h < 180) {\r\n r = 0\r\n g = c\r\n b = x\r\n } else if (h < 240) {\r\n r = 0\r\n g = x\r\n b = c\r\n } else if (h < 300) {\r\n r = x\r\n g = 0\r\n b = c\r\n } else {\r\n r = c\r\n g = 0\r\n b = x\r\n }\r\n\r\n const toHex = (n: number) =>\r\n Math.round((n + m) * 255)\r\n .toString(16)\r\n .padStart(2, '0')\r\n\r\n return `#${toHex(r)}${toHex(g)}${toHex(b)}`\r\n}\r\n\r\nfunction clamp(value: number, min: number, max: number): number {\r\n return Math.min(Math.max(value, min), max)\r\n}\r\n\r\nexport function generateColorVariants(hex: string): ColorVariants {\r\n const [h, s, l] = hexToHsl(hex)\r\n\r\n // ultraLight: very washed out, close to white — high lightness, low saturation\r\n const ultraLight = hslToHex(h, clamp(s * 0.4, 10, 50), clamp(l + 35, 85, 97))\r\n\r\n // tint: lighter but still recognizable — bumps lightness, softens saturation slightly\r\n const tint = hslToHex(h, clamp(s * 0.8, 20, 90), clamp(l + 18, 60, 85))\r\n\r\n // shade: darker, richer version — drops lightness, keeps saturation\r\n const shade = hslToHex(h, clamp(s * 1.05, 20, 100), clamp(l - 18, 20, 60))\r\n\r\n // deep: much darker, almost shadow-like — significantly drops lightness\r\n const deep = hslToHex(h, clamp(s * 0.9, 15, 90), clamp(l - 38, 8, 35))\r\n\r\n return {\r\n ultraLight,\r\n tint,\r\n original: hex,\r\n shade,\r\n deep\r\n }\r\n}\r\n","export const isValidEmail = (email: string): boolean => {\r\n const trimmed = email.trim()\r\n if (trimmed.length === 0 || trimmed.length > 254) return false\r\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(trimmed)\r\n}\r\n","/**\r\n * Converts a given `File` object into a Base64-encoded string.\r\n *\r\n * This utility wraps the `FileReader` API in a `Promise`, allowing\r\n * asynchronous conversion of files (e.g., images, PDFs) into a string\r\n * that can be used for inline display, uploading, or storage.\r\n *\r\n * Example usage:\r\n * ```ts\r\n * const fileInput = document.querySelector('input[type=\"file\"]');\r\n * const file = fileInput.files[0];\r\n * const base64String = await toBase64(file);\r\n * console.log(base64String); // data:image/png;base64,iVBORw0...\r\n * ```\r\n *\r\n * @param {File} file - The file to convert to Base64.\r\n * @returns {Promise<string>} A promise that resolves with the Base64 string\r\n * representation of the file, or rejects if an error occurs during reading.\r\n */\r\nexport const toBase64 = (file: File): Promise<string> =>\r\n new Promise((resolve, reject) => {\r\n const reader = new FileReader()\r\n reader.onload = () => resolve(reader.result as string)\r\n reader.onerror = reject\r\n reader.readAsDataURL(file)\r\n })\r\n","import type { ZodError } from \"zod\";\r\n\r\nexport const ZodErrorFormatter = (err: ZodError) => {\r\n return err.issues.map((e) => ({\r\n path: e.path.join(\".\"),\r\n message: e.message,\r\n }));\r\n};\r\n"],"mappings":"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","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "capivara-solidaria-ts-sdk",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.mjs",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsup",
|
|
13
|
+
"prepare": "npm run build"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [],
|
|
16
|
+
"author": "",
|
|
17
|
+
"license": "ISC",
|
|
18
|
+
"type": "commonjs",
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"prettier": "^3.9.0",
|
|
21
|
+
"tsup": "^8.5.1",
|
|
22
|
+
"typescript": "^5.9.3"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"zod": "^4.4.3"
|
|
26
|
+
}
|
|
27
|
+
}
|