couchdb-web-node-plugin 1.0.518 → 1.0.519

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.
@@ -0,0 +1,52 @@
1
+ import { AllowedModelRolesMapping, BaseModelConfiguration, Document, Models, PartialFullDocument, SecuritySettings, UserContext } from './type';
2
+ /**
3
+ * A dumm plugin interface with all available hooks.
4
+ */
5
+ export declare class DatabaseHelper {
6
+ /**
7
+ * Authenticates given document update against given mapping of allowed
8
+ * roles for writing into corresponding model instances.
9
+ * @param this - Indicates an unbound method.
10
+ *
11
+ * @param newDocument - Updated document.
12
+ * @param oldDocument - If an existing document should be updated its given
13
+ * here.
14
+ *
15
+ * @param userContext - Contains meta information about currently acting
16
+ * user.
17
+ * @param _securitySettings - Database security settings.
18
+ * @param allowedModelRolesMapping - Allowed roles for given models.
19
+ *
20
+ * @param idPropertyName - Property name indicating the id field name.
21
+ * @param typePropertyName - Property name indicating to which model a
22
+ * document belongs to.
23
+ * @param designDocumentNamePrefix - Document name prefix indicating a
24
+ * design document.
25
+ *
26
+ * @param read - Indicates whether a read or write of given document should
27
+ * be authorized or not.
28
+ *
29
+ * @returns Throws an exception if authorisation is not accepted and "true"
30
+ * otherwise.
31
+ */
32
+ static authenticate(this: void, newDocument: Partial<Document>, oldDocument?: null | Partial<Document>, userContext?: Partial<UserContext>, _securitySettings?: Partial<SecuritySettings>, allowedModelRolesMapping?: AllowedModelRolesMapping, idPropertyName?: string, typePropertyName?: string, designDocumentNamePrefix?: string, read?: boolean): true;
33
+ /**
34
+ * Represents a design document validation function for given model
35
+ * specification.
36
+ * @param this - Indicates an unbound method.
37
+ *
38
+ * @param newDocument - Updated document.
39
+ * @param oldDocument - If an existing document should be updated its given
40
+ * here.
41
+ * @param userContext - Contains meta information about currently acting
42
+ * user.
43
+ * @param securitySettings - Database security settings.
44
+ * @param modelConfiguration - Model configuration object.
45
+ * @param models - Models specification object.
46
+ * @param toJSON - JSON stringifier.
47
+ *
48
+ * @returns Modified given new document.
49
+ */
50
+ static validateDocumentUpdate(this: void, newDocument: PartialFullDocument, oldDocument: PartialFullDocument | null, userContext: Partial<UserContext>, securitySettings: Partial<SecuritySettings>, modelConfiguration: BaseModelConfiguration, models?: Models, toJSON?: (_value: unknown) => string): PartialFullDocument;
51
+ }
52
+ export default DatabaseHelper;
package/databaseHelper.js CHANGED
@@ -1 +1 @@
1
- (()=>{var e=[(e,t,r)=>{var o=r(1),n=r(2);function a(t,r,i){return n()?(e.exports=a=Reflect.construct,e.exports.__esModule=!0,e.exports.default=e.exports):(e.exports=a=function(e,t,r){var n=[null];n.push.apply(n,t);var a=new(Function.bind.apply(e,n));return r&&o(a,r.prototype),a},e.exports.__esModule=!0,e.exports.default=e.exports),a.apply(null,arguments)}e.exports=a,e.exports.__esModule=!0,e.exports.default=e.exports},e=>{function t(r,o){return e.exports=t=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r,o)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},e=>{e.exports=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}},e.exports.__esModule=!0,e.exports.default=e.exports}],t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}};return e[o](a,a.exports,r),a.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 o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},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 o={};(()=>{"use strict";r.r(o),r.d(o,{DatabaseHelper:()=>i,default:()=>l});var e=r(0),t=r.n(e);function n(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 a(e,t);var r=Object.prototype.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)?a(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}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 a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,o=Array(t);r<t;r++)o[r]=e[r];return o}var i=function(){function e(){}return e.authenticate=function(e,t,r,o,a,i,l,p,c){var s;void 0===t&&(t=null),void 0===r&&(r={db:"dummy",name:'"unknown"',roles:[]}),void 0===o&&(o={admins:{names:[],roles:[]},members:{names:[],roles:[]}}),void 0===i&&(i="_id"),void 0===l&&(l="-type"),void 0===p&&(p="_design/"),void 0===c&&(c=!1);var u=null!==(s=e[l])&&void 0!==s?s:t&&t[l];if(!u)return!0;var y=c?"read":"write",m={properties:{},read:["_admin","readonlyadmin"],write:["_admin"]};Object.prototype.hasOwnProperty.call(e,i)&&e[i].startsWith(p)&&m.read.push("readonlymember");var d="Current user doesn't own any role";if(r)if("name"in r||(r.name='"unknown"'),r.roles.length){if(a&&u&&Object.prototype.hasOwnProperty.call(a,u)){for(var f,h,g=a[u],v=n(["read","write"]);!(f=v()).done;)m[h=f.value]=m[h].concat(g[h]||[]);g.properties&&(m.properties=g.properties)}for(var O,b,w=m[y],P=n(r.roles);!(O=P()).done;)if(b=O.value,w.includes(b))return!0;d='Current user "'+r.name+'" owns the following roles: "'+r.roles.join('", "')+'"'}else d='Current user "'+r.name+"\" doesn't own any role";throw{unauthorized:"Only users with a least on of these roles are allowed to perform requested "+y+' action: "'+m[y].join('", "')+'". '+d+"."}},e.validateDocumentUpdate=function(e,r,o,a,i,l,p){void 0===l&&(l={});var c=function(e,t,r){var o;void 0===t&&(t="forbidden"),void 0===r&&(r={});var n=((o={})[t]=e,o.message=e,o.name=t,o);for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(n[a]=r[a]);throw n},s=new Date,u=Date.UTC(s.getUTCFullYear(),s.getUTCMonth(),s.getUTCDate(),s.getUTCHours(),s.getUTCMinutes(),s.getUTCSeconds(),s.getUTCMilliseconds())/1e3,y=!i.dateTimeFormat.startsWith("iso"),m=i.property.name.special,d=m.id,f=m.revision,h=m.type;r&&r[h]&&!e[h]&&(e[h]=r[h]);var g="",v="",O=function(){g=Object.prototype.hasOwnProperty.call(e,d)?e[d]:"",v=Object.prototype.hasOwnProperty.call(e,f)?e[f]:""};if(O(),Object.prototype.hasOwnProperty.call(a,i.property.name.validatedDocumentsCache)&&a[i.property.name.validatedDocumentsCache].has(g+"-"+v))return a[i.property.name.validatedDocumentsCache].delete(g+"-"+v),e;["latest","upsert"].includes(v)&&(r&&Object.prototype.hasOwnProperty.call(r,f)?v=e[f]=r[f]:"latest"===v?c("Revision: No old document available to update."):delete e[f]);var b,w=i.updateStrategy;Object.prototype.hasOwnProperty.call(e,m.strategy)&&(w=e[m.strategy],delete e[m.strategy]),p?b=p:JSON&&Object.prototype.hasOwnProperty.call(JSON,"stringify")?b=function(e){return JSON.stringify(e,null,4)}:c('Needed "serializer" is not available.');var P=function(e){return e instanceof Error?""+e:b(e)},j={};if("migrate"===w)for(var x in l)if(Object.prototype.hasOwnProperty.call(l,x)&&Object.prototype.hasOwnProperty.call(l[x],m.oldType)&&![null,void 0].includes(l[x][m.oldType]))for(var N,A,C=n([].concat(l[x][m.oldType]));!(N=C()).done;)A=N.value,j[A]=x;var S=function(e){return"string"==typeof e?e.trim():""},T=function(e){if(y)null!==e&&"number"!=typeof e&&(e=new Date(e),e=Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds())/1e3);else if(null!==e){e=new Date("number"!=typeof e||isNaN(e)?e:1e3*e);try{e=e.toISOString()}catch(e){}}return e},E=function(e,t,r){if(r.fileName){if(r.fileName.value)return r.fileName.value===t;if(r.fileName.regularExpressionPattern)return new RegExp(r.fileName.regularExpressionPattern).test(t)}return e===t},k=function(t,r){if(r||(r=e[m.attachment]),t){for(var o in r)if(Object.prototype.hasOwnProperty.call(r,o)&&o.startsWith(t))return o}else{var n=Object.keys(r);if(n.length)return n[0]}return null},D=function(t){if(Object.prototype.hasOwnProperty.call(e,m.attachment)){var r=e[m.attachment],o=k(t);if(o)return Object.prototype.hasOwnProperty.call(r[o],"stub")&&r[o].stub||Object.prototype.hasOwnProperty.call(r[o],"data")&&![null,void 0].includes(r[o].data)}return!1},M=function(e,r,n){void 0===r&&(r=!1),void 0===n&&(n={});var p=S(e);if(p){var y=(r?"return ":"")+p,g={attachmentWithPrefixExists:D,checkDocument:_,code:y,getFileNameByPrefix:k,idName:d,modelConfiguration:i,models:l,now:s,nowUTCTimestamp:u,revisionName:f,securitySettings:a,serialize:P,specialNames:m,typeName:h,userContext:o};for(var v in n)Object.prototype.hasOwnProperty.call(n,v)&&(g[v]=n[v]);var O,b=Object.keys(g);try{O=t()(Function,b.concat([y]))}catch(e){c(P(e),"compilation",{code:y,error:e,scope:g})}var w={code:y,result:void 0,scope:g};try{w.result=O.apply(void 0,b.map((function(e){return g[e]})))}catch(e){c(P(e),"runtime",{code:y,error:e,scope:g})}return w}c("No expression to evaluate provided.","empty")},_=function(e,r,o){void 0===o&&(o=[]);var a=o.length?" in "+o.join(" -> "):"",p=[],s=function(){Object.prototype.hasOwnProperty.call(e,h)||(r&&Object.prototype.hasOwnProperty.call(r,h)&&["fillUp","migrate"].includes(w)?e[h]=r[h]:c('Type: You have to specify a model type via property "'+h+'"'+a+".")),o.length||new RegExp(i.property.name.typeRegularExpressionPattern.public).test(e[h])||c('TypeName: You have to specify a model type which matches "'+i.property.name.typeRegularExpressionPattern.public+'" as public type (given "'+e[h]+'")'+a+"."),Object.prototype.hasOwnProperty.call(l,e[h])||(Object.prototype.hasOwnProperty.call(j,e[h])?e[h]=j[e[h]]:c('Model: Given model "'+e[h]+'" is not specified'+a+"."))};s();var u=e[h],v=l[u],b=null;Object.prototype.hasOwnProperty.call(v,m.additional)&&v[m.additional]&&(b=v[m.additional]);var x=function(i,l,p,s,y){void 0===y&&(y=["constraintExecution","constraintExpression"]);for(var m,d,f=n(y);!(m=f()).done;)if(d=m.value,Object.prototype.hasOwnProperty.call(p,d)){var h,g=void 0;try{g=M(p[d].evaluation,d.endsWith("Expression"),{checkPropertyContent:N,code:p[d].evaluation,model:v,modelName:u,name:l,newDocument:e,newValue:i,oldDocument:r,oldValue:s,parentNames:o,pathDescription:a,propertySpecification:p,type:d})}catch(e){if(function(e){return Object.prototype.hasOwnProperty.call(e,"compilation")}(e)&&c('Compilation: Hook "'+d+'" has invalid code "'+e.code+'": "'+e.message+'"'+a+"."),function(e){return Object.prototype.hasOwnProperty.call(e,"runtime")}(e)&&c('Runtime: Hook "'+d+'" has throw an error with code "'+e.code+'": "'+e.message+'"'+a+"."),!Object.prototype.hasOwnProperty.call(e,"empty"))throw e}if(null==(h=g)||!h.result){var O=S(p[d].description);c(d.charAt(0).toUpperCase()+(d.substring(1)+": ")+(O?t()(Function,Object.keys(g.scope).concat(["return "+O])).apply(void 0,Object.values(g.scope)):'Property "'+l+'" should satisfy constraint "'+g.code+'" (given "'+P(i)+'")'+a+"."))}}},N=function(e,t,r,i){void 0===i&&(i=null);var p=[],s=[].concat(r.type?r.type:[]);"object"==typeof e&&Object.getPrototypeOf(e)===Object.prototype&&!Object.prototype.hasOwnProperty.call(e,h)&&1===s.length&&Object.prototype.hasOwnProperty.call(l,s[0])&&(e[h]=s[0]);for(var u,m,f=!1,g=n(s);!(u=g()).done;)if(m=u.value,Object.prototype.hasOwnProperty.call(l,m)){if("object"==typeof e&&Object.getPrototypeOf(e)===Object.prototype&&Object.prototype.hasOwnProperty.call(e,h)&&e[h]!==m&&"migrate"===w&&1===s.length&&(e[h]=m,p=o.concat(t,"migrate nested object type")),"object"==typeof e&&Object.getPrototypeOf(e)===Object.prototype&&Object.prototype.hasOwnProperty.call(e,h)&&e[h]===m){var v=_(e,i,o.concat(t));if(v.changedPath.length&&(p=v.changedPath),e=v.newDocument,P(e)===P({}))return{newValue:null,changedPath:p};f=!0;break}1===s.length&&c('NestedType: Under key "'+t+'" isn\'t of type "'+m+'" (given "'+P(e)+'" of type '+typeof e+")"+a+".")}else if("DateTime"===m){var O=e;if(e=T(e),!(y&&("number"!=typeof e||isNaN(e))||!y&&"string"!=typeof e)){f=!0;break}1===s.length&&c('PropertyType: Property "'+t+'" isn\'t of (valid) type "DateTime" (given "'+P(O).replace(/^"/,"").replace(/"$/,"")+'" of type "'+typeof O+'")'+a+".")}else if(["boolean","integer","number","string"].includes(m)){if(!("number"==typeof e&&isNaN(e)||"integer"!==m&&typeof e!==m||"integer"===m&&parseInt(e,10)!==e)){f=!0;break}1===s.length&&c('PropertyType: Property "'+t+'" isn\'t of (valid) type "${type}" (given "'+P(e)+'" of type "'+typeof e+'")'+a+".")}else if("string"==typeof m&&m.startsWith("foreignKey:")){var b=l[m.substring(11)][d].type;if(b===typeof e){f=!0;break}1===s.length&&c('PropertyType: Foreign key property "'+t+'" isn\'t of type "'+b+'" (given "'+P(e)+'" of type "'+typeof e+'")'+a+".")}else{if("any"===m||P(e)===P(m)){f=!0;break}1===s.length&&c('PropertyType: Property "'+t+'" isn\'t value "'+m+'" (given "'+P(e).replace(/^"/,"").replace(/"$/,"")+'" of type "'+typeof e+'")'+a+".")}if(f||c('PropertyType: None of the specified types "'+s.join('", "')+'" for property "'+t+'" matches value "'+P(e).replace(/^"/,"").replace(/"$/,"")+e+'" of type "'+typeof e+'")'+a+"."),"string"==typeof e&&(![null,void 0].includes(r.minimumLength)&&e.length<r.minimumLength&&c('MinimalLength: Property "'+t+'" must have minimal length '+r.minimumLength+" (given "+e+" with length i"+e.length+") "+a+"."),![null,void 0].includes(r.maximumLength)&&e.length>r.maximumLength&&c('MaximalLength: Property "'+t+'" must have maximal length '+r.maximumLength+" (given "+e+" with length "+e.length+")"+a+".")),"number"==typeof e&&(![null,void 0].includes(r.minimum)&&e<r.minimum&&c('Minimum: Property "'+t+'" (type '+r.type+") must satisfy a minimum of "+r.minimum+" (given "+e+" is too low)"+a+"."),![null,void 0].includes(r.maximum)&&e>r.maximum&&c('Maximum: Property "'+t+'" (type '+r.type+") must satisfy a maximum of "+r.maximum+" (given "+e+" is too high)"+a+".")),r.selection){var j=Array.isArray(r.selection)?r.selection.map((function(e){return void 0===(null==e?void 0:e.value)?e:e.value})):Object.keys(r.selection);"DateTime"===r.type&&(j=j.map(T)),j.includes(e)||c('Selection: Property "'+t+'" (type '+r.type+') should be one of "'+j.join('", "')+'". But is "'+e+'"'+a+".")}return[null,void 0].includes(r.regularExpressionPattern)||new RegExp(r.regularExpressionPattern).test(e)?![null,void 0].includes(r.invertedRegularExpressionPattern)&&new RegExp(r.invertedRegularExpressionPattern).test(e)&&c('InvertedPatternMatch: Property "'+t+'" should not match regular expression pattern '+r.invertedRegularExpressionPattern+' (given "'+e+'")'+a+"."):c('PatternMatch: Property "'+t+'" should match regular expression pattern '+r.regularExpressionPattern+' (given "'+e+'")'+a+"."),x(e,t,r,i),P(e)!==P(i)&&(p=o.concat(t,"value updated")),{newValue:e,changedPath:p}},A=function(e,t,r,o){if(!r)for(var i,l,p=n(["onCreateExecution","onCreateExpression"]);!(i=p()).done;)if(l=i.value,Object.prototype.hasOwnProperty.call(e,l)){var s=void 0;try{s=M(e[l],l.endsWith("Expression"),{checkPropertyContent:N,code:e[l],model:v,modelName:u,name:o,newDocument:t,oldDocument:r,propertySpecification:e,type:l})}catch(e){if(function(e){return Object.prototype.hasOwnProperty.call(e,"compilation")}(e)&&c('Compilation: Hook "'+l+'" has invalid code "'+e.code+'" for property "'+o+'": '+e.message+a+"."),function(e){return Object.prototype.hasOwnProperty.call(e,"runtime")}(e)&&c('Runtime: Hook "'+l+'" has throw an error with code "'+e.code+'" for property "'+o+'": '+e.message+a+"."),!Object.prototype.hasOwnProperty.call(e,"empty"))throw e}s&&![null,void 0].includes(s.result)&&(t[o]=s.result)}},C=function(e,t,r,i){if(Object.prototype.hasOwnProperty.call(t,i)){e.trim&&"string"==typeof t[i]&&(t[i]=t[i].trim()),e.emptyEqualsToNull&&(""===t[i]||Array.isArray(t[i])&&0===t[i].length||null!==t[i]&&"object"==typeof t[i]&&0===Object.keys(t).length)&&(t[i]=null);for(var l,p,s=n(["onUpdateExecution","onUpdateExpression"]);!(l=s()).done;)if(p=l.value,Object.prototype.hasOwnProperty.call(e,p))try{t[i]=M(e[p],p.endsWith("Expression"),{checkPropertyContent:N,code:e[p],modelName:u,name:i,newDocument:t,oldDocument:r,parentNames:o,pathDescription:a,propertySpecification:e,type:p}).result}catch(e){if(function(e){return Object.prototype.hasOwnProperty.call(e,"compilation")}(e)&&c('Compilation: Hook "'+p+'" has invalid code "'+e.code+'" for property "'+i+'": '+e.message+a+"."),function(e){return Object.prototype.hasOwnProperty.call(e,"runtime")}(e)&&c('Runtime: Hook "'+p+'" has throw an error with code "'+e.code+'" for property "'+i+'": '+e.message+a+"."),!Object.prototype.hasOwnProperty.call(e,"empty"))throw e}}},k=Object.keys(v).filter((function(e){return![m.additional,m.allowedRole,m.constraint.execution,m.constraint.expression,m.create.execution,m.create.expression,m.extend,m.maximumAggregatedSize,m.minimumAggregatedSize,m.oldType,m.update.execution,m.update.expression].includes(e)}));if("migrate"===w)for(var D,z,R=n(k);!(D=R()).done;)if(z=D.value,![null,void 0].includes(v[z].oldName))for(var U,H,L=n([].concat(v[z].oldName));!(U=L()).done;)H=U.value,Object.prototype.hasOwnProperty.call(e,H)&&(e[z]=e[H],delete e[H]);if(!r)for(var I,W=0,F=[m.create.execution,m.create.expression];W<F.length;W++)if(I=F[W],Object.prototype.hasOwnProperty.call(v,I)){var B=void 0;try{B=M(v[I],I.endsWith("Expression"),{checkPropertyContent:N,code:v[I],id:g,model:v,modelName:u,newDocument:e,oldDocument:r,parentNames:o,pathDescription:a,type:I}).result}catch(e){if(function(e){return Object.prototype.hasOwnProperty.call(e,"compilation")}(e)&&c('Compilation: Hook "'+I+'" has invalid code "'+e.code+'" for document "'+u+'": '+e.message+a+"."),function(e){return Object.prototype.hasOwnProperty.call(e,"runtime")}(e)&&c('Runtime: Hook "'+I+'" has throw an error with code "'+e.code+'" for document "'+u+'": '+e.message+a+"."),!Object.prototype.hasOwnProperty.call(e,"empty"))throw e}[null,void 0].includes(B)||(e=B),s(),u=e[h],0===o.length&&O()}for(var V,$=0,q=[m.update.execution,m.update.expression];$<q.length;$++)if(V=q[$],Object.prototype.hasOwnProperty.call(v,V)){var Y=void 0;try{Y=M(v[V],V.endsWith("Expression"),{checkPropertyContent:N,code:v[V],id:g,model:v,modelName:u,newDocument:e,oldDocument:r,parentNames:o,pathDescription:a,type:V}).result}catch(e){if(function(e){return Object.prototype.hasOwnProperty.call(e,"compilation")}(e)&&c('Compilation: Hook "'+V+'" has invalid code "'+e.code+'" for document "'+u+'": '+e.message+a+"."),function(e){return Object.prototype.hasOwnProperty.call(e,"runtime")}(e)&&c('Runtime: Hook "'+V+'" has throw an error with code "'+e.code+'" for document "'+u+'": '+e.message+a+"."),!Object.prototype.hasOwnProperty.call(e,"empty"))throw e}[void 0,null].includes(Y)||(e=Y),s(),u=e[h],0===o.length&&O()}for(var J,G=function(){var t=J.value;if(m.attachment===t){var i=function(i){if(Object.prototype.hasOwnProperty.call(v[t],i)){Object.prototype.hasOwnProperty.call(e,t)&&null!==e[t]||(e[t]={}),r&&!Object.prototype.hasOwnProperty.call(r,t)&&(r[t]={});var l=Object.keys(e[t]).filter((function(r){return null!==e[t][r].data&&E(i,r,v[t][i])})),s=e[t],u=[];if(r){var y=r[t];u=Object.keys(y).filter((function(e){return!(Object.prototype.hasOwnProperty.call(s,e)&&Object.prototype.hasOwnProperty.call(s[e],"data")&&null===s[e].data)&&!!y[e]&&(Object.prototype.hasOwnProperty.call(y[e],"data")&&null!==y[e].data||y[e].stub&&!!y[e].digest)&&!!E(i,e,v[t][i])}))}for(var m,d,f=v[t][i],h=n(l);!(m=h()).done;)d=m.value,A(f,s,r&&r[t]?r[t]:null,d);for(var g,O,b=n(l);!(g=b()).done;)O=g.value,C(f,s,r&&r[t]?r[t]:null,O);if([null,void 0].includes(f.default)){if(f.nullable||0<l.length||0<u.length||c('AttachmentMissing: Missing attachment for type "'+i+'"'+a+"."),"fillUp"===w&&0===l.length&&0<u.length)for(var P,j,x=n(u);!(P=x()).done;)j=P.value,null===s[j]?p=o.concat(t,j,"file removed"):s[j]=r[t][j]}else if(0===l.length)if(0===u.length)for(var N in f.default)Object.prototype.hasOwnProperty.call(f.default,N)&&(s[N]=f.default[N],p=o.concat(t,i,"add default file"));else if("fillUp"===w)for(var S,T,k=n(u);!(S=k()).done;)T=S.value,s[T]=r[t][T]}};for(var l in v[t])i(l)}else{var s=k.includes(t)?v[t]:b;A(s,e,r,t),C(s,e,r,t),[null,void 0].includes(s.default)?(!(s.nullable||Object.prototype.hasOwnProperty.call(e,t)||r&&Object.prototype.hasOwnProperty.call(r,t)&&w)&&c('MissingProperty: Missing property "'+t+'"'+a+"."),!Object.prototype.hasOwnProperty.call(e,t)&&r&&Object.prototype.hasOwnProperty.call(r,t)&&("fillUp"===w?e[t]=r[t]:!w&&(p=o.concat(t,"property removed")))):(!Object.prototype.hasOwnProperty.call(e,t)||null===e[t])&&(r&&Object.prototype.hasOwnProperty.call(r,t)?"fillUp"===w?e[t]=r[t]:"migrate"===w&&(e[t]=s.default,p=o.concat(t,"migrate default value")):(e[t]=s.default,p=p.concat(t,"add default value")))}},K=n(k.concat(b?Object.keys(e).filter((function(e){return!k.includes(e)})):[]));!(J=K()).done;)G();if(r&&"incremental"===w)for(var Z in e)if(Object.prototype.hasOwnProperty.call(e,Z)&&Object.prototype.hasOwnProperty.call(r,Z)&&!i.property.name.reserved.concat(d,f,m.conflict,m.deleted,m.deletedConflict,m.localSequence,m.revisions,m.revisionsInformation,h).includes(Z)&&(r[Z]===e[Z]||P(r[Z])===P(e[Z]))){delete e[Z];continue}for(var Q in e)if(Object.prototype.hasOwnProperty.call(e,Q)&&!i.property.name.reserved.concat(f,m.conflict,m.deleted,m.deletedConflict,m.localSequence,m.revisions,m.revisionsInformation,m.strategy).includes(Q)){var X=void 0;if(Object.prototype.hasOwnProperty.call(v,Q))X=v[Q];else if(b)X=b;else{if("migrate"===w){delete e[Q],p=o.concat(Q,"migrate removed property");continue}c('Property: Given property "'+Q+'" isn\'t specified in model "'+u+'"'+a+".")}if(!X)continue;var ee=function(e,t,r,n){if(!e.writable)if(r){if(Object.prototype.hasOwnProperty.call(r,n)&&P(t[n])===P(r[n]))return n!==d&&"incremental"===w&&delete t[n],!0;c('Readonly: Property "'+n+'" is not writable (old document "'+P(r)+'")'+a+".")}else c('Readonly: Property "'+n+'" is not writable'+a+".");if(!e.mutable&&r&&Object.prototype.hasOwnProperty.call(r,n)){if(P(t[n])===P(r[n]))return"incremental"!==w||i.property.name.reserved.concat(m.deleted,d,f).includes(n)||delete t[n],!0;"migrate"!==w&&c('Immutable: Property "'+n+'" is not writable (old document "'+P(r)+'")'+a+".")}if(null===t[n]){if(e.nullable)return delete t[n],r&&Object.prototype.hasOwnProperty.call(r,n)&&(p=o.concat(n,"delete property")),!0;c('NotNull: Property "'+n+'" should not by "null"'+a+".")}return!1};if(m.attachment===Q){var te=e[Q];for(var re in te)if(Object.prototype.hasOwnProperty.call(te,re))for(var oe in v[Q])if(E(oe,re,v[Q][oe])){ee(v[Q][oe],e,r,re);break}continue}if(ee(X,e,r,Q))continue;if("string"==typeof X.type&&X.type.endsWith("[]")||Array.isArray(X.type)&&X.type.length&&Array.isArray(X.type[0])){var ne,ae=e[Q];Array.isArray(ae)?![null,void 0].includes(X.minimumNumber)&&ae.length<X.minimumNumber?c('MinimumArrayLength: Property "'+Q+'" (array of length '+ae.length+") doesn't fullfill minimum array length of "+X.minimumNumber+a+"."):![null,void 0].includes(X.maximumNumber)&&X.maximumNumber<ae.length&&c('MaximumArrayLength: Property "'+Q+'" (array of length '+ae.length+") doesn't fullfill maximum array length of "+X.maximumNumber+a+"."):c('PropertyType: Property "'+Q+'" isn\'t of type "array -> '+X.type+'" (given "'+P(ae)+'")'+a+"."),x(ae,Q,X,r&&Object.prototype.hasOwnProperty.call(r,Q)&&r[Q]||void 0,["arrayConstraintExecution","arrayConstraintExpression"]);var ie={};for(var le in X)Object.prototype.hasOwnProperty.call(X,le)&&(ie[le]="type"===le?Array.isArray(X[le])?X[le][0]:[X[le].substring(0,X.type.length-2)]:X[le]);if(1===(null==(ne=ie.type)?void 0:ne.length)&&Object.prototype.hasOwnProperty.call(l,ie.type[0]))for(var pe,ce,se=n(ae.slice());!(pe=se()).done;)"object"!=typeof(ce=pe.value)||Object.getPrototypeOf(ce)!==Object.prototype||Object.prototype.hasOwnProperty.call(ce,h)||(ce[h]=ie.type[0]);for(var ue,ye,me=0,de=n(ae.slice());!(ue=de()).done;)ye=ue.value,ae[me]=N(ye,me+1+". value in "+Q,ie).newValue,null===ye&&ae.splice(me,1),me+=1;r&&Object.prototype.hasOwnProperty.call(r,Q)&&Array.isArray(r[Q])&&r[Q].length===ae.length&&P(r[Q])===P(ae)||(p=o.concat(Q,"array updated"))}else{var fe=r&&Object.prototype.hasOwnProperty.call(r,Q)?r[Q]:null,he=N(e[Q],Q,X,fe);e[Q]=he.newValue,he.changedPath.length&&(p=he.changedPath),null===e[Q]&&(null!==fe&&(p=o.concat(Q,"property removed")),delete e[Q])}}for(var ge in m.constraint)if(Object.prototype.hasOwnProperty.call(m.constraint,ge)&&(ge=m.constraint[ge])&&Object.prototype.hasOwnProperty.call(v,ge))for(var ve,Oe=n([].concat(v[ge]));!(ve=Oe()).done;){var be,we=ve.value,Pe=void 0;try{Pe=M(we.evaluation,ge===m.constraint.expression,{checkPropertyContent:N,code:we.evaluation,model:v,modelName:u,newDocument:e,oldDocument:r,parentNames:o,pathDescription:a,type:ge})}catch(e){if(function(e){return Object.prototype.hasOwnProperty.call(e,"compilation")}(e)&&c('Compilation: Hook "'+ge+'" has invalid code "'+e.code+'": "'+e.message+'"'+a+"."),function(e){return Object.prototype.hasOwnProperty.call(e,"runtime")}(e)&&c('Runtime: Hook "'+ge+'" has thrown an error with code "'+e.code+'": '+e.message+a+"."),!Object.prototype.hasOwnProperty.call(e,"empty"))throw e}if(null==(be=Pe)||!be.result){var je=ge.replace(/^[^a-zA-Z]+/,"");c(je.charAt(0).toUpperCase()+(je.substring(1)+": ")+(we.description?t()(Function,Object.keys(Pe.scope).concat(["return "+we.description.trim()])).apply(void 0,Object.values(Pe.scope)):'Model "'+u+'" should satisfy constraint "'+Pe.code+'" (given "'+P(e)+'")'+a+"."))}}if(Object.prototype.hasOwnProperty.call(e,m.attachment)){var xe=e[m.attachment];("object"!=typeof xe||Object.getPrototypeOf(xe)!==Object.prototype)&&c("AttachmentType: given attachment has invalid type"+a+".");var Ne=null;if(r&&Object.prototype.hasOwnProperty.call(r,m.attachment)&&(null!==(Ne=r[m.attachment])&&"object"==typeof Ne))for(var Ae in Ne)Object.prototype.hasOwnProperty.call(Ne,Ae)&&(Object.prototype.hasOwnProperty.call(xe,Ae)?null===xe[Ae]||null===xe[Ae].data||xe[Ae].content_type===Ne[Ae].content_type&&(xe[Ae].data===Ne[Ae].data||xe[Ae].digest===Ne[Ae].digest)?((null===xe[Ae]||null===xe[Ae].data)&&(p=o.concat(m.attachment,Ae,"attachment removed")),"incremental"===w&&delete xe[Ae]):p=o.concat(m.attachment,Ae,"attachment updated"):"fillUp"===w?xe[Ae]=Ne[Ae]:w||(p=o.concat(m.attachment,Ae,"attachment removed")));for(var Ce in xe)Object.prototype.hasOwnProperty.call(xe,Ce)&&([null,void 0].includes(xe[Ce])||null===xe[Ce].data?delete xe[Ce]:Ne&&Object.prototype.hasOwnProperty.call(Ne,Ce)&&xe[Ce].content_type===Ne[Ce].content_type&&(xe[Ce].data===Ne[Ce].data||xe[Ce].digest===Ne[Ce].digest)||(p=o.concat(m.attachment,Ce,"attachment updated")));0===Object.keys(xe).length&&delete e[m.attachment];var Se={};for(var Te in v[m.attachment])Object.prototype.hasOwnProperty.call(v[m.attachment],Te)&&(Se[Te]=[]);for(var Ee in xe)if(Object.prototype.hasOwnProperty.call(xe,Ee)){var ke=!1;for(var De in v[m.attachment])if(E(De,Ee,v[m.attachment][De])){Se[De].push(Ee),ke=!0;break}ke||c('AttachmentTypeMatch: None of the specified attachment types ("'+Object.keys(v[m.attachment]).join('", "')+'") matches given one ("'+Ee+'")'+a+".")}for(var Me=0,_e=0,ze=Object.keys(Se);_e<ze.length;_e++){var Re=ze[_e],Ue=v[m.attachment][Re];if(Object.prototype.hasOwnProperty.call(Se,Re)){var He=Se[Re].length;null!==Ue.maximumNumber&&He>Ue.maximumNumber&&c("AttachmentMaximum: given number of attachments ("+He+") doesn't satisfy specified maximum of "+Ue.maximumNumber+' from type "'+Re+'"'+a+"."),(!Ue.nullable||0!==He)&&He<Ue.minimumNumber&&c("AttachmentMinimum: given number of attachments ("+He+") doesn't satisfy specified minimum of "+Ue.minimumNumber+' from type "'+Re+'"'+a+".");for(var Le,Ie=0,We=n(Se[Re]);!(Le=We()).done;){var Fe,Be,Ve=Le.value;null!=(Fe=Ue.fileName)&&Fe.regularExpressionPattern&&!new RegExp(Ue.fileName.regularExpressionPattern).test(Ve)?c('AttachmentName: given attachment name "'+Ve+'" doesn\'t satisfy specified regular expression pattern "'+Ue.fileName.regularExpressionPattern+'" from type "'+Re+'"'+a+"."):null!=(Be=Ue.fileName)&&Be.invertedRegularExpressionPattern&&new RegExp(Ue.fileName.invertedRegularExpressionPattern).test(Ve)?c('InvertedAttachmentName: given attachment name "'+Ve+'" does satisfy specified regular expression pattern "'+Ue.fileName.invertedRegularExpressionPattern+'" from type "'+Re+'"'+a+"."):!([null,void 0].includes(Ue.contentTypeRegularExpressionPattern)||xe[Ve].content_type&&new RegExp(Ue.contentTypeRegularExpressionPattern).test(xe[Ve].content_type))&&c('AttachmentContentType: given attachment content type "'+xe[Ve].content_type+'" doesn\'t satisfy specified regular expression pattern "'+Ue.contentTypeRegularExpressionPattern+'" from type "'+Re+'"'+a+".");var $e=Ue.invertedContentTypeRegularExpressionPattern;[null,void 0].includes($e)||xe[Ve].content_type&&!new RegExp($e).test(xe[Ve].content_type)||c('InvertedAttachmentContentType: given attachment content type "'+xe[Ve].content_type+'" does satisfy specified regular expression pattern "'+$e+'" from type "'+Re+'"'+a+".");var qe=0;"length"in xe[Ve]?qe=xe[Ve].length:"data"in xe[Ve]&&(qe=Buffer&&"byteLength"in Buffer?Buffer.byteLength(xe[Ve].data,"base64"):xe[Ve].data.length),![null,void 0].includes(Ue.minimumSize)&&Ue.minimumSize>qe?c("AttachmentMinimumSize: given attachment size "+qe+" byte doesn't satisfy specified minimum of "+Ue.minimumSize+" byte "+a+"."):![null,void 0].includes(Ue.maximumSize)&&Ue.maximumSize<qe&&c("AttachmentMaximumSize: given attachment size "+qe+" byte doesn't satisfy specified maximum of "+Ue.maximumSize+" byte "+a+"."),Ie+=qe}![null,void 0].includes(Ue.minimumAggregatedSize)&&Ue.minimumAggregatedSize>Ie?c('AttachmentAggregatedMinimumSize: given aggregated size of attachments from type "'+Re+'" '+Ie+" byte doesn't satisfy specified minimum of "+Ue.minimumAggregatedSize+" byte "+a+"."):![null,void 0].includes(Ue.maximumAggregatedSize)&&Ue.maximumAggregatedSize<Ie&&c('AttachmentAggregatedMaximumSize: given aggregated size of attachments from type "'+Re+'" '+Ie+" byte doesn't satisfy specified maximum of "+Ue.maximumAggregatedSize+" byte "+a+"."),Me+=Ie}}Object.prototype.hasOwnProperty.call(v,m.minimumAggregatedSize)&&![null,void 0].includes(v[m.minimumAggregatedSize])&&v[m.minimumAggregatedSize]>Me?c("AggregatedMinimumSize: given aggregated size "+Me+" byte doesn't satisfy specified minimum of "+v[m.minimumAggregatedSize]+" byte "+a+"."):![null,void 0].includes(v[m.maximumAggregatedSize])&&v[m.maximumAggregatedSize]<Me&&c("AggregatedMaximumSize: given aggregated size "+Me+" byte doesn't satisfy specified maximum of "+v[m.maximumAggregatedSize]+" byte "+a+".")}if(r&&Object.prototype.hasOwnProperty.call(r,m.attachment)&&0===Object.keys(r[m.attachment]).length&&delete r[m.attachment],0===p.length&&r&&"migrate"===w)for(var Ye in r)Object.prototype.hasOwnProperty.call(r,Ye)&&!Object.prototype.hasOwnProperty.call(e,Ye)&&(p=o.concat(Ye,"migrate removed property"));return{changedPath:p,newDocument:e}},z=_(e,r);return(!z.newDocument._deleted||r)&&(z.newDocument._deleted&&z.newDocument._deleted!==(null==r?void 0:r._deleted)||z.changedPath.length)||c("NoChange: No new data given. new document: "+P(e)+"; old document: "+P(r)+"."),Object.prototype.hasOwnProperty.call(a,i.property.name.validatedDocumentsCache)?a[i.property.name.validatedDocumentsCache].add(g+"-"+v):a[i.property.name.validatedDocumentsCache]=new Set([g+"-"+v]),z.newDocument},e}();const l=i})(),module.exports=o})();
1
+ (()=>{var e=[(e,t,r)=>{var o=r(1),n=r(3);function a(t,r,i){return n()?(e.exports=a=Reflect.construct,e.exports.__esModule=!0,e.exports.default=e.exports):(e.exports=a=function(e,t,r){var n=[null];n.push.apply(n,t);var a=new(Function.bind.apply(e,n));return r&&o(a,r.prototype),a},e.exports.__esModule=!0,e.exports.default=e.exports),a.apply(null,arguments)}e.exports=a,e.exports.__esModule=!0,e.exports.default=e.exports},e=>{function t(r,o){return e.exports=t=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r,o)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},e=>{function t(){return e.exports=t=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(e[o]=r[o])}return e},e.exports.__esModule=!0,e.exports.default=e.exports,t.apply(this,arguments)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},e=>{e.exports=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}},e.exports.__esModule=!0,e.exports.default=e.exports}],t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}};return e[o](a,a.exports,r),a.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 o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},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 o={};(()=>{"use strict";r.r(o),r.d(o,{DatabaseHelper:()=>p,default:()=>c});var e=r(0),t=r.n(e),n=r(2),a=r.n(n);function i(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 l(e,t);var r=Object.prototype.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)?l(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var o=0;return function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}}}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 l(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,o=Array(t);r<t;r++)o[r]=e[r];return o}var p=function(){function e(){}return e.authenticate=function(e,t,r,o,n,a,l,p,c){var s;void 0===t&&(t=null),void 0===r&&(r={}),void 0===o&&(o={admins:{names:[],roles:[]},members:{names:[],roles:[]}}),void 0===a&&(a="_id"),void 0===l&&(l="-type"),void 0===p&&(p="_design/"),void 0===c&&(c=!1);var u=null!==(s=e[l])&&void 0!==s?s:t&&t[l];if(!u)return!0;var y=c?"read":"write",m={properties:{},read:["_admin","readonlyadmin"],write:["_admin"]};Object.prototype.hasOwnProperty.call(e,a)&&e[a].startsWith(p)&&m.read.push("readonlymember");var d,f="Current user doesn't own any role";if(r)if("name"in r||(r.name='"unknown"'),null!=(d=r.roles)&&d.length){if(n&&u&&Object.prototype.hasOwnProperty.call(n,u)){for(var h,g,v=n[u],O=i(["read","write"]);!(h=O()).done;)m[g=h.value]=m[g].concat(v[g]||[]);m.properties=v.properties}for(var b,w,P=m[y],j=i(r.roles);!(b=j()).done;)if(w=b.value,P.includes(w))return!0;f='Current user "'+r.name+'" owns the following roles: "'+r.roles.join('", "')+'"'}else f='Current user "'+r.name+"\" doesn't own any role";throw{unauthorized:"Only users with a least on of these roles are allowed to perform requested "+y+' action: "'+[].concat(m[y]).join('", "')+'". '+f+"."}},e.validateDocumentUpdate=function(e,r,o,n,l,p,c){void 0===p&&(p={});var s=function(e,t,r){var o;void 0===t&&(t="forbidden"),void 0===r&&(r={});var n=((o={})[t]=e,o.message=e,o.name=t,o);for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(n[a]=r[a]);throw n},u=new Date,y=Date.UTC(u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate(),u.getUTCHours(),u.getUTCMinutes(),u.getUTCSeconds(),u.getUTCMilliseconds())/1e3,m=!l.dateTimeFormat.startsWith("iso"),d=l.property.name.special,f=d.id,h=d.revision,g=d.type;r&&r[g]&&!e[g]&&(e[g]=r[g]);var v="",O="",b=function(){v=Object.prototype.hasOwnProperty.call(e,f)?e[f]:"",O=Object.prototype.hasOwnProperty.call(e,h)?e[h]:""};if(b(),Object.prototype.hasOwnProperty.call(n,l.property.name.validatedDocumentsCache)&&n[l.property.name.validatedDocumentsCache].has(v+"-"+O))return n[l.property.name.validatedDocumentsCache].delete(v+"-"+O),e;["latest","upsert"].includes(O)&&(r&&Object.prototype.hasOwnProperty.call(r,h)?O=e[h]=r[h]:"latest"===O?s("Revision: No old document available to update."):delete e[h]);var w=l.updateStrategy;Object.prototype.hasOwnProperty.call(e,d.strategy)&&(w=e[d.strategy],delete e[d.strategy]);var P,j={};if("migrate"===w)for(var x in p)if(Object.prototype.hasOwnProperty.call(p,x)&&Object.prototype.hasOwnProperty.call(p[x],d.oldType)&&![null,void 0].includes(p[x][d.oldType]))for(var N,A,C=i([].concat(p[x][d.oldType]));!(N=C()).done;)A=N.value,j[A]=x;c?P=c:JSON&&Object.prototype.hasOwnProperty.call(JSON,"stringify")?P=function(e){return JSON.stringify(e,null,4)}:s('Needed "serializer" is not available.');var S=function(e){return e instanceof Error?""+e:P(e)},T=function(e){return"string"==typeof e?e.trim():""},E=function(e){if(m)null!==e&&"number"!=typeof e&&(e=new Date(e),e=Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds())/1e3);else if(null!==e){e=new Date("number"!=typeof e||isNaN(e)?e:1e3*e);try{e=e.toISOString()}catch(e){}}return e},k=function(e,t,r){if(r.fileName){if(r.fileName.value)return r.fileName.value===t;if(r.fileName.regularExpressionPattern)return new RegExp(r.fileName.regularExpressionPattern).test(t)}return e===t},D=function(t,r){if(r||(r=e[d.attachment]),t){for(var o in r)if(Object.prototype.hasOwnProperty.call(r,o)&&o.startsWith(t))return o}else{var n=Object.keys(r);if(n.length)return n[0]}return null},_=function(e,r,o){void 0===r&&(r=!1),void 0===o&&(o={});var n=T(e);if(n){var i,l=(r?"return ":"")+n,p=a()({},z,{code:l},o),c=Object.keys(p);try{i=t()(Function,c.concat([l]))}catch(e){s(S(e),"compilation",{code:l,error:e,scope:p})}var u={code:l,result:void 0,scope:p};try{u.result=i.apply(void 0,c.map((function(e){return p[e]})))}catch(e){s(S(e),"runtime",{code:l,error:e,scope:p})}return u}s("No expression to evaluate provided.","empty")},M=function(e,r,o){void 0===o&&(o=[]);var n=o.length?" in "+o.join(" -> "):"",a=[],c=function(){Object.prototype.hasOwnProperty.call(e,g)||(r&&Object.prototype.hasOwnProperty.call(r,g)&&["fillUp","migrate"].includes(w)?e[g]=r[g]:s('Type: You have to specify a model type via property "'+g+'"'+n+".")),o.length||new RegExp(l.property.name.typeRegularExpressionPattern.public).test(e[g])||s('TypeName: You have to specify a model type which matches "'+l.property.name.typeRegularExpressionPattern.public+'" as public type (given "'+e[g]+'")'+n+"."),Object.prototype.hasOwnProperty.call(p,e[g])||(Object.prototype.hasOwnProperty.call(j,e[g])?e[g]=j[e[g]]:s('Model: Given model "'+e[g]+'" is not specified'+n+"."))};c();var u=e[g],y=p[u],v=null;Object.prototype.hasOwnProperty.call(y,d.additional)&&y[d.additional]&&(v=y[d.additional]);var O=function(a,l,p,c,m){void 0===m&&(m=["constraintExecution","constraintExpression"]);for(var d,f,h=i(m);!(d=h()).done;)if(f=d.value,Object.prototype.hasOwnProperty.call(p,f)){var g,v=void 0;try{v=_(p[f].evaluation,f.endsWith("Expression"),{checkPropertyContent:P,model:y,modelName:u,name:l,type:f,newDocument:e,newValue:a,oldDocument:r,oldValue:c,parentNames:o,pathDescription:n,propertySpecification:p})}catch(e){if(function(e){return Object.prototype.hasOwnProperty.call(e,"compilation")}(e)&&s('Compilation: Hook "'+f+'" has invalid code "'+e.code+'": "'+e.message+'"'+n+"."),function(e){return Object.prototype.hasOwnProperty.call(e,"runtime")}(e)&&s('Runtime: Hook "'+f+'" has throw an error with code "'+e.code+'": "'+e.message+'"'+n+"."),!Object.prototype.hasOwnProperty.call(e,"empty"))throw e}if(null==(g=v)||!g.result){var O=T(p[f].description);s(f.charAt(0).toUpperCase()+(f.substring(1)+": ")+(O?t()(Function,Object.keys(v.scope).concat(["return "+O])).apply(void 0,Object.values(v.scope)):'Property "'+l+'" should satisfy constraint "'+v.code+'" (given "'+S(a)+'")'+n+"."))}}},P=function(e,t,r,a){void 0===a&&(a=null);var l=[],c=[].concat(r.type?r.type:[]);"object"==typeof e&&Object.getPrototypeOf(e)===Object.prototype&&!Object.prototype.hasOwnProperty.call(e,g)&&1===c.length&&Object.prototype.hasOwnProperty.call(p,c[0])&&(e[g]=c[0]);for(var u,y,d=!1,h=i(c);!(u=h()).done;)if(y=u.value,Object.prototype.hasOwnProperty.call(p,y)){if("object"==typeof e&&Object.getPrototypeOf(e)===Object.prototype&&Object.prototype.hasOwnProperty.call(e,g)&&e[g]!==y&&"migrate"===w&&1===c.length&&(e[g]=y,l=o.concat(t,"migrate nested object type")),"object"==typeof e&&Object.getPrototypeOf(e)===Object.prototype&&Object.prototype.hasOwnProperty.call(e,g)&&e[g]===y){var v=M(e,a,o.concat(t));if(v.changedPath.length&&(l=v.changedPath),e=v.newDocument,S(e)===S({}))return{newValue:null,changedPath:l};d=!0;break}1===c.length&&s('NestedType: Under key "'+t+'" isn\'t of type "'+y+'" (given "'+S(e)+'" of type '+typeof e+")"+n+".")}else if("DateTime"===y){var b=e;if(e=E(e),!(m&&("number"!=typeof e||isNaN(e))||!m&&"string"!=typeof e)){d=!0;break}1===c.length&&s('PropertyType: Property "'+t+'" isn\'t of (valid) type "DateTime" (given "'+S(b).replace(/^"/,"").replace(/"$/,"")+'" of type "'+typeof b+'")'+n+".")}else if(["boolean","integer","number","string"].includes(y)){if(!("number"==typeof e&&isNaN(e)||"integer"!==y&&typeof e!==y||"integer"===y&&parseInt(e,10)!==e)){d=!0;break}1===c.length&&s('PropertyType: Property "'+t+'" isn\'t of (valid) type "${type}" (given "'+S(e)+'" of type "'+typeof e+'")'+n+".")}else if("string"==typeof y&&y.startsWith("foreignKey:")){var P=p[y.substring(11)][f].type;if(P===typeof e){d=!0;break}1===c.length&&s('PropertyType: Foreign key property "'+t+'" isn\'t of type "'+P+'" (given "'+S(e)+'" of type "'+typeof e+'")'+n+".")}else{if("any"===y||S(e)===S(y)){d=!0;break}1===c.length&&s('PropertyType: Property "'+t+'" isn\'t value "'+y+'" (given "'+S(e).replace(/^"/,"").replace(/"$/,"")+'" of type "'+typeof e+'")'+n+".")}if(d||s('PropertyType: None of the specified types "'+c.join('", "')+'" for property "'+t+'" matches value "'+S(e).replace(/^"/,"").replace(/"$/,"")+e+'" of type "'+typeof e+'")'+n+"."),"string"==typeof e&&(![null,void 0].includes(r.minimumLength)&&e.length<r.minimumLength&&s('MinimalLength: Property "'+t+'" must have minimal length '+r.minimumLength+" (given "+e+" with length i"+e.length+") "+n+"."),![null,void 0].includes(r.maximumLength)&&e.length>r.maximumLength&&s('MaximalLength: Property "'+t+'" must have maximal length '+r.maximumLength+" (given "+e+" with length "+e.length+")"+n+".")),"number"==typeof e&&(![null,void 0].includes(r.minimum)&&e<r.minimum&&s('Minimum: Property "'+t+'" (type '+r.type+") must satisfy a minimum of "+r.minimum+" (given "+e+" is too low)"+n+"."),![null,void 0].includes(r.maximum)&&e>r.maximum&&s('Maximum: Property "'+t+'" (type '+r.type+") must satisfy a maximum of "+r.maximum+" (given "+e+" is too high)"+n+".")),r.selection){var j=Array.isArray(r.selection)?r.selection.map((function(e){return void 0===(null==e?void 0:e.value)?e:e.value})):Object.keys(r.selection);"DateTime"===r.type&&(j=j.map(E)),j.includes(e)||s('Selection: Property "'+t+'" (type '+r.type+') should be one of "'+j.join('", "')+'". But is "'+e+'"'+n+".")}return[null,void 0].includes(r.regularExpressionPattern)||new RegExp(r.regularExpressionPattern).test(e)?![null,void 0].includes(r.invertedRegularExpressionPattern)&&new RegExp(r.invertedRegularExpressionPattern).test(e)&&s('InvertedPatternMatch: Property "'+t+'" should not match regular expression pattern '+r.invertedRegularExpressionPattern+' (given "'+e+'")'+n+"."):s('PatternMatch: Property "'+t+'" should match regular expression pattern '+r.regularExpressionPattern+' (given "'+e+'")'+n+"."),O(e,t,r,a),S(e)!==S(a)&&(l=o.concat(t,"value updated")),{newValue:e,changedPath:l}},x=function(e,t,r,a){if(!r)for(var l,p,c=i(["onCreateExecution","onCreateExpression"]);!(l=c()).done;)if(p=l.value,Object.prototype.hasOwnProperty.call(e,p)){var m=void 0;try{m=_(e[p],p.endsWith("Expression"),{checkPropertyContent:P,model:y,modelName:u,name:a,type:p,newDocument:t,oldDocument:r,newValue:void 0,oldValue:void 0,parentNames:o,pathDescription:n,propertySpecification:e})}catch(e){if(function(e){return Object.prototype.hasOwnProperty.call(e,"compilation")}(e)&&s('Compilation: Hook "'+p+'" has invalid code "'+e.code+'" for property "'+a+'": '+e.message+n+"."),function(e){return Object.prototype.hasOwnProperty.call(e,"runtime")}(e)&&s('Runtime: Hook "'+p+'" has throw an error with code "'+e.code+'" for property "'+a+'": '+e.message+n+"."),!Object.prototype.hasOwnProperty.call(e,"empty"))throw e}m&&![null,void 0].includes(m.result)&&(t[a]=m.result)}},N=function(e,t,r,a){if(Object.prototype.hasOwnProperty.call(t,a)){e.trim&&"string"==typeof t[a]&&(t[a]=t[a].trim()),e.emptyEqualsToNull&&(""===t[a]||Array.isArray(t[a])&&0===t[a].length||null!==t[a]&&"object"==typeof t[a]&&0===Object.keys(t).length)&&(t[a]=null);for(var l,p,c=i(["onUpdateExecution","onUpdateExpression"]);!(l=c()).done;)if(p=l.value,Object.prototype.hasOwnProperty.call(e,p))try{t[a]=_(e[p],p.endsWith("Expression"),{checkPropertyContent:P,model:y,modelName:u,name:a,type:p,newDocument:t,oldDocument:r,newValue:t[a],oldValue:r&&r[a],parentNames:o,pathDescription:n,propertySpecification:e}).result}catch(e){if(function(e){return Object.prototype.hasOwnProperty.call(e,"compilation")}(e)&&s('Compilation: Hook "'+p+'" has invalid code "'+e.code+'" for property "'+a+'": '+e.message+n+"."),function(e){return Object.prototype.hasOwnProperty.call(e,"runtime")}(e)&&s('Runtime: Hook "'+p+'" has throw an error with code "'+e.code+'" for property "'+a+'": '+e.message+n+"."),!Object.prototype.hasOwnProperty.call(e,"empty"))throw e}}},A=Object.keys(y).filter((function(e){return![d.additional,d.allowedRoles,d.constraint.execution,d.constraint.expression,d.create.execution,d.create.expression,d.extend,d.maximumAggregatedSize,d.minimumAggregatedSize,d.oldType,d.update.execution,d.update.expression].includes(e)}));if("migrate"===w)for(var C,D,z=i(A);!(C=z()).done;)if(D=C.value,![null,void 0].includes(y[D].oldName))for(var R,U,H=i([].concat(y[D].oldName));!(R=H()).done;)U=R.value,Object.prototype.hasOwnProperty.call(e,U)&&(e[D]=e[U],delete e[U]);if(!r)for(var L,I=0,W=[d.create.execution,d.create.expression];I<W.length;I++)if(L=W[I],Object.prototype.hasOwnProperty.call(y,L)){var V=void 0;try{V=_(y[L],L.endsWith("Expression"),{checkPropertyContent:P,model:y,modelName:u,type:L,newDocument:e,oldDocument:r,parentNames:o,pathDescription:n}).result}catch(e){if(function(e){return Object.prototype.hasOwnProperty.call(e,"compilation")}(e)&&s('Compilation: Hook "'+L+'" has invalid code "'+e.code+'" for document "'+u+'": '+e.message+n+"."),function(e){return Object.prototype.hasOwnProperty.call(e,"runtime")}(e)&&s('Runtime: Hook "'+L+'" has throw an error with code "'+e.code+'" for document "'+u+'": '+e.message+n+"."),!Object.prototype.hasOwnProperty.call(e,"empty"))throw e}[null,void 0].includes(V)||(e=V),c(),u=e[g],0===o.length&&b()}for(var F,B=0,$=[d.update.execution,d.update.expression];B<$.length;B++)if(F=$[B],Object.prototype.hasOwnProperty.call(y,F)){var q=void 0;try{q=_(y[F],F.endsWith("Expression"),{checkPropertyContent:P,model:y,modelName:u,type:F,newDocument:e,oldDocument:r,parentNames:o,pathDescription:n}).result}catch(e){if(function(e){return Object.prototype.hasOwnProperty.call(e,"compilation")}(e)&&s('Compilation: Hook "'+F+'" has invalid code "'+e.code+'" for document "'+u+'": '+e.message+n+"."),function(e){return Object.prototype.hasOwnProperty.call(e,"runtime")}(e)&&s('Runtime: Hook "'+F+'" has throw an error with code "'+e.code+'" for document "'+u+'": '+e.message+n+"."),!Object.prototype.hasOwnProperty.call(e,"empty"))throw e}[void 0,null].includes(q)||(e=q),c(),u=e[g],0===o.length&&b()}for(var Y,J=function(){var t=Y.value;if(d.attachment===t){var l=function(l){if(Object.prototype.hasOwnProperty.call(y[t],l)){Object.prototype.hasOwnProperty.call(e,t)&&null!==e[t]||(e[t]={}),r&&!Object.prototype.hasOwnProperty.call(r,t)&&(r[t]={});var p=Object.keys(e[t]).filter((function(r){return null!==e[t][r].data&&k(l,r,y[t][l])})),c=e[t],u=[];if(r){var m=r[t];u=Object.keys(m).filter((function(e){return!(Object.prototype.hasOwnProperty.call(c,e)&&Object.prototype.hasOwnProperty.call(c[e],"data")&&null===c[e].data)&&!!m[e]&&(Object.prototype.hasOwnProperty.call(m[e],"data")&&null!==m[e].data||m[e].stub&&!!m[e].digest)&&!!k(l,e,y[t][l])}))}for(var d,f,h=y[t][l],g=i(p);!(d=g()).done;)f=d.value,x(h,c,r&&r[t]?r[t]:null,f);for(var v,O,b=i(p);!(v=b()).done;)O=v.value,N(h,c,r&&r[t]?r[t]:null,O);if([null,void 0].includes(h.default)){if(h.nullable||0<p.length||0<u.length||s('AttachmentMissing: Missing attachment for type "'+l+'"'+n+"."),"fillUp"===w&&0===p.length&&0<u.length)for(var P,j,A=i(u);!(P=A()).done;)j=P.value,null===c[j]?a=o.concat(t,j,"file removed"):c[j]=r[t][j]}else if(0===p.length)if(0===u.length)for(var C in h.default)Object.prototype.hasOwnProperty.call(h.default,C)&&(c[C]=h.default[C],a=o.concat(t,l,"add default file"));else if("fillUp"===w)for(var S,T,E=i(u);!(S=E()).done;)T=S.value,c[T]=r[t][T]}};for(var p in y[t])l(p)}else{var c=A.includes(t)?y[t]:v;x(c,e,r,t),N(c,e,r,t),[null,void 0].includes(c.default)?(!(c.nullable||Object.prototype.hasOwnProperty.call(e,t)||r&&Object.prototype.hasOwnProperty.call(r,t)&&w)&&s('MissingProperty: Missing property "'+t+'"'+n+"."),!Object.prototype.hasOwnProperty.call(e,t)&&r&&Object.prototype.hasOwnProperty.call(r,t)&&("fillUp"===w?e[t]=r[t]:!w&&(a=o.concat(t,"property removed")))):(!Object.prototype.hasOwnProperty.call(e,t)||null===e[t])&&(r&&Object.prototype.hasOwnProperty.call(r,t)?"fillUp"===w?e[t]=r[t]:"migrate"===w&&(e[t]=c.default,a=o.concat(t,"migrate default value")):(e[t]=c.default,a=a.concat(t,"add default value")))}},G=i(A.concat(v?Object.keys(e).filter((function(e){return!A.includes(e)})):[]));!(Y=G()).done;)J();if(r&&"incremental"===w)for(var K in e)if(Object.prototype.hasOwnProperty.call(e,K)&&Object.prototype.hasOwnProperty.call(r,K)&&!l.property.name.reserved.concat(f,h,d.conflict,d.deleted,d.deletedConflict,d.localSequence,d.revisions,d.revisionsInformation,g).includes(K)&&(r[K]===e[K]||S(r[K])===S(e[K]))){delete e[K];continue}for(var Z in e)if(Object.prototype.hasOwnProperty.call(e,Z)&&!l.property.name.reserved.concat(h,d.conflict,d.deleted,d.deletedConflict,d.localSequence,d.revisions,d.revisionsInformation,d.strategy).includes(Z)){var Q=void 0;if(Object.prototype.hasOwnProperty.call(y,Z))Q=y[Z];else if(v)Q=v;else{if("migrate"===w){delete e[Z],a=o.concat(Z,"migrate removed property");continue}s('Property: Given property "'+Z+'" isn\'t specified in model "'+u+'"'+n+".")}if(!Q)continue;var X=function(e,t,r,i){if(!e.writable)if(r){if(Object.prototype.hasOwnProperty.call(r,i)&&S(t[i])===S(r[i]))return i!==f&&"incremental"===w&&delete t[i],!0;s('Readonly: Property "'+i+'" is not writable (old document "'+S(r)+'")'+n+".")}else s('Readonly: Property "'+i+'" is not writable'+n+".");if(!e.mutable&&r&&Object.prototype.hasOwnProperty.call(r,i)){if(S(t[i])===S(r[i]))return"incremental"!==w||l.property.name.reserved.concat(d.deleted,f,h).includes(i)||delete t[i],!0;"migrate"!==w&&s('Immutable: Property "'+i+'" is not writable (old document "'+S(r)+'")'+n+".")}if(null===t[i]){if(e.nullable)return delete t[i],r&&Object.prototype.hasOwnProperty.call(r,i)&&(a=o.concat(i,"delete property")),!0;s('NotNull: Property "'+i+'" should not by "null"'+n+".")}return!1};if(d.attachment===Z){var ee=e[Z];for(var te in ee)if(Object.prototype.hasOwnProperty.call(ee,te))for(var re in y[Z])if(k(re,te,y[Z][re])){X(y[Z][re],e,r,te);break}continue}if(X(Q,e,r,Z))continue;if("string"==typeof Q.type&&Q.type.endsWith("[]")||Array.isArray(Q.type)&&Q.type.length&&Array.isArray(Q.type[0])){var oe,ne=e[Z];Array.isArray(ne)?![null,void 0].includes(Q.minimumNumber)&&ne.length<Q.minimumNumber?s('MinimumArrayLength: Property "'+Z+'" (array of length '+ne.length+") doesn't fullfill minimum array length of "+Q.minimumNumber+n+"."):![null,void 0].includes(Q.maximumNumber)&&Q.maximumNumber<ne.length&&s('MaximumArrayLength: Property "'+Z+'" (array of length '+ne.length+") doesn't fullfill maximum array length of "+Q.maximumNumber+n+"."):s('PropertyType: Property "'+Z+'" isn\'t of type "array -> '+Q.type+'" (given "'+S(ne)+'")'+n+"."),O(ne,Z,Q,r&&Object.prototype.hasOwnProperty.call(r,Z)&&r[Z]||void 0,["arrayConstraintExecution","arrayConstraintExpression"]);var ae={};for(var ie in Q)Object.prototype.hasOwnProperty.call(Q,ie)&&(ae[ie]="type"===ie?Array.isArray(Q[ie])?Q[ie][0]:[Q[ie].substring(0,Q.type.length-2)]:Q[ie]);if(1===(null==(oe=ae.type)?void 0:oe.length)&&Object.prototype.hasOwnProperty.call(p,ae.type[0]))for(var le,pe,ce=i(ne.slice());!(le=ce()).done;)"object"!=typeof(pe=le.value)||Object.getPrototypeOf(pe)!==Object.prototype||Object.prototype.hasOwnProperty.call(pe,g)||(pe[g]=ae.type[0]);for(var se,ue,ye=0,me=i(ne.slice());!(se=me()).done;)ue=se.value,ne[ye]=P(ue,ye+1+". value in "+Z,ae).newValue,null===ue&&ne.splice(ye,1),ye+=1;r&&Object.prototype.hasOwnProperty.call(r,Z)&&Array.isArray(r[Z])&&r[Z].length===ne.length&&S(r[Z])===S(ne)||(a=o.concat(Z,"array updated"))}else{var de=r&&Object.prototype.hasOwnProperty.call(r,Z)?r[Z]:null,fe=P(e[Z],Z,Q,de);e[Z]=fe.newValue,fe.changedPath.length&&(a=fe.changedPath),null===e[Z]&&(null!==de&&(a=o.concat(Z,"property removed")),delete e[Z])}}for(var he,ge=0,ve=Object.keys(d.constraint);ge<ve.length;ge++)if(he=ve[ge],(he=d.constraint[he])&&Object.prototype.hasOwnProperty.call(y,he))for(var Oe,be=i([].concat(y[he]));!(Oe=be()).done;){var we,Pe=Oe.value,je=void 0;try{je=_(Pe.evaluation,he===d.constraint.expression,{checkPropertyContent:P,model:y,modelName:u,type:he,newDocument:e,oldDocument:r,parentNames:o,pathDescription:n})}catch(e){if(function(e){return Object.prototype.hasOwnProperty.call(e,"compilation")}(e)&&s('Compilation: Hook "'+he+'" has invalid code "'+e.code+'": "'+e.message+'"'+n+"."),function(e){return Object.prototype.hasOwnProperty.call(e,"runtime")}(e)&&s('Runtime: Hook "'+he+'" has thrown an error with code "'+e.code+'": '+e.message+n+"."),!Object.prototype.hasOwnProperty.call(e,"empty"))throw e}if(null==(we=je)||!we.result){var xe=he.replace(/^[^a-zA-Z]+/,"");s(xe.charAt(0).toUpperCase()+(xe.substring(1)+": ")+(Pe.description?t()(Function,Object.keys(je.scope).concat(["return "+Pe.description.trim()])).apply(void 0,Object.values(je.scope)):'Model "'+u+'" should satisfy constraint "'+je.code+'" (given "'+S(e)+'")'+n+"."))}}if(Object.prototype.hasOwnProperty.call(e,d.attachment)){var Ne=e[d.attachment];("object"!=typeof Ne||Object.getPrototypeOf(Ne)!==Object.prototype)&&s("AttachmentType: given attachment has invalid type"+n+".");var Ae=null;if(r&&Object.prototype.hasOwnProperty.call(r,d.attachment)&&(null!==(Ae=r[d.attachment])&&"object"==typeof Ae))for(var Ce in Ae)Object.prototype.hasOwnProperty.call(Ae,Ce)&&(Object.prototype.hasOwnProperty.call(Ne,Ce)?null===Ne[Ce]||null===Ne[Ce].data||Ne[Ce].content_type===Ae[Ce].content_type&&(Ne[Ce].data===Ae[Ce].data||Ne[Ce].digest===Ae[Ce].digest)?((null===Ne[Ce]||null===Ne[Ce].data)&&(a=o.concat(d.attachment,Ce,"attachment removed")),"incremental"===w&&delete Ne[Ce]):a=o.concat(d.attachment,Ce,"attachment updated"):"fillUp"===w?Ne[Ce]=Ae[Ce]:w||(a=o.concat(d.attachment,Ce,"attachment removed")));for(var Se in Ne)Object.prototype.hasOwnProperty.call(Ne,Se)&&([null,void 0].includes(Ne[Se])||null===Ne[Se].data?delete Ne[Se]:Ae&&Object.prototype.hasOwnProperty.call(Ae,Se)&&Ne[Se].content_type===Ae[Se].content_type&&(Ne[Se].data===Ae[Se].data||Ne[Se].digest===Ae[Se].digest)||(a=o.concat(d.attachment,Se,"attachment updated")));0===Object.keys(Ne).length&&delete e[d.attachment];var Te={};for(var Ee in y[d.attachment])Object.prototype.hasOwnProperty.call(y[d.attachment],Ee)&&(Te[Ee]=[]);for(var ke in Ne)if(Object.prototype.hasOwnProperty.call(Ne,ke)){var De=!1;for(var _e in y[d.attachment])if(k(_e,ke,y[d.attachment][_e])){Te[_e].push(ke),De=!0;break}De||s('AttachmentTypeMatch: None of the specified attachment types ("'+Object.keys(y[d.attachment]).join('", "')+'") matches given one ("'+ke+'")'+n+".")}for(var Me=0,ze=0,Re=Object.keys(Te);ze<Re.length;ze++){var Ue=Re[ze],He=y[d.attachment][Ue];if(Object.prototype.hasOwnProperty.call(Te,Ue)){var Le=Te[Ue].length;null!==He.maximumNumber&&Le>He.maximumNumber&&s("AttachmentMaximum: given number of attachments ("+Le+") doesn't satisfy specified maximum of "+He.maximumNumber+' from type "'+Ue+'"'+n+"."),(!He.nullable||0!==Le)&&Le<He.minimumNumber&&s("AttachmentMinimum: given number of attachments ("+Le+") doesn't satisfy specified minimum of "+He.minimumNumber+' from type "'+Ue+'"'+n+".");for(var Ie,We=0,Ve=i(Te[Ue]);!(Ie=Ve()).done;){var Fe,Be,$e=Ie.value;null!=(Fe=He.fileName)&&Fe.regularExpressionPattern&&!new RegExp(He.fileName.regularExpressionPattern).test($e)?s('AttachmentName: given attachment name "'+$e+'" doesn\'t satisfy specified regular expression pattern "'+He.fileName.regularExpressionPattern+'" from type "'+Ue+'"'+n+"."):null!=(Be=He.fileName)&&Be.invertedRegularExpressionPattern&&new RegExp(He.fileName.invertedRegularExpressionPattern).test($e)?s('InvertedAttachmentName: given attachment name "'+$e+'" does satisfy specified regular expression pattern "'+He.fileName.invertedRegularExpressionPattern+'" from type "'+Ue+'"'+n+"."):!([null,void 0].includes(He.contentTypeRegularExpressionPattern)||Ne[$e].content_type&&new RegExp(He.contentTypeRegularExpressionPattern).test(Ne[$e].content_type))&&s('AttachmentContentType: given attachment content type "'+Ne[$e].content_type+'" doesn\'t satisfy specified regular expression pattern "'+He.contentTypeRegularExpressionPattern+'" from type "'+Ue+'"'+n+".");var qe=He.invertedContentTypeRegularExpressionPattern;[null,void 0].includes(qe)||Ne[$e].content_type&&!new RegExp(qe).test(Ne[$e].content_type)||s('InvertedAttachmentContentType: given attachment content type "'+Ne[$e].content_type+'" does satisfy specified regular expression pattern "'+qe+'" from type "'+Ue+'"'+n+".");var Ye=0;"length"in Ne[$e]?Ye=Ne[$e].length:"data"in Ne[$e]&&(Ye=Buffer&&"byteLength"in Buffer?Buffer.byteLength(Ne[$e].data,"base64"):Ne[$e].data.length),![null,void 0].includes(He.minimumSize)&&He.minimumSize>Ye?s("AttachmentMinimumSize: given attachment size "+Ye+" byte doesn't satisfy specified minimum of "+He.minimumSize+" byte "+n+"."):![null,void 0].includes(He.maximumSize)&&He.maximumSize<Ye&&s("AttachmentMaximumSize: given attachment size "+Ye+" byte doesn't satisfy specified maximum of "+He.maximumSize+" byte "+n+"."),We+=Ye}![null,void 0].includes(He.minimumAggregatedSize)&&He.minimumAggregatedSize>We?s('AttachmentAggregatedMinimumSize: given aggregated size of attachments from type "'+Ue+'" '+We+" byte doesn't satisfy specified minimum of "+He.minimumAggregatedSize+" byte "+n+"."):![null,void 0].includes(He.maximumAggregatedSize)&&He.maximumAggregatedSize<We&&s('AttachmentAggregatedMaximumSize: given aggregated size of attachments from type "'+Ue+'" '+We+" byte doesn't satisfy specified maximum of "+He.maximumAggregatedSize+" byte "+n+"."),Me+=We}}Object.prototype.hasOwnProperty.call(y,d.minimumAggregatedSize)&&![null,void 0].includes(y[d.minimumAggregatedSize])&&y[d.minimumAggregatedSize]>Me?s("AggregatedMinimumSize: given aggregated size "+Me+" byte doesn't satisfy specified minimum of "+y[d.minimumAggregatedSize]+" byte "+n+"."):![null,void 0].includes(y[d.maximumAggregatedSize])&&y[d.maximumAggregatedSize]<Me&&s("AggregatedMaximumSize: given aggregated size "+Me+" byte doesn't satisfy specified maximum of "+y[d.maximumAggregatedSize]+" byte "+n+".")}if(r&&Object.prototype.hasOwnProperty.call(r,d.attachment)&&0===Object.keys(r[d.attachment]).length&&delete r[d.attachment],0===a.length&&r&&"migrate"===w)for(var Je in r)Object.prototype.hasOwnProperty.call(r,Je)&&!Object.prototype.hasOwnProperty.call(e,Je)&&(a=o.concat(Je,"migrate removed property"));return{changedPath:a,newDocument:e}},z={attachmentWithPrefixExists:function(t){if(Object.prototype.hasOwnProperty.call(e,d.attachment)){var r=e[d.attachment],o=D(t);if(o)return Object.prototype.hasOwnProperty.call(r[o],"stub")&&r[o].stub||Object.prototype.hasOwnProperty.call(r[o],"data")&&![null,void 0].includes(r[o].data)}return!1},checkDocument:M,getFileNameByPrefix:D,serialize:S,id:v,revision:O,idName:f,revisionName:h,specialNames:d,typeName:g,modelConfiguration:l,models:p,now:u,nowUTCTimestamp:y,securitySettings:n,userContext:o},R=M(e,r);return(!R.newDocument._deleted||r)&&(R.newDocument._deleted&&R.newDocument._deleted!==(null==r?void 0:r._deleted)||R.changedPath.length)||s("NoChange: No new data given. new document: "+S(e)+"; old document: "+S(r)+"."),Object.prototype.hasOwnProperty.call(n,l.property.name.validatedDocumentsCache)?n[l.property.name.validatedDocumentsCache].add(v+"-"+O):n[l.property.name.validatedDocumentsCache]=new Set([v+"-"+O]),R.newDocument},e}();const c=p})(),module.exports=o})();
package/helper.d.ts ADDED
@@ -0,0 +1,136 @@
1
+ import { Mapping } from 'clientnode/type';
2
+ import { PluginAPI } from 'web-node';
3
+ import { Plugin } from 'web-node/type';
4
+ import { AllowedModelRolesMapping, AllowedRoles, Configuration, Connection, DatabaseConnectorConfiguration, Model, ModelConfiguration, Models, NormalizedAllowedRoles, Services, SpecialPropertyNames } from './type';
5
+ /**
6
+ * A dumm plugin interface with all available hooks.
7
+ */
8
+ export declare class Helper {
9
+ /**
10
+ * Converts internal declarative database connector configuration object
11
+ * into a database compatible one.
12
+ * @param this - Indicates an unbound method.
13
+ * @param configuration - Mutable by plugins extended configuration object.
14
+ *
15
+ * @returns Database compatible configuration object.
16
+ */
17
+ static getConnectorOptions(this: void, configuration: Configuration): DatabaseConnectorConfiguration;
18
+ /**
19
+ * Determines a representation for given plain object.
20
+ * @param this - Indicates an unbound method.
21
+ * @param object - Object to represent.
22
+ * @param maximumRepresentationTryLength - Maximum representation string to
23
+ * process.
24
+ * @param maximumRepresentationLength - Maximum length of returned
25
+ * representation.
26
+ *
27
+ * @returns Representation string.
28
+ */
29
+ static mayStripRepresentation(this: void, object: unknown, maximumRepresentationTryLength: number, maximumRepresentationLength: number): string;
30
+ /**
31
+ * Updates/creates a design document in database with a validation function
32
+ * set to given code.
33
+ * @param this -yy Indicates an unbound method.
34
+ * @param databaseConnection - Database connection to use for document
35
+ * updates.
36
+ * @param documentName - Design document name.
37
+ * @param documentData - Design document data.
38
+ * @param description - Used to produce semantic logging messages.
39
+ * @param log - Enables logging.
40
+ * @param idName - Property name for ids.
41
+ * @param designDocumentNamePrefix - Document name prefix indicating deign
42
+ * documents.
43
+ *
44
+ * @returns Promise which will be resolved after given document has updated
45
+ * successfully.
46
+ */
47
+ static ensureValidationDocumentPresence(this: void, databaseConnection: Connection, documentName: string, documentData: Mapping, description: string, log?: boolean, idName?: SpecialPropertyNames['id'], designDocumentNamePrefix?: string): Promise<void>;
48
+ /**
49
+ * Initializes a database connection instance.
50
+ * @param this - Indicates an unbound method.
51
+ * @param services - An object with stored service instances.
52
+ * @param configuration - Mutable by plugins extended configuration object.
53
+ *
54
+ * @returns Given and extended object of services.
55
+ */
56
+ static initializeConnection(this: void, services: Services, configuration: Configuration): Promise<Services>;
57
+ /**
58
+ * Starts server process.
59
+ * @param this - Indicates an unbound method.
60
+ * @param services - An object with stored service instances.
61
+ * @param configuration - Mutable by plugins extended configuration object.
62
+ *
63
+ * @returns A promise representing the server process wrapped in a promise
64
+ * which resolves after server is reachable.
65
+ */
66
+ static startServer(this: void, services: Services, configuration: Configuration): Promise<void>;
67
+ /**
68
+ * Stops open database connection if exist, stops server process, restarts
69
+ * server process and re-initializes server connection.
70
+ * @param this - Indicates an unbound method.
71
+ * @param services - An object with stored service instances.
72
+ * @param configuration - Mutable by plugins extended configuration object.
73
+ * @param plugins - Topological sorted list of plugins.
74
+ * @param pluginAPI - Plugin api reference.
75
+ *
76
+ * @returns Given object of services wrapped in a promise resolving after
77
+ * after finish.
78
+ */
79
+ static restartServer(this: void, services: Services, configuration: Configuration, plugins: Array<Plugin>, pluginAPI: typeof PluginAPI): Promise<void>;
80
+ /**
81
+ * Stops open database connection if exists and stops server process.
82
+ * @param this - Indicates an unbound method.
83
+ * @param services - An object with stored service instances.
84
+ * @param configuration - Mutable by plugins extended configuration object.
85
+ *
86
+ * @returns Given object of services wrapped in a promise resolving after
87
+ * after finish.
88
+ */
89
+ static stopServer(this: void, services: Services, configuration: Configuration): Promise<void>;
90
+ /**
91
+ * Determines a mapping of all models to roles who are allowed to edit
92
+ * corresponding model instances.
93
+ * @param this - Indicates an unbound method.
94
+ * @param modelConfiguration - Model specification object.
95
+ *
96
+ * @returns The mapping object.
97
+ */
98
+ static determineAllowedModelRolesMapping(this: void, modelConfiguration: ModelConfiguration): AllowedModelRolesMapping;
99
+ /**
100
+ * Determines all property names which are indexable in a generic manner.
101
+ * @param this - Indicates an unbound method.
102
+ * @param modelConfiguration - Model specification object.
103
+ * @param model - Model to determine property names from.
104
+ *
105
+ * @returns The mapping object.
106
+ */
107
+ static determineGenericIndexablePropertyNames(this: void, modelConfiguration: ModelConfiguration, model: Model): Array<string>;
108
+ /**
109
+ * Extend given model with all specified one.
110
+ * @param this - Indicates an unbound method.
111
+ * @param modelName - Name of model to extend.
112
+ * @param models - Pool of models to extend from.
113
+ * @param extendPropertyName - Property name which indicates model
114
+ * inheritance.
115
+ *
116
+ * @returns Given model in extended version.
117
+ */
118
+ static extendModel(this: void, modelName: string, models: Models, extendPropertyName?: string): Model;
119
+ /**
120
+ * Extend default specification with specific one.
121
+ * @param this - Indicates an unbound method.
122
+ * @param modelConfiguration - Model specification object.
123
+ *
124
+ * @returns Models with extended specific specifications.
125
+ */
126
+ static extendModels(this: void, modelConfiguration: ModelConfiguration): Models;
127
+ /**
128
+ * Convert given roles to its normalized representation.
129
+ * @param this - Indicates an unbound method.
130
+ * @param roles - Unstructured roles description.
131
+ *
132
+ * @returns Normalized roles representation.
133
+ */
134
+ static normalizeAllowedRoles(this: void, roles: AllowedRoles): NormalizedAllowedRoles;
135
+ }
136
+ export default Helper;
package/helper.js CHANGED
@@ -1 +1 @@
1
- (()=>{"use strict";var __webpack_modules__=[e=>{e.exports=require("@babel/runtime/helpers/asyncToGenerator")},e=>{e.exports=require("@babel/runtime/regenerator")},e=>{e.exports=require("clientnode")},e=>{e.exports=require("fs")},e=>{e.exports=require("path")},e=>{e.exports=require("@babel/runtime/helpers/extends")},e=>{e.exports=require("child_process")},e=>{e.exports=require("pouchdb/node_modules/node-fetch/lib/index.js")}],__webpack_module_cache__={};function __webpack_require__(e){var r=__webpack_module_cache__[e];if(void 0!==r)return r.exports;var _=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](_,_.exports,__webpack_require__),_.exports}__webpack_require__.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(r,{a:r}),r},__webpack_require__.d=(e,r)=>{for(var _ in r)__webpack_require__.o(r,_)&&!__webpack_require__.o(e,_)&&Object.defineProperty(e,_,{enumerable:!0,get:r[_]})},__webpack_require__.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};(()=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Helper:()=>Helper,default:()=>__WEBPACK_DEFAULT_EXPORT__});var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5),_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__),_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(0),_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default=__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__),_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(1),_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__),child_process__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(6),child_process__WEBPACK_IMPORTED_MODULE_3___default=__webpack_require__.n(child_process__WEBPACK_IMPORTED_MODULE_3__),clientnode__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(2),clientnode__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(clientnode__WEBPACK_IMPORTED_MODULE_4__),node_fetch__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(7),node_fetch__WEBPACK_IMPORTED_MODULE_5___default=__webpack_require__.n(node_fetch__WEBPACK_IMPORTED_MODULE_5__),fs__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(3),fs__WEBPACK_IMPORTED_MODULE_6___default=__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_6__),path__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(4),path__WEBPACK_IMPORTED_MODULE_7___default=__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_7__);function _createForOfIteratorHelperLoose(e,r){var _="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(_)return(_=_.call(e)).next.bind(_);if(Array.isArray(e)||(_=_unsupportedIterableToArray(e))||r&&e&&"number"==typeof e.length){_&&(e=_);var t=0;return function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}}}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 _unsupportedIterableToArray(e,r){if(e){if("string"==typeof e)return _arrayLikeToArray(e,r);var _=Object.prototype.toString.call(e).slice(8,-1);return"Object"===_&&e.constructor&&(_=e.constructor.name),"Map"===_||"Set"===_?Array.from(e):"Arguments"===_||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(_)?_arrayLikeToArray(e,r):void 0}}function _arrayLikeToArray(e,r){(null==r||r>e.length)&&(r=e.length);for(var _=0,t=Array(r);_<r;_++)t[_]=e[_];return t}clientnode__WEBPACK_IMPORTED_MODULE_4__.globalContext.fetch=node_fetch__WEBPACK_IMPORTED_MODULE_5___default();var Helper=function(){function Helper(){}return Helper.getConnectorOptions=function(e){return e.couchdb.connector.fetch?{fetch:function(r,_){return clientnode__WEBPACK_IMPORTED_MODULE_4__.globalContext.fetch(r,clientnode__WEBPACK_IMPORTED_MODULE_4___default().extend(!0,clientnode__WEBPACK_IMPORTED_MODULE_4___default().copy(e.couchdb.connector.fetch),_||{}))}}:{fetch:function(e,r){return clientnode__WEBPACK_IMPORTED_MODULE_4__.globalContext.fetch(e,r)}}},Helper.mayStripRepresentation=function(e,r,_){var t=clientnode__WEBPACK_IMPORTED_MODULE_4___default().represent(e);return t.length<=r?t.length>_?t.substring(0,_-3)+"...":t:"DOCUMENT IS TOO BIG TO REPRESENT"},Helper.ensureValidationDocumentPresence=function(){var e=_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().mark((function e(r,_,t,n,o,a,c){var i,l,s;return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===o&&(o=!0),void 0===a&&(a="_id"),void 0===c&&(c="_design/"),l=_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()(((i={})[a]=""+c+_,i.language="javascript",i),t),e.prev=4,e.next=7,r.get(""+c+_);case 7:return s=e.sent,l._rev=s._rev,e.next=11,r.put(l);case 11:case 20:e.next=26;break;case 14:return e.prev=14,e.t0=e.catch(4),o&&e.t0.error,e.prev=17,e.next=20,r.put(l);case 23:throw e.prev=23,e.t1=e.catch(17),new Error(n+" couldn't be installed/updated: \""+clientnode__WEBPACK_IMPORTED_MODULE_4___default().represent(e.t1)+'".');case 26:case"end":return e.stop()}}),e,null,[[4,14],[17,23]])})));return function(){return e.apply(this,arguments)}}(),Helper.initializeConnection=function(){var e=_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().mark((function e(r,_){var t,n,o,a,c,i;return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(t=clientnode__WEBPACK_IMPORTED_MODULE_4___default().stringFormat(_.couchdb.url,_.couchdb.user.name+":"+_.couchdb.user.password+"@")+"/"+_.couchdb.databaseName,r.couchdb.connection=new r.couchdb.connector(t,Helper.getConnectorOptions(_)),r.couchdb.connection.setMaxListeners(1/0),n=_.couchdb.model.property.name.special.id,o=_.couchdb.model.property.name.special.revision,a=function(){var e=i.value,t=r.couchdb.connection[e].bind(r.couchdb.connection);r.couchdb.connection[e]=_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().mark((function e(r){var a,c,i,l,s,u=arguments;return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(e.prev=0,a=u.length,c=Array(1<a?a-1:0),i=1;i<a;i++)c[i-1]=u[i];return e.next=4,t.apply(void 0,[r].concat(c));case 4:return e.abrupt("return",e.sent);case 7:if(e.prev=7,e.t0=e.catch(0),!(n in r&&_.couchdb.ignoreNoChangeError&&"forbidden"===e.t0.name&&null!=(l=e.t0.message)&&l.startsWith("NoChange:"))){e.next=21;break}if(s={id:r[n],ok:!0},!(o in r)||["latest","upsert"].includes(r[o])){e.next=15;break}e.t1=r[o],e.next=19;break;case 15:return e.next=17,this.get(s.id);case 17:e.t2=o,e.t1=e.sent[e.t2];case 19:return s.rev=e.t1,e.abrupt("return",s);case 21:throw e.t0;case 22:case"end":return e.stop()}}),e,this,[[0,7]])})))},c=_createForOfIteratorHelperLoose(["post","put"]);!(i=c()).done;)a();return e.prev=7,e.next=10,clientnode__WEBPACK_IMPORTED_MODULE_4___default().checkReachability(t);case 10:e.next=17;break;case 12:return e.prev=12,e.t0=e.catch(7),e.next=17,clientnode__WEBPACK_IMPORTED_MODULE_4__.globalContext.fetch(t,{method:"PUT"});case 17:return e.abrupt("return",r);case 18:case"end":return e.stop()}}),e,null,[[7,12]])})));return function(){return e.apply(this,arguments)}}(),Helper.startServer=function(){function startServer(){return _startServer.apply(this,arguments)}var _startServer=_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().mark((function _callee4(services,configuration){var _this=this;return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().wrap((function(_context4){for(;;)switch(_context4.prev=_context4.next){case 0:if(!Object.prototype.hasOwnProperty.call(services.couchdb.server.runner,"configurationFile")){_context4.next=12;break}return _context4.prev=1,_context4.next=4,fs__WEBPACK_IMPORTED_MODULE_6__.promises.mkdir(path__WEBPACK_IMPORTED_MODULE_7___default().dirname(services.couchdb.server.runner.configurationFile.path),{recursive:!0});case 4:_context4.next=10;break;case 6:if(_context4.prev=6,_context4.t0=_context4.catch(1),"EEXIST"===_context4.t0.code){_context4.next=10;break}throw _context4.t0;case 10:return _context4.next=12,fs__WEBPACK_IMPORTED_MODULE_6__.promises.writeFile(services.couchdb.server.runner.configurationFile.path,services.couchdb.server.runner.configurationFile.content,{encoding:configuration.core.encoding});case 12:return services.couchdb.server.process=(0,child_process__WEBPACK_IMPORTED_MODULE_3__.spawn)("default"===configuration.couchdb.binary.memoryInMegaByte?services.couchdb.server.runner.binaryFilePath:configuration.couchdb.binary.nodePath,("default"===configuration.couchdb.binary.memoryInMegaByte?[]:["--max-old-space-size="+configuration.couchdb.binary.memoryInMegaByte,services.couchdb.server.runner.binaryFilePath]).concat(services.couchdb.server.runner.arguments?services.couchdb.server.runner.arguments:[]),{cwd:eval("process").cwd(),env:Object.prototype.hasOwnProperty.call(services.couchdb.server.runner,"environment")?_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({},eval("process").env,services.couchdb.server.runner.environment):eval("process").env,shell:!0,stdio:"inherit"}),new Promise((function(e,r){for(var _,t,n=_createForOfIteratorHelperLoose(clientnode__WEBPACK_IMPORTED_MODULE_4__.CloseEventNames);!(_=n()).done;)t=_.value,services.couchdb.server.process.on(t,clientnode__WEBPACK_IMPORTED_MODULE_4___default().getProcessCloseHandler(e,r,{process:services.couchdb.server.process,reason:t}))})).then((function(){for(var e,r,_=arguments.length,t=Array(_),n=0;n<_;n++)t[n]=arguments[n];null!=(e=services.couchdb)&&null!=(r=e.server)&&r.resolve&&services.couchdb.server.resolve.apply(_this,t)}),(function(){for(var e,r,_=arguments.length,t=Array(_),n=0;n<_;n++)t[n]=arguments[n];null!=(e=services.couchdb)&&null!=(r=e.server)&&r.resolve&&services.couchdb.server.reject.apply(_this,t)})),_context4.next=16,clientnode__WEBPACK_IMPORTED_MODULE_4___default().checkReachability(clientnode__WEBPACK_IMPORTED_MODULE_4___default().stringFormat(configuration.couchdb.url,""),{wait:!0});case 16:case"end":return _context4.stop()}}),_callee4,null,[[1,6]])})));return startServer}(),Helper.restartServer=function(){var e=_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().mark((function e(r,_,t,n){var o,a;return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=r.couchdb.server.resolve,a=r.couchdb.server.reject,r.couchdb.server.resolve=r.couchdb.server.reject=clientnode__WEBPACK_IMPORTED_MODULE_4___default().noop,e.next=5,Helper.stopServer(r,_);case 5:return r.couchdb.server.resolve=o,r.couchdb.server.reject=a,e.next=9,Helper.startServer(r,_);case 9:return Helper.initializeConnection(r,_),e.next=12,n.callStack("restartCouchdb",t,_,r);case 12:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Helper.stopServer=function(){var e=_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().mark((function e(r,_){return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r.couchdb.connection&&r.couchdb.connection.close(),r.couchdb.server.process&&r.couchdb.server.process.kill("SIGINT"),e.next=4,clientnode__WEBPACK_IMPORTED_MODULE_4___default().checkUnreachability(clientnode__WEBPACK_IMPORTED_MODULE_4___default().stringFormat(_.couchdb.url,""),{wait:!0});case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Helper.determineAllowedModelRolesMapping=function(e){var r=e.property.name.special.allowedRole,_={},t=Helper.extendModels(e);for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&Object.prototype.hasOwnProperty.call(t[n],r))for(var o in _[n]=Helper.normalizeAllowedModelRoles(t[n][r]),_[n].properties={},t[n])Object.prototype.hasOwnProperty.call(t[n],o)&&null!==t[n][o]&&"object"==typeof t[n][o]&&Object.prototype.hasOwnProperty.call(t[n][o],"allowedRoles")&&t[n][o].allowedRoles&&(_[n].properties[o]=Helper.normalizeAllowedModelRoles(t[n][o].allowedRoles));else _[n]={properties:{},read:[],write:[]};return _},Helper.determineGenericIndexablePropertyNames=function(e,r){var _=e.property.name.special;return Object.keys(r).filter((function(t){return null!==r[t]&&"object"==typeof r[t]&&(Object.prototype.hasOwnProperty.call(r[t],"index")&&r[t].index||!(Object.prototype.hasOwnProperty.call(r[t],"index")&&!r[t].index||e.property.name.reserved.concat(_.additional,_.allowedRole,_.attachment,_.conflict,_.constraint.execution,_.constraint.expression,_.deleted,_.deletedConflict,_.extend,_.id,_.maximumAggregatedSize,_.minimumAggregatedSize,_.oldType,_.revision,_.revisions,_.revisionsInformation,_.type).includes(t)||r[t].type&&("string"==typeof r[t].type&&r[t].type.endsWith("[]")||Array.isArray(r[t].type)&&r[t].type.length&&Array.isArray(r[t].type[0])||Object.prototype.hasOwnProperty.call(e.entities,r[t].type))))})).concat(_.id,_.revision).sort()},Helper.extendModel=function(e,r,_){if(void 0===_&&(_="_extends"),"_base"===e)return r[e];if(Object.prototype.hasOwnProperty.call(r,"_base")&&(Object.prototype.hasOwnProperty.call(r[e],_)&&r[e][_]?r[e][_]=["_base"].concat(r[e][_]):r[e][_]="_base"),Object.prototype.hasOwnProperty.call(r[e],_)){for(var t,n,o=_createForOfIteratorHelperLoose([].concat(r[e][_]));!(t=o()).done;)n=t.value,r[e]=clientnode__WEBPACK_IMPORTED_MODULE_4___default().extend(!0,clientnode__WEBPACK_IMPORTED_MODULE_4___default().copy(Helper.extendModel(n,r,_)),r[e]);delete r[e][_]}return r[e]},Helper.extendModels=function(e){var r=e.property.name.special,_={};for(var t in e.entities)if(Object.prototype.hasOwnProperty.call(e.entities,t)){if(!new RegExp(e.property.name.typeRegularExpressionPattern.public).test(t)&&!new RegExp(e.property.name.typeRegularExpressionPattern.private).test(t))throw new Error('Model names have to match "'+e.property.name.typeRegularExpressionPattern.public+'" or "'+e.property.name.typeRegularExpressionPattern.private+'" for private one (given name: "'+t+'").');_[t]=Helper.extendModel(t,e.entities,r.extend)}for(var n in _)if(Object.prototype.hasOwnProperty.call(_,n))for(var o in _[n])if(Object.prototype.hasOwnProperty.call(_[n],o))if(o===r.attachment)for(var a in _[n][o])Object.prototype.hasOwnProperty.call(_[n][o],a)&&(_[n][o][a]=clientnode__WEBPACK_IMPORTED_MODULE_4___default().extend(!0,clientnode__WEBPACK_IMPORTED_MODULE_4___default().copy(e.property.defaultSpecification),_[n][o][a]));else[r.allowedRole,r.constraint.execution,r.constraint.expression,r.extend,r.maximumAggregatedSize,r.minimumAggregatedSize,r.oldType].includes(o)||(_[n][o]=clientnode__WEBPACK_IMPORTED_MODULE_4___default().extend(!0,clientnode__WEBPACK_IMPORTED_MODULE_4___default().copy(e.property.defaultSpecification),_[n][o]));return _},Helper.normalizeAllowedModelRoles=function(e){if(Array.isArray(e))return{read:e,write:e};if("object"==typeof e){var r={read:[],write:[]};for(var _ in r)Object.prototype.hasOwnProperty.call(e,_)&&(r[_]=Array.isArray(e[_])?e[_]:[e[_]]);return r}return{read:[e],write:[e]}},Helper}();const __WEBPACK_DEFAULT_EXPORT__=Helper})(),module.exports=__webpack_exports__})();
1
+ (()=>{"use strict";var __webpack_modules__=[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("child_process")},e=>{e.exports=require("clientnode")},e=>{e.exports=require("pouchdb/node_modules/node-fetch/lib/index.js")},e=>{e.exports=require("fs")},e=>{e.exports=require("path")}],__webpack_module_cache__={};function __webpack_require__(e){var r=__webpack_module_cache__[e];if(void 0!==r)return r.exports;var _=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](_,_.exports,__webpack_require__),_.exports}__webpack_require__.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(r,{a:r}),r},__webpack_require__.d=(e,r)=>{for(var _ in r)__webpack_require__.o(r,_)&&!__webpack_require__.o(e,_)&&Object.defineProperty(e,_,{enumerable:!0,get:r[_]})},__webpack_require__.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};(()=>{__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{Helper:()=>Helper,default:()=>__WEBPACK_DEFAULT_EXPORT__});var _babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(0),_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__),_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1),_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default=__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__),_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(2),_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__),child_process__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(3),child_process__WEBPACK_IMPORTED_MODULE_3___default=__webpack_require__.n(child_process__WEBPACK_IMPORTED_MODULE_3__),clientnode__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(4),clientnode__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(clientnode__WEBPACK_IMPORTED_MODULE_4__),node_fetch__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(5),node_fetch__WEBPACK_IMPORTED_MODULE_5___default=__webpack_require__.n(node_fetch__WEBPACK_IMPORTED_MODULE_5__),fs__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(6),fs__WEBPACK_IMPORTED_MODULE_6___default=__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_6__),path__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(7),path__WEBPACK_IMPORTED_MODULE_7___default=__webpack_require__.n(path__WEBPACK_IMPORTED_MODULE_7__);function _createForOfIteratorHelperLoose(e,r){var _="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(_)return(_=_.call(e)).next.bind(_);if(Array.isArray(e)||(_=_unsupportedIterableToArray(e))||r&&e&&"number"==typeof e.length){_&&(e=_);var t=0;return function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}}}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 _unsupportedIterableToArray(e,r){if(e){if("string"==typeof e)return _arrayLikeToArray(e,r);var _=Object.prototype.toString.call(e).slice(8,-1);return"Object"===_&&e.constructor&&(_=e.constructor.name),"Map"===_||"Set"===_?Array.from(e):"Arguments"===_||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(_)?_arrayLikeToArray(e,r):void 0}}function _arrayLikeToArray(e,r){(null==r||r>e.length)&&(r=e.length);for(var _=0,t=Array(r);_<r;_++)t[_]=e[_];return t}clientnode__WEBPACK_IMPORTED_MODULE_4__.globalContext.fetch=node_fetch__WEBPACK_IMPORTED_MODULE_5___default();var Helper=function(){function Helper(){}return Helper.getConnectorOptions=function(e){return e.couchdb.connector.fetch?{fetch:function(r,_){return clientnode__WEBPACK_IMPORTED_MODULE_4__.globalContext.fetch(r,clientnode__WEBPACK_IMPORTED_MODULE_4___default().extend(!0,clientnode__WEBPACK_IMPORTED_MODULE_4___default().copy(e.couchdb.connector.fetch),_||{}))}}:{fetch:function(e,r){return clientnode__WEBPACK_IMPORTED_MODULE_4__.globalContext.fetch(e,r)}}},Helper.mayStripRepresentation=function(e,r,_){var t=clientnode__WEBPACK_IMPORTED_MODULE_4___default().represent(e);return t.length<=r?t.length>_?t.substring(0,_-3)+"...":t:"DOCUMENT IS TOO BIG TO REPRESENT"},Helper.ensureValidationDocumentPresence=function(){var e=_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().mark((function e(r,_,t,n,o,a,c){var i,l,s;return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return void 0===o&&(o=!0),void 0===a&&(a="_id"),void 0===c&&(c="_design/"),l=_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()(((i={})[a]=""+c+_,i.language="javascript",i),t),e.prev=4,e.next=7,r.get(""+c+_);case 7:return s=e.sent,l._rev=s._rev,e.next=11,r.put(l);case 11:case 20:e.next=26;break;case 14:return e.prev=14,e.t0=e.catch(4),o&&e.t0.error,e.prev=17,e.next=20,r.put(l);case 23:throw e.prev=23,e.t1=e.catch(17),new Error(n+" couldn't be installed/updated: \""+clientnode__WEBPACK_IMPORTED_MODULE_4___default().represent(e.t1)+'".');case 26:case"end":return e.stop()}}),e,null,[[4,14],[17,23]])})));return function(){return e.apply(this,arguments)}}(),Helper.initializeConnection=function(){var e=_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().mark((function e(r,_){var t,n,o,a,c,i;return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(t=clientnode__WEBPACK_IMPORTED_MODULE_4___default().stringFormat(_.couchdb.url,_.couchdb.user.name+":"+_.couchdb.user.password+"@")+"/"+_.couchdb.databaseName,r.couchdb.connection=new r.couchdb.connector(t,Helper.getConnectorOptions(_)),r.couchdb.connection.setMaxListeners(1/0),n=_.couchdb.model.property.name.special.id,o=_.couchdb.model.property.name.special.revision,a=function(){var e=i.value,t=r.couchdb.connection[e].bind(r.couchdb.connection);r.couchdb.connection[e]=_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().mark((function e(r){var a,c,i,l,s,u=arguments;return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(e.prev=0,a=u.length,c=Array(1<a?a-1:0),i=1;i<a;i++)c[i-1]=u[i];return e.next=4,t.apply(void 0,[r].concat(c));case 4:return e.abrupt("return",e.sent);case 7:if(e.prev=7,e.t0=e.catch(0),!(n in r&&_.couchdb.ignoreNoChangeError&&"forbidden"===e.t0.name&&null!=(l=e.t0.message)&&l.startsWith("NoChange:"))){e.next=21;break}if(s={id:r[n],ok:!0},!(o in r)||["latest","upsert"].includes(r[o])){e.next=15;break}e.t1=r[o],e.next=19;break;case 15:return e.next=17,this.get(s.id);case 17:e.t2=o,e.t1=e.sent[e.t2];case 19:return s.rev=e.t1,e.abrupt("return",s);case 21:throw e.t0;case 22:case"end":return e.stop()}}),e,this,[[0,7]])})))},c=_createForOfIteratorHelperLoose(["post","put"]);!(i=c()).done;)a();return e.prev=7,e.next=10,clientnode__WEBPACK_IMPORTED_MODULE_4___default().checkReachability(t);case 10:e.next=17;break;case 12:return e.prev=12,e.t0=e.catch(7),e.next=17,clientnode__WEBPACK_IMPORTED_MODULE_4__.globalContext.fetch(t,{method:"PUT"});case 17:return e.abrupt("return",r);case 18:case"end":return e.stop()}}),e,null,[[7,12]])})));return function(){return e.apply(this,arguments)}}(),Helper.startServer=function(){function startServer(){return _startServer.apply(this,arguments)}var _startServer=_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().mark((function _callee4(services,configuration){var _this=this;return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().wrap((function(_context4){for(;;)switch(_context4.prev=_context4.next){case 0:if(!Object.prototype.hasOwnProperty.call(services.couchdb.server.runner,"configurationFile")){_context4.next=12;break}return _context4.prev=1,_context4.next=4,fs__WEBPACK_IMPORTED_MODULE_6__.promises.mkdir(path__WEBPACK_IMPORTED_MODULE_7___default().dirname(services.couchdb.server.runner.configurationFile.path),{recursive:!0});case 4:_context4.next=10;break;case 6:if(_context4.prev=6,_context4.t0=_context4.catch(1),"EEXIST"===_context4.t0.code){_context4.next=10;break}throw _context4.t0;case 10:return _context4.next=12,fs__WEBPACK_IMPORTED_MODULE_6__.promises.writeFile(services.couchdb.server.runner.configurationFile.path,services.couchdb.server.runner.configurationFile.content,{encoding:configuration.core.encoding});case 12:return services.couchdb.server.process=(0,child_process__WEBPACK_IMPORTED_MODULE_3__.spawn)("default"===configuration.couchdb.binary.memoryInMegaByte?services.couchdb.server.runner.binaryFilePath:configuration.couchdb.binary.nodePath,("default"===configuration.couchdb.binary.memoryInMegaByte?[]:["--max-old-space-size="+configuration.couchdb.binary.memoryInMegaByte,services.couchdb.server.runner.binaryFilePath]).concat(services.couchdb.server.runner.arguments?services.couchdb.server.runner.arguments:[]),{cwd:eval("process").cwd(),env:Object.prototype.hasOwnProperty.call(services.couchdb.server.runner,"environment")?_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({},eval("process").env,services.couchdb.server.runner.environment):eval("process").env,shell:!0,stdio:"inherit"}),new Promise((function(e,r){for(var _,t,n=_createForOfIteratorHelperLoose(clientnode__WEBPACK_IMPORTED_MODULE_4__.CloseEventNames);!(_=n()).done;)t=_.value,services.couchdb.server.process.on(t,clientnode__WEBPACK_IMPORTED_MODULE_4___default().getProcessCloseHandler(e,r,{process:services.couchdb.server.process,reason:t}))})).then((function(e){var r,_;null!=(r=services.couchdb)&&null!=(_=r.server)&&_.resolve&&services.couchdb.server.resolve.call(_this,e)}),(function(e){var r,_;null!=(r=services.couchdb)&&null!=(_=r.server)&&_.resolve&&services.couchdb.server.reject.call(_this,e)})),_context4.next=16,clientnode__WEBPACK_IMPORTED_MODULE_4___default().checkReachability(clientnode__WEBPACK_IMPORTED_MODULE_4___default().stringFormat(configuration.couchdb.url,""),{wait:!0});case 16:case"end":return _context4.stop()}}),_callee4,null,[[1,6]])})));return startServer}(),Helper.restartServer=function(){var e=_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().mark((function e(r,_,t,n){var o,a;return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=r.couchdb.server.resolve,a=r.couchdb.server.reject,r.couchdb.server.resolve=r.couchdb.server.reject=clientnode__WEBPACK_IMPORTED_MODULE_4___default().noop,e.next=5,Helper.stopServer(r,_);case 5:return r.couchdb.server.resolve=o,r.couchdb.server.reject=a,e.next=9,Helper.startServer(r,_);case 9:return Helper.initializeConnection(r,_),e.next=12,n.callStack("restartCouchdb",t,_,r);case 12:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Helper.stopServer=function(){var e=_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().mark((function e(r,_){return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r.couchdb.connection&&r.couchdb.connection.close(),r.couchdb.server.process&&r.couchdb.server.process.kill("SIGINT"),e.next=4,clientnode__WEBPACK_IMPORTED_MODULE_4___default().checkUnreachability(clientnode__WEBPACK_IMPORTED_MODULE_4___default().stringFormat(_.couchdb.url,""),{wait:!0});case 4:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}(),Helper.determineAllowedModelRolesMapping=function(e){var r=e.property.name.special.allowedRoles,_={},t=Helper.extendModels(e);for(var n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&Object.prototype.hasOwnProperty.call(t[n],r))for(var o in _[n]=_babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({properties:{}},Helper.normalizeAllowedRoles(t[n][r])),t[n])Object.prototype.hasOwnProperty.call(t[n],o)&&null!==t[n][o]&&"object"==typeof t[n][o]&&t[n][o].allowedRoles&&(_[n].properties[o]=Helper.normalizeAllowedRoles(t[n][o].allowedRoles));else _[n]={properties:{},read:[],write:[]};return _},Helper.determineGenericIndexablePropertyNames=function(e,r){var _=e.property.name.special;return Object.keys(r).filter((function(t){return null!==r[t]&&"object"==typeof r[t]&&(Object.prototype.hasOwnProperty.call(r[t],"index")&&r[t].index||!(Object.prototype.hasOwnProperty.call(r[t],"index")&&!r[t].index||e.property.name.reserved.concat(_.additional,_.allowedRoles,_.attachment,_.conflict,_.constraint.execution,_.constraint.expression,_.deleted,_.deletedConflict,_.extend,_.id,_.maximumAggregatedSize,_.minimumAggregatedSize,_.oldType,_.revision,_.revisions,_.revisionsInformation,_.type).includes(t)||r[t].type&&("string"==typeof r[t].type&&r[t].type.endsWith("[]")||Array.isArray(r[t].type)&&r[t].type.length&&Array.isArray(r[t].type[0])||Object.prototype.hasOwnProperty.call(e.entities,r[t].type))))})).concat(_.id,_.revision).sort()},Helper.extendModel=function(e,r,_){if(void 0===_&&(_="_extends"),"_base"===e)return r[e];if(Object.prototype.hasOwnProperty.call(r,"_base")&&(Object.prototype.hasOwnProperty.call(r[e],_)&&r[e][_]?r[e][_]=["_base"].concat(r[e][_]):r[e][_]="_base"),Object.prototype.hasOwnProperty.call(r[e],_)){for(var t,n,o=_createForOfIteratorHelperLoose([].concat(r[e][_]));!(t=o()).done;)n=t.value,r[e]=clientnode__WEBPACK_IMPORTED_MODULE_4___default().extend(!0,clientnode__WEBPACK_IMPORTED_MODULE_4___default().copy(Helper.extendModel(n,r,_)),r[e]);delete r[e][_]}return r[e]},Helper.extendModels=function(e){var r=e.property.name.special,_={};for(var t in e.entities)if(Object.prototype.hasOwnProperty.call(e.entities,t)){if(!new RegExp(e.property.name.typeRegularExpressionPattern.public).test(t)&&!new RegExp(e.property.name.typeRegularExpressionPattern.private).test(t))throw new Error('Model names have to match "'+e.property.name.typeRegularExpressionPattern.public+'" or "'+e.property.name.typeRegularExpressionPattern.private+'" for private one (given name: "'+t+'").');_[t]=Helper.extendModel(t,e.entities,r.extend)}for(var n in _)if(Object.prototype.hasOwnProperty.call(_,n))for(var o in _[n])if(Object.prototype.hasOwnProperty.call(_[n],o))if(o===r.attachment)for(var a in _[n][o])Object.prototype.hasOwnProperty.call(_[n][o],a)&&(_[n][o][a]=clientnode__WEBPACK_IMPORTED_MODULE_4___default().extend(!0,clientnode__WEBPACK_IMPORTED_MODULE_4___default().copy(e.property.defaultSpecification),_[n][o][a]));else[r.allowedRoles,r.constraint.execution,r.constraint.expression,r.extend,r.maximumAggregatedSize,r.minimumAggregatedSize,r.oldType].includes(o)||(_[n][o]=clientnode__WEBPACK_IMPORTED_MODULE_4___default().extend(!0,clientnode__WEBPACK_IMPORTED_MODULE_4___default().copy(e.property.defaultSpecification),_[n][o]));return _},Helper.normalizeAllowedRoles=function(e){if(Array.isArray(e))return{read:e,write:e};if("object"==typeof e){var r={read:[],write:[]};for(var _ in r)Object.prototype.hasOwnProperty.call(e,_)&&(r[_]=Array.isArray(e[_])?e[_]:[e[_]]);return r}return{read:[e],write:[e]}},Helper}();const __WEBPACK_DEFAULT_EXPORT__=Helper})(),module.exports=__webpack_exports__})();
package/index.d.ts ADDED
@@ -0,0 +1,67 @@
1
+ import { PluginAPI } from 'web-node';
2
+ import { Plugin, PluginHandler } from 'web-node/type';
3
+ import { ChangesStream, Configuration, Service, ServicePromises, Services } from './type';
4
+ /**
5
+ * Launches an application server und triggers all some pluginable hooks on
6
+ * an event.
7
+ * @property static:additionalChangesStreamOptions - Can provide additional
8
+ * (non static) changes stream options.
9
+ * @property static:changesStream - Stream which triggers database events.
10
+ * @property static:skipIDDetermining - Indicates whether id's should be
11
+ * determined if "bulkDocs" had skipped a real change due to ignore a
12
+ * "NoChange" error.
13
+ * @property static:toggleIDDetermining - Token to give a "bulkDocs" method
14
+ * call to indicate id determination skip or not (depends on the static
15
+ * "skipIDDetermining" configuration).
16
+ */
17
+ export declare class Database implements PluginHandler {
18
+ static additionalChangesStreamOptions: object;
19
+ static changesStream: ChangesStream;
20
+ static skipIDDetermining: boolean;
21
+ static toggleIDDetermining: symbol;
22
+ /**
23
+ * Start database's child process and return a Promise which observes this
24
+ * service.
25
+ * @param servicePromises - An object with stored service promise
26
+ * instances.
27
+ * @param services - An object with stored service instances.
28
+ * @param configuration - Mutable by plugins extended configuration object.
29
+ *
30
+ * @returns A promise which correspond to the plugin specific continues
31
+ * service.
32
+ */
33
+ static loadService(servicePromises: Omit<ServicePromises, 'couchdb'>, services: Services, configuration: Configuration): Promise<Service>;
34
+ /**
35
+ * Add database event listener to auto restart database server on
36
+ * unexpected server issues.
37
+ * @param servicePromises - An object with stored service promise
38
+ * instances.
39
+ * @param services - An object with stored service instances.
40
+ * @param configuration - Mutable by plugins extended configuration object.
41
+ * @param plugins - Topological sorted list of loaded plugins.
42
+ * @param pluginAPI - Plugin api reference.
43
+ *
44
+ * @returns A promise which wraps plugin promises to represent plugin
45
+ * continues services.
46
+ */
47
+ static postLoadService(servicePromises: ServicePromises, services: Services, configuration: Configuration, plugins: Array<Plugin>, pluginAPI: typeof PluginAPI): ServicePromises;
48
+ /**
49
+ * Appends an application server to the web node services.
50
+ * @param services - An object with stored service instances.
51
+ * @param configuration - Mutable by plugins extended configuration object.
52
+ *
53
+ * @returns Given and extended object of services wrapped in a promise
54
+ * resolving after pre-loading has finished.
55
+ */
56
+ static preLoadService(services: Services, configuration: Configuration): Promise<Services>;
57
+ /**
58
+ * Triggered when application will be closed soon.
59
+ * @param services - An object with stored service instances.
60
+ * @param configuration - Mutable by plugins extended configuration object.
61
+ *
62
+ * @returns Given object of services wrapped in a promise resolving after
63
+ * finish.
64
+ */
65
+ static shouldExit(services: Services, configuration: Configuration): Promise<Services>;
66
+ }
67
+ export default Database;