json-schema-to-decoders
Version:
A utility for converting JSON schema definition to decoders
1 lines • 4.71 kB
JavaScript
!function(n,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["json-schema-to-decoder"]=t():n["json-schema-to-decoder"]=t()}(this,(()=>(()=>{"use strict";var n={d:(t,r)=>{for(var e in r)n.o(r,e)&&!n.o(t,e)&&Object.defineProperty(t,e,{enumerable:!0,get:r[e]})},o:(n,t)=>Object.prototype.hasOwnProperty.call(n,t),r:n=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})}},t={};function r(){return r=Object.assign?Object.assign.bind():function(n){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var e in r)Object.prototype.hasOwnProperty.call(r,e)&&(n[e]=r[e])}return n},r.apply(this,arguments)}n.r(t),n.d(t,{union:()=>j});var e=new WeakSet;function o(n){return e.add(n),n}function u(n){return o({type:"circular-ref",text:n})}function i(n,t,r){r.add(n);var e={};return Object.keys(n).forEach((function(t){var o=n[t];e[t]=f(o,void 0,r)})),function(n,t){return o({type:"object",fields:n,text:t})}(e,t)}function f(n,t,c){if(null==n||"string"==typeof n||"number"==typeof n||"boolean"==typeof n||"symbol"==typeof n||"function"==typeof n.getMonth)return function(n,t){return o({type:"scalar",value:n,text:t})}(n,t);var a,l="object"==typeof(a=n)&&null!==a&&e.has(a)?a:void 0;return l?function(n,t){return void 0!==t?o(r({},n,{text:t})):n}(l,t):Array.isArray(n)?c.has(n)?u(t):function(n,t,r){return r.add(n),function(n,t){return o({type:"array",items:n,text:t})}(n.map((function(n){return f(n,void 0,r)})),t)}(n,t,c):"object"==typeof n?c.has(n)?u(t):i(n,t,c):"function"==typeof n?function(n){return o({type:"function",text:n})}(t):function(n,t){return o({type:"unknown",value:n,text:t})}(n,t)}function c(n,t){return f(n,t,new WeakSet)}var a=" ";function l(n){return n.indexOf("\n")>=0}function s(n,t){return void 0===t&&(t=a),l(n)?n.split("\n").map((function(n){return""+t+n})).join("\n"):""+t+n}function v(n){if("string"==typeof n)return function(n,t){void 0===t&&(t=80);var r=JSON.stringify(n);if(r.length<=t)return r;var e=n.substring(0,t-15)+"...";return JSON.stringify(e)+" [truncated]"}(n);if("number"==typeof n||"boolean"==typeof n)return n.toString();if(null===n)return"null";if(void 0===n)return"undefined";var t=function(n){return n&&"[object Date]"===Object.prototype.toString.call(n)&&!isNaN(n)?n:null}(n);return null!==t?"new Date("+JSON.stringify(t.toISOString())+")":n instanceof Date?"(Invalid Date)":"(unserializable)"}function p(n,t){var r;void 0===t&&(t=""),r="array"===n.type?function(n,t){var r=n.items;if(0===r.length)return"[]";var e=[];return r.forEach((function(n){var r=p(n,""+t+a),o=r[0],u=r[1];e.push(""+t+a+o+","),void 0!==u&&e.push(s(u,""+t+a))})),["["].concat(e,[t+"]"]).join("\n")}(n,t):"object"===n.type?function(n,t){var r=n.fields,e=Object.keys(r);if(0===e.length)return"{}";var o=[];return e.forEach((function(n){var e=r[n],u=v(n),i=""+t+a+" ".repeat(u.length+2),f=p(e,""+t+a),c=f[0],l=f[1];o.push(""+t+a+u+": "+c+","),void 0!==l&&o.push(s(l,i))})),["{"].concat(o,[t+"}"]).join("\n")}(n,t):"function"===n.type?"<function>":"circular-ref"===n.type?"<circular ref>":"unknown"===n.type?"???":v(n.value);var e=n.text;return void 0!==e?[r,["^".repeat(l(r)?1:r.length),e].join(l(e)?"\n":" ")]:[r,void 0]}function d(n){var t=p(n),r=t[0],e=t[1];return void 0!==e?r+"\n"+e:r}function y(n){return{ok:!0,value:n,error:void 0}}function b(n){return{ok:!1,value:void 0,error:n}}function g(n){function t(t){return n(t,y,(function(n){return b("string"==typeof n?c(t,n):n)}))}function r(n){return g((function(r,e,o){var u=t(r);return u.ok?n(u.value,e,o):u}))}function e(n){return r((function(t,r,e){var o=n(t);return null===o?r(t):e("string"==typeof o?c(t,o):o)}))}return Object.freeze({verify:function(n,r){void 0===r&&(r=d);var e=t(n);if(e.ok)return e.value;throw function(n,t){var r=t(n);if("string"==typeof r){var e=new Error("\n"+r);return e.name="Decoding error",e}return r}(e.error,r)},value:function(n){return t(n).value},decode:t,transform:function(n){return r(function(n){return function(t){try{return y(n(t))}catch(n){return b(c(t,n instanceof Error?n.message:String(n)))}}}(n))},refine:function(n,t){return e((function(r){return n(r)?null:t}))},reject:e,describe:function(n){return g((function(r,e,o){var u=t(r);return u.ok?u:o(c(u.error,n))}))},then:r,peek_UNSTABLE:function(n){return g((function(r,e,o){var u=t(r);return u.ok?n([r,u.value],e,o):u}))}})}const j=(...n)=>g(((t,r,e)=>{const o=[];for(const r of n){const n=r.decode(t);if(!n.ok)return e(n.error);o.push(n.value)}return r(o.reduce(((n,t)=>Object.assign(Object.assign({},n),t)),{}))}));return t})()));