runcheck 0.18.0 → 0.20.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.
package/README.md CHANGED
@@ -102,6 +102,12 @@ Validates only the values of a object, equivalent to `Record<string, T>` in type
102
102
  const shape = rc_record(rc_number)
103
103
 
104
104
  // shape type is `Record<string, number>`
105
+
106
+ // `rc_record` also accepts the following options:
107
+ const shape = rc_record(rc_number, {
108
+ checkKey: (key) => key !== 'a', // Check if the key is valid
109
+ looseCheck: true, // If true, the invalid keys will be striped
110
+ })
105
111
  ```
106
112
 
107
113
  # Parsing
@@ -277,13 +283,13 @@ const result = rc_parse(
277
283
 
278
284
  # Advanced object types
279
285
 
280
- ## `rc_rename_key`
286
+ ## `rc_rename_from_key`
281
287
 
282
288
  Allows to rename a key in a object. Example:
283
289
 
284
290
  ```ts
285
291
  const shape = rc_object({
286
- name: rc_rename_key('oldName', rc_string), // oldName will be renamed to name
292
+ name: rc_rename_from_key('oldName', rc_string), // oldName will be renamed to name
287
293
  age: rc_number,
288
294
  isCool: rc_boolean,
289
295
  })
@@ -319,3 +325,21 @@ const shape = rc_object({
319
325
 
320
326
  const nameSchema = rc_get_obj_schema(shape).name
321
327
  ```
328
+
329
+ ## `rc_extends_obj`
330
+
331
+ Don't strip unchecked keys from the result. Example:
332
+
333
+ ```ts
334
+ const shape = rc_object({
335
+ name: rc_string,
336
+ })
337
+
338
+ const result = rc_parse(
339
+ { name: 'John', age: 20, is_cool: true },
340
+ rc_extends_obj(shape),
341
+ )
342
+
343
+ // keys `age` and `is_cool` will be present in the result
344
+ result.data // { name: 'John', age: 20, is_cool: true }
345
+ ```
@@ -1 +1 @@
1
- import{e as f,f as t,g as o}from"./chunk-65SEYLTW.js";var s=f.withAutofix(r=>r==null||r===0||r===1?{fixed:!!r}:r==="true"||r==="false"?{fixed:r==="true"}:!1),n=t.withAutofix(r=>typeof r=="number"&&!Number.isNaN(r)?{fixed:r.toString()}:!1),u=o.withAutofix(r=>{if(typeof r=="string"){let e=Number(r);if(!Number.isNaN(e))return{fixed:e}}return!1});export{s as rc_boolean_autofix,u as rc_number_autofix,n as rc_string_autofix};
1
+ import{e as f,f as t,g as o}from"./chunk-NNEEJPIK.js";var s=f.withAutofix(r=>r==null||r===0||r===1?{fixed:!!r}:r==="true"||r==="false"?{fixed:r==="true"}:!1),n=t.withAutofix(r=>typeof r=="number"&&!Number.isNaN(r)?{fixed:r.toString()}:!1),u=o.withAutofix(r=>{if(typeof r=="string"){let e=Number(r);if(!Number.isNaN(e))return{fixed:e}}return!1});export{s as rc_boolean_autofix,u as rc_number_autofix,n as rc_string_autofix};
@@ -0,0 +1 @@
1
+ function S(e){return{...this,o:e}}function i(e,r,n,t){if(e.c&&r===void 0)return[!0,r];if(e.u&&r==null)return[!0,r];if(e.l&&r===null)return[!0,r];let s=t();if(s&&(s===!0||"data"in s)){let a=s===!0?r:s.data;return e.s&&!e.s(a)?[!1,[e.n(a)]]:[!0,a]}if(e.o!==void 0)return n.warnings.push(`Fallback used, ${e.n(r)}`),[!0,e.o];if(e.f&&e.i){let a=e.i(r);if(a)return e.s&&!e.s(a.fixed)?[!1,[e.n(a.fixed)]]:(n.warnings.push(`${n.path?`$${n.path}: `:""}Autofixed from error "${e.n(r)}"`),[!0,a.fixed])}return[!1,s&&"errors"in s?s.errors:[e.n(r)]]}function V(e){return{...this,f:!0,i:e}}function I(e){return{...this,s:e,e:`${this.e}_with_predicate`}}function q(){return{...this,c:!0}}function E(e){return`Type '${A(e)}' is not assignable to '${this.e}'`}function K(){return{...this,l:!0,e:`${this.e}_or_nullable`}}function N(){return{...this,u:!0,e:`${this.e}_or_nullish`}}var o={withFallback:S,where:I,optional:q,n:E,nullable:K,withAutofix:V,nullish:N},U={...o,r(e,r){return i(this,e,r,()=>e===void 0)},e:"undefined"},z={...o,r(e,r){return i(this,e,r,()=>e===null)},e:"null"},B={...o,r(e,r){return i(this,e,r,()=>!0)},e:"any"},W={...o,r(e,r){return i(this,e,r,()=>!0)},e:"unknown"},D={...o,r(e,r){return i(this,e,r,()=>typeof e=="boolean")},e:"boolean"},M={...o,r(e,r){return i(this,e,r,()=>typeof e=="string")},e:"string"},L={...o,r(e,r){return i(this,e,r,()=>typeof e=="number"&&!Number.isNaN(e))},e:"number"},Z={...o,r(e,r){return i(this,e,r,()=>typeof e=="object"&&e instanceof Date&&!Number.isNaN(e.getTime()))},e:"date"};function G(e){return{...o,r(r,n){return i(this,r,n,()=>r instanceof e)},e:`instanceof_${e.name?`_${e.name}`:""}`}}function H(...e){if(e.length===0)throw new Error("rc_literal requires at least one literal");return{...o,r(r,n){return i(this,r,n,()=>{for(let t of e)if(r===t)return!0;return!1})},e:e.length==1?`${A(e[0])}_literal`:"literals"}}function J(...e){if(e.length===0)throw new Error("Unions should have at least one type");return{...o,r(r,n){return i(this,r,n,()=>{for(let t of e)if(t.r(r,n)[0])return!0;return!1})},e:e.map(r=>r.e).join(" | ")}}function v(e,r){return{...r,a:e}}var Q=v;function h(e,r){if(!r)return e;if(e.startsWith("$[")||e.startsWith("$.")){let[n="",t]=e.split(": "),s=n.slice(1);return`$${r}${s}: ${t}`}return`$${r}: ${e}`}function $(e,{normalizeKeysFrom:r}={}){return{...o,t:e,e:"object",y:!0,r(n,t){return i(this,n,t,()=>{if(!P(n))return!1;let s=new Set(Object.keys(n)),a={},c=[],y=t.path;for(let[u,p]of Object.entries(e)){let _=u,d=`.${u}`;t.path=`${y}${d}`;let l,f=u;if(p.a&&(l=n[p.a],f=p.a),l===void 0&&(l=n[u],f=u),l===void 0&&r==="snake_case"){let T=F(u);l=n[T],f=T}s.delete(f);let[b,g]=p.r(l,t);if(b)a[_]=g;else{let T=g;for(let x of T)c.push(h(x,d))}}if(this.e==="strict_obj"&&s.size>0)for(let u of s)c.push(`Key '${u}' is not defined in the object shape`);return c.length>0?{errors:c}:this.e.startsWith("extends_object")?{data:{...n,...a}}:{data:a}})}}}function X(e){return{...$(e),e:"extends_object"}}function Y(e){return e.t}function ee(e){return{...$(e),e:"strict_obj"}}function re(e,r){return $({...e.t,...r.t})}function ne(e,{checkKey:r,looseCheck:n}={}){return{...o,e:`record<string, ${e.e}>`,r(t,s){return i(this,t,s,()=>{if(!P(t))return!1;let a={},c=[];for(let[y,u]of Object.entries(t)){let p=`.${y}`;if(r&&!r(y)){c.push(h(`Key '${y}' is not allowed`,p));continue}let _=t[y],[d,l]=e.r(u,s);if(d)a[y]=_;else{let f=l;for(let b of f)c.push(h(b,p))}}if(c.length>0)if(n)s.warnings.push(...c);else return{errors:c};return{data:a}})}}}function m(e,r){if(typeof r=="string"&&!e.t?.[r])throw new Error(`${e.e} can't be used with unique key option`)}function j(e,r,n,t=!1,s){let a=-1,c=[],y=[],u=new Set,p=n.path;for(let _ of e){a++;let d=Array.isArray(r)?r[a]:r,l=`[${a}]`;n.path=`${p}${l}`;let f=d.r(_,n),[b,g]=f,T=s?.unique;if(b&&T){let R=g,k=typeof T=="string";k&&(R=g[T]),u.has(R)?f=[!1,[k?h(`Type '${d.t?.[T]?.e}' with value "${R}" is not unique`,`.${T}`):`${d.e} value is not unique`]]:u.add(R)}let[x,w]=f;if(x)y.push(w);else if(t){c.push(w.map(R=>h(R,l)));continue}else return{errors:w.map(R=>h(R,l))}}if(c.length>0){if(y.length===0)return{errors:c.slice(0,5).flat()};n.warnings.push(...c.flat())}return{data:y}}function te(e,r){return m(e,r?.unique),{...o,e:`${e.e}[]`,r(n,t){return i(this,n,t,()=>Array.isArray(n)?n.length===0?!0:j.call(this,n,e,t,!1,r):!1)}}}function se(e,r){return m(e,r?.unique),{...o,e:`${e.e}[]`,r(n,t){return i(this,n,t,()=>Array.isArray(n)?n.length===0?!0:j.call(this,n,e,t,!0,r):!1)}}}function ae(e){return{...o,e:`[${e.map(r=>r.e).join(", ")}]`,r(r,n){return i(this,r,n,()=>!Array.isArray(r)||r.length!==e.length?!1:j.call(this,r,e,n))}}}function O(e,r){let n={warnings:[],path:""},[t,s]=r.r(e,n);return t?{error:!1,data:s,warnings:n.warnings.length>0?n.warnings:!1}:{error:!0,errors:s}}function oe(e){return r=>O(r,e)}function ie(e,r){let n=O(e,r);return n.error?{data:null,errors:n.errors,warnings:!1}:{data:n.data,errors:!1,warnings:n.warnings}}function C(e,r){let n={warnings:[],path:""};return!!r.r(e,n)[0]}function ce(e){return r=>C(r,e)}function ue(e){return{...o,e:"recursive",r(r,n){return e().r(r,n)}}}function le(e,r){return{...o,e:`transform_from_${e.e}`,r(n,t){let[s,a]=e.r(n,t);return s?[!0,r(a)]:[!1,a]}}}function A(e){if(typeof e=="object"){if(Array.isArray(e))return"array";if(!e)return"null"}return typeof e}function P(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function F(e){return e.replace(/\W+/g," ").split(/ |\B(?=[A-Z])/).map(r=>r.toLowerCase()).join("_")}export{U as a,z as b,B as c,W as d,D as e,M as f,L as g,Z as h,G as i,H as j,J as k,v as l,Q as m,$ as n,X as o,Y as p,ee as q,re as r,ne as s,te as t,se as u,ae as v,O as w,oe as x,ie as y,C as z,ce as A,ue as B,le as C,F as D};
package/dist/runcheck.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var $=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var K=Object.prototype.hasOwnProperty;var N=(e,r)=>{for(var n in r)$(e,n,{get:r[n],enumerable:!0})},v=(e,r,n,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of E(r))!K.call(e,t)&&t!==n&&$(e,t,{get:()=>r[t],enumerable:!(s=q(r,t))||s.enumerable});return e};var C=e=>v($({},"__esModule",{value:!0}),e);var Re={};N(Re,{rc_any:()=>G,rc_array:()=>ce,rc_boolean:()=>J,rc_date:()=>Y,rc_get_obj_schema:()=>se,rc_instanceof:()=>ee,rc_is_valid:()=>P,rc_literals:()=>re,rc_loose_array:()=>ue,rc_loose_parse:()=>fe,rc_null:()=>Z,rc_number:()=>X,rc_obj_intersection:()=>oe,rc_object:()=>j,rc_parse:()=>m,rc_parser:()=>ye,rc_record:()=>ie,rc_recursive:()=>pe,rc_rename_key:()=>te,rc_strict_obj:()=>ae,rc_string:()=>Q,rc_transform:()=>de,rc_tuple:()=>le,rc_undefined:()=>L,rc_union:()=>ne,rc_unknown:()=>H,rc_validator:()=>Te,snakeCase:()=>I});module.exports=C(Re);function F(e){return{...this,o:e}}function i(e,r,n,s){if(e.c&&r===void 0)return[!0,r];if(e.u&&r==null)return[!0,r];if(e.l&&r===null)return[!0,r];let t=s();if(t&&(t===!0||"data"in t)){let a=t===!0?r:t.data;return e.s&&!e.s(a)?[!1,[e.n(a)]]:[!0,a]}if(e.o!==void 0)return n.warnings.push(`Fallback used, ${e.n(r)}`),[!0,e.o];if(e.y&&e.i){let a=e.i(r);if(a)return e.s&&!e.s(a.fixed)?[!1,[e.n(a.fixed)]]:(n.warnings.push(`${n.path?`$${n.path}: `:""}Autofixed from error "${e.n(r)}"`),[!0,a.fixed])}return[!1,t&&"errors"in t?t.errors:[e.n(r)]]}function U(e){return{...this,y:!0,i:e}}function z(e){return{...this,s:e,e:`${this.e}_with_predicate`}}function B(){return{...this,c:!0}}function D(e){return`Type '${S(e)}' is not assignable to '${this.e}'`}function M(){return{...this,l:!0,e:`${this.e}_or_nullable`}}function W(){return{...this,u:!0,e:`${this.e}_or_nullish`}}var o={withFallback:F,where:z,optional:B,n:D,nullable:M,withAutofix:U,nullish:W},L={...o,r(e,r){return i(this,e,r,()=>e===void 0)},e:"undefined"},Z={...o,r(e,r){return i(this,e,r,()=>e===null)},e:"null"},G={...o,r(e,r){return i(this,e,r,()=>!0)},e:"any"},H={...o,r(e,r){return i(this,e,r,()=>!0)},e:"unknown"},J={...o,r(e,r){return i(this,e,r,()=>typeof e=="boolean")},e:"boolean"},Q={...o,r(e,r){return i(this,e,r,()=>typeof e=="string")},e:"string"},X={...o,r(e,r){return i(this,e,r,()=>typeof e=="number"&&!Number.isNaN(e))},e:"number"},Y={...o,r(e,r){return i(this,e,r,()=>typeof e=="object"&&e instanceof Date&&!Number.isNaN(e.getTime()))},e:"date"};function ee(e){return{...o,r(r,n){return i(this,r,n,()=>r instanceof e)},e:`instanceof_${e.name?`_${e.name}`:""}`}}function re(...e){if(e.length===0)throw new Error("rc_literal requires at least one literal");return{...o,r(r,n){return i(this,r,n,()=>{for(let s of e)if(r===s)return!0;return!1})},e:e.length==1?`${S(e[0])}_literal`:"literals"}}function ne(...e){if(e.length===0)throw new Error("Unions should have at least one type");return{...o,r(r,n){return i(this,r,n,()=>{for(let s of e)if(s.r(r,n)[0])return!0;return!1})},e:e.map(r=>r.e).join(" | ")}}function te(e,r){return{...r,a:e}}function g(e,r){if(!r)return e;if(e.startsWith("$[")||e.startsWith("$.")){let[n="",s]=e.split(": "),t=n.slice(1);return`$${r}${t}: ${s}`}return`$${r}: ${e}`}function j(e,{normalizeKeysFrom:r}={}){return{...o,t:e,e:"object",f:!0,r(n,s){return i(this,n,s,()=>{if(!V(n))return!1;let t=new Set(Object.keys(n)),a={},u=[],R=s.path;for(let[c,f]of Object.entries(e)){let h=c,T=`.${c}`;s.path=`${R}${T}`;let l,p=c;if(f.a&&(l=n[f.a],p=f.a),l===void 0&&(l=n[c],p=c),l===void 0&&r==="snake_case"){let y=I(c);l=n[y],p=y}t.delete(p);let[b,_]=f.r(l,s);if(b)a[h]=_;else{let y=_;for(let x of y)u.push(g(x,T))}}if(this.e==="strict_obj"&&t.size>0)for(let c of t)u.push(`Key '${c}' is not defined in the object shape`);return u.length>0?{errors:u}:{data:a}})}}}function se(e){return e.t}function ae(e){return{...j(e),e:"strict_obj"}}function oe(e,r){return j({...e.t,...r.t})}function ie(e){return{...o,e:`record<string, ${e.e}>`,r(r,n){return i(this,r,n,()=>{if(!V(r))return!1;let s={},t=[];for(let[a,u]of Object.entries(r)){let R=r[a],[c,f]=e.r(u,n);if(c)s[a]=R;else{let h=f;for(let T of h)t.push(g(T,`.${a}`))}}return t.length>0?{errors:t}:{data:s}})}}}function A(e,r){if(typeof r=="string"&&!e.t?.[r])throw new Error(`${e.e} can't be used with unique key option`)}function k(e,r,n,s=!1,t){let a=-1,u=[],R=[],c=new Set,f=n.path;for(let h of e){a++;let T=Array.isArray(r)?r[a]:r,l=`[${a}]`;n.path=`${f}${l}`;let p=T.r(h,n),[b,_]=p,y=t?.unique;if(b&&y){let d=_,O=typeof y=="string";O&&(d=_[y]),c.has(d)?p=[!1,[O?g(`Type '${T.t?.[y]?.e}' with value "${d}" is not unique`,`.${y}`):`${T.e} value is not unique`]]:c.add(d)}let[x,w]=p;if(x)R.push(w);else if(s){u.push(w.map(d=>g(d,l)));continue}else return{errors:w.map(d=>g(d,l))}}if(u.length>0){if(R.length===0)return{errors:u.slice(0,5).flat()};n.warnings.push(...u.flat())}return{data:R}}function ce(e,r){return A(e,r?.unique),{...o,e:`${e.e}[]`,r(n,s){return i(this,n,s,()=>Array.isArray(n)?n.length===0?!0:k.call(this,n,e,s,!1,r):!1)}}}function ue(e,r){return A(e,r?.unique),{...o,e:`${e.e}[]`,r(n,s){return i(this,n,s,()=>Array.isArray(n)?n.length===0?!0:k.call(this,n,e,s,!0,r):!1)}}}function le(e){return{...o,e:`[${e.map(r=>r.e).join(", ")}]`,r(r,n){return i(this,r,n,()=>!Array.isArray(r)||r.length!==e.length?!1:k.call(this,r,e,n))}}}function m(e,r){let n={warnings:[],path:""},[s,t]=r.r(e,n);return s?{error:!1,data:t,warnings:n.warnings.length>0?n.warnings:!1}:{error:!0,errors:t}}function ye(e){return r=>m(r,e)}function fe(e,r){let n=m(e,r);return n.error?{data:null,errors:n.errors,warnings:!1}:{data:n.data,errors:!1,warnings:n.warnings}}function P(e,r){let n={warnings:[],path:""};return!!r.r(e,n)[0]}function Te(e){return r=>P(r,e)}function pe(e){return{...o,e:"recursive",r(r,n){return e().r(r,n)}}}function de(e,r){return{...o,e:`transform_from_${e.e}`,r(n,s){let[t,a]=e.r(n,s);return t?[!0,r(a)]:[!1,a]}}}function S(e){if(typeof e=="object"){if(Array.isArray(e))return"array";if(!e)return"null"}return typeof e}function V(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function I(e){return e.replace(/\W+/g," ").split(/ |\B(?=[A-Z])/).map(r=>r.toLowerCase()).join("_")}0&&(module.exports={rc_any,rc_array,rc_boolean,rc_date,rc_get_obj_schema,rc_instanceof,rc_is_valid,rc_literals,rc_loose_array,rc_loose_parse,rc_null,rc_number,rc_obj_intersection,rc_object,rc_parse,rc_parser,rc_record,rc_recursive,rc_rename_key,rc_strict_obj,rc_string,rc_transform,rc_tuple,rc_undefined,rc_union,rc_unknown,rc_validator,snakeCase});
1
+ "use strict";var j=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var N=Object.prototype.hasOwnProperty;var v=(e,r)=>{for(var n in r)j(e,n,{get:r[n],enumerable:!0})},C=(e,r,n,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of K(r))!N.call(e,s)&&s!==n&&j(e,s,{get:()=>r[s],enumerable:!(t=E(r,s))||t.enumerable});return e};var F=e=>C(j({},"__esModule",{value:!0}),e);var _e={};v(_e,{rc_any:()=>H,rc_array:()=>le,rc_boolean:()=>Q,rc_date:()=>ee,rc_extends_obj:()=>ae,rc_get_obj_schema:()=>oe,rc_instanceof:()=>re,rc_is_valid:()=>S,rc_literals:()=>ne,rc_loose_array:()=>ye,rc_loose_parse:()=>pe,rc_null:()=>G,rc_number:()=>Y,rc_obj_intersection:()=>ce,rc_object:()=>x,rc_parse:()=>m,rc_parser:()=>Te,rc_record:()=>ue,rc_recursive:()=>Re,rc_rename_from_key:()=>A,rc_rename_key:()=>se,rc_strict_obj:()=>ie,rc_string:()=>X,rc_transform:()=>he,rc_tuple:()=>fe,rc_undefined:()=>Z,rc_union:()=>te,rc_unknown:()=>J,rc_validator:()=>de,snakeCase:()=>q});module.exports=F(_e);function U(e){return{...this,o:e}}function i(e,r,n,t){if(e.c&&r===void 0)return[!0,r];if(e.u&&r==null)return[!0,r];if(e.l&&r===null)return[!0,r];let s=t();if(s&&(s===!0||"data"in s)){let a=s===!0?r:s.data;return e.s&&!e.s(a)?[!1,[e.n(a)]]:[!0,a]}if(e.o!==void 0)return n.warnings.push(`Fallback used, ${e.n(r)}`),[!0,e.o];if(e.y&&e.i){let a=e.i(r);if(a)return e.s&&!e.s(a.fixed)?[!1,[e.n(a.fixed)]]:(n.warnings.push(`${n.path?`$${n.path}: `:""}Autofixed from error "${e.n(r)}"`),[!0,a.fixed])}return[!1,s&&"errors"in s?s.errors:[e.n(r)]]}function z(e){return{...this,y:!0,i:e}}function B(e){return{...this,s:e,e:`${this.e}_with_predicate`}}function W(){return{...this,c:!0}}function D(e){return`Type '${V(e)}' is not assignable to '${this.e}'`}function M(){return{...this,l:!0,e:`${this.e}_or_nullable`}}function L(){return{...this,u:!0,e:`${this.e}_or_nullish`}}var o={withFallback:U,where:B,optional:W,n:D,nullable:M,withAutofix:z,nullish:L},Z={...o,r(e,r){return i(this,e,r,()=>e===void 0)},e:"undefined"},G={...o,r(e,r){return i(this,e,r,()=>e===null)},e:"null"},H={...o,r(e,r){return i(this,e,r,()=>!0)},e:"any"},J={...o,r(e,r){return i(this,e,r,()=>!0)},e:"unknown"},Q={...o,r(e,r){return i(this,e,r,()=>typeof e=="boolean")},e:"boolean"},X={...o,r(e,r){return i(this,e,r,()=>typeof e=="string")},e:"string"},Y={...o,r(e,r){return i(this,e,r,()=>typeof e=="number"&&!Number.isNaN(e))},e:"number"},ee={...o,r(e,r){return i(this,e,r,()=>typeof e=="object"&&e instanceof Date&&!Number.isNaN(e.getTime()))},e:"date"};function re(e){return{...o,r(r,n){return i(this,r,n,()=>r instanceof e)},e:`instanceof_${e.name?`_${e.name}`:""}`}}function ne(...e){if(e.length===0)throw new Error("rc_literal requires at least one literal");return{...o,r(r,n){return i(this,r,n,()=>{for(let t of e)if(r===t)return!0;return!1})},e:e.length==1?`${V(e[0])}_literal`:"literals"}}function te(...e){if(e.length===0)throw new Error("Unions should have at least one type");return{...o,r(r,n){return i(this,r,n,()=>{for(let t of e)if(t.r(r,n)[0])return!0;return!1})},e:e.map(r=>r.e).join(" | ")}}function A(e,r){return{...r,a:e}}var se=A;function h(e,r){if(!r)return e;if(e.startsWith("$[")||e.startsWith("$.")){let[n="",t]=e.split(": "),s=n.slice(1);return`$${r}${s}: ${t}`}return`$${r}: ${e}`}function x(e,{normalizeKeysFrom:r}={}){return{...o,t:e,e:"object",f:!0,r(n,t){return i(this,n,t,()=>{if(!I(n))return!1;let s=new Set(Object.keys(n)),a={},c=[],y=t.path;for(let[u,p]of Object.entries(e)){let _=u,d=`.${u}`;t.path=`${y}${d}`;let l,f=u;if(p.a&&(l=n[p.a],f=p.a),l===void 0&&(l=n[u],f=u),l===void 0&&r==="snake_case"){let T=q(u);l=n[T],f=T}s.delete(f);let[b,g]=p.r(l,t);if(b)a[_]=g;else{let T=g;for(let w of T)c.push(h(w,d))}}if(this.e==="strict_obj"&&s.size>0)for(let u of s)c.push(`Key '${u}' is not defined in the object shape`);return c.length>0?{errors:c}:this.e.startsWith("extends_object")?{data:{...n,...a}}:{data:a}})}}}function ae(e){return{...x(e),e:"extends_object"}}function oe(e){return e.t}function ie(e){return{...x(e),e:"strict_obj"}}function ce(e,r){return x({...e.t,...r.t})}function ue(e,{checkKey:r,looseCheck:n}={}){return{...o,e:`record<string, ${e.e}>`,r(t,s){return i(this,t,s,()=>{if(!I(t))return!1;let a={},c=[];for(let[y,u]of Object.entries(t)){let p=`.${y}`;if(r&&!r(y)){c.push(h(`Key '${y}' is not allowed`,p));continue}let _=t[y],[d,l]=e.r(u,s);if(d)a[y]=_;else{let f=l;for(let b of f)c.push(h(b,p))}}if(c.length>0)if(n)s.warnings.push(...c);else return{errors:c};return{data:a}})}}}function P(e,r){if(typeof r=="string"&&!e.t?.[r])throw new Error(`${e.e} can't be used with unique key option`)}function k(e,r,n,t=!1,s){let a=-1,c=[],y=[],u=new Set,p=n.path;for(let _ of e){a++;let d=Array.isArray(r)?r[a]:r,l=`[${a}]`;n.path=`${p}${l}`;let f=d.r(_,n),[b,g]=f,T=s?.unique;if(b&&T){let R=g,O=typeof T=="string";O&&(R=g[T]),u.has(R)?f=[!1,[O?h(`Type '${d.t?.[T]?.e}' with value "${R}" is not unique`,`.${T}`):`${d.e} value is not unique`]]:u.add(R)}let[w,$]=f;if(w)y.push($);else if(t){c.push($.map(R=>h(R,l)));continue}else return{errors:$.map(R=>h(R,l))}}if(c.length>0){if(y.length===0)return{errors:c.slice(0,5).flat()};n.warnings.push(...c.flat())}return{data:y}}function le(e,r){return P(e,r?.unique),{...o,e:`${e.e}[]`,r(n,t){return i(this,n,t,()=>Array.isArray(n)?n.length===0?!0:k.call(this,n,e,t,!1,r):!1)}}}function ye(e,r){return P(e,r?.unique),{...o,e:`${e.e}[]`,r(n,t){return i(this,n,t,()=>Array.isArray(n)?n.length===0?!0:k.call(this,n,e,t,!0,r):!1)}}}function fe(e){return{...o,e:`[${e.map(r=>r.e).join(", ")}]`,r(r,n){return i(this,r,n,()=>!Array.isArray(r)||r.length!==e.length?!1:k.call(this,r,e,n))}}}function m(e,r){let n={warnings:[],path:""},[t,s]=r.r(e,n);return t?{error:!1,data:s,warnings:n.warnings.length>0?n.warnings:!1}:{error:!0,errors:s}}function Te(e){return r=>m(r,e)}function pe(e,r){let n=m(e,r);return n.error?{data:null,errors:n.errors,warnings:!1}:{data:n.data,errors:!1,warnings:n.warnings}}function S(e,r){let n={warnings:[],path:""};return!!r.r(e,n)[0]}function de(e){return r=>S(r,e)}function Re(e){return{...o,e:"recursive",r(r,n){return e().r(r,n)}}}function he(e,r){return{...o,e:`transform_from_${e.e}`,r(n,t){let[s,a]=e.r(n,t);return s?[!0,r(a)]:[!1,a]}}}function V(e){if(typeof e=="object"){if(Array.isArray(e))return"array";if(!e)return"null"}return typeof e}function I(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function q(e){return e.replace(/\W+/g," ").split(/ |\B(?=[A-Z])/).map(r=>r.toLowerCase()).join("_")}0&&(module.exports={rc_any,rc_array,rc_boolean,rc_date,rc_extends_obj,rc_get_obj_schema,rc_instanceof,rc_is_valid,rc_literals,rc_loose_array,rc_loose_parse,rc_null,rc_number,rc_obj_intersection,rc_object,rc_parse,rc_parser,rc_record,rc_recursive,rc_rename_from_key,rc_rename_key,rc_strict_obj,rc_string,rc_transform,rc_tuple,rc_undefined,rc_union,rc_unknown,rc_validator,snakeCase});
@@ -32,7 +32,9 @@ declare const rc_date: RcType<Date>;
32
32
  declare function rc_instanceof<T extends Function>(classToCheck: T): RcType<T>;
33
33
  declare function rc_literals<T extends (string | number | boolean)[]>(...literals: T): RcType<T[number]>;
34
34
  declare function rc_union<T extends RcType<any>[]>(...types: T): RcType<RcInferType<T[number]>>;
35
- declare function rc_rename_key<T extends RcType<any>>(alternativeNames: string, type: T): RcType<RcInferType<T>>;
35
+ declare function rc_rename_from_key<T extends RcType<any>>(alternativeNames: string, type: T): RcType<RcInferType<T>>;
36
+ /** @deprecated use `rc_rename_from_key` instead */
37
+ declare const rc_rename_key: typeof rc_rename_from_key;
36
38
  type RcObject = Record<string, RcType<any>>;
37
39
  type TypeOfObjectType<T extends RcObject> = {
38
40
  [K in keyof T]: RcInferType<T[K]>;
@@ -41,13 +43,17 @@ type RcObjType<T extends RcObject> = RcType<TypeOfObjectType<T>>;
41
43
  declare function rc_object<T extends RcObject>(shape: T, { normalizeKeysFrom }?: {
42
44
  normalizeKeysFrom?: 'snake_case';
43
45
  }): RcObjType<T>;
46
+ declare function rc_extends_obj<T extends RcObject>(shape: T): RcObjType<T>;
44
47
  declare function rc_get_obj_schema<T extends RcObject>(type: RcObjType<T>): T;
45
48
  /** return an error if the obj has more keys than the expected type */
46
49
  declare function rc_strict_obj<T extends RcObject>(shape: T): RcObjType<T>;
47
50
  declare function rc_obj_intersection<A extends RcObject, B extends RcObject>(a: RcObjType<A>, b: RcObjType<B>): RcObjType<A & B>;
48
51
  type RcRecord<V extends RcType<any>> = Record<string, V>;
49
52
  type RcRecordType<V extends RcType<any>> = RcType<TypeOfObjectType<RcRecord<V>>>;
50
- declare function rc_record<V extends RcType<any>>(valueType: V): RcRecordType<V>;
53
+ declare function rc_record<V extends RcType<any>>(valueType: V, { checkKey, looseCheck, }?: {
54
+ checkKey?: (key: string) => boolean;
55
+ looseCheck?: boolean;
56
+ }): RcRecordType<V>;
51
57
  declare function rc_array<T extends RcType<any>>(type: T, options?: {
52
58
  unique: boolean | string | false;
53
59
  }): RcType<RcInferType<T>[]>;
@@ -84,4 +90,4 @@ declare function rc_recursive(type: () => RcType<any>): RcType<any>;
84
90
  /** validate a input or subset of input and transform the valid result */
85
91
  declare function rc_transform<Input, Transformed>(type: RcType<Input>, transform: (input: Input) => Transformed): RcType<Transformed>;
86
92
 
87
- export { RcInferType, RcParseResult, RcParser, RcType, rc_any, rc_array, rc_boolean, rc_date, rc_get_obj_schema, rc_instanceof, rc_is_valid, rc_literals, rc_loose_array, rc_loose_parse, rc_null, rc_number, rc_obj_intersection, rc_object, rc_parse, rc_parser, rc_record, rc_recursive, rc_rename_key, rc_strict_obj, rc_string, rc_transform, rc_tuple, rc_undefined, rc_union, rc_unknown, rc_validator };
93
+ export { RcInferType, RcParseResult, RcParser, RcType, rc_any, rc_array, rc_boolean, rc_date, rc_extends_obj, rc_get_obj_schema, rc_instanceof, rc_is_valid, rc_literals, rc_loose_array, rc_loose_parse, rc_null, rc_number, rc_obj_intersection, rc_object, rc_parse, rc_parser, rc_record, rc_recursive, rc_rename_from_key, rc_rename_key, rc_strict_obj, rc_string, rc_transform, rc_tuple, rc_undefined, rc_union, rc_unknown, rc_validator };
package/dist/runcheck.js CHANGED
@@ -1 +1 @@
1
- import{A,B,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"./chunk-65SEYLTW.js";export{c as rc_any,r as rc_array,e as rc_boolean,h as rc_date,n as rc_get_obj_schema,i as rc_instanceof,x as rc_is_valid,j as rc_literals,s as rc_loose_array,w as rc_loose_parse,b as rc_null,g as rc_number,p as rc_obj_intersection,m as rc_object,u as rc_parse,v as rc_parser,q as rc_record,z as rc_recursive,l as rc_rename_key,o as rc_strict_obj,f as rc_string,A as rc_transform,t as rc_tuple,a as rc_undefined,k as rc_union,d as rc_unknown,y as rc_validator,B as snakeCase};
1
+ import{A,B,C,D,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"./chunk-NNEEJPIK.js";export{c as rc_any,t as rc_array,e as rc_boolean,h as rc_date,o as rc_extends_obj,p as rc_get_obj_schema,i as rc_instanceof,z as rc_is_valid,j as rc_literals,u as rc_loose_array,y as rc_loose_parse,b as rc_null,g as rc_number,r as rc_obj_intersection,n as rc_object,w as rc_parse,x as rc_parser,s as rc_record,B as rc_recursive,l as rc_rename_from_key,m as rc_rename_key,q as rc_strict_obj,f as rc_string,C as rc_transform,v as rc_tuple,a as rc_undefined,k as rc_union,d as rc_unknown,A as rc_validator,D as snakeCase};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "runcheck",
3
3
  "description": "A tiny (less than 2 KiB Gzipped) and treeshakable! lib for typescript runtime type checks with autofix support",
4
- "version": "0.18.0",
4
+ "version": "0.20.0",
5
5
  "license": "MIT",
6
6
  "scripts": {
7
7
  "test": "vitest --ui",
@@ -1 +0,0 @@
1
- function S(e){return{...this,o:e}}function i(e,r,n,t){if(e.c&&r===void 0)return[!0,r];if(e.u&&r==null)return[!0,r];if(e.l&&r===null)return[!0,r];let s=t();if(s&&(s===!0||"data"in s)){let a=s===!0?r:s.data;return e.s&&!e.s(a)?[!1,[e.n(a)]]:[!0,a]}if(e.o!==void 0)return n.warnings.push(`Fallback used, ${e.n(r)}`),[!0,e.o];if(e.f&&e.i){let a=e.i(r);if(a)return e.s&&!e.s(a.fixed)?[!1,[e.n(a.fixed)]]:(n.warnings.push(`${n.path?`$${n.path}: `:""}Autofixed from error "${e.n(r)}"`),[!0,a.fixed])}return[!1,s&&"errors"in s?s.errors:[e.n(r)]]}function V(e){return{...this,f:!0,i:e}}function I(e){return{...this,s:e,e:`${this.e}_with_predicate`}}function q(){return{...this,c:!0}}function E(e){return`Type '${A(e)}' is not assignable to '${this.e}'`}function K(){return{...this,l:!0,e:`${this.e}_or_nullable`}}function N(){return{...this,u:!0,e:`${this.e}_or_nullish`}}var o={withFallback:S,where:I,optional:q,n:E,nullable:K,withAutofix:V,nullish:N},F={...o,r(e,r){return i(this,e,r,()=>e===void 0)},e:"undefined"},U={...o,r(e,r){return i(this,e,r,()=>e===null)},e:"null"},z={...o,r(e,r){return i(this,e,r,()=>!0)},e:"any"},B={...o,r(e,r){return i(this,e,r,()=>!0)},e:"unknown"},D={...o,r(e,r){return i(this,e,r,()=>typeof e=="boolean")},e:"boolean"},M={...o,r(e,r){return i(this,e,r,()=>typeof e=="string")},e:"string"},W={...o,r(e,r){return i(this,e,r,()=>typeof e=="number"&&!Number.isNaN(e))},e:"number"},L={...o,r(e,r){return i(this,e,r,()=>typeof e=="object"&&e instanceof Date&&!Number.isNaN(e.getTime()))},e:"date"};function Z(e){return{...o,r(r,n){return i(this,r,n,()=>r instanceof e)},e:`instanceof_${e.name?`_${e.name}`:""}`}}function G(...e){if(e.length===0)throw new Error("rc_literal requires at least one literal");return{...o,r(r,n){return i(this,r,n,()=>{for(let t of e)if(r===t)return!0;return!1})},e:e.length==1?`${A(e[0])}_literal`:"literals"}}function H(...e){if(e.length===0)throw new Error("Unions should have at least one type");return{...o,r(r,n){return i(this,r,n,()=>{for(let t of e)if(t.r(r,n)[0])return!0;return!1})},e:e.map(r=>r.e).join(" | ")}}function J(e,r){return{...r,a:e}}function g(e,r){if(!r)return e;if(e.startsWith("$[")||e.startsWith("$.")){let[n="",t]=e.split(": "),s=n.slice(1);return`$${r}${s}: ${t}`}return`$${r}: ${e}`}function k(e,{normalizeKeysFrom:r}={}){return{...o,t:e,e:"object",y:!0,r(n,t){return i(this,n,t,()=>{if(!P(n))return!1;let s=new Set(Object.keys(n)),a={},u=[],R=t.path;for(let[c,f]of Object.entries(e)){let h=c,T=`.${c}`;t.path=`${R}${T}`;let l,p=c;if(f.a&&(l=n[f.a],p=f.a),l===void 0&&(l=n[c],p=c),l===void 0&&r==="snake_case"){let y=C(c);l=n[y],p=y}s.delete(p);let[b,_]=f.r(l,t);if(b)a[h]=_;else{let y=_;for(let x of y)u.push(g(x,T))}}if(this.e==="strict_obj"&&s.size>0)for(let c of s)u.push(`Key '${c}' is not defined in the object shape`);return u.length>0?{errors:u}:{data:a}})}}}function Q(e){return e.t}function X(e){return{...k(e),e:"strict_obj"}}function Y(e,r){return k({...e.t,...r.t})}function ee(e){return{...o,e:`record<string, ${e.e}>`,r(r,n){return i(this,r,n,()=>{if(!P(r))return!1;let t={},s=[];for(let[a,u]of Object.entries(r)){let R=r[a],[c,f]=e.r(u,n);if(c)t[a]=R;else{let h=f;for(let T of h)s.push(g(T,`.${a}`))}}return s.length>0?{errors:s}:{data:t}})}}}function m(e,r){if(typeof r=="string"&&!e.t?.[r])throw new Error(`${e.e} can't be used with unique key option`)}function $(e,r,n,t=!1,s){let a=-1,u=[],R=[],c=new Set,f=n.path;for(let h of e){a++;let T=Array.isArray(r)?r[a]:r,l=`[${a}]`;n.path=`${f}${l}`;let p=T.r(h,n),[b,_]=p,y=s?.unique;if(b&&y){let d=_,j=typeof y=="string";j&&(d=_[y]),c.has(d)?p=[!1,[j?g(`Type '${T.t?.[y]?.e}' with value "${d}" is not unique`,`.${y}`):`${T.e} value is not unique`]]:c.add(d)}let[x,w]=p;if(x)R.push(w);else if(t){u.push(w.map(d=>g(d,l)));continue}else return{errors:w.map(d=>g(d,l))}}if(u.length>0){if(R.length===0)return{errors:u.slice(0,5).flat()};n.warnings.push(...u.flat())}return{data:R}}function re(e,r){return m(e,r?.unique),{...o,e:`${e.e}[]`,r(n,t){return i(this,n,t,()=>Array.isArray(n)?n.length===0?!0:$.call(this,n,e,t,!1,r):!1)}}}function ne(e,r){return m(e,r?.unique),{...o,e:`${e.e}[]`,r(n,t){return i(this,n,t,()=>Array.isArray(n)?n.length===0?!0:$.call(this,n,e,t,!0,r):!1)}}}function te(e){return{...o,e:`[${e.map(r=>r.e).join(", ")}]`,r(r,n){return i(this,r,n,()=>!Array.isArray(r)||r.length!==e.length?!1:$.call(this,r,e,n))}}}function O(e,r){let n={warnings:[],path:""},[t,s]=r.r(e,n);return t?{error:!1,data:s,warnings:n.warnings.length>0?n.warnings:!1}:{error:!0,errors:s}}function se(e){return r=>O(r,e)}function ae(e,r){let n=O(e,r);return n.error?{data:null,errors:n.errors,warnings:!1}:{data:n.data,errors:!1,warnings:n.warnings}}function v(e,r){let n={warnings:[],path:""};return!!r.r(e,n)[0]}function oe(e){return r=>v(r,e)}function ie(e){return{...o,e:"recursive",r(r,n){return e().r(r,n)}}}function ce(e,r){return{...o,e:`transform_from_${e.e}`,r(n,t){let[s,a]=e.r(n,t);return s?[!0,r(a)]:[!1,a]}}}function A(e){if(typeof e=="object"){if(Array.isArray(e))return"array";if(!e)return"null"}return typeof e}function P(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function C(e){return e.replace(/\W+/g," ").split(/ |\B(?=[A-Z])/).map(r=>r.toLowerCase()).join("_")}export{F as a,U as b,z as c,B as d,D as e,M as f,W as g,L as h,Z as i,G as j,H as k,J as l,k as m,Q as n,X as o,Y as p,ee as q,re as r,ne as s,te as t,O as u,se as v,ae as w,v as x,oe as y,ie as z,ce as A,C as B};