@ripetchor/vivi 0.0.9 → 0.0.11

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
@@ -69,7 +69,7 @@ declare function emailValidator(options?: EmailValidatorOptions): ViviValidator<
69
69
  declare function fallback<T>(validator: ViviValidator<T>, defaultValue: T): ViviValidator<T>;
70
70
  //#endregion
71
71
  //#region src/instance-validator.d.ts
72
- declare function instanceValidator<T>(ctor: new (...args: any[]) => T, options?: ValidatorOptions): ViviValidator<T>;
72
+ declare function instanceValidator<T, Args extends unknown[]>(ctor: new (...args: Args) => T, options?: ValidatorOptions): ViviValidator<T>;
73
73
  //#endregion
74
74
  //#region src/literal-validator.d.ts
75
75
  declare function literalValidator<T extends string | number | boolean>(value: T, options?: ValidatorOptions): ViviValidator<T>;
package/dist/index.mjs CHANGED
@@ -1,2 +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(!Object.is(n,t))throw e.single(r(i?.error,`Expected literal ${String(t)}`,n),a);return t})}function p(i,a,o){return n((n,s)=>{if(!(n instanceof Map))throw e.single(r(o?.error,`Expected Map`,n),s);let c=n,l=new Map,u=[],d=Array.from(c.entries());for(let n=0;n<d.length;n++){let[r,c]=d[n],f=s.concat(`[${n}]`),p=i.safeParse(r),m=a.safeParse(c);if(!p.success&&(t(u,p.error.issues,f.concat(`key`)),o?.abort)||!m.success&&(t(u,m.error.issues,f.concat(`value`)),o?.abort))throw new e(u);p.success&&m.success&&l.set(p.data,m.data)}if(u.length>0)throw new e(u);return l})}function m(t){return n((n,i)=>{if(!Object.is(n,null))throw e.single(r(t?.error,`Expected null`,n),i);return null})}function h(e){return n((t,n)=>Object.is(t,null)?null:e.parse(t,n))}function g(t){return n((n,i)=>{if(typeof n!=`number`)throw e.single(r(t?.error,`Expected number`,n),i);return n})}function _(t,n,i){if(typeof t!=`object`||!t||Array.isArray(t))throw e.single(r(i,`Expected object`,t),n)}function ee(n,r,i,a,o,s,c){let l=i.safeParse(r);if(l.success)c[n]=l.data;else if(t(o,l.error.issues,a.concat(n)),s)throw new e(o)}function te(t,n,i,a,o,s,c){switch(i){case`passthrough`: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 v(t,n,i,a,o,s){for(let c=0;c<n.length;c++){let l=n[c];if(!(l in t)){let t=i[l],n=t.safeParse(void 0).success,c=t.safeParse(null).success;if(!n&&!c&&(a.push({message:r(void 0,`Missing required property`,void 0),path:o.concat(l)}),s)||c&&!n&&(a.push({message:r(void 0,`Missing required property`,void 0),path:o.concat(l)}),s))throw new e(a)}}}function y(t,r){let i=r?.mode??`strip`,a=Object.keys(t);return n((n,o)=>{_(n,o,r?.error);let s=n,c={},l=[],u=Object.keys(s);for(let e=0;e<u.length;e++){let n=u[e],a=s[n],d=t[n];d?ee(n,a,d,o,l,r?.abort,c):te(n,a,i,l,o,r?.abort,c)}if(v(s,a,t,l,o,r?.abort),l.length>0)throw new e(l);return c})}function b(e){return n((t,n)=>{if(!Object.is(t,void 0))return e.parse(t,n)})}function x(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 S(e,t){let n=[];if(Object.is(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 C(t,r,i){return n((n,a)=>{let o=t.parse(n,a),s=[];for(let e=0;e<r.length;e++){let t=S(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 w(i,a){return n((n,o)=>{if(!(n instanceof Set))throw e.single(r(a?.error,`Expected Set`,n),o);let s=new Set,c=[],l=Array.from(n);for(let n=0;n<l.length;n++){let r=l[n],u=[];if(o&&o.length)for(let e=0;e<o.length;e++)u.push(o[e]);u.push(`[${n}]`);let d=i.safeParse(r);if(d.success)s.add(d.data);else if(t(c,d.error.issues,u),a&&a.abort)throw new e(c)}if(c.length>0)throw new e(c);return s})}function T(e,t,n){return e.success?t(e.data):n(e.error)}function E(t){return n((n,i)=>{if(typeof n!=`string`)throw e.single(r(t?.error,`Expected string`,n),i);return n})}function D(t){return n((n,i)=>{if(!Object.is(n,void 0))throw e.single(r(t?.error,`Expected undefined`,n),i)})}function O(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 k(){return n(e=>e)}function A(e){return e.map(e=>{let t=e.path.join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`
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(!Object.is(n,t))throw e.single(r(i?.error,`Expected literal ${String(t)}`,n),a);return t})}function p(i,a,o){return n((n,s)=>{if(!(n instanceof Map))throw e.single(r(o?.error,`Expected Map`,n),s);let c=n,l=new Map,u=[],d=Array.from(c.entries());for(let n=0;n<d.length;n++){let[r,c]=d[n],f=s.concat(`[${n}]`),p=i.safeParse(r),m=a.safeParse(c);if(!p.success&&(t(u,p.error.issues,f.concat(`key`)),o?.abort)||!m.success&&(t(u,m.error.issues,f.concat(`value`)),o?.abort))throw new e(u);p.success&&m.success&&l.set(p.data,m.data)}if(u.length>0)throw new e(u);return l})}function m(t){return n((n,i)=>{if(!Object.is(n,null))throw e.single(r(t?.error,`Expected null`,n),i);return null})}function h(e){return n((t,n)=>Object.is(t,null)?null:e.parse(t,n))}function g(t){return n((n,i)=>{if(typeof n!=`number`)throw e.single(r(t?.error,`Expected number`,n),i);return n})}function _(t,n,i){if(typeof t!=`object`||!t||Array.isArray(t))throw e.single(r(i,`Expected object`,t),n)}function ee(n,r,i,a,o,s,c){let l=i.safeParse(r);if(l.success)c[n]=l.data;else if(t(o,l.error.issues,a.concat(n)),s)throw new e(o)}function te(t,n,i,a,o,s,c){switch(i){case`passthrough`: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 v(t,n,i,a,o,s){for(let c=0;c<n.length;c++){let l=n[c];if(!(l in t)){let t=i[l],n=t.safeParse(void 0).success,c=t.safeParse(null).success;if(!n&&!c&&(a.push({message:r(void 0,`Missing required property`,void 0),path:o.concat(l)}),s)||c&&!n&&(a.push({message:r(void 0,`Missing required property`,void 0),path:o.concat(l)}),s))throw new e(a)}}}function y(t,r){let i=r?.mode??`strip`,a=Object.keys(t);return n((n,o)=>{_(n,o,r?.error);let s=n,c={},l=[],u=Object.keys(s);for(let e=0;e<u.length;e++){let n=u[e],a=s[n],d=t[n];d?ee(n,a,d,o,l,r?.abort,c):te(n,a,i,l,o,r?.abort,c)}if(v(s,a,t,l,o,r?.abort),l.length>0)throw new e(l);return c})}function b(e){return n((t,n)=>{if(!Object.is(t,void 0))return e.parse(t,n)})}function x(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 S(e,t){let n=[];if(typeof e==`boolean`)e||n.push({path:t,message:`Refinement failed`});else if(typeof e==`string`)n.push({path:t,message:e});else if(Array.isArray(e))for(let r=0;r<e.length;r++){let i=e[r];if(typeof i==`boolean`)i||n.push({path:t,message:`Refinement failed`});else if(typeof i==`string`)n.push({path:t,message:i});else{let e=i.path?t.concat(i.path):t;n.push({path:e,message:i.message})}}else if(typeof e==`object`&&e&&`message`in e){let r=e.path?t.concat(e.path):t;n.push({path:r,message:e.message})}return n}function C(t,r,i){return n((n,a)=>{let o=t.parse(n,a),s=[];for(let e=0;e<r.length;e++){let t=S(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 w(i,a){return n((n,o)=>{if(!(n instanceof Set))throw e.single(r(a?.error,`Expected Set`,n),o);let s=new Set,c=[],l=Array.from(n);for(let n=0;n<l.length;n++){let r=l[n],u=[];if(o&&o.length)for(let e=0;e<o.length;e++)u.push(o[e]);u.push(`[${n}]`);let d=i.safeParse(r);if(d.success)s.add(d.data);else if(t(c,d.error.issues,u),a&&a.abort)throw new e(c)}if(c.length>0)throw new e(c);return s})}function T(e,t,n){return e.success?t(e.data):n(e.error)}function E(t){return n((n,i)=>{if(typeof n!=`string`)throw e.single(r(t?.error,`Expected string`,n),i);return n})}function D(t){return n((n,i)=>{if(!Object.is(n,void 0))throw e.single(r(t?.error,`Expected undefined`,n),i)})}function O(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 k(){return n(e=>e)}function A(e){return e.map(e=>{let t=e.path.join(`.`);return t?`${t}: ${e.message}`:e.message}).join(`
2
2
  `)}function j(e){let t={};for(let n of e){if(n.path.length===0)continue;let e=t;for(let t=0;t<n.path.length;t++){let r=n.path[t];t===n.path.length-1?e[r]=n.message:((!e[r]||typeof e[r]!=`object`)&&(e[r]={}),e=e[r])}}return t}function M(e){let t={};for(let n of e)n.path.length!==0&&(t[n.path.join(`.`)]=n.message);return t}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,t){return function(n){return n<e||t||`Must be < ${e}`}}function L(e){return function(t){return Number.isInteger(t)||e||`Must be an integer`}}function R(e){return function(t){return Number.isFinite(t)||e||`Must be a finite number`}}function z(e){return function(t){return t>0||e||`Must be positive`}}function B(e){return function(t){return t<0||e||`Must be negative`}}function V(e,t,n){return function(r){return r>=e&&r<=t||n||`Must be between ${e} and ${t}`}}function H(e){return function(t){return t%2==0||e||`Must be an even number`}}function U(e){return function(t){return t%2!=0||e||`Must be an odd number`}}function W(e,t){return function(n){return n.length>=e||t||`Must have at least ${e} characters`}}function G(e,t){return function(n){return n.length<=e||t||`Must have at most ${e} characters`}}function K(e,t){return function(n){return n.length===e||t||`Must have exactly ${e} characters`}}function ne(e,t){return function(n){return e.test(n)||t||`Invalid format`}}function q(e,t){return function(n){return n.startsWith(e)||t||`Must start with "${e}"`}}function J(e,t){return function(n){return n.endsWith(e)||t||`Must end with "${e}"`}}function Y(e){return function(t){return t.length>0||e||`Must not be empty`}}function X(e,t){return function(n){return n.includes(e)||t||`Must include "${e}"`}}function Z(e,t){return function(n){return!n.includes(e)||t||`Must not include "${e}"`}}function re(e){return function(t){return t.trim()===t||e||`Must not have leading or trailing spaces`}}function ie(e){return function(t){return t===t.toLowerCase()||e||`Must be lowercase`}}function ae(e){return function(t){return t===t.toUpperCase()||e||`Must be uppercase`}}function oe(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 se(){return function(e){return Math.round(e)}}function ce(){return function(e){return Math.floor(e)}}function le(){return function(e){return Math.ceil(e)}}function ue(e,t){return function(n){return Math.min(Math.max(n,e),t)}}function de(){return function(e){return Math.abs(e)}}function fe(){return function(e){return e.trim()}}function pe(){return function(e){return e.toLowerCase()}}function me(){return function(e){return e.toUpperCase()}}function Q(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 he(e,t=``){return function(n){return n.length>e?n.slice(0,e)+t:n}}function ge(e,t=``){return function(n){return n.length<=e?n:t+n.slice(n.length-e)}}function _e(){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:m,nullable:h,number:g,object:y,optional:b,string:E,undefined:D,union:O,unknown:k,refine:C,pipe:x,match:T,map:p,set:w};var ve=$;export{e as ViviError,de as abs,i as arrayValidator,V as between,a as bigintValidator,o as booleanValidator,le as ceil,ue as clamp,n as customValidator,s as dateValidator,ve as default,l as emailValidator,J as endsWith,H as even,u as fallback,R as finite,M as flattenErrors,ce as floor,F as gt,X as includes,d as instanceValidator,L as integer,j as issuesToObject,A as issuesToString,K as length,f as literalValidator,ie as lowercase,I as lt,p as mapValidator,T as match,P as max,G as maxLength,N as min,W as minLength,B as negative,Y as nonEmpty,_e as normalizeSpaces,Z as notIncludes,m as nullValidator,h as nullableValidator,g as numberValidator,y as objectValidator,U as odd,b as optionalValidator,ne as pattern,x as pipe,z as positive,C as refine,Q as replace,se as round,w as setValidator,q as startsWith,E as stringValidator,pe as toLowerCase,me as toUpperCase,fe as trim,re as trimmed,he as truncateEnd,ge as truncateStart,D as undefinedValidator,O as unionValidator,k as unknownValidator,ae as uppercase,oe as uuid4,$ as v};
package/package.json CHANGED
@@ -1,15 +1,12 @@
1
1
  {
2
2
  "name": "@ripetchor/vivi",
3
- "version": "0.0.9",
3
+ "version": "0.0.11",
4
4
  "scripts": {
5
5
  "build": "tsdown",
6
6
  "dev": "tsdown --watch",
7
7
  "test": "vitest",
8
- "typecheck": "tsc --noEmit"
9
- },
10
- "repository": {
11
- "type": "git",
12
- "url": "git+https://github.com/ripetchor/vivi.git"
8
+ "typecheck": "tsc --noEmit",
9
+ "lint": "eslint ./src"
13
10
  },
14
11
  "author": "ripetchor",
15
12
  "files": [
@@ -27,15 +24,15 @@
27
24
  "./package.json": "./package.json"
28
25
  },
29
26
  "type": "module",
30
- "bugs": {
31
- "url": "https://github.com/ripetchor/vivi/issues"
32
- },
33
- "homepage": "https://github.com/ripetchor/vivi#readme",
34
27
  "devDependencies": {
28
+ "@eslint/js": "^9.39.2",
35
29
  "@types/node": "^24.10.1",
36
30
  "bumpp": "^10.3.1",
31
+ "eslint": "^9.39.2",
32
+ "eslint-plugin-import": "^2.32.0",
37
33
  "tsdown": "^0.18.3",
38
34
  "typescript": "^5.9.3",
35
+ "typescript-eslint": "^8.50.1",
39
36
  "vitest": "^4.0.9"
40
37
  }
41
38
  }