@ripetchor/vivi 0.0.3 → 0.0.4

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/index.d.mts CHANGED
@@ -146,6 +146,13 @@ declare function unionValidator<T extends ReadonlyArray<ViviValidator<unknown>>>
146
146
  //#region src/unknown-validator.d.ts
147
147
  declare function unknownValidator(): ViviValidator<unknown>;
148
148
  //#endregion
149
+ //#region src/shared/error-utils.d.ts
150
+ type ValidationErrors<T> = { [K in keyof T]?: T[K] extends object ? ValidationErrors<T[K]> : string };
151
+ declare function issuesToString(issues: ReadonlyArray<ViviIssue>): string;
152
+ declare function issuesToObject<T extends object>(issues: ReadonlyArray<ViviIssue>): ValidationErrors<T>;
153
+ declare function getError<T extends object>(errorsObj: ValidationErrors<T>, path: string): string | undefined;
154
+ declare function flattenErrors(issues: ReadonlyArray<ViviIssue>): Record<string, string>;
155
+ //#endregion
149
156
  //#region src/refinement-utils/number-refinements.d.ts
150
157
  declare function min(minValue: number, message?: string): (value: number) => string | true;
151
158
  declare function max(maxValue: number, message?: string): (value: number) => string | true;
@@ -221,4 +228,4 @@ declare namespace v {
221
228
  type infer<T extends ViviValidator<unknown>> = Infer<T>;
222
229
  }
223
230
  //#endregion
224
- export { ViviError, abs, arrayValidator, between, bigintValidator, booleanValidator, ceil, clamp, createValidator as customValidator, dateValidator, v as default, v, emailValidator, endsWith, even, fallback, finite, floor, gt, includes, instanceValidator, integer, length, literalValidator, lowercase, lt, match, max, maxLength, min, minLength, negative, nonEmpty, normalizeSpaces, notIncludes, nullValidator, nullableValidator, numberValidator, objectValidator, odd, optionalValidator, pattern, pipe, positive, refine, replace, round, startsWith, stringValidator, toLowerCase, toUpperCase, trim, trimmed, truncateEnd, truncateStart, undefinedValidator, unionValidator, unknownValidator, uppercase, uuid4 };
231
+ export { ViviError, abs, arrayValidator, between, bigintValidator, booleanValidator, ceil, clamp, createValidator as customValidator, dateValidator, v as default, v, emailValidator, endsWith, even, fallback, finite, flattenErrors, floor, getError, gt, includes, instanceValidator, integer, issuesToObject, issuesToString, length, literalValidator, lowercase, lt, match, max, maxLength, min, minLength, negative, nonEmpty, normalizeSpaces, notIncludes, nullValidator, nullableValidator, numberValidator, objectValidator, odd, optionalValidator, pattern, pipe, positive, refine, replace, round, startsWith, stringValidator, toLowerCase, toUpperCase, trim, trimmed, truncateEnd, truncateStart, undefinedValidator, unionValidator, unknownValidator, uppercase, uuid4 };
package/dist/index.mjs CHANGED
@@ -1 +1,2 @@
1
- var e=class e extends Error{issues;constructor(t){super(`Vivi validation error`),this.name=e.name,this.issues=t}static single(t,n){return new e([{message:t,path:n}])}merge(t){return new e([...this.issues,...t.issues])}};function t(e,t,n){for(let r=0;r<t.length;r++){let i=t[r],a=[];for(let e=0;e<n.length;e++)a.push(n[e]);for(let e=0;e<i.path.length;e++)a.push(i.path[e]);e.push({message:i.message,path:a})}}function n(t){return{parse(e,n=[]){return t(e,n)},safeParse(n){try{return{success:!0,data:t(n,[])}}catch(t){if(t instanceof e)return{success:!1,error:t};let n=t instanceof Error?t.message:`Unknown validation error`;return{success:!1,error:e.single(n,[])}}}}}function r(e,t,n){return typeof e==`function`?e(n):e??t}function i(i,a){return n((n,o)=>{if(!Array.isArray(n))throw e.single(r(a?.error,`Expected array`,n),o);let s=[],c=[];for(let r=0;r<n.length;r++){let l=i.safeParse(n[r]);if(l.success)s[r]=l.data;else if(t(c,l.error.issues,o.concat(r)),a?.abort)throw new e(c)}if(c.length>0)throw new e(c);return s})}function a(t){return n((n,i)=>{if(typeof n!=`bigint`)throw e.single(r(t?.error,`Expected bigint`,n),i);return n})}function o(t){return n((n,i)=>{if(typeof n!=`boolean`)throw e.single(r(t?.error,`Expected boolean`,n),i);return n})}function s(t){return n((n,i)=>{if(!(n instanceof Date)||isNaN(n.getTime()))throw e.single(r(t?.error,`Expected Date`,n),i);return n})}const c=/^(?!\.)(?!.*\.\.)([a-z0-9_'+\-\.]*)[a-z0-9_+\-]@([a-z0-9][a-z0-9\-]*\.)+[a-z]{2,}$/i;function l(t){let i=t?.pattern??c;return n((n,a)=>{if(typeof n!=`string`)throw e.single(r(t?.error,`Expected string`,n),a);if(!i.test(n))throw e.single(r(t?.error,`Invalid email format`,n),a);return n})}function u(t,r){return n((n,i)=>{try{return t.parse(n,i)}catch(t){if(t instanceof e)return r;throw t}})}function d(t,i){return n((n,a)=>{if(!(n instanceof t))throw e.single(r(i?.error,`Expected instance of ${t.name}`,n),a);return n})}function f(t,i){return n((n,a)=>{if(n!==t)throw e.single(r(i?.error,`Expected literal ${String(t)}`,n),a);return t})}function p(t){return n((n,i)=>{if(n!==null)throw e.single(r(t?.error,`Expected null`,n),i);return null})}function m(e){return n((t,n)=>t===null?null:e.parse(t,n))}function h(t){return n((n,i)=>{if(typeof n!=`number`)throw e.single(r(t?.error,`Expected number`,n),i);return n})}function ee(t,n,i){if(typeof t!=`object`||!t||Array.isArray(t))throw e.single(r(i,`Expected object`,t),n)}function te(n,r,i,a,o,s,c){let l=i.safeParse(r);if(l.success)c&&(c[n]=l.data);else if(t(o,l.error.issues,a.concat(n)),s)throw new e(o)}function g(t,n,i,a,o,s,c){switch(i){case`passthrough`:c&&(c[t]=n);break;case`exact`:if(a.push({message:r(void 0,`Unexpected property`,n),path:o.concat(t)}),s)throw new e(a);break}}function _(t,n,i,a,o,s,c=`strip`){for(let l=0;l<n.length;l++){let u=n[l];if(!(u in t)){let t=i[u].safeParse(null).success;if((c===`exact`||t)&&(a.push({message:r(void 0,`Missing required property`,void 0),path:o.concat(u)}),s))throw new e(a)}}}function v(t,r){let i=r?.mode??`strip`;return n((n,a)=>{ee(n,a,r?.error);let o=n,s={},c=[],l=Object.keys(o),u=Object.keys(t);for(let e=0;e<l.length;e++){let n=l[e],u=o[n],d=t[n];d?te(n,u,d,a,c,r?.abort,s):g(n,u,i,c,a,r?.abort,s)}if(_(o,u,t,c,a,r?.abort,i),c.length>0)throw new e(c);return s})}function y(e){return n((t,n)=>{if(t!==void 0)return e.parse(t,n)})}function b(e,...t){return n((n,r)=>{let i=e.parse(n,r);for(let e=0;e<t.length;e++)i=t[e](i);return i})}function x(e,t){let n=[];if(e===!1)n.push({path:t,message:`Refinement failed`});else if(typeof e==`string`)n.push({path:t,message:e});else if(e&&typeof e==`object`&&`message`in e){let r=e,i=r.path?t.concat(r.path):t;n.push({path:i,message:r.message})}else if(Array.isArray(e))for(let r=0;r<e.length;r++){let i=e[r],a=i.path?t.concat(i.path):t;n.push({path:a,message:i.message})}return n}function S(t,r,i){return n((n,a)=>{let o=t.parse(n,a),s=[];for(let e=0;e<r.length;e++){let t=x(r[e](o),a);for(let e=0;e<t.length;e++)s.push(t[e]);if(i?.abort&&t.length>0)break}if(s.length>0)throw new e(s);return o})}function C(e,t,n){return e.success?t(e.data):n(e.error)}function w(t){return n((n,i)=>{if(typeof n!=`string`)throw e.single(r(t?.error,`Expected string`,n),i);return n})}function T(t){return n((n,i)=>{if(n!==void 0)throw e.single(r(t?.error,`Expected undefined`,n),i)})}function E(i,a){return n((n,o)=>{let s=[];for(let e=0;e<i.length;e++){let r=i[e].safeParse(n);if(r.success)return r.data;t(s,r.error.issues,o)}throw s.length>0?new e(s):e.single(r(a?.error,`No union variant matched`,n),o)})}function D(){return n(e=>e)}function O(e,t){return function(n){return n>=e||t||`Must be >= ${e}`}}function k(e,t){return function(n){return n<=e||t||`Must be <= ${e}`}}function A(e,t){return function(n){return n>e||t||`Must be > ${e}`}}function j(e,t){return function(n){return n<e||t||`Must be < ${e}`}}function M(e){return function(t){return Number.isInteger(t)||e||`Must be an integer`}}function N(e){return function(t){return Number.isFinite(t)||e||`Must be a finite number`}}function P(e){return function(t){return t>0||e||`Must be positive`}}function F(e){return function(t){return t<0||e||`Must be negative`}}function I(e,t,n){return function(r){return r>=e&&r<=t||n||`Must be between ${e} and ${t}`}}function L(e){return function(t){return t%2==0||e||`Must be an even number`}}function R(e){return function(t){return t%2!=0||e||`Must be an odd number`}}function z(e,t){return function(n){return n.length>=e||t||`Must have at least ${e} characters`}}function B(e,t){return function(n){return n.length<=e||t||`Must have at most ${e} characters`}}function V(e,t){return function(n){return n.length===e||t||`Must have exactly ${e} characters`}}function H(e,t){return function(n){return e.test(n)||t||`Invalid format`}}function U(e,t){return function(n){return n.startsWith(e)||t||`Must start with "${e}"`}}function W(e,t){return function(n){return n.endsWith(e)||t||`Must end with "${e}"`}}function ne(e){return function(t){return t.length>0||e||`Must not be empty`}}function G(e,t){return function(n){return n.includes(e)||t||`Must include "${e}"`}}function K(e,t){return function(n){return!n.includes(e)||t||`Must not include "${e}"`}}function q(e){return function(t){return t.trim()===t||e||`Must not have leading or trailing spaces`}}function J(e){return function(t){return t===t.toLowerCase()||e||`Must be lowercase`}}function Y(e){return function(t){return t===t.toUpperCase()||e||`Must be uppercase`}}function X(e){let t=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;return function(n){return t.test(n)||e||`Must be a valid UUID v4`}}function Z(){return function(e){return Math.round(e)}}function re(){return function(e){return Math.floor(e)}}function ie(){return function(e){return Math.ceil(e)}}function ae(e,t){return function(n){return Math.min(Math.max(n,e),t)}}function oe(){return function(e){return Math.abs(e)}}function se(){return function(e){return e.trim()}}function Q(){return function(e){return e.toLowerCase()}}function ce(){return function(e){return e.toUpperCase()}}function le(e,t,n){return function(r){if(typeof e==`string`){let i=``;return n?.global&&(i+=`g`),n?.ignoreCase&&(i+=`i`),r.replace(new RegExp(e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),i),t)}else return r.replace(e,t)}}function ue(e,t=``){return function(n){return n.length>e?n.slice(0,e)+t:n}}function de(e,t=``){return function(n){return n.length<=e?n:t+n.slice(n.length-e)}}function fe(){return function(e){return e.replace(/\s+/g,` `).trim()}}const $={array:i,bigint:a,boolean:o,date:s,email:l,fallback:u,instance:d,literal:f,null:p,nullable:m,number:h,object:v,optional:y,string:w,undefined:T,union:E,unknown:D,refine:S,pipe:b,match:C};var pe=$;export{e as ViviError,oe as abs,i as arrayValidator,I as between,a as bigintValidator,o as booleanValidator,ie as ceil,ae as clamp,n as customValidator,s as dateValidator,pe as default,l as emailValidator,W as endsWith,L as even,u as fallback,N as finite,re as floor,A as gt,G as includes,d as instanceValidator,M as integer,V as length,f as literalValidator,J as lowercase,j as lt,C as match,k as max,B as maxLength,O as min,z as minLength,F as negative,ne as nonEmpty,fe as normalizeSpaces,K as notIncludes,p as nullValidator,m as nullableValidator,h as numberValidator,v as objectValidator,R as odd,y as optionalValidator,H as pattern,b as pipe,P as positive,S as refine,le as replace,Z as round,U as startsWith,w as stringValidator,Q as toLowerCase,ce as toUpperCase,se as trim,q as trimmed,ue as truncateEnd,de as truncateStart,T as undefinedValidator,E as unionValidator,D as unknownValidator,Y as uppercase,X as uuid4,$ as v};
1
+ var e=class e extends Error{issues;constructor(t){super(`Vivi validation error`),this.name=e.name,this.issues=t}static single(t,n){return new e([{message:t,path:n}])}merge(t){return new e([...this.issues,...t.issues])}};function t(e,t,n){for(let r=0;r<t.length;r++){let i=t[r],a=[];for(let e=0;e<n.length;e++)a.push(n[e]);for(let e=0;e<i.path.length;e++)a.push(i.path[e]);e.push({message:i.message,path:a})}}function n(t){return{parse(e,n=[]){return t(e,n)},safeParse(n){try{return{success:!0,data:t(n,[])}}catch(t){if(t instanceof e)return{success:!1,error:t};let n=t instanceof Error?t.message:`Unknown validation error`;return{success:!1,error:e.single(n,[])}}}}}function r(e,t,n){return typeof e==`function`?e(n):e??t}function i(i,a){return n((n,o)=>{if(!Array.isArray(n))throw e.single(r(a?.error,`Expected array`,n),o);let s=[],c=[];for(let r=0;r<n.length;r++){let l=i.safeParse(n[r]);if(l.success)s[r]=l.data;else if(t(c,l.error.issues,o.concat(r)),a?.abort)throw new e(c)}if(c.length>0)throw new e(c);return s})}function a(t){return n((n,i)=>{if(typeof n!=`bigint`)throw e.single(r(t?.error,`Expected bigint`,n),i);return n})}function o(t){return n((n,i)=>{if(typeof n!=`boolean`)throw e.single(r(t?.error,`Expected boolean`,n),i);return n})}function s(t){return n((n,i)=>{if(!(n instanceof Date)||isNaN(n.getTime()))throw e.single(r(t?.error,`Expected Date`,n),i);return n})}const c=/^(?!\.)(?!.*\.\.)([a-z0-9_'+\-\.]*)[a-z0-9_+\-]@([a-z0-9][a-z0-9\-]*\.)+[a-z]{2,}$/i;function l(t){let i=t?.pattern??c;return n((n,a)=>{if(typeof n!=`string`)throw e.single(r(t?.error,`Expected string`,n),a);if(!i.test(n))throw e.single(r(t?.error,`Invalid email format`,n),a);return n})}function u(t,r){return n((n,i)=>{try{return t.parse(n,i)}catch(t){if(t instanceof e)return r;throw t}})}function d(t,i){return n((n,a)=>{if(!(n instanceof t))throw e.single(r(i?.error,`Expected instance of ${t.name}`,n),a);return n})}function f(t,i){return n((n,a)=>{if(n!==t)throw e.single(r(i?.error,`Expected literal ${String(t)}`,n),a);return t})}function p(t){return n((n,i)=>{if(n!==null)throw e.single(r(t?.error,`Expected null`,n),i);return null})}function m(e){return n((t,n)=>t===null?null:e.parse(t,n))}function h(t){return n((n,i)=>{if(typeof n!=`number`)throw e.single(r(t?.error,`Expected number`,n),i);return n})}function ee(t,n,i){if(typeof t!=`object`||!t||Array.isArray(t))throw e.single(r(i,`Expected object`,t),n)}function te(n,r,i,a,o,s,c){let l=i.safeParse(r);if(l.success)c&&(c[n]=l.data);else if(t(o,l.error.issues,a.concat(n)),s)throw new e(o)}function g(t,n,i,a,o,s,c){switch(i){case`passthrough`:c&&(c[t]=n);break;case`exact`:if(a.push({message:r(void 0,`Unexpected property`,n),path:o.concat(t)}),s)throw new e(a);break}}function _(t,n,i,a,o,s,c=`strip`){for(let l=0;l<n.length;l++){let u=n[l];if(!(u in t)){let t=i[u].safeParse(null).success;if((c===`exact`||t)&&(a.push({message:r(void 0,`Missing required property`,void 0),path:o.concat(u)}),s))throw new e(a)}}}function v(t,r){let i=r?.mode??`strip`;return n((n,a)=>{ee(n,a,r?.error);let o=n,s={},c=[],l=Object.keys(o),u=Object.keys(t);for(let e=0;e<l.length;e++){let n=l[e],u=o[n],d=t[n];d?te(n,u,d,a,c,r?.abort,s):g(n,u,i,c,a,r?.abort,s)}if(_(o,u,t,c,a,r?.abort,i),c.length>0)throw new e(c);return s})}function y(e){return n((t,n)=>{if(t!==void 0)return e.parse(t,n)})}function b(e,...t){return n((n,r)=>{let i=e.parse(n,r);for(let e=0;e<t.length;e++)i=t[e](i);return i})}function x(e,t){let n=[];if(e===!1)n.push({path:t,message:`Refinement failed`});else if(typeof e==`string`)n.push({path:t,message:e});else if(e&&typeof e==`object`&&`message`in e){let r=e,i=r.path?t.concat(r.path):t;n.push({path:i,message:r.message})}else if(Array.isArray(e))for(let r=0;r<e.length;r++){let i=e[r],a=i.path?t.concat(i.path):t;n.push({path:a,message:i.message})}return n}function S(t,r,i){return n((n,a)=>{let o=t.parse(n,a),s=[];for(let e=0;e<r.length;e++){let t=x(r[e](o),a);for(let e=0;e<t.length;e++)s.push(t[e]);if(i?.abort&&t.length>0)break}if(s.length>0)throw new e(s);return o})}function C(e,t,n){return e.success?t(e.data):n(e.error)}function w(t){return n((n,i)=>{if(typeof n!=`string`)throw e.single(r(t?.error,`Expected string`,n),i);return n})}function T(t){return n((n,i)=>{if(n!==void 0)throw e.single(r(t?.error,`Expected undefined`,n),i)})}function E(i,a){return n((n,o)=>{let s=[];for(let e=0;e<i.length;e++){let r=i[e].safeParse(n);if(r.success)return r.data;t(s,r.error.issues,o)}throw s.length>0?new e(s):e.single(r(a?.error,`No union variant matched`,n),o)})}function D(){return n(e=>e)}function O(e){let t=``;for(let n=0;n<e.length;n++){let r=e[n],i=r.path.length>0?r.path.join(`.`):`(root)`;t+=`${i}: ${r.message}`,n<e.length-1&&(t+=`
2
+ `)}return t}function k(e){let t={};for(let n=0;n<e.length;n++){let r=e[n],i=t;for(let e=0;e<r.path.length;e++){let t=r.path[e];e===r.path.length-1?i[t]=r.message:(i[t]||(i[t]={}),i=i[t])}}return t}function A(e,t){let n=t.split(`.`),r=e;for(let e=0;e<n.length;e++){let t=n[e];if(r&&typeof r==`object`&&t in r)r=r[t];else return}return typeof r==`string`?r:void 0}function j(e){let t={};for(let n=0;n<e.length;n++){let r=e[n],i=r.path.join(`.`);t[i]=r.message}return t}function M(e,t){return function(n){return n>=e||t||`Must be >= ${e}`}}function N(e,t){return function(n){return n<=e||t||`Must be <= ${e}`}}function P(e,t){return function(n){return n>e||t||`Must be > ${e}`}}function F(e,t){return function(n){return n<e||t||`Must be < ${e}`}}function I(e){return function(t){return Number.isInteger(t)||e||`Must be an integer`}}function L(e){return function(t){return Number.isFinite(t)||e||`Must be a finite number`}}function R(e){return function(t){return t>0||e||`Must be positive`}}function z(e){return function(t){return t<0||e||`Must be negative`}}function B(e,t,n){return function(r){return r>=e&&r<=t||n||`Must be between ${e} and ${t}`}}function V(e){return function(t){return t%2==0||e||`Must be an even number`}}function H(e){return function(t){return t%2!=0||e||`Must be an odd number`}}function U(e,t){return function(n){return n.length>=e||t||`Must have at least ${e} characters`}}function W(e,t){return function(n){return n.length<=e||t||`Must have at most ${e} characters`}}function ne(e,t){return function(n){return n.length===e||t||`Must have exactly ${e} characters`}}function G(e,t){return function(n){return e.test(n)||t||`Invalid format`}}function K(e,t){return function(n){return n.startsWith(e)||t||`Must start with "${e}"`}}function q(e,t){return function(n){return n.endsWith(e)||t||`Must end with "${e}"`}}function J(e){return function(t){return t.length>0||e||`Must not be empty`}}function Y(e,t){return function(n){return n.includes(e)||t||`Must include "${e}"`}}function X(e,t){return function(n){return!n.includes(e)||t||`Must not include "${e}"`}}function Z(e){return function(t){return t.trim()===t||e||`Must not have leading or trailing spaces`}}function re(e){return function(t){return t===t.toLowerCase()||e||`Must be lowercase`}}function ie(e){return function(t){return t===t.toUpperCase()||e||`Must be uppercase`}}function ae(e){let t=/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;return function(n){return t.test(n)||e||`Must be a valid UUID v4`}}function oe(){return function(e){return Math.round(e)}}function se(){return function(e){return Math.floor(e)}}function ce(){return function(e){return Math.ceil(e)}}function le(e,t){return function(n){return Math.min(Math.max(n,e),t)}}function ue(){return function(e){return Math.abs(e)}}function de(){return function(e){return e.trim()}}function fe(){return function(e){return e.toLowerCase()}}function pe(){return function(e){return e.toUpperCase()}}function me(e,t,n){return function(r){if(typeof e==`string`){let i=``;return n?.global&&(i+=`g`),n?.ignoreCase&&(i+=`i`),r.replace(new RegExp(e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`),i),t)}else return r.replace(e,t)}}function Q(e,t=``){return function(n){return n.length>e?n.slice(0,e)+t:n}}function he(e,t=``){return function(n){return n.length<=e?n:t+n.slice(n.length-e)}}function ge(){return function(e){return e.replace(/\s+/g,` `).trim()}}const $={array:i,bigint:a,boolean:o,date:s,email:l,fallback:u,instance:d,literal:f,null:p,nullable:m,number:h,object:v,optional:y,string:w,undefined:T,union:E,unknown:D,refine:S,pipe:b,match:C};var _e=$;export{e as ViviError,ue as abs,i as arrayValidator,B as between,a as bigintValidator,o as booleanValidator,ce as ceil,le as clamp,n as customValidator,s as dateValidator,_e as default,l as emailValidator,q as endsWith,V as even,u as fallback,L as finite,j as flattenErrors,se as floor,A as getError,P as gt,Y as includes,d as instanceValidator,I as integer,k as issuesToObject,O as issuesToString,ne as length,f as literalValidator,re as lowercase,F as lt,C as match,N as max,W as maxLength,M as min,U as minLength,z as negative,J as nonEmpty,ge as normalizeSpaces,X as notIncludes,p as nullValidator,m as nullableValidator,h as numberValidator,v as objectValidator,H as odd,y as optionalValidator,G as pattern,b as pipe,R as positive,S as refine,me as replace,oe as round,K as startsWith,w as stringValidator,fe as toLowerCase,pe as toUpperCase,de as trim,Z as trimmed,Q as truncateEnd,he as truncateStart,T as undefinedValidator,E as unionValidator,D as unknownValidator,ie as uppercase,ae as uuid4,$ as v};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ripetchor/vivi",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "scripts": {
5
5
  "build": "tsdown",
6
6
  "dev": "tsdown --watch",