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.
@@ -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":";AAQA,SAAS,SAAS,KAAuC;AACvD,QAAM,QAAQ,IAAI,QAAQ,KAAK,EAAE;AACjC,QAAM,IAAI,SAAS,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI;AAC5C,QAAM,IAAI,SAAS,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI;AAC5C,QAAM,IAAI,SAAS,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI;AAE5C,QAAM,MAAM,KAAK,IAAI,GAAG,GAAG,CAAC;AAC5B,QAAM,MAAM,KAAK,IAAI,GAAG,GAAG,CAAC;AAC5B,MAAI,IAAI;AACR,MAAI,IAAI;AACR,QAAM,KAAK,MAAM,OAAO;AAExB,MAAI,QAAQ,KAAK;AACf,UAAM,IAAI,MAAM;AAChB,QAAI,IAAI,MAAM,KAAK,IAAI,MAAM,OAAO,KAAK,MAAM;AAE/C,YAAQ,KAAK;AAAA,MACX,KAAK;AACH,cAAM,IAAI,KAAK,KAAK,IAAI,IAAI,IAAI,MAAM;AACtC;AAAA,MACF,KAAK;AACH,cAAM,IAAI,KAAK,IAAI,KAAK;AACxB;AAAA,MACF,KAAK;AACH,cAAM,IAAI,KAAK,IAAI,KAAK;AACxB;AAAA,IACJ;AAAA,EACF;AAEA,SAAO,CAAC,KAAK,MAAM,IAAI,GAAG,GAAG,KAAK,MAAM,IAAI,GAAG,GAAG,KAAK,MAAM,IAAI,GAAG,CAAC;AACvE;AAEA,SAAS,SAAS,GAAW,GAAW,GAAmB;AACzD,QAAM,QAAQ,IAAI;AAClB,QAAM,QAAQ,IAAI;AAElB,QAAM,KAAK,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,KAAK;AAC1C,QAAM,IAAI,KAAK,IAAI,KAAK,IAAM,IAAI,KAAM,IAAK,CAAC;AAC9C,QAAM,IAAI,QAAQ,IAAI;AAEtB,MAAI,IAAI,GACN,IAAI,GACJ,IAAI;AAEN,MAAI,IAAI,IAAI;AACV,QAAI;AACJ,QAAI;AACJ,QAAI;AAAA,EACN,WAAW,IAAI,KAAK;AAClB,QAAI;AACJ,QAAI;AACJ,QAAI;AAAA,EACN,WAAW,IAAI,KAAK;AAClB,QAAI;AACJ,QAAI;AACJ,QAAI;AAAA,EACN,WAAW,IAAI,KAAK;AAClB,QAAI;AACJ,QAAI;AACJ,QAAI;AAAA,EACN,WAAW,IAAI,KAAK;AAClB,QAAI;AACJ,QAAI;AACJ,QAAI;AAAA,EACN,OAAO;AACL,QAAI;AACJ,QAAI;AACJ,QAAI;AAAA,EACN;AAEA,QAAM,QAAQ,CAAC,MACb,KAAK,OAAO,IAAI,KAAK,GAAG,EACrB,SAAS,EAAE,EACX,SAAS,GAAG,GAAG;AAEpB,SAAO,IAAI,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AAC3C;AAEA,SAAS,MAAM,OAAe,KAAa,KAAqB;AAC9D,SAAO,KAAK,IAAI,KAAK,IAAI,OAAO,GAAG,GAAG,GAAG;AAC3C;AAEO,SAAS,sBAAsB,KAA4B;AAChE,QAAM,CAAC,GAAG,GAAG,CAAC,IAAI,SAAS,GAAG;AAG9B,QAAM,aAAa,SAAS,GAAG,MAAM,IAAI,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;AAG5E,QAAM,OAAO,SAAS,GAAG,MAAM,IAAI,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;AAGtE,QAAM,QAAQ,SAAS,GAAG,MAAM,IAAI,MAAM,IAAI,GAAG,GAAG,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;AAGzE,QAAM,OAAO,SAAS,GAAG,MAAM,IAAI,KAAK,IAAI,EAAE,GAAG,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;AAErE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,EACF;AACF;;;AChHO,IAAM,eAAe,CAAC,UAA2B;AACtD,QAAM,UAAU,MAAM,KAAK;AAC3B,MAAI,QAAQ,WAAW,KAAK,QAAQ,SAAS,IAAK,QAAO;AACzD,SAAO,6BAA6B,KAAK,OAAO;AAClD;;;ACeO,IAAM,WAAW,CAAC,SACvB,IAAI,QAAQ,CAAC,SAAS,WAAW;AAC/B,QAAM,SAAS,IAAI,WAAW;AAC9B,SAAO,SAAS,MAAM,QAAQ,OAAO,MAAgB;AACrD,SAAO,UAAU;AACjB,SAAO,cAAc,IAAI;AAC3B,CAAC;;;ACvBI,IAAM,oBAAoB,CAAC,QAAkB;AAClD,SAAO,IAAI,OAAO,IAAI,CAAC,OAAO;AAAA,IAC5B,MAAM,EAAE,KAAK,KAAK,GAAG;AAAA,IACrB,SAAS,EAAE;AAAA,EACb,EAAE;AACJ;","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
+ }