inquiry-monad
Version:
Inquiry is an expressive API that allows one ask multiple questions about a subject value, and observe all results. This process returns a collection of all passes, fails, and the original subject value.
2 lines • 12.9 kB
JavaScript
!function(i,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define("InquiryMonad",[],n):"object"==typeof exports?exports.InquiryMonad=n():i.InquiryMonad=n()}(window,function(){return function(i){var n={};function e(t){if(n[t])return n[t].exports;var o=n[t]={i:t,l:!1,exports:{}};return i[t].call(o.exports,o,o.exports,e),o.l=!0,o.exports}return e.m=i,e.c=n,e.d=function(i,n,t){e.o(i,n)||Object.defineProperty(i,n,{configurable:!1,enumerable:!0,get:t})},e.r=function(i){Object.defineProperty(i,"__esModule",{value:!0})},e.n=function(i){var n=i&&i.__esModule?function(){return i.default}:function(){return i};return e.d(n,"a",n),n},e.o=function(i,n){return Object.prototype.hasOwnProperty.call(i,n)},e.p="",e(e.s=2)}([function(i,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.$$inquirySymbol=Symbol(),n.$$questionsetSymbol=Symbol(),n.$$questionSymbol=Symbol(),n.$$passSymbol=Symbol(),n.$$failSymbol=Symbol(),n.$$iouSymbol=Symbol(),n.$$receiptSymbol=Symbol()},function(i,n){const e=i=>({isJust:!0,isNothing:!1,inspect:n=>`Just(${i})`,map:n=>o.of(n(i)),ap:n=>n.map(i),chain:n=>n(i),join:n=>i,fork:(n,e)=>e(i),sequence:n=>i.map(o.of)}),t=i=>({isJust:!1,isNothing:!0,inspect:i=>"Nothing",map:i=>t(),ap:i=>t(),chain:i=>t(),join:i=>t(),fork:(i,n)=>i(),sequence:i=>i(t())}),o={of:i=>null===i||void 0===i?t():e(i)};i.exports={Maybe:o,Nothing:t,Just:e}},function(i,n,e){"use strict";var t=this&&this.__awaiter||function(i,n,e,t){return new(e||(e=Promise))(function(o,s){function a(i){try{u(t.next(i))}catch(i){s(i)}}function r(i){try{u(t.throw(i))}catch(i){s(i)}}function u(i){i.done?o(i.value):new e(function(n){n(i.value)}).then(a,r)}u((t=t.apply(i,n||[])).next())})};Object.defineProperty(n,"__esModule",{value:!0});const o=e(1),s=e(0);n.$$inquirySymbol=s.$$inquirySymbol,n.$$questionSymbol=s.$$questionSymbol,n.$$passSymbol=s.$$passSymbol,n.$$failSymbol=s.$$failSymbol;const a=()=>{},r=Symbol("Not found"),u=i=>new Promise(n=>{const e=[];let t=0;i.forEach((o,s)=>{o.catch(i=>i).then(o=>{e[s]=o,(t+=1)===i.length&&n(e)})})}),c=i=>({map:n=>c(n(i)),chain:n=>n(i),ap:n=>n.map(i),inspect:()=>`IOU(${i})`,join:()=>i,emit:()=>i,concat:n=>n.chain(n=>c(i.concat(n))),head:()=>Array.isArray(i)&&i.length?i[0]:[],tail:()=>Array.isArray(i)&&i.length?i[i.length-1]:[],isEmpty:()=>Boolean(!Array.isArray(i)||0===i.length),[s.$$inquirySymbol]:!1,[s.$$passSymbol]:!1,[s.$$failSymbol]:!1,[s.$$iouSymbol]:!0});n.IOU=c;const l=i=>({map:n=>l(n(i)),chain:n=>n(i),fold:(n,e)=>n(i),fork:(n,e)=>e(i),head:()=>Array.isArray(i)&&i.length?i[0]:[],tail:()=>Array.isArray(i)&&i.length?i[i.length-1]:[],join:()=>i,emit:()=>i,inspect:()=>`Pass(${i})`,concat:n=>n.fold(n=>l(i.concat(n)),a),ap:n=>n[s.$$passSymbol]?n.concat(l(i)):l(i),answer:(n,e="(anonymous)",t=q)=>(n.informant([e,l(i)]),t({subject:n.subject,fail:n.fail,iou:n.iou,pass:n.pass.concat(l(i)),informant:n.informant,questionset:n.questionset,receipt:n.receipt.concat(f([[e,l(i)]]))})),isEmpty:()=>Boolean(!Array.isArray(i)||0===i.length),[s.$$passSymbol]:!0,[s.$$failSymbol]:!1,[s.$$iouSymbol]:!1,[s.$$inquirySymbol]:!1});n.Pass=l;const p=i=>({map:n=>p(n(i)),chain:n=>n(i),fold:(n,e)=>e(i),fork:(n,e)=>n(i),head:()=>Array.isArray(i)&&i.length?i[0]:[],tail:()=>Array.isArray(i)&&i.length?i[i.length-1]:[],join:()=>i,emit:()=>i,inspect:()=>`Fail(${i})`,concat:n=>n.fork(n=>p(i.concat(n)),a),ap:n=>n[s.$$passSymbol]?p(i):n.concat(p(i)),answer:(n,e="(anonymous)",t=q)=>(n.informant([e,p(i)]),t({subject:n.subject,fail:n.fail.concat(p(i)),pass:n.pass,iou:n.iou,informant:n.informant,questionset:n.questionset,receipt:n.receipt.concat(f([[e,p(i)]]))})),isEmpty:()=>Boolean(!Array.isArray(i)||0===i.length),[s.$$passSymbol]:!1,[s.$$failSymbol]:!0,[s.$$iouSymbol]:!1,[s.$$inquirySymbol]:!1});n.Fail=p;const f=i=>({map:n=>f(n(i)),chain:n=>n(i),fold:(n,e)=>e(i),fork:(n,e)=>n(i),head:()=>i[0],tail:()=>i[i.length-1],join:()=>i,emit:()=>i,inspect:()=>`Receipt(${i})`,isEmpty:()=>Boolean(!Array.isArray(i)||0===i.length),concat:n=>n.chain(n=>f(i.concat(n))),ap:n=>n.map(i),[s.$$inquirySymbol]:!1,[s.$$receiptSymbol]:!0});n.Receipt=f;const m=i=>({map:n=>m(n(i)),chain:n=>n(i),ap:n=>n.map(i),inspect:()=>`Question(${i})`,join:()=>i,emit:()=>i,call:n=>i[1](n.join().subject.join()),extract:()=>i[1],name:()=>i[0],[s.$$questionSymbol]:!0}),y=i=>Array.isArray(i)?m(i):(i=>console.error("Question must be passed parameters that adhere to the documented type. Value that was passed:",i))(i),$={of:y};n.Question=$;const b=i=>({map:n=>b(n(i)),chain:n=>n(i),ap:n=>n.map(i),inspect:()=>`Questionset(${i})`,join:()=>i,emit:()=>i,concat:n=>n.chain(n=>b(i.concat(n))),find:n=>o.Maybe.of(i.find(i=>RegExp(i[0]).test(n))).map(i=>i[1]).fork(()=>(console.warn("Question was not found: ",n),r),i=>i),[s.$$questionsetSymbol]:!0}),j={of:i=>Array.isArray(i)?b(i):(i=>console.error("Questionset must be passed parameters that adhere to the documented type. Value that was passed:",i))(i)};n.Questionset=j;const h=i=>i[s.$$inquirySymbol]?i:q({subject:o.Maybe.of(i),fail:p([]),pass:l([]),iou:c([]),informant:i=>i,questionset:b([["",a]]),receipt:f([])}),q=i=>({inquire:n=>{const e="function"==typeof n?n.name||"anon":(i=>i[s.$$questionSymbol]?i.name():i)(n),t=n[s.$$questionSymbol]?n.extract():n,o="function"==typeof t?t:i.questionset.find(t),a="function"==typeof o?o(i.subject.join()):{};return a[s.$$failSymbol]||a[s.$$passSymbol]||a[s.$$inquirySymbol]?a.answer(i,e,q):(n=>(console.warn("inquire was passed a function that does not return Pass or Fail:",e),console.warn("response was:",n),q(i)))([a,e])},inquireMap:(n,e)=>e.reduce((e,t)=>{const o="function"==typeof n?n.name||"anon":(i=>i[s.$$questionSymbol]?i.name():i)(n),a=n[s.$$questionSymbol]?n.extract():n,r="function"==typeof a?a:i.questionset.find(a),u="function"==typeof r?r(t)(e.join().subject.join()):{};return u[s.$$failSymbol]||u[s.$$passSymbol]||u[s.$$inquirySymbol]?u.answer(e.join(),o,q):(i=>(console.warn("inquire was passed a function that does not return Pass or Fail:",o),console.warn("response was:",i),e))([u,o])},q({subject:i.subject,iou:i.iou,fail:i.fail,pass:i.pass,informant:i.informant,questionset:i.questionset,receipt:i.receipt})),inquireAll:()=>i.questionset.chain(n=>n.reduce((i,n)=>i.inquire(y(n)),q(i))),using:n=>q({subject:i.subject,iou:i.iou,fail:i.fail,pass:i.pass,informant:i.informant,questionset:n,receipt:i.receipt}),informant:n=>q({subject:i.subject,iou:i.iou,fail:i.fail,pass:i.pass,informant:n,questionset:i.questionset,receipt:i.receipt}),inspect:()=>`Inquiry(${i.fail.inspect()} ${i.pass.inspect()} ${i.iou.inspect()}`,swap:()=>q({subject:i.subject,iou:i.iou,fail:p(i.pass.join()),pass:l(i.fail.join()),informant:i.informant,questionset:i.questionset,receipt:i.receipt}),unison:n=>q({subject:i.subject,iou:i.iou,fail:p(n(i.fail.join())),pass:l(n(i.pass.join())),informant:i.informant,questionset:i.questionset,receipt:i.receipt}),map:n=>h(n(i)),ap:n=>n.map(i),chain:n=>n(i),join:()=>i,emit:()=>i,breakpoint:n=>i.fail.join().length?q(n(i)):q(i),milestone:n=>i.pass.join().length?q(n(i)):q(i),answer:(n,e,t)=>(n.informant([e,q(i)]),q({subject:n.subject,iou:n.iou,fail:n.fail.concat(i.fail),pass:n.pass.concat(i.pass),informant:n.informant,questionset:n.questionset,receipt:n.receipt})),conclude:(n,e)=>({subject:i.subject,iou:i.iou,fail:n(i.fail),pass:e(i.pass),informant:i.informant,questionset:i.questionset,receipt:i.receipt}),cleared:n=>i.fail.isEmpty()?n(i.pass):void 0,faulted:n=>i.fail.isEmpty()?void 0:n(i.fail),suffice:n=>i.pass.isEmpty()?void 0:n(i.pass),scratch:n=>i.pass.isEmpty()?n(i.fail):void 0,fork:(n,e)=>i.fail.join().length?n(i.fail):e(i.pass),fold:(n,e)=>i.pass.join().length?n(i.pass):e(i.fail),zip:n=>n(i.fail.join().concat(i.pass.join())),[s.$$inquirySymbol]:!0}),d={subject:h,of:i=>"subject"in i&&"fail"in i&&"pass"in i&&"iou"in i&&"informant"in i&&"questionset"in i&&"receipt"in i?q(i):(i=>(console.warn("Inquiry.of requires properties: subject, fail, pass, iou, informant, questionset, receipt. Converting to Inquiry.subject()."),h(i)))(i)};n.Inquiry=d;const S=i=>i[s.$$inquirySymbol]?i:A({subject:o.Maybe.of(i),fail:p([]),pass:l([]),iou:c([]),informant:i=>i,questionset:b([["",a]]),receipt:f([])}),w=i=>"subject"in i&&"fail"in i&&"pass"in i&&"iou"in i&&"informant"in i&&"questionset"in i&&"receipt"in i?A(i):(i=>(console.warn("InquiryP.of requires properties: subject, fail, pass, iou, informant, questionset, receipt. Converting to InquiryP.subject()."),S(i)))(i),v=i=>n=>n?n.reduce((i,n)=>n?n[1].answer(i,n[0],A).join():i,i):i,g=i=>i.iou.join().length?i.iou.join().map(i=>i.extract()().catch(i=>i).then(n=>Promise.resolve([i.name(),n]))):[Promise.resolve()],A=i=>({inquire:n=>{const e="function"==typeof n?n.name||"anon":(i=>i[s.$$questionSymbol]?i.name():i)(n),t=n[s.$$questionSymbol]?n.extract():n,o="function"==typeof t?t:i.questionset.find(t),a="function"==typeof o?o(i.subject.join()):{},r=!!a.then&&y([e,()=>a]);return r?A({subject:i.subject,fail:i.fail,pass:i.pass,iou:i.iou.concat(c([r])),informant:i.informant,questionset:i.questionset,receipt:i.receipt}):(n=>n[s.$$failSymbol]||n[s.$$passSymbol]||n[s.$$inquirySymbol]?n.answer(i,e,A):(n=>(console.warn("inquire was passed a function that does not return Pass or Fail:",e),console.warn("response was:",n),A(i)))([a,e]))(a)},inquireMap:(n,e)=>e.reduce((e,t)=>{const o="function"==typeof n?n.name||"anon":(i=>i[s.$$questionSymbol]?i.name():i)(n),a=n[s.$$questionSymbol]?n.extract():n,r="function"==typeof a?a:i.questionset.find(a),u="function"==typeof r?r(t)(e.join().subject.join()):{};return u.then?A({subject:e.join().subject,fail:e.join().fail,pass:e.join().pass,iou:e.join().iou.concat(c([u])),informant:e.join().informant,questionset:e.join().questionset,receipt:e.join().receipt}):(i=>i[s.$$failSymbol]||i[s.$$passSymbol]||i[s.$$inquirySymbol]?i.answer(e.join(),o,A):(i=>(console.warn("inquire was passed a function that does not return Pass or Fail:",o),console.warn("response was:",i),e))(i))(u)},A({subject:i.subject,iou:i.iou,fail:i.fail,pass:i.pass,informant:i.informant,questionset:i.questionset,receipt:i.receipt})),inquireAll:()=>i.questionset.chain(n=>n.reduce((i,n)=>i.inquire(y(n)),A(i))),using:n=>A({subject:i.subject,iou:i.iou,fail:i.fail,pass:i.pass,informant:i.informant,questionset:n,receipt:i.receipt}),informant:n=>A({subject:i.subject,iou:i.iou,fail:i.fail,pass:i.pass,informant:n,questionset:i.questionset,receipt:i.receipt}),inspect:()=>`InquiryP(${i.fail.inspect()} ${i.pass.inspect()} ${i.iou.inspect()}`,swap:()=>A({subject:i.subject,iou:i.iou,fail:p(i.pass.join()),pass:l(i.fail.join()),informant:i.informant,questionset:i.questionset,receipt:i.receipt}),unison:n=>A({subject:i.subject,iou:i.iou,fail:p(n(i.fail.join())),pass:l(n(i.pass.join())),informant:i.informant,questionset:i.questionset,receipt:i.receipt}),map:n=>S(n(i)),ap:n=>n.map(i),chain:n=>n(i),join:()=>i,emit:()=>i,breakpoint:n=>i.fail.join().length?A(n(i)):A(i),milestone:n=>i.pass.join().length?A(n(i)):A(i),answer:(n,e,t)=>(n.informant([e,A(i)]),A({subject:n.subject,iou:n.iou,fail:n.fail.concat(i.fail),pass:n.pass.concat(i.pass),informant:n.informant,questionset:n.questionset,receipt:n.receipt})),conclude:(n,e)=>t(this,void 0,void 0,function*(){return u(g(i)).then(v(i)).then(i=>i[s.$$inquirySymbol]?i.join():i).then(i=>({subject:i.subject,iou:i.iou,fail:n(i.fail),pass:e(i.pass),informant:i.informant,questionset:i.questionset,receipt:i.receipt}))}),cleared:n=>t(this,void 0,void 0,function*(){return u(g(i)).then(v(i)).then(i=>i[s.$$inquirySymbol]?i.join():i).then(i=>i.fail.isEmpty()?n(i.pass):void 0).catch(i=>console.error("err",i))}),faulted:n=>t(this,void 0,void 0,function*(){return u(g(i)).then(v(i)).then(i=>i[s.$$inquirySymbol]?i.join():i).then(i=>i.fail.isEmpty()?void 0:n(i.fail))}),suffice:n=>t(this,void 0,void 0,function*(){return u(g(i)).then(v(i)).then(i=>i[s.$$inquirySymbol]?i.join():i).then(i=>i.pass.isEmpty()?void 0:n(i.pass)).catch(i=>console.error("err",i))}),scratch:n=>t(this,void 0,void 0,function*(){return u(g(i)).then(v(i)).then(i=>i[s.$$inquirySymbol]?i.join():i).then(i=>i.pass.isEmpty()?n(i.fail):void 0)}),fork:(n,e)=>t(this,void 0,void 0,function*(){return u(g(i)).then(v(i)).then(i=>i[s.$$inquirySymbol]?i.join():i).then(i=>i.fail.join().length?n(i.fail):e(i.pass))}),fold:(n,e)=>t(this,void 0,void 0,function*(){return u(g(i)).then(v(i)).then(i=>i[s.$$inquirySymbol]?i.join():i).then(i=>i.pass.join().length?n(i.pass):e(i.fail))}),zip:n=>t(this,void 0,void 0,function*(){return u(g(i)).then(v(i)).then(i=>i[s.$$inquirySymbol]?i.join():i).then(i=>n(i.fail.join().concat(i.pass.join())))}),await:(n=1/0)=>t(this,void 0,void 0,function*(){const e=new Promise((i,e)=>setTimeout(i,n,["timeout",p("Promise(s) have timed out")])),t=u(g(i));return Promise.race([e,t]).then(v(i)).then(i=>i[s.$$inquirySymbol]?i.join():i).then(i=>w(i))}),[s.$$inquirySymbol]:!0}),P={subject:S,of:w};n.InquiryP=P}])});
//# sourceMappingURL=inquiry-monad.min.js.map