runcheck 0.15.0 → 0.17.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
@@ -116,6 +116,23 @@ const shape = rc_object({
116
116
  })
117
117
  ```
118
118
 
119
+ ## Snake case normalization
120
+
121
+ you can use `rc_object` with the `normalizeKeysFrom` option to normalize the keys of a object to snake case.
122
+
123
+ ```ts
124
+ const shape = rc_object(
125
+ {
126
+ name: rc_string,
127
+ age: rc_number,
128
+ isCool: rc_boolean,
129
+ },
130
+ { normalizeKeysFrom: 'snake_case' },
131
+ )
132
+
133
+ rc_parse({ name: 'John', age: 20, is_cool: true }, shape) // will not return an error and will normalize the response to { name: 'John', age: 20, isCool: true }
134
+ ```
135
+
119
136
  # Parsing
120
137
 
121
138
  ```ts
@@ -132,7 +149,7 @@ if (parseResult.error) {
132
149
 
133
150
  const result = parseResult.data
134
151
  // Do something with result
135
- ````
152
+ ```
136
153
 
137
154
  You can also use `rc_parser` to create a reusable parser.
138
155
 
@@ -226,6 +243,20 @@ const input = 1
226
243
  const positiveNumberType = rc_number.where((input) => input > 0)
227
244
  ```
228
245
 
246
+ # Infer types from schemas
247
+
248
+ You can use `RcInferType<typeof T>` to infer the types from a schema.
249
+
250
+ ```ts
251
+ const schema = rc_object({
252
+ name: rc_string,
253
+ age: rc_number,
254
+ isCool: rc_boolean,
255
+ })
256
+
257
+ export type Person = RcInferType<typeof schema>
258
+ ```
259
+
229
260
  # Type modifiers
230
261
 
231
262
  You can use also modiers like `rc_string.optional()` to extend or modify the rc types:
@@ -267,7 +298,8 @@ You can use `rc_transform` to validate an input and transform it to another data
267
298
  ```ts
268
299
  const input = 'hello'
269
300
 
270
- const result = rc_parse(input, rc_transform(rc_string, (input) => input.length))
271
-
272
-
301
+ const result = rc_parse(
302
+ input,
303
+ rc_transform(rc_string, (input) => input.length),
304
+ )
273
305
  ```
@@ -1 +1 @@
1
- "use strict";var c=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var p=(e,r)=>{for(var a in r)c(e,a,{get:r[a],enumerable:!0})},R=(e,r,a,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of T(r))!d.call(e,n)&&n!==a&&c(e,n,{get:()=>r[n],enumerable:!(i=f(r,n))||i.enumerable});return e};var _=e=>R(c({},"__esModule",{value:!0}),e);var S={};p(S,{rc_boolean_autofix:()=>k,rc_number_autofix:()=>A,rc_string_autofix:()=>O});module.exports=_(S);function h(e){return{...this,a:e}}function s(e,r,a,i){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 n=i();if(n&&(n===!0||"data"in n)){let t=n===!0?r:n.data;return e.t&&!e.t(t)?[!1,[e.n(t)]]:[!0,t]}if(e.a!==void 0)return a.warnings.push(`Fallback used, ${e.n(r)}`),[!0,e.a];if(e.y&&e.i){let t=e.i(r);if(t)return e.t&&!e.t(t.fixed)?[!1,[e.n(t.fixed)]]:(a.warnings.push(`Autofixed from, ${e.n(r)}`),[!0,t.fixed])}return[!1,n&&"errors"in n?n.errors:[e.n(r)]]}function x(e){return{...this,y:!0,i:e}}function b(e){return{...this,t:e,e:`${this.e}_with_predicate`}}function g(){return{...this,c:!0}}function w(e){return`Type '${j(e)}' is not assignable to '${this.e}'`}function m(){return{...this,l:!0,e:`${this.e}_or_nullable`}}function $(){return{...this,u:!0,e:`${this.e}_or_nullish`}}var o={withFallback:h,where:b,optional:g,n:w,nullable:m,withAutofix:x,nullish:$},P={...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"},I={...o,r(e,r){return s(this,e,r,()=>!0)},e:"any"},q={...o,r(e,r){return s(this,e,r,()=>!0)},e:"unknown"},u={...o,r(e,r){return s(this,e,r,()=>typeof e=="boolean")},e:"boolean"},l={...o,r(e,r){return s(this,e,r,()=>typeof e=="string")},e:"string"},y={...o,r(e,r){return s(this,e,r,()=>typeof e=="number"&&!Number.isNaN(e))},e:"number"},E={...o,r(e,r){return s(this,e,r,()=>typeof e=="object"&&e instanceof Date&&!Number.isNaN(e.getTime()))},e:"date"};function j(e){if(typeof e=="object"){if(Array.isArray(e))return"array";if(!e)return"null"}return typeof e}var k=u.withAutofix(e=>e==null||e===0||e===1?{fixed:!!e}:e==="true"||e==="false"?{fixed:e==="true"}:!1),O=l.withAutofix(e=>typeof e=="number"&&!Number.isNaN(e)?{fixed:e.toString()}:!1),A=y.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 c=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var d=(e,r)=>{for(var t in r)c(e,t,{get:r[t],enumerable:!0})},R=(e,r,t,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of T(r))!p.call(e,n)&&n!==t&&c(e,n,{get:()=>r[n],enumerable:!(i=y(r,n))||i.enumerable});return e};var h=e=>R(c({},"__esModule",{value:!0}),e);var P={};d(P,{rc_boolean_autofix:()=>j,rc_number_autofix:()=>A,rc_string_autofix:()=>O});module.exports=h(P);function _(e){return{...this,o:e}}function a(e,r,t,i){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 n=i();if(n&&(n===!0||"data"in n)){let s=n===!0?r:n.data;return e.t&&!e.t(s)?[!1,[e.n(s)]]:[!0,s]}if(e.o!==void 0)return t.warnings.push(`Fallback used, ${e.n(r)}`),[!0,e.o];if(e.f&&e.i){let s=e.i(r);if(s)return e.t&&!e.t(s.fixed)?[!1,[e.n(s.fixed)]]:(t.warnings.push(`${t.path?`$${t.path}: `:""}Autofixed from error "${e.n(r)}"`),[!0,s.fixed])}return[!1,n&&"errors"in n?n.errors:[e.n(r)]]}function b(e){return{...this,f:!0,i:e}}function g(e){return{...this,t:e,e:`${this.e}_with_predicate`}}function x(){return{...this,c:!0}}function w(e){return`Type '${k(e)}' is not assignable to '${this.e}'`}function m(){return{...this,l:!0,e:`${this.e}_or_nullable`}}function $(){return{...this,u:!0,e:`${this.e}_or_nullish`}}var o={withFallback:_,where:g,optional:x,n:w,nullable:m,withAutofix:b,nullish:$},N={...o,r(e,r){return a(this,e,r,()=>e===void 0)},e:"undefined"},V={...o,r(e,r){return a(this,e,r,()=>e===null)},e:"null"},I={...o,r(e,r){return a(this,e,r,()=>!0)},e:"any"},q={...o,r(e,r){return a(this,e,r,()=>!0)},e:"unknown"},u={...o,r(e,r){return a(this,e,r,()=>typeof e=="boolean")},e:"boolean"},l={...o,r(e,r){return a(this,e,r,()=>typeof e=="string")},e:"string"},f={...o,r(e,r){return a(this,e,r,()=>typeof e=="number"&&!Number.isNaN(e))},e:"number"},E={...o,r(e,r){return a(this,e,r,()=>typeof e=="object"&&e instanceof Date&&!Number.isNaN(e.getTime()))},e:"date"};function k(e){if(typeof e=="object"){if(Array.isArray(e))return"array";if(!e)return"null"}return typeof e}var j=u.withAutofix(e=>e==null||e===0||e===1?{fixed:!!e}:e==="true"||e==="false"?{fixed:e==="true"}:!1),O=l.withAutofix(e=>typeof e=="number"&&!Number.isNaN(e)?{fixed:e.toString()}:!1),A=f.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-KIM2UT5Z.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-ZNODUDPO.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.t&&!e.t(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.t&&!e.t(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,t: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 m(e,{normalizeKeysFrom:r}={}){return{...o,s: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{...m(e),e:"strict_obj"}}function X(e,r){return m({...e.s,...r.s})}function Y(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 j(e,r){if(typeof r=="string"&&!e.s?.[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=_,k=typeof y=="string";k&&(d=_[y]),c.has(d)?p=[!1,[k?g(`Type '${T.s?.[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 ee(e,r){return j(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 re(e,r){return j(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 ne(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 te(e){return r=>O(r,e)}function se(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 ae(e){return r=>v(r,e)}function oe(e){return{...o,e:"recursive",r(r,n){return e().r(r,n)}}}function ie(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,m,Q as n,X as o,Y as p,ee as q,re as r,ne as s,O as t,te as u,se as v,v as w,ae as x,oe as y,ie as z,C as A};
package/dist/runcheck.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var b=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var V=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var q=(e,r)=>{for(var n in r)b(e,n,{get:r[n],enumerable:!0})},E=(e,r,n,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of V(r))!I.call(e,t)&&t!==n&&b(e,t,{get:()=>r[t],enumerable:!(s=P(r,t))||s.enumerable});return e};var N=e=>E(b({},"__esModule",{value:!0}),e);var fe={};q(fe,{rc_any:()=>W,rc_array:()=>se,rc_boolean:()=>H,rc_date:()=>Q,rc_instanceof:()=>X,rc_is_valid:()=>m,rc_literals:()=>Y,rc_loose_array:()=>ae,rc_loose_parse:()=>ce,rc_null:()=>M,rc_number:()=>L,rc_obj_intersection:()=>ne,rc_object:()=>x,rc_parse:()=>$,rc_parser:()=>ie,rc_record:()=>te,rc_recursive:()=>le,rc_rename_key:()=>ee,rc_strict_obj:()=>re,rc_string:()=>J,rc_transform:()=>ye,rc_tuple:()=>oe,rc_undefined:()=>D,rc_union:()=>Z,rc_unknown:()=>G,rc_validator:()=>ue});module.exports=N(fe);function v(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.t&&!e.t(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.t&&!e.t(a.fixed)?[!1,[e.n(a.fixed)]]:(n.warnings.push(`Autofixed from, ${e.n(r)}`),[!0,a.fixed])}return[!1,t&&"errors"in t?t.errors:[e.n(r)]]}function K(e){return{...this,y:!0,i:e}}function F(e){return{...this,t:e,e:`${this.e}_with_predicate`}}function C(){return{...this,c:!0}}function U(e){return`Type '${O(e)}' is not assignable to '${this.e}'`}function z(){return{...this,l:!0,e:`${this.e}_or_nullable`}}function B(){return{...this,u:!0,e:`${this.e}_or_nullish`}}var o={withFallback:v,where:F,optional:C,n:U,nullable:z,withAutofix:K,nullish:B},D={...o,r(e,r){return i(this,e,r,()=>e===void 0)},e:"undefined"},M={...o,r(e,r){return i(this,e,r,()=>e===null)},e:"null"},W={...o,r(e,r){return i(this,e,r,()=>!0)},e:"any"},G={...o,r(e,r){return i(this,e,r,()=>!0)},e:"unknown"},H={...o,r(e,r){return i(this,e,r,()=>typeof e=="boolean")},e:"boolean"},J={...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"},Q={...o,r(e,r){return i(this,e,r,()=>typeof e=="object"&&e instanceof Date&&!Number.isNaN(e.getTime()))},e:"date"};function X(e){return{...o,r(r,n){return i(this,r,n,()=>r instanceof e)},e:`instanceof_${e.name?`_${e.name}`:""}`}}function Y(...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?`${O(e[0])}_literal`:"literals"}}function Z(...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 ee(e,r){return{...r,a:e}}function R(e,r){if(e.startsWith("$[")||e.startsWith("$.")){let[n="",s]=e.split(": "),t=n.slice(1);return`$${r}${t}: ${s}`}return`$${r}: ${e}`}function x(e){return{...o,s:e,e:"object",f:!0,r(r,n){return i(this,r,n,()=>{if(!A(r))return!1;let s=new Set(Object.keys(r)),t={},a=[];for(let[c,u]of Object.entries(e)){let p=c,l,y=c;u.a?(l=r[u.a],y=u.a,l===void 0&&(l=r[c],y=c)):l=r[c],s.delete(y);let[T,h]=u.r(l,n);if(T)t[p]=h;else{let _=h;for(let d of _)a.push(R(d,`.${c}`))}}if(this.e==="strict_obj"&&s.size>0)for(let c of s)a.push(`Key '${c}' is not defined in the object shape`);return a.length>0?{errors:a}:{data:t}})}}}function re(e){return{...x(e),e:"strict_obj"}}function ne(e,r){return x({...e.s,...r.s})}function te(e){return{...o,e:`record<string, ${e.e}>`,r(r,n){return i(this,r,n,()=>{if(!A(r))return!1;let s={},t=[];for(let[a,c]of Object.entries(r)){let u=r[a],[p,l]=e.r(c,n);if(p)s[a]=u;else{let y=l;for(let T of y)t.push(R(T,`.${a}`))}}return t.length>0?{errors:t}:{data:s}})}}}function k(e,r){if(typeof r=="string"&&!e.s?.[r])throw new Error(`${e.e} can't be used with unique key option`)}function w(e,r,n,s=!1,t){let a=-1,c=[],u=[],p=new Set;for(let l of e){a++;let y=Array.isArray(r)?r[a]:r,T=y.r(l,n),[h,_]=T,d=t?.unique;if(h&&d){let f=_,j=typeof d=="string";j&&(f=_[d]),p.has(f)?T=[!1,[j?R(`Type '${y.s?.[d]?.e}' with value "${f}" is not unique`,`.${d}`):`${y.e} value is not unique`]]:p.add(f)}let[S,g]=T;if(S)u.push(g);else if(s){c.push(g.map(f=>R(f,`[${a}]`)));continue}else return{errors:g.map(f=>R(f,`[${a}]`))}}if(c.length>0){if(u.length===0)return{errors:c.slice(0,5).flat()};n.warnings.push(...c.flat())}return{data:u}}function se(e,r){return k(e,r?.unique),{...o,e:`${e.e}[]`,r(n,s){return i(this,n,s,()=>Array.isArray(n)?n.length===0?!0:w.call(this,n,e,s,!1,r):!1)}}}function ae(e,r){return k(e,r?.unique),{...o,e:`${e.e}[]`,r(n,s){return i(this,n,s,()=>Array.isArray(n)?n.length===0?!0:w.call(this,n,e,s,!0,r):!1)}}}function oe(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:w.call(this,r,e,n))}}}function $(e,r){let n={warnings:[]},[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 ie(e){return r=>$(r,e)}function ce(e,r){let n=$(e,r);return n.error?{data:null,errors:n.errors,warnings:!1}:{data:n.data,errors:!1,warnings:n.warnings}}function m(e,r){let n={warnings:[]};return!!r.r(e,n)[0]}function ue(e){return r=>m(r,e)}function le(e){return{...o,e:"recursive",r(r,n){return e().r(r,n)}}}function ye(e,r){return{...o,e:e.e,r(n,s){let[t,a]=e.r(n,s);return t?[!0,r(a)]:[!1,a]}}}function O(e){if(typeof e=="object"){if(Array.isArray(e))return"array";if(!e)return"null"}return typeof e}function A(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}0&&(module.exports={rc_any,rc_array,rc_boolean,rc_date,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});
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 de={};N(de,{rc_any:()=>G,rc_array:()=>ie,rc_boolean:()=>J,rc_date:()=>Y,rc_instanceof:()=>ee,rc_is_valid:()=>P,rc_literals:()=>re,rc_loose_array:()=>ce,rc_loose_parse:()=>ye,rc_null:()=>Z,rc_number:()=>X,rc_obj_intersection:()=>ae,rc_object:()=>k,rc_parse:()=>j,rc_parser:()=>le,rc_record:()=>oe,rc_recursive:()=>Te,rc_rename_key:()=>te,rc_strict_obj:()=>se,rc_string:()=>Q,rc_transform:()=>pe,rc_tuple:()=>ue,rc_undefined:()=>L,rc_union:()=>ne,rc_unknown:()=>H,rc_validator:()=>fe,snakeCase:()=>I});module.exports=C(de);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.t&&!e.t(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.t&&!e.t(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,t: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 k(e,{normalizeKeysFrom:r}={}){return{...o,s: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{...k(e),e:"strict_obj"}}function ae(e,r){return k({...e.s,...r.s})}function oe(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.s?.[r])throw new Error(`${e.e} can't be used with unique key option`)}function m(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.s?.[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 ie(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:m.call(this,n,e,s,!1,r):!1)}}}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:m.call(this,n,e,s,!0,r):!1)}}}function ue(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:m.call(this,r,e,n))}}}function j(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 le(e){return r=>j(r,e)}function ye(e,r){let n=j(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 fe(e){return r=>P(r,e)}function Te(e){return{...o,e:"recursive",r(r,n){return e().r(r,n)}}}function pe(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_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});
@@ -35,7 +35,9 @@ type TypeOfObjectType<T extends RcObject> = {
35
35
  [K in keyof T]: RcInferType<T[K]>;
36
36
  };
37
37
  type RcObjType<T extends RcObject> = RcType<TypeOfObjectType<T>>;
38
- declare function rc_object<T extends RcObject>(shape: T): RcObjType<T>;
38
+ declare function rc_object<T extends RcObject>(shape: T, { normalizeKeysFrom }?: {
39
+ normalizeKeysFrom?: 'snake_case';
40
+ }): RcObjType<T>;
39
41
  /** return an error if the obj has more keys than the expected type */
40
42
  declare function rc_strict_obj<T extends RcObject>(shape: T): RcObjType<T>;
41
43
  declare function rc_obj_intersection<A extends RcObject, B extends RcObject>(a: RcObjType<A>, b: RcObjType<B>): RcObjType<A & B>;
package/dist/runcheck.js CHANGED
@@ -1 +1 @@
1
- import{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-KIM2UT5Z.js";export{c as rc_any,q as rc_array,e as rc_boolean,h as rc_date,i as rc_instanceof,w as rc_is_valid,j as rc_literals,r as rc_loose_array,v as rc_loose_parse,b as rc_null,g as rc_number,o as rc_obj_intersection,m as rc_object,t as rc_parse,u as rc_parser,p as rc_record,y as rc_recursive,l as rc_rename_key,n as rc_strict_obj,f as rc_string,z as rc_transform,s as rc_tuple,a as rc_undefined,k as rc_union,d as rc_unknown,x as rc_validator};
1
+ import{A,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-ZNODUDPO.js";export{c as rc_any,q as rc_array,e as rc_boolean,h as rc_date,i as rc_instanceof,w as rc_is_valid,j as rc_literals,r as rc_loose_array,v as rc_loose_parse,b as rc_null,g as rc_number,o as rc_obj_intersection,m as rc_object,t as rc_parse,u as rc_parser,p as rc_record,y as rc_recursive,l as rc_rename_key,n as rc_strict_obj,f as rc_string,z as rc_transform,s as rc_tuple,a as rc_undefined,k as rc_union,d as rc_unknown,x as rc_validator,A as snakeCase};
package/package.json CHANGED
@@ -1,14 +1,17 @@
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.15.0",
4
+ "version": "0.17.0",
5
5
  "license": "MIT",
6
6
  "scripts": {
7
7
  "test": "vitest --ui",
8
8
  "test:run": "vitest run",
9
+ "lint": "pnpm tsc && pnpm eslint",
10
+ "tsc": "tsc -p tsconfig.prod.json",
9
11
  "benchmark": "tsm benchmarks/benchmark.ts",
10
12
  "benchmark:generate-profile": "tsm benchmarks/generateProfiles.ts",
11
- "build": "pnpm test:run && pnpm build:no-test",
13
+ "eslint": "CI=true eslint --color --ext .jsx,.js,.ts,.tsx src/ tests/",
14
+ "build": "pnpm test:run && pnpm lint && pnpm build:no-test",
12
15
  "build:no-test": "tsup --minify --dts",
13
16
  "npm-publish": "./scripts/check-if-is-sync.sh && pnpm build && npm publish"
14
17
  },
@@ -1 +0,0 @@
1
- function A(e){return{...this,a: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 a=t();if(a&&(a===!0||"data"in a)){let s=a===!0?r:a.data;return e.t&&!e.t(s)?[!1,[e.n(s)]]:[!0,s]}if(e.a!==void 0)return n.warnings.push(`Fallback used, ${e.n(r)}`),[!0,e.a];if(e.y&&e.i){let s=e.i(r);if(s)return e.t&&!e.t(s.fixed)?[!1,[e.n(s.fixed)]]:(n.warnings.push(`Autofixed from, ${e.n(r)}`),[!0,s.fixed])}return[!1,a&&"errors"in a?a.errors:[e.n(r)]]}function S(e){return{...this,y:!0,i:e}}function P(e){return{...this,t:e,e:`${this.e}_with_predicate`}}function V(){return{...this,c:!0}}function I(e){return`Type '${k(e)}' is not assignable to '${this.e}'`}function q(){return{...this,l:!0,e:`${this.e}_or_nullable`}}function E(){return{...this,u:!0,e:`${this.e}_or_nullish`}}var o={withFallback:A,where:P,optional:V,n:I,nullable:q,withAutofix:S,nullish:E},v={...o,r(e,r){return i(this,e,r,()=>e===void 0)},e:"undefined"},K={...o,r(e,r){return i(this,e,r,()=>e===null)},e:"null"},F={...o,r(e,r){return i(this,e,r,()=>!0)},e:"any"},C={...o,r(e,r){return i(this,e,r,()=>!0)},e:"unknown"},U={...o,r(e,r){return i(this,e,r,()=>typeof e=="boolean")},e:"boolean"},z={...o,r(e,r){return i(this,e,r,()=>typeof e=="string")},e:"string"},B={...o,r(e,r){return i(this,e,r,()=>typeof e=="number"&&!Number.isNaN(e))},e:"number"},D={...o,r(e,r){return i(this,e,r,()=>typeof e=="object"&&e instanceof Date&&!Number.isNaN(e.getTime()))},e:"date"};function M(e){return{...o,r(r,n){return i(this,r,n,()=>r instanceof e)},e:`instanceof_${e.name?`_${e.name}`:""}`}}function W(...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?`${k(e[0])}_literal`:"literals"}}function G(...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 H(e,r){return{...r,o:e}}function R(e,r){if(e.startsWith("$[")||e.startsWith("$.")){let[n="",t]=e.split(": "),a=n.slice(1);return`$${r}${a}: ${t}`}return`$${r}: ${e}`}function w(e){return{...o,s:e,e:"object",f:!0,r(r,n){return i(this,r,n,()=>{if(!m(r))return!1;let t=new Set(Object.keys(r)),a={},s=[];for(let[c,u]of Object.entries(e)){let p=c,l,y=c;u.o?(l=r[u.o],y=u.o,l===void 0&&(l=r[c],y=c)):l=r[c],t.delete(y);let[T,h]=u.r(l,n);if(T)a[p]=h;else{let _=h;for(let d of _)s.push(R(d,`.${c}`))}}if(this.e==="strict_obj"&&t.size>0)for(let c of t)s.push(`Key '${c}' is not defined in the object shape`);return s.length>0?{errors:s}:{data:a}})}}}function J(e){return{...w(e),e:"strict_obj"}}function L(e,r){return w({...e.s,...r.s})}function Q(e){return{...o,e:`record<string, ${e.e}>`,r(r,n){return i(this,r,n,()=>{if(!m(r))return!1;let t={},a=[];for(let[s,c]of Object.entries(r)){let u=r[s],[p,l]=e.r(c,n);if(p)t[s]=u;else{let y=l;for(let T of y)a.push(R(T,`.${s}`))}}return a.length>0?{errors:a}:{data:t}})}}}function $(e,r){if(typeof r=="string"&&!e.s?.[r])throw new Error(`${e.e} can't be used with unique key option`)}function b(e,r,n,t=!1,a){let s=-1,c=[],u=[],p=new Set;for(let l of e){s++;let y=Array.isArray(r)?r[s]:r,T=y.r(l,n),[h,_]=T,d=a?.unique;if(h&&d){let f=_,x=typeof d=="string";x&&(f=_[d]),p.has(f)?T=[!1,[x?R(`Type '${y.s?.[d]?.e}' with value "${f}" is not unique`,`.${d}`):`${y.e} value is not unique`]]:p.add(f)}let[O,g]=T;if(O)u.push(g);else if(t){c.push(g.map(f=>R(f,`[${s}]`)));continue}else return{errors:g.map(f=>R(f,`[${s}]`))}}if(c.length>0){if(u.length===0)return{errors:c.slice(0,5).flat()};n.warnings.push(...c.flat())}return{data:u}}function X(e,r){return $(e,r?.unique),{...o,e:`${e.e}[]`,r(n,t){return i(this,n,t,()=>Array.isArray(n)?n.length===0?!0:b.call(this,n,e,t,!1,r):!1)}}}function Y(e,r){return $(e,r?.unique),{...o,e:`${e.e}[]`,r(n,t){return i(this,n,t,()=>Array.isArray(n)?n.length===0?!0:b.call(this,n,e,t,!0,r):!1)}}}function Z(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:b.call(this,r,e,n))}}}function j(e,r){let n={warnings:[]},[t,a]=r.r(e,n);return t?{error:!1,data:a,warnings:n.warnings.length>0?n.warnings:!1}:{error:!0,errors:a}}function ee(e){return r=>j(r,e)}function re(e,r){let n=j(e,r);return n.error?{data:null,errors:n.errors,warnings:!1}:{data:n.data,errors:!1,warnings:n.warnings}}function N(e,r){let n={warnings:[]};return!!r.r(e,n)[0]}function ne(e){return r=>N(r,e)}function te(e){return{...o,e:"recursive",r(r,n){return e().r(r,n)}}}function se(e,r){return{...o,e:e.e,r(n,t){let[a,s]=e.r(n,t);return a?[!0,r(s)]:[!1,s]}}}function k(e){if(typeof e=="object"){if(Array.isArray(e))return"array";if(!e)return"null"}return typeof e}function m(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}export{v as a,K as b,F as c,C as d,U as e,z as f,B as g,D as h,M as i,W as j,G as k,H as l,w as m,J as n,L as o,Q as p,X as q,Y as r,Z as s,j as t,ee as u,re as v,N as w,ne as x,te as y,se as z};