runcheck 0.35.0 → 0.35.2

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
@@ -92,6 +92,34 @@ const shape = rc_object({
92
92
 
93
93
  The `rc_object` will allow extra properties but, any extra propertie will be striped in parsing. To allow extra in parsing properties, use `rc_extends_obj`.
94
94
 
95
+ # Marking optional keys
96
+
97
+ Optional keys can be marked with the `optionalKey()` method.
98
+
99
+ ```ts
100
+ const shape = rc_object({
101
+ name: rc_string.optionalKey(),
102
+ age: rc_number,
103
+ isCool: rc_boolean,
104
+ })
105
+
106
+ /*
107
+ infered type will be:
108
+ {
109
+ name?: string | undefined,
110
+ age: number,
111
+ isCool: boolean,
112
+ }
113
+
114
+ instead of:
115
+ {
116
+ name: string | undefined,
117
+ age: number,
118
+ isCool: boolean,
119
+ }
120
+ */
121
+ ```
122
+
95
123
  ## `rc_strict_obj`
96
124
 
97
125
  The same as `rc_object` but, any extra propertie will be throw an error in parsing.
@@ -445,32 +473,3 @@ const schema = rc_obj_builder<SchemaType>()({
445
473
  },
446
474
  })
447
475
  ```
448
-
449
- # `rc_required_key`
450
-
451
- Infer a key as required. Example:
452
-
453
- ```ts
454
- const shape = rc_object({
455
- name: rc_required_key(rc_string.optional()),
456
- age: rc_number,
457
- isCool: rc_boolean,
458
- })
459
-
460
- /*
461
- infered type will be:
462
- {
463
- name: string | undefined,
464
- age: number,
465
- isCool: boolean,
466
- }
467
-
468
- instead of:
469
- {
470
- name?: string | undefined,
471
- age: number,
472
- isCool: boolean,
473
- }
474
- */
475
- ```
476
-
@@ -1 +1 @@
1
- "use strict";var u=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var h=(e,r)=>{for(var n in r)u(e,n,{get:r[n],enumerable:!0})},_=(e,r,n,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of R(r))!b.call(e,t)&&t!==n&&u(e,t,{get:()=>r[t],enumerable:!(a=p(r,t))||a.enumerable});return e};var j=e=>_(u({},"__esModule",{value:!0}),e);var q={};h(q,{rc_boolean_autofix:()=>E,rc_number_autofix:()=>I,rc_string_autofix:()=>A});module.exports=j(q);function x(e){return{...this,i:e}}function g(e,r){return r.startsWith("$[")||r.startsWith("$.")?r:`${e.path?`$${e.path}: `:""}${r}`}function y(e,r){e.warnings.push(g(e,r))}function s(e,r,n,a){if(e.c&&r===void 0)return[!0,r];if(e.u&&r==null)return[!0,r];if(e.y&&r===null)return[!0,r];let t=a();if(t&&(t===!0||!t.errors)){let i=t===!0?r:t.data;return e.t&&!e.t(i)?[!1,[`Predicate failed for type '${e.e}'`]]:[!0,i]}let c=e.i;if(c!==void 0)return y(n,`Fallback used, errors -> ${f(t,n,e,r)}`),[!0,P(c)?c():c];if(e.f&&e.o){let i=e.o(r);if(i)return e.t&&!e.t(i.fixed)?[!1,[`Predicate failed for autofix in type '${e.e}'`]]:(y(n,`Autofixed from error "${f(t,n,e,r)}"`),[!0,i.fixed])}return[!1,t?t.errors:[e.l(r)]]}function f(e,r,n,a){return e?e.errors.map(t=>t.replace(r.path,"")).join("; "):n.l(a)}function k(e){return{...this,f:!0,o:e}}function O(e){return{...this,t:e}}function m(){return{...this,c:!0}}function w(e){return`Type '${S(e,!!this.T)}' is not assignable to '${this.e}'`}function K(){return{...this,y:!0,e:`${this.e}_or_null`}}function $(){return{...this,u:!0,e:`${this.e}_or_nullish`}}var o={__type:void 0,withFallback:x,where:O,optional:m,l:w,orNullish:$,withAutofix:k,orNull:K,R:!1,i:void 0,t:void 0,c:!1,y:!1,u:!1,f:!1,T:!1,s:void 0,o:void 0,b:void 0,n:void 0,a:!1,d:!1,p:[]},N={...o,r(e,r){return s(this,e,r,()=>e===void 0)},e:"undefined"},v={...o,r(e,r){return s(this,e,r,()=>e===null)},e:"null"},V={...o,r(e,r){return s(this,e,r,()=>!0)},e:"any"},B={...o,r(e,r){return s(this,e,r,()=>!0)},e:"unknown"},l={...o,r(e,r){return s(this,e,r,()=>typeof e=="boolean")},e:"boolean"},T={...o,r(e,r){return s(this,e,r,()=>typeof e=="string")},e:"string"},d={...o,r(e,r){return s(this,e,r,()=>typeof e=="number"&&!Number.isNaN(e))},e:"number"},F={...o,r(e,r){return s(this,e,r,()=>typeof e=="object"&&e instanceof Date&&!Number.isNaN(e.getTime()))},e:"date"};function S(e,r){let n=(()=>{if(typeof e=="object"){if(Array.isArray(e))return"array";if(!e)return"null"}return typeof e})();return r&&(n==="string"||n==="number"||n==="boolean")?`${n}(${e})`:n}function P(e){return typeof e=="function"}var E=l.withAutofix(e=>e==null||e===0||e===1?{fixed:!!e}:e==="true"||e==="false"?{fixed:e==="true"}:!1),A=T.withAutofix(e=>typeof e=="number"&&!Number.isNaN(e)?{fixed:e.toString()}:!1),I=d.withAutofix(e=>{if(typeof e=="string"){let r=Number(e);if(!Number.isNaN(r))return{fixed:r}}return!1});0&&(module.exports={rc_boolean_autofix,rc_number_autofix,rc_string_autofix});
1
+ "use strict";var u=Object.defineProperty;var R=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var _=(e,r)=>{for(var n in r)u(e,n,{get:r[n],enumerable:!0})},j=(e,r,n,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of b(r))!h.call(e,t)&&t!==n&&u(e,t,{get:()=>r[t],enumerable:!(a=R(r,t))||a.enumerable});return e};var x=e=>j(u({},"__esModule",{value:!0}),e);var C={};_(C,{rc_boolean_autofix:()=>E,rc_number_autofix:()=>I,rc_string_autofix:()=>A});module.exports=x(C);function g(e){return{...this,i:e}}function O(e,r){return r.startsWith("$[")||r.startsWith("$.")?r:`${e.path?`$${e.path}: `:""}${r}`}function y(e,r){e.warnings.push(O(e,r))}function o(e,r,n,a){if(e.c&&r===void 0)return[!0,r];if(e.u&&r==null)return[!0,r];if(e.y&&r===null)return[!0,r];let t=a();if(t&&(t===!0||!t.errors)){let i=t===!0?r:t.data;return e.t&&!e.t(i)?[!1,[`Predicate failed for type '${e.e}'`]]:[!0,i]}let c=e.i;if(c!==void 0)return y(n,`Fallback used, errors -> ${f(t,n,e,r)}`),[!0,P(c)?c():c];if(e.f&&e.s){let i=e.s(r);if(i)return e.t&&!e.t(i.fixed)?[!1,[`Predicate failed for autofix in type '${e.e}'`]]:(y(n,`Autofixed from error "${f(t,n,e,r)}"`),[!0,i.fixed])}return[!1,t?t.errors:[e.l(r)]]}function f(e,r,n,a){return e?e.errors.map(t=>t.replace(r.path,"")).join("; "):n.l(a)}function k(e){return{...this,f:!0,s:e}}function m(e){return{...this,t:e}}function l(){return{...this,c:!0}}function w(e){return`Type '${S(e,!!this.T)}' is not assignable to '${this.e}'`}function K(){return{...this,y:!0,e:`${this.e}_or_null`}}function $(){return{...this,u:!0,e:`${this.e}_or_nullish`}}var s={__rc_type:void 0,withFallback:g,where:m,optional:l,optionalKey:l,l:w,orNullish:$,withAutofix:k,orNull:K,R:!1,i:void 0,t:void 0,c:!1,y:!1,u:!1,f:!1,T:!1,o:void 0,s:void 0,b:void 0,n:void 0,a:!1,d:!1,p:[]},N={...s,r(e,r){return o(this,e,r,()=>e===void 0)},e:"undefined"},v={...s,r(e,r){return o(this,e,r,()=>e===null)},e:"null"},V={...s,r(e,r){return o(this,e,r,()=>!0)},e:"any"},B={...s,r(e,r){return o(this,e,r,()=>!0)},e:"unknown"},T={...s,r(e,r){return o(this,e,r,()=>typeof e=="boolean")},e:"boolean"},d={...s,r(e,r){return o(this,e,r,()=>typeof e=="string")},e:"string"},p={...s,r(e,r){return o(this,e,r,()=>typeof e=="number"&&!Number.isNaN(e))},e:"number"},F={...s,r(e,r){return o(this,e,r,()=>typeof e=="object"&&e instanceof Date&&!Number.isNaN(e.getTime()))},e:"date"};function S(e,r){let n=(()=>{if(typeof e=="object"){if(Array.isArray(e))return"array";if(!e)return"null"}return typeof e})();return r&&(n==="string"||n==="number"||n==="boolean")?`${n}(${e})`:n}function P(e){return typeof e=="function"}var E=T.withAutofix(e=>e==null||e===0||e===1?{fixed:!!e}:e==="true"||e==="false"?{fixed:e==="true"}:!1),A=d.withAutofix(e=>typeof e=="number"&&!Number.isNaN(e)?{fixed:e.toString()}:!1),I=p.withAutofix(e=>{if(typeof e=="string"){let r=Number(e);if(!Number.isNaN(r))return{fixed:r}}return!1});0&&(module.exports={rc_boolean_autofix,rc_number_autofix,rc_string_autofix});
@@ -1 +1 @@
1
- import{e as f,f as t,g as o}from"./chunk-DLMFFROB.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-S5P42XEZ.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 N(e){return{...this,i:e}}function _(e,r){return r.startsWith("$[")||r.startsWith("$.")?r:`${e.path?`$${e.path}: `:""}${r}`}function K(e,r){e.warnings.push(_(e,r))}function C(e,r){r.forEach(n=>K(e,n))}function u(e,r,n,s){if(e.c&&r===void 0)return[!0,r];if(e.u&&r==null)return[!0,r];if(e.y&&r===null)return[!0,r];let t=s();if(t&&(t===!0||!t.errors)){let a=t===!0?r:t.data;return e.t&&!e.t(a)?[!1,[`Predicate failed for type '${e.e}'`]]:[!0,a]}let o=e.i;if(o!==void 0)return K(n,`Fallback used, errors -> ${E(t,n,e,r)}`),[!0,Z(o)?o():o];if(e.f&&e.s){let a=e.s(r);if(a)return e.t&&!e.t(a.fixed)?[!1,[`Predicate failed for autofix in type '${e.e}'`]]:(K(n,`Autofixed from error "${E(t,n,e,r)}"`),[!0,a.fixed])}return[!1,t?t.errors:[e.l(r)]]}function E(e,r,n,s){return e?e.errors.map(t=>t.replace(r.path,"")).join("; "):n.l(s)}function B(e){return{...this,f:!0,s:e}}function F(e){return{...this,t:e}}function I(){return{...this,c:!0}}function W(e){return`Type '${$(e,!!this.T)}' is not assignable to '${this.e}'`}function U(){return{...this,y:!0,e:`${this.e}_or_null`}}function D(){return{...this,u:!0,e:`${this.e}_or_nullish`}}var i={__rc_type:void 0,withFallback:N,where:F,optional:I,optionalKey:I,l:W,orNullish:D,withAutofix:B,orNull:U,R:!1,i:void 0,t:void 0,c:!1,y:!1,u:!1,f:!1,T:!1,o:void 0,s:void 0,b:void 0,n:void 0,a:!1,d:!1,p:[]},G={...i,r(e,r){return u(this,e,r,()=>e===void 0)},e:"undefined"},H={...i,r(e,r){return u(this,e,r,()=>e===null)},e:"null"},X={...i,r(e,r){return u(this,e,r,()=>!0)},e:"any"},Y={...i,r(e,r){return u(this,e,r,()=>!0)},e:"unknown"},ee={...i,r(e,r){return u(this,e,r,()=>typeof e=="boolean")},e:"boolean"},re={...i,r(e,r){return u(this,e,r,()=>typeof e=="string")},e:"string"},ne={...i,r(e,r){return u(this,e,r,()=>typeof e=="number"&&!Number.isNaN(e))},e:"number"},te={...i,r(e,r){return u(this,e,r,()=>typeof e=="object"&&e instanceof Date&&!Number.isNaN(e.getTime()))},e:"date"};function se(e){return{...i,r(r,n){return u(this,r,n,()=>r instanceof e)},e:`instanceof_${e.name?`_${e.name}`:""}`}}function oe(...e){if(e.length===0)throw new Error("rc_literal requires at least one literal");return{...i,r(r,n){return u(this,r,n,()=>{for(let s of e)if(r===s)return!0;return!1})},T:!0,e:e.length==1?$(e[0],!0):e.map(r=>$(r,!0)).join(" | ")}}var A=1;function ae(...e){if(e.length===0)throw new Error("Unions should have at least one type");return{...i,r(r,n){return u(this,r,n,()=>{let s=n.path,t=[],o=0,a=!1,y=[],f=0;for(let R of e){f+=1,R.a&&(n.path=`${s}|union ${f}|`),n.objErrShortCircuit=!0,n.objErrKeyIndex=0;let[c,T]=R.r(r,n);n.objErrShortCircuit=!1;let p=n.objErrKeyIndex;if(n.objErrKeyIndex=0,c)return!0;R.a&&p!==-1?p>0?y.push(...T):(o<A&&t.push(...T),o+=1):a=!0}return n.path=s,y.length>0||t.length>0?((o>A||a)&&t.push("not matches any other union member"),{errors:[...y,...t],data:void 0}):!1})},e:e.map(r=>r.e).join(" | ")}}function M(e,r){return{...r,o:e}}var ie=M;function z(e){return k(e)&&"__rc_type"in e}function q(e){if(z(e))return e;if(k(e)){let r={};for(let[n,s]of Object.entries(e))r[n]=q(s);return j(r)}throw new Error(`invalid schema: ${e}`)}function j(e,{normalizeKeysFrom:r}={}){let n={};for(let[s,t]of Object.entries(e))n[s]=q(t);return{...i,n,e:"object",a:!0,p:Object.entries(n),r(s,t){return u(this,s,t,()=>{if(!k(s))return t.objErrKeyIndex=-1,!1;let o=this.e==="strict_obj"?new Set(Object.keys(s)):void 0,a={},y=[],f=t.path,R=-1;for(let[c,T]of this.p){let p=c;R+=1;let g=`.${c}`;t.path=`${f}${g}`;let d,b=c;if(T.o&&(d=s[T.o],b=T.o),d===void 0&&(d=s[c],b=c),d===void 0&&r==="snake_case"){let l=L(c);d=s[l],b=l}o?.delete(b);let[O,x]=T.r(d,t);if(O)a[p]=x;else{for(let l of x)y.push(_(t,l));if(t.objErrShortCircuit){t.objErrKeyIndex=R;break}}}if(o&&o.size>0)for(let c of o)y.push(`Key '${c}' is not defined in the object shape`);return y.length>0?{errors:y,data:void 0}:this.d?{errors:!1,data:{...s,...a}}:{errors:!1,data:a}})}}}function ce(e,r){return{...j(e,r),e:"extends_object",d:!0}}function ue(e){return e.n}function ye(e,r){return{...j(e,r),e:"strict_obj"}}function fe(...e){let r={};for(let n of e)Object.assign(r,n.n);return j(r)}function le(e,r){let n={};if(!e.n)throw new Error("rc_obj_pick: obj must be an object type");for(let s of r){let t=e.n[s];t&&(n[s]=t)}return j(n)}function Te(e,r){let n={};if(!e.n)throw new Error("rc_obj_omit: obj must be an object type");for(let s of Object.keys(e.n))r.includes(s)||(n[s]=e.n[s]);return j(n)}function Q(e,{checkKey:r,looseCheck:n}={}){return{...i,e:`record<string, ${e.e}>`,r(s,t){return u(this,s,t,()=>{if(!k(s))return!1;let o={},a=[],y=t.path;for(let[f,R]of Object.entries(s)){let c=`.${f}`,T=`${y}${c}`;if(t.path=T,r&&!r(f)){a.push(_(t,`Key '${f}' is not allowed`));continue}let p=s[f],[g,d]=e.r(R,t);if(g)o[f]=p;else{let b=d;for(let O of b)a.push(_(t,O));if(t.objErrShortCircuit)break}}if(a.length>0)if(n)C(t,a);else return{errors:a,data:void 0};return{errors:!1,data:o}})}}}function pe(e,{checkKey:r}={}){return Q(e,{checkKey:r,looseCheck:!0})}function v(e,r){if(typeof r=="string"&&!e.n?.[r])throw new Error(`${e.e} can't be used with unique key option`)}function S(e,r,n,s=!1,t){let o=[],a=[],y=new Set,f=n.path,R=Array.isArray(r),c=-1;for(let T of e){c++;let p=R?r[c]:r,g=`[${c}]`,d=`${f}${g}`;n.path=d;let b=p.r(T,n),[O,x]=b;n.path=d;let l=t?.unique;if(O&&l){let h=x,m=typeof l=="string";m?h=x[l]:typeof l=="function"&&(h=l(x)),y.has(h)?(m&&(n.path=`${f}${g}.${l}`),b=[!1,[_(n,m?`Type '${p.n?.[l]?.e}' with value "${h}" is not unique`:typeof l=="function"?`Type '${p.e}' unique fn return with value "${h}" is not unique`:`${p.e} value is not unique`)]]):y.add(h)}let[V,w]=b;if(V)a.push(w);else if(s){o.push(w.map(h=>_(n,h)));continue}else return{errors:w.map(h=>_(n,h)),data:void 0}}if(o.length>0){if(a.length===0)return{errors:o.slice(0,5).flat(),data:void 0};C(n,o.flat())}return{errors:!1,data:a}}function de(e,r){return v(e,r?.unique),{...i,e:`${e.e}[]`,r(n,s){return u(this,n,s,()=>Array.isArray(n)?n.length===0?!0:S.call(this,n,e,s,!1,r):!1)}}}function Re(e,r){return v(e,r?.unique),{...i,e:`${e.e}[]`,r(n,s){return u(this,n,s,()=>Array.isArray(n)?n.length===0?!0:S.call(this,n,e,s,!0,r):!1)}}}function be(e){return{...i,e:`[${e.map(r=>r.e).join(", ")}]`,r(r,n){return u(this,r,n,()=>!Array.isArray(r)||r.length!==e.length?!1:S.call(this,r,e,n))}}}function P(e,r){let n={warnings:[],path:"",objErrShortCircuit:!1,objErrKeyIndex:0},[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 he(e){return r=>P(r,e)}function _e(e,r){let n=P(e,r);return n.error?{data:null,errors:n.errors,warnings:!1}:{data:n.data,errors:!1,warnings:n.warnings}}function J(e,r){let n={warnings:[],path:"",objErrShortCircuit:!1,objErrKeyIndex:0};return!!r.r(e,n)[0]}function je(e){return r=>J(r,e)}function ge(e){return{...i,e:"recursive",r(r,n){return e().r(r,n)}}}function xe(e,r){return{...i,e:`transform_from_${e.e}`,r(n,s){let[t,o]=e.r(n,s);return t?[!0,r(o)]:[!1,o]}}}function $(e,r){let n=(()=>{if(typeof e=="object"){if(Array.isArray(e))return"array";if(!e)return"null"}return typeof e})();return r&&(n==="string"||n==="number"||n==="boolean")?`${n}(${e})`:n}function Oe(e){if(e.error)throw new Error(`invalid input: ${e.errors.join(", ")}`)}function k(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function L(e){return e.replace(/\W+/g," ").split(/ |\B(?=[A-Z])/).map(r=>r.toLowerCase()).join("_")}function ke(e,r){try{let n=JSON.parse(e);return P(n,r)}catch(n){return{error:!0,errors:[`json parse error: ${k(n)?n.message:""}`]}}}function Z(e){return typeof e=="function"}function we(){return(e,r)=>j(e,r)}export{G as a,H as b,X as c,Y as d,ee as e,re as f,ne as g,te as h,se as i,oe as j,ae as k,M as l,ie as m,j as n,ce as o,ue as p,ye as q,fe as r,le as s,Te as t,Q as u,pe as v,de as w,Re as x,be as y,P as z,he as A,_e as B,J as C,je as D,ge as E,xe as F,Oe as G,L as H,ke as I,we as J};
package/dist/runcheck.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var $=Object.defineProperty;var W=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var M=Object.prototype.hasOwnProperty;var z=(e,r)=>{for(var n in r)$(e,n,{get:r[n],enumerable:!0})},Q=(e,r,n,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of D(r))!M.call(e,t)&&t!==n&&$(e,t,{get:()=>r[t],enumerable:!(s=W(r,t))||s.enumerable});return e};var J=e=>Q($({},"__esModule",{value:!0}),e);var qe={};z(qe,{rc_any:()=>te,rc_array:()=>ge,rc_assert_is_valid:()=>Pe,rc_boolean:()=>oe,rc_date:()=>ce,rc_extends_obj:()=>pe,rc_get_obj_schema:()=>Re,rc_instanceof:()=>ue,rc_is_valid:()=>B,rc_literals:()=>ye,rc_loose_array:()=>ke,rc_loose_parse:()=>me,rc_loose_record:()=>xe,rc_null:()=>ne,rc_number:()=>ie,rc_obj_builder:()=>Ae,rc_obj_intersection:()=>he,rc_obj_omit:()=>je,rc_obj_pick:()=>_e,rc_object:()=>_,rc_parse:()=>w,rc_parse_json:()=>Ee,rc_parser:()=>we,rc_record:()=>V,rc_recursive:()=>$e,rc_rename_from_key:()=>C,rc_rename_key:()=>le,rc_required_key:()=>de,rc_strict_obj:()=>be,rc_string:()=>ae,rc_transform:()=>Se,rc_tuple:()=>Oe,rc_undefined:()=>re,rc_union:()=>fe,rc_unknown:()=>se,rc_validator:()=>Ke,snakeCase:()=>F});module.exports=J(qe);function L(e){return{...this,i:e}}function j(e,r){return r.startsWith("$[")||r.startsWith("$.")?r:`${e.path?`$${e.path}: `:""}${r}`}function S(e,r){e.warnings.push(j(e,r))}function q(e,r){r.forEach(n=>S(e,n))}function u(e,r,n,s){if(e.c&&r===void 0)return[!0,r];if(e.u&&r==null)return[!0,r];if(e.y&&r===null)return[!0,r];let t=s();if(t&&(t===!0||!t.errors)){let a=t===!0?r:t.data;return e.t&&!e.t(a)?[!1,[`Predicate failed for type '${e.e}'`]]:[!0,a]}let o=e.i;if(o!==void 0)return S(n,`Fallback used, errors -> ${I(t,n,e,r)}`),[!0,Ie(o)?o():o];if(e.f&&e.o){let a=e.o(r);if(a)return e.t&&!e.t(a.fixed)?[!1,[`Predicate failed for autofix in type '${e.e}'`]]:(S(n,`Autofixed from error "${I(t,n,e,r)}"`),[!0,a.fixed])}return[!1,t?t.errors:[e.l(r)]]}function I(e,r,n,s){return e?e.errors.map(t=>t.replace(r.path,"")).join("; "):n.l(s)}function Z(e){return{...this,f:!0,o:e}}function G(e){return{...this,t:e}}function H(){return{...this,c:!0}}function X(e){return`Type '${P(e,!!this.T)}' is not assignable to '${this.e}'`}function Y(){return{...this,y:!0,e:`${this.e}_or_null`}}function ee(){return{...this,u:!0,e:`${this.e}_or_nullish`}}var i={__type:void 0,withFallback:L,where:G,optional:H,l:X,orNullish:ee,withAutofix:Z,orNull:Y,R:!1,i:void 0,t:void 0,c:!1,y:!1,u:!1,f:!1,T:!1,s:void 0,o:void 0,b:void 0,n:void 0,a:!1,d:!1,p:[]},re={...i,r(e,r){return u(this,e,r,()=>e===void 0)},e:"undefined"},ne={...i,r(e,r){return u(this,e,r,()=>e===null)},e:"null"},te={...i,r(e,r){return u(this,e,r,()=>!0)},e:"any"},se={...i,r(e,r){return u(this,e,r,()=>!0)},e:"unknown"},oe={...i,r(e,r){return u(this,e,r,()=>typeof e=="boolean")},e:"boolean"},ae={...i,r(e,r){return u(this,e,r,()=>typeof e=="string")},e:"string"},ie={...i,r(e,r){return u(this,e,r,()=>typeof e=="number"&&!Number.isNaN(e))},e:"number"},ce={...i,r(e,r){return u(this,e,r,()=>typeof e=="object"&&e instanceof Date&&!Number.isNaN(e.getTime()))},e:"date"};function ue(e){return{...i,r(r,n){return u(this,r,n,()=>r instanceof e)},e:`instanceof_${e.name?`_${e.name}`:""}`}}function ye(...e){if(e.length===0)throw new Error("rc_literal requires at least one literal");return{...i,r(r,n){return u(this,r,n,()=>{for(let s of e)if(r===s)return!0;return!1})},T:!0,e:e.length==1?P(e[0],!0):e.map(r=>P(r,!0)).join(" | ")}}var A=1;function fe(...e){if(e.length===0)throw new Error("Unions should have at least one type");return{...i,r(r,n){return u(this,r,n,()=>{let s=n.path,t=[],o=0,a=!1,y=[],f=0;for(let R of e){f+=1,R.a&&(n.path=`${s}|union ${f}|`),n.objErrShortCircuit=!0,n.objErrKeyIndex=0;let[c,T]=R.r(r,n);n.objErrShortCircuit=!1;let d=n.objErrKeyIndex;if(n.objErrKeyIndex=0,c)return!0;R.a&&d!==-1?d>0?y.push(...T):(o<A&&t.push(...T),o+=1):a=!0}return n.path=s,y.length>0||t.length>0?((o>A||a)&&t.push("not matches any other union member"),{errors:[...y,...t],data:void 0}):!1})},e:e.map(r=>r.e).join(" | ")}}function C(e,r){return{...r,s:e}}var le=C;function Te(e){return O(e)&&"_kind_"in e}function v(e){if(Te(e))return e;if(O(e)){let r={};for(let[n,s]of Object.entries(e))r[n]=v(s);return _(r)}throw new Error(`invalid schema: ${e}`)}function _(e,{normalizeKeysFrom:r}={}){let n={};for(let[s,t]of Object.entries(e))n[s]=v(t);return{...i,n,e:"object",a:!0,p:Object.entries(n),r(s,t){return u(this,s,t,()=>{if(!O(s))return t.objErrKeyIndex=-1,!1;let o=this.e==="strict_obj"?new Set(Object.keys(s)):void 0,a={},y=[],f=t.path,R=-1;for(let[c,T]of this.p){let d=c;R+=1;let x=`.${c}`;t.path=`${f}${x}`;let p,b=c;if(T.s&&(p=s[T.s],b=T.s),p===void 0&&(p=s[c],b=c),p===void 0&&r==="snake_case"){let l=F(c);p=s[l],b=l}o?.delete(b);let[k,g]=T.r(p,t);if(k)a[d]=g;else{for(let l of g)y.push(j(t,l));if(t.objErrShortCircuit){t.objErrKeyIndex=R;break}}}if(o&&o.size>0)for(let c of o)y.push(`Key '${c}' is not defined in the object shape`);return y.length>0?{errors:y,data:void 0}:this.d?{errors:!1,data:{...s,...a}}:{errors:!1,data:a}})}}}function de(e){return e}function pe(e){return{..._(e),e:"extends_object",d:!0}}function Re(e){return e.n}function be(e){return{..._(e),e:"strict_obj"}}function he(...e){let r={};for(let n of e)Object.assign(r,n.n);return _(r)}function _e(e,r){let n={};if(!e.n)throw new Error("rc_obj_pick: obj must be an object type");for(let s of r){let t=e.n[s];t&&(n[s]=t)}return _(n)}function je(e,r){let n={};if(!e.n)throw new Error("rc_obj_omit: obj must be an object type");for(let s of Object.keys(e.n))r.includes(s)||(n[s]=e.n[s]);return _(n)}function V(e,{checkKey:r,looseCheck:n}={}){return{...i,e:`record<string, ${e.e}>`,r(s,t){return u(this,s,t,()=>{if(!O(s))return!1;let o={},a=[],y=t.path;for(let[f,R]of Object.entries(s)){let c=`.${f}`,T=`${y}${c}`;if(t.path=T,r&&!r(f)){a.push(j(t,`Key '${f}' is not allowed`));continue}let d=s[f],[x,p]=e.r(R,t);if(x)o[f]=d;else{let b=p;for(let k of b)a.push(j(t,k));if(t.objErrShortCircuit)break}}if(a.length>0)if(n)q(t,a);else return{errors:a,data:void 0};return{errors:!1,data:o}})}}}function xe(e,{checkKey:r}={}){return V(e,{checkKey:r,looseCheck:!0})}function N(e,r){if(typeof r=="string"&&!e.n?.[r])throw new Error(`${e.e} can't be used with unique key option`)}function E(e,r,n,s=!1,t){let o=[],a=[],y=new Set,f=n.path,R=Array.isArray(r),c=-1;for(let T of e){c++;let d=R?r[c]:r,x=`[${c}]`,p=`${f}${x}`;n.path=p;let b=d.r(T,n),[k,g]=b;n.path=p;let l=t?.unique;if(k&&l){let h=g,K=typeof l=="string";K?h=g[l]:typeof l=="function"&&(h=l(g)),y.has(h)?(K&&(n.path=`${f}${x}.${l}`),b=[!1,[j(n,K?`Type '${d.n?.[l]?.e}' with value "${h}" is not unique`:typeof l=="function"?`Type '${d.e}' unique fn return with value "${h}" is not unique`:`${d.e} value is not unique`)]]):y.add(h)}let[U,m]=b;if(U)a.push(m);else if(s){o.push(m.map(h=>j(n,h)));continue}else return{errors:m.map(h=>j(n,h)),data:void 0}}if(o.length>0){if(a.length===0)return{errors:o.slice(0,5).flat(),data:void 0};q(n,o.flat())}return{errors:!1,data:a}}function ge(e,r){return N(e,r?.unique),{...i,e:`${e.e}[]`,r(n,s){return u(this,n,s,()=>Array.isArray(n)?n.length===0?!0:E.call(this,n,e,s,!1,r):!1)}}}function ke(e,r){return N(e,r?.unique),{...i,e:`${e.e}[]`,r(n,s){return u(this,n,s,()=>Array.isArray(n)?n.length===0?!0:E.call(this,n,e,s,!0,r):!1)}}}function Oe(e){return{...i,e:`[${e.map(r=>r.e).join(", ")}]`,r(r,n){return u(this,r,n,()=>!Array.isArray(r)||r.length!==e.length?!1:E.call(this,r,e,n))}}}function w(e,r){let n={warnings:[],path:"",objErrShortCircuit:!1,objErrKeyIndex:0},[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 we(e){return r=>w(r,e)}function me(e,r){let n=w(e,r);return n.error?{data:null,errors:n.errors,warnings:!1}:{data:n.data,errors:!1,warnings:n.warnings}}function B(e,r){let n={warnings:[],path:"",objErrShortCircuit:!1,objErrKeyIndex:0};return!!r.r(e,n)[0]}function Ke(e){return r=>B(r,e)}function $e(e){return{...i,e:"recursive",r(r,n){return e().r(r,n)}}}function Se(e,r){return{...i,e:`transform_from_${e.e}`,r(n,s){let[t,o]=e.r(n,s);return t?[!0,r(o)]:[!1,o]}}}function P(e,r){let n=(()=>{if(typeof e=="object"){if(Array.isArray(e))return"array";if(!e)return"null"}return typeof e})();return r&&(n==="string"||n==="number"||n==="boolean")?`${n}(${e})`:n}function Pe(e){if(e.error)throw new Error(`invalid input: ${e.errors.join(", ")}`)}function O(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("_")}function Ee(e,r){try{let n=JSON.parse(e);return w(n,r)}catch(n){return{error:!0,errors:[`json parse error: ${O(n)?n.message:""}`]}}}function Ie(e){return typeof e=="function"}function Ae(){return e=>_(e)}0&&(module.exports={rc_any,rc_array,rc_assert_is_valid,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_loose_record,rc_null,rc_number,rc_obj_builder,rc_obj_intersection,rc_obj_omit,rc_obj_pick,rc_object,rc_parse,rc_parse_json,rc_parser,rc_record,rc_recursive,rc_rename_from_key,rc_rename_key,rc_required_key,rc_strict_obj,rc_string,rc_transform,rc_tuple,rc_undefined,rc_union,rc_unknown,rc_validator,snakeCase});
1
+ "use strict";var $=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var z=Object.prototype.hasOwnProperty;var Q=(e,r)=>{for(var n in r)$(e,n,{get:r[n],enumerable:!0})},J=(e,r,n,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of M(r))!z.call(e,t)&&t!==n&&$(e,t,{get:()=>r[t],enumerable:!(s=D(r,t))||s.enumerable});return e};var L=e=>J($({},"__esModule",{value:!0}),e);var Ae={};Q(Ae,{rc_any:()=>te,rc_array:()=>ge,rc_assert_is_valid:()=>Se,rc_boolean:()=>oe,rc_date:()=>ce,rc_extends_obj:()=>pe,rc_get_obj_schema:()=>de,rc_instanceof:()=>ue,rc_is_valid:()=>F,rc_literals:()=>ye,rc_loose_array:()=>xe,rc_loose_parse:()=>we,rc_loose_record:()=>je,rc_null:()=>ne,rc_number:()=>ie,rc_obj_builder:()=>Ie,rc_obj_intersection:()=>be,rc_obj_omit:()=>_e,rc_obj_pick:()=>he,rc_object:()=>_,rc_parse:()=>w,rc_parse_json:()=>Pe,rc_parser:()=>ke,rc_record:()=>N,rc_recursive:()=>Ke,rc_rename_from_key:()=>v,rc_rename_key:()=>le,rc_strict_obj:()=>Re,rc_string:()=>ae,rc_transform:()=>$e,rc_tuple:()=>Oe,rc_undefined:()=>re,rc_union:()=>fe,rc_unknown:()=>se,rc_validator:()=>me,snakeCase:()=>W});module.exports=L(Ae);function Z(e){return{...this,i:e}}function j(e,r){return r.startsWith("$[")||r.startsWith("$.")?r:`${e.path?`$${e.path}: `:""}${r}`}function S(e,r){e.warnings.push(j(e,r))}function q(e,r){r.forEach(n=>S(e,n))}function u(e,r,n,s){if(e.c&&r===void 0)return[!0,r];if(e.u&&r==null)return[!0,r];if(e.y&&r===null)return[!0,r];let t=s();if(t&&(t===!0||!t.errors)){let a=t===!0?r:t.data;return e.t&&!e.t(a)?[!1,[`Predicate failed for type '${e.e}'`]]:[!0,a]}let o=e.i;if(o!==void 0)return S(n,`Fallback used, errors -> ${I(t,n,e,r)}`),[!0,Ee(o)?o():o];if(e.f&&e.o){let a=e.o(r);if(a)return e.t&&!e.t(a.fixed)?[!1,[`Predicate failed for autofix in type '${e.e}'`]]:(S(n,`Autofixed from error "${I(t,n,e,r)}"`),[!0,a.fixed])}return[!1,t?t.errors:[e.l(r)]]}function I(e,r,n,s){return e?e.errors.map(t=>t.replace(r.path,"")).join("; "):n.l(s)}function G(e){return{...this,f:!0,o:e}}function H(e){return{...this,t:e}}function A(){return{...this,c:!0}}function X(e){return`Type '${P(e,!!this.T)}' is not assignable to '${this.e}'`}function Y(){return{...this,y:!0,e:`${this.e}_or_null`}}function ee(){return{...this,u:!0,e:`${this.e}_or_nullish`}}var i={__rc_type:void 0,withFallback:Z,where:H,optional:A,optionalKey:A,l:X,orNullish:ee,withAutofix:G,orNull:Y,R:!1,i:void 0,t:void 0,c:!1,y:!1,u:!1,f:!1,T:!1,s:void 0,o:void 0,b:void 0,n:void 0,a:!1,p:!1,d:[]},re={...i,r(e,r){return u(this,e,r,()=>e===void 0)},e:"undefined"},ne={...i,r(e,r){return u(this,e,r,()=>e===null)},e:"null"},te={...i,r(e,r){return u(this,e,r,()=>!0)},e:"any"},se={...i,r(e,r){return u(this,e,r,()=>!0)},e:"unknown"},oe={...i,r(e,r){return u(this,e,r,()=>typeof e=="boolean")},e:"boolean"},ae={...i,r(e,r){return u(this,e,r,()=>typeof e=="string")},e:"string"},ie={...i,r(e,r){return u(this,e,r,()=>typeof e=="number"&&!Number.isNaN(e))},e:"number"},ce={...i,r(e,r){return u(this,e,r,()=>typeof e=="object"&&e instanceof Date&&!Number.isNaN(e.getTime()))},e:"date"};function ue(e){return{...i,r(r,n){return u(this,r,n,()=>r instanceof e)},e:`instanceof_${e.name?`_${e.name}`:""}`}}function ye(...e){if(e.length===0)throw new Error("rc_literal requires at least one literal");return{...i,r(r,n){return u(this,r,n,()=>{for(let s of e)if(r===s)return!0;return!1})},T:!0,e:e.length==1?P(e[0],!0):e.map(r=>P(r,!0)).join(" | ")}}var C=1;function fe(...e){if(e.length===0)throw new Error("Unions should have at least one type");return{...i,r(r,n){return u(this,r,n,()=>{let s=n.path,t=[],o=0,a=!1,y=[],f=0;for(let R of e){f+=1,R.a&&(n.path=`${s}|union ${f}|`),n.objErrShortCircuit=!0,n.objErrKeyIndex=0;let[c,T]=R.r(r,n);n.objErrShortCircuit=!1;let p=n.objErrKeyIndex;if(n.objErrKeyIndex=0,c)return!0;R.a&&p!==-1?p>0?y.push(...T):(o<C&&t.push(...T),o+=1):a=!0}return n.path=s,y.length>0||t.length>0?((o>C||a)&&t.push("not matches any other union member"),{errors:[...y,...t],data:void 0}):!1})},e:e.map(r=>r.e).join(" | ")}}function v(e,r){return{...r,s:e}}var le=v;function Te(e){return k(e)&&"__rc_type"in e}function V(e){if(Te(e))return e;if(k(e)){let r={};for(let[n,s]of Object.entries(e))r[n]=V(s);return _(r)}throw new Error(`invalid schema: ${e}`)}function _(e,{normalizeKeysFrom:r}={}){let n={};for(let[s,t]of Object.entries(e))n[s]=V(t);return{...i,n,e:"object",a:!0,d:Object.entries(n),r(s,t){return u(this,s,t,()=>{if(!k(s))return t.objErrKeyIndex=-1,!1;let o=this.e==="strict_obj"?new Set(Object.keys(s)):void 0,a={},y=[],f=t.path,R=-1;for(let[c,T]of this.d){let p=c;R+=1;let g=`.${c}`;t.path=`${f}${g}`;let d,b=c;if(T.s&&(d=s[T.s],b=T.s),d===void 0&&(d=s[c],b=c),d===void 0&&r==="snake_case"){let l=W(c);d=s[l],b=l}o?.delete(b);let[O,x]=T.r(d,t);if(O)a[p]=x;else{for(let l of x)y.push(j(t,l));if(t.objErrShortCircuit){t.objErrKeyIndex=R;break}}}if(o&&o.size>0)for(let c of o)y.push(`Key '${c}' is not defined in the object shape`);return y.length>0?{errors:y,data:void 0}:this.p?{errors:!1,data:{...s,...a}}:{errors:!1,data:a}})}}}function pe(e,r){return{..._(e,r),e:"extends_object",p:!0}}function de(e){return e.n}function Re(e,r){return{..._(e,r),e:"strict_obj"}}function be(...e){let r={};for(let n of e)Object.assign(r,n.n);return _(r)}function he(e,r){let n={};if(!e.n)throw new Error("rc_obj_pick: obj must be an object type");for(let s of r){let t=e.n[s];t&&(n[s]=t)}return _(n)}function _e(e,r){let n={};if(!e.n)throw new Error("rc_obj_omit: obj must be an object type");for(let s of Object.keys(e.n))r.includes(s)||(n[s]=e.n[s]);return _(n)}function N(e,{checkKey:r,looseCheck:n}={}){return{...i,e:`record<string, ${e.e}>`,r(s,t){return u(this,s,t,()=>{if(!k(s))return!1;let o={},a=[],y=t.path;for(let[f,R]of Object.entries(s)){let c=`.${f}`,T=`${y}${c}`;if(t.path=T,r&&!r(f)){a.push(j(t,`Key '${f}' is not allowed`));continue}let p=s[f],[g,d]=e.r(R,t);if(g)o[f]=p;else{let b=d;for(let O of b)a.push(j(t,O));if(t.objErrShortCircuit)break}}if(a.length>0)if(n)q(t,a);else return{errors:a,data:void 0};return{errors:!1,data:o}})}}}function je(e,{checkKey:r}={}){return N(e,{checkKey:r,looseCheck:!0})}function B(e,r){if(typeof r=="string"&&!e.n?.[r])throw new Error(`${e.e} can't be used with unique key option`)}function E(e,r,n,s=!1,t){let o=[],a=[],y=new Set,f=n.path,R=Array.isArray(r),c=-1;for(let T of e){c++;let p=R?r[c]:r,g=`[${c}]`,d=`${f}${g}`;n.path=d;let b=p.r(T,n),[O,x]=b;n.path=d;let l=t?.unique;if(O&&l){let h=x,K=typeof l=="string";K?h=x[l]:typeof l=="function"&&(h=l(x)),y.has(h)?(K&&(n.path=`${f}${g}.${l}`),b=[!1,[j(n,K?`Type '${p.n?.[l]?.e}' with value "${h}" is not unique`:typeof l=="function"?`Type '${p.e}' unique fn return with value "${h}" is not unique`:`${p.e} value is not unique`)]]):y.add(h)}let[U,m]=b;if(U)a.push(m);else if(s){o.push(m.map(h=>j(n,h)));continue}else return{errors:m.map(h=>j(n,h)),data:void 0}}if(o.length>0){if(a.length===0)return{errors:o.slice(0,5).flat(),data:void 0};q(n,o.flat())}return{errors:!1,data:a}}function ge(e,r){return B(e,r?.unique),{...i,e:`${e.e}[]`,r(n,s){return u(this,n,s,()=>Array.isArray(n)?n.length===0?!0:E.call(this,n,e,s,!1,r):!1)}}}function xe(e,r){return B(e,r?.unique),{...i,e:`${e.e}[]`,r(n,s){return u(this,n,s,()=>Array.isArray(n)?n.length===0?!0:E.call(this,n,e,s,!0,r):!1)}}}function Oe(e){return{...i,e:`[${e.map(r=>r.e).join(", ")}]`,r(r,n){return u(this,r,n,()=>!Array.isArray(r)||r.length!==e.length?!1:E.call(this,r,e,n))}}}function w(e,r){let n={warnings:[],path:"",objErrShortCircuit:!1,objErrKeyIndex:0},[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 ke(e){return r=>w(r,e)}function we(e,r){let n=w(e,r);return n.error?{data:null,errors:n.errors,warnings:!1}:{data:n.data,errors:!1,warnings:n.warnings}}function F(e,r){let n={warnings:[],path:"",objErrShortCircuit:!1,objErrKeyIndex:0};return!!r.r(e,n)[0]}function me(e){return r=>F(r,e)}function Ke(e){return{...i,e:"recursive",r(r,n){return e().r(r,n)}}}function $e(e,r){return{...i,e:`transform_from_${e.e}`,r(n,s){let[t,o]=e.r(n,s);return t?[!0,r(o)]:[!1,o]}}}function P(e,r){let n=(()=>{if(typeof e=="object"){if(Array.isArray(e))return"array";if(!e)return"null"}return typeof e})();return r&&(n==="string"||n==="number"||n==="boolean")?`${n}(${e})`:n}function Se(e){if(e.error)throw new Error(`invalid input: ${e.errors.join(", ")}`)}function k(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function W(e){return e.replace(/\W+/g," ").split(/ |\B(?=[A-Z])/).map(r=>r.toLowerCase()).join("_")}function Pe(e,r){try{let n=JSON.parse(e);return w(n,r)}catch(n){return{error:!0,errors:[`json parse error: ${k(n)?n.message:""}`]}}}function Ee(e){return typeof e=="function"}function Ie(){return(e,r)=>_(e,r)}0&&(module.exports={rc_any,rc_array,rc_assert_is_valid,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_loose_record,rc_null,rc_number,rc_obj_builder,rc_obj_intersection,rc_obj_omit,rc_obj_pick,rc_object,rc_parse,rc_parse_json,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});
@@ -8,14 +8,16 @@ type RcParseResult<T> = {
8
8
  };
9
9
  type RcInferType<T extends RcType<any>> = T extends RcType<infer U> ? U : never;
10
10
  type WithFallback<T> = (fallback: T | (() => T)) => RcType<T>;
11
- type RcRequiredKeyType<T> = RcBase<T, true>;
11
+ type RcOptionalKeyType<T> = RcBase<T, true>;
12
12
  type RcType<T> = RcBase<T, false>;
13
13
  type RcBase<T, RequiredKey extends boolean> = {
14
- __type: T;
14
+ __rc_type: T;
15
15
  readonly withFallback: WithFallback<T>;
16
16
  readonly where: (predicate: (input: T) => boolean) => RcType<T>;
17
17
  /** RcType | undefined */
18
18
  readonly optional: () => RcType<T | undefined>;
19
+ /** { key?: RcType | undefined } */
20
+ readonly optionalKey: () => RcOptionalKeyType<T | undefined>;
19
21
  /** RcType | null */
20
22
  readonly orNull: () => RcType<T | null>;
21
23
  /** RcType | null | undefined */
@@ -23,7 +25,7 @@ type RcBase<T, RequiredKey extends boolean> = {
23
25
  readonly withAutofix: (customAutofix: (input: unknown) => false | {
24
26
  fixed: T;
25
27
  }) => RcType<T>;
26
- readonly _required_key_: RequiredKey;
28
+ readonly _optional_key_: RequiredKey;
27
29
  };
28
30
  declare const rc_undefined: RcType<undefined>;
29
31
  declare const rc_null: RcType<null>;
@@ -43,28 +45,28 @@ type RcObject = {
43
45
  [key: string]: RcBase<any, any> | RcObject;
44
46
  };
45
47
  type TypeOfObjectType<T extends RcObject> = Flatten<AddQuestionMarks<{
46
- [K in keyof T]: T[K] extends RcRequiredKeyType<infer U> ? KeepRequired<U> : T[K] extends RcType<any> ? RcInferType<T[K]> : T[K] extends RcObject ? TypeOfObjectType<T[K]> : never;
48
+ [K in keyof T]: T[K] extends RcType<infer U> ? RequiredKey<U> : T[K] extends RcOptionalKeyType<infer W> ? W : T[K] extends RcObject ? RequiredKey<TypeOfObjectType<T[K]>> : never;
47
49
  }>>;
48
50
  type RcObjTypeReturn<T extends RcObject> = RcType<TypeOfObjectType<T>>;
49
- type KeepRequired<T> = {
50
- _keep_required_: T;
51
+ type RequiredKey<T> = {
52
+ _required_key_: T;
51
53
  };
52
54
  type RequiredKeys<T extends object> = {
53
- [k in keyof T]: undefined extends T[k] ? T[k] extends KeepRequired<any> ? k : never : k;
55
+ [k in keyof T]: T[k] extends RequiredKey<any> ? k : never;
54
56
  }[keyof T];
55
- type AddQuestionMarks<T extends object, R extends keyof T = RequiredKeys<T>> = Pick<Required<T>, R> & Partial<T>;
57
+ type AddQuestionMarks<T extends object, R extends keyof T = RequiredKeys<T>> = Pick<Required<T>, R> & Partial<Omit<T, R>>;
56
58
  type Identity<T> = T;
57
59
  type Flatten<T> = Identity<{
58
- [k in keyof T]: T[k] extends KeepRequired<infer U> ? U : T[k];
60
+ [k in keyof T]: T[k] extends RequiredKey<infer U> ? U : T[k];
59
61
  }>;
60
- declare function rc_object<T extends RcObject>(shape: T, { normalizeKeysFrom }?: {
62
+ type ObjOptions = {
61
63
  normalizeKeysFrom?: 'snake_case';
62
- }): RcObjTypeReturn<T>;
63
- declare function rc_required_key<T>(type: RcType<T>): RcRequiredKeyType<T>;
64
- declare function rc_extends_obj<T extends RcObject>(shape: T): RcObjTypeReturn<T>;
64
+ };
65
+ declare function rc_object<T extends RcObject>(shape: T, { normalizeKeysFrom }?: ObjOptions): RcObjTypeReturn<T>;
66
+ declare function rc_extends_obj<T extends RcObject>(shape: T, options?: ObjOptions): RcObjTypeReturn<T>;
65
67
  declare function rc_get_obj_schema<T extends RcObject>(type: RcObjTypeReturn<T>): T;
66
68
  /** return an error if the obj has more keys than the expected type */
67
- declare function rc_strict_obj<T extends RcObject>(shape: T): RcObjTypeReturn<T>;
69
+ declare function rc_strict_obj<T extends RcObject>(shape: T, options?: ObjOptions): RcObjTypeReturn<T>;
68
70
  declare function rc_obj_intersection<A extends RcObject, B extends RcObject>(...objs: [RcObjTypeReturn<A>, RcObjTypeReturn<B>]): RcObjTypeReturn<A & B>;
69
71
  declare function rc_obj_intersection<A extends RcObject, B extends RcObject, C extends RcObject>(...objs: [RcObjTypeReturn<A>, RcObjTypeReturn<B>, RcObjTypeReturn<C>]): RcObjTypeReturn<A & B & C>;
70
72
  declare function rc_obj_intersection<A extends RcObject, B extends RcObject, C extends RcObject, D extends RcObject>(...objs: [
@@ -133,6 +135,6 @@ type RcPrettyInferType<T extends RcType<any>> = Prettify<RcInferType<T>>;
133
135
  type StricTypeToRcType<T> = [T] extends [any[]] ? RcType<T> : [T] extends [Record<string, any>] ? ({
134
136
  [K in keyof T]-?: StricTypeToRcType<T[K]>;
135
137
  } & Partial<Record<keyof RcType<any>, never>>) | RcType<T> : RcType<T>;
136
- declare function rc_obj_builder<T extends Record<string, any>>(): <S extends StricTypeToRcType<T>>(schema: { [K in keyof S]: K extends keyof T ? S[K] : never; }) => RcType<T>;
138
+ declare function rc_obj_builder<T extends Record<string, any>>(): <S extends StricTypeToRcType<T>>(schema: { [K in keyof S]: K extends keyof T ? S[K] : never; }, options?: ObjOptions) => RcType<T>;
137
139
 
138
- export { RcInferType, RcParseResult, RcParser, RcPrettyInferType, RcType, rc_any, rc_array, rc_assert_is_valid, 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_loose_record, rc_null, rc_number, rc_obj_builder, rc_obj_intersection, rc_obj_omit, rc_obj_pick, rc_object, rc_parse, rc_parse_json, rc_parser, rc_record, rc_recursive, rc_rename_from_key, rc_rename_key, rc_required_key, rc_strict_obj, rc_string, rc_transform, rc_tuple, rc_undefined, rc_union, rc_unknown, rc_validator };
140
+ export { RcInferType, RcParseResult, RcParser, RcPrettyInferType, RcType, rc_any, rc_array, rc_assert_is_valid, 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_loose_record, rc_null, rc_number, rc_obj_builder, rc_obj_intersection, rc_obj_omit, rc_obj_pick, rc_object, rc_parse, rc_parse_json, 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,C,D,E,F,G,H,I,J,K,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-DLMFFROB.js";export{c as rc_any,x as rc_array,H as rc_assert_is_valid,e as rc_boolean,h as rc_date,p as rc_extends_obj,q as rc_get_obj_schema,i as rc_instanceof,D as rc_is_valid,j as rc_literals,y as rc_loose_array,C as rc_loose_parse,w as rc_loose_record,b as rc_null,g as rc_number,K as rc_obj_builder,s as rc_obj_intersection,u as rc_obj_omit,t as rc_obj_pick,n as rc_object,A as rc_parse,J as rc_parse_json,B as rc_parser,v as rc_record,F as rc_recursive,l as rc_rename_from_key,m as rc_rename_key,o as rc_required_key,r as rc_strict_obj,f as rc_string,G as rc_transform,z as rc_tuple,a as rc_undefined,k as rc_union,d as rc_unknown,E as rc_validator,I as snakeCase};
1
+ import{A,B,C,D,E,F,G,H,I,J,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-S5P42XEZ.js";export{c as rc_any,w as rc_array,G as rc_assert_is_valid,e as rc_boolean,h as rc_date,o as rc_extends_obj,p as rc_get_obj_schema,i as rc_instanceof,C as rc_is_valid,j as rc_literals,x as rc_loose_array,B as rc_loose_parse,v as rc_loose_record,b as rc_null,g as rc_number,J as rc_obj_builder,r as rc_obj_intersection,t as rc_obj_omit,s as rc_obj_pick,n as rc_object,z as rc_parse,I as rc_parse_json,A as rc_parser,u as rc_record,E as rc_recursive,l as rc_rename_from_key,m as rc_rename_key,q as rc_strict_obj,f as rc_string,F as rc_transform,y as rc_tuple,a as rc_undefined,k as rc_union,d as rc_unknown,D as rc_validator,H 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.35.0",
4
+ "version": "0.35.2",
5
5
  "license": "MIT",
6
6
  "files": [
7
7
  "dist"
@@ -1 +0,0 @@
1
- function V(e){return{...this,i:e}}function _(e,r){return r.startsWith("$[")||r.startsWith("$.")?r:`${e.path?`$${e.path}: `:""}${r}`}function K(e,r){e.warnings.push(_(e,r))}function A(e,r){r.forEach(n=>K(e,n))}function u(e,r,n,s){if(e.c&&r===void 0)return[!0,r];if(e.u&&r==null)return[!0,r];if(e.y&&r===null)return[!0,r];let t=s();if(t&&(t===!0||!t.errors)){let a=t===!0?r:t.data;return e.t&&!e.t(a)?[!1,[`Predicate failed for type '${e.e}'`]]:[!0,a]}let o=e.i;if(o!==void 0)return K(n,`Fallback used, errors -> ${E(t,n,e,r)}`),[!0,Z(o)?o():o];if(e.f&&e.o){let a=e.o(r);if(a)return e.t&&!e.t(a.fixed)?[!1,[`Predicate failed for autofix in type '${e.e}'`]]:(K(n,`Autofixed from error "${E(t,n,e,r)}"`),[!0,a.fixed])}return[!1,t?t.errors:[e.l(r)]]}function E(e,r,n,s){return e?e.errors.map(t=>t.replace(r.path,"")).join("; "):n.l(s)}function N(e){return{...this,f:!0,o:e}}function B(e){return{...this,t:e}}function F(){return{...this,c:!0}}function U(e){return`Type '${$(e,!!this.T)}' is not assignable to '${this.e}'`}function W(){return{...this,y:!0,e:`${this.e}_or_null`}}function D(){return{...this,u:!0,e:`${this.e}_or_nullish`}}var i={__type:void 0,withFallback:V,where:B,optional:F,l:U,orNullish:D,withAutofix:N,orNull:W,R:!1,i:void 0,t:void 0,c:!1,y:!1,u:!1,f:!1,T:!1,s:void 0,o:void 0,b:void 0,n:void 0,a:!1,d:!1,p:[]},G={...i,r(e,r){return u(this,e,r,()=>e===void 0)},e:"undefined"},H={...i,r(e,r){return u(this,e,r,()=>e===null)},e:"null"},X={...i,r(e,r){return u(this,e,r,()=>!0)},e:"any"},Y={...i,r(e,r){return u(this,e,r,()=>!0)},e:"unknown"},ee={...i,r(e,r){return u(this,e,r,()=>typeof e=="boolean")},e:"boolean"},re={...i,r(e,r){return u(this,e,r,()=>typeof e=="string")},e:"string"},ne={...i,r(e,r){return u(this,e,r,()=>typeof e=="number"&&!Number.isNaN(e))},e:"number"},te={...i,r(e,r){return u(this,e,r,()=>typeof e=="object"&&e instanceof Date&&!Number.isNaN(e.getTime()))},e:"date"};function se(e){return{...i,r(r,n){return u(this,r,n,()=>r instanceof e)},e:`instanceof_${e.name?`_${e.name}`:""}`}}function oe(...e){if(e.length===0)throw new Error("rc_literal requires at least one literal");return{...i,r(r,n){return u(this,r,n,()=>{for(let s of e)if(r===s)return!0;return!1})},T:!0,e:e.length==1?$(e[0],!0):e.map(r=>$(r,!0)).join(" | ")}}var I=1;function ae(...e){if(e.length===0)throw new Error("Unions should have at least one type");return{...i,r(r,n){return u(this,r,n,()=>{let s=n.path,t=[],o=0,a=!1,y=[],f=0;for(let R of e){f+=1,R.a&&(n.path=`${s}|union ${f}|`),n.objErrShortCircuit=!0,n.objErrKeyIndex=0;let[c,T]=R.r(r,n);n.objErrShortCircuit=!1;let d=n.objErrKeyIndex;if(n.objErrKeyIndex=0,c)return!0;R.a&&d!==-1?d>0?y.push(...T):(o<I&&t.push(...T),o+=1):a=!0}return n.path=s,y.length>0||t.length>0?((o>I||a)&&t.push("not matches any other union member"),{errors:[...y,...t],data:void 0}):!1})},e:e.map(r=>r.e).join(" | ")}}function M(e,r){return{...r,s:e}}var ie=M;function z(e){return O(e)&&"_kind_"in e}function q(e){if(z(e))return e;if(O(e)){let r={};for(let[n,s]of Object.entries(e))r[n]=q(s);return j(r)}throw new Error(`invalid schema: ${e}`)}function j(e,{normalizeKeysFrom:r}={}){let n={};for(let[s,t]of Object.entries(e))n[s]=q(t);return{...i,n,e:"object",a:!0,p:Object.entries(n),r(s,t){return u(this,s,t,()=>{if(!O(s))return t.objErrKeyIndex=-1,!1;let o=this.e==="strict_obj"?new Set(Object.keys(s)):void 0,a={},y=[],f=t.path,R=-1;for(let[c,T]of this.p){let d=c;R+=1;let x=`.${c}`;t.path=`${f}${x}`;let p,b=c;if(T.s&&(p=s[T.s],b=T.s),p===void 0&&(p=s[c],b=c),p===void 0&&r==="snake_case"){let l=L(c);p=s[l],b=l}o?.delete(b);let[k,g]=T.r(p,t);if(k)a[d]=g;else{for(let l of g)y.push(_(t,l));if(t.objErrShortCircuit){t.objErrKeyIndex=R;break}}}if(o&&o.size>0)for(let c of o)y.push(`Key '${c}' is not defined in the object shape`);return y.length>0?{errors:y,data:void 0}:this.d?{errors:!1,data:{...s,...a}}:{errors:!1,data:a}})}}}function ce(e){return e}function ue(e){return{...j(e),e:"extends_object",d:!0}}function ye(e){return e.n}function fe(e){return{...j(e),e:"strict_obj"}}function le(...e){let r={};for(let n of e)Object.assign(r,n.n);return j(r)}function Te(e,r){let n={};if(!e.n)throw new Error("rc_obj_pick: obj must be an object type");for(let s of r){let t=e.n[s];t&&(n[s]=t)}return j(n)}function de(e,r){let n={};if(!e.n)throw new Error("rc_obj_omit: obj must be an object type");for(let s of Object.keys(e.n))r.includes(s)||(n[s]=e.n[s]);return j(n)}function Q(e,{checkKey:r,looseCheck:n}={}){return{...i,e:`record<string, ${e.e}>`,r(s,t){return u(this,s,t,()=>{if(!O(s))return!1;let o={},a=[],y=t.path;for(let[f,R]of Object.entries(s)){let c=`.${f}`,T=`${y}${c}`;if(t.path=T,r&&!r(f)){a.push(_(t,`Key '${f}' is not allowed`));continue}let d=s[f],[x,p]=e.r(R,t);if(x)o[f]=d;else{let b=p;for(let k of b)a.push(_(t,k));if(t.objErrShortCircuit)break}}if(a.length>0)if(n)A(t,a);else return{errors:a,data:void 0};return{errors:!1,data:o}})}}}function pe(e,{checkKey:r}={}){return Q(e,{checkKey:r,looseCheck:!0})}function C(e,r){if(typeof r=="string"&&!e.n?.[r])throw new Error(`${e.e} can't be used with unique key option`)}function S(e,r,n,s=!1,t){let o=[],a=[],y=new Set,f=n.path,R=Array.isArray(r),c=-1;for(let T of e){c++;let d=R?r[c]:r,x=`[${c}]`,p=`${f}${x}`;n.path=p;let b=d.r(T,n),[k,g]=b;n.path=p;let l=t?.unique;if(k&&l){let h=g,m=typeof l=="string";m?h=g[l]:typeof l=="function"&&(h=l(g)),y.has(h)?(m&&(n.path=`${f}${x}.${l}`),b=[!1,[_(n,m?`Type '${d.n?.[l]?.e}' with value "${h}" is not unique`:typeof l=="function"?`Type '${d.e}' unique fn return with value "${h}" is not unique`:`${d.e} value is not unique`)]]):y.add(h)}let[v,w]=b;if(v)a.push(w);else if(s){o.push(w.map(h=>_(n,h)));continue}else return{errors:w.map(h=>_(n,h)),data:void 0}}if(o.length>0){if(a.length===0)return{errors:o.slice(0,5).flat(),data:void 0};A(n,o.flat())}return{errors:!1,data:a}}function Re(e,r){return C(e,r?.unique),{...i,e:`${e.e}[]`,r(n,s){return u(this,n,s,()=>Array.isArray(n)?n.length===0?!0:S.call(this,n,e,s,!1,r):!1)}}}function be(e,r){return C(e,r?.unique),{...i,e:`${e.e}[]`,r(n,s){return u(this,n,s,()=>Array.isArray(n)?n.length===0?!0:S.call(this,n,e,s,!0,r):!1)}}}function he(e){return{...i,e:`[${e.map(r=>r.e).join(", ")}]`,r(r,n){return u(this,r,n,()=>!Array.isArray(r)||r.length!==e.length?!1:S.call(this,r,e,n))}}}function P(e,r){let n={warnings:[],path:"",objErrShortCircuit:!1,objErrKeyIndex:0},[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 _e(e){return r=>P(r,e)}function je(e,r){let n=P(e,r);return n.error?{data:null,errors:n.errors,warnings:!1}:{data:n.data,errors:!1,warnings:n.warnings}}function J(e,r){let n={warnings:[],path:"",objErrShortCircuit:!1,objErrKeyIndex:0};return!!r.r(e,n)[0]}function xe(e){return r=>J(r,e)}function ge(e){return{...i,e:"recursive",r(r,n){return e().r(r,n)}}}function ke(e,r){return{...i,e:`transform_from_${e.e}`,r(n,s){let[t,o]=e.r(n,s);return t?[!0,r(o)]:[!1,o]}}}function $(e,r){let n=(()=>{if(typeof e=="object"){if(Array.isArray(e))return"array";if(!e)return"null"}return typeof e})();return r&&(n==="string"||n==="number"||n==="boolean")?`${n}(${e})`:n}function Oe(e){if(e.error)throw new Error(`invalid input: ${e.errors.join(", ")}`)}function O(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function L(e){return e.replace(/\W+/g," ").split(/ |\B(?=[A-Z])/).map(r=>r.toLowerCase()).join("_")}function we(e,r){try{let n=JSON.parse(e);return P(n,r)}catch(n){return{error:!0,errors:[`json parse error: ${O(n)?n.message:""}`]}}}function Z(e){return typeof e=="function"}function me(){return e=>j(e)}export{G as a,H as b,X as c,Y as d,ee as e,re as f,ne as g,te as h,se as i,oe as j,ae as k,M as l,ie as m,j as n,ce as o,ue as p,ye as q,fe as r,le as s,Te as t,de as u,Q as v,pe as w,Re as x,be as y,he as z,P as A,_e as B,je as C,J as D,xe as E,ge as F,ke as G,Oe as H,L as I,we as J,me as K};