UNPKG

couchdb-web-node-plugin

Version:

A couchdb server, model instance conflict handler, rest api, authentication, session management, schema validator and model relation guarantee for webNode.

1 lines 11.4 kB
(()=>{"use strict";var e=[,e=>{e.exports=require("@babel/runtime/helpers/extends")},e=>{e.exports=require("@babel/runtime/helpers/asyncToGenerator")},e=>{e.exports=require("@babel/runtime/regenerator")},e=>{e.exports=require("clientnode")}],t={};function r(n){var a=t[n];if(void 0!==a)return a.exports;var o=t[n]={exports:{}};return e[n](o,o.exports,r),o.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};r.r(n),r.d(n,{TOGGLE_LATEST_REVISION_DETERMINING:()=>m,bulkDocsFactory:()=>w,determineAllowedModelRolesMapping:()=>k,determineGenericIndexablePropertyNames:()=>S,ensureValidationDocumentPresence:()=>g,extendModel:()=>A,extendModels:()=>T,getConnectorOptions:()=>h,initializeConnection:()=>O,isPropertySpecification:()=>j,mayStripRepresentation:()=>x,normalizeAllowedRoles:()=>I,removeDeprecatedIndexes:()=>v});var a=r(1),o=r.n(a),i=r(2),s=r.n(i),c=r(3),l=r.n(c),u=r(4);const p=require("rxjs"),d=require("rxjs/fetch"),f="1.0.761";function y(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(r)return(r=r.call(e)).next.bind(r);if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return b(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?b(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}var m=Symbol("toggleLatestRevisionDetermining"),v=function(){var e=s()(l().mark((function e(t,r,n){var a,o,i,s,c,u,p,d,f,b,m,v,h;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.getIndexes();case 2:a=e.sent.indexes.filter((function(e){return e.name.endsWith("-GenericIndex")})),o=y(a);case 4:if((i=o()).done){e.next=21;break}s=i.value,c=!1,u=0,p=Object.entries(r);case 8:if(!(u<p.length)){e.next=16;break}if(d=p[u],f=d[0],b=d[1],!s.name.startsWith(f+"-")){e.next=13;break}for(m=0,v=S(n,b);m<v.length;m++)h=v[m],[f+"-"+h+"-GenericIndex",f+"-GenericIndex"].includes(s.name)&&(c=!0);return e.abrupt("break",16);case 13:u++,e.next=8;break;case 16:if(c){e.next=19;break}return e.next=19,t.deleteIndex(s);case 19:e.next=4;break;case 21:case"end":return e.stop()}}),e)})));return function(t,r,n){return e.apply(this,arguments)}}(),h=function(e,t){var r=new Map([[408,"Request Timeout"],[425,"Too Early"],[429,"Too Many Requests"],[502,"Bad Gateway"],[503,"Service Unavailable"],[504,"Gateway Timeout"]]);return{fetch:function(n,a){var o=e.fetchInterceptor,i=o.numberOfRetries,s=o.retryIntervalInSeconds,c=o.exponentialBackoff,l=o.maximumRetryIntervallInSeconds,f=(0,d.fromFetch)(n,function(r){return void 0===r&&(r={}),e.fetch&&(r=(0,u.extend)(!0,(0,u.copy)(e.fetch),r)),Array.isArray(t)&&t.length>0&&(r.signal=t.pop()),r}(a)).pipe((0,p.map)((function(e){if(r.has(e.status))throw e;return e})),(0,p.retry)({count:i,delay:function(e,t){if("number"!=typeof e.status)throw e;var r=e;if(r.headers.has("retry-after")){var n=r.headers.get("retry-after");if("string"==typeof n){var a=parseInt(n);if(String(a)===n)return console.info("Retry in "+n+" seconds","according to given retry value."),(0,p.timer)(1e3*a);var o=new Date(n);if(!isNaN(o.getTime())){var i=new Date;if(i<o){if(l<(o.getTime()-i.getTime())/1e3)return console.info("Retry at",o.toUTCString(),"according to given retry","value."),(0,p.timer)(o);console.warn("The recommended retry attempt is",o.toUTCString(),"further in the future than the","configured maximum wait time of",l,"seconds.")}else console.warn("Given retry time recommendation","from server is in the past and","has to be ignored therefore.")}}}var u=c?Math.pow(2,t-1)*s:s;return(0,p.timer)(1e3*Math.min(u,l))}}));return(0,p.lastValueFrom)(f)}}},x=function(e,t,r){var n=(0,u.represent)(e);return n.length<=t?n.length>r?n.substring(0,r-3)+"...":n:"DOCUMENT IS TOO BIG TO REPRESENT"},g=function(){var e=s()(l().mark((function e(t,r,n,a,i,s,c,p){var d,y,b;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===i&&(i=!0),void 0===s&&(s="_id"),void 0===c&&(c="_rev"),void 0===p&&(p="_design/"),y=o()(((d={})[s]=""+p+r,d.language="javascript",d.version=f,d),n),e.prev=5,e.next=8,t.get(""+p+r);case 8:return b=e.sent,y[c]=b[c],e.next=12,t.put(y);case 12:i&&console.info(a+" updated."),e.next=27;break;case 15:return e.prev=15,e.t0=e.catch(5),i&&("not_found"===e.t0.error?console.info(a+" not available: create new one."):console.info(a+" couldn't be updated: \""+(0,u.represent)(e.t0)+'" create new one.')),e.prev=18,e.next=21,t.put(y);case 21:i&&console.info(a+" installed/updated."),e.next=27;break;case 24:throw e.prev=24,e.t1=e.catch(18),new Error(a+" couldn't be installed/updated: \""+(0,u.represent)(e.t1)+'".');case 27:case"end":return e.stop()}}),e,null,[[5,15],[18,24]])})));return function(t,r,n,a,o,i,s,c){return e.apply(this,arguments)}}(),w=function(e,t){var r=t.model.property.name.special.id,n=t.model.property.name.special.revision;return s()(l().mark((function a(o){var i,s,c,p,d,f,b,v,h,x,g,w,O,k,j,S,A,T,I,R,P,E=arguments;return l().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:for(i=E.length,s=new Array(i>1?i-1:0),c=1;c<i;c++)s[c-1]=E[c];p=s.length>0&&s[s.length-1]===m,d=p?!t.skipLatestRevisionDetermining:t.skipLatestRevisionDetermining,p&&s.pop(),f=!Array.isArray(o)&&(0,u.isObject)(o)&&r in o?[o]:o,b=t.maximumNumberOfEntitiesInBulkOperation,v=[],h=0;case 8:if(!(h<f.length)){a.next=17;break}return x=f.slice(h,h+b),a.next=12,e.call.apply(e,[this,x].concat(s));case 12:g=a.sent,v=v.concat(g);case 14:h+=b,a.next=8;break;case 17:w=[],O=[],k=0,j=y(v);case 21:if((S=j()).done){a.next=44;break}if(A=S.value,"object"!=typeof f[k]){a.next=41;break}if(!(n in f[k])||"conflict"!==A.name||!["0-latest","0-upsert"].includes(f[k][n])){a.next=29;break}O.push(f[k]),w.push(k),a.next=41;break;case 29:if(!(r in f[k]&&t.ignoreNoChangeError&&"name"in A&&"forbidden"===A.name&&"message"in A&&A.message.startsWith("NoChange:"))){a.next=41;break}if(v[k]={id:f[k][r],ok:!0},d){a.next=41;break}if(!(n in f[k])||["0-latest","0-upsert"].includes(f[k][n])){a.next=36;break}a.t0=f[k][n],a.next=40;break;case 36:return a.next=38,this.get(v[k].id);case 38:a.t1=n,a.t0=a.sent[a.t1];case 40:v[k].rev=a.t0;case 41:k+=1;case 42:a.next=21;break;case 44:if(!O.length){a.next=51;break}return f=O,p&&s.push(m),a.next=49,this.bulkDocs.apply(this,[f].concat(s));case 49:for(T=a.sent,I=y(T);!(R=I()).done;)P=R.value,v[w.shift()]=P;case 51:return a.abrupt("return",v);case 52:case"end":return a.stop()}}),a,this)})))},O=function(){var e=s()(l().mark((function e(t,r){var n,a,o,i;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.couchdb,a=r.couchdb,o=(0,u.format)(a.url,a.admin.name+":"+a.admin.password+"@")+"/"+a.databaseName,Object.prototype.hasOwnProperty.call(n.server,"runner")&&n.server.runner.binaryFilePath?n.connection=new n.connector(o,h(r.couchdb.connector)):n.connection=new n.connector(a.databaseName,h(r.couchdb.connector)),n.connection.installValidationMethods(),(i=n.connection).setMaxListeners(1/0),i.bulkDocs=w(i.bulkDocs,r.couchdb),i.post=i.put=s()(l().mark((function e(t,r){var n;return l().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,i.bulkDocs.call(this,[t],r);case 2:if(null==(n=e.sent[0])||!n.name){e.next=5;break}throw n;case 5:return e.abrupt("return",n);case 6:case"end":return e.stop()}}),e,this)}))),!Object.prototype.hasOwnProperty.call(n.server,"runner")){e.next=22;break}return e.prev=10,e.next=13,(0,u.checkReachability)(o);case 13:e.next=22;break;case 15:if(e.prev=15,e.t0=e.catch(10),console.info("Database could not be retrieved yet: Creating it."),u.globalContext.fetch){e.next=20;break}throw new Error("Missing fetch implementation.");case 20:return e.next=22,u.globalContext.fetch(o,{method:"PUT"});case 22:return e.abrupt("return",t);case 23:case"end":return e.stop()}}),e,null,[[10,15]])})));return function(t,r){return e.apply(this,arguments)}}(),k=function(e){for(var t=e.property.name.special.allowedRole,r={},n=T(e),a=0,i=Object.entries(n);a<i.length;a++){var s=i[a],c=s[0],l=s[1];if(l[t]){r[c]=o()({properties:{}},I(l[t]));for(var p=0,d=Object.entries(l);p<d.length;p++){var f=d[p],y=f[0],b=f[1];(0,u.isObject)(b)&&b.allowedRoles&&(r[c].properties[y]=I(b.allowedRoles))}}else r[c]={properties:{},read:[],write:[]}}return r},j=function(e){return(0,u.isObject)(e)},S=function(e,t){var r=e.property.name.special;return Object.keys(t).filter((function(n){var a=t[n];return j(a)&&Object.prototype.hasOwnProperty.call(a,"index")&&a.index||j(a)&&!(Object.prototype.hasOwnProperty.call(a,"index")&&!a.index||e.property.name.reserved.concat(r.additional,r.allowedRole,r.attachment,r.conflict,r.constraint.execution,r.constraint.expression,r.deleted,r.deletedConflict,r.extend,r.maximumAggregatedSize,r.minimumAggregatedSize,r.oldType,r.id,r.revision,r.revisions,r.revisionsInformation,r.type).includes(n)||a.type&&("string"==typeof a.type&&a.type.endsWith("[]")||Array.isArray(a.type)&&a.type.length&&Array.isArray(a.type[0])||Object.prototype.hasOwnProperty.call(e.entities,a.type)))})).concat([r.id,r.revision]).sort()},A=function(e,t,r){if(void 0===r&&(r="_extends"),"_base"===e)return t[e];if(Object.prototype.hasOwnProperty.call(t,"_base")&&(Object.prototype.hasOwnProperty.call(t[e],r)&&t[e][r]?t[e][r]=["_base"].concat(t[e][r]):t[e][r]="_base"),Object.prototype.hasOwnProperty.call(t[e],r)){for(var n,a=y([].concat(t[e][r]));!(n=a()).done;){var o=n.value;t[e]=(0,u.extend)(!0,(0,u.copy)(A(o,t,r)),t[e])}delete t[e][r]}return t[e]},T=function(e){for(var t=e.property.name.special,r={},n=e.property.name.typePattern,a=0,o=Object.keys(e.entities);a<o.length;a++){var i=o[a];if(!new RegExp(n.public).test(i)&&!new RegExp(n.private).test(i))throw new Error('Model names have to match "'+n.public+'" or "'+n.private+'" for private one (given name: "'+i+'").');r[i]=A(i,e.entities,t.extend)}for(var s=0,c=Object.values(r);s<c.length;s++)for(var l=c[s],p=0,d=Object.entries(l);p<d.length;p++){var f=d[p],y=f[0],b=f[1];if(y===t.attachment)for(var m=b,v=0,h=Object.entries(m);v<h.length;v++){var x=h[v],g=x[0],w=x[1];m[g]=(0,u.extend)(!0,(0,u.copy)(e.property.defaultSpecification),w)}else[t.allowedRole,t.constraint.execution,t.constraint.expression,t.extend,t.maximumAggregatedSize,t.minimumAggregatedSize,t.oldType].includes(y)||(l[y]=(0,u.extend)(!0,(0,u.copy)(e.property.defaultSpecification),b))}return r},I=function(e){if(Array.isArray(e))return{read:e,write:e};if("object"==typeof e){for(var t={read:[],write:[]},r=0,n=Object.keys(t);r<n.length;r++){var a=n[r];Object.prototype.hasOwnProperty.call(e,a)&&(Array.isArray(e[a])?t[a]=e[a]:t[a]=[e[a]])}return t}return{read:[e],write:[e]}};module.exports=n})();