UNPKG

@augmentedjs/mockodb

Version:

A Mock MongoDB client for use with webpack dev server or other testing tools.

1 lines 3.83 kB
exports.MockoDB=function(e){var t={};function r(n){if(t[n])return t[n].exports;var s=t[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,r),s.l=!0,s.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)r.d(n,s,function(t){return e[t]}.bind(null,s));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/dist/",r(r.s=0)}([function(e,t,r){e.exports=r(1)},function(e,t,r){const n=r(2);e.exports=class{constructor(e={}){this._databases={},this._name=e.name?e.name:"untitled",this._databases[this.name]={collections:e.collections?Object.create(e.collections):{}}}use(e){return e&&(this._name=e),this}get name(){return this._name}collection(e,t){if(t){if(this._name&&e){const r=this._databases[this._name];return r?(r.collections[e]||(r.collections[e]=[]),t(null,new n(r.collections[e]))):t(new Error("Missing database"),null)}return t(new Error("Missing name"),null)}throw new Error("Callback required")}}},function(e,t,r){const n=r(3);e.exports=class{constructor(e){this._data=e}find(e){if(e){const t=this._where(e);return new n(t?t:[])}return new n(this._data)}findOne(e){if(e){const t=this._where(e);return t?Promise.resolve(t[0]):Promise.resolve({})}throw new Error("No document")}async findOneAndUpdate(e,t,r){if(e&&t&&t.$set){const r=this._whereIndex(e);if(-1!==r){const e=this._data[r];return this._data[r]=await Object.assign(e,t.$set),Promise.resolve(this._data[r])}return Promise.resolve({})}throw new Error("No document")}async findAndUpdate(e,t,r){if(e&&t&&t.$set){const r=this._whereIndex(e);if(Array.isArray(r)){let e=0,n=[];const s=r.length;for(e=0;e<s;e++){const s=this._data[r[e]];this._data[r[e]]=await Object.assign(s,t.$set),n.push(this._data[r[e]])}return Promise.resolve(n)}if(-1!==r){const e=this._data[r];return this._data[r]=await Object.assign(e,t.$set),Promise.resolve(this._data[r])}return Promise.resolve({})}throw new Error("No document")}async insertOne(e){if(e){const t=await Object.assign({},e);return await this._data.push(t),Promise.resolve(t)}throw new Error("No document")}async insert(e){if(e&&Array.isArray(e))return await this._data.push(...e),Promise.resolve(e);if(e&&"object"==typeof e)return await this.insertOne(e);throw new Error("No document")}async deleteOne(e){if(e){const t=this._whereIndex(e);return-1!==t?(this._data.splice(t,1),Promise.resolve(null)):Promise.resolve({})}throw new Error("No document")}async delete(e){if(e){const t=await Object.assign({},e),r=await this._whereIndex(t);if(Array.isArray(r)){let e=0;const t=r.length;for(e=0;e<t;e++)this._data=await this._data.splice(r[e],1);return Promise.resolve(r)}return Promise.resolve({})}throw new Error("No document")}_where(e){return this._data.filter(t=>Object.keys(e).every(r=>t.hasOwnProperty(r)&&e[r]===t[r]))}_whereIndex(e){return this._data.findIndex(t=>Object.keys(e).every(r=>t.hasOwnProperty(r)&&e[r]===t[r]))}_finderOne(e){const t=this._data;if(e){const r=Object.keys(e)[0],n=e[r];let s=0;const o=t.length;for(s=0;s<o;s++){const e=t[s];if(e[r]===n)return{index:s,model:e}}}else if(t)return t;return null}}},function(e,t){e.exports=class{constructor(e){this._data=e}toArray(){if(Array.isArray(this._data))return Promise.resolve(this._data);const e=[this._data];return Promise.resolve(e)}}}]);