diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..10f4d43 Binary files /dev/null and b/.DS_Store differ diff --git a/README.md b/README.md index ae31e42..aa8a71c 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,19 @@ -NestedTypes 2.0 is BackboneJS compatibility layer for the [Type-R](https://volicon.github.io/Type-R/Getting_Started.html) data framework. -Type-R is Model/Collection core written from the scratch with the TypeScript and has no side dependencies. +NestedTypes 2.0 is BackboneJS compatibility layer for the [Type-R](https://volicon.github.io/Type-R/Getting_Started.html) data framework. Type-R is Model/Collection core written from the scratch with the TypeScript and has no side dependencies. -NestedTypes adds support for REST (standard BackboneJS API), Underscore methods, and Backbone 1.1 classes. In the next versions Type-R will support configurable I/O adapters (https://github.com/Volicon/Type-R/issues/12) making it trivial to attach the custom I/O transport. Backbone-compatible REST functionality will be available via plugin. +NestedTypes adds support for REST (standard BackboneJS API), Underscore methods, and Backbone 1.1 classes. > If you're upgrading from the version 1.3, *[there are compatibility issues](/docs/compatibility.md)*. > Mostly due to the fact that the Type-R and NestedTypes 2.0 is built around the concept of [aggregation trees](https://volicon.github.io/Type-R/API_by_feature/Aggregation_tree.html). > NestedTypes 1.3 code won't work without refactoring. +# Important Notice + +Staring with v2.0 Type-R includes generic I/O abstraction which is far superior to the legacy BackboneJS I/O. +NestedTypes & NestedReact will be maintained as the BackboneJS compatibility layer as long as Verizon/Volicon systems have legacy Backbone code. Therefore: + +- NestedTypes docs won't be updated. Use [Type-R](https://volicon.github.io/Type-R) documentation as you primary source of documentation. +- Functional-wise, there's no reason to prefer NestedTypes over the Type-R any more. If you don't need BackboneJS backward compatibility, move to the [Type-R](https://volicon.github.io/Type-R) which doesn't have any legacy dependencies like jQuery and underscore. + # Features Post-backbone data framework. 10 times faster, first-class support for nested models and collections and relations by id. diff --git a/dist/index.js b/dist/index.js index 544aa4d..9146234 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("underscore"),require("jquery")):"function"==typeof define&&define.amd?define(["exports","underscore","jquery"],e):e(t.Nested={},t._,t.$)}(this,function(t,e,n){"use strict";function r(t,e){function n(){this.constructor=t}$t(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}function i(t,e){var n={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var i=0,r=Object.getOwnPropertySymbols(t);i=0;a--)(i=t[a])&&(s=(o<3?i(s):o>3?i(e,n,s):i(e,n))||s);return o>3&&s&&Object.defineProperty(e,n,s),s}function s(t){if(null===t)return!0;switch(typeof t){case"number":case"string":case"boolean":return!0;case"object":var e=Object.getPrototypeOf(t);if(e===Object.prototype||e===Array.prototype)return h(t,s)}return!1}function a(t){return Object.getPrototypeOf(t.prototype).constructor}function u(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return!1;return!0}function c(t,e){return Object.getPrototypeOf(t)===Ft?function(t,e){for(var n,r=0;r2)for(var r=2;r2)for(var r=2;ri&&(r=i),function(t,e,n){for(var r=t.length-1,i=r-n.length;i>=e;i--,r--)t[r]=t[i];for(i=0,r=e;i1?e[n](o,s,i):e[n](o,s)};case 4:return function(t,i,o){var s=this[r],a=It(t,this);return arguments.length>1?e[n](s,a,i,o):e[n](s,a)};default:return function(){for(var t=[],i=0;i1&&function(t,e){if(K(t,e)){var n=t._attributes,r=void 0;for(var i in e)n[i]||(r||(r=[]),r.push("'"+i+"'"));r&&t._log("warn","undefined attributes "+r.join(", ")+" are ignored.",{values:e})}}(r,o),r._previousAttributes=r.attributes=new r.Attributes(r,o,i),r.initialize(e,n),r._localEvents&&r._localEvents.subscribe(r,r),r}return r(e,t),e,e.onDefine=function(t,e){},e.defaults=function(t){return this.extend({attributes:t})},e.prototype.save=function(t){throw new Error("Implemented by mixin")},e.prototype.destroy=function(t){throw new Error("Implemented by mixin")},e.prototype.previousAttributes=function(){return new this.AttributesCopy(this._previousAttributes)},Object.defineProperty(e.prototype,"__inner_state__",{get:function(){return this.attributes},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"changed",{get:function(){var t=this._changedAttributes;if(!t){var e=this._previousAttributes;t={};this._attributes;for(var n=this.attributes,r=0,i=this._attributesArray;r").attr(t);this.setElement(n,!1)}}});var ar=/\((.*?)\)/g,ur=/(\(\?)?:\w+/g,cr=/\*\w+/g,hr=/[\-{}\[\]+?.,\\\^$|#\s]/g;e.extend(Pt.prototype,{initialize:function(){},route:function(t,n,r){e.isRegExp(t)||(t=this._routeToRegExp(t)),e.isFunction(n)&&(r=n,n=""),r||(r=this[n]);var i=this;return ir.history.route(t,function(e){var o=i._extractParameters(t,e);!1!==i.execute(r,o,n)&&(i.trigger.apply(i,["route:"+n].concat(o)),i.trigger("route",n,o),ir.history.trigger("route",i,n,o))}),this},execute:function(t,e,n){t&&t.apply(this,e)},navigate:function(t,e){return ir.history.navigate(t,e),this},_bindRoutes:function(){if(this.routes){this.routes=e.result(this,"routes");for(var t,n=e.keys(this.routes);null!=(t=n.pop());)this.route(t,this.routes[t])}},_routeToRegExp:function(t){return t=t.replace(hr,"\\$&").replace(ar,"(?:$1)?").replace(ur,function(t,e){return e?t:"([^/?]+)"}).replace(cr,"([^?]*?)"),new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,n){var r=t.exec(n).slice(1);return e.map(r,function(t,e){return e===r.length-1?t||null:t?decodeURIComponent(t):null})}});var lr=/^[#\/]|\s+$/g,pr=/^\/+|\/+$/g,fr=/#.*$/;Nt.started=!1,e.extend(Nt.prototype,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root&&!this.getSearch()},matchRoot:function(){return this.decodeFragment(this.location.pathname).slice(0,this.root.length-1)+"/"===this.root},decodeFragment:function(t){return decodeURI(t.replace(/%25/g,"%2525"))},getSearch:function(){var t=this.location.href.replace(/#.*/,"").match(/\?.+/);return t?t[0]:""},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getPath:function(){var t=this.decodeFragment(this.location.pathname+this.getSearch()).slice(this.root.length-1);return"/"===t.charAt(0)?t.slice(1):t},getFragment:function(t){return null==t&&(t=this._usePushState||!this._wantsHashChange?this.getPath():this.getHash()),t.replace(lr,"")},start:function(t){if(Nt.started)throw new Error("Backbone.history has already been started");if(Nt.started=!0,this.options=e.extend({root:"/"},this.options,t),this.root=this.options.root,this._wantsHashChange=!1!==this.options.hashChange,this._hasHashChange="onhashchange"in window&&(void 0===document.documentMode||document.documentMode>7),this._useHashChange=this._wantsHashChange&&this._hasHashChange,this._wantsPushState=!!this.options.pushState,this._hasPushState=!(!this.history||!this.history.pushState),this._usePushState=this._wantsPushState&&this._hasPushState,this.fragment=this.getFragment(),this.root=("/"+this.root+"/").replace(pr,"/"),this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!this.atRoot()){var n=this.root.slice(0,-1)||"/";return this.location.replace(n+"#"+this.getPath()),!0}this._hasPushState&&this.atRoot()&&this.navigate(this.getHash(),{replace:!0})}if(!this._hasHashChange&&this._wantsHashChange&&!this._usePushState){this.iframe=document.createElement("iframe"),this.iframe.src="javascript:0",this.iframe.style.display="none",this.iframe.tabIndex=-1;var r=document.body,i=r.insertBefore(this.iframe,r.firstChild).contentWindow;i.document.open(),i.document.close(),i.location.hash="#"+this.fragment}var o=window.addEventListener||function(t,e){return attachEvent("on"+t,e)};if(this._usePushState?o("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe?o("hashchange",this.checkUrl,!1):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),!this.options.silent)return this.loadUrl()},stop:function(){var t=window.removeEventListener||function(t,e){return detachEvent("on"+t,e)};this._usePushState?t("popstate",this.checkUrl,!1):this._useHashChange&&!this.iframe&&t("hashchange",this.checkUrl,!1),this.iframe&&(document.body.removeChild(this.iframe),this.iframe=null),this._checkUrlInterval&&clearInterval(this._checkUrlInterval),Nt.started=!1},route:function(t,e){this.handlers.unshift({route:t,callback:e})},checkUrl:function(t){var e=this.getFragment();if(e===this.fragment&&this.iframe&&(e=this.getHash(this.iframe.contentWindow)),e===this.fragment)return!1;this.iframe&&this.navigate(e),this.loadUrl()},loadUrl:function(t){return!!this.matchRoot()&&(t=this.fragment=this.getFragment(t),e.some(this.handlers,function(e){if(e.route.test(t))return e.callback(t),!0}))},navigate:function(t,e){if(!Nt.started)return!1;e&&!0!==e||(e={trigger:!!e}),t=this.getFragment(t||"");var n=this.root;""!==t&&"?"!==t.charAt(0)||(n=n.slice(0,-1)||"/");var r=n+t;if(t=this.decodeFragment(t.replace(fr,"")),this.fragment!==t){if(this.fragment=t,this._usePushState)this.history[e.replace?"replaceState":"pushState"]({},document.title,r);else{if(!this._wantsHashChange)return this.location.assign(r);if(this._updateHash(this.location,t,e.replace),this.iframe&&t!==this.getHash(this.iframe.contentWindow)){var i=this.iframe.contentWindow;e.replace||(i.document.open(),i.document.close()),this._updateHash(i.location,t,e.replace)}}return e.trigger?this.loadUrl(t):void 0}},_updateHash:function(t,e,n){if(n){var r=t.href.replace(/(javascript:|#).*$/,"");t.replace(r+"#"+e)}else t.hash="#"+e}}),ir.history=new Nt;var dr={create:"POST",update:"PUT",patch:"PATCH",delete:"DELETE",read:"GET"},vr={$:ir.$,errorPromise:function(t){var e=$.Deferred();return e.reject(t),e},ajax:function(t){return $.ajax.apply($,arguments)},sync:function(t,n,r){void 0===r&&(r={});var i={type:dr[t],dataType:"json"};r.url||(i.url=e.result(n,"url")||vr.urlError()),null!=r.data||!n||"create"!==t&&"update"!==t&&"patch"!==t||(i.contentType="application/json",i.data=JSON.stringify(r.attrs||n.toJSON(r))),"GET"!==i.type&&(i.processData=!1);var o=r.error;r.error=function(t,e,n){r.textStatus=e,r.errorThrown=n,o&&o.call(r.context,t,e,n)};var s=r.xhr=vr.ajax(e.extend(i,r));return n.trigger("request",n,s,r),n.collection&&n.collection.trigger("request",n,s,r),s},urlError:function(){throw new Error('A "url" property or function must be specified')}},yr=d,gr=a(un).prototype,mr=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype.dispose=function(){this._xhr&&this._xhr.abort&&this._xhr.abort(),t.prototype.dispose.call(this)},n.prototype.url=function(){return this.model.prototype.urlRoot||""},n.prototype._invalidate=function(t){var n;if(t.validate&&(n=this.validationError))return this.trigger("invalid",this,n,e.extend({validationError:n},t)),!0},n.prototype.fetch=function(t){var n=(t=e.extend({parse:!0},t)).success,r=this;return t.success=function(e){var i=t.reset?"reset":"set";if(r[i](e,t),r._invalidate(t))return!1;n&&n.call(t.context,r,e,t),r.trigger("sync",r,e,t)},Dt(this,t),Tt("read",this,t)},n.prototype.create=function(t,e){var n=this;void 0===e&&(e={});var r=t instanceof br?t:this.model.create(t,e);r._owner||(r._owner=this),e.wait||this.add([r],e);var i=e.success;return e.success=function(t,r,o){e.wait&&n.add([t],yr({parse:!1},o)),i&&i.call(o.context,t,r,o)},r.save(null,e),r},n.prototype.sync=function(){return vr.sync.apply(this,arguments)},n=o([b({itemEvents:{destroy:function(t){this.remove(t)}}})],n)}(Fn),br=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return r(n,t),n.prototype._invalidate=function(t){var n;if(t.validate&&(n=this.validationError))return kt(this,"invalid",this,n,e.extend({validationError:n},t)),!0},n.prototype.dispose=function(){this._xhr&&this._xhr.abort&&this._xhr.abort(),t.prototype.dispose.call(this)},n.prototype.fetch=function(t){var n=this,r=(t=e.extend({parse:!0},t)).success;return t.success=function(e){if(n.set(e,t),n._invalidate(t))return!1;r&&r.call(t.context,n,e,t),kt(n,"sync",n,e,t)},Dt(this,t),Tt("read",this,t)},n.prototype.sync=function(){return vr.sync.apply(this,arguments)},n.prototype.save=function(t,n,r){var i,o,s=this;null==t||"object"==typeof t?(i=t,o=n||{}):((i={})[t]=n,o=r||{});var a=e.extend({validate:!0,parse:!0},o),u=a.wait;if(i&&!u&&this.set(i,o),this._invalidate(a))return i&&u&&this.set(i,o),vr.errorPromise(this.validationError);var c=this,h=a.success,l=this.attributes;a.success=function(t){if(c.attributes=l,u&&(t=e.extend({},i,t)),t&&(gr.set.call(s,t,a),c._invalidate(a)))return!1;h&&h.call(a.context,c,t,a),kt(c,"sync",c,t,a)},Dt(this,a),i&&u&&(this.attributes=e.extend({},l,i));var p=this.isNew()?"create":a.patch?"patch":"update";"patch"!==p||a.attrs||(a.attrs=i);var f=Tt(p,this,a);return this.attributes=l,f},n.prototype.destroy=function(t){var n=this,r=(t=t?e.clone(t):{}).success,i=t.wait,o=function(){n.stopListening(),n.trigger("destroy",n,n.collection,t)};t.success=function(e){i&&o(),r&&r.call(t.context,n,e,t),n.isNew()||kt(n,"sync",n,e,t)};var s;return this.isNew()?e.defer(t.success):(Dt(this,t),s=Tt("delete",this,t)),i||o(),s||!1},n.prototype.url=function(){var t=e.result(this,"urlRoot")||e.result(this.collection,"url")||vr.urlError();if(this.isNew())return t;var n=this.get(this.idAttribute);return t.replace(/[^\/]$/,"$&/")+encodeURIComponent(n)},n.prototype.set=function(e,n,r){return"string"==typeof e?r?t.prototype.set.call(this,(i={},i[e]=n,i),r):(this[e]=n,this):t.prototype.set.call(this,e,n);var i},n.Collection=mr,n=o([b({urlRoot:""}),_({urlRoot:Xt.protoValue})],n)}(un),_r={pick:function(){for(var t=[],n=0;n").attr(t);this.setElement(e,!1)}}});var or=/\((.*?)\)/g,sr=/(\(\?)?:\w+/g,ar=/\*\w+/g,ur=/[\-{}\[\]+?.,\\\^$|#\s]/g;function cr(){this.handlers=[],this.checkUrl=f.bind(this.checkUrl,this),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)}f.extend(ir.prototype,{initialize:function(){},route:function(n,r,i){f.isRegExp(n)||(n=this._routeToRegExp(n)),f.isFunction(r)&&(i=r,r=""),i||(i=this[r]);var o=this;return tr.history.route(n,function(t){var e=o._extractParameters(n,t);!1!==o.execute(i,e,r)&&(o.trigger.apply(o,["route:"+r].concat(e)),o.trigger("route",r,e),tr.history.trigger("route",o,r,e))}),this},execute:function(t,e,n){t&&t.apply(this,e)},navigate:function(t,e){return tr.history.navigate(t,e),this},_bindRoutes:function(){if(this.routes){this.routes=f.result(this,"routes");for(var t,e=f.keys(this.routes);null!=(t=e.pop());)this.route(t,this.routes[t])}},_routeToRegExp:function(t){return t=t.replace(ur,"\\$&").replace(or,"(?:$1)?").replace(sr,function(t,e){return e?t:"([^/?]+)"}).replace(ar,"([^?]*?)"),new RegExp("^"+t+"(?:\\?([\\s\\S]*))?$")},_extractParameters:function(t,e){var n=t.exec(e).slice(1);return f.map(n,function(t,e){return e===n.length-1?t||null:t?decodeURIComponent(t):null})}});var hr=/^[#\/]|\s+$/g,lr=/^\/+|\/+$/g,pr=/#.*$/;cr.started=!1,f.extend(cr.prototype,{interval:50,atRoot:function(){return this.location.pathname.replace(/[^\/]$/,"$&/")===this.root&&!this.getSearch()},matchRoot:function(){return this.decodeFragment(this.location.pathname).slice(0,this.root.length-1)+"/"===this.root},decodeFragment:function(t){return decodeURI(t.replace(/%25/g,"%2525"))},getSearch:function(){var t=this.location.href.replace(/#.*/,"").match(/\?.+/);return t?t[0]:""},getHash:function(t){var e=(t||this).location.href.match(/#(.*)$/);return e?e[1]:""},getPath:function(){var t=this.decodeFragment(this.location.pathname+this.getSearch()).slice(this.root.length-1);return"/"===t.charAt(0)?t.slice(1):t},getFragment:function(t){return null==t&&(t=this._usePushState||!this._wantsHashChange?this.getPath():this.getHash()),t.replace(hr,"")},start:function(t){if(cr.started)throw new Error("Backbone.history has already been started");if(cr.started=!0,this.options=f.extend({root:"/"},this.options,t),this.root=this.options.root,this._wantsHashChange=!1!==this.options.hashChange,this._hasHashChange="onhashchange"in window&&(void 0===document.documentMode||7= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = y[op[0] & 2 ? \"return\" : op[0] ? \"throw\" : \"next\"]) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [0, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; }; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator];\r\n return m ? m.call(o) : typeof __values === \"function\" ? __values(o) : o[Symbol.iterator]();\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n","var levelToNumber = {\n none: 0, error: 1, warn: 2, info: 3, log: 4, debug: 5\n};\nexport var log = function (a_level, a_msg, a_props) {\n var levelAsNumber = levelToNumber[a_level], msg, props, level;\n if (levelAsNumber === void 0 && !a_props) {\n levelAsNumber = 4;\n msg = a_level;\n props = a_msg;\n level = 'log';\n }\n else {\n msg = a_msg, level = a_level, props = a_props;\n }\n if (levelAsNumber <= log.level) {\n if (levelAsNumber <= log.throw || !log.logger) {\n var error = new Error(msg);\n error.props = props;\n throw error;\n }\n else {\n log.logger(level, msg, props);\n if (levelAsNumber <= log.stop) {\n debugger;\n }\n }\n }\n};\nlog.level = typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'production' ? 1 : 2;\nlog.throw = 0;\nlog.stop = 0;\nif (typeof console !== 'undefined') {\n log.logger = function _console(level, error, props) {\n var args = [error];\n for (var name_1 in props) {\n args.push(\"\\n\\t\" + name_1 + \":\", props[name_1]);\n }\n console[level].apply(console, args);\n };\n}\nexport function isValidJSON(value) {\n if (value === null) {\n return true;\n }\n switch (typeof value) {\n case 'number':\n case 'string':\n case 'boolean':\n return true;\n case 'object':\n var proto = Object.getPrototypeOf(value);\n if (proto === Object.prototype || proto === Array.prototype) {\n return every(value, isValidJSON);\n }\n }\n return false;\n}\nexport function getBaseClass(Class) {\n return Object.getPrototypeOf(Class.prototype).constructor;\n}\nexport function assignToClassProto(Class, definition) {\n var names = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n names[_i - 2] = arguments[_i];\n }\n for (var _a = 0, names_1 = names; _a < names_1.length; _a++) {\n var name_2 = names_1[_a];\n var value = definition[name_2];\n value === void 0 || (Class.prototype[name_2] = value);\n }\n}\nexport function isEmpty(obj) {\n if (obj) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n return false;\n }\n }\n }\n return true;\n}\nfunction someArray(arr, fun) {\n var result;\n for (var i = 0; i < arr.length; i++) {\n if (result = fun(arr[i], i)) {\n return result;\n }\n }\n}\nfunction someObject(obj, fun) {\n var result;\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (result = fun(obj[key], key)) {\n return result;\n }\n }\n }\n}\nexport function some(obj, fun) {\n if (Object.getPrototypeOf(obj) === ArrayProto) {\n return someArray(obj, fun);\n }\n else {\n return someObject(obj, fun);\n }\n}\nexport function every(obj, predicate) {\n return !some(obj, function (x) { return !predicate(x); });\n}\nexport function getPropertyDescriptor(obj, prop) {\n var desc;\n for (var proto = obj; !desc && proto; proto = Object.getPrototypeOf(proto)) {\n desc = Object.getOwnPropertyDescriptor(proto, prop);\n }\n return desc;\n}\nexport function omit(source) {\n var dest = {}, discard = {};\n for (var i = 1; i < arguments.length; i++) {\n discard[arguments[i]] = true;\n }\n for (var name in source) {\n if (!discard.hasOwnProperty(name) && source.hasOwnProperty(name)) {\n dest[name] = source[name];\n }\n }\n return dest;\n}\nexport function transform(dest, source, fun) {\n for (var name in source) {\n if (source.hasOwnProperty(name)) {\n var value = fun(source[name], name);\n value === void 0 || (dest[name] = value);\n }\n }\n return dest;\n}\nexport function fastAssign(dest, source) {\n for (var name in source) {\n dest[name] = source[name];\n }\n return dest;\n}\nexport function fastDefaults(dest, source) {\n for (var name in source) {\n if (dest[name] === void 0) {\n dest[name] = source[name];\n }\n }\n return dest;\n}\nexport function assign(dest, source) {\n for (var name in source) {\n if (source.hasOwnProperty(name)) {\n dest[name] = source[name];\n }\n }\n if (arguments.length > 2) {\n for (var i = 2; i < arguments.length; i++) {\n var other = arguments[i];\n other && assign(dest, other);\n }\n }\n return dest;\n}\nexport function defaults(dest, source) {\n for (var name in source) {\n if (source.hasOwnProperty(name) && !dest.hasOwnProperty(name)) {\n dest[name] = source[name];\n }\n }\n if (arguments.length > 2) {\n for (var i = 2; i < arguments.length; i++) {\n var other = arguments[i];\n other && defaults(dest, other);\n }\n }\n return dest;\n}\nObject.setPrototypeOf || (Object.setPrototypeOf = defaults);\nexport function keys(o) {\n return o ? Object.keys(o) : [];\n}\nexport function once(func) {\n var memo, first = true;\n return function () {\n if (first) {\n first = false;\n memo = func.apply(this, arguments);\n func = null;\n }\n return memo;\n };\n}\nvar ArrayProto = Array.prototype, DateProto = Date.prototype, ObjectProto = Object.prototype;\nexport function notEqual(a, b) {\n if (a === b)\n return false;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n var protoA = Object.getPrototypeOf(a);\n if (protoA !== Object.getPrototypeOf(b))\n return true;\n switch (protoA) {\n case DateProto: return +a !== +b;\n case ArrayProto: return arraysNotEqual(a, b);\n case ObjectProto:\n case null:\n return objectsNotEqual(a, b);\n }\n }\n return true;\n}\nfunction objectsNotEqual(a, b) {\n var keysA = Object.keys(a);\n if (keysA.length !== Object.keys(b).length)\n return true;\n for (var i = 0; i < keysA.length; i++) {\n var key = keysA[i];\n if (!b.hasOwnProperty(key) || notEqual(a[key], b[key])) {\n return true;\n }\n }\n return false;\n}\nfunction arraysNotEqual(a, b) {\n if (a.length !== b.length)\n return true;\n for (var i = 0; i < a.length; i++) {\n if (notEqual(a[i], b[i]))\n return true;\n }\n return false;\n}\nvar HashProto = Object.create(null);\nHashProto.hasOwnProperty = ObjectProto.hasOwnProperty;\nexport function hashMap(obj) {\n var hash = Object.create(HashProto);\n return obj ? assign(hash, obj) : hash;\n}\n//# sourceMappingURL=tools.js.map","import * as tslib_1 from \"tslib\";\nimport { assign, hashMap, getBaseClass, defaults, transform } from './tools';\nimport { __extends } from 'tslib';\nvar Mixable = (function () {\n function Mixable() {\n }\n Mixable.define = function (protoProps, staticProps) {\n if (protoProps === void 0) { protoProps = {}; }\n var BaseClass = getBaseClass(this);\n staticProps && assign(this, staticProps);\n var mixins = protoProps.mixins, defineMixin = tslib_1.__rest(protoProps, [\"mixins\"]);\n mixins && this.mixins.merge(mixins);\n this.mixins.mergeObject(this.prototype, defineMixin, true);\n this.mixins.mergeObject(this.prototype, this.mixins.getStaticDefinitions(BaseClass), true);\n this.onDefine && this.onDefine(this.mixins.definitions, BaseClass);\n this.mixins.mergeInheritedMembers(BaseClass);\n return this;\n };\n Mixable.extend = function (spec, statics) {\n var TheSubclass;\n if (spec && spec.hasOwnProperty('constructor')) {\n TheSubclass = spec.constructor;\n __extends(TheSubclass, this);\n }\n else {\n TheSubclass = (function (_super) {\n tslib_1.__extends(Subclass, _super);\n function Subclass() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Subclass;\n }(this));\n }\n predefine(TheSubclass);\n spec && TheSubclass.define(spec, statics);\n return TheSubclass;\n };\n return Mixable;\n}());\nexport { Mixable };\nexport function predefine(Constructor) {\n var BaseClass = getBaseClass(Constructor);\n Constructor.__super__ = BaseClass.prototype;\n Constructor.define || MixinsState.get(Mixable).populate(Constructor);\n MixinsState.get(Constructor);\n Constructor.onExtend && Constructor.onExtend(BaseClass);\n}\nexport function define(ClassOrDefinition) {\n if (typeof ClassOrDefinition === 'function') {\n predefine(ClassOrDefinition);\n ClassOrDefinition.define();\n }\n else {\n return function (Ctor) {\n predefine(Ctor);\n Ctor.define(ClassOrDefinition);\n };\n }\n}\nexport function definitions(rules) {\n return function (Class) {\n var mixins = MixinsState.get(Class);\n mixins.definitionRules = defaults(hashMap(), rules, mixins.definitionRules);\n };\n}\nexport function definitionDecorator(definitionKey, value) {\n return function (proto, name) {\n MixinsState\n .get(proto.constructor)\n .mergeObject(proto, (_a = {},\n _a[definitionKey] = (_b = {},\n _b[name] = value,\n _b),\n _a));\n var _a, _b;\n };\n}\nvar MixinsState = (function () {\n function MixinsState(Class) {\n this.Class = Class;\n this.definitions = {};\n var mixins = getBaseClass(Class).mixins;\n this.mergeRules = (mixins && mixins.mergeRules) || hashMap();\n this.definitionRules = (mixins && mixins.definitionRules) || hashMap();\n this.appliedMixins = (mixins && mixins.appliedMixins) || [];\n }\n MixinsState.get = function (Class) {\n var mixins = Class.mixins;\n return mixins && Class === mixins.Class ? mixins :\n Class.mixins = new MixinsState(Class);\n };\n MixinsState.prototype.getStaticDefinitions = function (BaseClass) {\n var definitions = hashMap(), Class = this.Class;\n return transform(definitions, this.definitionRules, function (rule, name) {\n if (BaseClass[name] !== Class[name]) {\n return Class[name];\n }\n });\n };\n MixinsState.prototype.merge = function (mixins) {\n var proto = this.Class.prototype, mergeRules = this.mergeRules;\n var appliedMixins = this.appliedMixins = this.appliedMixins.slice();\n for (var _i = 0, mixins_1 = mixins; _i < mixins_1.length; _i++) {\n var mixin = mixins_1[_i];\n if (Array.isArray(mixin)) {\n this.merge(mixin);\n }\n else if (appliedMixins.indexOf(mixin) < 0) {\n appliedMixins.push(mixin);\n if (typeof mixin === 'function') {\n if (getBaseClass(mixin) !== Object) {\n console.log('Mixin error');\n }\n this.mergeObject(this.Class, mixin);\n var sourceMixins = mixin.mixins;\n if (sourceMixins) {\n this.mergeRules = defaults(hashMap(), this.mergeRules, sourceMixins.mergeRules);\n this.definitionRules = defaults(hashMap(), this.definitionRules, sourceMixins.definitionRules);\n this.appliedMixins = this.appliedMixins.concat(sourceMixins.appliedMixins);\n }\n this.mergeObject(proto, mixin.prototype);\n }\n else {\n this.mergeObject(proto, mixin);\n }\n }\n }\n };\n MixinsState.prototype.populate = function () {\n var ctors = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n ctors[_i] = arguments[_i];\n }\n for (var _a = 0, ctors_1 = ctors; _a < ctors_1.length; _a++) {\n var Ctor = ctors_1[_a];\n MixinsState.get(Ctor).merge([this.Class]);\n }\n };\n MixinsState.prototype.mergeObject = function (dest, source, unshift) {\n var _this = this;\n forEachOwnProp(source, function (name) {\n var sourceProp = Object.getOwnPropertyDescriptor(source, name);\n var rule;\n if (rule = _this.definitionRules[name]) {\n assignProperty(_this.definitions, name, sourceProp, rule, unshift);\n }\n if (!rule || rule === mixinRules.protoValue) {\n assignProperty(dest, name, sourceProp, _this.mergeRules[name], unshift);\n }\n });\n };\n MixinsState.prototype.mergeInheritedMembers = function (BaseClass) {\n var _a = this, mergeRules = _a.mergeRules, Class = _a.Class;\n if (mergeRules) {\n var proto = Class.prototype, baseProto = BaseClass.prototype;\n for (var name_1 in mergeRules) {\n var rule = mergeRules[name_1];\n if (proto.hasOwnProperty(name_1) && name_1 in baseProto) {\n proto[name_1] = resolveRule(proto[name_1], baseProto[name_1], rule);\n }\n }\n }\n };\n return MixinsState;\n}());\nexport { MixinsState };\nvar dontMix = {\n function: hashMap({\n length: true,\n prototype: true,\n caller: true,\n arguments: true,\n name: true,\n __super__: true\n }),\n object: hashMap({\n constructor: true\n })\n};\nfunction forEachOwnProp(object, fun) {\n var ignore = dontMix[typeof object];\n for (var _i = 0, _a = Object.getOwnPropertyNames(object); _i < _a.length; _i++) {\n var name_2 = _a[_i];\n ignore[name_2] || fun(name_2);\n }\n}\nexport var mixins = function () {\n var list = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n list[_i] = arguments[_i];\n }\n return (function (Class) { return MixinsState.get(Class).merge(list); });\n};\nexport var mixinRules = (function (rules) { return (function (Class) {\n var mixins = MixinsState.get(Class);\n mixins.mergeRules = defaults(rules, mixins.mergeRules);\n}); });\nmixinRules.value = function (a, b) { return a; };\nmixinRules.protoValue = function (a, b) { return a; };\nmixinRules.merge = function (a, b) { return defaults({}, a, b); };\nmixinRules.pipe = function (a, b) { return (function (x) {\n return a.call(this, b.call(this, x));\n}); };\nmixinRules.defaults = function (a, b) { return (function () {\n return defaults(a.apply(this, arguments), b.apply(this, arguments));\n}); };\nmixinRules.classFirst = function (a, b) { return (function () {\n a.apply(this, arguments);\n b.apply(this, arguments);\n}); };\nmixinRules.classLast = function (a, b) { return (function () {\n b.apply(this, arguments);\n a.apply(this, arguments);\n}); };\nmixinRules.every = function (a, b) { return (function () {\n return a.apply(this, arguments) && b.apply(this, arguments);\n}); };\nmixinRules.some = function (a, b) { return (function () {\n return a.apply(this, arguments) || b.apply(this, arguments);\n}); };\nfunction assignProperty(dest, name, sourceProp, rule, unshift) {\n if (dest.hasOwnProperty(name)) {\n var destProp = Object.getOwnPropertyDescriptor(dest, name);\n if (destProp.configurable && 'value' in destProp) {\n dest[name] = unshift ?\n resolveRule(sourceProp.value, destProp.value, rule) :\n resolveRule(destProp.value, sourceProp.value, rule);\n }\n }\n else {\n Object.defineProperty(dest, name, sourceProp);\n }\n}\nfunction resolveRule(dest, source, rule) {\n if (dest === void 0)\n return source;\n if (!rule || source === void 0)\n return dest;\n return rule(dest, source);\n}\n//# sourceMappingURL=mixins.js.map","import { once as _once } from './tools';\nvar EventMap = (function () {\n function EventMap(map) {\n this.handlers = [];\n if (map) {\n if (map instanceof EventMap) {\n this.handlers = map.handlers.slice();\n }\n else {\n map && this.addEventsMap(map);\n }\n }\n }\n EventMap.prototype.merge = function (map) {\n this.handlers = this.handlers.concat(map.handlers);\n };\n EventMap.prototype.addEventsMap = function (map) {\n for (var names in map) {\n this.addEvent(names, map[names]);\n }\n };\n EventMap.prototype.bubbleEvents = function (names) {\n for (var _i = 0, _a = names.split(eventSplitter); _i < _a.length; _i++) {\n var name_1 = _a[_i];\n this.addEvent(name_1, getBubblingHandler(name_1));\n }\n };\n EventMap.prototype.addEvent = function (names, callback) {\n var handlers = this.handlers;\n for (var _i = 0, _a = names.split(eventSplitter); _i < _a.length; _i++) {\n var name_2 = _a[_i];\n handlers.push(new EventDescriptor(name_2, callback));\n }\n };\n EventMap.prototype.subscribe = function (target, source) {\n for (var _i = 0, _a = this.handlers; _i < _a.length; _i++) {\n var event_1 = _a[_i];\n on(source, event_1.name, event_1.callback, target);\n }\n };\n EventMap.prototype.unsubscribe = function (target, source) {\n for (var _i = 0, _a = this.handlers; _i < _a.length; _i++) {\n var event_2 = _a[_i];\n off(source, event_2.name, event_2.callback, target);\n }\n };\n return EventMap;\n}());\nexport { EventMap };\nvar EventDescriptor = (function () {\n function EventDescriptor(name, callback) {\n this.name = name;\n if (callback === true) {\n this.callback = getBubblingHandler(name);\n }\n else if (typeof callback === 'string') {\n this.callback =\n function localCallback() {\n var handler = this[callback];\n handler && handler.apply(this, arguments);\n };\n }\n else {\n this.callback = callback;\n }\n }\n return EventDescriptor;\n}());\nexport { EventDescriptor };\nvar _bubblingHandlers = {};\nfunction getBubblingHandler(event) {\n return _bubblingHandlers[event] || (_bubblingHandlers[event] = function (a, b, c, d, e) {\n if (d !== void 0 || e !== void 0)\n trigger5(this, event, a, b, c, d, e);\n if (c !== void 0)\n trigger3(this, event, a, b, c);\n else\n trigger2(this, event, a, b);\n });\n}\nvar EventHandler = (function () {\n function EventHandler(callback, context, next) {\n if (next === void 0) { next = null; }\n this.callback = callback;\n this.context = context;\n this.next = next;\n }\n return EventHandler;\n}());\nexport { EventHandler };\nfunction listOff(_events, name, callback, context) {\n var head = _events[name];\n var filteredHead, prev;\n for (var ev = head; ev; ev = ev.next) {\n if ((callback && callback !== ev.callback && callback !== ev.callback._callback) ||\n (context && context !== ev.context)) {\n prev = ev;\n filteredHead || (filteredHead = ev);\n }\n else {\n if (prev)\n prev.next = ev.next;\n }\n }\n if (head !== filteredHead)\n _events[name] = filteredHead;\n}\nfunction listSend2(head, a, b) {\n for (var ev = head; ev; ev = ev.next)\n ev.callback.call(ev.context, a, b);\n}\nfunction listSend3(head, a, b, c) {\n for (var ev = head; ev; ev = ev.next)\n ev.callback.call(ev.context, a, b, c);\n}\nfunction listSend4(head, a, b, c, d) {\n for (var ev = head; ev; ev = ev.next)\n ev.callback.call(ev.context, a, b, c, d);\n}\nfunction listSend5(head, a, b, c, d, e) {\n for (var ev = head; ev; ev = ev.next)\n ev.callback.call(ev.context, a, b, c, d, e);\n}\nfunction listSend6(head, a, b, c, d, e, f) {\n for (var ev = head; ev; ev = ev.next)\n ev.callback.call(ev.context, a, b, c, d, e, f);\n}\nexport function on(source, name, callback, context) {\n if (callback) {\n var _events = source._events || (source._events = Object.create(null));\n _events[name] = new EventHandler(callback, context, _events[name]);\n }\n}\nexport function once(source, name, callback, context) {\n if (callback) {\n var once_1 = _once(function () {\n off(source, name, once_1);\n callback.apply(this, arguments);\n });\n once_1._callback = callback;\n on(source, name, once_1, context);\n }\n}\nexport function off(source, name, callback, context) {\n var _events = source._events;\n if (_events) {\n if (callback || context) {\n if (name) {\n listOff(_events, name, callback, context);\n }\n else {\n for (var name_3 in _events) {\n listOff(_events, name_3, callback, context);\n }\n }\n }\n else if (name) {\n _events[name] = void 0;\n }\n else {\n source._events = void 0;\n }\n }\n}\nvar eventSplitter = /\\s+/;\nexport function strings(api, source, events, callback, context) {\n if (eventSplitter.test(events)) {\n var names = events.split(eventSplitter);\n for (var _i = 0, names_1 = names; _i < names_1.length; _i++) {\n var name_4 = names_1[_i];\n api(source, name_4, callback, context);\n }\n }\n else\n api(source, events, callback, context);\n}\nexport function trigger2(self, name, a, b) {\n var _events = self._events;\n if (_events) {\n var queue = _events[name], all = _events.all;\n listSend2(queue, a, b);\n listSend3(all, name, a, b);\n }\n}\n;\nexport function trigger3(self, name, a, b, c) {\n var _events = self._events;\n if (_events) {\n var queue = _events[name], all = _events.all;\n listSend3(queue, a, b, c);\n listSend4(all, name, a, b, c);\n }\n}\n;\nexport function trigger5(self, name, a, b, c, d, e) {\n var _events = self._events;\n if (_events) {\n var queue = _events[name], all = _events.all;\n listSend5(queue, a, b, c, d, e);\n listSend6(all, name, a, b, c, d, e);\n }\n}\n;\n//# sourceMappingURL=eventsource.js.map","import * as tslib_1 from \"tslib\";\nimport { define, mixinRules, definitions } from './mixins';\nimport { omit, transform } from './tools';\nimport { EventMap } from './eventsource';\nimport * as _eventsApi from './eventsource';\nvar EventHandler = _eventsApi.EventHandler, strings = _eventsApi.strings, on = _eventsApi.on, off = _eventsApi.off, once = _eventsApi.once, trigger5 = _eventsApi.trigger5, trigger2 = _eventsApi.trigger2, trigger3 = _eventsApi.trigger3;\nvar eventSplitter = /\\s+/;\nvar _idCount = 0;\nfunction uniqueId() {\n return 'l' + _idCount++;\n}\nexport { EventMap };\nvar Messenger = (function () {\n function Messenger() {\n this._events = void 0;\n this._listeningTo = void 0;\n this.cid = uniqueId();\n this.initialize.apply(this, arguments);\n }\n Messenger.onDefine = function (_a, BaseClass) {\n var localEvents = _a.localEvents, _localEvents = _a._localEvents, properties = _a.properties;\n if (localEvents || _localEvents) {\n var eventsMap = new EventMap(this.prototype._localEvents);\n localEvents && eventsMap.addEventsMap(localEvents);\n _localEvents && eventsMap.merge(_localEvents);\n this.prototype._localEvents = eventsMap;\n }\n if (properties) {\n Object.defineProperties(this.prototype, transform({}, properties, toPropertyDescriptor));\n }\n };\n Messenger.prototype.initialize = function () { };\n Messenger.prototype.on = function (events, callback, context) {\n if (typeof events === 'string')\n strings(on, this, events, callback, context);\n else\n for (var name_1 in events)\n strings(on, this, name_1, events[name_1], context || callback);\n return this;\n };\n Messenger.prototype.once = function (events, callback, context) {\n if (typeof events === 'string')\n strings(once, this, events, callback, context);\n else\n for (var name_2 in events)\n strings(once, this, name_2, events[name_2], context || callback);\n return this;\n };\n Messenger.prototype.off = function (events, callback, context) {\n if (!events)\n off(this, void 0, callback, context);\n else if (typeof events === 'string')\n strings(off, this, events, callback, context);\n else\n for (var name_3 in events)\n strings(off, this, name_3, events[name_3], context || callback);\n return this;\n };\n Messenger.prototype.trigger = function (name, a, b, c, d, e) {\n if (d !== void 0 || e !== void 0)\n trigger5(this, name, a, b, c, d, e);\n else if (c !== void 0)\n trigger3(this, name, a, b, c);\n else\n trigger2(this, name, a, b);\n return this;\n };\n Messenger.prototype.listenTo = function (source, a, b) {\n if (source) {\n addReference(this, source);\n source.on(a, !b && typeof a === 'object' ? this : b, this);\n }\n return this;\n };\n Messenger.prototype.listenToOnce = function (source, a, b) {\n if (source) {\n addReference(this, source);\n source.once(a, !b && typeof a === 'object' ? this : b, this);\n }\n return this;\n };\n Messenger.prototype.stopListening = function (a_source, a, b) {\n var _listeningTo = this._listeningTo;\n if (_listeningTo) {\n var removeAll = !(a || b), second = !b && typeof a === 'object' ? this : b;\n if (a_source) {\n var source = _listeningTo[a_source.cid];\n if (source) {\n if (removeAll)\n delete _listeningTo[a_source.cid];\n source.off(a, second, this);\n }\n }\n else if (a_source == null) {\n for (var cid in _listeningTo)\n _listeningTo[cid].off(a, second, this);\n if (removeAll)\n (this._listeningTo = void 0);\n }\n }\n return this;\n };\n Messenger.prototype.dispose = function () {\n if (this._disposed)\n return;\n this.stopListening();\n this.off();\n this._disposed = true;\n };\n Messenger = tslib_1.__decorate([\n define,\n definitions({\n properties: mixinRules.merge,\n localEvents: mixinRules.merge\n })\n ], Messenger);\n return Messenger;\n}());\nexport { Messenger };\nexport var Events = omit(Messenger.prototype, 'constructor', 'initialize');\nfunction toPropertyDescriptor(x) {\n if (x) {\n return typeof x === 'function' ? { get: x } : x;\n }\n}\nfunction addReference(listener, source) {\n var listeningTo = listener._listeningTo || (listener._listeningTo = Object.create(null)), cid = source.cid || (source.cid = uniqueId());\n listeningTo[cid] = source;\n}\n//# sourceMappingURL=events.js.map","var referenceMask = /\\^|([^.]+)/g;\nvar CompiledReference = (function () {\n function CompiledReference(reference, splitTail) {\n if (splitTail === void 0) { splitTail = false; }\n var path = reference\n .match(referenceMask)\n .map(function (key) {\n if (key === '^')\n return 'getOwner()';\n if (key[0] === '~')\n return \"getStore().get(\\\"\" + key.substr(1) + \"\\\")\";\n return key;\n });\n this.tail = splitTail && path.pop();\n this.local = !path.length;\n path.unshift('self');\n this.resolve = new Function('self', \"return \" + path.join('.') + \";\");\n }\n return CompiledReference;\n}());\nexport { CompiledReference };\nexport function resolveReference(root, reference, action) {\n var path = reference.match(referenceMask), skip = path.length - 1;\n var self = root;\n for (var i = 0; i < skip; i++) {\n var key = path[i];\n switch (key) {\n case '~':\n self = self.getStore();\n break;\n case '^':\n self = self.getOwner();\n break;\n default: self = self.get(key);\n }\n if (!self)\n return;\n }\n return action(self, path[skip]);\n}\n//# sourceMappingURL=traversable.js.map","export function getOwnerEndpoint(self) {\n var collection = self.collection;\n if (collection) {\n return getOwnerEndpoint(collection);\n }\n if (self._owner) {\n var _endpoints = self._owner._endpoints;\n return _endpoints && _endpoints[self._ownerKey];\n }\n}\nexport function createIOPromise(initialize) {\n var resolve, reject, onAbort;\n function abort(fn) {\n onAbort = fn;\n }\n var promise = new Promise(function (a_resolve, a_reject) {\n reject = a_reject;\n resolve = a_resolve;\n initialize(resolve, reject, abort);\n });\n promise.abort = function () {\n onAbort ? onAbort(resolve, reject) : reject(new Error(\"I/O Aborted\"));\n };\n return promise;\n}\nexport function startIO(self, promise, options, thenDo) {\n abortIO(self);\n options.ioUpdate = true;\n self._ioPromise = promise\n .then(function (resp) {\n self._ioPromise = null;\n var result = thenDo ? thenDo(resp) : resp;\n triggerAndBubble(self, 'sync', self, resp, options);\n return result;\n })\n .catch(function (err) {\n self._ioPromise = null;\n console.error(err);\n triggerAndBubble(self, 'error', self, err, options);\n throw err;\n });\n self._ioPromise.abort = promise.abort;\n return self._ioPromise;\n}\nexport function abortIO(self) {\n if (self._ioPromise && self._ioPromise.abort) {\n self._ioPromise.abort();\n self._ioPromise = null;\n }\n}\nexport function triggerAndBubble(eventSource) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n eventSource.trigger.apply(eventSource, args);\n var collection = eventSource.collection;\n collection && collection.trigger.apply(collection, args);\n}\n//# sourceMappingURL=io-tools.js.map","import * as tslib_1 from \"tslib\";\nimport { Messenger, tools, mixins, mixinRules, definitions, eventsApi, define } from './object-plus';\nimport { ValidationError } from './validation';\nimport { resolveReference } from './traversable';\nimport { abortIO } from './io-tools';\nvar assign = tools.assign, trigger2 = eventsApi.trigger2, trigger3 = eventsApi.trigger3, on = eventsApi.on, off = eventsApi.off;\nexport var ItemsBehavior;\n(function (ItemsBehavior) {\n ItemsBehavior[ItemsBehavior[\"share\"] = 1] = \"share\";\n ItemsBehavior[ItemsBehavior[\"listen\"] = 2] = \"listen\";\n ItemsBehavior[ItemsBehavior[\"persistent\"] = 4] = \"persistent\";\n})(ItemsBehavior || (ItemsBehavior = {}));\nvar Transactional = (function () {\n function Transactional(cid) {\n this._events = void 0;\n this._changeToken = {};\n this._transaction = false;\n this._isDirty = null;\n this._owner = void 0;\n this._ownerKey = void 0;\n this._validationError = void 0;\n this.cid = this.cidPrefix + cid;\n }\n Transactional_1 = Transactional;\n Transactional.onDefine = function (definitions, BaseClass) {\n if (definitions.endpoint)\n this.prototype._endpoint = definitions.endpoint;\n Messenger.onDefine.call(this, definitions, BaseClass);\n };\n ;\n Transactional.onExtend = function (BaseClass) {\n if (BaseClass.create === this.create) {\n this.create = Transactional_1.create;\n }\n };\n Transactional.create = function (a, b) {\n return new this(a, b);\n };\n Transactional.prototype.dispose = function () {\n if (this._disposed)\n return;\n abortIO(this);\n this._owner = void 0;\n this._ownerKey = void 0;\n this.off();\n this.stopListening();\n this._disposed = true;\n };\n Transactional.prototype.initialize = function () { };\n Transactional.prototype.onChanges = function (handler, target) {\n on(this, this._changeEventName, handler, target);\n };\n Transactional.prototype.offChanges = function (handler, target) {\n off(this, this._changeEventName, handler, target);\n };\n Transactional.prototype.listenToChanges = function (target, handler) {\n this.listenTo(target, target._changeEventName, handler);\n };\n Transactional.prototype.transaction = function (fun, options) {\n if (options === void 0) { options = {}; }\n var isRoot = transactionApi.begin(this);\n var update = fun.call(this, this);\n update && this.set(update);\n isRoot && transactionApi.commit(this);\n };\n Transactional.prototype.updateEach = function (iteratee, options) {\n var isRoot = transactionApi.begin(this);\n this.each(iteratee);\n isRoot && transactionApi.commit(this);\n };\n Transactional.prototype.set = function (values, options) {\n if (values) {\n var transaction = this._createTransaction(values, options);\n transaction && transaction.commit();\n }\n return this;\n };\n Transactional.prototype.assignFrom = function (source) {\n return this.set(source.__inner_state__ || source, { merge: true });\n };\n Transactional.prototype.parse = function (data, options) { return data; };\n Transactional.prototype.deepGet = function (reference) {\n return resolveReference(this, reference, function (object, key) { return object.get ? object.get(key) : object[key]; });\n };\n Transactional.prototype.getOwner = function () {\n return this._owner;\n };\n Transactional.prototype.getStore = function () {\n var _owner = this._owner;\n return _owner ? _owner.getStore() : this._defaultStore;\n };\n Transactional.prototype.map = function (iteratee, context) {\n var arr = [], fun = context !== void 0 ? function (v, k) { return iteratee.call(context, v, k); } : iteratee;\n this.each(function (val, key) {\n var result = fun(val, key);\n if (result !== void 0)\n arr.push(result);\n });\n return arr;\n };\n Transactional.prototype.hasPendingIO = function () { return this._ioPromise; };\n Transactional.prototype.fetch = function (options) { throw new Error(\"Not implemented\"); };\n Transactional.prototype.getEndpoint = function () {\n return getOwnerEndpoint(this) || this._endpoint;\n };\n Transactional.prototype.mapObject = function (iteratee, context) {\n var obj = {}, fun = context !== void 0 ? function (v, k) { return iteratee.call(context, v, k); } : iteratee;\n this.each(function (val, key) {\n var result = iteratee(val, key);\n if (result !== void 0)\n obj[key] = result;\n });\n return obj;\n };\n Object.defineProperty(Transactional.prototype, \"validationError\", {\n get: function () {\n var error = this._validationError || (this._validationError = new ValidationError(this));\n return error.length ? error : null;\n },\n enumerable: true,\n configurable: true\n });\n Transactional.prototype.validate = function (obj) { };\n Transactional.prototype.getValidationError = function (key) {\n var error = this.validationError;\n return (key ? error && error.nested[key] : error) || null;\n };\n Transactional.prototype.deepValidationError = function (reference) {\n return resolveReference(this, reference, function (object, key) { return object.getValidationError(key); });\n };\n Transactional.prototype.eachValidationError = function (iteratee) {\n var validationError = this.validationError;\n validationError && validationError.eachError(iteratee, this);\n };\n Transactional.prototype.isValid = function (key) {\n return !this.getValidationError(key);\n };\n Transactional.prototype.valueOf = function () { return this.cid; };\n Transactional.prototype.toString = function () { return this.cid; };\n Transactional.prototype.getClassName = function () {\n var name = this.constructor.name;\n if (name !== 'Subclass')\n return name;\n };\n Transactional = Transactional_1 = tslib_1.__decorate([\n define,\n definitions({\n endpoint: mixinRules.value\n }),\n mixins(Messenger)\n ], Transactional);\n return Transactional;\n var Transactional_1;\n}());\nexport { Transactional };\nexport var transactionApi = {\n begin: function (object) {\n return object._transaction ? false : (object._transaction = true);\n },\n markAsDirty: function (object, options) {\n var dirty = !options.silent;\n if (dirty)\n object._isDirty = options;\n object._changeToken = {};\n object._validationError = void 0;\n return dirty;\n },\n commit: function (object, initiator) {\n var originalOptions = object._isDirty;\n if (originalOptions) {\n while (object._isDirty) {\n var options = object._isDirty;\n object._isDirty = null;\n trigger3(object, object._changeEventName, object, options, initiator);\n }\n object._transaction = false;\n var _owner = object._owner;\n if (_owner && _owner !== initiator) {\n _owner._onChildrenChange(object, originalOptions);\n }\n }\n else {\n object._isDirty = null;\n object._transaction = false;\n }\n },\n aquire: function (owner, child, key) {\n if (!child._owner) {\n child._owner = owner;\n child._ownerKey = key;\n return true;\n }\n return child._owner === owner;\n },\n free: function (owner, child) {\n if (owner === child._owner) {\n child._owner = void 0;\n child._ownerKey = void 0;\n }\n }\n};\nfunction getOwnerEndpoint(self) {\n var collection = self.collection;\n if (collection) {\n return getOwnerEndpoint(collection);\n }\n if (self._owner) {\n var _endpoints = self._owner._endpoints;\n return _endpoints && _endpoints[self._ownerKey];\n }\n}\n//# sourceMappingURL=transactions.js.map","import { transactionApi } from \"../../transactions\";\nvar _begin = transactionApi.begin, _markAsDirty = transactionApi.markAsDirty, commit = transactionApi.commit;\nimport { eventsApi } from '../../object-plus';\nvar trigger3 = eventsApi.trigger3;\nexport function setAttribute(record, name, value) {\n var isRoot = begin(record), options = {};\n if (record._attributes[name].doUpdate(value, record, options)) {\n markAsDirty(record, options);\n trigger3(record, 'change:' + name, record, record.attributes[name], options);\n }\n isRoot && commit(record);\n}\nfunction begin(record) {\n if (_begin(record)) {\n record._previousAttributes = new record.AttributesCopy(record.attributes);\n record._changedAttributes = null;\n return true;\n }\n return false;\n}\nfunction markAsDirty(record, options) {\n if (record._changedAttributes) {\n record._changedAttributes = null;\n }\n return _markAsDirty(record, options);\n}\nexport var UpdateRecordMixin = {\n transaction: function (fun, options) {\n if (options === void 0) { options = {}; }\n var isRoot = begin(this);\n fun.call(this, this);\n isRoot && commit(this);\n },\n _onChildrenChange: function (child, options) {\n var _ownerKey = child._ownerKey, attribute = this._attributes[_ownerKey];\n if (!attribute || attribute.propagateChanges)\n this.forceAttributeChange(_ownerKey, options);\n },\n forceAttributeChange: function (key, options) {\n if (options === void 0) { options = {}; }\n var isRoot = begin(this);\n if (markAsDirty(this, options)) {\n trigger3(this, 'change:' + key, this, this.attributes[key], options);\n }\n isRoot && commit(this);\n },\n _createTransaction: function (a_values, options) {\n if (options === void 0) { options = {}; }\n var isRoot = begin(this), changes = [], nested = [], _attributes = this._attributes, values = options.parse ? this.parse(a_values, options) : a_values;\n var unknown;\n if (shouldBeAnObject(this, values)) {\n for (var name_1 in values) {\n var spec = _attributes[name_1];\n if (spec) {\n if (spec.doUpdate(values[name_1], this, options, nested)) {\n changes.push(name_1);\n }\n }\n else {\n unknown || (unknown = []);\n unknown.push(\"'\" + name_1 + \"'\");\n }\n }\n if (unknown) {\n }\n }\n if (changes.length && markAsDirty(this, options)) {\n return new RecordTransaction(this, isRoot, nested, changes);\n }\n for (var _i = 0, nested_1 = nested; _i < nested_1.length; _i++) {\n var pendingTransaction = nested_1[_i];\n pendingTransaction.commit(this);\n }\n isRoot && commit(this);\n }\n};\nexport function constructorsMixin(attrDefs) {\n var attrs = Object.keys(attrDefs);\n var AttributesCopy = new Function('values', \"\\n \" + attrs.map(function (attr) { return \"\\n this.\" + attr + \" = values.\" + attr + \";\\n \"; }).join('') + \"\\n \");\n AttributesCopy.prototype = Object.prototype;\n var Attributes = new Function('record', 'values', 'options', \"\\n var _attrs = record._attributes;\\n\\n \" + attrs.map(function (attr) { return \"\\n this.\" + attr + \" = _attrs.\" + attr + \".doInit( values.\" + attr + \", record, options );\\n \"; }).join('') + \"\\n \");\n Attributes.prototype = Object.prototype;\n return { Attributes: Attributes, AttributesCopy: AttributesCopy };\n}\nexport function shouldBeAnObject(record, values) {\n if (values && values.constructor === Object)\n return true;\n record._log('warn', 'update with non-object is ignored!', { values: values });\n return false;\n}\nvar RecordTransaction = (function () {\n function RecordTransaction(object, isRoot, nested, changes) {\n this.object = object;\n this.isRoot = isRoot;\n this.nested = nested;\n this.changes = changes;\n }\n RecordTransaction.prototype.commit = function (initiator) {\n var _a = this, nested = _a.nested, object = _a.object, changes = _a.changes;\n for (var _i = 0, nested_2 = nested; _i < nested_2.length; _i++) {\n var transaction = nested_2[_i];\n transaction.commit(object);\n }\n var attributes = object.attributes, _isDirty = object._isDirty;\n for (var _b = 0, changes_1 = changes; _b < changes_1.length; _b++) {\n var key = changes_1[_b];\n trigger3(object, 'change:' + key, object, attributes[key], _isDirty);\n }\n this.isRoot && commit(object, initiator);\n };\n return RecordTransaction;\n}());\nexport { RecordTransaction };\n//# sourceMappingURL=updates.js.map","import { setAttribute } from './updates';\nimport { tools } from '../../object-plus';\nvar notEqual = tools.notEqual, assign = tools.assign;\nvar emptyOptions = {};\nvar AnyType = (function () {\n function AnyType(name, a_options) {\n this.name = name;\n this.getHook = null;\n this.options = a_options;\n var options = assign({ getHooks: [], transforms: [], changeHandlers: [] }, a_options);\n options.getHooks = options.getHooks.slice();\n options.transforms = options.transforms.slice();\n options.changeHandlers = options.changeHandlers.slice();\n var value = options.value, type = options.type, parse = options.parse, toJSON = options.toJSON, changeEvents = options.changeEvents, validate = options.validate, getHooks = options.getHooks, transforms = options.transforms, changeHandlers = options.changeHandlers;\n this.value = value;\n this.type = type;\n if (!options.hasCustomDefault && type) {\n this.defaultValue = this.create;\n }\n else if (tools.isValidJSON(value)) {\n this.defaultValue = new Function(\"return \" + JSON.stringify(value) + \";\");\n }\n else {\n this.defaultValue = this.defaultValue;\n }\n this.propagateChanges = changeEvents !== false;\n this.toJSON = toJSON === void 0 ? this.toJSON : toJSON;\n this.validate = validate || this.validate;\n if (options.isRequired) {\n this.validate = wrapIsRequired(this.validate);\n }\n transforms.unshift(this.convert);\n this.parse = parse || this.parse;\n if (this.get)\n getHooks.unshift(this.get);\n this.initialize.call(this, options);\n if (getHooks.length) {\n var getHook_1 = this.getHook = getHooks.reduce(chainGetHooks);\n var validate_1 = this.validate;\n this.validate = function (record, value, key) {\n return validate_1.call(this, record, getHook_1.call(record, value, key), key);\n };\n }\n this.transform = transforms.length ? transforms.reduce(chainTransforms) : this.transform;\n this.handleChange = changeHandlers.length ? changeHandlers.reduce(chainChangeHandlers) : this.handleChange;\n }\n AnyType.create = function (options, name) {\n var type = options.type, AttributeCtor = options._attribute || (type ? type._attribute : AnyType);\n return new AttributeCtor(name, options);\n };\n AnyType.prototype.canBeUpdated = function (prev, next, options) { };\n AnyType.prototype.transform = function (next, prev, model, options) { return next; };\n AnyType.prototype.convert = function (next, prev, model, options) { return next; };\n AnyType.prototype.isChanged = function (a, b) {\n return notEqual(a, b);\n };\n AnyType.prototype.handleChange = function (next, prev, model, options) { };\n AnyType.prototype.create = function () { return void 0; };\n AnyType.prototype.clone = function (value, record) {\n return value;\n };\n AnyType.prototype.dispose = function (record, value) {\n this.handleChange(void 0, value, record, emptyOptions);\n };\n AnyType.prototype.validate = function (record, value, key) { };\n AnyType.prototype.toJSON = function (value, key) {\n return value && value.toJSON ? value.toJSON() : value;\n };\n AnyType.prototype.createPropertyDescriptor = function () {\n var _a = this, name = _a.name, getHook = _a.getHook;\n if (name !== 'id') {\n return {\n set: function (value) {\n setAttribute(this, name, value);\n },\n get: (getHook ?\n function () {\n return getHook.call(this, this.attributes[name], name);\n } :\n function () { return this.attributes[name]; })\n };\n }\n };\n AnyType.prototype.initialize = function (name, options) { };\n AnyType.prototype.doInit = function (value, record, options) {\n var v = value === void 0 ? this.defaultValue() : value, x = this.transform(v, void 0, record, options);\n this.handleChange(x, void 0, record, options);\n return x;\n };\n AnyType.prototype.doUpdate = function (value, record, options, nested) {\n var name = this.name, attributes = record.attributes, prev = attributes[name];\n var next = this.transform(value, prev, record, options);\n attributes[name] = next;\n if (this.isChanged(next, prev)) {\n this.handleChange(next, prev, record, options);\n return true;\n }\n return false;\n };\n AnyType.prototype._log = function (level, text, value, record) {\n tools.log(level, \"[Attribute Update Error] \" + record.getClassName() + \".\" + this.name + \": \" + text, {\n 'Record': record,\n 'Attribute definition': this,\n 'Prev. value': record.attributes[this.name],\n 'New value': value\n });\n };\n AnyType.prototype.defaultValue = function () {\n return this.value;\n };\n return AnyType;\n}());\nexport { AnyType };\nfunction chainGetHooks(prevHook, nextHook) {\n return function (value, name) {\n return nextHook.call(this, prevHook.call(this, value, name), name);\n };\n}\nfunction chainTransforms(prevTransform, nextTransform) {\n return function (next, prev, record, options) {\n return nextTransform.call(this, prevTransform.call(this, next, prev, record, options), prev, record, options);\n };\n}\nfunction chainChangeHandlers(prevHandler, nextHandler) {\n return function (next, prev, record, options) {\n prevHandler.call(this, next, prev, record, options);\n nextHandler.call(this, next, prev, record, options);\n };\n}\nfunction wrapIsRequired(validate) {\n return function (record, value, key) {\n return value ? validate.call(this, record, value, key) : 'Required';\n };\n}\n//# sourceMappingURL=any.js.map","import { Transactional } from '../../transactions';\nimport { EventMap, definitionDecorator, tools } from '../../object-plus';\nvar assign = tools.assign;\nvar ChainableAttributeSpec = (function () {\n function ChainableAttributeSpec(options) {\n this.options = { getHooks: [], transforms: [], changeHandlers: [] };\n if (options)\n assign(this.options, options);\n }\n ChainableAttributeSpec.prototype.check = function (check, error) {\n function validate(model, value, name) {\n if (!check.call(model, value, name)) {\n var msg = error || check.error || name + ' is not valid';\n return typeof msg === 'function' ? msg.call(model, name) : msg;\n }\n }\n var prev = this.options.validate;\n return this.metadata({\n validate: prev ? (function (model, value, name) {\n return prev(model, value, name) || validate(model, value, name);\n }) : validate\n });\n };\n Object.defineProperty(ChainableAttributeSpec.prototype, \"asProp\", {\n get: function () {\n return definitionDecorator('attributes', this);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ChainableAttributeSpec.prototype, \"isRequired\", {\n get: function () {\n return this.metadata({ isRequired: true });\n },\n enumerable: true,\n configurable: true\n });\n ChainableAttributeSpec.prototype.endpoint = function (endpoint) {\n return this.metadata({ endpoint: endpoint });\n };\n ChainableAttributeSpec.prototype.watcher = function (ref) {\n return this.metadata({ _onChange: ref });\n };\n ChainableAttributeSpec.prototype.parse = function (fun) {\n return this.metadata({ parse: fun });\n };\n ChainableAttributeSpec.prototype.toJSON = function (fun) {\n return this.metadata({\n toJSON: typeof fun === 'function' ? fun : (fun ? function (x) { return x && x.toJSON(); } : emptyFunction)\n });\n };\n ChainableAttributeSpec.prototype.get = function (fun) {\n return this.metadata({\n getHooks: this.options.getHooks.concat(fun)\n });\n };\n ChainableAttributeSpec.prototype.set = function (fun) {\n function handleSetHook(next, prev, record, options) {\n if (this.isChanged(next, prev)) {\n var changed = fun.call(record, next, this.name);\n return changed === void 0 ? prev : this.convert(changed, prev, record, options);\n }\n return prev;\n }\n return this.metadata({\n transforms: this.options.transforms.concat(handleSetHook)\n });\n };\n ChainableAttributeSpec.prototype.changeEvents = function (events) {\n return this.metadata({ changeEvents: events });\n };\n ChainableAttributeSpec.prototype.events = function (map) {\n var eventMap = new EventMap(map);\n function handleEventsSubscribtion(next, prev, record) {\n prev && prev.trigger && eventMap.unsubscribe(record, prev);\n next && next.trigger && eventMap.subscribe(record, next);\n }\n return this.metadata({\n changeHandlers: this.options.changeHandlers.concat(handleEventsSubscribtion)\n });\n };\n Object.defineProperty(ChainableAttributeSpec.prototype, \"has\", {\n get: function () {\n return this;\n },\n enumerable: true,\n configurable: true\n });\n ChainableAttributeSpec.prototype.metadata = function (options) {\n var cloned = new ChainableAttributeSpec(this.options);\n assign(cloned.options, options);\n return cloned;\n };\n ChainableAttributeSpec.prototype.value = function (x) {\n return this.metadata({ value: x, hasCustomDefault: true });\n };\n return ChainableAttributeSpec;\n}());\nexport { ChainableAttributeSpec };\nfunction emptyFunction() { }\nFunction.prototype.value = function (x) {\n return new ChainableAttributeSpec({ type: this, value: x, hasCustomDefault: true });\n};\nObject.defineProperty(Function.prototype, 'isRequired', {\n get: function () { return this._isRequired || this.has.isRequired; },\n set: function (x) { this._isRequired = x; }\n});\nObject.defineProperty(Function.prototype, 'asProp', {\n get: function () { return this.has.asProp; },\n});\nObject.defineProperty(Function.prototype, 'has', {\n get: function () {\n return this._has || new ChainableAttributeSpec({\n type: this,\n value: this._attribute.defaultValue,\n hasCustomDefault: this._attribute.defaultValue !== void 0\n });\n },\n set: function (value) { this._has = value; }\n});\nexport function toAttributeOptions(spec) {\n var attrSpec;\n if (typeof spec === 'function') {\n attrSpec = spec.has;\n }\n else if (spec && spec instanceof ChainableAttributeSpec) {\n attrSpec = spec;\n }\n else {\n var type = inferType(spec);\n if (type && type.prototype instanceof Transactional) {\n attrSpec = type.shared.value(spec);\n }\n else {\n attrSpec = new ChainableAttributeSpec({ type: type, value: spec, hasCustomDefault: true });\n }\n }\n return attrSpec.options;\n}\nfunction inferType(value) {\n switch (typeof value) {\n case 'number':\n return Number;\n case 'string':\n return String;\n case 'boolean':\n return Boolean;\n case 'undefined':\n return void 0;\n case 'object':\n return value ? value.constructor : void 0;\n }\n}\n//# sourceMappingURL=attrDef.js.map","import * as tslib_1 from \"tslib\";\nimport { AnyType } from './any';\nimport { ChainableAttributeSpec } from './attrDef';\nvar DateProto = Date.prototype;\nvar DateType = (function (_super) {\n tslib_1.__extends(DateType, _super);\n function DateType() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DateType.prototype.create = function () {\n return new Date();\n };\n DateType.prototype.convert = function (next, a, record) {\n if (next == null || next instanceof Date)\n return next;\n var date = new Date(next), timestamp = date.getTime();\n if (timestamp !== timestamp) {\n this._log('warn', 'assigned with Invalid Date', next, record);\n }\n return date;\n };\n DateType.prototype.validate = function (model, value, name) {\n if (value != null) {\n var timestamp = value.getTime();\n if (timestamp !== timestamp)\n return name + ' is Invalid Date';\n }\n };\n DateType.prototype.toJSON = function (value) { return value && value.toISOString(); };\n DateType.prototype.isChanged = function (a, b) { return (a && a.getTime()) !== (b && b.getTime()); };\n DateType.prototype.doInit = function (value, record, options) {\n return this.transform(value === void 0 ? this.defaultValue() : value, void 0, record, options);\n };\n DateType.prototype.doUpdate = function (value, record, options, nested) {\n var name = this.name, attributes = record.attributes, prev = attributes[name];\n return this.isChanged(prev, attributes[name] = this.transform(value, prev, record, options));\n };\n DateType.prototype.clone = function (value) { return value && new Date(value.getTime()); };\n DateType.prototype.dispose = function () { };\n return DateType;\n}(AnyType));\nexport { DateType };\nDate._attribute = DateType;\nvar msDatePattern = /\\/Date\\(([0-9]+)\\)\\//;\nvar MSDateType = (function (_super) {\n tslib_1.__extends(MSDateType, _super);\n function MSDateType() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MSDateType.prototype.convert = function (next) {\n if (typeof next === 'string') {\n var msDate = msDatePattern.exec(next);\n if (msDate) {\n return new Date(Number(msDate[1]));\n }\n }\n return DateType.prototype.convert.apply(this, arguments);\n };\n MSDateType.prototype.toJSON = function (value) { return value && \"/Date(\" + value.getTime() + \")/\"; };\n return MSDateType;\n}(DateType));\nexport { MSDateType };\nvar TimestampType = (function (_super) {\n tslib_1.__extends(TimestampType, _super);\n function TimestampType() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TimestampType.prototype.toJSON = function (value) { return value && value.getTime(); };\n return TimestampType;\n}(DateType));\nexport { TimestampType };\nObject.defineProperties(Date, {\n microsoft: {\n get: function () {\n return new ChainableAttributeSpec({\n type: Date,\n _attribute: MSDateType\n });\n }\n },\n timestamp: {\n get: function () {\n return new ChainableAttributeSpec({\n type: Date,\n _attribute: TimestampType\n });\n }\n }\n});\nfunction supportsDate(date) {\n return !isNaN((new Date(date)).getTime());\n}\nif (!supportsDate('2011-11-29T15:52:30.5') ||\n !supportsDate('2011-11-29T15:52:30.52') ||\n !supportsDate('2011-11-29T15:52:18.867') ||\n !supportsDate('2011-11-29T15:52:18.867Z') ||\n !supportsDate('2011-11-29T15:52:18.867-03:30')) {\n DateType.prototype.convert = function (value) {\n return value == null || value instanceof Date ? value : new Date(safeParseDate(value));\n };\n}\nvar numericKeys = [1, 4, 5, 6, 7, 10, 11], isoDatePattern = /^(\\d{4}|[+\\-]\\d{6})(?:-(\\d{2})(?:-(\\d{2}))?)?(?:T(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?)?$/;\nfunction safeParseDate(date) {\n var timestamp, struct, minutesOffset = 0;\n if ((struct = isoDatePattern.exec(date))) {\n for (var i = 0, k; (k = numericKeys[i]); ++i) {\n struct[k] = +struct[k] || 0;\n }\n struct[2] = (+struct[2] || 1) - 1;\n struct[3] = +struct[3] || 1;\n if (struct[8] !== 'Z' && struct[9] !== undefined) {\n minutesOffset = struct[10] * 60 + struct[11];\n if (struct[9] === '+') {\n minutesOffset = 0 - minutesOffset;\n }\n }\n timestamp =\n Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + minutesOffset, struct[6], struct[7]);\n }\n else {\n timestamp = Date.parse(date);\n }\n return timestamp;\n}\n//# sourceMappingURL=date.js.map","import * as tslib_1 from \"tslib\";\nimport { AnyType } from './any';\nvar ImmutableClassType = (function (_super) {\n tslib_1.__extends(ImmutableClassType, _super);\n function ImmutableClassType() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ImmutableClassType.prototype.create = function () {\n return new this.type();\n };\n ImmutableClassType.prototype.convert = function (next) {\n return next == null || next instanceof this.type ? next : new this.type(next);\n };\n ImmutableClassType.prototype.toJSON = function (value) {\n return value && value.toJSON ? value.toJSON() : value;\n };\n ImmutableClassType.prototype.clone = function (value) {\n return new this.type(this.toJSON(value));\n };\n ImmutableClassType.prototype.isChanged = function (a, b) {\n return a !== b;\n };\n return ImmutableClassType;\n}(AnyType));\nFunction.prototype._attribute = ImmutableClassType;\nvar PrimitiveType = (function (_super) {\n tslib_1.__extends(PrimitiveType, _super);\n function PrimitiveType() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PrimitiveType.prototype.dispose = function () { };\n PrimitiveType.prototype.create = function () { return this.type(); };\n PrimitiveType.prototype.toJSON = function (value) { return value; };\n PrimitiveType.prototype.convert = function (next) { return next == null ? next : this.type(next); };\n PrimitiveType.prototype.isChanged = function (a, b) { return a !== b; };\n PrimitiveType.prototype.clone = function (value) { return value; };\n PrimitiveType.prototype.doInit = function (value, record, options) {\n return this.transform(value === void 0 ? this.value : value, void 0, record, options);\n };\n PrimitiveType.prototype.doUpdate = function (value, record, options, nested) {\n var name = this.name, attributes = record.attributes, prev = attributes[name];\n return prev !== (attributes[name] = this.transform(value, prev, record, options));\n };\n PrimitiveType.prototype.initialize = function () {\n if (!this.options.hasCustomDefault) {\n this.value = this.type();\n }\n };\n return PrimitiveType;\n}(AnyType));\nexport { PrimitiveType };\nBoolean._attribute = String._attribute = PrimitiveType;\nvar NumericType = (function (_super) {\n tslib_1.__extends(NumericType, _super);\n function NumericType() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NumericType.prototype.create = function () {\n return 0;\n };\n NumericType.prototype.convert = function (next, prev, record) {\n var num = next == null ? next : this.type(next);\n if (num !== num) {\n this._log('warn', 'assigned with Invalid Number', next, record);\n }\n return num;\n };\n NumericType.prototype.validate = function (model, value, name) {\n if (value != null && !isFinite(value)) {\n return name + ' is not valid number';\n }\n };\n return NumericType;\n}(PrimitiveType));\nexport { NumericType };\nNumber._attribute = NumericType;\nfunction Integer(x) {\n return x ? Math.round(x) : 0;\n}\nInteger._attribute = NumericType;\nNumber.integer = Integer;\nif (typeof window !== 'undefined') {\n window.Integer = Number.integer;\n}\nvar ArrayType = (function (_super) {\n tslib_1.__extends(ArrayType, _super);\n function ArrayType() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ArrayType.prototype.toJSON = function (value) { return value; };\n ArrayType.prototype.dispose = function () { };\n ArrayType.prototype.create = function () { return []; };\n ArrayType.prototype.convert = function (next, prev, record) {\n if (next == null || Array.isArray(next))\n return next;\n this._log('warn', 'assignment of non-array to Array attribute is ignored', next, record);\n return [];\n };\n ArrayType.prototype.clone = function (value) {\n return value && value.slice();\n };\n return ArrayType;\n}(AnyType));\nexport { ArrayType };\nArray._attribute = ArrayType;\nvar ObjectType = (function (_super) {\n tslib_1.__extends(ObjectType, _super);\n function ObjectType() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ObjectType.prototype.create = function () { return {}; };\n ObjectType.prototype.convert = function (next, prev, record) {\n if (next == null || typeof next === 'object')\n return next;\n this._log('warn', 'assignment of non-object to Object attribute is ignored', next, record);\n return {};\n };\n return ObjectType;\n}(AnyType));\nexport { ObjectType };\nObject._attribute = ObjectType;\nexport function doNothing() { }\nvar FunctionType = (function (_super) {\n tslib_1.__extends(FunctionType, _super);\n function FunctionType() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FunctionType.prototype.toJSON = function (value) { return void 0; };\n FunctionType.prototype.create = function () { return doNothing; };\n FunctionType.prototype.dispose = function () { };\n FunctionType.prototype.convert = function (next, prev, record) {\n if (next == null || typeof next === 'function')\n return next;\n this._log('warn', 'assigned with non-function', next, record);\n return doNothing;\n };\n FunctionType.prototype.clone = function (value) { return value; };\n return FunctionType;\n}(AnyType));\nexport { FunctionType };\nFunction._attribute = FunctionType;\n//# sourceMappingURL=basic.js.map","import * as tslib_1 from \"tslib\";\nimport { tools as _, eventsApi } from '../../object-plus';\nexport * from './any';\nexport * from './owned';\nexport * from './date';\nexport * from './basic';\nexport * from './shared';\nexport * from './updates';\nexport * from './attrDef';\nimport { AnyType } from './any';\nimport { constructorsMixin } from './updates';\nimport { toAttributeOptions, ChainableAttributeSpec } from './attrDef';\nimport { CompiledReference } from '../../traversable';\nexport default function (attributesDefinition, baseClassAttributes) {\n var myAttributes = _.transform({}, attributesDefinition, createAttribute), allAttributes = _.defaults({}, myAttributes, baseClassAttributes);\n var ConstructorsMixin = constructorsMixin(allAttributes);\n return tslib_1.__assign({}, ConstructorsMixin, { _attributes: new ConstructorsMixin.AttributesCopy(allAttributes), _attributesArray: Object.keys(allAttributes).map(function (key) { return allAttributes[key]; }), properties: _.transform({}, myAttributes, function (x) { return x.createPropertyDescriptor(); }), _toJSON: createToJSON(allAttributes) }, parseMixin(allAttributes), localEventsMixin(myAttributes), { _endpoints: _.transform({}, allAttributes, function (attrDef) { return attrDef.options.endpoint; }) });\n}\nexport function createAttribute(spec, name) {\n return AnyType.create(toAttributeOptions(spec), name);\n}\nfunction parseMixin(attributes) {\n var attrsWithParse = Object.keys(attributes).filter(function (name) { return attributes[name].parse; });\n return attrsWithParse.length ? {\n _parse: new Function('json', \"\\n var _attrs = this._attributes;\\n\\n \" + attrsWithParse.map(function (name) { return \" \\n json.\" + name + \" === void 0 || ( json.\" + name + \" = _attrs.\" + name + \".parse.call( this, json.\" + name + \", \\\"\" + name + \"\\\" ) );\\n \"; }).join('') + \"\\n\\n return json;\\n \")\n } : {};\n}\nfunction createToJSON(attributes) {\n return new Function(\"\\n var json = {},\\n v = this.attributes,\\n a = this._attributes;\\n\\n \" + Object.keys(attributes).map(function (key) {\n if (attributes[key].toJSON) {\n return \"json.\" + key + \" = a.\" + key + \".toJSON.call( this, v.\" + key + \", '\" + key + \"' );\";\n }\n }).join('\\n') + \"\\n\\n return json;\\n \");\n}\nexport function createSharedTypeSpec(Constructor, Attribute) {\n if (!Constructor.hasOwnProperty('shared')) {\n Object.defineProperty(Constructor, 'shared', {\n get: function () {\n return new ChainableAttributeSpec({\n value: null,\n type: Constructor,\n _attribute: Attribute\n });\n }\n });\n }\n}\nfunction localEventsMixin(attrSpecs) {\n var _localEvents;\n for (var key in attrSpecs) {\n var attribute = attrSpecs[key], _onChange = attribute.options._onChange;\n if (_onChange) {\n _localEvents || (_localEvents = new eventsApi.EventMap());\n _localEvents.addEvent('change:' + key, typeof _onChange === 'string' ?\n createWatcherFromRef(_onChange, key) :\n wrapWatcher(_onChange, key));\n }\n }\n return _localEvents ? { _localEvents: _localEvents } : {};\n}\nfunction wrapWatcher(watcher, key) {\n return function (record, value) {\n watcher.call(record, value, key);\n };\n}\nfunction createWatcherFromRef(ref, key) {\n var _a = new CompiledReference(ref, true), local = _a.local, resolve = _a.resolve, tail = _a.tail;\n return local ?\n function (record, value) {\n record[tail](value, key);\n } :\n function (record, value) {\n resolve(record)[tail](value, key);\n };\n}\n//# sourceMappingURL=index.js.map","import * as tslib_1 from \"tslib\";\nimport { Record } from './record';\nimport { tools, predefine } from '../object-plus';\nimport compile from './attributes';\nimport { Transactional } from '../transactions';\nimport { createSharedTypeSpec, AggregatedType, SharedType } from './attributes';\nexport * from './attributes';\nexport { Record };\nvar assign = tools.assign, defaults = tools.defaults, omit = tools.omit, getBaseClass = tools.getBaseClass;\nRecord.onExtend = function (BaseClass) {\n Transactional.onExtend.call(this, BaseClass);\n var Class = this;\n var DefaultCollection = (function (_super) {\n tslib_1.__extends(DefaultCollection, _super);\n function DefaultCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DefaultCollection.model = Class;\n DefaultCollection = tslib_1.__decorate([\n predefine\n ], DefaultCollection);\n return DefaultCollection;\n }(BaseClass.Collection));\n this.DefaultCollection = DefaultCollection;\n if (Class.Collection === BaseClass.Collection) {\n this.Collection = DefaultCollection;\n }\n createSharedTypeSpec(this, SharedType);\n};\nRecord.onDefine = function (definition, BaseClass) {\n var baseProto = BaseClass.prototype;\n var _a = compile(this.attributes = getAttributes(definition), baseProto._attributes), properties = _a.properties, _localEvents = _a._localEvents, dynamicMixin = tslib_1.__rest(_a, [\"properties\", \"_localEvents\"]);\n assign(this.prototype, dynamicMixin);\n definition.properties = defaults(definition.properties || {}, properties);\n definition._localEvents = _localEvents;\n Transactional.onDefine.call(this, definition, BaseClass);\n this.DefaultCollection.define(definition.collection || {});\n this.Collection = definition.Collection;\n this.Collection.prototype.model = this;\n if (definition.endpoint)\n this.Collection.prototype._endpoint = definition.endpoint;\n};\nRecord._attribute = AggregatedType;\ncreateSharedTypeSpec(Record, SharedType);\nfunction getAttributes(_a) {\n var defaults = _a.defaults, attributes = _a.attributes, idAttribute = _a.idAttribute;\n var definition = attributes || defaults || {};\n if (idAttribute && !(idAttribute in definition)) {\n definition[idAttribute] = void 0;\n }\n return definition;\n}\nexport function attr(proto, attrName) {\n if (attrName) {\n if (typeof Reflect !== 'undefined' && Reflect.getMetadata) {\n Reflect\n .getMetadata(\"design:type\", proto, attrName)\n .asProp(proto, attrName);\n }\n else {\n proto._log('error', 'Add import \"reflect-metadata\"; as the first line of your app.');\n }\n }\n else {\n return proto.asProp;\n }\n}\nexport function prop(spec) {\n return spec.asProp;\n}\n//# sourceMappingURL=index.js.map","import { ItemsBehavior, transactionApi } from '../transactions';\nimport { eventsApi } from '../object-plus';\nvar EventMap = eventsApi.EventMap, trigger2 = eventsApi.trigger2, trigger3 = eventsApi.trigger3, on = eventsApi.on, off = eventsApi.off, commit = transactionApi.commit, markAsDirty = transactionApi.markAsDirty, _aquire = transactionApi.aquire, _free = transactionApi.free;\nexport function dispose(collection) {\n var models = collection.models;\n collection.models = [];\n collection._byId = {};\n freeAll(collection, models);\n return models;\n}\nexport function convertAndAquire(collection, attrs, options) {\n var model = collection.model;\n var record;\n if (collection._shared) {\n record = attrs instanceof model ? attrs : model.create(attrs, options);\n if (collection._shared & ItemsBehavior.listen) {\n on(record, record._changeEventName, collection._onChildrenChange, collection);\n }\n }\n else {\n record = attrs instanceof model ? (options.merge ? attrs.clone() : attrs) : model.create(attrs, options);\n if (!_aquire(collection, record)) {\n var errors = collection._aggregationError || (collection._aggregationError = []);\n errors.push(record);\n }\n }\n var _itemEvents = collection._itemEvents;\n _itemEvents && _itemEvents.subscribe(collection, record);\n return record;\n}\nexport function free(owner, child, unset) {\n if (owner._shared) {\n if (owner._shared & ItemsBehavior.listen) {\n off(child, child._changeEventName, owner._onChildrenChange, owner);\n }\n }\n else {\n _free(owner, child);\n unset || child.dispose();\n }\n var _itemEvents = owner._itemEvents;\n _itemEvents && _itemEvents.unsubscribe(owner, child);\n}\nexport function freeAll(collection, children) {\n for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {\n var child = children_1[_i];\n free(collection, child);\n }\n return children;\n}\nexport function sortElements(collection, options) {\n var _comparator = collection._comparator;\n if (_comparator && options.sort !== false) {\n collection.models.sort(_comparator);\n return true;\n }\n return false;\n}\nexport function addIndex(index, model) {\n index[model.cid] = model;\n var id = model.id;\n if (id != null) {\n index[id] = model;\n }\n}\nexport function removeIndex(index, model) {\n delete index[model.cid];\n var id = model.id;\n if (id != null) {\n delete index[id];\n }\n}\nexport function updateIndex(index, model) {\n delete index[model.previous(model.idAttribute)];\n var id = model.id;\n id == null || (index[id] = model);\n}\nvar CollectionTransaction = (function () {\n function CollectionTransaction(object, isRoot, added, removed, nested, sorted) {\n this.object = object;\n this.isRoot = isRoot;\n this.added = added;\n this.removed = removed;\n this.nested = nested;\n this.sorted = sorted;\n }\n CollectionTransaction.prototype.commit = function (initiator) {\n var _a = this, nested = _a.nested, object = _a.object, _isDirty = object._isDirty;\n for (var _i = 0, nested_1 = nested; _i < nested_1.length; _i++) {\n var transaction = nested_1[_i];\n transaction.commit(object);\n }\n if (object._aggregationError) {\n logAggregationError(object);\n }\n for (var _b = 0, nested_2 = nested; _b < nested_2.length; _b++) {\n var transaction = nested_2[_b];\n trigger2(object, 'change', transaction.object, _isDirty);\n }\n var _c = this, added = _c.added, removed = _c.removed;\n for (var _d = 0, added_1 = added; _d < added_1.length; _d++) {\n var record = added_1[_d];\n trigger3(record, 'add', record, object, _isDirty);\n trigger3(object, 'add', record, object, _isDirty);\n }\n for (var _e = 0, removed_1 = removed; _e < removed_1.length; _e++) {\n var record = removed_1[_e];\n trigger3(record, 'remove', record, object, _isDirty);\n trigger3(object, 'remove', record, object, _isDirty);\n }\n if (this.sorted) {\n trigger2(object, 'sort', object, _isDirty);\n }\n if (added.length || removed.length) {\n trigger2(object, 'update', object, _isDirty);\n }\n this.isRoot && commit(object, initiator);\n };\n return CollectionTransaction;\n}());\nexport { CollectionTransaction };\nexport function logAggregationError(collection) {\n collection._log('error', 'added records already have an owner', collection._aggregationError);\n collection._aggregationError = void 0;\n}\n//# sourceMappingURL=commons.js.map","import { transactionApi } from '../transactions';\nimport { CollectionTransaction, logAggregationError, sortElements, convertAndAquire, addIndex, updateIndex } from './commons';\nvar begin = transactionApi.begin, commit = transactionApi.commit, markAsDirty = transactionApi.markAsDirty;\nexport function addTransaction(collection, items, options, merge) {\n var isRoot = begin(collection), nested = [];\n var added = appendElements(collection, items, nested, options, merge);\n if (added.length || nested.length) {\n var needSort = sortOrMoveElements(collection, added, options);\n if (markAsDirty(collection, options)) {\n return new CollectionTransaction(collection, isRoot, added, [], nested, needSort);\n }\n if (collection._aggregationError)\n logAggregationError(collection);\n }\n isRoot && commit(collection);\n}\n;\nfunction sortOrMoveElements(collection, added, options) {\n var at = options.at;\n if (at != null) {\n var length_1 = collection.models.length - added.length;\n at = Number(at);\n if (at < 0)\n at += length_1 + 1;\n if (at < 0)\n at = 0;\n if (at > length_1)\n at = length_1;\n moveElements(collection.models, at, added);\n return false;\n }\n return sortElements(collection, options);\n}\nfunction moveElements(source, at, added) {\n for (var j = source.length - 1, i = j - added.length; i >= at; i--, j--) {\n source[j] = source[i];\n }\n for (i = 0, j = at; i < added.length; i++, j++) {\n source[j] = added[i];\n }\n}\nfunction appendElements(collection, a_items, nested, a_options, forceMerge) {\n var _byId = collection._byId, models = collection.models, merge = (forceMerge || a_options.merge) && !collection._shared, parse = a_options.parse, idAttribute = collection.model.prototype.idAttribute, prevLength = models.length;\n for (var _i = 0, a_items_1 = a_items; _i < a_items_1.length; _i++) {\n var item = a_items_1[_i];\n var model = item ? _byId[item[idAttribute]] || _byId[item.cid] : null;\n if (model) {\n if (merge && item !== model) {\n var attrs = item.attributes || item;\n var transaction = model._createTransaction(attrs, a_options);\n transaction && nested.push(transaction);\n if (model.hasChanged(idAttribute)) {\n updateIndex(_byId, model);\n }\n }\n }\n else {\n model = convertAndAquire(collection, item, a_options);\n models.push(model);\n addIndex(_byId, model);\n }\n }\n return models.slice(prevLength);\n}\n//# sourceMappingURL=add.js.map","import { transactionApi } from '../transactions';\nimport { CollectionTransaction, logAggregationError, convertAndAquire, free, sortElements, addIndex, freeAll } from './commons';\nvar begin = transactionApi.begin, commit = transactionApi.commit, markAsDirty = transactionApi.markAsDirty;\nvar silentOptions = { silent: true };\nexport function emptySetTransaction(collection, items, options, silent) {\n var isRoot = begin(collection);\n var added = _reallocateEmpty(collection, items, options);\n if (added.length) {\n var needSort = sortElements(collection, options);\n if (markAsDirty(collection, silent ? silentOptions : options)) {\n return new CollectionTransaction(collection, isRoot, added.slice(), [], [], needSort);\n }\n if (collection._aggregationError)\n logAggregationError(collection);\n }\n isRoot && commit(collection);\n}\n;\nexport function setTransaction(collection, items, options) {\n var isRoot = begin(collection), nested = [];\n var previous = collection.models, added = _reallocate(collection, items, nested, options);\n var reusedCount = collection.models.length - added.length, removed = reusedCount < previous.length ? (reusedCount ? _garbageCollect(collection, previous) :\n freeAll(collection, previous)) : [];\n var addedOrChanged = nested.length || added.length, sorted = (sortElements(collection, options) && addedOrChanged) || added.length || options.sorted;\n if (addedOrChanged || removed.length || sorted) {\n if (markAsDirty(collection, options)) {\n return new CollectionTransaction(collection, isRoot, added, removed, nested, sorted);\n }\n if (collection._aggregationError)\n logAggregationError(collection);\n }\n isRoot && commit(collection);\n}\n;\nfunction _garbageCollect(collection, previous) {\n var _byId = collection._byId, removed = [];\n for (var _i = 0, previous_1 = previous; _i < previous_1.length; _i++) {\n var record = previous_1[_i];\n if (!_byId[record.cid]) {\n removed.push(record);\n free(collection, record);\n }\n }\n return removed;\n}\nfunction _reallocate(collection, source, nested, options) {\n var models = Array(source.length), _byId = {}, merge = (options.merge == null ? true : options.merge) && !collection._shared, _prevById = collection._byId, prevModels = collection.models, idAttribute = collection.model.prototype.idAttribute, toAdd = [], orderKept = true;\n for (var i = 0, j = 0; i < source.length; i++) {\n var item = source[i], model = null;\n if (item) {\n var id = item[idAttribute], cid = item.cid;\n if (_byId[id] || _byId[cid])\n continue;\n model = _prevById[id] || _prevById[cid];\n }\n if (model) {\n if (merge && item !== model) {\n if (orderKept && prevModels[j] !== model)\n orderKept = false;\n var attrs = item.attributes || item;\n var transaction = model._createTransaction(attrs, options);\n transaction && nested.push(transaction);\n }\n }\n else {\n model = convertAndAquire(collection, item, options);\n toAdd.push(model);\n }\n models[j++] = model;\n addIndex(_byId, model);\n }\n models.length = j;\n collection.models = models;\n collection._byId = _byId;\n if (!orderKept)\n options.sorted = true;\n return toAdd;\n}\nfunction _reallocateEmpty(self, source, options) {\n var len = source ? source.length : 0, models = Array(len), _byId = {}, idAttribute = self.model.prototype.idAttribute;\n for (var i = 0, j = 0; i < len; i++) {\n var src = source[i];\n if (src && (_byId[src[idAttribute]] || _byId[src.cid])) {\n continue;\n }\n var model = convertAndAquire(self, src, options);\n models[j++] = model;\n addIndex(_byId, model);\n }\n models.length = j;\n self._byId = _byId;\n return self.models = models;\n}\n//# sourceMappingURL=set.js.map","import { free, CollectionTransaction, removeIndex } from './commons';\nimport { eventsApi } from '../object-plus';\nimport { transactionApi } from '../transactions';\nvar trigger2 = eventsApi.trigger2, trigger3 = eventsApi.trigger3, markAsDirty = transactionApi.markAsDirty, begin = transactionApi.begin, commit = transactionApi.commit;\nexport function removeOne(collection, el, options) {\n var model = collection.get(el);\n if (model) {\n var isRoot = begin(collection), models = collection.models;\n models.splice(models.indexOf(model), 1);\n removeIndex(collection._byId, model);\n var notify = markAsDirty(collection, options);\n if (notify) {\n trigger3(model, 'remove', model, collection, options);\n trigger3(collection, 'remove', model, collection, options);\n }\n free(collection, model, options.unset);\n notify && trigger2(collection, 'update', collection, options);\n isRoot && commit(collection);\n return model;\n }\n}\n;\nexport function removeMany(collection, toRemove, options) {\n var removed = _removeFromIndex(collection, toRemove, options.unset);\n if (removed.length) {\n var isRoot = begin(collection);\n _reallocate(collection, removed.length);\n if (markAsDirty(collection, options)) {\n var transaction = new CollectionTransaction(collection, isRoot, [], removed, [], false);\n transaction.commit();\n }\n else {\n isRoot && commit(collection);\n }\n }\n return removed;\n}\n;\nfunction _removeFromIndex(collection, toRemove, unset) {\n var removed = Array(toRemove.length), _byId = collection._byId;\n for (var i = 0, j = 0; i < toRemove.length; i++) {\n var model = collection.get(toRemove[i]);\n if (model) {\n removed[j++] = model;\n removeIndex(_byId, model);\n free(collection, model, unset);\n }\n }\n removed.length = j;\n return removed;\n}\nfunction _reallocate(collection, removed) {\n var prev = collection.models, models = collection.models = Array(prev.length - removed), _byId = collection._byId;\n for (var i = 0, j = 0; i < prev.length; i++) {\n var model = prev[i];\n if (_byId[model.cid]) {\n models[j++] = model;\n }\n }\n models.length = j;\n}\n//# sourceMappingURL=remove.js.map","import * as tslib_1 from \"tslib\";\nimport { define, tools, eventsApi, EventMap, definitions, mixinRules, Mixable } from '../object-plus';\nimport { ItemsBehavior, transactionApi, Transactional } from '../transactions';\nimport { Record, SharedType, AggregatedType, createSharedTypeSpec } from '../record';\nimport { free, sortElements, updateIndex } from './commons';\nimport { addTransaction } from './add';\nimport { setTransaction, emptySetTransaction } from './set';\nimport { removeOne, removeMany } from './remove';\nimport { startIO } from '../io-tools';\nvar trigger2 = eventsApi.trigger2, on = eventsApi.on, off = eventsApi.off, begin = transactionApi.begin, commit = transactionApi.commit, markAsDirty = transactionApi.markAsDirty, omit = tools.omit, log = tools.log, assign = tools.assign, defaults = tools.defaults, assignToClassProto = tools.assignToClassProto;\nvar _count = 0;\nvar slice = Array.prototype.slice;\nvar CollectionRefsType = (function (_super) {\n tslib_1.__extends(CollectionRefsType, _super);\n function CollectionRefsType() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CollectionRefsType.defaultValue = [];\n return CollectionRefsType;\n}(SharedType));\nvar Collection = (function (_super) {\n tslib_1.__extends(Collection, _super);\n function Collection(records, options, shared) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, _count++) || this;\n _this.models = [];\n _this._byId = {};\n _this.comparator = _this.comparator;\n if (options.comparator !== void 0) {\n _this.comparator = options.comparator;\n options.comparator = void 0;\n }\n _this.model = _this.model;\n if (options.model) {\n _this.model = options.model;\n options.model = void 0;\n }\n _this.idAttribute = _this.model.prototype.idAttribute;\n _this._shared = shared || 0;\n if (records) {\n var elements = toElements(_this, records, options);\n emptySetTransaction(_this, elements, options, true);\n }\n _this.initialize.apply(_this, arguments);\n if (_this._localEvents)\n _this._localEvents.subscribe(_this, _this);\n return _this;\n }\n Collection_1 = Collection;\n Collection.prototype.createSubset = function (models, options) {\n var SubsetOf = this.constructor.subsetOf(this).options.type, subset = new SubsetOf(models, options);\n subset.resolve(this);\n return subset;\n };\n Collection.onExtend = function (BaseClass) {\n var Ctor = this;\n this._SubsetOf = null;\n function RefsCollection(a, b, listen) {\n Ctor.call(this, a, b, ItemsBehavior.share | (listen ? ItemsBehavior.listen : 0));\n }\n Mixable.mixins.populate(RefsCollection);\n RefsCollection.prototype = this.prototype;\n RefsCollection._attribute = CollectionRefsType;\n this.Refs = this.Subset = RefsCollection;\n Transactional.onExtend.call(this, BaseClass);\n createSharedTypeSpec(this, SharedType);\n };\n Collection.onDefine = function (definition, BaseClass) {\n if (definition.itemEvents) {\n var eventsMap = new EventMap(BaseClass.prototype._itemEvents);\n eventsMap.addEventsMap(definition.itemEvents);\n this.prototype._itemEvents = eventsMap;\n }\n if (definition.comparator)\n this.prototype.comparator = definition.comparator;\n Transactional.onDefine.call(this, definition);\n };\n Object.defineProperty(Collection.prototype, \"__inner_state__\", {\n get: function () { return this.models; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Collection.prototype, \"comparator\", {\n get: function () { return this._comparator; },\n set: function (x) {\n var _this = this;\n var compare;\n switch (typeof x) {\n case 'string':\n this._comparator = function (a, b) {\n var aa = a[x], bb = b[x];\n if (aa === bb)\n return 0;\n return aa < bb ? -1 : +1;\n };\n break;\n case 'function':\n if (x.length === 1) {\n this._comparator = function (a, b) {\n var aa = x.call(_this, a), bb = x.call(_this, b);\n if (aa === bb)\n return 0;\n return aa < bb ? -1 : +1;\n };\n }\n else {\n this._comparator = function (a, b) { return x.call(_this, a, b); };\n }\n break;\n default:\n this._comparator = null;\n }\n },\n enumerable: true,\n configurable: true\n });\n Collection.prototype.getStore = function () {\n return this._store || (this._store = this._owner ? this._owner.getStore() : this._defaultStore);\n };\n Collection.prototype._onChildrenChange = function (record, options, initiator) {\n if (options === void 0) { options = {}; }\n if (initiator === this)\n return;\n var idAttribute = this.idAttribute;\n if (record.hasChanged(idAttribute)) {\n updateIndex(this._byId, record);\n }\n var isRoot = begin(this);\n if (markAsDirty(this, options)) {\n trigger2(this, 'change', record, options);\n }\n isRoot && commit(this);\n };\n Collection.prototype.get = function (objOrId) {\n if (objOrId == null)\n return;\n if (typeof objOrId === 'object') {\n var id = objOrId[this.idAttribute];\n return (id !== void 0 && this._byId[id]) || this._byId[objOrId.cid];\n }\n else {\n return this._byId[objOrId];\n }\n };\n Collection.prototype.each = function (iteratee, context) {\n var fun = bindContext(iteratee, context), models = this.models;\n for (var i = 0; i < models.length; i++) {\n fun(models[i], i);\n }\n };\n Collection.prototype.every = function (iteratee, context) {\n var fun = toPredicateFunction(iteratee, context), models = this.models;\n for (var i = 0; i < models.length; i++) {\n if (!fun(models[i], i))\n return false;\n }\n return true;\n };\n Collection.prototype.filter = function (iteratee, context) {\n var fun = toPredicateFunction(iteratee, context), models = this.models;\n return this.map(function (x, i) { return fun(x, i) ? x : void 0; });\n };\n Collection.prototype.find = function (iteratee, context) {\n var fun = toPredicateFunction(iteratee, context), models = this.models;\n for (var i = 0; i < models.length; i++) {\n if (fun(models[i], i))\n return models[i];\n }\n return null;\n };\n Collection.prototype.some = function (iteratee, context) {\n return Boolean(this.find(iteratee, context));\n };\n Collection.prototype.map = function (iteratee, context) {\n var fun = bindContext(iteratee, context), models = this.models, mapped = Array(models.length);\n var j = 0;\n for (var i = 0; i < models.length; i++) {\n var x = fun(models[i], i);\n x === void 0 || (mapped[j++] = x);\n }\n mapped.length = j;\n return mapped;\n };\n Collection.prototype._validateNested = function (errors) {\n if (this._shared)\n return 0;\n var count = 0;\n this.each(function (record) {\n var error = record.validationError;\n if (error) {\n errors[record.cid] = error;\n count++;\n }\n });\n return count;\n };\n Collection.prototype.initialize = function () { };\n Object.defineProperty(Collection.prototype, \"length\", {\n get: function () { return this.models.length; },\n enumerable: true,\n configurable: true\n });\n Collection.prototype.first = function () { return this.models[0]; };\n Collection.prototype.last = function () { return this.models[this.models.length - 1]; };\n Collection.prototype.at = function (a_index) {\n var index = a_index < 0 ? a_index + this.models.length : a_index;\n return this.models[index];\n };\n Collection.prototype.clone = function (options) {\n if (options === void 0) { options = {}; }\n var models = this._shared & ItemsBehavior.share ? this.models : this.map(function (model) { return model.clone(); }), copy = new this.constructor(models, { model: this.model, comparator: this.comparator }, this._shared);\n if (options.pinStore)\n copy._defaultStore = this.getStore();\n return copy;\n };\n Collection.prototype.toJSON = function () {\n return this.models.map(function (model) { return model.toJSON(); });\n };\n Collection.prototype.set = function (elements, options) {\n if (elements === void 0) { elements = []; }\n if (options === void 0) { options = {}; }\n if (options.add !== void 0) {\n this._log('warn', \"Collection.set doesn't support 'add' option, behaving as if options.add === true.\", options);\n }\n if (options.reset) {\n this.reset(elements, options);\n }\n else {\n var transaction = this._createTransaction(elements, options);\n transaction && transaction.commit();\n }\n return this;\n };\n Collection.prototype.liveUpdates = function (enabled) {\n var _this = this;\n if (enabled) {\n this.liveUpdates(false);\n var filter_1 = typeof enabled === 'function' ? enabled : function () { return true; };\n this._liveUpdates = {\n updated: function (json) {\n filter_1(json) && _this.add(json, { parse: true, merge: true });\n },\n removed: function (id) { return _this.remove(id); }\n };\n return this.getEndpoint().subscribe(this._liveUpdates, this);\n }\n else {\n if (this._liveUpdates) {\n this.getEndpoint().unsubscribe(this._liveUpdates, this);\n this._liveUpdates = null;\n }\n }\n };\n Collection.prototype.fetch = function (a_options) {\n var _this = this;\n if (a_options === void 0) { a_options = {}; }\n var options = tslib_1.__assign({ parse: true }, a_options), endpoint = this.getEndpoint();\n return startIO(this, endpoint.list(options, this), options, function (json) {\n var result = _this.set(json, tslib_1.__assign({ parse: true }, options));\n if (options.liveUpdates) {\n result = _this.liveUpdates(options.liveUpdates);\n }\n return result;\n });\n };\n Collection.prototype.dispose = function () {\n if (this._disposed)\n return;\n var aggregated = !this._shared;\n for (var _i = 0, _a = this.models; _i < _a.length; _i++) {\n var record = _a[_i];\n free(this, record);\n if (aggregated)\n record.dispose();\n }\n this.liveUpdates(false);\n _super.prototype.dispose.call(this);\n };\n Collection.prototype.reset = function (a_elements, options) {\n if (options === void 0) { options = {}; }\n var isRoot = begin(this), previousModels = this.models;\n if (a_elements) {\n emptySetTransaction(this, toElements(this, a_elements, options), options, true);\n }\n else {\n this._byId = {};\n this.models = [];\n }\n markAsDirty(this, options);\n options.silent || trigger2(this, 'reset', this, defaults({ previousModels: previousModels }, options));\n var _byId = this._byId;\n for (var _i = 0, previousModels_1 = previousModels; _i < previousModels_1.length; _i++) {\n var toDispose = previousModels_1[_i];\n _byId[toDispose.cid] || free(this, toDispose);\n }\n isRoot && commit(this);\n return this.models;\n };\n Collection.prototype.add = function (a_elements, options) {\n if (options === void 0) { options = {}; }\n var elements = toElements(this, a_elements, options), transaction = this.models.length ?\n addTransaction(this, elements, options) :\n emptySetTransaction(this, elements, options);\n if (transaction) {\n transaction.commit();\n return transaction.added;\n }\n };\n Collection.prototype.remove = function (recordsOrIds, options) {\n if (options === void 0) { options = {}; }\n if (recordsOrIds) {\n return Array.isArray(recordsOrIds) ?\n removeMany(this, recordsOrIds, options) :\n removeOne(this, recordsOrIds, options);\n }\n return [];\n };\n Collection.prototype._createTransaction = function (a_elements, options) {\n if (options === void 0) { options = {}; }\n var elements = toElements(this, a_elements, options);\n if (this.models.length) {\n return options.remove === false ?\n addTransaction(this, elements, options, true) :\n setTransaction(this, elements, options);\n }\n else {\n return emptySetTransaction(this, elements, options);\n }\n };\n Collection.prototype.pluck = function (key) {\n return this.models.map(function (model) { return model[key]; });\n };\n Collection.prototype.sort = function (options) {\n if (options === void 0) { options = {}; }\n if (sortElements(this, options)) {\n var isRoot = begin(this);\n if (markAsDirty(this, options)) {\n trigger2(this, 'sort', this, options);\n }\n isRoot && commit(this);\n }\n return this;\n };\n Collection.prototype.push = function (model, options) {\n return this.add(model, assign({ at: this.length }, options));\n };\n Collection.prototype.pop = function (options) {\n var model = this.at(this.length - 1);\n this.remove(model, tslib_1.__assign({ unset: true }, options));\n return model;\n };\n Collection.prototype.unset = function (modelOrId, options) {\n var value = this.get(modelOrId);\n this.remove(modelOrId, tslib_1.__assign({ unset: true }, options));\n return value;\n };\n Collection.prototype.unshift = function (model, options) {\n return this.add(model, assign({ at: 0 }, options));\n };\n Collection.prototype.shift = function (options) {\n var model = this.at(0);\n this.remove(model, tslib_1.__assign({ unset: true }, options));\n return model;\n };\n Collection.prototype.slice = function () {\n return slice.apply(this.models, arguments);\n };\n Collection.prototype.indexOf = function (modelOrId) {\n var record = this.get(modelOrId);\n return this.models.indexOf(record);\n };\n Collection.prototype.modelId = function (attrs) {\n return attrs[this.model.prototype.idAttribute];\n };\n Collection.prototype.toggle = function (model, a_next) {\n var prev = Boolean(this.get(model)), next = a_next === void 0 ? !prev : Boolean(a_next);\n if (prev !== next) {\n if (prev) {\n this.remove(model);\n }\n else {\n this.add(model);\n }\n }\n return next;\n };\n Collection.prototype._log = function (level, text, value) {\n tools.log(level, \"[Collection Update] \" + this.model.prototype.getClassName() + \".\" + this.getClassName() + \": \" + text, {\n Argument: value,\n 'Attributes spec': this.model.prototype._attributes\n });\n };\n Collection.prototype.getClassName = function () {\n return _super.prototype.getClassName.call(this) || 'Collection';\n };\n Collection._attribute = AggregatedType;\n Collection = Collection_1 = tslib_1.__decorate([\n define({\n cidPrefix: 'c',\n model: Record,\n _changeEventName: 'changes',\n _aggregationError: null\n }),\n definitions({\n comparator: mixinRules.value,\n model: mixinRules.protoValue,\n itemEvents: mixinRules.merge\n })\n ], Collection);\n return Collection;\n var Collection_1;\n}(Transactional));\nexport { Collection };\nfunction toElements(collection, elements, options) {\n var parsed = options.parse ? collection.parse(elements, options) : elements;\n return Array.isArray(parsed) ? parsed : [parsed];\n}\ncreateSharedTypeSpec(Collection, SharedType);\nRecord.Collection = Collection;\nfunction bindContext(fun, context) {\n return context !== void 0 ? function (v, k) { return fun.call(context, v, k); } : fun;\n}\nfunction toPredicateFunction(iteratee, context) {\n if (typeof iteratee === 'object') {\n return function (x) {\n for (var key in iteratee) {\n if (iteratee[key] !== x[key])\n return false;\n }\n return true;\n };\n }\n return bindContext(iteratee, context);\n}\n//# sourceMappingURL=index.js.map","import { CompiledReference } from '../traversable';\nexport function parseReference(collectionRef) {\n switch (typeof collectionRef) {\n case 'function':\n return function (root) { return collectionRef.call(root); };\n case 'object':\n return function () { return collectionRef; };\n case 'string':\n var resolve = new CompiledReference(collectionRef).resolve;\n return resolve;\n }\n}\n//# sourceMappingURL=commons.js.map","import * as tslib_1 from \"tslib\";\nimport { Collection } from '../collection';\nimport { tools, define } from '../object-plus';\nimport { parseReference } from './commons';\nimport { ChainableAttributeSpec } from '../record';\nimport { ItemsBehavior, transactionApi } from '../transactions';\nvar fastDefaults = tools.fastDefaults;\nCollection.subsetOf = function subsetOf(masterCollection) {\n var SubsetOf = this._SubsetOf || (this._SubsetOf = defineSubsetCollection(this)), getMasterCollection = parseReference(masterCollection), typeSpec = new ChainableAttributeSpec({\n type: SubsetOf\n });\n return typeSpec.get(function (refs) {\n !refs || refs.resolvedWith || refs.resolve(getMasterCollection(this));\n return refs;\n });\n};\nvar subsetOfBehavior = ItemsBehavior.share | ItemsBehavior.persistent;\nfunction defineSubsetCollection(CollectionConstructor) {\n var SubsetOfCollection = (function (_super) {\n tslib_1.__extends(SubsetOfCollection, _super);\n function SubsetOfCollection(recordsOrIds, options) {\n var _this = _super.call(this, [], options, subsetOfBehavior) || this;\n _this.resolvedWith = null;\n _this.refs = toArray(recordsOrIds);\n return _this;\n }\n Object.defineProperty(SubsetOfCollection.prototype, \"__inner_state__\", {\n get: function () { return this.refs || this.models; },\n enumerable: true,\n configurable: true\n });\n SubsetOfCollection.prototype.add = function (a_elements, options) {\n var resolvedWith = this.resolvedWith, toAdd = toArray(a_elements);\n if (resolvedWith) {\n return _super.prototype.add.call(this, resolveRefs(resolvedWith, toAdd), options);\n }\n else {\n if (toAdd.length) {\n var isRoot = transactionApi.begin(this);\n this.refs = this.refs ? this.refs.concat(toAdd) : toAdd.slice();\n transactionApi.markAsDirty(this, options);\n isRoot && transactionApi.commit(this);\n }\n }\n };\n SubsetOfCollection.prototype.reset = function (a_elements, options) {\n var resolvedWith = this.resolvedWith, elements = toArray(a_elements);\n return resolvedWith ?\n _super.prototype.reset.call(this, resolveRefs(resolvedWith, elements), options) :\n delaySet(this, elements, options) || [];\n };\n SubsetOfCollection.prototype._createTransaction = function (a_elements, options) {\n var resolvedWith = this.resolvedWith, elements = toArray(a_elements);\n return resolvedWith ?\n _super.prototype._createTransaction.call(this, resolveRefs(resolvedWith, elements), options) :\n delaySet(this, elements, options);\n };\n SubsetOfCollection.prototype.toJSON = function () {\n return this.refs ?\n this.refs.map(function (objOrId) { return objOrId.id || objOrId; }) :\n this.models.map(function (model) { return model.id; });\n };\n SubsetOfCollection.prototype._validateNested = function () { return 0; };\n SubsetOfCollection.prototype.clone = function (owner) {\n var Ctor = this.constructor, copy = new Ctor([], {\n model: this.model,\n comparator: this.comparator\n });\n if (this.resolvedWith) {\n copy.resolvedWith = this.resolvedWith;\n copy.refs = null;\n copy.reset(this.models, { silent: true });\n }\n else {\n copy.refs = this.refs.slice();\n }\n return copy;\n };\n SubsetOfCollection.prototype.parse = function (raw) {\n return raw;\n };\n SubsetOfCollection.prototype.resolve = function (collection) {\n if (collection && collection.length) {\n this.resolvedWith = collection;\n if (this.refs) {\n this.reset(this.refs, { silent: true });\n this.refs = null;\n }\n }\n return this;\n };\n SubsetOfCollection.prototype.getModelIds = function () { return this.toJSON(); };\n SubsetOfCollection.prototype.toggle = function (modelOrId, val) {\n return _super.prototype.toggle.call(this, this.resolvedWith.get(modelOrId), val);\n };\n SubsetOfCollection.prototype.addAll = function () {\n if (this.resolvedWith) {\n this.set(this.resolvedWith.models);\n return this.models;\n }\n throw new Error(\"Cannot add elemens because the subset collection is not resolved yet.\");\n };\n SubsetOfCollection.prototype.toggleAll = function () {\n return this.length ? this.reset() : this.addAll();\n };\n SubsetOfCollection = tslib_1.__decorate([\n define\n ], SubsetOfCollection);\n return SubsetOfCollection;\n }(CollectionConstructor));\n SubsetOfCollection.prototype._itemEvents = void 0;\n return SubsetOfCollection;\n}\nfunction resolveRefs(master, elements) {\n var records = [];\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var el = elements_1[_i];\n var record = master.get(el);\n if (record)\n records.push(record);\n }\n return records;\n}\nfunction delaySet(collection, elements, options) {\n if (tools.notEqual(collection.refs, elements)) {\n var isRoot = transactionApi.begin(collection);\n collection.refs = elements.slice();\n transactionApi.markAsDirty(collection, options);\n isRoot && transactionApi.commit(collection);\n }\n}\nfunction toArray(elements) {\n return elements ? (Array.isArray(elements) ? elements : [elements]) : [];\n}\n//# sourceMappingURL=subsetOf.js.map","import * as tslib_1 from \"tslib\";\nexport * from './object-plus';\nexport * from './collection';\nexport * from './relations';\nexport * from './record';\nexport * from './transactions';\nexport { createIOPromise } from './io-tools';\nimport { Events } from './object-plus/';\nexport var on = (_a = Events, _a.on), off = _a.off, trigger = _a.trigger, once = _a.once, listenTo = _a.listenTo, stopListening = _a.stopListening, listenToOnce = _a.listenToOnce;\nimport { Record as Model } from './record';\nimport { define, Mixable as Class } from './object-plus/';\nexport { Model, Class };\nexport function attributes(attrDefs) {\n var DefaultRecord = (function (_super) {\n tslib_1.__extends(DefaultRecord, _super);\n function DefaultRecord() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DefaultRecord.attributes = attrDefs;\n DefaultRecord = tslib_1.__decorate([\n define\n ], DefaultRecord);\n return DefaultRecord;\n }(Model));\n return DefaultRecord;\n}\nimport { ChainableAttributeSpec } from './record';\nexport function value(x) {\n return new ChainableAttributeSpec({ value: x });\n}\nexport function transaction(method) {\n return function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result;\n this.transaction(function () {\n result = method.apply(_this, args);\n });\n return result;\n };\n}\nvar _a;\n//# sourceMappingURL=index.js.map","import * as _ from 'underscore';\nimport * as jQuery from 'jquery';\nvar previousBackbone = window.Backbone;\nvar slice = Array.prototype.slice;\nvar exported = {\n $: jQuery,\n history: null,\n VERSION: '1.2.3',\n View: View, History: History, Router: Router, noConflict: noConflict\n};\nexport default exported;\nfunction noConflict() {\n window.Backbone = previousBackbone;\n return this;\n}\n;\nexport function View(options) {\n this.cid = _.uniqueId('view');\n options || (options = {});\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n this.delegateEvents();\n}\n;\nvar delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\nvar viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n_.extend(View.prototype, {\n tagName: 'div',\n $: function (selector) {\n return this.$el.find(selector);\n },\n initialize: function () { },\n render: function () {\n return this;\n },\n remove: function () {\n this.$el.remove();\n this.stopListening();\n return this;\n },\n setElement: function (element, delegate) {\n if (this.$el)\n this.undelegateEvents();\n this.$el = element instanceof exported.$ ? element : exported.$(element);\n this.el = this.$el[0];\n if (delegate !== false)\n this.delegateEvents();\n return this;\n },\n delegateEvents: function (events) {\n if (!(events || (events = _.result(this, 'events'))))\n return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method))\n method = this[events[key]];\n if (!method)\n continue;\n var match = key.match(delegateEventSplitter);\n var eventName = match[1], selector = match[2];\n method = _.bind(method, this);\n eventName += '.delegateEvents' + this.cid;\n if (selector === '') {\n this.$el.on(eventName, method);\n }\n else {\n this.$el.on(eventName, selector, method);\n }\n }\n return this;\n },\n undelegateEvents: function () {\n this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n _ensureElement: function () {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id)\n attrs.id = _.result(this, 'id');\n if (this.className)\n attrs['class'] = _.result(this, 'className');\n var $el = exported.$('<' + _.result(this, 'tagName') + '>').attr(attrs);\n this.setElement($el, false);\n }\n else {\n this.setElement(_.result(this, 'el'), false);\n }\n }\n});\nexport function Router(options) {\n options || (options = {});\n if (options.routes)\n this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n}\nvar optionalParam = /\\((.*?)\\)/g;\nvar namedParam = /(\\(\\?)?:\\w+/g;\nvar splatParam = /\\*\\w+/g;\nvar escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n_.extend(Router.prototype, {\n initialize: function () { },\n route: function (route, name, callback) {\n if (!_.isRegExp(route))\n route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback)\n callback = this[name];\n var router = this;\n exported.history.route(route, function (fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n exported.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n execute: function (callback, args, name) {\n if (callback)\n callback.apply(this, args);\n },\n navigate: function (fragment, options) {\n exported.history.navigate(fragment, options);\n return this;\n },\n _bindRoutes: function () {\n if (!this.routes)\n return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n _routeToRegExp: function (route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function (match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n _extractParameters: function (route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function (param, i) {\n if (i === params.length - 1)\n return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n});\nexport function History() {\n this.handlers = [];\n this.checkUrl = _.bind(this.checkUrl, this);\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n}\n;\nvar routeStripper = /^[#\\/]|\\s+$/g;\nvar rootStripper = /^\\/+|\\/+$/g;\nvar pathStripper = /#.*$/;\nHistory.started = false;\n_.extend(History.prototype, {\n interval: 50,\n atRoot: function () {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n matchRoot: function () {\n var path = this.decodeFragment(this.location.pathname);\n var root = path.slice(0, this.root.length - 1) + '/';\n return root === this.root;\n },\n decodeFragment: function (fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n getSearch: function () {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n getHash: function (window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n getPath: function () {\n var path = this.decodeFragment(this.location.pathname + this.getSearch()).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n getFragment: function (fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n }\n else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n start: function (options) {\n if (History.started)\n throw new Error('Backbone.history has already been started');\n History.started = true;\n this.options = _.extend({ root: '/' }, this.options, options);\n this.root = this.options.root;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n if (this._wantsHashChange && this._wantsPushState) {\n if (!this._hasPushState && !this.atRoot()) {\n var root = this.root.slice(0, -1) || '/';\n this.location.replace(root + '#' + this.getPath());\n return true;\n }\n else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), { replace: true });\n }\n }\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n var addEventListener = window.addEventListener || function (eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n }\n else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n }\n else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n if (!this.options.silent)\n return this.loadUrl();\n },\n stop: function () {\n var removeEventListener = window.removeEventListener || function (eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n }\n else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n if (this._checkUrlInterval)\n clearInterval(this._checkUrlInterval);\n History.started = false;\n },\n route: function (route, callback) {\n this.handlers.unshift({ route: route, callback: callback });\n },\n checkUrl: function (e) {\n var current = this.getFragment();\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n if (current === this.fragment)\n return false;\n if (this.iframe)\n this.navigate(current);\n this.loadUrl();\n },\n loadUrl: function (fragment) {\n if (!this.matchRoot())\n return false;\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function (handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n });\n },\n navigate: function (fragment, options) {\n if (!History.started)\n return false;\n if (!options || options === true)\n options = { trigger: !!options };\n fragment = this.getFragment(fragment || '');\n var root = this.root;\n if (fragment === '' || fragment.charAt(0) === '?') {\n root = root.slice(0, -1) || '/';\n }\n var url = root + fragment;\n fragment = this.decodeFragment(fragment.replace(pathStripper, ''));\n if (this.fragment === fragment)\n return;\n this.fragment = fragment;\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n }\n else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && (fragment !== this.getHash(this.iframe.contentWindow))) {\n var iWindow = this.iframe.contentWindow;\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n }\n else {\n return this.location.assign(url);\n }\n if (options.trigger)\n return this.loadUrl(fragment);\n },\n _updateHash: function (location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n }\n else {\n location.hash = '#' + fragment;\n }\n }\n});\nexported.history = new History;\n//# sourceMappingURL=backbone.js.map","import * as tslib_1 from \"tslib\";\nimport Sync from './sync';\nimport * as _ from 'underscore';\nimport { define, Model, Collection, tools, definitions, mixinRules } from './type-r';\nvar defaults = tools.defaults;\nvar transactionalProto = tools.getBaseClass(Model).prototype;\nvar RestCollection = (function (_super) {\n tslib_1.__extends(RestCollection, _super);\n function RestCollection() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n RestCollection.prototype.dispose = function () {\n if (this._xhr && this._xhr.abort)\n this._xhr.abort();\n _super.prototype.dispose.call(this);\n };\n RestCollection.prototype.url = function () { return this.model.prototype.urlRoot || ''; };\n RestCollection.prototype._invalidate = function (options) {\n var error;\n if (options.validate && (error = this.validationError)) {\n this.trigger('invalid', this, error, _.extend({ validationError: error }, options));\n return true;\n }\n };\n RestCollection.prototype.fetch = function (options) {\n options = _.extend({ parse: true }, options);\n var success = options.success;\n var collection = this;\n options.success = function (resp) {\n var method = options.reset ? 'reset' : 'set';\n collection[method](resp, options);\n if (collection._invalidate(options))\n return false;\n if (success)\n success.call(options.context, collection, resp, options);\n collection.trigger('sync', collection, resp, options);\n };\n wrapError(this, options);\n return _sync('read', this, options);\n };\n RestCollection.prototype.create = function (a_model, options) {\n var _this = this;\n if (options === void 0) { options = {}; }\n var model = a_model instanceof RestModel ?\n a_model :\n this.model.create(a_model, options);\n model._owner || (model._owner = this);\n options.wait || this.add([model], options);\n var collection = this;\n var success = options.success;\n options.success = function (model, resp, callbackOpts) {\n if (options.wait)\n _this.add([model], defaults({ parse: false }, callbackOpts));\n if (success)\n success.call(callbackOpts.context, model, resp, callbackOpts);\n };\n model.save(null, options);\n return model;\n };\n RestCollection.prototype.sync = function () {\n return Sync.sync.apply(this, arguments);\n };\n RestCollection = tslib_1.__decorate([\n define({\n itemEvents: {\n destroy: function (model) { this.remove(model); }\n }\n })\n ], RestCollection);\n return RestCollection;\n}(Collection));\nexport { RestCollection };\n;\nvar RestModel = (function (_super) {\n tslib_1.__extends(RestModel, _super);\n function RestModel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n RestModel.prototype._invalidate = function (options) {\n var error;\n if (options.validate && (error = this.validationError)) {\n triggerAndBubble(this, 'invalid', this, error, _.extend({ validationError: error }, options));\n return true;\n }\n };\n RestModel.prototype.dispose = function () {\n if (this._xhr && this._xhr.abort)\n this._xhr.abort();\n _super.prototype.dispose.call(this);\n };\n RestModel.prototype.fetch = function (options) {\n options = _.extend({ parse: true }, options);\n var model = this;\n var success = options.success;\n options.success = function (serverAttrs) {\n model.set(serverAttrs, options);\n if (model._invalidate(options))\n return false;\n if (success)\n success.call(options.context, model, serverAttrs, options);\n triggerAndBubble(model, 'sync', model, serverAttrs, options);\n };\n wrapError(this, options);\n return _sync('read', this, options);\n };\n RestModel.prototype.sync = function () {\n return Sync.sync.apply(this, arguments);\n };\n RestModel.prototype.save = function (key, val, a_options) {\n var _this = this;\n var attrs, originalOptions;\n if (key == null || typeof key === 'object') {\n attrs = key;\n originalOptions = val || {};\n }\n else {\n (attrs = {})[key] = val;\n originalOptions = a_options || {};\n }\n var options = _.extend({ validate: true, parse: true }, originalOptions), wait = options.wait;\n if (attrs && !wait) {\n this.set(attrs, originalOptions);\n }\n if (this._invalidate(options)) {\n if (attrs && wait)\n this.set(attrs, originalOptions);\n return Sync.errorPromise(this.validationError);\n }\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = function (serverAttrs) {\n model.attributes = attributes;\n if (wait)\n serverAttrs = _.extend({}, attrs, serverAttrs);\n if (serverAttrs) {\n transactionalProto.set.call(_this, serverAttrs, options);\n if (model._invalidate(options))\n return false;\n }\n if (success)\n success.call(options.context, model, serverAttrs, options);\n triggerAndBubble(model, 'sync', model, serverAttrs, options);\n };\n wrapError(this, options);\n if (attrs && wait)\n this.attributes = _.extend({}, attributes, attrs);\n var method = this.isNew() ? 'create' : (options.patch ? 'patch' : 'update');\n if (method === 'patch' && !options.attrs)\n options.attrs = attrs;\n var xhr = _sync(method, this, options);\n this.attributes = attributes;\n return xhr;\n };\n RestModel.prototype.destroy = function (options) {\n options = options ? _.clone(options) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n var destroy = function () {\n model.stopListening();\n model.trigger('destroy', model, model.collection, options);\n };\n options.success = function (resp) {\n if (wait)\n destroy();\n if (success)\n success.call(options.context, model, resp, options);\n if (!model.isNew())\n triggerAndBubble(model, 'sync', model, resp, options);\n };\n var xhr;\n if (this.isNew()) {\n _.defer(options.success);\n }\n else {\n wrapError(this, options);\n xhr = _sync('delete', this, options);\n }\n if (!wait)\n destroy();\n return xhr || false;\n };\n RestModel.prototype.url = function () {\n var base = _.result(this, 'urlRoot') ||\n _.result(this.collection, 'url') ||\n Sync.urlError();\n if (this.isNew())\n return base;\n var id = this.get(this.idAttribute);\n return base.replace(/[^\\/]$/, '$&/') + encodeURIComponent(id);\n };\n RestModel.prototype.set = function (a, b, c) {\n if (typeof a === 'string') {\n if (c) {\n return _super.prototype.set.call(this, (_a = {}, _a[a] = b, _a), c);\n }\n else {\n this[a] = b;\n return this;\n }\n }\n else {\n return _super.prototype.set.call(this, a, b);\n }\n var _a;\n };\n RestModel.Collection = RestCollection;\n RestModel = tslib_1.__decorate([\n define({\n urlRoot: ''\n }),\n definitions({\n urlRoot: mixinRules.protoValue\n })\n ], RestModel);\n return RestModel;\n}(Model));\nexport { RestModel };\nfunction _sync(method, _this, options) {\n _this._xhr && _this._xhr.abort && _this._xhr.abort();\n var xhr = _this._xhr = _this.sync(method, _this, options);\n xhr && xhr.always && xhr.always(function () { _this._xhr = void 0; });\n return xhr;\n}\nfunction wrapError(model, options) {\n var error = options.error;\n options.error = function (resp) {\n if (error)\n error.call(options.context, model, resp, options);\n triggerAndBubble(model, 'error', model, resp, options);\n };\n}\nfunction triggerAndBubble(model) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n model.trigger.apply(model, args);\n var collection = model.collection;\n collection && collection.trigger.apply(collection, args);\n}\n//# sourceMappingURL=rest.js.map","import * as _ from 'underscore';\nexport var ModelMixin = {\n pick: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return _.pick(this, args);\n },\n escape: function (attr) {\n return _.escape(this[attr]);\n },\n matches: function (attrs) {\n return !!_.iteratee(attrs, this)(this);\n },\n omit: function () {\n var keys = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n keys[_i] = arguments[_i];\n }\n return this.mapObject(function (value, key) {\n if (keys.indexOf(key) < 0) {\n return value;\n }\n });\n },\n invert: function () {\n var inverted = {};\n this.each(function (value, key) { return inverted[value] = key; });\n return inverted;\n },\n pairs: function () {\n return this.map(function (value, key) { return [key, value]; });\n },\n isEmpty: function () {\n return !this.values().length;\n },\n chain: function () {\n return _.chain(this.mapObject(function (x) { return x; }));\n }\n};\nexport var CollectionMixin = {\n where: function (attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n findWhere: function (attrs) {\n return this.where(attrs, true);\n }\n};\naddUnderscoreMethods(CollectionMixin, 'models', {\n forEach: 3, each: 3, map: 3, collect: 3, reduce: 4,\n foldl: 4, inject: 4, reduceRight: 4, foldr: 4, find: 3, findIndex: 3, findLastIndex: 3, detect: 3, filter: 3,\n select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3,\n contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3,\n head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3,\n without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3,\n isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3,\n sortBy: 3, indexBy: 3\n});\nfunction addUnderscoreMethods(Mixin, attribute, methods) {\n _.each(methods, function (length, method) {\n if (_[method])\n Mixin[method] = addMethod(length, method, attribute);\n });\n}\nfunction addMethod(length, method, attribute) {\n switch (length) {\n case 1: return function () {\n return _[method](this[attribute]);\n };\n case 2: return function (value) {\n return _[method](this[attribute], value);\n };\n case 3: return function (iteratee, context) {\n var value = this[attribute], callback = cb(iteratee, this);\n return arguments.length > 1 ?\n _[method](value, callback, context)\n : _[method](value, callback);\n };\n case 4: return function (iteratee, defaultVal, context) {\n var value = this[attribute], callback = cb(iteratee, this);\n return arguments.length > 1 ?\n _[method](value, callback, defaultVal, context)\n : _[method](value, callback);\n };\n default: return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n args.unshift(this[attribute]);\n return _[method].apply(_, args);\n };\n }\n}\nfunction cb(iteratee, instance) {\n switch (typeof iteratee) {\n case 'function': return iteratee;\n case 'string': return function (model) { return model.get(iteratee); };\n case 'object':\n if (!(iteratee instanceof instance.model))\n return _.matches(iteratee);\n }\n return iteratee;\n}\n//# sourceMappingURL=underscore-mixin.js.map","import * as TypeR from './type-r';\nexport * from './type-r';\nimport Backbone from './backbone';\nimport { RestCollection, RestModel } from './rest';\nimport { Store as BaseStore, tools, MixinsState } from './type-r';\nimport Sync from './sync';\nimport { ModelMixin, CollectionMixin } from './underscore-mixin';\nimport { RestStore, LazyStore } from './rest-store';\nexport var Class = TypeR.Messenger;\nvar Nested = Object.create(TypeR, tools.defaults({\n 'sync': linkProperty(Sync, 'sync'),\n 'errorPromise': linkProperty(Sync, 'errorPromise'),\n 'ajax': linkProperty(Sync, 'ajax'),\n 'history': linkProperty(Backbone, 'history'),\n 'store': linkProperty(BaseStore, 'global'),\n '$': {\n get: function () { return Backbone.$; },\n set: function (value) { Backbone.$ = Sync.$ = value; }\n }\n}, toProps({ Backbone: Backbone, Class: Class, Model: RestModel, Collection: RestCollection, LazyStore: LazyStore, Store: RestStore, defaults: defaults }), toProps(Backbone)));\nexport default Nested;\nexport { Backbone, RestStore, LazyStore, RestCollection as Collection, RestModel as Model };\nexport function defaults(x) {\n return Nested.Model.defaults(x);\n}\nexport * from './backbone';\nMixinsState.get(Nested.Mixable).merge([Nested.Events]);\nNested.Messenger.mixins.populate(Backbone.View, Backbone.Router, Backbone.History);\nNested.Record.mixins.merge([ModelMixin]);\nNested.Record.Collection.mixins.merge([CollectionMixin]);\nfunction linkProperty(Namespace, name) {\n return {\n get: function () { return Namespace[name]; },\n set: function (value) { Namespace[name] = value; }\n };\n}\nfunction toProps(obj) {\n return tools.transform({}, obj, function (x) { return ({ value: x }); });\n}\n//# sourceMappingURL=index.js.map","import * as tools from './tools';\nexport { tools };\nexport * from './mixins';\nexport * from './events';\nimport * as eventsApi from './eventsource';\nexport { eventsApi };\nimport { Mixable } from './mixins';\nObject.extend = function (protoProps, staticProps) { return Mixable.extend(protoProps, staticProps); };\nObject.assign || (Object.assign = tools.assign);\nObject.log = tools.log;\n//# sourceMappingURL=index.js.map","var ValidationError = (function () {\n function ValidationError(obj) {\n this.length = obj._validateNested(this.nested = {});\n if (this.error = obj.validate(obj)) {\n this.length++;\n }\n }\n ValidationError.prototype.each = function (iteratee) {\n var _a = this, error = _a.error, nested = _a.nested;\n if (error)\n iteratee(error, null);\n for (var key in nested) {\n iteratee(nested[key], key);\n }\n };\n ValidationError.prototype.eachError = function (iteratee, object) {\n this.each(function (value, key) {\n if (value instanceof ValidationError) {\n value.eachError(iteratee, object.get(key));\n }\n else {\n iteratee(value, key, object);\n }\n });\n };\n return ValidationError;\n}());\nexport { ValidationError };\n//# sourceMappingURL=validation.js.map","import * as tslib_1 from \"tslib\";\nimport { AnyType } from './any';\nimport { transactionApi, ItemsBehavior } from '../../transactions';\nvar free = transactionApi.free, aquire = transactionApi.aquire;\nvar AggregatedType = (function (_super) {\n tslib_1.__extends(AggregatedType, _super);\n function AggregatedType() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AggregatedType.prototype.clone = function (value) {\n return value ? value.clone() : value;\n };\n AggregatedType.prototype.toJSON = function (x) { return x && x.toJSON(); };\n AggregatedType.prototype.doInit = function (value, record, options) {\n var v = options.clone ? this.clone(value) : (value === void 0 ? this.defaultValue() : value);\n var x = this.transform(v, void 0, record, options);\n this.handleChange(x, void 0, record, options);\n return x;\n };\n AggregatedType.prototype.doUpdate = function (value, record, options, nested) {\n var key = this.name, attributes = record.attributes;\n var prev = attributes[key];\n var update;\n if (update = this.canBeUpdated(prev, value, options)) {\n var nestedTransaction = prev._createTransaction(update, options);\n if (nestedTransaction) {\n if (nested) {\n nested.push(nestedTransaction);\n }\n else {\n nestedTransaction.commit(record);\n }\n if (this.propagateChanges)\n return true;\n }\n return false;\n }\n var next = this.transform(value, prev, record, options);\n attributes[key] = next;\n if (this.isChanged(next, prev)) {\n this.handleChange(next, prev, record, options);\n return true;\n }\n return false;\n };\n AggregatedType.prototype.canBeUpdated = function (prev, next, options) {\n if (prev && next != null) {\n if (next instanceof this.type) {\n if (options.merge)\n return next.__inner_state__;\n }\n else {\n return next;\n }\n }\n };\n AggregatedType.prototype.convert = function (next, prev, record, options) {\n if (next == null)\n return next;\n if (next instanceof this.type) {\n if (next._shared && !(next._shared & ItemsBehavior.persistent)) {\n this._log('error', 'aggregated collection attribute is assigned with shared collection', next, record);\n }\n return options.merge ? next.clone() : next;\n }\n return this.type.create(next, options);\n };\n AggregatedType.prototype.dispose = function (record, value) {\n if (value) {\n this.handleChange(void 0, value, record, {});\n }\n };\n AggregatedType.prototype.validate = function (record, value) {\n var error = value && value.validationError;\n if (error)\n return error;\n };\n AggregatedType.prototype.create = function () {\n return this.type.create();\n };\n AggregatedType.prototype.initialize = function (options) {\n options.changeHandlers.unshift(this._handleChange);\n };\n AggregatedType.prototype._handleChange = function (next, prev, record, options) {\n if (prev) {\n free(record, prev);\n options.unset || prev.dispose();\n }\n if (next && !aquire(record, next, this.name)) {\n this._log('error', 'aggregated attribute assigned with object already having an owner', next, record);\n }\n };\n return AggregatedType;\n}(AnyType));\nexport { AggregatedType };\n//# sourceMappingURL=owned.js.map","import * as tslib_1 from \"tslib\";\nimport { AnyType } from './any';\nimport { ItemsBehavior, transactionApi } from '../../transactions';\nimport { eventsApi } from '../../object-plus';\nvar on = eventsApi.on, off = eventsApi.off, free = transactionApi.free, aquire = transactionApi.aquire;\nvar shareAndListen = ItemsBehavior.listen | ItemsBehavior.share;\nvar SharedType = (function (_super) {\n tslib_1.__extends(SharedType, _super);\n function SharedType() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SharedType.prototype.doInit = function (value, record, options) {\n var v = options.clone ? this.clone(value, record) : (value === void 0 ? this.defaultValue() : value);\n var x = this.transform(v, void 0, record, options);\n this.handleChange(x, void 0, record, options);\n return x;\n };\n SharedType.prototype.doUpdate = function (value, record, options, nested) {\n var key = this.name, attributes = record.attributes;\n var prev = attributes[key];\n var update;\n if (update = this.canBeUpdated(prev, value, options)) {\n var nestedTransaction = prev._createTransaction(update, options);\n if (nestedTransaction) {\n if (nested) {\n nested.push(nestedTransaction);\n }\n else {\n nestedTransaction.commit(record);\n }\n if (this.propagateChanges)\n return true;\n }\n return false;\n }\n var next = this.transform(value, prev, record, options);\n attributes[key] = next;\n if (this.isChanged(next, prev)) {\n this.handleChange(next, prev, record, options);\n return true;\n }\n return false;\n };\n SharedType.prototype.clone = function (value, record) {\n if (!value || value._owner !== record)\n return value;\n var clone = value.clone();\n aquire(record, clone, this.name);\n return clone;\n };\n SharedType.prototype.toJSON = function () { };\n SharedType.prototype.canBeUpdated = function (prev, next, options) {\n if (prev && next != null && !(next instanceof this.type)) {\n return next;\n }\n };\n SharedType.prototype.convert = function (next, prev, record, options) {\n if (next == null || next instanceof this.type)\n return next;\n var implicitObject = new this.type(next, options, shareAndListen);\n aquire(record, implicitObject, this.name);\n return implicitObject;\n };\n SharedType.prototype.validate = function (model, value, name) { };\n SharedType.prototype.create = function () {\n return null;\n };\n SharedType.prototype._handleChange = function (next, prev, record, options) {\n if (prev) {\n if (prev._owner === record) {\n free(record, prev);\n options.unset || prev.dispose();\n }\n else {\n off(prev, prev._changeEventName, this._onChange, record);\n }\n }\n if (next) {\n if (next._owner !== record) {\n on(next, next._changeEventName, this._onChange, record);\n }\n }\n };\n SharedType.prototype.dispose = function (record, value) {\n if (value) {\n this.handleChange(void 0, value, record, {});\n }\n };\n SharedType.prototype.initialize = function (options) {\n var attribute = this;\n this._onChange = this.propagateChanges ? function (child, options, initiator) {\n this === initiator || this.forceAttributeChange(attribute.name, options);\n } : ignore;\n options.changeHandlers.unshift(this._handleChange);\n };\n return SharedType;\n}(AnyType));\nexport { SharedType };\nfunction ignore() { }\n//# sourceMappingURL=shared.js.map","import * as tslib_1 from \"tslib\";\nimport { startIO } from '../io-tools';\nexport var IORecordMixin = {\n save: function (options) {\n var _this = this;\n if (options === void 0) { options = {}; }\n var endpoint = this.getEndpoint(), json = this.toJSON();\n return startIO(this, this.isNew() ?\n endpoint.create(json, options, this) :\n endpoint.update(this.id, json, options, this), options, function (update) {\n _this.set(update, tslib_1.__assign({ parse: true }, options));\n });\n },\n fetch: function (options) {\n var _this = this;\n if (options === void 0) { options = {}; }\n return startIO(this, this.getEndpoint().read(this.id, options, this), options, function (json) { return _this.set(json, tslib_1.__assign({ parse: true }, options)); });\n },\n destroy: function (options) {\n var _this = this;\n if (options === void 0) { options = {}; }\n return startIO(this, this.getEndpoint().destroy(this.id, options, this), options, function () {\n var collection = _this.collection;\n if (collection) {\n collection.remove(_this, options);\n }\n else {\n _this.dispose();\n }\n });\n }\n};\n//# sourceMappingURL=io-mixin.js.map","import * as tslib_1 from \"tslib\";\nimport { tools, definitions, mixinRules, define } from '../object-plus';\nimport { Transactional } from '../transactions';\nimport { AnyType, AggregatedType, setAttribute, UpdateRecordMixin } from './attributes';\nimport { IORecordMixin } from './io-mixin';\nvar assign = tools.assign, isEmpty = tools.isEmpty, log = tools.log;\nvar _cidCounter = 0;\nvar Record = (function (_super) {\n tslib_1.__extends(Record, _super);\n function Record(a_values, a_options) {\n var _this = _super.call(this, _cidCounter++) || this;\n _this.attributes = {};\n var options = a_options || {}, values = (options.parse ? _this.parse(a_values, options) : a_values) || {};\n if (log.level > 1)\n typeCheck(_this, values);\n _this._previousAttributes = _this.attributes = new _this.Attributes(_this, values, options);\n _this.initialize(a_values, a_options);\n if (_this._localEvents)\n _this._localEvents.subscribe(_this, _this);\n return _this;\n }\n Record_1 = Record;\n Record.onDefine = function (definition, BaseClass) { };\n Record.defaults = function (attrs) {\n return this.extend({ attributes: attrs });\n };\n Record.prototype.save = function (options) { throw new Error('Implemented by mixin'); };\n Record.prototype.destroy = function (options) { throw new Error('Implemented by mixin'); };\n Record.prototype.previousAttributes = function () { return new this.AttributesCopy(this._previousAttributes); };\n Object.defineProperty(Record.prototype, \"__inner_state__\", {\n get: function () { return this.attributes; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Record.prototype, \"changed\", {\n get: function () {\n var changed = this._changedAttributes;\n if (!changed) {\n var prev = this._previousAttributes;\n changed = {};\n var _a = this, _attributes = _a._attributes, attributes = _a.attributes;\n for (var _i = 0, _b = this._attributesArray; _i < _b.length; _i++) {\n var attr = _b[_i];\n var key = attr.name, value = attributes[key];\n if (attr.isChanged(value, prev[key])) {\n changed[key] = value;\n }\n }\n this._changedAttributes = changed;\n }\n return changed;\n },\n enumerable: true,\n configurable: true\n });\n Record.prototype.changedAttributes = function (diff) {\n if (!diff)\n return this.hasChanged() ? assign({}, this.changed) : false;\n var val, changed = false, old = this._transaction ? this._previousAttributes : this.attributes, attrSpecs = this._attributes;\n for (var attr in diff) {\n if (!attrSpecs[attr].isChanged(old[attr], (val = diff[attr])))\n continue;\n (changed || (changed = {}))[attr] = val;\n }\n return changed;\n };\n Record.prototype.hasChanged = function (key) {\n var _previousAttributes = this._previousAttributes;\n if (!_previousAttributes)\n return false;\n return key ?\n this._attributes[key].isChanged(this.attributes[key], _previousAttributes[key]) :\n !isEmpty(this.changed);\n };\n Record.prototype.previous = function (key) {\n if (key) {\n var _previousAttributes = this._previousAttributes;\n if (_previousAttributes)\n return _previousAttributes[key];\n }\n return null;\n };\n Record.prototype.isNew = function () {\n return this.id == null;\n };\n Record.prototype.has = function (key) {\n return this[key] != void 0;\n };\n Record.prototype.unset = function (key, options) {\n var value = this[key];\n this.set((_a = {}, _a[key] = void 0, _a), tslib_1.__assign({ unset: true }, options));\n return value;\n var _a;\n };\n Record.prototype.clear = function (options) {\n var _this = this;\n var nullify = options && options.nullify;\n this.transaction(function () {\n _this.forEachAttr(_this.attributes, function (value, key) { return _this[key] = nullify ? null : void 0; });\n }, options);\n return this;\n };\n Record.prototype.getOwner = function () {\n var owner = this._owner;\n return this._ownerKey ? owner : owner && owner._owner;\n };\n Object.defineProperty(Record.prototype, \"id\", {\n get: function () { return this.attributes[this.idAttribute]; },\n set: function (x) { setAttribute(this, this.idAttribute, x); },\n enumerable: true,\n configurable: true\n });\n Record.prototype.forEachAttr = function (attrs, iteratee) {\n var _attributes = this._attributes;\n var unknown;\n for (var name_1 in attrs) {\n var spec = _attributes[name_1];\n if (spec) {\n iteratee(attrs[name_1], name_1, spec);\n }\n else {\n unknown || (unknown = []);\n unknown.push(\"'\" + name_1 + \"'\");\n }\n }\n if (unknown) {\n this._log('warn', \"attributes \" + unknown.join(', ') + \" are not defined\", {\n attributes: attrs\n });\n }\n };\n Record.prototype.each = function (iteratee, context) {\n var fun = context !== void 0 ? function (v, k) { return iteratee.call(context, v, k); } : iteratee, attributes = this.attributes;\n for (var key in this.attributes) {\n var value = attributes[key];\n if (value !== void 0)\n fun(value, key);\n }\n };\n Record.prototype.keys = function () {\n var keys = [];\n this.each(function (value, key) { return value === void 0 || keys.push(key); });\n return keys;\n };\n Record.prototype.values = function () {\n return this.map(function (value) { return value; });\n };\n Record.prototype._toJSON = function () { return {}; };\n Record.prototype._parse = function (data) { return data; };\n Record.prototype.defaults = function (values) {\n if (values === void 0) { values = {}; }\n var defaults = {}, _attributesArray = this._attributesArray;\n for (var _i = 0, _attributesArray_1 = _attributesArray; _i < _attributesArray_1.length; _i++) {\n var attr = _attributesArray_1[_i];\n var key = attr.name, value = values[key];\n defaults[key] = value === void 0 ? attr.defaultValue() : value;\n }\n return defaults;\n };\n Record.prototype.initialize = function (values, options) { };\n Record.prototype.clone = function (options) {\n if (options === void 0) { options = {}; }\n var copy = new this.constructor(this.attributes, { clone: true });\n if (options.pinStore)\n copy._defaultStore = this.getStore();\n return copy;\n };\n Record.prototype.deepClone = function () { return this.clone(); };\n ;\n Record.prototype._validateNested = function (errors) {\n var _this = this;\n var length = 0;\n this.forEachAttr(this.attributes, function (value, name, attribute) {\n var error = attribute.validate(_this, value, name);\n if (error) {\n errors[name] = error;\n length++;\n }\n });\n return length;\n };\n Record.prototype.get = function (key) {\n return this[key];\n };\n Record.prototype.toJSON = function () {\n var _this = this;\n var json = {};\n this.forEachAttr(this.attributes, function (value, key, _a) {\n var toJSON = _a.toJSON;\n if (value !== void 0) {\n var asJson = toJSON.call(_this, value, key);\n if (asJson !== void 0)\n json[key] = asJson;\n }\n });\n return json;\n };\n Record.prototype.parse = function (data, options) {\n return this._parse(data);\n };\n Record.prototype.deepSet = function (name, value, options) {\n var _this = this;\n this.transaction(function () {\n var path = name.split('.'), l = path.length - 1, attr = path[l];\n var model = _this;\n for (var i = 0; i < l; i++) {\n var key = path[i];\n var next = model.get ? model.get(key) : model[key];\n if (!next) {\n var attrSpecs = model._attributes;\n if (attrSpecs) {\n var newModel = attrSpecs[key].create();\n if (options && options.nullify && newModel._attributes) {\n newModel.clear(options);\n }\n model[key] = next = newModel;\n }\n else\n return;\n }\n model = next;\n }\n if (model.set) {\n model.set((_a = {}, _a[attr] = value, _a), options);\n }\n else {\n model[attr] = value;\n }\n var _a;\n });\n return this;\n };\n Object.defineProperty(Record.prototype, \"collection\", {\n get: function () {\n return this._ownerKey ? null : this._owner;\n },\n enumerable: true,\n configurable: true\n });\n Record.prototype.dispose = function () {\n var _this = this;\n if (this._disposed)\n return;\n this.forEachAttr(this.attributes, function (value, key, attribute) {\n attribute.dispose(_this, value);\n });\n _super.prototype.dispose.call(this);\n };\n Record.prototype._log = function (level, text, props) {\n tools.log(level, '[Record] ' + text, tslib_1.__assign({ 'Record': this, 'Attributes definition:': this._attributes }, props));\n };\n Record.prototype.getClassName = function () {\n return _super.prototype.getClassName.call(this) || 'Record';\n };\n Record.prototype._createTransaction = function (values, options) { return void 0; };\n Record = Record_1 = tslib_1.__decorate([\n define({\n cidPrefix: 'm',\n _changeEventName: 'change',\n idAttribute: 'id'\n }),\n definitions({\n defaults: mixinRules.merge,\n attributes: mixinRules.merge,\n collection: mixinRules.merge,\n Collection: mixinRules.value,\n idAttribute: mixinRules.protoValue\n })\n ], Record);\n return Record;\n var Record_1;\n}(Transactional));\nexport { Record };\n;\nassign(Record.prototype, UpdateRecordMixin, IORecordMixin);\nvar BaseRecordAttributes = (function () {\n function BaseRecordAttributes(record, x, options) {\n this.id = x.id;\n }\n return BaseRecordAttributes;\n}());\nRecord.prototype.Attributes = BaseRecordAttributes;\nvar BaseRecordAttributesCopy = (function () {\n function BaseRecordAttributesCopy(x) {\n this.id = x.id;\n }\n return BaseRecordAttributesCopy;\n}());\nRecord.prototype.AttributesCopy = BaseRecordAttributesCopy;\nvar IdAttribute = AnyType.create({ value: void 0 }, 'id');\nRecord.prototype._attributes = { id: IdAttribute };\nRecord.prototype._attributesArray = [IdAttribute];\nRecord._attribute = AggregatedType;\nimport { shouldBeAnObject } from './attributes';\nfunction typeCheck(record, values) {\n if (shouldBeAnObject(record, values)) {\n var _attributes = record._attributes;\n var unknown = void 0;\n for (var name_2 in values) {\n if (!_attributes[name_2]) {\n unknown || (unknown = []);\n unknown.push(\"'\" + name_2 + \"'\");\n }\n }\n if (unknown) {\n record._log('warn', \"undefined attributes \" + unknown.join(', ') + \" are ignored.\", { values: values });\n }\n }\n}\n//# sourceMappingURL=record.js.map","import * as tslib_1 from \"tslib\";\nimport { AnyType } from '../record';\nimport { parseReference } from './commons';\nimport { Record } from '../record';\nimport { ChainableAttributeSpec } from '../record';\nvar RecordRefType = (function (_super) {\n tslib_1.__extends(RecordRefType, _super);\n function RecordRefType() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n RecordRefType.prototype.toJSON = function (value) {\n return value && typeof value === 'object' ? value.id : value;\n };\n RecordRefType.prototype.clone = function (value) {\n return value && typeof value === 'object' ? value.id : value;\n };\n RecordRefType.prototype.isChanged = function (a, b) {\n var aId = a && (a.id == null ? a : a.id), bId = b && (b.id == null ? b : b.id);\n return aId !== bId;\n };\n RecordRefType.prototype.validate = function (model, value, name) { };\n return RecordRefType;\n}(AnyType));\nRecord.from = function from(masterCollection) {\n var getMasterCollection = parseReference(masterCollection);\n var typeSpec = new ChainableAttributeSpec({\n value: null,\n _attribute: RecordRefType\n });\n return typeSpec\n .get(function (objOrId, name) {\n if (typeof objOrId === 'object')\n return objOrId;\n var collection = getMasterCollection(this);\n var record = null;\n if (collection && collection.length) {\n record = collection.get(objOrId) || null;\n this.attributes[name] = record;\n record && this._attributes[name].handleChange(record, null, this, {});\n }\n return record;\n });\n};\n//# sourceMappingURL=from.js.map","import * as tslib_1 from \"tslib\";\nimport { Record } from '../record';\nimport { Transactional } from '../transactions';\nvar _store = null;\nvar Store = (function (_super) {\n tslib_1.__extends(Store, _super);\n function Store() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Store.prototype.getStore = function () { return this; };\n Store.prototype.get = function (name) {\n var local = this[name];\n if (local || this === this._defaultStore)\n return local;\n return this._owner ? this._owner.get(name) : this._defaultStore.get(name);\n };\n Object.defineProperty(Store, \"global\", {\n get: function () { return _store; },\n set: function (store) {\n if (_store) {\n _store.dispose();\n }\n Transactional.prototype._defaultStore = _store = store;\n },\n enumerable: true,\n configurable: true\n });\n return Store;\n}(Record));\nexport { Store };\nStore.global = new Store();\n//# sourceMappingURL=store.js.map","import * as _ from 'underscore';\nimport Backbone from './backbone';\nimport { tools } from './type-r';\nvar defaults = tools.defaults;\nvar methodMap = {\n 'create': 'POST',\n 'update': 'PUT',\n 'patch': 'PATCH',\n 'delete': 'DELETE',\n 'read': 'GET'\n};\nvar exported = {\n $: Backbone.$,\n errorPromise: function (error) {\n var x = $.Deferred();\n x.reject(error);\n return x;\n },\n ajax: function (options) {\n return $.ajax.apply($, arguments);\n },\n sync: sync,\n urlError: function () {\n throw new Error('A \"url\" property or function must be specified');\n }\n};\nexport default exported;\nfunction sync(method, model, options) {\n if (options === void 0) { options = {}; }\n var type = methodMap[method];\n var params = { type: type, dataType: 'json' };\n if (!options.url) {\n params.url = _.result(model, 'url') || exported.urlError();\n }\n if (options.data == null && model && (method === 'create' || method === 'update' || method === 'patch')) {\n params.contentType = 'application/json';\n params.data = JSON.stringify(options.attrs || model.toJSON(options));\n }\n if (params.type !== 'GET') {\n params.processData = false;\n }\n var error = options.error;\n options.error = function (xhr, textStatus, errorThrown) {\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if (error)\n error.call(options.context, xhr, textStatus, errorThrown);\n };\n var xhr = options.xhr = exported.ajax(_.extend(params, options));\n model.trigger('request', model, xhr, options);\n model.collection && model.collection.trigger('request', model, xhr, options);\n return xhr;\n}\n//# sourceMappingURL=sync.js.map","import * as tslib_1 from \"tslib\";\nimport Backbone from './backbone';\nimport * as _ from 'underscore';\nimport { define, Store } from './type-r';\nimport { RestModel, RestCollection } from './rest';\nvar RestStore = (function (_super) {\n tslib_1.__extends(RestStore, _super);\n function RestStore() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n RestStore = tslib_1.__decorate([\n define({\n getStore: Store.prototype.getStore,\n get: Store.prototype.get,\n })\n ], RestStore);\n return RestStore;\n}(RestModel));\nexport { RestStore };\nvar LazyStore = (function (_super) {\n tslib_1.__extends(LazyStore, _super);\n function LazyStore() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._resolved = {};\n return _this;\n }\n LazyStore.prototype.initialize = function () {\n var _this = this;\n this.each(function (element, name) {\n if (!element)\n return;\n element.store = _this;\n var fetch = element.fetch;\n if (fetch) {\n var self_1 = _this;\n element.fetch = function () {\n return self_1._resolved[name] = fetch.apply(this, arguments);\n };\n }\n if (element instanceof RestCollection && element.length) {\n _this._resolved[name] = true;\n }\n });\n };\n LazyStore.prototype.fetch = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var xhr = [], objsToFetch = args.length ? args : this.keys();\n for (var _a = 0, objsToFetch_1 = objsToFetch; _a < objsToFetch_1.length; _a++) {\n var name_1 = objsToFetch_1[_a];\n var attr = this.attributes[name_1];\n attr && attr.fetch && xhr.push(attr.fetch());\n }\n var $ = Backbone.$;\n return $ && $.when && $.when.apply($, xhr);\n };\n LazyStore.prototype.fetchOnce = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var xhr = [], self = this, objsToFetch = args.length ? args : this.keys();\n for (var _a = 0, objsToFetch_2 = objsToFetch; _a < objsToFetch_2.length; _a++) {\n var name_2 = objsToFetch_2[_a];\n var attr = self.attributes[name_2];\n xhr.push(self._resolved[name_2] || attr && attr.fetch && attr.fetch());\n }\n var $ = Backbone.$;\n return $ && $.when && $.when.apply($, xhr);\n };\n LazyStore.prototype.clear = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var objsToClear = args.length ? args : this.keys();\n for (var _a = 0, objsToClear_1 = objsToClear; _a < objsToClear_1.length; _a++) {\n var name_3 = objsToClear_1[_a];\n var element = this.attributes[name_3];\n if (element instanceof RestCollection) {\n element.reset();\n }\n else if (element instanceof Store) {\n element.clear();\n }\n else if (element instanceof RestModel) {\n element.set(element.defaults());\n }\n this._resolved[name_3] = false;\n }\n return this;\n };\n LazyStore.onDefine = function (definitions, BaseClass) {\n var attributes = definitions.defaults || definitions.attributes;\n _.each(attributes, function (Type, name) {\n if (Type.has) {\n attributes[name] = Type.has\n .set(function (value) {\n if (!value || !value.length) {\n var resolved = this._resolved || (this._resolved = {});\n resolved[name] = false;\n }\n return value;\n });\n }\n });\n RestModel.onDefine.call(this, definitions, BaseClass);\n };\n LazyStore = tslib_1.__decorate([\n define\n ], LazyStore);\n return LazyStore;\n}(RestStore));\nexport { LazyStore };\n//# sourceMappingURL=rest-store.js.map"],"names":["__extends","d","b","__","this","constructor","extendStatics","prototype","Object","create","__rest","s","e","t","p","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","__decorate","decorators","target","key","desc","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","isValidJSON","value","proto","getPrototypeOf","Array","every","getBaseClass","Class","isEmpty","obj","some","fun","ArrayProto","arr","result","someArray","someObject","predicate","x","omit","source","dest","discard","name","transform","assign","other","defaults","once","func","memo","first","apply","notEqual","a","protoA","DateProto","arraysNotEqual","ObjectProto","keysA","keys","objectsNotEqual","hashMap","hash","HashProto","predefine","Constructor","BaseClass","__super__","define","MixinsState","get","Mixable","populate","onExtend","ClassOrDefinition","Ctor","definitions","rules","mixins","definitionRules","definitionDecorator","definitionKey","mergeObject","_a","_b","assignProperty","sourceProp","rule","unshift","destProp","configurable","resolveRule","getBubblingHandler","event","_bubblingHandlers","trigger5","trigger3","trigger2","listOff","_events","callback","context","filteredHead","prev","head","ev","next","_callback","listSend3","on","EventHandler","once_1","_once","off","name_3","strings","api","events","eventSplitter","test","_i","names_1","split","self","queue","all","listSend2","listSend4","listSend5","f","listSend6","uniqueId","_idCount","toPropertyDescriptor","addReference","listener","_listeningTo","cid","resolveReference","root","reference","action","path","match","referenceMask","skip","getStore","getOwner","createIOPromise","initialize","abort","fn","onAbort","resolve","reject","promise","Promise","a_resolve","a_reject","Error","startIO","options","thenDo","abortIO","ioUpdate","_ioPromise","then","resp","triggerAndBubble","catch","err","console","error","eventSource","args","trigger","collection","getOwnerEndpoint","_owner","_endpoints","_ownerKey","setAttribute","record","isRoot","begin","_attributes","doUpdate","markAsDirty","attributes","commit","_begin","_previousAttributes","AttributesCopy","_changedAttributes","_markAsDirty","constructorsMixin","attrDefs","attrs","Function","map","attr","join","Attributes","shouldBeAnObject","values","_log","chainGetHooks","prevHook","nextHook","chainTransforms","prevTransform","nextTransform","chainChangeHandlers","prevHandler","nextHandler","toAttributeOptions","spec","attrSpec","has","ChainableAttributeSpec","type","Number","String","Boolean","inferType","Transactional","shared","hasCustomDefault","supportsDate","date","isNaN","Date","getTime","Integer","Math","round","doNothing","createAttribute","AnyType","createSharedTypeSpec","Attribute","_attribute","localEventsMixin","attrSpecs","_localEvents","_onChange","eventsApi.EventMap","addEvent","ref","CompiledReference","local","tail","createWatcherFromRef","watcher","wrapWatcher","attrName","asProp","getMetadata","prop","convertAndAquire","model","_shared","ItemsBehavior","listen","_changeEventName","_onChildrenChange","merge","clone","_aquire","_aggregationError","push","_itemEvents","subscribe","free","owner","child","unset","_free","dispose","unsubscribe","sortElements","_comparator","sort","models","addIndex","index","id","removeIndex","updateIndex","previous","idAttribute","logAggregationError","addTransaction","items","nested","added","a_items","a_options","forceMerge","_byId","parse","prevLength","a_items_1","item","transaction","_createTransaction","hasChanged","slice","appendElements","needSort","at","length_1","j","moveElements","sortOrMoveElements","CollectionTransaction","emptySetTransaction","silent","len","src","_reallocateEmpty","silentOptions","setTransaction","_prevById","prevModels","toAdd","orderKept","sorted","_reallocate","reusedCount","removed","previous_1","_garbageCollect","children","children_1","freeAll","addedOrChanged","removeMany","toRemove","_removeFromIndex","toElements","elements","parsed","isArray","bindContext","v","k","toPredicateFunction","iteratee","parseReference","collectionRef","resolveRefs","master","records","elements_1","el","delaySet","tools.notEqual","refs","transactionApi","toArray","_super","DefaultRecord","tslib_1.__extends","tslib_1.__decorate","Model","method","_this","View","_.uniqueId","_.extend","_.pick","viewOptions","_ensureElement","delegateEvents","Router","routes","_bindRoutes","History","handlers","checkUrl","_.bind","window","location","history","_sync","_xhr","xhr","sync","always","wrapError","addUnderscoreMethods","Mixin","attribute","methods","_.each","_","cb","defaultVal","addMethod","instance","_.matches","Nested","linkProperty","Namespace","set","toProps","tools.transform","setPrototypeOf","__proto__","__assign","n","levelToNumber","none","warn","info","log","debug","a_level","a_msg","a_props","msg","props","level","levelAsNumber","throw","logger","stop","process","env","NODE_ENV","name_1","definition","names","name_2","o","protoProps","staticProps","defineMixin","tslib_1.__rest","getStaticDefinitions","onDefine","mergeInheritedMembers","extend","statics","TheSubclass","Subclass","mergeRules","appliedMixins","mixins_1","mixin","sourceMixins","concat","ctors","ctors_1","object","ignore","dontMix","getOwnPropertyNames","forEachOwnProp","mixinRules","protoValue","baseProto","function","caller","list","pipe","classFirst","classLast","EventMap","addEventsMap","bubbleEvents","EventDescriptor","event_1","event_2","handler","_eventsApi.strings","_eventsApi.on","_eventsApi.off","_eventsApi.once","_eventsApi.trigger5","_eventsApi.trigger2","_eventsApi.trigger3","Messenger","localEvents","properties","eventsMap","defineProperties","listenTo","listenToOnce","stopListening","a_source","removeAll","second","_disposed","Events","tools.assign","tools.log","ValidationError","_validateNested","validate","each","eachError","splitTail","substr","pop","eventsApi.trigger3","eventsApi.on","eventsApi.off","_changeToken","_transaction","_isDirty","_validationError","cidPrefix","Transactional_1","endpoint","_endpoint","onChanges","offChanges","listenToChanges","update","updateEach","assignFrom","__inner_state__","data","deepGet","_defaultStore","val","hasPendingIO","fetch","getEndpoint","mapObject","enumerable","getValidationError","validationError","deepValidationError","eachValidationError","isValid","valueOf","toString","getClassName","dirty","initiator","originalOptions","aquire","UpdateRecordMixin","propagateChanges","forceAttributeChange","a_values","unknown","changes","RecordTransaction","nested_1","nested_2","changes_1","emptyOptions","getHook","getHooks","transforms","changeHandlers","toJSON","changeEvents","defaultValue","tools.isValidJSON","JSON","stringify","isRequired","wrapIsRequired","convert","getHook_1","reduce","validate_1","handleChange","canBeUpdated","isChanged","createPropertyDescriptor","doInit","text","Record","Attribute definition","Prev. value","New value","AggregatedType","nestedTransaction","persistent","_handleChange","check","metadata","changed","eventMap","cloned","_isRequired","_has","DateType","timestamp","toISOString","msDatePattern","MSDateType","msDate","exec","TimestampType","microsoft","struct","minutesOffset","isoDatePattern","numericKeys","undefined","UTC","safeParseDate","ImmutableClassType","PrimitiveType","NumericType","num","isFinite","integer","ArrayType","ObjectType","FunctionType","shareAndListen","share","SharedType","implicitObject","IORecordMixin","save","json","isNew","tslib_1.__assign","read","destroy","remove","tools.isEmpty","_cidCounter","typeCheck","previousAttributes","_attributesArray","changedAttributes","diff","old","clear","nullify","forEachAttr","_toJSON","_parse","_attributesArray_1","copy","pinStore","deepClone","errors","asJson","deepSet","l","newModel","Attributes definition:","Collection","BaseRecordAttributes","BaseRecordAttributesCopy","IdAttribute","tools.defaults","DefaultCollection","attributesDefinition","baseClassAttributes","myAttributes","_.transform","allAttributes","_.defaults","ConstructorsMixin","createToJSON","attrsWithParse","filter","parseMixin","attrDef","compile","getAttributes","dynamicMixin","eventsApi.trigger2","_d","added_1","_e","removed_1","_count","CollectionRefsType","comparator","createSubset","subset","SubsetOf","subsetOf","RefsCollection","_SubsetOf","Refs","Subset","itemEvents","aa","bb","_store","objOrId","find","mapped","count","last","a_index","add","reset","liveUpdates","enabled","filter_1","_liveUpdates","updated","aggregated","a_elements","previousModels","previousModels_1","toDispose","recordsOrIds","splice","notify","removeOne","pluck","modelOrId","shift","modelId","toggle","a_next","Argument","Attributes spec","RecordRefType","from","masterCollection","getMasterCollection","CollectionConstructor","SubsetOfCollection","subsetOfBehavior","resolvedWith","raw","getModelIds","addAll","toggleAll","defineSubsetCollection","Store","store","global","previousBackbone","Backbone","exported","$","jQuery","VERSION","noConflict","delegateEventSplitter","tagName","selector","$el","render","setElement","element","delegate","undelegateEvents","_.result","_.isFunction","eventName","className","optionalParam","namedParam","splatParam","escapeRegExp","route","_.isRegExp","_routeToRegExp","router","fragment","_extractParameters","execute","navigate","_.keys","replace","optional","RegExp","params","_.map","param","decodeURIComponent","routeStripper","rootStripper","pathStripper","started","interval","atRoot","pathname","getSearch","matchRoot","decodeFragment","decodeURI","href","getHash","getPath","charAt","getFragment","_usePushState","_wantsHashChange","start","hashChange","_hasHashChange","document","documentMode","_useHashChange","_wantsPushState","pushState","_hasPushState","iframe","createElement","style","display","tabIndex","body","iWindow","insertBefore","firstChild","contentWindow","open","close","addEventListener","attachEvent","_checkUrlInterval","setInterval","loadUrl","removeEventListener","detachEvent","removeChild","clearInterval","current","_.some","url","title","_updateHash","methodMap","patch","delete","errorPromise","Deferred","ajax","dataType","urlError","contentType","processData","textStatus","errorThrown","transactionalProto","tools.getBaseClass","RestCollection","urlRoot","_invalidate","success","a_model","RestModel","wait","callbackOpts","Sync","serverAttrs","_.clone","_.defer","base","encodeURIComponent","ModelMixin","pick","escape","_.escape","matches","_.iteratee","invert","inverted","pairs","chain","_.chain","CollectionMixin","where","findWhere","forEach","collect","foldl","inject","reduceRight","foldr","findIndex","findLastIndex","detect","select","any","include","includes","contains","invoke","max","min","size","take","initial","rest","drop","without","difference","shuffle","lastIndexOf","sample","partition","groupBy","countBy","sortBy","indexBy","RestStore","LazyStore","_resolved","self_1","objsToFetch_1","when","fetchOnce","objsToFetch_2","objsToClear_1","Type","TypeR.Messenger","TypeR","BaseStore"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../src/type-r/object-plus/tools.ts","../src/type-r/object-plus/mixins.ts","../src/type-r/object-plus/eventsource.ts","../src/type-r/object-plus/events.ts","../src/type-r/object-plus/index.ts","../src/type-r/validation.ts","../src/type-r/traversable.ts","../src/type-r/io-tools.ts","../src/type-r/transactions.ts","../src/type-r/record/attributes/updates.ts","../src/type-r/record/attributes/any.ts","../src/type-r/record/attributes/owned.ts","../src/type-r/record/attributes/attrDef.ts","../src/type-r/record/attributes/date.ts","../src/type-r/record/attributes/basic.ts","../src/type-r/record/attributes/shared.ts","../src/type-r/record/attributes/index.ts","../src/type-r/record/io-mixin.ts","../src/type-r/record/record.ts","../src/type-r/record/index.ts","../src/type-r/collection/commons.ts","../src/type-r/collection/add.ts","../src/type-r/collection/set.ts","../src/type-r/collection/remove.ts","../src/type-r/collection/index.ts","../src/type-r/relations/commons.ts","../src/type-r/relations/from.ts","../src/type-r/relations/subsetOf.ts","../src/type-r/relations/store.ts","../src/type-r/index.ts","../src/backbone.ts","../src/sync.ts","../src/rest.ts","../src/underscore-mixin.ts","../src/rest-store.ts","../src/index.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","/**\n * Simple overridable logging stubs, writing to `console` by default.\n * Node.js users might want to redirect logging somewhere.\n * \n * This is the singleton avaliable globally through `Object.log` or \n * exported [[log]] variable.\n */\n\n /** Similar to underscore `_.defaults` */\nexport function defaults< T >( dest : T, ...sources : Object[] ) : T\nexport function defaults< T >( dest : T, source : Object ) : T {\n for( var name in source ) {\n if( source.hasOwnProperty( name ) && !dest.hasOwnProperty( name ) ) {\n dest[ name ] = source[ name ];\n }\n }\n\n if( arguments.length > 2 ){\n for( let i = 2; i < arguments.length; i++ ){\n const other = arguments[ i ];\n other && defaults( dest, other );\n }\n }\n\n return dest;\n}\n\n// Logger is the function.\nexport type Logger = ( level : LogLevel, error : string, props? : object ) => void;\n\nexport type LogLevel = 'none' | 'error' | 'warn' | 'info' | 'debug' | 'log';\n\nconst levelToNumber = {\n none : 0, error : 1, warn : 2, info : 3, log : 4, debug : 5\n}\n\nexport interface Log extends Logger {\n level : number\n throw : number\n stop : number\n logger : Logger\n}\n\nexport const log : Log = function( a_level : LogLevel, a_msg : string, a_props : object ){\n let levelAsNumber = levelToNumber[ a_level ], msg, props, level;\n\n if( levelAsNumber === void 0 && !a_props ){\n levelAsNumber = 4;\n msg = a_level;\n props = a_msg;\n level = 'log';\n }\n else{\n msg = a_msg, level = a_level, props = a_props;\n }\n\n if( levelAsNumber <= log.level ){\n if( levelAsNumber <= log.throw || !log.logger ){\n const error = new Error( msg );\n (error as any).props = props;\n throw error;\n }\n else{\n log.logger( level, msg, props );\n \n if( levelAsNumber <= log.stop ){\n debugger;\n }\n }\n }\n}\n\ndeclare var process: any;\n\nlog.level = typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'production' ? 1 : 2;\nlog.throw = 0;\nlog.stop = 0;\n\n\nlet toString = typeof window === 'undefined' ? \n function toString( something ){\n if( something && typeof something === 'object' ){\n const value = something.__inner_state__ || something,\n isTransactional = Boolean( something.__inner_state__ ),\n isArray = Array.isArray( value );\n\n const keys = Object.keys( value ).join( ', ' ),\n body = isArray ? `[ length = ${ value.length } ]` : `{ ${ keys } }`;\n\n return something.constructor.name + ' ' + body;\n }\n\n return something;\n } : function toString( x ){ return x; };\n\nif( typeof console !== 'undefined' ) {\n log.logger = function _console( level : LogLevel, error : string, props : object ){\n const args = [ error ];\n for( let name in props ){\n args.push( `\\n\\t${name}:`, toString( props[ name ] ) );\n }\n\n console[ level ].apply( console, args );\n }\n}\n\n/** Check if value is raw JSON */\nexport function isValidJSON( value : any ) : boolean {\n if( value === null ){\n return true;\n }\n\n switch( typeof value ){\n case 'number' :\n case 'string' :\n case 'boolean' :\n return true;\n\n case 'object':\n var proto = Object.getPrototypeOf( value );\n\n if( proto === Object.prototype || proto === Array.prototype ){\n return every( value, isValidJSON );\n }\n }\n\n return false;\n}\n\n/** Get the base class constructor function.\n * @param Class Subclass constructor function.\n * @returns Base class constructor function.\n */\nexport function getBaseClass( Class : Function ) {\n return Object.getPrototypeOf( Class.prototype ).constructor\n}\n\nexport function assignToClassProto( Class, definition : T, ...names : K[] ) : void {\n for( let name of names ){\n const value = definition[ name ];\n value === void 0 || ( Class.prototype[ name ] = value );\n }\n}\n\n/** Checks whenever given object is an empty hash `{}` */\nexport function isEmpty( obj : {} ) : boolean {\n if( obj ){\n for( let key in obj ){\n if( obj.hasOwnProperty( key ) ){\n return false;\n }\n }\n }\n\n return true;\n}\n\nexport type Iteratee = ( value : any, key? : string | number ) => any;\n\n/** @hidden */\nfunction someArray( arr : any[], fun : Iteratee ) : any {\n let result;\n\n for( let i = 0; i < arr.length; i++ ){\n if( result = fun( arr[ i ], i ) ){\n return result;\n }\n }\n}\n\n/** @hidden */\nfunction someObject( obj : {}, fun : Iteratee ) : any {\n let result;\n\n for( let key in obj ){\n if( obj.hasOwnProperty( key ) ){\n if( result = fun( obj[ key ], key ) ){\n return result;\n }\n }\n }\n}\n\n/** Similar to underscore `_.some` */\nexport function some( obj, fun : Iteratee ) : any {\n if( Object.getPrototypeOf( obj ) === ArrayProto ){\n return someArray( obj, fun );\n }\n else{\n return someObject( obj, fun );\n }\n}\n\n/** Similar to underscore `_.every` */\nexport function every( obj : { }, predicate : Iteratee ) : boolean {\n return !some( obj, x => !predicate( x ) );\n}\n\n/** Similar to `getOwnPropertyDescriptor`, but traverse the whole prototype chain. */\nexport function getPropertyDescriptor( obj : {}, prop : string ) : PropertyDescriptor {\n let desc : PropertyDescriptor;\n\n for( let proto = obj; !desc && proto; proto = Object.getPrototypeOf( proto ) ) {\n desc = Object.getOwnPropertyDescriptor( proto, prop );\n }\n\n return desc;\n}\n\n/** Similar to underscore `_.omit` */\nexport function omit( source : {}, ...rest : string[] ) : {}\nexport function omit( source ) : {} {\n const dest = {}, discard = {};\n\n for( let i = 1; i < arguments.length; i ++ ){\n discard[ arguments[ i ] ] = true;\n }\n\n for( var name in source ) {\n if( !discard.hasOwnProperty( name ) && source.hasOwnProperty( name ) ) {\n dest[ name ] = source[ name ];\n }\n }\n\n return dest;\n}\n\n/** map `source` object properties with a given function, and assign the result to the `dest` object.\n * When `fun` returns `undefined`, skip this value. \n */\nexport function transform< A, B >( dest : { [ key : string ] : A }, source : { [ key : string ] : B }, fun : ( value : B, key : string ) => A | void ) : { [ key : string ] : A } {\n for( var name in source ) {\n if( source.hasOwnProperty( name ) ) {\n var value = fun( source[ name ], name );\n value === void 0 || ( dest[ name ] = < A >value );\n }\n }\n\n return dest;\n}\n\n/** @hidden */\nexport function fastAssign< A >( dest : A, source : {} ) : A {\n for( var name in source ) {\n dest[ name ] = source[ name ];\n }\n\n return dest;\n}\n\n/** @hidden */\nexport function fastDefaults< A >( dest : A, source : {} ) : A {\n for( var name in source ) {\n if( dest[ name ] === void 0 ){\n dest[ name ] = source[ name ];\n }\n }\n\n return dest;\n}\n\n/** Similar to underscore `_.extend` and `Object.assign` */\nexport function assign< T >( dest : T, ...sources : Object[] ) : T\nexport function assign< T >( dest : T, source : Object ) : T {\n for( var name in source ) {\n if( source.hasOwnProperty( name ) ) {\n dest[ name ] = source[ name ];\n }\n }\n\n if( arguments.length > 2 ){\n for( let i = 2; i < arguments.length; i++ ){\n const other = arguments[ i ];\n other && assign( dest, other );\n }\n }\n\n return dest;\n}\n\n/** Similar to underscore `_.keys` */\nexport function keys( o : any ) : string[]{\n return o ? Object.keys( o ) : [];\n}\n\n/** Similar to underscore `_.once` */\nexport function once( func : Function ) : Function {\n var memo, first = true;\n return function() {\n if ( first ) {\n first = false;\n memo = func.apply(this, arguments);\n func = null;\n }\n return memo;\n };\n}\n\n/** @hidden */\nconst ArrayProto = Array.prototype,\n DateProto = Date.prototype,\n ObjectProto = Object.prototype;\n\n/**\n * Determine whenever two values are not equal, deeply traversing \n * arrays and plain JS objects (hashes). Dates are compared by enclosed timestamps, all other\n * values are compared with strict comparison.\n */\nexport function notEqual( a : any, b : any) : boolean {\n if( a === b ) return false;\n\n if( a && b && typeof a == 'object' && typeof b == 'object' ) {\n const protoA = Object.getPrototypeOf( a );\n\n if( protoA !== Object.getPrototypeOf( b ) ) return true;\n\n switch( protoA ){\n case DateProto : return +a !== +b;\n case ArrayProto : return arraysNotEqual( a, b );\n case ObjectProto :\n case null:\n return objectsNotEqual( a, b );\n }\n }\n\n return true;\n}\n\n/** @hidden */\nfunction objectsNotEqual( a, b ) {\n const keysA = Object.keys( a );\n\n if( keysA.length !== Object.keys( b ).length ) return true;\n\n for( let i = 0; i < keysA.length; i++ ) {\n const key = keysA[ i ];\n\n if( !b.hasOwnProperty( key ) || notEqual( a[ key ], b[ key ] ) ) {\n return true;\n }\n }\n\n return false;\n}\n\n/** @hidden */\nfunction arraysNotEqual( a, b ) {\n if( a.length !== b.length ) return true;\n\n for( let i = 0; i < a.length; i++ ) {\n if( notEqual( a[ i ], b[ i ] ) ) return true;\n }\n\n return false;\n}\n\n/**\n * Create an object without Object prototype members except hasOwnProperty.\n * @param obj - optional parameter to populate the hash map from.\n */\nconst HashProto = Object.create( null );\nHashProto.hasOwnProperty = ObjectProto.hasOwnProperty;\n\nexport function hashMap( obj? ){\n const hash = Object.create( HashProto );\n return obj ? assign( hash, obj ) : hash;\n}","/*****************************************************************\n * Mixins engine and @define metaprogramming class extensions\n *\n * Vlad Balin & Volicon, (c) 2016-2017\n */\nimport { log, assign, omit, hashMap, getPropertyDescriptor, getBaseClass, defaults, transform } from './tools'\nimport { __extends } from 'tslib'\n\nexport interface Subclass< T > extends MixableConstructor {\n new ( ...args ) : T\n prototype : T\n}\n\nexport interface MixableConstructor extends Function{\n __super__? : object;\n mixins? : MixinsState;\n onExtend? : ( BaseClass : Function ) => void;\n onDefine? : ( definition : object, BaseClass : Function ) => void;\n define? : ( definition? : object, statics? : object ) => MixableConstructor;\n extend? : ( definition? : T, statics? : object ) => Subclass;\n}\n\nexport interface MixableDefinition {\n mixins? : Mixin[]\n}\n\n/**\n * Base class, holding metaprogramming class extensions.\n * Supports mixins and Class.define metaprogramming method.\n */\nexport class Mixable {\n static onExtend : ( BaseClass : Function ) => void;\n static onDefine : ( definition : object, BaseClass : Function ) => object; \n static __super__ : object\n static mixins : MixinsState;\n\n /** \n * Must be called after inheritance and before 'define'.\n */\n static define( protoProps : MixableDefinition = {}, staticProps? : object ) : MixableConstructor {\n const BaseClass : MixableConstructor = getBaseClass( this );\n\n // Assign statics.\n staticProps && assign( this, staticProps );\n\n // Extract and apply mixins from the definition.\n const { mixins, ...defineMixin } = protoProps;\n mixins && this.mixins.merge( mixins );\n\n // Unshift definition to the the prototype.\n this.mixins.mergeObject( this.prototype, defineMixin, true );\n\n // Unshift definition from statics to the prototype.\n this.mixins.mergeObject( this.prototype, this.mixins.getStaticDefinitions( BaseClass ), true );\n\n // Call onDefine hook, if it's present.\n this.onDefine && this.onDefine( this.mixins.definitions, BaseClass );\n \n // Apply merge rules to inherited members. No mixins can be added after this point.\n this.mixins.mergeInheritedMembers( BaseClass );\n\n return this;\n }\n\n /** Backbone-compatible extend method to be used in ES5 and for backward compatibility */\n static extend< T extends object>(spec? : T, statics? : {} ) : Subclass< T > {\n let TheSubclass : Subclass< T >;\n\n // 1. Create the subclass (ES5 compatibility shim).\n // If constructor function is given...\n if( spec && spec.hasOwnProperty( 'constructor' ) ){\n // ...we need to manually call internal TypeScript __extend function. Hack! Hack!\n TheSubclass = spec.constructor as any;\n __extends( TheSubclass, this );\n }\n // Otherwise, create the subclall in usual way.\n else{\n TheSubclass = class Subclass extends this {} as any;\n }\n\n predefine( TheSubclass );\n spec && TheSubclass.define( spec, statics );\n\n return TheSubclass;\n }\n}\n\n/** @decorator `@predefine` for forward definitions. Can be used with [[Mixable]] classes only.\n * Forwards the call to the [[Mixable.predefine]];\n */\nexport function predefine( Constructor : MixableConstructor ) : void {\n const BaseClass : MixableConstructor = getBaseClass( Constructor );\n\n // Legacy systems support\n Constructor.__super__ = BaseClass.prototype;\n \n // Initialize mixins structures...\n Constructor.define || MixinsState.get( Mixable ).populate( Constructor );\n\n // Make sure Ctor.mixins are ready before the callback...\n MixinsState.get( Constructor );\n\n // Call extend hook.\n Constructor.onExtend && Constructor.onExtend( BaseClass );\n}\n\n/** @decorator `@define` for metaprogramming magic. Can be used with [[Mixable]] classes only.\n * Forwards the call to [[Mixable.define]].\n */\nexport function define( ClassOrDefinition : Function ) : void;\nexport function define( ClassOrDefinition : object ) : ClassDecorator;\nexport function define( ClassOrDefinition : object | MixableConstructor ){\n // @define class\n if( typeof ClassOrDefinition === 'function' ){\n predefine( ClassOrDefinition );\n ClassOrDefinition.define();\n }\n // @define({ prop : val, ... }) class\n else{\n return function( Ctor : MixableConstructor ){\n predefine( Ctor );\n Ctor.define( ClassOrDefinition );\n }\n }\n}\n\nexport function definitions( rules : MixinMergeRules ) : ClassDecorator {\n return ( Class : Function ) => {\n const mixins = MixinsState.get( Class );\n mixins.definitionRules = defaults( hashMap(), rules, mixins.definitionRules );\n }\n}\n\n// Create simple property list decorator\nexport function propertyListDecorator( listName: string ) : PropertyDecorator {\n return function propList(proto, name : string) {\n const list = proto.hasOwnProperty( listName ) ?\n proto[ listName ] : (proto[ listName ] = (proto[ listName ] || []).slice()); \n\n list.push(name);\n }\n}\n\nexport function definitionDecorator( definitionKey, value ){\n return ( proto : object, name : string ) => {\n MixinsState\n .get( proto.constructor )\n .mergeObject( proto, {\n [ definitionKey ] : {\n [ name ] : value\n }\n });\n }\n}\n\nexport class MixinsState {\n mergeRules : MixinMergeRules;\n definitionRules : MixinMergeRules;\n definitions : object = {};\n appliedMixins : Mixin[];\n\n // Return mixins state for the class. Initialize if it's not exist.\n static get( Class ) : MixinsState {\n const { mixins } = Class;\n \n return mixins && Class === mixins.Class ? mixins :\n Class.mixins = new MixinsState( Class );\n }\n\n constructor( public Class : MixableConstructor ){\n const { mixins } = getBaseClass( Class );\n\n this.mergeRules = ( mixins && mixins.mergeRules ) || hashMap();\n this.definitionRules = ( mixins && mixins.definitionRules ) || hashMap();\n this.appliedMixins = ( mixins && mixins.appliedMixins ) || [];\n }\n\n getStaticDefinitions( BaseClass : Function ){\n const definitions = hashMap(),\n { Class } = this;\n\n return transform( definitions, this.definitionRules, ( rule, name ) =>{\n if( BaseClass[ name ] !== Class[ name ]){\n return Class[ name ];\n }\n });\n }\n\n merge( mixins : Mixin[] ){\n const proto = this.Class.prototype,\n { mergeRules } = this;\n\n // Copy applied mixins array as it's going to be updated.\n const appliedMixins = this.appliedMixins = this.appliedMixins.slice();\n\n // Apply mixins in sequence...\n for( let mixin of mixins ) {\n // Mixins array should be flattened.\n if( Array.isArray( mixin ) ) {\n this.merge( mixin );\n }\n // Don't apply mixins twice.\n else if( appliedMixins.indexOf( mixin ) < 0 ){\n appliedMixins.push( mixin );\n\n // For constructors, merge _both_ static and prototype members.\n if( typeof mixin === 'function' ){\n // Merge static members\n this.mergeObject( this.Class, mixin );\n\n // merge definitionRules and mergeRules\n const sourceMixins = ( mixin as any ).mixins;\n if( sourceMixins ){\n this.mergeRules = defaults( hashMap(), this.mergeRules, sourceMixins.mergeRules );\n this.definitionRules = defaults( hashMap(), this.definitionRules, sourceMixins.definitionRules );\n this.appliedMixins = this.appliedMixins.concat( sourceMixins.appliedMixins );\n }\n\n // Prototypes are merged according with rules.\n this.mergeObject( proto, mixin.prototype );\n }\n // Handle plain object mixins.\n else {\n this.mergeObject( proto, mixin );\n }\n }\n }\n }\n\n populate( ...ctors : Function[] ){\n for( let Ctor of ctors ) {\n MixinsState.get( Ctor ).merge([ this.Class ]);\n }\n }\n\n mergeObject( dest : object, source : object, unshift? : boolean ) {\n forEachOwnProp( source, name => {\n const sourceProp = Object.getOwnPropertyDescriptor( source, name );\n let rule : MixinMergeRule;\n\n if( rule = this.definitionRules[ name ] ){\n assignProperty( this.definitions, name, sourceProp, rule, unshift );\n }\n\n if( !rule || rule === mixinRules.protoValue ){\n assignProperty( dest, name, sourceProp, this.mergeRules[ name ], unshift );\n }\n });\n }\n\n mergeInheritedMembers( BaseClass : Function ){\n const { mergeRules, Class } = this;\n\n if( mergeRules ){\n const proto = Class.prototype,\n baseProto = BaseClass.prototype;\n\n for( let name in mergeRules ) {\n const rule = mergeRules[ name ];\n\n if( proto.hasOwnProperty( name ) && name in baseProto ){\n proto[ name ] = resolveRule( proto[ name ], baseProto[ name ], rule );\n }\n }\n }\n }\n}\n\nconst dontMix = {\n function : hashMap({\n length : true,\n prototype : true,\n caller : true,\n arguments : true,\n name : true,\n __super__ : true\n }),\n \n object : hashMap({\n constructor : true\n }) \n}\n\nfunction forEachOwnProp( object : object, fun : ( name : string ) => void ){\n const ignore = dontMix[ typeof object ];\n\n for( let name of Object.keys( object ) ) {\n ignore[ name ] || fun( name );\n }\n}\n\nexport interface MixinMergeRules {\n [ name : string ] : MixinMergeRule\n}\n\nexport type MixinMergeRule = ( a : any, b : any ) => any\nexport type Mixin = { [ key : string ] : any } | Function\n\n// @mixins( A, B, ... ) decorator.\nexport interface MixinRulesDecorator {\n ( rules : MixinMergeRules ) : ClassDecorator\n value( a : object, b : object) : object;\n protoValue( a : object, b : object) : object;\n merge( a : object, b : object ) : object;\n pipe( a: Function, b : Function ) : Function;\n defaults( a: Function, b : Function ) : Function;\n classFirst( a: Function, b : Function ) : Function;\n classLast( a: Function, b : Function ) : Function;\n every( a: Function, b : Function ) : Function;\n some( a: Function, b : Function ) : Function;\n}\n\nexport const mixins = ( ...list : Mixin[] ) => (\n ( Class : Function ) => MixinsState.get( Class ).merge( list )\n);\n\n// @mixinRules({ name : rule, ... }) decorator.\nexport const mixinRules = ( ( rules : MixinMergeRules ) => (\n ( Class : Function ) => {\n const mixins = MixinsState.get( Class );\n mixins.mergeRules = defaults( rules, mixins.mergeRules );\n }\n) ) as MixinRulesDecorator;\n\n// Pre-defined mixin merge rules\n\nmixinRules.value = ( a, b ) => a;\n\nmixinRules.protoValue = ( a, b ) => a;\n\n// Recursively merge members\nmixinRules.merge = ( a, b ) => defaults( {}, a, b );\n\n // Execute methods in pipe, with the class method executed last.\nmixinRules.pipe = ( a, b ) => (\n function( x : any ) : any {\n return a.call( this, b.call( this, x ) );\n }\n);\n\n // Assume methods return an object, and merge results with defaults (class method executed first)\nmixinRules.defaults = ( a : Function, b : Function ) => (\n function() : object {\n return defaults( a.apply( this, arguments ), b.apply( this, arguments ) );\n }\n);\n\n// Execute methods in sequence staring with the class method.\nmixinRules.classFirst = ( a : Function, b : Function ) => (\n function() : void {\n a.apply( this, arguments );\n b.apply( this, arguments );\n }\n);\n\n // Execute methods in sequence ending with the class method.\nmixinRules.classLast = ( a : Function, b : Function ) => (\n function() : void {\n b.apply( this, arguments );\n a.apply( this, arguments );\n }\n)\n\n // Execute methods in sequence returning the first falsy result.\nmixinRules.every = ( a : Function, b : Function ) =>(\n function() : any {\n return a.apply( this, arguments ) && b.apply( this, arguments );\n }\n);\n // Execute methods in sequence returning the first truthy result.\nmixinRules.some = ( a : Function, b : Function ) =>(\n function() : any {\n return a.apply( this, arguments ) || b.apply( this, arguments );\n }\n);\n\n/**\n * Helpers\n */\n\nfunction assignProperty( dest : object, name : string, sourceProp : PropertyDescriptor, rule : MixinMergeRule, unshift? : boolean ){\n// Destination prop is defined, thus the merge rules must be applied.\n if( dest.hasOwnProperty( name ) ){\n const destProp = Object.getOwnPropertyDescriptor( dest, name );\n\n if( destProp.configurable && 'value' in destProp ){\n dest[ name ] = unshift ?\n resolveRule( sourceProp.value, destProp.value, rule ) :\n resolveRule( destProp.value, sourceProp.value, rule ) ;\n }\n }\n // If destination is empty, just copy the prop over.\n else{\n Object.defineProperty( dest, name, sourceProp );\n }\n}\n\nfunction resolveRule( dest, source, rule : MixinMergeRule ){\n // When destination is empty, take the source.\n if( dest === void 0 ) return source;\n\n // In these cases we take non-empty destination:\n if( !rule || source === void 0 ) return dest;\n\n // In other cases we must merge values.\n return rule( dest, source );\n}","import { once as _once } from './tools'\n\n/*******************\n * Prebuilt events map, used for optimized bulk event subscriptions.\n *\n * const events = new EventMap({\n * 'change' : true, // Resend this event from self as it is.\n * 'change:attr' : 'localTargetFunction',\n * 'executedInTargetContext' : function(){ ... }\n * 'executedInNativeContext' : '^props.handler'\n * })\n */\n/** @hidden */\nexport interface EventsDefinition {\n [ events : string ] : Function | string | boolean\n}\n\n/** @hidden */\nexport class EventMap {\n handlers : EventDescriptor[] = [];\n\n constructor( map? : EventsDefinition | EventMap ){\n if( map ){\n if( map instanceof EventMap ){\n this.handlers = map.handlers.slice();\n }\n else{\n map && this.addEventsMap( map );\n }\n }\n }\n\n merge( map : EventMap ){\n this.handlers = this.handlers.concat( map.handlers );\n }\n\n addEventsMap( map : EventsDefinition ){\n for( let names in map ){\n this.addEvent( names, map[ names ] )\n }\n }\n\n bubbleEvents( names : string ){\n for( let name of names.split( eventSplitter ) ){\n this.addEvent( name, getBubblingHandler( name ) );\n }\n }\n\n addEvent( names : string, callback : Function | string | boolean ){\n const { handlers } = this;\n\n for( let name of names.split( eventSplitter ) ){\n handlers.push( new EventDescriptor( name, callback ) );\n }\n }\n\n subscribe( target : {}, source : EventSource ){\n for( let event of this.handlers ){\n on( source, event.name, event.callback, target );\n }\n }\n\n unsubscribe( target : {}, source : EventSource ){\n for( let event of this.handlers ){\n off( source, event.name, event.callback, target );\n }\n }\n}\n\n/** @hidden */\nexport class EventDescriptor {\n callback : Function\n\n constructor(\n public name : string,\n callback : Function | string | boolean\n ){\n if( callback === true ){\n this.callback = getBubblingHandler( name );\n }\n else if( typeof callback === 'string' ){\n this.callback =\n function localCallback(){\n const handler = this[ callback ];\n handler && handler.apply( this, arguments );\n };\n }\n else{\n this.callback = callback;\n }\n }\n}\n\n/** @hidden */\nconst _bubblingHandlers = {};\n\n/** @hidden */\nfunction getBubblingHandler( event : string ){\n return _bubblingHandlers[ event ] || (\n _bubblingHandlers[ event ] = function( a?, b?, c?, d?, e? ){\n if( d !== void 0 || e !== void 0 ) trigger5( this, event, a, b, c, d, e );\n if( c !== void 0 ) trigger3( this, event, a, b, c );\n else trigger2( this, event, a, b );\n }\n );\n}\n\n/** @hidden */\nexport interface HandlersByEvent {\n [ name : string ] : EventHandler\n}\n\n/** @hidden */\nexport class EventHandler {\n constructor( public callback : Callback, public context : any, public next = null ){}\n}\n\n/** @hidden */\nfunction listOff( _events : HandlersByEvent, name : string, callback : Callback, context : any ){\n const head = _events[ name ];\n\n let filteredHead, prev;\n\n for( let ev = head; ev; ev = ev.next ){\n // Element must be kept\n if( ( callback && callback !== ev.callback && callback !== ev.callback._callback ) ||\n ( context && context !== ev.context ) ){\n \n prev = ev;\n filteredHead || ( filteredHead = ev );\n }\n // Element must be skipped\n else{\n if( prev ) prev.next = ev.next;\n }\n }\n\n if( head !== filteredHead ) _events[ name ] = filteredHead;\n}\n\n/** @hidden */\nfunction listSend2( head : EventHandler, a, b ){\n for( let ev = head; ev; ev = ev.next ) ev.callback.call( ev.context, a, b );\n}\n\n/** @hidden */\nfunction listSend3( head : EventHandler, a, b, c ){\n for( let ev = head; ev; ev = ev.next ) ev.callback.call( ev.context, a, b, c );\n}\n\n/** @hidden */\nfunction listSend4( head : EventHandler, a, b, c, d ){\n for( let ev = head; ev; ev = ev.next ) ev.callback.call( ev.context, a, b, c, d );\n}\n\n/** @hidden */\nfunction listSend5( head : EventHandler, a, b, c, d, e ){\n for( let ev = head; ev; ev = ev.next ) ev.callback.call( ev.context, a, b, c, d, e );\n}\n\n/** @hidden */\nfunction listSend6( head : EventHandler, a, b, c, d, e, f ){\n for( let ev = head; ev; ev = ev.next ) ev.callback.call( ev.context, a, b, c, d, e, f );\n}\n\n/** @hidden */\nexport interface Callback extends Function {\n _callback? : Function\n}\n\n/** @hidden */\nexport function on( source : EventSource, name : string, callback : Callback, context? : any ) : void {\n if( callback ){\n const _events = source._events || ( source._events = Object.create( null ) );\n _events[ name ] = new EventHandler( callback, context, _events[ name ] );\n }\n}\n\n/** @hidden */\nexport function once( source : EventSource, name : string, callback : Callback, context? : any ) : void {\n if( callback ){\n const once : Callback = _once( function(){\n off( source, name, once );\n callback.apply(this, arguments);\n });\n\n once._callback = callback;\n on( source, name, once, context );\n }\n}\n\n/** @hidden */\nexport function off( source : EventSource, name? : string, callback? : Callback, context? : any ) : void {\n const { _events } = source;\n if( _events ){\n if( callback || context ) {\n if( name ){\n listOff( _events, name, callback, context );\n }\n else{\n for( let name in _events ){\n listOff( _events, name, callback, context );\n }\n }\n }\n else if( name ){\n _events[ name ] = void 0;\n }\n else{\n source._events = void 0;\n }\n }\n}\n\n/** @hidden */\nexport interface EventSource {\n _events : HandlersByEvent\n}\n\n/** @hidden */\nconst eventSplitter = /\\s+/;\n\n/** @hidden */\nexport function strings( api : ApiEntry, source : EventSource, events : string, callback : Callback, context ){\n if( eventSplitter.test( events ) ){\n const names = events.split( eventSplitter );\n for( let name of names ) api( source, name, callback, context );\n }\n else api( source, events, callback, context );\n}\n\n/** @hidden */\nexport type ApiEntry = ( source : EventSource, event : string, callback : Callback, context? : any ) => void\n\n/*********************************\n * Event-triggering API\n */\n\n/** @hidden */\nexport function trigger2( self : EventSource, name : string, a, b ) : void {\n const { _events } = self;\n if( _events ){\n const queue = _events[ name ],\n { all } = _events;\n\n listSend2( queue, a, b );\n listSend3( all, name, a, b );\n }\n};\n\n/** @hidden */\nexport function trigger3( self : EventSource, name : string, a, b, c ) : void{\n const { _events } = self;\n if( _events ){\n const queue = _events[ name ],\n { all } = _events;\n\n listSend3( queue, a, b, c );\n listSend4( all, name, a, b, c );\n }\n};\n\n/** @hidden */\nexport function trigger5( self : EventSource, name : string, a, b, c, d, e ) : void{\n const { _events } = self;\n if( _events ){\n const queue = _events[ name ],\n { all } = _events;\n\n listSend5( queue, a, b, c, d, e );\n listSend6( all, name, a, b, c, d, e );\n }\n};","import { define, mixins, Mixable, Mixin, MixableConstructor, MixinsState, mixinRules, definitions, MixinMergeRules } from './mixins'\nimport { omit, transform } from './tools'\nimport { EventMap, EventsDefinition, EventSource, HandlersByEvent } from './eventsource'\nimport * as _eventsApi from './eventsource'\n\nconst { EventHandler, strings, on, off, once, trigger5, trigger2, trigger3 } = _eventsApi;\n\n/** @hidden */\nconst eventSplitter = /\\s+/;\n\n/** @hidden */\nlet _idCount = 0;\n\n/** @hidden */\nfunction uniqueId() : string {\n return 'l' + _idCount++;\n}\n\nexport { EventMap, EventsDefinition }\n\nexport interface MessengerDefinition {\n _localEvents? : EventMap\n localEvents? : EventsDefinition\n properties? : PropertyMap\n [ name : string ] : any\n}\n\nexport interface PropertyMap {\n [ name : string ] : Property\n}\n\nexport type Property = PropertyDescriptor | ( () => any )\n\n/** @hidden */\nexport interface MessengersByCid {\n [ cid : string ] : Messenger\n}\n\n/** @hidden */\nexport type CallbacksByEvents = { [ events : string ] : Function }\n\n/*************************\n * Messenger is mixable class with capabilities of sending and receiving synchronous events.\n * This class itself can serve as both mixin and base class.\n */\n\n@define\n@definitions({\n properties : mixinRules.merge,\n localEvents : mixinRules.merge\n})\nexport abstract class Messenger implements Mixable, EventSource {\n // Define extendable mixin static properties.\n static __super__ : object;\n static mixins : MixinsState;\n static onExtend : ( BaseClass : Function ) => void;\n static define : ( definition? : MessengerDefinition, statics? : object ) => MixableConstructor;\n static extend : ( definition? : MessengerDefinition, statics? : object ) => MixableConstructor;\n static onDefine({ localEvents, _localEvents, properties } : MessengerDefinition, BaseClass? : typeof Mixable ){\n // Handle localEvents definition\n if( localEvents || _localEvents ){\n const eventsMap = new EventMap( this.prototype._localEvents );\n\n localEvents && eventsMap.addEventsMap( localEvents );\n _localEvents && eventsMap.merge( _localEvents );\n \n this.prototype._localEvents = eventsMap;\n }\n\n // Handle properties definitions...\n if( properties ){\n Object.defineProperties( this.prototype, transform( {}, properties, toPropertyDescriptor ) );\n }\n }\n\n /** @hidden */ \n _events : HandlersByEvent = void 0;\n\n /** @hidden */ \n _listeningTo : MessengersByCid = void 0\n\n /** Unique client-only id. */\n cid : string\n\n /** @hidden Prototype-only property to manage automatic local events subscription */ \n _localEvents : EventMap\n\n /** @hidden */ \n constructor(){\n this.cid = uniqueId();\n this.initialize.apply( this, arguments );\n\n // TODO: local events subscribe?\n }\n\n /** Method is called at the end of the constructor */\n initialize() : void {}\n \n on( events : string | CallbacksByEvents, callback, context? ) : this {\n if( typeof events === 'string' ) strings( on, this, events, callback, context );\n else for( let name in events ) strings( on, this, name, events[ name ], context || callback );\n\n return this;\n }\n\n once( events : string | CallbacksByEvents, callback, context? ) : this {\n if( typeof events === 'string' ) strings( once, this, events, callback, context );\n else for( let name in events ) strings( once, this, name, events[ name ], context || callback );\n\n return this;\n }\n\n off( events? : string | CallbacksByEvents, callback?, context? ) : this {\n if( !events ) off( this, void 0, callback, context );\n else if( typeof events === 'string' ) strings( off, this, events, callback, context );\n else for( let name in events ) strings( off, this, name, events[ name ], context || callback );\n\n return this;\n }\n\n // Trigger one or many events, firing all bound callbacks. Callbacks are\n // passed the same arguments as `trigger` is, apart from the event name\n // (unless you're listening on `\"all\"`, which will cause your callback to\n // receive the true name of the event as the first argument).\n trigger(name : string, a?, b?, c?, d?, e? ) : this {\n if( d !== void 0 || e !== void 0 ) trigger5( this, name, a, b, c, d, e );\n else if( c !== void 0 ) trigger3( this, name, a, b, c );\n else trigger2( this, name, a, b );\n return this;\n }\n\n listenTo( source : Messenger, a : string | CallbacksByEvents, b? : Function ) : this {\n if( source ){\n addReference( this, source );\n source.on( a, !b && typeof a === 'object' ? this : b, this );\n }\n\n return this;\n }\n\n listenToOnce( source : Messenger, a : string | CallbacksByEvents, b? : Function ) : this {\n if( source ){\n addReference( this, source );\n source.once( a, !b && typeof a === 'object' ? this : b, this );\n }\n\n return this;\n }\n\n stopListening( a_source? : Messenger, a? : string | CallbacksByEvents, b? : Function ) : this {\n const { _listeningTo } = this;\n if( _listeningTo ){\n const removeAll = !( a || b ),\n second = !b && typeof a === 'object' ? this : b;\n\n if( a_source ){\n const source = _listeningTo[ a_source.cid ];\n if( source ){\n if( removeAll ) delete _listeningTo[ a_source.cid ];\n source.off( a, second, this );\n }\n }\n else if( a_source == null ){\n for( let cid in _listeningTo ) _listeningTo[ cid ].off( a, second, this );\n\n if( removeAll ) ( this._listeningTo = void 0 );\n }\n }\n\n return this;\n }\n\n /**\n * Destructor. Stops messenger from listening to all objects,\n * and stop others from listening to the messenger. \n */\n _disposed : boolean\n\n dispose() : void {\n if( this._disposed ) return;\n\n this.stopListening();\n this.off();\n\n this._disposed = true;\n }\n}\n\n/**\n * Backbone 1.2 API conformant Events mixin.\n */\nexport const Events : Messenger = omit( Messenger.prototype, 'constructor', 'initialize' );\n\n/**\n * Messenger Private Helpers \n */\n\nfunction toPropertyDescriptor( x : Property ) : PropertyDescriptor {\n if( x ){\n return typeof x === 'function' ? { get : < () => any >x } : x;\n }\n}\n\n/** @hidden */\nfunction addReference( listener : Messenger, source : Messenger ){\n const listeningTo = listener._listeningTo || (listener._listeningTo = Object.create( null ) ),\n cid = source.cid || ( source.cid = uniqueId() );\n\n listeningTo[ cid ] = source;\n}","// (c) 2016 Vlad Balin and Volicon\n// MixtureJS may be freely distributed under the MIT license. \n\nimport * as tools from './tools'\nexport { tools }\nexport * from './mixins'\nexport * from './events'\nimport * as eventsApi from './eventsource'\nexport { eventsApi }\n\nimport { Mixable, MixableConstructor } from './mixins'\n\ndeclare global {\n interface ObjectConstructor {\n /** Polyfill for Object.assign */\n assign< T >( dest : T, ...sources : Object[] ) : T\n\n /** Global logging interface, for console debugging. */\n log : tools.Log\n\n /** ES5 Object.extend */\n extend( protoProps : {}, staticProps : {} ) : MixableConstructor\n }\n}\n\nObject.extend = ( protoProps, staticProps ) => Mixable.extend( protoProps, staticProps );\nObject.assign || ( Object.assign = tools.assign );\nObject.log = tools.log;","export interface ChildrenErrors {\n [ key : string ] : ValidationError | any\n} \n\nexport interface Validatable {\n _validateNested( errors : ChildrenErrors ) : number;\n validate( self : any ) : any\n get( key : string ) : any\n}\n\n// Validation error object.\nexport class ValidationError {\n // Invalid nested object keys \n nested : ChildrenErrors \n length : number\n\n // Local error\n error : any\n\n constructor( obj : Validatable ){\n this.length = obj._validateNested( this.nested = {} );\n\n if( this.error = obj.validate( obj ) ){\n this.length++;\n }\n }\n\n each( iteratee : ( value : any, key : string ) => void ) : void {\n const { error, nested } = this;\n\n if( error ) iteratee( error, null );\n\n for( const key in nested ){\n iteratee( nested[ key ], key );\n }\n }\n\n eachError( iteratee : ( error : any, key : string, object : Validatable ) => void, object : Validatable ) : void {\n this.each( ( value : any, key : string ) => {\n if( value instanceof ValidationError ){\n (value).eachError( iteratee, object.get( key ) );\n }\n else{\n iteratee( value, key, object );\n }\n });\n }\n}","/**\n * Some sketches for reference resolution.\n *\n * \n * a : Model.from( '~collection' )\n * \n * We need two functions. One for get, and one for compile. \n */\nexport interface Traversable {\n getStore() : Traversable\n getOwner() : Traversable\n get( key : string ) : any \n}\n\nconst referenceMask = /\\^|(store\\.[^.]+)|([^.]+)/g;\n\n// Compile reference to function\nexport type ResolveReference = ( root : Traversable ) => any; \n\nexport class CompiledReference {\n resolve : ResolveReference\n tail : string\n local : boolean\n\n constructor( reference : string, splitTail : boolean = false ){\n const path = reference\n .match( referenceMask )\n .map( key => {\n if( key === '^' || key === 'owner' ) return 'getOwner()';\n\n if( key[ 0 ] === '~' ) return `getStore().get(\"${ key.substr( 1 ) }\")`;\n\n if( key.indexOf( 'store.' ) === 0 ) return `getStore().get(\"${ key.substr( 6 ) }\")`;\n \n return key;\n } );\n \n this.tail = splitTail && path.pop();\n this.local = !path.length;\n \n this.resolve = new Function( 'self', `\n var v = self.${ path.shift() };\n \n ${ path.map( x => `\n v = v && v.${ x };\n `).join('')}\n\n return v;\n ` );\n }\n}\n\nexport function resolveReference( root : Traversable, reference : string, action : ( object, key : string ) => any ) : any {\n const path = reference.match( referenceMask ),\n skip = path.length - 1;\n \n let self = root;\n\n for( var i = 0; i < skip; i++ ){\n const key = path[ i ];\n switch( key ){\n case '~' : self = self.getStore(); break;\n case '^' : self = self.getOwner(); break;\n default : self = self.get( key );\n }\n\n // Do nothing if object on the path doesn't exist.\n if( !self ) return;\n }\n\n return action( self, path[ skip ] );\n}","export interface IONode {\n _endpoint : IOEndpoint\n _ioPromise : IOPromise< this >\n}\n\nexport interface IOPromise extends Promise {\n abort? : () => void\n}\n\nexport interface IOEndpoint {\n list( options : IOOptions, collection? ) : IOPromise\n create( json : any, options : IOOptions, record? ) : IOPromise\n update( id : string | number, json :any, options : IOOptions, record? ) : IOPromise\n read( id : string | number, options : IOOptions, record? ) : IOPromise\n destroy( id : string | number, options : IOOptions, record? ) : IOPromise\n subscribe( events : IOEvents, collection? ) : IOPromise\n unsubscribe( events : IOEvents, collection? ) : void\n}\n\nexport interface IOOptions {\n ioUpdate? : boolean\n}\n\nexport interface IOEvents {\n updated? : ( json : any ) => void\n removed? : ( json : any ) => void\n}\n\nexport function getOwnerEndpoint( self ) : IOEndpoint {\n // Check if we are the member of the collection...\n const { collection } = self;\n if( collection ){\n return getOwnerEndpoint( collection );\n }\n\n // Now, if we're the member of the model...\n if( self._owner ){\n const { _endpoints } = self._owner;\n return _endpoints && _endpoints[ self._ownerKey ];\n }\n}\n\n/**\n * Create abortable promise.\n * Adds `promise.abort()` function which rejects the promise by default\n * initialize() function takes third optional argument `abort : ( resolve, reject ) => void`,\n * which can be used to add custom abort handling.\n */\ndeclare var Promise: PromiseConstructorLike;\n\nexport function createIOPromise( initialize : InitIOPromise ) : IOPromise{\n let resolve, reject, onAbort;\n\n function abort( fn ){\n onAbort = fn;\n }\n\n const promise : IOPromise = new Promise( ( a_resolve, a_reject ) =>{\n reject = a_reject;\n resolve = a_resolve;\n initialize( resolve, reject, abort );\n }) as IOPromise;\n\n promise.abort = () => {\n onAbort ? onAbort( resolve, reject ) : reject( new Error( \"I/O Aborted\" ) );\n }\n\n return promise;\n}\n\nexport type InitIOPromise = ( resolve : ( x? : any ) => void, reject : ( x? : any ) => void, abort? : ( fn : Function ) => void ) => void;\n\nexport function startIO( self : IONode, promise : IOPromise, options : IOOptions, thenDo : ( json : any ) => any ) : IOPromise {\n // Stop pending I/O first...\n abortIO( self );\n\n // Mark future update transaction as IO transaction.\n options.ioUpdate = true;\n\n self._ioPromise = promise\n .then( resp => {\n self._ioPromise = null;\n \n const result = thenDo ? thenDo( resp ) : resp;\n \n triggerAndBubble( self, 'sync', self, resp, options );\n \n return result;\n } ) \n .catch( err => {\n self._ioPromise = null;\n\n console.error( err );\n \n triggerAndBubble( self, 'error', self, err, options );\n \n throw err;\n } ) as IOPromise;\n\n self._ioPromise.abort = promise.abort;\n\n return self._ioPromise;\n}\n\nexport function abortIO( self : IONode ){\n if( self._ioPromise && self._ioPromise.abort ){\n self._ioPromise.abort();\n self._ioPromise = null;\n }\n}\n\nexport function triggerAndBubble( eventSource, ...args ){\n eventSource.trigger.apply( eventSource, args );\n const { collection } = eventSource;\n collection && collection.trigger.apply( collection, args ); \n}","import { Messenger, CallbacksByEvents, MessengersByCid, MixinsState, MixinMergeRules, MessengerDefinition, tools, mixins, mixinRules, definitions, eventsApi, define, Subclass } from './object-plus'\nimport { ValidationError, Validatable, ChildrenErrors } from './validation'\nimport { Traversable, resolveReference } from './traversable'\nimport { IOEndpoint, IOPromise, IONode, abortIO } from './io-tools'\n\nconst { assign } = tools,\n { trigger2, trigger3, on, off } = eventsApi;\n/***\n * Abstract class implementing ownership tree, tho-phase transactions, and validation. \n * 1. createTransaction() - apply changes to an object tree, and if there are some events to send, transaction object is created.\n * 2. transaction.commit() - send and process all change events, and close transaction.\n */\n\n/** @private */\nexport interface TransactionalDefinition extends MessengerDefinition {\n endpoint? : IOEndpoint\n}\n\nexport enum ItemsBehavior {\n share = 0b0001,\n listen = 0b0010,\n persistent = 0b0100\n}\n\n// Transactional object interface\n@define\n@definitions({\n endpoint : mixinRules.value\n})\n@mixins( Messenger )\nexport abstract class Transactional implements Messenger, IONode, Validatable, Traversable {\n // Mixins are hard in TypeScript. We need to copy type signatures over...\n // Here goes 'Mixable' mixin.\n static endpoint : IOEndpoint;\n static __super__ : object;\n static mixins : MixinsState;\n static define : ( definition? : TransactionalDefinition, statics? : object ) => typeof Transactional;\n static extend : ( definition? : T, statics? : object ) => any;\n\n static onDefine( definitions : TransactionalDefinition, BaseClass : typeof Transactional ){\n if( definitions.endpoint ) this.prototype._endpoint = definitions.endpoint;\n Messenger.onDefine.call( this, definitions, BaseClass );\n };\n\n static onExtend( BaseClass : typeof Transactional ) : void {\n // Make sure we don't inherit class factories.\n if( BaseClass.create === this.create ) {\n this.create = Transactional.create;\n }\n }\n\n // Define extendable mixin static properties.\n static create( a : any, b? : any ) : Transactional {\n return new (this as any)( a, b );\n }\n\n /** Generic class factory. May be overridden for abstract classes. Not inherited. */\n on : ( events : string | CallbacksByEvents, callback, context? ) => this\n once : ( events : string | CallbacksByEvents, callback, context? ) => this\n off : ( events? : string | CallbacksByEvents, callback?, context? ) => this\n trigger : (name : string, a?, b?, c?, d?, e? ) => this\n\n stopListening : ( source? : Messenger, a? : string | CallbacksByEvents, b? : Function ) => this\n listenTo : ( source : Messenger, a : string | CallbacksByEvents, b? : Function ) => this\n listenToOnce : ( source : Messenger, a : string | CallbacksByEvents, b? : Function ) => this\n \n _disposed : boolean;\n\n // State accessor. \n readonly __inner_state__ : any;\n\n // Shared modifier (used by collections of shared models)\n _shared? : number; \n \n dispose() : void {\n if( this._disposed ) return;\n \n abortIO( this );\n this._owner = void 0;\n this._ownerKey = void 0;\n this.off();\n this.stopListening();\n this._disposed = true;\n }\n\n // Must be called at the end of the constructor in the subclass.\n initialize() : void {}\n\n /** @private */\n _events : eventsApi.HandlersByEvent = void 0;\n\n /** @private */\n _listeningTo : MessengersByCid\n\n /** @private */\n _localEvents : eventsApi.EventMap\n\n cid : string\n cidPrefix : string\n\n static shared : any;\n\n // Unique version token replaced on change\n /** @private */\n _changeToken : {} = {}\n\n // true while inside of the transaction\n /** @private */\n _transaction : boolean = false;\n\n // Holds current transaction's options, when in the middle of transaction and there're changes but is an unsent change event\n /** @private */\n _isDirty : TransactionOptions = null;\n\n // Backreference set by owner (Record, Collection, or other object)\n /** @private */\n _owner : Owner = void 0;\n\n // Key supplied by owner. Used by record to identify attribute key.\n // Only collections doesn't set the key, which is used to distinguish collections.\n /** @private */ \n _ownerKey : string = void 0;\n\n // Name of the change event\n /** @private */\n _changeEventName : string\n\n /**\n * Subsribe for the changes.\n */\n onChanges( handler : Function, target? : Messenger ){\n on( this, this._changeEventName, handler, target );\n }\n\n /**\n * Unsubscribe from changes.\n */\n offChanges( handler? : Function, target? : Messenger ){\n off( this, this._changeEventName, handler, target );\n }\n\n /**\n * Listen to changes event. \n */\n listenToChanges( target : Transactional, handler ){\n this.listenTo( target, target._changeEventName, handler );\n }\n\n constructor( cid : string | number ){\n this.cid = this.cidPrefix + cid;\n }\n\n // Deeply clone ownership subtree\n abstract clone( options? : CloneOptions ) : this\n \n // Execute given function in the scope of ad-hoc transaction.\n transaction( fun : ( self : this ) => void, options : TransactionOptions = {} ) : void{\n const isRoot = transactionApi.begin( this );\n const update = fun.call( this, this );\n update && this.set( update );\n isRoot && transactionApi.commit( this );\n }\n\n // Loop through the members in the scope of transaction.\n // Transactional version of each()\n updateEach( iteratee : ( val : any, key : string | number ) => void, options? : TransactionOptions ){\n const isRoot = transactionApi.begin( this );\n this.each( iteratee );\n isRoot && transactionApi.commit( this );\n }\n\n // Apply bulk in-place object update in scope of ad-hoc transaction \n set( values : any, options? : TransactionOptions ) : this {\n if( values ){ \n const transaction = this._createTransaction( values, options );\n transaction && transaction.commit();\n } \n\n return this;\n }\n\n // Assign transactional object \"by value\", copying aggregated items.\n assignFrom( source : Transactional | Object ) : this {\n // Need to delay change events until change token willl by synced.\n this.transaction( () =>{\n this.set( ( source ).__inner_state__ || source, { merge : true } );\n\n // Synchronize change tokens\n const { _changeToken } = source as any;\n \n if( _changeToken ){\n this._changeToken = _changeToken;\n } \n });\n\n return this;\n }\n\n // Apply bulk object update without any notifications, and return open transaction.\n // Used internally to implement two-phase commit.\n // Returns null if there are no any changes.\n /** @private */ \n abstract _createTransaction( values : any, options? : TransactionOptions ) : Transaction | void\n \n // Parse function applied when 'parse' option is set for transaction.\n parse( data : any, options? : TransactionOptions ) : any { return data }\n\n // Convert object to the serializable JSON structure\n abstract toJSON( options? : object ) : {}\n\n /*******************\n * Traversals and member access\n */\n \n // Get object member by its key.\n abstract get( key : string ) : any\n\n // Get object member by symbolic reference.\n deepGet( reference : string ) : any {\n return resolveReference( this, reference, ( object, key ) => object.get ? object.get( key ) : object[ key ] );\n }\n\n //_isCollection : boolean\n\n // Return owner skipping collections.\n getOwner() : Owner {\n return this._owner;\n }\n\n // Store used when owner chain store lookup failed. Static value in the prototype. \n /** @private */\n _defaultStore : Transactional\n\n // Locate the closest store. Store object stops traversal by overriding this method. \n getStore() : Transactional {\n const { _owner } = this;\n return _owner ? _owner.getStore() : this._defaultStore;\n }\n\n\n /***************************************************\n * Iteration API\n */\n\n // Loop through the members. Must be efficiently implemented in container class.\n abstract each( iteratee : ( val : any, key : string | number ) => void, context? : any )\n\n // Map members to an array\n map( iteratee : ( val : any, key : string | number ) => T, context? : any ) : T[]{\n const arr : T[] = [],\n fun = context !== void 0 ? ( v, k ) => iteratee.call( context, v, k ) : iteratee;\n \n this.each( ( val, key ) => {\n const result = fun( val, key );\n if( result !== void 0 ) arr.push( result );\n } );\n\n return arr;\n }\n\n _endpoint : IOEndpoint\n _ioPromise : IOPromise\n\n hasPendingIO() : IOPromise { return this._ioPromise; }\n\n fetch( options? : object ) : IOPromise { throw new Error( \"Not implemented\" ); }\n\n getEndpoint() : IOEndpoint {\n return getOwnerEndpoint( this ) || this._endpoint;\n }\n\n // Map members to an object\n mapObject( iteratee : ( val : any, key : string | number ) => T, context? : any ) : { [ key : string ] : T }{\n const obj : { [ key : string ] : T } = {},\n fun = context !== void 0 ? ( v, k ) => iteratee.call( context, v, k ) : iteratee;\n \n this.each( ( val, key ) => {\n const result = iteratee( val, key );\n if( result !== void 0 ) obj[ key ] = result;\n } );\n\n return obj;\n }\n \n /*********************************\n * Validation API\n */\n\n // Lazily evaluated validation error\n /** @private */\n _validationError : ValidationError = void 0\n\n // Validate ownership tree and return valudation error \n get validationError() : ValidationError {\n const error = this._validationError || ( this._validationError = new ValidationError( this ) );\n return error.length ? error : null; \n }\n\n // Validate nested members. Returns errors count.\n /** @private */\n abstract _validateNested( errors : ChildrenErrors ) : number\n\n // Object-level validator. Returns validation error.\n validate( obj? : Transactional ) : any {}\n\n // Return validation error (or undefined) for nested object with the given key. \n getValidationError( key : string ) : any {\n var error = this.validationError;\n return ( key ? error && error.nested[ key ] : error ) || null;\n }\n\n // Get validation error for the given symbolic reference.\n deepValidationError( reference : string ) : any {\n return resolveReference( this, reference, ( object, key ) => object.getValidationError( key ) );\n }\n\n // Iterate through all validation errors across the ownership tree.\n eachValidationError( iteratee : ( error : any, key : string, object : Transactional ) => void ) : void {\n const { validationError } = this;\n validationError && validationError.eachError( iteratee, this );\n }\n\n // Check whenever member with a given key is valid. \n isValid( key : string ) : boolean {\n return !this.getValidationError( key );\n }\n\n valueOf() : Object { return this.cid; }\n toString(){ return this.cid; }\n\n // Get class name for an object instance. Works fine with ES6 classes definitions (not in IE).\n getClassName() : string {\n const { name } = this.constructor;\n if( name !== 'Subclass' ) return name;\n }\n\n // Logging interface for run time errors and warnings.\n abstract _log( level : string, text : string, value : any ) : void;\n}\n\nexport interface CloneOptions {\n // 'Pin store' shall assign this._defaultStore = this.getStore();\n pinStore? : boolean\n}\n\n// Owner must accept children update events. It's an only way children communicates with an owner.\n/** @private */\nexport interface Owner extends Traversable, Messenger {\n _onChildrenChange( child : Transactional, options : TransactionOptions ) : void;\n getOwner() : Owner\n getStore() : Transactional\n}\n\n// Transaction object used for two-phase commit protocol.\n// Must be implemented by subclasses.\n// Transaction must be created if there are actual changes and when markIsDirty returns true.\n/** @private */ \nexport interface Transaction {\n // Object transaction is being made on.\n object : Transactional\n\n // Send out change events, process update triggers, and close transaction.\n // Nested transactions must be marked with isNested flag (it suppress owner notification).\n commit( initiator? : Transactional )\n}\n\n// Options for distributed transaction \nexport interface TransactionOptions {\n // Invoke parsing \n parse? : boolean\n\n // Suppress change notifications and update triggers\n silent? : boolean\n\n // Update existing transactional members in place, or skip the update (ignored by models)\n merge? : boolean // =true\n\n // Should collections remove elements in set (ignored by models) \n remove? : boolean // =true\n\n // Always replace enclosed objects with new instances\n reset? : boolean // = false\n\n // Do not dispose aggregated members\n unset? : boolean\n\n validate? : boolean\n\n // `true` if the transaction is initiated as a result of IO operation\n ioUpdate? : boolean\n\n // The hint for IOEndpoint\n // If `true`, `record.save()` will behave as \"upsert\" operation for the records having id.\n upsert? : boolean\n}\n\n/**\n * Low-level transactions API. Must be used like this:\n * const isRoot = begin( record );\n * ...\n * isRoot && commit( record, options );\n * \n * When committing nested transaction, the flag must be set to true. \n * commit( object, options, isNested ) \n */\n\nexport const transactionApi = {\n // Start transaction. Return true if it's the root one.\n /** @private */\n begin( object : Transactional ) : boolean {\n return object._transaction ? false : ( object._transaction = true ); \n },\n\n // Mark object having changes inside of the current transaction.\n // Returns true whenever there notifications are required.\n /** @private */\n markAsDirty( object : Transactional, options : TransactionOptions ) : boolean {\n // If silent option is in effect, don't set isDirty flag.\n const dirty = !options.silent;\n if( dirty ) object._isDirty = options;\n \n // Reset version token.\n object._changeToken = {};\n\n // Object is changed, so validation must happen again. Clear the cache.\n object._validationError = void 0;\n\n return dirty;\n },\n\n // Commit transaction. Send out change event and notify owner. Returns true if there were changes.\n // Must be executed for the root transaction only.\n /** @private */\n commit( object : Transactional, initiator? : Transactional ){\n let originalOptions = object._isDirty;\n\n if( originalOptions ){\n // Send the sequence of change events, handling chained handlers.\n while( object._isDirty ){\n const options = object._isDirty;\n object._isDirty = null; \n trigger3( object, object._changeEventName, object, options, initiator );\n }\n \n // Mark transaction as closed.\n object._transaction = false;\n\n // Notify owner on changes out of transaction scope. \n const { _owner } = object; \n if( _owner && _owner !== initiator ){ // If it's the nested transaction, owner is already aware there are some changes.\n _owner._onChildrenChange( object, originalOptions );\n }\n }\n else{\n // No changes. Silently close transaction.\n object._isDirty = null;\n object._transaction = false;\n }\n },\n\n /************************************\n * Ownership management\n */\n\n // Add reference to the record.\n /** @private */\n aquire( owner : Owner, child : Transactional, key? : string ) : boolean {\n if( !child._owner ){\n child._owner = owner;\n child._ownerKey = key;\n return true;\n }\n\n return child._owner === owner;\n },\n\n // Remove reference to the record.\n /** @private */\n free( owner : Owner, child : Transactional ) : void {\n if( owner === child._owner ){\n child._owner = void 0;\n child._ownerKey = void 0;\n }\n }\n}\n\nfunction getOwnerEndpoint( self : Transactional ) : IOEndpoint {\n // Check if we are the member of the collection...\n const { collection } = self as any;\n if( collection ){\n return getOwnerEndpoint( collection );\n }\n\n // Now, if we're the member of the model...\n if( self._owner ){\n const { _endpoints } = self._owner as any;\n return _endpoints && _endpoints[ self._ownerKey ];\n }\n}\n","import { Transactional, Transaction, TransactionOptions, Owner, transactionApi } from \"../../transactions\"\nconst { begin : _begin, markAsDirty : _markAsDirty, commit } = transactionApi;\n\nimport { eventsApi } from '../../object-plus'\nconst { trigger3 } = eventsApi;\n\nexport interface ConstructorsMixin {\n Attributes : AttributesConstructor\n AttributesCopy : AttributesCopyConstructor\n}\n\nexport interface ConstructorOptions extends TransactionOptions{\n clone? : boolean\n}\n\nexport type AttributesConstructor = new ( record : AttributesContainer, values : object, options : TransactionOptions ) => AttributesValues;\nexport type AttributesCopyConstructor = new ( values : object ) => AttributesValues;\n\nexport interface AttributesContainer extends Transactional, Owner, ConstructorsMixin {\n // Attribute descriptors.\n _attributes : AttributesDescriptors\n\n // Attribute values.\n attributes : AttributesValues\n\n // Previous attribute values.\n _previousAttributes : AttributesValues\n\n // Changed attributes cache. \n _changedAttributes : AttributesValues\n}\n\nexport interface AttributesValues {\n [ name : string ] : any\n}\n\nexport interface AttributesDescriptors {\n [ name : string ] : AttributeUpdatePipeline\n}\n\nexport interface AttributeUpdatePipeline{\n doUpdate( value, record : AttributesContainer, options : TransactionOptions, nested? : Transaction[] ) : boolean\n}\n\n // Optimized single attribute transactional update. To be called from attributes setters\n // options.silent === false, parse === false. \nexport function setAttribute( record : AttributesContainer, name : string, value : any ) : void {\n // Open the transaction.\n const isRoot = begin( record ),\n options = {};\n\n // Update attribute. \n if( record._attributes[ name ].doUpdate( value, record, options ) ){\n // Notify listeners on changes.\n markAsDirty( record, options );\n trigger3( record, 'change:' + name, record, record.attributes[ name ], options );\n }\n\n // Close the transaction.\n isRoot && commit( record );\n}\n\nfunction begin( record : AttributesContainer ){\n if( _begin( record ) ){\n record._previousAttributes = new record.AttributesCopy( record.attributes );\n record._changedAttributes = null;\n return true;\n }\n \n return false;\n}\n\nfunction markAsDirty( record : AttributesContainer, options : TransactionOptions ){\n // Need to recalculate changed attributes, when we have nested set in change:attr handler\n if( record._changedAttributes ){\n record._changedAttributes = null;\n }\n\n return _markAsDirty( record, options );\n}\n\n/**\n * TODO: There's an opportunity to create an optimized pipeline for primitive types and Date, which makes the majority\n * of attributes. It might create the major speedup.\n * \n * Create the dedicated pipeline for owned and shared attributes as well.\n * \n * Three elements of the pipeline:\n * - from constructor\n * - from assignment\n * - from `set`\n */\n\nexport const UpdateRecordMixin = {\n// Need to override it here, since begin/end transaction brackets are overriden. \n transaction( this : AttributesContainer, fun : ( self : AttributesContainer ) => void, options : TransactionOptions = {} ) : void{\n const isRoot = begin( this );\n fun.call( this, this );\n isRoot && commit( this );\n },\n \n // Handle nested changes. TODO: propagateChanges == false, same in transaction.\n _onChildrenChange( child : Transactional, options : TransactionOptions ) : void {\n const { _ownerKey } = child,\n attribute = this._attributes[ _ownerKey ];\n\n if( !attribute /* TODO: Must be an opposite, likely the bug */ || attribute.propagateChanges ) this.forceAttributeChange( _ownerKey, options );\n },\n\n // Simulate attribute change \n forceAttributeChange( key : string, options : TransactionOptions = {} ){\n // Touch an attribute in bounds of transaction\n const isRoot = begin( this );\n\n if( markAsDirty( this, options ) ){\n trigger3( this, 'change:' + key, this, this.attributes[ key ], options );\n }\n \n isRoot && commit( this );\n },\n\n _createTransaction( this : AttributesContainer, a_values : {}, options : TransactionOptions = {} ) : Transaction {\n const isRoot = begin( this ),\n changes : string[] = [],\n nested : RecordTransaction[]= [],\n { _attributes } = this,\n values = options.parse ? this.parse( a_values, options ) : a_values;\n\n let unknown;\n\n if( shouldBeAnObject( this, values ) ){\n for( let name in values ){\n const spec = _attributes[ name ];\n\n if( spec ){\n if( spec.doUpdate( values[ name ], this, options, nested ) ){\n changes.push( name );\n }\n }\n else{\n unknown || ( unknown = [] );\n unknown.push( `'${ name }'` );\n }\n }\n\n if( unknown ){\n // this._log( 'warn', `Undefined attributes ${ unknown.join(', ')} are ignored!`, values );\n }\n }\n \n if( changes.length && markAsDirty( this, options ) ){\n return new RecordTransaction( this, isRoot, nested, changes );\n }\n \n // No changes, but there might be silent attributes with open transactions.\n for( let pendingTransaction of nested ){\n pendingTransaction.commit( this );\n }\n\n isRoot && commit( this );\n }\n};\n\n// One of the main performance tricks of Type-R.\n// Create loop unrolled constructors for internal attribute hash,\n// so the hidden class JIT optimization will be engaged and they will become static structs.\n// It dramatically improves record performance.\nexport function constructorsMixin( attrDefs : AttributesDescriptors ) : ConstructorsMixin {\n const attrs = Object.keys( attrDefs );\n\n const AttributesCopy : AttributesCopyConstructor = new Function( 'values', `\n ${ attrs.map( attr =>`\n this.${ attr } = values.${ attr };\n `).join( '' ) }\n `) as any;\n\n AttributesCopy.prototype = Object.prototype;\n\n const Attributes : AttributesConstructor = new Function( 'record', 'values', 'options', `\n var _attrs = record._attributes;\n\n ${ attrs.map( attr =>`\n this.${ attr } = _attrs.${ attr }.doInit( values.${ attr }, record, options );\n `).join( '' ) }\n `) as any;\n\n Attributes.prototype = Object.prototype;\n\n return { Attributes, AttributesCopy };\n}\n\nexport function shouldBeAnObject( record : AttributesContainer, values : object ){\n if( values && values.constructor === Object ) return true;\n\n record._log( 'warn', 'update with non-object is ignored!', { values } );\n return false;\n}\n\n// Transaction class. Implements two-phase transactions on object's tree. \n// Transaction must be created if there are actual changes and when markIsDirty returns true. \nexport class RecordTransaction implements Transaction {\n // open transaction\n constructor( public object : AttributesContainer,\n public isRoot : boolean,\n public nested : Transaction[],\n public changes : string[] ){}\n\n // commit transaction\n commit( initiator? : AttributesContainer ) : void {\n const { nested, object, changes } = this;\n\n // Commit all pending nested transactions...\n for( let transaction of nested ){ \n transaction.commit( object );\n }\n\n // Notify listeners on attribute changes...\n // Transaction is never created when silent option is set, so just send events out.\n const { attributes, _isDirty } = object;\n for( let key of changes ){\n trigger3( object, 'change:' + key, object, attributes[ key ], _isDirty );\n }\n\n this.isRoot && commit( object, initiator );\n }\n}","import { setAttribute, AttributesContainer, AttributeUpdatePipeline, RecordTransaction } from './updates'\nimport { tools } from '../../object-plus'\nimport { Owner, Transactional, TransactionOptions } from '../../transactions'\nimport { IOEndpoint } from '../../io-tools'\n\nconst { notEqual, assign} = tools;\n\ndeclare global {\n interface Function {\n _attribute : typeof AnyType\n }\n}\n\nexport type Transform = ( this : AnyType, next : any, prev : any, record : AttributesContainer, options : TransactionOptions ) => any;\nexport type ChangeHandler = ( this : AnyType, next : any, prev : any, record : AttributesContainer, options : TransactionOptions ) => void;\n\nexport interface AttributeOptions {\n _attribute? : typeof AnyType\n validate? : ( record : AttributesContainer, value : any, key : string ) => any\n isRequired? : boolean\n changeEvents? : boolean\n\n endpoint? : IOEndpoint\n\n type? : Function\n value? : any\n hasCustomDefault? : boolean\n\n parse? : Parse\n toJSON? : AttributeToJSON\n \n getHooks? : GetHook[]\n transforms? : Transform[]\n changeHandlers? : ChangeHandler[]\n\n _onChange? : ChangeAttrHandler\n}\n\nexport type Parse = ( value : any, key : string ) => any;\nexport type GetHook = ( value : any, key : string ) => any;\nexport type AttributeToJSON = ( value : any, key : string ) => any\nexport type AttributeParse = ( value : any, key : string ) => any\nexport type ChangeAttrHandler = ( ( value : any, attr : string ) => void ) | string;\n\n// TODO: interface differs from options, do something obout it\nconst emptyOptions : TransactionOptions = {};\n\n/**\n * Typeless attribute. Is the base class for all other attributes.\n */\nexport class AnyType implements AttributeUpdatePipeline {\n // Factory method to create attribute from options \n static create( options : AttributeOptions, name : string ) : AnyType {\n const type = options.type,\n AttributeCtor = options._attribute || ( type ? type._attribute : AnyType );\n\n return new AttributeCtor( name, options );\n }\n /**\n * Update pipeline functions\n * =========================\n *\n * Stage 0. canBeUpdated( value )\n * - presence of this function implies attribute's ability to update in place.\n */\n canBeUpdated( prev, next, options : TransactionOptions ) : any {}\n\n /**\n * Stage 1. Transform stage\n */\n transform( next : any, prev : any, model : AttributesContainer, options : TransactionOptions ) : any { return next; }\n\n // convert attribute type to `this.type`.\n convert( next : any, prev : any, model : AttributesContainer, options : TransactionOptions ) : any { return next; }\n\n /**\n * Stage 2. Check if attr value is changed\n */\n isChanged( a : any, b : any ) : boolean {\n return notEqual( a, b );\n }\n\n /**\n * Stage 3. Handle attribute change\n */\n handleChange( next : any, prev : any, model : AttributesContainer, options : TransactionOptions ) {}\n\n /**\n * End update pipeline definitions.\n */\n\n // create empty object passing backbone options to constructor...\n create() { return void 0; }\n\n // generic clone function for typeless attributes\n // Must be overriden in sublass\n clone( value : any, record : AttributesContainer ) {\n return value;\n }\n\n dispose( record : AttributesContainer, value : any ) : void {\n this.handleChange( void 0, value, record, emptyOptions );\n }\n\n validate( record : AttributesContainer, value : any, key : string ){}\n\n toJSON( value, key, options? : object ) {\n return value && value.toJSON ? value.toJSON( options ) : value;\n }\n\n createPropertyDescriptor() : PropertyDescriptor | void {\n const { name, getHook } = this;\n\n if( name !== 'id' ){\n return {\n // call to optimized set function for single argument.\n set( value ){\n setAttribute( this, name, value );\n },\n\n // attach get hook to the getter function, if it present\n get : (\n getHook ?\n function() {\n return getHook.call( this, this.attributes[ name ], name );\n } :\n function() { return this.attributes[ name ]; }\n )\n }\n }\n }\n\n value : any\n\n // Used as global default value for the given metatype\n static defaultValue : any;\n\n type : Function\n\n initialize( name : string, options : TransactionOptions ){}\n\n options : AttributeOptions\n\n doInit( value, record : AttributesContainer, options : TransactionOptions ){\n const v = value === void 0 ? this.defaultValue() : value,\n x = this.transform( v, void 0, record, options );\n \n this.handleChange( x, void 0, record, options );\n return x;\n }\n\n doUpdate( value, record : AttributesContainer, options : TransactionOptions, nested? : RecordTransaction[] ){\n const { name } = this,\n { attributes } = record,\n prev = attributes[ name ];\n\n const next = this.transform( value, prev, record, options );\n attributes[ name ] = next;\n\n if( this.isChanged( next, prev ) ) {\n // Do the rest of the job after assignment\n this.handleChange( next, prev, record, options );\n return true;\n }\n\n return false;\n }\n\n propagateChanges : boolean\n\n _log( level : tools.LogLevel, text : string, value, record : AttributesContainer ){\n tools.log( level, `[Attribute Update Error] ${ record.getClassName() }.${ this.name }: ` + text, {\n 'Record' : record,\n 'Attribute definition' : this,\n 'Prev. value' : record.attributes[ this.name ],\n 'New value' : value\n });\n }\n\n defaultValue(){\n return this.value;\n }\n\n constructor( public name : string, a_options : AttributeOptions ) { \n // Save original options...\n this.options = a_options;\n\n // Clone options.\n const options : AttributeOptions = assign( { getHooks : [], transforms : [], changeHandlers : [] }, a_options );\n options.getHooks = options.getHooks.slice();\n options.transforms = options.transforms.slice();\n options.changeHandlers = options.changeHandlers.slice();\n\n const {\n value, type, parse, toJSON, changeEvents,\n validate, getHooks, transforms, changeHandlers\n } = options;\n\n // Initialize default value...\n this.value = value;\n this.type = type;\n\n // TODO: An opportunity to optimize for attribute subtype.\n if( !options.hasCustomDefault && type ){\n this.defaultValue = this.create;\n }\n else if( tools.isValidJSON( value ) ){ \n // JSON literals must be deep copied.\n this.defaultValue = new Function( `return ${ JSON.stringify( value ) };` ) as any;\n }\n else{\n this.defaultValue = this.defaultValue;\n }\n\n // Changes must be bubbled when they are not disabled for an attribute and transactional object.\n this.propagateChanges = changeEvents !== false;\n\n this.toJSON = toJSON === void 0 ? this.toJSON : toJSON;\n\n this.validate = validate || this.validate;\n \n if( options.isRequired ){\n this.validate = wrapIsRequired( this.validate );\n }\n\n /**\n * Assemble pipelines...\n */\n\n // `convert` is default transform, which is always present...\n transforms.unshift( this.convert );\n\n // Get hook from the attribute will be used first...\n if( this.get ) getHooks.unshift( this.get );\n\n // let subclasses configure the pipeline...\n this.initialize.call( this, options );\n\n // let attribute spec configure the pipeline...\n if( getHooks.length ){\n const getHook = this.getHook = getHooks.reduce( chainGetHooks );\n\n const { validate } = this;\n this.validate = function( record : AttributesContainer, value : any, key : string ){\n return validate.call( this, record, getHook.call( record, value, key ), key );\n }\n }\n \n this.transform = transforms.length ? transforms.reduce( chainTransforms ) : this.transform;\n \n this.handleChange = changeHandlers.length ? changeHandlers.reduce( chainChangeHandlers ) : this.handleChange;\n\n // Attribute-level parse transform are attached as update hooks modifiers...\n const { doInit, doUpdate } = this;\n this.doInit = parse ? function( value, record : AttributesContainer, options : TransactionOptions ){\n return doInit.call( this, options.parse && value !== void 0 ? parse.call( record, value, this.name ) : value, record, options );\n } : doInit;\n\n this.doUpdate = parse ? function( value, record : AttributesContainer, options : TransactionOptions, nested? : RecordTransaction[] ){\n return doUpdate.call( this, options.parse && value !== void 0 ? parse.call( record, value, this.name ) : value, record, options, nested );\n } : doUpdate;\n }\n\n getHook : ( value, key : string ) => any = null\n get : ( value, key : string ) => any\n}\n\n\nfunction chainGetHooks( prevHook : GetHook, nextHook : GetHook ) : GetHook {\n return function( value, name ) {\n return nextHook.call( this, prevHook.call( this, value, name ), name );\n }\n}\n\nfunction chainTransforms( prevTransform : Transform, nextTransform : Transform ) : Transform {\n return function( next, prev, record, options ) {\n return nextTransform.call( this, prevTransform.call( this, next, prev, record, options ), prev, record, options );\n }\n}\n\nfunction chainChangeHandlers( prevHandler : ChangeHandler, nextHandler : ChangeHandler ) : ChangeHandler {\n return function( next, prev, record, options ) {\n prevHandler.call( this, next, prev, record, options );\n nextHandler.call( this, next, prev, record, options );\n }\n}\n\nfunction wrapIsRequired( validate ){\n return function( record : AttributesContainer, value : any, key : string ){\n return value ? validate.call( this, record, value, key ) : 'Required';\n }\n}","import { AnyType } from './any'\nimport { Owner, transactionApi, Transactional, ItemsBehavior, TransactionOptions } from '../../transactions'\nimport { tools } from '../../object-plus'\nimport { AttributesContainer, ConstructorOptions } from './updates'\nimport { ValidationError } from '../../validation'\n\nconst { free, aquire } = transactionApi;\n\nexport class AggregatedType extends AnyType {\n type : typeof Transactional\n\n clone( value : Transactional ) : Transactional {\n return value ? value.clone() : value;\n }\n\n toJSON( x, key : string, options : object ){ return x && x.toJSON( options ); }\n\n doInit( value, record : AttributesContainer, options : ConstructorOptions ){\n const v = options.clone ? this.clone( value ) : (\n value === void 0 ? this.defaultValue() : value\n );\n\n const x = this.transform( v, void 0, record, options );\n this.handleChange( x, void 0, record, options );\n return x;\n }\n\n doUpdate( value, record, options, nested : any[] ){ // Last to things can be wrapped to an object, either transaction or ad-hoc\n const key = this.name, { attributes } = record; \n const prev = attributes[ key ];\n let update;\n\n // This can be moved to transactional attribute. And chained with the rest.\n if( update = this.canBeUpdated( prev, value, options ) ) { // todo - skip empty updates.\n const nestedTransaction = prev._createTransaction( update, options );\n if( nestedTransaction ){\n if( nested ){\n nested.push( nestedTransaction );\n }\n else{\n nestedTransaction.commit( record );\n }\n\n if( this.propagateChanges ) return true;\n }\n\n return false;\n }\n\n const next = this.transform( value, prev, record, options );\n attributes[ key ] = next;\n\n if( this.isChanged( next, prev ) ) { // Primitives and nested comparison can be inlined.\n // Do the rest of the job after assignment\n this.handleChange( next, prev, record, options );\n\n return true;\n }\n\n return false;\n }\n\n canBeUpdated( prev : Transactional, next : any, options : TransactionOptions ) : any {\n // If an object already exists, and new value is of incompatible type, let object handle the update.\n if( prev && next != null ){\n if( next instanceof this.type ){\n // In case if merge option explicitly specified, force merge.\n if( options.merge ) return next.__inner_state__;\n }\n else{\n return next;\n }\n }\n }\n\n convert( next : any, prev : any, record : AttributesContainer, options : TransactionOptions ) : Transactional {\n // Invoke class factory to handle abstract classes\n if( next == null ) return next;\n \n if( next instanceof this.type ){\n if( next._shared && !( next._shared & ItemsBehavior.persistent ) ) { // TODO: think more about shared types assignment compatibility. \n this._log( 'error', 'aggregated collection attribute is assigned with shared collection', next, record );\n }\n\n // With explicit 'merge' option we need to clone an object if its previous value was 'null'.\n // This is an only case we could be here when merge === true.\n return options.merge ? next.clone() : next;\n }\n\n return this.type.create( next, options );\n }\n\n dispose ( record : AttributesContainer, value : Transactional ){\n if( value ){\n this.handleChange( void 0, value, record, {} );\n }\n }\n\n validate( record : AttributesContainer, value : Transactional ) : ValidationError {\n var error = value && value.validationError;\n if( error ) return error;\n }\n\n create() : Transactional {\n return (this.type).create(); // this the subclass of Transactional here.\n }\n\n initialize( options ){\n options.changeHandlers.unshift( this._handleChange );\n }\n\n _handleChange( next : Transactional, prev : Transactional, record : AttributesContainer, options : TransactionOptions ){\n if( prev ){\n free( record, prev );\n options.unset || prev.dispose();\n } \n \n if( next && !aquire( record, next, this.name ) ){\n this._log( 'error', 'aggregated attribute assigned with object already having an owner', next, record );\n }\n }\n}","/**\n * Type spec engine. Declare attributes using chainable syntax,\n * and returns object with spec.\n */\nimport { Transactional } from '../../transactions'\nimport { ChangeAttrHandler, AttributeOptions, Parse } from './any'\nimport { AttributesContainer } from './updates'\nimport { EventMap, EventsDefinition, definitionDecorator, tools } from '../../object-plus'\nimport { IOEndpoint } from '../../io-tools'\n\nconst { assign } = tools;\n\nexport interface AttributeCheck {\n ( value : any, key : string ) : boolean\n error? : any\n}\n\nexport class ChainableAttributeSpec {\n options : AttributeOptions;\n\n constructor( options : AttributeOptions ) {\n // Shallow copy options, fill it with defaults.\n this.options = { getHooks : [], transforms : [], changeHandlers : []};\n if( options ) assign( this.options, options );\n }\n\n check( check : AttributeCheck, error : any ) : ChainableAttributeSpec {\n function validate( model, value, name ){\n if( !check.call( model, value, name ) ){\n const msg = error || check.error || name + ' is not valid';\n return typeof msg === 'function' ? msg.call( model, name ) : msg;\n }\n }\n\n const prev = this.options.validate;\n\n return this.metadata({\n validate : prev ? (\n function( model, value, name ){\n return prev( model, value, name ) || validate( model, value, name );\n }\n ) : validate\n });\n }\n\n get asProp(){\n return definitionDecorator( 'attributes', this );\n }\n\n get as(){ return this.asProp; }\n\n get isRequired() : ChainableAttributeSpec {\n return this.metadata({ isRequired : true }); \n }\n\n endpoint( endpoint : IOEndpoint ){\n return this.metadata({ endpoint });\n }\n\n watcher( ref : string | ( ( value : any, key : string ) => void ) ) : ChainableAttributeSpec {\n return this.metadata({ _onChange : ref });\n }\n\n // Attribute-specific parse transform\n parse( fun : Parse ) : ChainableAttributeSpec {\n return this.metadata({ parse : fun });\n }\n\n toJSON( fun ) : ChainableAttributeSpec {\n return this.metadata({\n toJSON : typeof fun === 'function' ? fun : ( fun ? ( x, k, o ) => x && x.toJSON( o ) : emptyFunction ) \n });\n }\n\n // Attribute get hook.\n get( fun ) : ChainableAttributeSpec {\n return this.metadata({\n getHooks : this.options.getHooks.concat( fun )\n });\n }\n\n // Attribute set hook.\n set( fun ) : ChainableAttributeSpec {\n function handleSetHook( next, prev, record : AttributesContainer, options ) {\n if( this.isChanged( next, prev ) ) {\n const changed = fun.call( record, next, this.name );\n return changed === void 0 ? prev : this.convert( changed, prev, record, options );\n }\n\n return prev;\n }\n\n return this.metadata({\n transforms : this.options.transforms.concat( handleSetHook )\n });\n }\n\n changeEvents( events : boolean ) : ChainableAttributeSpec {\n return this.metadata({ changeEvents : events });\n }\n\n // Subsribe to events from an attribute.\n events( map : EventsDefinition ) : ChainableAttributeSpec {\n const eventMap = new EventMap( map );\n\n function handleEventsSubscribtion( next, prev, record : AttributesContainer ){\n prev && prev.trigger && eventMap.unsubscribe( record, prev );\n\n next && next.trigger && eventMap.subscribe( record, next );\n }\n\n return this.metadata({\n changeHandlers : this.options.changeHandlers.concat( handleEventsSubscribtion )\n });\n }\n\n // Creates a copy of the spec.\n get has() : ChainableAttributeSpec {\n return this;\n }\n\n metadata( options : AttributeOptions ) : ChainableAttributeSpec {\n const cloned = new ChainableAttributeSpec( this.options );\n assign( cloned.options, options );\n return cloned;\n }\n\n value( x ) : ChainableAttributeSpec {\n return this.metadata({ value : x, hasCustomDefault : true });\n }\n\n static from( spec : any ) : ChainableAttributeSpec {\n let attrSpec : ChainableAttributeSpec;\n\n if( typeof spec === 'function' ) {\n attrSpec = spec.has;\n }\n else if( spec && spec instanceof ChainableAttributeSpec ) {\n attrSpec = spec;\n }\n else{\n // Infer type from value.\n const type = inferType( spec );\n \n // Transactional types inferred from values must have shared type. \n if( type && type.prototype instanceof Transactional ){\n attrSpec = (type).shared.value( spec );\n }\n // All others will be created in regular way.\n else{\n attrSpec = new ChainableAttributeSpec({ type : type, value : spec, hasCustomDefault : true });\n }\n }\n \n return attrSpec;\n }\n}\n\nfunction emptyFunction(){}\n\nexport function type( this : void, spec : ChainableAttributeSpec | Function ) : ChainableAttributeSpec {\n return spec instanceof ChainableAttributeSpec ? spec : new ChainableAttributeSpec( {\n type : spec,\n value : spec._attribute.defaultValue,\n hasCustomDefault : spec._attribute.defaultValue !== void 0\n } );;\n}\n\ndeclare global {\n interface Function{\n value : ( x : any ) => ChainableAttributeSpec;\n isRequired : ChainableAttributeSpec;\n asProp : PropertyDecorator\n has : ChainableAttributeSpec;\n }\n}\n\nFunction.prototype.value = function( x ) {\n return new ChainableAttributeSpec( { type : this, value : x, hasCustomDefault : true } );\n};\n\nObject.defineProperty( Function.prototype, 'isRequired', {\n get() { return this._isRequired || this.has.isRequired; },\n set( x ){ this._isRequired = x; }\n});\n\nObject.defineProperty( Function.prototype, 'asProp', {\n get() { return this.has.asProp; },\n});\n\nObject.defineProperty( Function.prototype, 'has', {\n get() {\n // workaround for sinon.js and other libraries overriding 'has'\n return this._has || type( this );\n },\n\n set( value ) { this._has = value; }\n} );\n\nfunction inferType( value : {} ) : Function {\n switch( typeof value ) {\n case 'number' :\n return Number;\n case 'string' :\n return String;\n case 'boolean' :\n return Boolean;\n case 'undefined' :\n return void 0;\n case 'object' :\n return value ? value.constructor : void 0;\n }\n}\n","/**\n * Date attribute type.\n * \n * Implements validation, cross-browser compatibility fixes, variety of Date serialization formats,\n * and optimized update pipeline.\n */\nimport { AnyType } from './any'\nimport { tools } from '../../object-plus'\nimport { AttributesContainer } from './updates'\nimport { TransactionOptions } from '../../transactions'\nimport { ChainableAttributeSpec } from './attrDef'\n\nconst DateProto = Date.prototype;\n\n// Date Attribute\n/** @private */\nexport class DateType extends AnyType {\n create(){\n return new Date();\n }\n \n convert( next : any, a, record ){\n if( next == null || next instanceof Date ) return next;\n\n const date = new Date( next ),\n timestamp = date.getTime();\n\n if( timestamp !== timestamp ){\n this._log( 'warn', 'assigned with Invalid Date', next, record );\n }\n\n return date;\n }\n\n validate( model, value, name ) {\n if( value != null ){\n const timestamp = value.getTime(); \n if( timestamp !== timestamp ) return name + ' is Invalid Date';\n }\n }\n\n toJSON( value ) { return value && value.toISOString(); }\n\n isChanged( a, b ) { return ( a && a.getTime() ) !== ( b && b.getTime() ); }\n\n doInit( value, record : AttributesContainer, options : TransactionOptions ){\n // Date don't have handleChanges step.\n return this.transform( value === void 0 ? this.defaultValue() : value, void 0, record, options );\n }\n\n doUpdate( value, record, options, nested ){\n const { name } = this,\n { attributes } = record,\n prev = attributes[ name ];\n \n // Date don't have handleChanges step.\n return this.isChanged( prev , attributes[ name ] = this.transform( value, prev, record, options ) );\n }\n\n clone( value ) { return value && new Date( value.getTime() ); }\n dispose(){}\n}\n\nDate._attribute = DateType;\n\nconst msDatePattern = /\\/Date\\(([0-9]+)\\)\\//;\n\nexport class MSDateType extends DateType {\n convert( next ) {\n if( typeof next === 'string' ){\n const msDate = msDatePattern.exec( next );\n if( msDate ){\n return new Date( Number( msDate[ 1 ] ) );\n }\n }\n\n return DateType.prototype.convert.apply( this, arguments );\n }\n\n toJSON( value ) { return value && `/Date(${ value.getTime() })/`; }\n}\n\nexport class TimestampType extends DateType {\n toJSON( value ) { return value && value.getTime(); }\n}\n\ndeclare global {\n interface DateConstructor {\n microsoft : ChainableAttributeSpec\n timestamp : ChainableAttributeSpec\n }\n}\n\nObject.defineProperties( Date, {\n microsoft : {\n get(){\n return new ChainableAttributeSpec({\n type : Date,\n _attribute : MSDateType\n })\n }\n },\n\n timestamp : {\n get(){\n return new ChainableAttributeSpec({\n type : Date,\n _attribute : TimestampType\n })\n }\n }\n});\n\n// If ISO date is not supported by date constructor (such as in Safari), polyfill it.\nfunction supportsDate( date ){\n return !isNaN( ( new Date( date ) ).getTime() );\n}\n\nif( !supportsDate('2011-11-29T15:52:30.5') ||\n !supportsDate('2011-11-29T15:52:30.52') ||\n !supportsDate('2011-11-29T15:52:18.867') ||\n !supportsDate('2011-11-29T15:52:18.867Z') ||\n !supportsDate('2011-11-29T15:52:18.867-03:30') ){\n\n DateType.prototype.convert = function( value ){\n return value == null || value instanceof Date ? value : new Date( safeParseDate( value ) );\n }\n}\n\nconst numericKeys = [ 1, 4, 5, 6, 7, 10, 11 ],\n isoDatePattern = /^(\\d{4}|[+\\-]\\d{6})(?:-(\\d{2})(?:-(\\d{2}))?)?(?:T(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?)?$/;\n\nfunction safeParseDate( date : string ) : number {\n var timestamp, struct : any[], minutesOffset = 0;\n\n if( ( struct = isoDatePattern.exec( date )) ) {\n // avoid NaN timestamps caused by undefined values being passed to Date.UTC\n for( var i = 0, k; ( k = numericKeys[ i ] ); ++i ) {\n struct[ k ] = +struct[ k ] || 0;\n }\n\n // allow undefined days and months\n struct[ 2 ] = (+struct[ 2 ] || 1) - 1;\n struct[ 3 ] = +struct[ 3 ] || 1;\n\n if( struct[ 8 ] !== 'Z' && struct[ 9 ] !== undefined ) {\n minutesOffset = struct[ 10 ] * 60 + struct[ 11 ];\n\n if( struct[ 9 ] === '+' ) {\n minutesOffset = 0 - minutesOffset;\n }\n }\n\n timestamp =\n Date.UTC( struct[ 1 ], struct[ 2 ], struct[ 3 ], struct[ 4 ], struct[ 5 ] + minutesOffset, struct[ 6 ],\n struct[ 7 ] );\n }\n else {\n timestamp = Date.parse( date );\n }\n\n return timestamp;\n}","/**\n * Built-in JSON types attributes: Object, Array, Number, String, Boolean, and immutable class.\n * \n * Adds type assertions, default validation, and optimized update pipeline.\n */\n\nimport { AnyType } from './any'\nimport { tools } from '../../object-plus'\nimport { AttributesContainer } from './updates'\nimport { TransactionOptions } from '../../transactions'\n\n/**\n * Custom class must be immutable class which implements toJSON() method\n * with a constructor taking json.\n */\nclass ImmutableClassType extends AnyType {\n type : new ( value? : any ) => {}\n\n create(){\n return new this.type();\n }\n\n convert( next : any ) : any {\n return next == null || next instanceof this.type ? next : new this.type( next );\n }\n\n toJSON( value, key? : string, options? : object ){\n return value && value.toJSON ? value.toJSON( options ) : value;\n }\n\n clone( value ) {\n return new this.type( this.toJSON( value ) );\n }\n\n isChanged( a, b ){\n return a !== b;\n }\n}\n\nFunction.prototype._attribute = ImmutableClassType;\n\n/**\n * Optimized attribute of primitive type.\n * \n * Primitives has specialized simplified pipeline.\n */\nexport class PrimitiveType extends AnyType {\n type : NumberConstructor | StringConstructor | BooleanConstructor\n\n dispose(){}\n create() { return this.type(); }\n\n toJSON( value ) { return value; }\n\n convert( next ) { return next == null ? next : this.type( next ); }\n\n isChanged( a, b ) { return a !== b; }\n\n clone( value ) { return value; }\n\n doInit( value, record : AttributesContainer, options : TransactionOptions ){\n return this.transform( value === void 0 ? this.value : value, void 0, record, options );\n }\n\n doUpdate( value, record, options, nested ){\n const { name } = this,\n { attributes } = record,\n prev = attributes[ name ];\n \n return prev !== ( attributes[ name ] = this.transform( value, prev, record, options ) );\n }\n\n initialize(){\n if( !this.options.hasCustomDefault ){\n this.value = this.type();\n }\n }\n}\n\nBoolean._attribute = String._attribute = PrimitiveType;\n\n// Number type with special validation algothim.\n/** @private */ \nexport class NumericType extends PrimitiveType {\n type : NumberConstructor\n\n create(){\n return 0;\n }\n\n convert( next, prev?, record? ) {\n const num = next == null ? next : this.type( next );\n\n if( num !== num ){\n this._log( 'warn', 'assigned with Invalid Number', next, record );\n }\n \n return num;\n }\n\n validate( model, value, name ) {\n // Whatever is not symmetrically serializable to JSON, is not valid by default.\n if( value != null && !isFinite( value ) ) {\n return name + ' is not valid number';\n }\n }\n}\n\nNumber._attribute = NumericType;\n\n/**\n * Add Number.integer attrubute type\n */\ndeclare global {\n interface NumberConstructor {\n integer : Function\n }\n\n interface Window {\n Integer : Function;\n }\n}\n\nfunction Integer( x ){\n return x ? Math.round( x ) : 0;\n}\nInteger._attribute = NumericType;\nNumber.integer = Integer;\n\n\nif( typeof window !== 'undefined' ){\n window.Integer = Number.integer;\n}\n\n/**\n * Compatibility wrapper for Array type.\n * @private\n */ \nexport class ArrayType extends AnyType {\n toJSON( value ) { return value; }\n dispose(){}\n create(){ return []; }\n\n convert( next, prev, record ) {\n // Fix incompatible constructor behaviour of Array...\n if( next == null || Array.isArray( next ) ) return next;\n\n this._log( 'warn', 'assignment of non-array to Array attribute is ignored', next, record );\n\n return [];\n }\n\n clone( value ){\n return value && value.slice();\n }\n}\n\nArray._attribute = ArrayType;\n\nexport class ObjectType extends AnyType {\n create(){ return {}; }\n\n convert( next, prev, record ) {\n if( next == null || typeof next === 'object' ) return next;\n \n this._log( 'warn', 'assignment of non-object to Object attribute is ignored', next, record );\n return {};\n }\n}\n\nObject._attribute = ObjectType;\n\nexport function doNothing(){}\n\nexport class FunctionType extends AnyType {\n // Functions are not serialized.\n toJSON( value ) { return void 0; }\n create(){ return doNothing; }\n dispose(){}\n\n convert( next, prev, record ) {\n // Fix incompatible constructor behaviour of Function...\n if( next == null || typeof next === 'function' ) return next;\n\n this._log( 'warn', 'assigned with non-function', next, record );\n\n return doNothing;\n }\n\n // Functions are not cloned.\n clone( value ){ return value; }\n}\n\nFunction._attribute = FunctionType;","import { AnyType } from './any'\nimport { AttributesContainer, ConstructorOptions } from './updates'\nimport { ItemsBehavior, Owner, transactionApi, Transactional, TransactionOptions } from '../../transactions' \nimport { tools, eventsApi } from '../../object-plus'\n\nconst { on, off } = eventsApi,\n { free, aquire } = transactionApi;\n\n/************************\n * Shared attribute definition.\n * - Not serialized.\n * - Listening to the changes.\n * - Doesn't take ownership when assigned with object of proper type.\n * - Takes ownership on objects which are converted.\n */\n\nconst shareAndListen = ItemsBehavior.listen | ItemsBehavior.share;\n\n/** @private */\nexport class SharedType extends AnyType {\n type : typeof Transactional\n\n doInit( value, record : AttributesContainer, options : ConstructorOptions ){\n const v = options.clone ? this.clone( value, record ) : (\n value === void 0 ? this.defaultValue() : value\n );\n\n const x = this.transform( v, void 0, record, options );\n this.handleChange( x, void 0, record, options );\n return x;\n }\n\n doUpdate( value, record, options, nested : any[] ){ // Last to things can be wrapped to an object, either transaction or ad-hoc\n const key = this.name, { attributes } = record; \n const prev = attributes[ key ];\n let update;\n\n // This can be moved to transactional attribute. And chained with the rest.\n if( update = this.canBeUpdated( prev, value, options ) ) { // todo - skip empty updates.\n const nestedTransaction = prev._createTransaction( update, options );\n if( nestedTransaction ){\n if( nested ){\n nested.push( nestedTransaction );\n }\n else{\n nestedTransaction.commit( record );\n }\n\n if( this.propagateChanges ) return true;\n }\n\n return false;\n }\n\n const next = this.transform( value, prev, record, options );\n attributes[ key ] = next;\n\n if( this.isChanged( next, prev ) ) { // Primitives and nested comparison can be inlined.\n // Do the rest of the job after assignment\n this.handleChange( next, prev, record, options );\n\n return true;\n }\n\n return false;\n }\n\n clone( value : Transactional, record : AttributesContainer ) : Transactional {\n // References are not cloned.\n if( !value || value._owner !== record ) return value;\n\n // Implicitly created objects are cloned.\n const clone = value.clone();\n aquire( record, clone, this.name );\n return clone;\n }\n\n // Do not serialize by default.\n toJSON(){}\n\n canBeUpdated( prev : Transactional, next : any, options : TransactionOptions ) : any {\n // If an object already exists, and new value is of incompatible type, let object handle the update.\n if( prev && next != null && !( next instanceof this.type ) ){\n return next;\n }\n }\n\n convert( next : any, prev : any, record : AttributesContainer, options : TransactionOptions ) : Transactional {\n if( next == null || next instanceof this.type ) return next;\n\n // Convert type using implicitly created rtransactional object.\n const implicitObject = new ( this.type as any )( next, options, shareAndListen );\n\n // To prevent a leak, we need to take an ownership on it.\n aquire( record, implicitObject, this.name );\n\n return implicitObject;\n }\n\n // Refs are always valid.\n validate( model, value, name ){}\n\n // They are always created as null.\n create() : Transactional {\n return null;\n }\n\n // Listening to the change events\n _handleChange( next : Transactional, prev : Transactional, record : AttributesContainer, options ){\n if( prev ){\n // If there was an implicitly created object, remove an ownership.\n if( prev._owner === record ){\n free( record, prev );\n options.unset || prev.dispose();\n }\n else{\n off( prev, prev._changeEventName, this._onChange, record );\n }\n } \n \n if( next ){\n // No need to take an ownership for an implicit object - already done in convert or clone.\n if( next._owner !== record ){\n on( next, next._changeEventName, this._onChange, record );\n }\n } \n }\n\n dispose( record : AttributesContainer, value : Transactional ){\n if( value ){\n this.handleChange( void 0, value, record, {} );\n }\n }\n\n _onChange : ( child : Transactional, options : TransactionOptions, initiator : Transactional ) => void \n\n initialize( options ){\n // Create change event handler which knows current attribute name. \n const attribute = this;\n this._onChange = this.propagateChanges ? function( child, options, initiator ){\n this === initiator || this.forceAttributeChange( attribute.name, options );\n } : ignore;\n\n options.changeHandlers.unshift( this._handleChange );\n }\n}\n\nfunction ignore(){}","import { tools as _, eventsApi } from '../../object-plus'\n\nexport * from './any'\nexport * from './owned'\nexport * from './date'\nexport * from './basic'\nexport * from './shared'\nexport * from './updates'\nexport * from './attrDef'\n\nimport { AnyType } from './any'\nimport { ConstructorsMixin, constructorsMixin } from './updates'\nimport { ChainableAttributeSpec } from './attrDef'\nimport { CompiledReference } from '../../traversable'\nimport { IOEndpoint } from '../../io-tools'\n\nexport interface RecordAttributesMixin extends ConstructorsMixin {\n // Attributes descriptors\n _attributes : AttributeDescriptors\n _attributesArray : AnyType[]\n \n // Attribute's property descriptors\n properties : PropertyDescriptorMap\n\n // Event map for record's local events.\n _localEvents? : eventsApi.EventMap,\n\n _endpoints : { [ name : string ] : IOEndpoint }\n}\n\nexport interface AttributeDescriptors {\n [ name : string ] : AnyType\n}\n\n// Create record mixin from the given record's attributes definition\nexport default function( attributesDefinition : object, baseClassAttributes : AttributeDescriptors ) : RecordAttributesMixin {\n const myAttributes = _.transform( {} as AttributeDescriptors, attributesDefinition, createAttribute ),\n allAttributes = _.defaults( {} as AttributeDescriptors, myAttributes, baseClassAttributes );\n\n const ConstructorsMixin = constructorsMixin( allAttributes );\n\n return {\n ...ConstructorsMixin,\n _attributes : new ConstructorsMixin.AttributesCopy( allAttributes ),\n _attributesArray : Object.keys( allAttributes ).map( key => allAttributes[ key ] ),\n properties : _.transform( {}, myAttributes, x => x.createPropertyDescriptor() ),\n ...localEventsMixin( myAttributes ),\n _endpoints : _.transform( {}, allAttributes, attrDef => attrDef.options.endpoint )\n } \n}\n\n// Create attribute from the type spec.\nexport function createAttribute( spec : any, name : string ) : AnyType {\n return AnyType.create( ChainableAttributeSpec.from( spec ).options, name );\n}\n\nexport function createSharedTypeSpec( Constructor : Function, Attribute : typeof AnyType ){\n if( !Constructor.hasOwnProperty( 'shared' ) ){\n Object.defineProperty( Constructor, 'shared', {\n get(){\n return new ChainableAttributeSpec({\n value : null,\n type : Constructor,\n _attribute : Attribute\n });\n }\n });\n }\n}\n\ninterface LocalEventsMixin {\n _localEvents? : eventsApi.EventMap\n}\n\nfunction localEventsMixin( attrSpecs : AttributeDescriptors ) : LocalEventsMixin {\n let _localEvents : eventsApi.EventMap;\n\n for( var key in attrSpecs ){\n const attribute = attrSpecs[ key ],\n { _onChange } = attribute.options; \n\n if( _onChange ){\n _localEvents || ( _localEvents = new eventsApi.EventMap() );\n\n _localEvents.addEvent( 'change:' + key,\n typeof _onChange === 'string' ?\n createWatcherFromRef( _onChange, key ) : \n wrapWatcher( _onChange, key ) );\n }\n }\n\n return _localEvents ? { _localEvents } : {};\n}\n\nfunction wrapWatcher( watcher, key ){\n return function( record, value ){\n watcher.call( record, value, key );\n } \n}\n\nfunction createWatcherFromRef( ref : string, key : string ){\n const { local, resolve, tail } = new CompiledReference( ref, true );\n return local ?\n function( record, value ){\n record[ tail ]( value, key );\n } :\n function( record, value ){\n resolve( record )[ tail ]( value, key );\n }\n}","import { getOwnerEndpoint, startIO, IOOptions, IOEndpoint, IOPromise, IONode } from '../io-tools'\n\nexport interface IORecord extends IONode {\n getEndpoint() : IOEndpoint\n save( options? : IOOptions ) : IOPromise\n fetch( options? : IOOptions ) : IOPromise\n destroy( options? : IOOptions ) : IOPromise\n toJSON( options? : object ) : any\n isNew() : boolean\n id : string | number\n set( json : object, options : object )\n}\n\nexport const IORecordMixin = {\n save( this : IORecord, options : IOOptions = {} ){\n const endpoint = this.getEndpoint(),\n json = this.toJSON( options );\n\n return startIO(\n this,\n this.isNew() ?\n endpoint.create( json, options, this ) :\n endpoint.update( this.id, json, options, this ),\n options,\n\n update => {\n this.set( update, { parse : true, ...options } );\n }\n );\n },\n\n fetch( options : IOOptions = {} ){\n return startIO(\n this,\n this.getEndpoint().read( this.id, options, this ),\n options,\n\n json => this.set( json, { parse : true, ...options } )\n );\n },\n\n destroy( options : IOOptions = {} ){ \n return startIO(\n this,\n this.getEndpoint().destroy( this.id, options, this ),\n options,\n\n () => {\n const { collection } = this;\n if( collection ){\n collection.remove( this, options );\n }\n else{\n this.dispose();\n }\n\n return this;\n }\n )\n }\n}","/**\n * Record core implementing transactional updates.\n * The root of all definitions. \n */\n\nimport { tools, eventsApi, Mixable, definitions, mixins, mixinRules, define } from '../object-plus'\n\nimport { CloneOptions, Transactional, TransactionalDefinition, Transaction, TransactionOptions, Owner } from '../transactions'\nimport { ChildrenErrors } from '../validation'\n\nimport { Collection } from '../collection'\n\nimport { AnyType, AggregatedType, setAttribute, UpdateRecordMixin, \n AttributesValues, AttributesContainer,\n ConstructorsMixin, AttributesConstructor, AttributesCopyConstructor } from './attributes'\n\nimport { IORecord, IORecordMixin } from './io-mixin'\nimport { IOPromise, IOEndpoint } from '../io-tools'\n\nconst { assign, isEmpty, log } = tools;\n\n/*******************************************************\n * Record core implementation\n */\n\nexport interface ConstructorOptions extends TransactionOptions{\n clone? : boolean\n}\n\n// Client unique id counter\nlet _cidCounter : number = 0;\n\n/***************************************************************\n * Record Definition as accepted by Record.define( definition )\n */\nexport interface RecordDefinition extends TransactionalDefinition {\n idAttribute? : string\n attributes? : AttributesValues\n collection? : object\n Collection? : typeof Transactional\n}\n\n@define({\n // Default client id prefix \n cidPrefix : 'm',\n\n // Name of the change event\n _changeEventName : 'change',\n\n // Default id attribute name\n idAttribute : 'id'\n})\n@definitions({\n defaults : mixinRules.merge,\n attributes : mixinRules.merge,\n collection : mixinRules.merge,\n Collection : mixinRules.value,\n idAttribute : mixinRules.protoValue\n})\nexport class Record extends Transactional implements IORecord, AttributesContainer {\n // Hack\n static onDefine( definition, BaseClass ){}\n\n static Collection : typeof Collection;\n static DefaultCollection : typeof Collection;\n\n static from : ( collectionReference : any ) => any;\n \n static defaults( attrs : AttributesValues ) : typeof Record {\n return this.extend({ attributes : attrs });\n }\n \n static attributes : AttributesValues\n\n /********************\n * IO Methods\n */\n _endpoints : { [ name : string ] : IOEndpoint }\n\n // Save record\n save( options? : object ) : IOPromise { throw new Error( 'Implemented by mixin' ); }\n\n // Destroy record\n destroy( options? : object ) : IOPromise { throw new Error( 'Implemented by mixin' ); }\n\n /***********************************\n * Core Members\n */\n // Previous attributes\n _previousAttributes : {}\n\n previousAttributes(){ return new this.AttributesCopy( this._previousAttributes ); } \n\n // Current attributes \n attributes : AttributesValues\n\n // Polymorphic accessor for aggregated attribute's canBeUpdated().\n get __inner_state__(){ return this.attributes; }\n\n // Lazily evaluated changed attributes hash\n _changedAttributes : AttributesValues\n\n get changed(){\n let changed = this._changedAttributes;\n\n if( !changed ){\n const prev = this._previousAttributes;\n changed = {};\n\n const { _attributes, attributes } = this;\n\n for( let attr of this._attributesArray ){\n const key = attr.name,\n value = attributes[ key ];\n\n if( attr.isChanged( value, prev[ key ] ) ){\n changed[ key ] = value;\n }\n }\n\n this._changedAttributes = changed;\n }\n\n return changed; \n }\n\n changedAttributes( diff? : {} ) : boolean | {} {\n if( !diff ) return this.hasChanged() ? assign( {}, this.changed ) : false;\n\n var val, changed : {} | boolean = false,\n old = this._transaction ? this._previousAttributes : this.attributes,\n attrSpecs = this._attributes;\n\n for( var attr in diff ){\n if( !attrSpecs[ attr ].isChanged( old[ attr ], ( val = diff[ attr ] ) ) ) continue;\n (changed || (changed = {}))[ attr ] = val;\n }\n\n return changed; \n }\n\n hasChanged( key? : string ) : boolean {\n const { _previousAttributes } = this;\n if( !_previousAttributes ) return false;\n\n return key ?\n this._attributes[ key ].isChanged( this.attributes[ key ], _previousAttributes[ key ] ) :\n !isEmpty( this.changed );\n }\n\n previous( key : string ) : any {\n if( key ){\n const { _previousAttributes } = this;\n if( _previousAttributes ) return _previousAttributes[ key ];\n }\n \n return null;\n }\n\n isNew() : boolean {\n return this.id == null;\n }\n\n has( key : string ) : boolean {\n return this[ key ] != void 0;\n }\n\n // Return attribute value, setting an attribute to undefined.\n // TODO: If attribute was aggregated, don't dispose it.\n unset( key : string, options? ) : any {\n const value = this[ key ];\n this.set({ [ key ] : void 0 }, { unset : true, ...options });\n return value;\n }\n\n // Undocumented. Move to NestedTypes?\n clear( options? ) : this {\n const nullify = options && options.nullify;\n\n this.transaction( () =>{\n this.forEachAttr( this.attributes, ( value, key ) => this[ key ] = nullify ? null : void 0 );\n }, options );\n\n return this;\n }\n\n // Returns Record owner skipping collections. TODO: Move out\n getOwner() : Owner {\n const owner : any = this._owner;\n\n // If there are no key, owner must be transactional object, and it's the collection.\n // We don't expect that collection can be the member of collection, so we're skipping just one level up. An optimization.\n return this._ownerKey ? owner : owner && owner._owner;\n }\n\n /***********************************\n * Identity managements\n */\n\n // Id attribute name ('id' by default)\n idAttribute : string;\n\n // Fixed 'id' property pointing to id attribute\n get id() : string | number { return this.attributes[ this.idAttribute ]; }\n set id( x : string | number ){ setAttribute( this, this.idAttribute, x ); }\n\n /***********************************\n * Dynamically compiled stuff\n */\n\n // Attributes specifications \n _attributes : { [ key : string ] : AnyType }\n _attributesArray : AnyType[]\n\n // Attributes object copy constructor\n Attributes : AttributesConstructor\n AttributesCopy : AttributesCopyConstructor\n\n // forEach function for traversing through attributes, with protective default implementation\n // Overriden by dynamically compiled loop unrolled function in define.ts\n forEachAttr( attrs : {}, iteratee : ( value : any, key? : string, spec? : AnyType ) => void ) : void {\n const { _attributes } = this;\n let unknown : string[];\n\n for( let name in attrs ){\n const spec = _attributes[ name ];\n\n if( spec ){\n iteratee( attrs[ name ], name, spec );\n }\n else{\n unknown || ( unknown = [] );\n unknown.push( `'${ name }'` );\n }\n }\n\n if( unknown ){\n this._log( 'warn', `attributes ${ unknown.join(', ')} are not defined`,{\n attributes : attrs\n } );\n }\n }\n\n each( iteratee : ( value? : any, key? : string ) => void, context? : any ){\n const fun = context !== void 0 ? ( v, k ) => iteratee.call( context, v, k ) : iteratee,\n { attributes } = this;\n\n for( const key in this.attributes ){\n const value = attributes[ key ];\n if( value !== void 0 ) fun( value, key );\n }\n }\n\n // Get array of attribute keys (Record) or record ids (Collection) \n keys() : string[] {\n const keys : string[] = [];\n\n this.each( ( value, key ) => value === void 0 || keys.push( key ) );\n\n return keys;\n }\n\n // Get array of attribute values (Record) or records (Collection)\n values() : any[] {\n return this.map( value => value );\n }\n\n // Create record default values, optionally augmenting given values.\n defaults( values = {} ){\n const defaults = {},\n { _attributesArray } = this;\n\n for( let attr of _attributesArray ){\n const key = attr.name,\n value = values[ key ];\n\n defaults[ key ] = value === void 0 ? attr.defaultValue() : value;\n }\n\n return defaults;\n }\n\n /***************************************************\n * Record construction\n */\n // Create record, optionally setting an owner\n constructor( a_values? : {}, a_options? : ConstructorOptions ){\n super( _cidCounter++ );\n this.attributes = {};\n \n const options = a_options || {},\n values = ( options.parse ? this.parse( a_values, options ) : a_values ) || {};\n\n if( log.level > 1 ) typeCheck( this, values );\n\n this._previousAttributes = this.attributes = new this.Attributes( this, values, options );\n\n this.initialize( a_values, a_options );\n\n if( this._localEvents ) this._localEvents.subscribe( this, this );\n }\n\n // Initialization callback, to be overriden by the subclasses \n initialize( values?, options? ){}\n\n // Deeply clone record, optionally setting new owner.\n clone( options : CloneOptions = {} ) : this {\n const copy : this = new (this.constructor)( this.attributes, { clone : true } );\n \n if( options.pinStore ) copy._defaultStore = this.getStore();\n\n return copy;\n }\n\n // Deprecated, every clone is the deep one now.\n deepClone() : this { return this.clone() };\n\n // Validate attributes.\n _validateNested( errors : ChildrenErrors ) : number {\n var length = 0;\n\n this.forEachAttr( this.attributes, ( value, name, attribute ) => {\n const error = attribute.validate( this, value, name );\n\n if( error ){\n errors[ name ] = error;\n length++;\n }\n } );\n\n return length;\n }\n\n // Get attribute by key\n get( key : string ) : any {\n return this[ key ];\n }\n\n /**\n * Serialization control\n */\n\n // Default record-level serializer, to be overriden by subclasses \n toJSON( options? : object ) : any {\n const json = {};\n\n this.forEachAttr( this.attributes, ( value, key : string, { toJSON } ) =>{\n // If attribute serialization is not disabled, and its value is not undefined...\n if( value !== void 0 ){\n // ...serialize it according to its spec.\n const asJson = toJSON.call( this, value, key, options );\n\n // ...skipping undefined values. Such an attributes are excluded.\n if( asJson !== void 0 ) json[ key ] = asJson; \n }\n });\n\n return json;\n }\n \n // Default record-level parser, to be overriden by the subclasses.\n parse( data, options? : TransactionOptions ){\n return data;\n }\n\n // DEPRECATED: Attributes-level parse. Is moved to attribute descriptors.\n _parse( data ){ return data; }\n\n /**\n * Transactional control\n */\n\n deepSet( name : string, value : any, options? ){\n // Operation might involve series of nested object updates, thus it's wrapped in transaction.\n this.transaction( () => {\n const path = name.split( '.' ),\n l = path.length - 1,\n attr = path[ l ];\n\n let model = this;\n\n // Locate the model, traversing the path.\n for( let i = 0; i < l; i++ ){\n const key = path[ i ];\n\n // There might be collections in path, so use `get`.\n let next = model.get ? model.get( key ) : model[ key ];\n\n // Create models, if they are not exist.\n if( !next ){\n const attrSpecs = model._attributes;\n if( attrSpecs ){\n // If current object is model, create default attribute\n var newModel = attrSpecs[ key ].create();\n\n // If created object is model, nullify attributes when requested\n if( options && options.nullify && newModel._attributes ){\n newModel.clear( options );\n }\n\n model[ key ] = next = newModel;\n }\n // Silently fail in other case.\n else return;\n }\n \n model = next;\n }\n\n // Set model attribute.\n if( model.set ){\n model.set({ [ attr ] : value }, options );\n }\n else{\n model[ attr ] = value;\n }\n });\n\n return this;\n }\n \n // Returns owner without the key (usually it's collection)\n get collection() : any {\n return this._ownerKey ? null : this._owner;\n }\n\n // Dispose object and all childrens\n dispose(){\n if( this._disposed ) return;\n \n this.forEachAttr( this.attributes, ( value, key, attribute ) => {\n attribute.dispose( this, value );\n });\n\n super.dispose();\n }\n\n _log( level : tools.LogLevel, text : string, props : object ) : void {\n tools.log( level, '[Record] ' + text, {\n 'Record' : this,\n 'Attributes definition:' : this._attributes,\n ...props\n });\n }\n\n getClassName() : string {\n return super.getClassName() || 'Record';\n }\n\n // Dummies to \n _createTransaction( values : object, options : TransactionOptions ) : Transaction { return void 0; }\n // Simulate attribute change \n forceAttributeChange : ( key : string, options : TransactionOptions ) => void\n _onChildrenChange : ( child : Transactional, options : TransactionOptions ) => void\n};\n\nassign( Record.prototype, UpdateRecordMixin, IORecordMixin );\n\n/***********************************************\n * Helper functions\n */\n\nclass BaseRecordAttributes {\n id : string | number\n\n constructor( record : Record, x : AttributesValues, options : TransactionOptions ) {\n this.id = x.id;\n }\n}\n\nRecord.prototype.Attributes = BaseRecordAttributes;\n\nclass BaseRecordAttributesCopy {\n id : string | number\n\n constructor( x : AttributesValues ) {\n this.id = x.id;\n }\n}\n\nRecord.prototype.AttributesCopy = BaseRecordAttributesCopy;\n\nconst IdAttribute = AnyType.create({ value : void 0 }, 'id' );\nRecord.prototype._attributes = { id : IdAttribute };\nRecord.prototype._attributesArray = [ IdAttribute ];\nRecord._attribute = AggregatedType;\n\nimport { shouldBeAnObject } from './attributes'\n\nfunction typeCheck( record : Record, values : object ){\n if( shouldBeAnObject( record, values ) ){\n const { _attributes } = record;\n let unknown : string[];\n\n for( let name in values ){\n if( !_attributes[ name ] ){\n unknown || ( unknown = [] );\n unknown.push( `'${ name }'` );\n }\n }\n\n if( unknown ){\n record._log( 'warn', `undefined attributes ${ unknown.join(', ')} are ignored.`, { values } );\n }\n }\n}","import { Record, RecordDefinition } from './record'\nimport { Mixable, tools, predefine, define, MixinsState } from '../object-plus'\nimport compile, { ChainableAttributeSpec } from './attributes'\nimport { Transactional } from '../transactions'\n\nimport { createSharedTypeSpec, AggregatedType, MSDateType, TimestampType, NumericType, SharedType } from './attributes'\n\nexport * from './attributes'\nexport { Record }\n\nconst { assign, defaults, omit, getBaseClass } = tools;\n\nRecord.onExtend = function( this : typeof Record, BaseClass : typeof Record ){\n Transactional.onExtend.call( this, BaseClass );\n\n // Create the default collection\n const Class = this;\n\n @predefine class DefaultCollection extends BaseClass.Collection {\n static model = Class;\n }\n\n this.DefaultCollection = DefaultCollection;\n\n // If there are no collection defined in statics, use the default collection.\n // It will appear in onDefine's definition, overriding all other settings.\n if( Class.Collection === BaseClass.Collection ){\n this.Collection = DefaultCollection;\n }\n\n // Create Class.shared modifier\n createSharedTypeSpec( this, SharedType );\n}\n\nRecord.onDefine = function( definition : RecordDefinition, BaseClass : typeof Record ){\n const baseProto : Record = BaseClass.prototype;\n\n // Compile attributes spec, creating definition mixin.\n const { properties, _localEvents, ...dynamicMixin } = compile( this.attributes = getAttributes( definition ), baseProto._attributes );\n assign( this.prototype, dynamicMixin );\n \n definition.properties = defaults( definition.properties || {}, properties );\n definition._localEvents = _localEvents;\n \n Transactional.onDefine.call( this, definition, BaseClass );\n\n // Finalize the definition of the default collection.\n this.DefaultCollection.define( definition.collection || {} );\n\n // assign collection from the definition.\n this.Collection = definition.Collection;\n this.Collection.prototype.model = this;\n\n if( definition.endpoint ) this.Collection.prototype._endpoint = definition.endpoint; \n}\n\nRecord._attribute = AggregatedType;\ncreateSharedTypeSpec( Record, SharedType );\n\nfunction getAttributes({ defaults, attributes, idAttribute } : RecordDefinition ) {\n const definition = attributes || defaults || {};\n \n // If there is an undeclared idAttribute, add its definition as untyped generic attribute.\n if( idAttribute && !( idAttribute in definition ) ){\n definition[ idAttribute ] = void 0;\n }\n\n return definition;\n}\n\ndeclare var Reflect;\n\nexport function attr( proto : object, attrName : string ) : void;\nexport function attr( spec : any ) : PropertyDecorator;\nexport function attr( proto, attrName? : string ) : any {\n if( attrName ){\n // Called without the spec. Extract the type.\n if( typeof Reflect !== 'undefined' && Reflect.getMetadata ){\n Reflect\n .getMetadata( \"design:type\", proto, attrName )\n .asProp( proto, attrName );\n }\n else{\n proto._log( 'error', 'Add import \"reflect-metadata\"; as the first line of your app.' );\n }\n }\n else{\n return ChainableAttributeSpec.from( proto ).asProp;\n }\n}\n\nexport function prop( spec ) : any {\n return spec.asProp;\n}","import { Record } from '../record'\nimport { Owner, Transaction, ItemsBehavior,\n TransactionOptions, Transactional, transactionApi } from '../transactions'\n\nimport { eventsApi, tools } from '../object-plus'\n\nconst { EventMap, trigger2, trigger3, on, off } = eventsApi,\n { commit, markAsDirty } = transactionApi,\n _aquire = transactionApi.aquire, _free = transactionApi.free;\n\n/** @private */\nexport interface CollectionCore extends Transactional, Owner {\n _byId : IdIndex\n models : Record[]\n model : typeof Record\n idAttribute : string // TODO: Refactor inconsistent idAttribute usage\n _comparator : Comparator\n get( objOrId : string | Record | Object ) : Record \n _itemEvents? : eventsApi.EventMap\n _shared : number\n _aggregationError : Record[]\n\n _log( level : string, text : string, value : any ) : void\n}\n\n// Collection's manipulation methods elements\nexport type Elements = ( Object | Record )[];\n\nexport interface CollectionOptions extends TransactionOptions {\n sort? : boolean\n}\n\nexport type Comparator = ( a : Record, b : Record ) => number; \n\n/** @private */\nexport function dispose( collection : CollectionCore ) : Record[]{\n const { models } = collection;\n\n collection.models = [];\n collection._byId = {};\n\n freeAll( collection, models );\n return models;\n}\n\n/** @private */\nexport function convertAndAquire( collection : CollectionCore, attrs : {} | Record, options : CollectionOptions ){\n const { model } = collection;\n \n let record : Record;\n\n if( collection._shared ){\n record = attrs instanceof model ? attrs : model.create( attrs, options );\n\n if( collection._shared & ItemsBehavior.listen ){\n on( record, record._changeEventName, collection._onChildrenChange, collection );\n }\n }\n else{\n record = attrs instanceof model ? ( options.merge ? attrs.clone() : attrs ) : model.create( attrs, options );\n\n if( !_aquire( collection, record ) ){\n const errors = collection._aggregationError || ( collection._aggregationError = [] );\n errors.push( record );\n }\n } \n\n // Subscribe for events...\n const { _itemEvents } = collection;\n _itemEvents && _itemEvents.subscribe( collection, record );\n\n return record;\n}\n\n/** @private */\nexport function free( owner : CollectionCore, child : Record, unset? : boolean ) : void {\n if( owner._shared ){\n if( owner._shared & ItemsBehavior.listen ){\n off( child, child._changeEventName, owner._onChildrenChange, owner );\n }\n }\n else{\n _free( owner, child );\n unset || child.dispose();\n }\n\n const { _itemEvents } = owner;\n _itemEvents && _itemEvents.unsubscribe( owner, child );\n}\n\n/** @private */\nexport function freeAll( collection : CollectionCore, children : Record[] ) : Record[] {\n for( let child of children ){\n free( collection, child );\n }\n\n return children;\n}\n\n/**\n * Silently sort collection, if its required. Returns true if sort happened.\n * @private\n */ \nexport function sortElements( collection : CollectionCore, options : CollectionOptions ) : boolean {\n let { _comparator } = collection;\n if( _comparator && options.sort !== false ){\n collection.models.sort( _comparator );\n return true;\n }\n\n return false;\n}\n\n/**********************************\n * Collection Index\n * @private \n */\nexport interface IdIndex {\n [ id : string ] : Record\n}\n\n/** @private Add record */ \nexport function addIndex( index : IdIndex, model : Record ) : void {\n index[ model.cid ] = model;\n var id = model.id;\n \n if( id || id === 0 ){\n index[ id ] = model;\n }\n}\n\n/** @private Remove record */ \nexport function removeIndex( index : IdIndex, model : Record ) : void {\n delete index[ model.cid ];\n var id = model.id;\n if( id || id === 0 ){\n delete index[ id ];\n }\n}\n\nexport function updateIndex( index : IdIndex, model : Record ){\n delete index[ model.previous( model.idAttribute ) ];\n\n const { id } = model;\n id == null || ( index[ id ] = model );\n}\n\n/***\n * In Collections, transactions appears only when\n * add remove or change events might be emitted.\n * reset doesn't require transaction.\n * \n * Transaction holds information regarding events, and knows how to emit them.\n * \n * Two major optimization cases.\n * 1) Population of an empty collection\n * 2) Update of the collection (no or little changes) - it's crucial to reject empty transactions.\n */\n\n\n// Transaction class. Implements two-phase transactions on object's tree.\n/** @private */ \nexport class CollectionTransaction implements Transaction {\n // open transaction\n constructor( public object : CollectionCore,\n public isRoot : boolean,\n public added : Record[],\n public removed : Record[],\n public nested : Transaction[],\n public sorted : boolean ){}\n\n // commit transaction\n commit( initiator? : Transactional ){\n const { nested, object } = this,\n { _isDirty } = object;\n\n // Commit all nested transactions...\n for( let transaction of nested ){\n transaction.commit( object );\n }\n\n if( object._aggregationError ){\n logAggregationError( object );\n }\n\n // Just trigger 'change' on collection, it must be already triggered for models during nested commits.\n // ??? TODO: do it in nested transactions loop? This way appears to be more correct. \n for( let transaction of nested ){\n trigger2( object, 'change', transaction.object, _isDirty );\n }\n\n // Notify listeners on attribute changes...\n const { added, removed } = this;\n\n // Trigger `add` events for both model and collection.\n for( let record of added ){\n trigger3( record, 'add', record, object, _isDirty );\n trigger3( object, 'add', record, object, _isDirty );\n }\n\n // Trigger `remove` events for both model and collection.\n for( let record of removed ){\n trigger3( record, 'remove', record, object, _isDirty );\n trigger3( object, 'remove', record, object, _isDirty );\n }\n\n if( this.sorted ){\n trigger2( object, 'sort', object, _isDirty );\n }\n\n if( added.length || removed.length ){\n trigger2( object, 'update', object, _isDirty );\n }\n\n this.isRoot && commit( object, initiator );\n }\n}\n\nexport function logAggregationError( collection : CollectionCore ){\n collection._log( 'error', 'added records already have an owner', collection._aggregationError );\n collection._aggregationError = void 0;\n}","import { Transaction, transactionApi } from '../transactions'\nimport { CollectionTransaction, logAggregationError, sortElements, convertAndAquire, free, CollectionOptions, addIndex, updateIndex, CollectionCore } from './commons'\nimport { Record } from '../record'\n\nconst { begin, commit, markAsDirty } = transactionApi;\n\nexport interface AddOptions extends CollectionOptions {\n at? : number \n}\n\n/** @private */\nexport function addTransaction( collection : CollectionCore, items : any[], options : AddOptions, merge? : boolean ){\n const isRoot = begin( collection ),\n nested : Transaction[]= [];\n\n var added = appendElements( collection, items, nested, options, merge );\n\n if( added.length || nested.length ){\n let needSort = sortOrMoveElements( collection, added, options );\n if( markAsDirty( collection, options ) ){\n return new CollectionTransaction( collection, isRoot, added, [], nested, needSort );\n }\n\n if( collection._aggregationError ) logAggregationError( collection );\n }\n\n // No changes...\n isRoot && commit( collection );\n};\n\n// Handle sort or insert at options for add operation. Reurns true if sort happened.\n/** @private */ \nfunction sortOrMoveElements( collection : CollectionCore, added : Record[], options : AddOptions ) : boolean {\n let at = options.at;\n\n // if `at` option is given, it overrides sorting option...\n if( at != null ){\n // Take an original collection's length. \n const length = collection.models.length - added.length;\n\n // Crazy Backbone rules about `at` index. I don't know what that guys smoke.\n at = Number( at );\n if( at < 0 ) at += length + 1;\n if( at < 0 ) at = 0;\n if( at > length ) at = length;\n\n // Move added elements to desired position. In place.\n moveElements( collection.models, at, added );\n return false;\n }\n\n return sortElements( collection, options );\n}\n\n/** @private */\nfunction moveElements( source : any[], at : number, added : any[] ) : void {\n for( var j = source.length - 1, i = j - added.length; i >= at; i--, j-- ){\n source[ j ] = source[ i ];\n }\n\n for( i = 0, j = at; i < added.length; i++, j++ ){\n source[ j ] = added[ i ];\n }\n}\n\n// append data to model and index\n/** @private */\nfunction appendElements( collection : CollectionCore, a_items : any[], nested : Transaction[], a_options : AddOptions, forceMerge : boolean ){\n var { _byId, models } = collection,\n merge = ( forceMerge || a_options.merge ) && !collection._shared,\n parse = a_options.parse,\n idAttribute = collection.model.prototype.idAttribute,\n prevLength = models.length;\n\n for( const item of a_items ){\n let model = item ? _byId[ item[ idAttribute ] ] || _byId[ item.cid ] : null;\n\n if( model ){\n if( merge && item !== model ){\n var attrs = item.attributes || item;\n const transaction = model._createTransaction( attrs, a_options );\n transaction && nested.push( transaction );\n\n if( model.hasChanged( idAttribute ) ){\n updateIndex( _byId, model );\n }\n }\n }\n else{\n model = convertAndAquire( collection, item, a_options );\n models.push( model );\n addIndex( _byId, model );\n }\n }\n\n return models.slice( prevLength );\n}\n","import { Transaction, transactionApi } from '../transactions'\nimport { CollectionTransaction, logAggregationError, IdIndex, convertAndAquire, free, sortElements, CollectionOptions, addIndex, CollectionCore, Elements, freeAll } from './commons'\nimport { Record } from '../record'\n\nconst { begin, commit, markAsDirty } = transactionApi;\n\n/** @private */\nconst silentOptions = { silent : true };\n\n/** @private */\nexport function emptySetTransaction( collection : CollectionCore, items : Elements, options : CollectionOptions, silent? : boolean ){\n const isRoot = begin( collection );\n\n const added = _reallocateEmpty( collection, items, options );\n\n if( added.length ){\n const needSort = sortElements( collection, options );\n\n if( markAsDirty( collection, silent ? silentOptions : options ) ){\n // 'added' is the reference to this.models. Need to copy it.\n return new CollectionTransaction( collection, isRoot, added.slice(), [], [], needSort );\n }\n\n if( collection._aggregationError ) logAggregationError( collection );\n }\n\n // No changes...\n isRoot && commit( collection );\n};\n\n/** @private */\nexport function setTransaction( collection, items, options ){\n const isRoot = begin( collection ),\n nested = [];\n\n var previous = collection.models,\n added = _reallocate( collection, items, nested, options );\n\n const reusedCount = collection.models.length - added.length,\n removed = reusedCount < previous.length ? (\n reusedCount ? _garbageCollect( collection, previous ) :\n freeAll( collection, previous )\n ) : []; \n \n const addedOrChanged = nested.length || added.length,\n // As we are reallocating models array, it needs to be sorted even if there are no changes.\n sorted = ( sortElements( collection, options ) && addedOrChanged ) || added.length || options.sorted;\n\n if( addedOrChanged || removed.length || sorted ){\n if( markAsDirty( collection, options ) ){ \n return new CollectionTransaction( collection, isRoot, added, removed, nested, sorted );\n }\n\n if( collection._aggregationError ) logAggregationError( collection );\n }\n\n isRoot && commit( collection );\n};\n\n// Remove references to all previous elements, which are not present in collection.\n// Returns an array with removed elements.\n/** @private */\nfunction _garbageCollect( collection : CollectionCore, previous : Record[] ) : Record[]{\n const { _byId } = collection,\n removed = [];\n\n // Filter out removed models and remove them from the index...\n for( let record of previous ){\n if( !_byId[ record.cid ] ){\n removed.push( record );\n free( collection, record );\n }\n }\n\n return removed;\n}\n\n// reallocate model and index\n/** @private */\nfunction _reallocate( collection : CollectionCore, source : any[], nested : Transaction[], options ){\n var models = Array( source.length ),\n _byId : IdIndex = {},\n merge = ( options.merge == null ? true : options.merge ) && !collection._shared,\n _prevById = collection._byId,\n prevModels = collection.models, \n idAttribute = collection.model.prototype.idAttribute,\n toAdd = [],\n orderKept = true;\n\n // for each item in source set...\n for( var i = 0, j = 0; i < source.length; i++ ){\n var item = source[ i ],\n model : Record = null;\n\n if( item ){\n var id = item[ idAttribute ],\n cid = item.cid;\n\n if( _byId[ id ] || _byId[ cid ] ) continue;\n\n model = _prevById[ id ] || _prevById[ cid ];\n }\n\n if( model ){\n if( merge && item !== model ){\n if( orderKept && prevModels[ j ] !== model ) orderKept = false;\n\n var attrs = item.attributes || item;\n const transaction = model._createTransaction( attrs, options );\n transaction && nested.push( transaction );\n }\n }\n else{\n model = convertAndAquire( collection, item, options );\n toAdd.push( model );\n }\n\n models[ j++ ] = model;\n addIndex( _byId, model );\n }\n\n models.length = j;\n collection.models = models;\n collection._byId = _byId;\n\n if( !orderKept ) options.sorted = true;\n\n return toAdd;\n}\n\n/** @private */\nfunction _reallocateEmpty( self, source, options ){\n var len = source ? source.length : 0,\n models = Array( len ),\n _byId : IdIndex = {},\n idAttribute = self.model.prototype.idAttribute;\n\n for( var i = 0, j = 0; i < len; i++ ){\n var src = source[ i ];\n\n if( src && ( _byId[ src[ idAttribute ] ] || _byId[ src.cid ] ) ){\n continue;\n }\n\n var model = convertAndAquire( self, src, options );\n models[ j++ ] = model;\n addIndex( _byId, model );\n }\n\n models.length = j;\n self._byId = _byId;\n\n return self.models = models;\n}","/*************\n * Remove items from collections.\n * \n * Cannot be a part of two-phase transaction on object tree.\n * Can be executed in the scope of ad-hoc transaction or from the trigger, though.\n *\n * Implemented with low-level API. \n * Most frequent operation - single element remove. Thus, it have the fast-path.\n */\n\nimport { Record } from '../record'\nimport { free, CollectionCore, CollectionTransaction, removeIndex } from './commons'\nimport { eventsApi } from '../object-plus'\nimport { TransactionOptions, transactionApi } from '../transactions' \n\nconst { trigger2, trigger3 } = eventsApi,\n { markAsDirty, begin, commit } = transactionApi;\n\n/** @private */\nexport function removeOne( collection : CollectionCore, el : Record | {} | string, options : TransactionOptions ) : Record {\n var model : Record = collection.get( el );\n\n if( model ){\n const isRoot = begin( collection ),\n models = collection.models;\n\n // Remove model form the collection. \n models.splice( models.indexOf( model ), 1 );\n removeIndex( collection._byId, model );\n \n // Mark transaction as dirty. \n const notify = markAsDirty( collection, options );\n\n // Send out events.\n if( notify ){\n trigger3( model, 'remove', model, collection, options );\n trigger3( collection, 'remove', model, collection, options );\n } \n\n free( collection, model, options.unset );\n\n notify && trigger2( collection, 'update', collection, options );\n\n // Commit transaction.\n isRoot && commit( collection );\n\n return model;\n }\n};\n\n/** Optimized for removing many elements\n * 1. Remove elements from the index, checking for duplicates\n * 2. Create new models array matching index\n * 3. Send notifications and remove references\n */\n\n/** @private */\nexport function removeMany( collection : CollectionCore, toRemove : any[], options ){\n const removed = _removeFromIndex( collection, toRemove, options.unset );\n if( removed.length ){\n const isRoot = begin( collection );\n\n _reallocate( collection, removed.length );\n\n if( markAsDirty( collection, options ) ){\n const transaction = new CollectionTransaction( collection, isRoot, [], removed, [], false );\n transaction.commit();\n }\n else{\n // Commit transaction.\n isRoot && commit( collection );\n }\n }\n\n return removed;\n};\n\n// remove models from the index...\n/** @private */\nfunction _removeFromIndex( collection, toRemove, unset : boolean ){\n var removed = Array( toRemove.length ),\n _byId = collection._byId;\n\n for( var i = 0, j = 0; i < toRemove.length; i++ ){\n var model = collection.get( toRemove[ i ] );\n if( model ){\n removed[ j++ ] = model;\n removeIndex( _byId, model );\n free( collection, model, unset );\n }\n }\n\n removed.length = j;\n\n return removed;\n}\n\n// Allocate new models array removing models not present in the index.\n/** @private */\nfunction _reallocate( collection, removed ){\n var prev = collection.models,\n models = collection.models = Array( prev.length - removed ),\n _byId = collection._byId;\n\n for( var i = 0, j = 0; i < prev.length; i++ ){\n var model = prev[ i ];\n\n if( _byId[ model.cid ] ){\n models[ j++ ] = model;\n }\n }\n\n models.length = j;\n}","import { define, tools, eventsApi, EventMap, definitions, mixinRules, EventsDefinition, Mixable } from '../object-plus'\nimport { ItemsBehavior, transactionApi, Transactional, CloneOptions, Transaction, TransactionOptions, TransactionalDefinition, Owner } from '../transactions'\nimport { Record, SharedType, AggregatedType, createSharedTypeSpec } from '../record'\n\nimport { IdIndex, free, sortElements, dispose, Elements, CollectionCore, addIndex, removeIndex, updateIndex, Comparator, CollectionTransaction } from './commons'\nimport { addTransaction, AddOptions } from './add'\nimport { setTransaction, emptySetTransaction } from './set'\nimport { removeOne, removeMany } from './remove'\nimport { IOPromise, startIO } from '../io-tools'\n\nconst { trigger2, on, off } = eventsApi,\n { begin, commit, markAsDirty } = transactionApi,\n { omit, log, assign, defaults, assignToClassProto } = tools;\n\nlet _count = 0;\n\nexport type GenericComparator = string | ( ( x : Record ) => number ) | ( ( a : Record, b : Record ) => number ); \n\nexport interface CollectionOptions extends TransactionOptions {\n comparator? : GenericComparator\n model? : typeof Record\n}\n\nexport type Predicate = ( val : R, key : number ) => boolean | object;\n\nexport interface CollectionDefinition extends TransactionalDefinition {\n model? : typeof Record,\n itemEvents? : EventsDefinition\n _itemEvents? : EventMap\n}\n\nconst slice = Array.prototype.slice;\n\nclass CollectionRefsType extends SharedType {\n static defaultValue = [];\n}\n\n@define({\n // Default client id prefix \n cidPrefix : 'c',\n model : Record,\n _changeEventName : 'changes',\n _aggregationError : null\n})\n@definitions({\n comparator : mixinRules.value,\n model : mixinRules.protoValue,\n itemEvents : mixinRules.merge\n})\nexport class Collection< R extends Record = Record> extends Transactional implements CollectionCore {\n _shared : number\n _aggregationError : R[]\n\n static Subset : typeof Collection\n static Refs : typeof Collection\n static _SubsetOf : typeof Collection\n \n createSubset( models : ElementsArg, options ){\n const SubsetOf = (this.constructor).subsetOf( this ).options.type,\n subset = new SubsetOf( models, options );\n \n subset.resolve( this );\n return subset;\n }\n\n static onExtend( BaseClass : typeof Transactional ){\n // Cached subset collection must not be inherited.\n const Ctor = this;\n this._SubsetOf = null;\n\n function RefsCollection( a, b, listen? ){\n Ctor.call( this, a, b, ItemsBehavior.share | ( listen ? ItemsBehavior.listen : 0 ) );\n }\n\n Mixable.mixins.populate( RefsCollection );\n \n RefsCollection.prototype = this.prototype;\n RefsCollection._attribute = CollectionRefsType;\n\n this.Refs = this.Subset = RefsCollection;\n\n Transactional.onExtend.call( this, BaseClass );\n createSharedTypeSpec( this, SharedType );\n }\n \n static onDefine( definition : CollectionDefinition, BaseClass : any ){\n if( definition.itemEvents ){\n const eventsMap = new EventMap( BaseClass.prototype._itemEvents );\n eventsMap.addEventsMap( definition.itemEvents );\n this.prototype._itemEvents = eventsMap;\n }\n\n if( definition.comparator !== void 0 ) this.prototype.comparator = definition.comparator;\n\n Transactional.onDefine.call( this, definition );\n }\n\n static subsetOf : ( collectionReference : any ) => any;\n \n _itemEvents : EventMap\n\n /***********************************\n * Core Members\n */\n // Array of the records\n models : R[]\n\n // Polymorphic accessor for aggregated attribute's canBeUpdated().\n get __inner_state__(){ return this.models; }\n\n // Index by id and cid\n _byId : { [ id : string ] : R }\n\n set comparator( x : GenericComparator ){\n let compare;\n\n switch( typeof x ){\n case 'string' :\n this._comparator = ( a, b ) => {\n const aa = a[ x ], bb = b[ x ];\n if( aa === bb ) return 0;\n return aa < bb ? -1 : + 1;\n } \n break;\n case 'function' :\n if( x.length === 1 ){\n this._comparator = ( a, b ) => {\n const aa = (x).call( this, a ), bb = (x).call( this, b );\n if( aa === bb ) return 0;\n return aa < bb ? -1 : + 1;\n }\n }\n else{\n this._comparator = ( a, b ) => (x).call( this, a, b );\n }\n break;\n \n default :\n this._comparator = null;\n }\n }\n \n // TODO: Improve typing\n getStore() : Transactional {\n return this._store || ( this._store = this._owner ? this._owner.getStore() : this._defaultStore );\n }\n\n _store : Transactional\n\n get comparator(){ return this._comparator; }\n _comparator : ( a : R, b : R ) => number\n\n _onChildrenChange( record : R, options : TransactionOptions = {}, initiator? : Transactional ){\n // Ignore updates from nested transactions.\n if( initiator === this ) return;\n\n const { idAttribute } = this;\n\n if( record.hasChanged( idAttribute ) ){\n updateIndex( this._byId, record );\n }\n\n const isRoot = begin( this );\n\n if( markAsDirty( this, options ) ){\n // Forward change event from the record.\n trigger2( this, 'change', record, options )\n }\n\n isRoot && commit( this );\n }\n\n get( objOrId : string | R | Object ) : R {\n if( objOrId == null ) return;\n\n if( typeof objOrId === 'object' ){\n const id = objOrId[ this.idAttribute ];\n return ( id !== void 0 && this._byId[ id ] ) || this._byId[ (objOrId).cid ];\n }\n else{\n return this._byId[ objOrId ];\n } \n }\n\n each( iteratee : ( val : R, key : number ) => void, context? : any ){\n const fun = bindContext( iteratee, context ),\n { models } = this;\n\n for( let i = 0; i < models.length; i++ ){\n fun( models[ i ], i ); \n }\n }\n\n forEach( iteratee : ( val : R, key? : number ) => void, context? : any ){\n return this.each( iteratee, context );\n }\n\n every( iteratee : Predicate, context? : any ) : boolean {\n const fun = toPredicateFunction( iteratee, context ),\n { models } = this;\n\n for( let i = 0; i < models.length; i++ ){\n if( !fun( models[ i ], i ) ) return false;\n }\n\n return true;\n }\n\n filter( iteratee : Predicate, context? : any ) : R[] {\n const fun = toPredicateFunction( iteratee, context ),\n { models } = this;\n\n return this.map( ( x, i ) => fun( x, i ) ? x : void 0 );\n }\n\n find( iteratee : Predicate, context? : any ) : R {\n const fun = toPredicateFunction( iteratee, context ),\n { models } = this;\n\n for( let i = 0; i < models.length; i++ ){\n if( fun( models[ i ], i ) ) return models[ i ];\n }\n\n return null;\n }\n\n some( iteratee : Predicate, context? : any ) : boolean {\n return Boolean( this.find( iteratee, context ) );\n }\n\n map< T >( iteratee : ( val : R, key : number ) => T, context? : any ) : T[]{\n const fun = bindContext( iteratee, context ),\n { models } = this,\n mapped = Array( models.length );\n\n let j = 0;\n\n for( let i = 0; i < models.length; i++ ){\n const x = fun( models[ i ], i );\n x === void 0 || ( mapped[ j++ ] = x ); \n }\n\n mapped.length = j;\n\n return mapped;\n }\n\n _validateNested( errors : {} ) : number {\n // Don't validate if not aggregated.\n if( this._shared ) return 0;\n\n let count = 0;\n\n this.each( record => {\n const error = record.validationError;\n if( error ){\n errors[ record.cid ] = error;\n count++;\n }\n });\n\n return count;\n }\n\n model : typeof Record\n\n // idAttribute extracted from the model type.\n idAttribute : string\n\n constructor( records? : ( R | {} )[], options : CollectionOptions = {}, shared? : number ){\n super( _count++ );\n this.models = [];\n this._byId = {};\n \n this.comparator = this.comparator;\n\n if( options.comparator !== void 0 ){\n this.comparator = options.comparator;\n options.comparator = void 0;\n }\n \n this.model = this.model;\n \n if( options.model ){\n this.model = options.model;\n options.model = void 0;\n }\n\n this.idAttribute = this.model.prototype.idAttribute; //TODO: Remove?\n\n this._shared = shared || 0;\n\n if( records ){\n const elements = toElements( this, records, options );\n emptySetTransaction( this, elements, options, true );\n }\n\n this.initialize.apply( this, arguments );\n\n if( this._localEvents ) this._localEvents.subscribe( this, this );\n }\n\n initialize(){}\n\n get length() : number { return this.models.length; }\n first() : R { return this.models[ 0 ]; }\n last() : R { return this.models[ this.models.length - 1 ]; }\n at( a_index : number ) : R {\n const index = a_index < 0 ? a_index + this.models.length : a_index; \n return this.models[ index ];\n }\n\n // Deeply clone collection, optionally setting new owner.\n clone( options : CloneOptions = {} ) : this {\n const models = this._shared & ItemsBehavior.share ? this.models : this.map( model => model.clone() ),\n copy : this = new (this.constructor)( models, { model : this.model, comparator : this.comparator }, this._shared );\n \n if( options.pinStore ) copy._defaultStore = this.getStore();\n \n return copy;\n }\n\n toJSON( options? : object ) : any {\n return this.models.map( model => model.toJSON( options ) );\n }\n\n // Apply bulk in-place object update in scope of ad-hoc transaction \n set( elements : ElementsArg = [], options : TransactionOptions = {} ) : this {\n if( (options).add !== void 0 ){\n this._log( 'warn', \"Collection.set doesn't support 'add' option, behaving as if options.add === true.\", options );\n }\n\n // Handle reset option here - no way it will be populated from the top as nested transaction.\n if( options.reset ){\n this.reset( elements, options )\n }\n else{\n const transaction = this._createTransaction( elements, options );\n transaction && transaction.commit();\n } \n\n return this; \n }\n\n /**\n * Enable or disable live updates.\n * \n * `true` enables full collection synchronization.\n * `false` cancel live updates.\n * `json => true | false` - filter updates\n */\n liveUpdates( enabled : LiveUpdatesOption ) : IOPromise {\n if( enabled ){\n this.liveUpdates( false );\n\n const filter = typeof enabled === 'function' ? enabled : () => true;\n\n this._liveUpdates = {\n updated : json => {\n filter( json ) && this.add( json, { parse : true, merge : true } );\n },\n\n removed : id => this.remove( id )\n };\n\n return this.getEndpoint().subscribe( this._liveUpdates, this ).then( () => this );\n }\n else{\n if( this._liveUpdates ){\n this.getEndpoint().unsubscribe( this._liveUpdates, this );\n this._liveUpdates = null;\n }\n }\n }\n\n _liveUpdates : object\n\n fetch( a_options : { liveUpdates? : LiveUpdatesOption } & TransactionOptions = {} ) : IOPromise {\n const options = { parse : true, ...a_options },\n endpoint = this.getEndpoint();\n\n return startIO(\n this,\n endpoint.list( options, this ),\n options,\n\n json => {\n let result : any = this.set( json, { parse : true, ...options } as TransactionOptions );\n \n if( options.liveUpdates ){\n result = this.liveUpdates( options.liveUpdates );\n }\n\n return result;\n }\n );\n }\n\n dispose() : void {\n if( this._disposed ) return;\n\n const aggregated = !this._shared;\n\n for( let record of this.models ){\n free( this, record );\n\n if( aggregated ) record.dispose();\n }\n\n this.liveUpdates( false );\n\n super.dispose();\n }\n\n reset( a_elements? : ElementsArg, options : TransactionOptions = {} ) : R[] {\n const isRoot = begin( this ),\n previousModels = this.models;\n\n // Make all changes required, but be silent.\n if( a_elements ){ \n emptySetTransaction( this, toElements( this, a_elements, options ), options, true );\n }\n else{\n this._byId = {};\n this.models = [];\n }\n\n markAsDirty( this, options );\n\n options.silent || trigger2( this, 'reset', this, defaults( { previousModels : previousModels }, options ) );\n\n // Dispose models which are not in the updated collection.\n const { _byId } = this;\n \n for( let toDispose of previousModels ){\n _byId[ toDispose.cid ] || free( this, toDispose );\n }\n\n isRoot && commit( this );\n return this.models;\n }\n\n // Add elements to collection.\n add( a_elements : ElementsArg , options : AddOptions = {} ){\n const elements = toElements( this, a_elements, options ),\n transaction = this.models.length ?\n addTransaction( this, elements, options ) :\n emptySetTransaction( this, elements, options );\n\n if( transaction ){\n transaction.commit();\n return transaction.added;\n }\n }\n\n // Remove elements. \n remove( recordsOrIds : any, options : CollectionOptions = {} ) : R[] | R {\n if( recordsOrIds ){\n return Array.isArray( recordsOrIds ) ?\n removeMany( this, recordsOrIds, options ) as R[]:\n removeOne( this, recordsOrIds, options ) as R;\n }\n\n return [];\n }\n\n // Apply bulk object update without any notifications, and return open transaction.\n // Used internally to implement two-phase commit. \n _createTransaction( a_elements : ElementsArg, options : TransactionOptions = {} ) : CollectionTransaction | void {\n const elements = toElements( this, a_elements, options );\n\n if( this.models.length ){\n return options.remove === false ?\n addTransaction( this, elements, options, true ) :\n setTransaction( this, elements, options );\n }\n else{\n return emptySetTransaction( this, elements, options );\n }\n }\n\n static _attribute = AggregatedType;\n\n /***********************************\n * Collection manipulation methods\n */\n\n pluck( key : keyof R ) : any[] {\n return this.models.map( model => model[ key ] );\n }\n\n sort( options : TransactionOptions = {} ) : this {\n if( sortElements( this, options ) ){\n const isRoot = begin( this );\n \n if( markAsDirty( this, options ) ){\n trigger2( this, 'sort', this, options );\n }\n\n isRoot && commit( this );\n }\n\n return this;\n }\n\n // Add a model to the end of the collection.\n push(model : ElementsArg, options : CollectionOptions ) {\n return this.add(model, assign({at: this.length}, options));\n }\n\n // Remove a model from the end of the collection.\n pop( options : CollectionOptions ) : R {\n var model = this.at(this.length - 1);\n this.remove(model, { unset : true, ...options });\n return model;\n }\n\n // Remove and return given model.\n // TODO: do not dispose the model for aggregated collection.\n unset( modelOrId : R | string, options? ) : R {\n const value = this.get( modelOrId );\n this.remove( modelOrId, { unset : true, ...options } );\n return value;\n }\n\n // Add a model to the beginning of the collection.\n unshift(model : ElementsArg, options : CollectionOptions ) {\n return this.add(model, assign({at: 0}, options));\n }\n\n // Remove a model from the beginning of the collection.\n shift( options? : CollectionOptions ) : R {\n var model = this.at(0);\n this.remove( model, { unset : true, ...options } );\n return model;\n }\n\n // Slice out a sub-array of models from the collection.\n slice() : R[] {\n return slice.apply(this.models, arguments);\n }\n\n indexOf( modelOrId : any ) : number {\n const record = this.get( modelOrId );\n return this.models.indexOf( record );\n }\n\n modelId( attrs : {} ) : any {\n return attrs[ this.model.prototype.idAttribute ];\n }\n\n // Toggle model in collection.\n toggle( model : R, a_next? : boolean ) : boolean {\n var prev = Boolean( this.get( model ) ),\n next = a_next === void 0 ? !prev : Boolean( a_next );\n\n if( prev !== next ){\n if( prev ){\n this.remove( model );\n }\n else{\n this.add( model );\n }\n }\n\n return next;\n }\n\n _log( level : tools.LogLevel, text : string, value ) : void {\n tools.log( level, `[Collection Update] ${ this.model.prototype.getClassName() }.${ this.getClassName() }: ` + text, {\n Argument : value,\n 'Attributes spec' : this.model.prototype._attributes\n });\n }\n\n getClassName() : string {\n return super.getClassName() || 'Collection';\n }\n}\n\nexport type LiveUpdatesOption = boolean | ( ( x : any ) => boolean );\n\nexport type ElementsArg = Object | Record | Object[] | Record[];\n\n// TODO: make is safe for parse to return null (?)\nfunction toElements( collection : Collection, elements : ElementsArg, options : CollectionOptions ) : Elements {\n const parsed = options.parse ? collection.parse( elements, options ) : elements; \n return Array.isArray( parsed ) ? parsed : [ parsed ];\n}\n\ncreateSharedTypeSpec( Collection, SharedType );\n\nRecord.Collection = Collection;\n\nfunction bindContext( fun : Function, context? : any ){\n return context !== void 0 ? ( v, k ) => fun.call( context, v, k ) : fun;\n}\n\nfunction toPredicateFunction( iteratee : Predicate, context : any ){\n if( typeof iteratee === 'object' ){\n // Wrap object to the predicate...\n return x => {\n for( let key in iteratee as any ){\n if( iteratee[ key ] !== x[ key ] )\n return false;\n }\n\n return true;\n }\n }\n \n return bindContext( iteratee, context );\n\n}","import { Collection } from '../collection'\nimport { Record } from '../record'\nimport { CompiledReference } from '../traversable'\n\nexport type CollectionReference = ( () => Collection ) | Collection | string; \n\n/** @private */\nexport function parseReference( collectionRef : CollectionReference ) : ( root : Record ) => Collection {\n switch( typeof collectionRef ){\n case 'function' :\n return root => (collectionRef).call( root );\n case 'object' :\n return () => collectionRef;\n case 'string' :\n const { resolve } = new CompiledReference( collectionRef );\n return resolve;\n }\n}","import { AnyType, AttributeOptions } from '../record'\nimport { parseReference, CollectionReference } from './commons'\nimport { Collection } from '../collection'\nimport { Record } from '../record'\n\nimport { ChainableAttributeSpec } from '../record'\n\n/********\n * Reference to model by id.\n * \n * Untyped attribute. Holds model id, when unresolved. When resolved, is substituted\n * with a real model.\n * \n * No model changes are detected and counted as owner's change. That's intentional.\n */\n\n/** @private */\ntype RecordRefValue = Record | string;\n\n/** @private */\nclass RecordRefType extends AnyType {\n // It is always serialized as an id, whenever it's resolved or not. \n toJSON( value : RecordRefValue ){\n return value && typeof value === 'object' ? value.id : value;\n }\n\n // Wne \n clone( value : RecordRefValue ){\n return value && typeof value === 'object' ? value.id : value;\n }\n\n // Model refs by id are equal when their ids are equal.\n isChanged( a : RecordRefValue, b : RecordRefValue){\n var aId = a && ( (a).id == null ? a : (a).id ),\n bId = b && ( (b).id == null ? b : (b).id );\n\n return aId !== bId;\n }\n\n // Refs are always valid.\n validate( model, value, name ){}\n}\n\nRecord.from = function from( masterCollection : CollectionReference ) : ChainableAttributeSpec {\n const getMasterCollection = parseReference( masterCollection );\n\n const typeSpec = new ChainableAttributeSpec({\n value : null,\n _attribute : RecordRefType\n });\n \n return typeSpec\n .get( function( objOrId : RecordRefValue, name : string ) : Record {\n if( typeof objOrId === 'object' ) return objOrId;\n\n // So, we're dealing with an id reference. Resolve it.\n const collection = getMasterCollection( this );\n let record : Record = null;\n\n // If master collection exists and is not empty...\n if( collection && collection.length ){\n // Silently update attribute with record from this collection.\n record = collection.get( objOrId ) || null;\n this.attributes[ name ] = record;\n\n // Subscribe for events manually. delegateEvents won't be invoked.\n record && this._attributes[ name ].handleChange( record, null, this, {} );\n }\n\n return record;\n });\n};","import { Collection, CollectionOptions } from '../collection'\nimport { tools, eventsApi, define } from '../object-plus'\nimport { Record, AggregatedType } from '../record'\nimport { parseReference, CollectionReference } from './commons'\nimport { ChainableAttributeSpec } from '../record'\nimport { Transactional, ItemsBehavior, TransactionOptions, transactionApi } from '../transactions'\n\nconst { fastDefaults } = tools;\n\ntype RecordsIds = ( string | number )[];\n\nCollection.subsetOf = function subsetOf( masterCollection : CollectionReference ) : ChainableAttributeSpec {\n const SubsetOf = this._SubsetOf || ( this._SubsetOf = defineSubsetCollection( this ) ),\n getMasterCollection = parseReference( masterCollection ),\n typeSpec = new ChainableAttributeSpec({\n type : SubsetOf\n });\n\n return typeSpec.get(\n function( refs ){\n !refs || refs.resolvedWith || refs.resolve( getMasterCollection( this ) );\n return refs;\n }\n );\n};\n\nconst subsetOfBehavior = ItemsBehavior.share | ItemsBehavior.persistent;\n\nfunction defineSubsetCollection( CollectionConstructor : typeof Collection ) {\n @define class SubsetOfCollection extends CollectionConstructor {\n refs : any[];\n resolvedWith : Collection = null;\n\n _attribute : AggregatedType\n\n get __inner_state__(){ return this.refs || this.models; }\n\n constructor( recordsOrIds?, options? ){\n super( [], options, subsetOfBehavior );\n this.refs = toArray( recordsOrIds );\n }\n\n // Remove should work fine as it already accepts ids. Add won't...\n add( a_elements, options = {} ){\n const { resolvedWith } = this,\n toAdd = toArray( a_elements );\n \n if( resolvedWith ){\n // If the collection is resolved already, everything is simple.\n return super.add( resolveRefs( resolvedWith, toAdd ), options );\n }\n else{\n // Collection is not resolved yet. So, we prepare the delayed computation.\n if( toAdd.length ){\n const isRoot = transactionApi.begin( this );\n\n // Save elements to resolve in future...\n this.refs = this.refs ? this.refs.concat( toAdd ) : toAdd.slice();\n\n transactionApi.markAsDirty( this, options );\n\n // And throw the 'changes' event.\n isRoot && transactionApi.commit( this );\n }\n }\n }\n\n reset( a_elements?, options = {} ){\n const { resolvedWith } = this,\n elements = toArray( a_elements );\n \n return resolvedWith ?\n // Collection is resolved, so parse ids and forward the call to set.\n super.reset( resolveRefs( resolvedWith, elements ), options ) :\n // Collection is not resolved yet. So, we prepare the delayed computation.\n delaySet( this, elements, options ) || [];\n }\n\n _createTransaction( a_elements, options? ){\n const { resolvedWith } = this,\n elements = toArray( a_elements );\n \n return resolvedWith ?\n // Collection is resolved, so parse ids and forward the call to set.\n super._createTransaction( resolveRefs( resolvedWith, elements ), options ) :\n // Collection is not resolved yet. So, we prepare the delayed computation.\n delaySet( this, elements, options );\n }\n\n // Serialized as an array of model ids.\n toJSON() : RecordsIds {\n return this.refs ?\n this.refs.map( objOrId => objOrId.id || objOrId ) :\n this.models.map( model => model.id );\n }\n\n // Subset is always valid.\n _validateNested(){ return 0; }\n\n get length() : number {\n return this.models.length || ( this.refs ? this.refs.length : 0 );\n }\n\n // Must be shallow copied on clone.\n clone( owner? ){\n var Ctor = (this).constructor,\n copy = new Ctor( [], {\n model : this.model,\n comparator : this.comparator\n });\n\n if( this.resolvedWith ){\n // TODO: bug here. \n copy.resolvedWith = this.resolvedWith;\n copy.refs = null;\n copy.reset( this.models, { silent : true } );\n }\n else{\n copy.refs = this.refs.slice();\n }\n\n return copy;\n }\n\n // Clean up the custom parse method possibly defined in the base class.\n parse( raw : any ) : Record[] {\n return raw;\n }\n\n resolve( collection : Collection ) : this {\n if( collection && collection.length ){\n this.resolvedWith = collection;\n\n if( this.refs ){\n this.reset( this.refs, { silent : true } );\n this.refs = null;\n }\n }\n\n return this;\n }\n\n getModelIds() : RecordsIds { return this.toJSON(); }\n\n toggle( modelOrId : any, val : boolean ) : boolean {\n return super.toggle( this.resolvedWith.get( modelOrId ), val );\n }\n\n addAll() : Record[] {\n if( this.resolvedWith ){\n this.set( this.resolvedWith.models );\n return this.models;\n }\n\n throw new Error( \"Cannot add elemens because the subset collection is not resolved yet.\" );\n }\n\n toggleAll() : Record[] {\n return this.length ? this.reset() : this.addAll();\n }\n }\n\n // Clean up all custom item events to prevent memory leaks.\n SubsetOfCollection.prototype._itemEvents = void 0;\n\n return SubsetOfCollection;\n}\n\nfunction resolveRefs( master, elements ){\n const records = [];\n \n for( let el of elements ){\n const record = master.get( el );\n if( record ) records.push( record );\n }\n\n return records;\n}\n\nfunction delaySet( collection, elements, options ) : void {\n if( tools.notEqual( collection.refs, elements ) ){\n const isRoot = transactionApi.begin( collection );\n\n // Save elements to resolve in future...\n collection.refs = elements.slice();\n\n transactionApi.markAsDirty( collection, options );\n \n // And throw the 'changes' event.\n isRoot && transactionApi.commit( collection );\n }\n}\n\nfunction toArray( elements ){\n return elements ? ( \n Array.isArray( elements ) ? elements : [ elements ]\n ) : [];\n}","import { Record } from '../record'\nimport { Transactional } from '../transactions'\nimport { startIO, IOPromise } from '../io-tools'\n\nlet _store : Store = null;\n\nexport class Store extends Record {\n getStore() : Store { return this; }\n \n // delegate item lookup to owner, and to the global store if undefined\n get( name : string ) : any {\n // Lookup for resource in the current store. \n let local = this[ name ];\n\n // If something is found or it's the global store, return result.\n if( local || this === this._defaultStore ) return local;\n\n // Forward failed lookup to owner or global store.\n return this._owner ? this._owner.get( name ) : this._defaultStore.get( name ); \n }\n\n static get global(){ return _store; }\n static set global( store : Store ){\n if( _store ){\n _store.dispose();\n }\n\n Transactional.prototype._defaultStore = _store = store;\n }\n}\n\nStore.global = new Store();","// Polyfill for IE10. Should fix problems with babel and statics inheritance.\nimport { tools } from './object-plus'\n\ndeclare global {\n interface ObjectConstructor {\n setPrototypeOf( target : Object, proto : Object );\n }\n}\n\nObject.setPrototypeOf || ( Object.setPrototypeOf = tools.defaults );\n\n/**\n * Export everything \n */\n\nexport * from './object-plus'\nexport * from './collection'\nexport * from './relations'\nexport * from './record'\nexport * from './transactions'\n\nexport * from './io-tools'\n\n// Exported module itself is the global event bus.\nimport { Events } from './object-plus/'\nexport const { on, off, trigger, once, listenTo, stopListening, listenToOnce } = Events;\n\nimport { Collection } from './collection'\n\n// Define synonims for NestedTypes backward compatibility.\nimport { Record as Model } from './record' \nimport { define, Mixable as Class } from './object-plus/'\nexport { Model, Class };\n\nexport function attributes( attrDefs ) : typeof Model {\n @define class DefaultRecord extends Model {\n static attributes = attrDefs;\n }\n\n return DefaultRecord;\n}\n\nimport { ChainableAttributeSpec } from './record'\n\n/** Typeless attribute declaration with default value. */ \nexport function value( x : any ) : ChainableAttributeSpec {\n return new ChainableAttributeSpec({ value : x });\n}\n\n/** Wrap model or collection method in transaction. */\nexport function transaction< F extends Function >( method : F ) : F {\n return function( ...args ){\n let result;\n \n this.transaction( () => {\n result = method.apply( this, args );\n });\n \n return result;\n }\n}","/*******\n * Backbone Backward compatibility shim for View, Router, and History.\n * Based on 1.2.3, converted to browser-only ES6 modules thing. \n */\n\n// Backbone.js 1.2.3\n// (c) 2010-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n// Backbone may be freely distributed under the MIT license.\nimport * as _ from 'underscore'\nimport * as jQuery from 'jquery'\n\n// Initial Setup\n// -------------\ndeclare global {\n interface Window {\n Backbone : any\n }\n\n function attachEvent( a, b );\n function detachEvent( a, b );\n}\n\n// Save the previous value of the `Backbone` variable, so that it can be\n// restored later on, if `noConflict` is used.\nconst previousBackbone = window.Backbone;\n\n// Create a local reference to a common array method we'll want to use later.\nconst slice = Array.prototype.slice;\n\n// For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns\n// the `$` variable.\nconst exported = {\n $ : jQuery,\n history : null,\n VERSION : '1.2.3',\n View, History, Router, noConflict\n}\n\nexport default exported;\n\n// Runs Backbone.js in *noConflict* mode, returning the `Backbone` variable\n// to its previous owner. Returns a reference to this Backbone object.\nfunction noConflict() {\n window.Backbone = previousBackbone;\n return this;\n};\n\n// Backbone.View\n// -------------\n\n// Backbone Views are almost more convention than they are actual code. A View\n// is simply a JavaScript object that represents a logical chunk of UI in the\n// DOM. This might be a single item, an entire list, a sidebar or panel, or\n// even the surrounding frame which wraps your whole app. Defining a chunk of\n// UI as a **View** allows you to define your DOM events declaratively, without\n// having to worry about render order ... and makes it easy for the view to\n// react to specific changes in the state of your models.\n\n// Creating a Backbone.View creates its initial element outside of the DOM,\n// if an existing element is not provided...\nexport function View(options) {\n this.cid = _.uniqueId('view');\n options || (options = {});\n _.extend(this, _.pick(options, viewOptions));\n this._ensureElement();\n this.initialize.apply(this, arguments);\n this.delegateEvents();\n};\n\n// Cached regex to split keys for `delegate`.\nvar delegateEventSplitter = /^(\\S+)\\s*(.*)$/;\n\n// List of view options to be merged as properties.\nvar viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events'];\n\n// Set up all inheritable **Backbone.View** properties and methods.\n_.extend(View.prototype, {\n\n // The default `tagName` of a View's element is `\"div\"`.\n tagName: 'div',\n\n // jQuery delegate for element lookup, scoped to DOM elements within the\n // current view. This should be preferred to global lookups where possible.\n $: function (selector) {\n return this.$el.find(selector);\n },\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function () { },\n\n // **render** is the core function that your view should override, in order\n // to populate its element (`this.el`), with the appropriate HTML. The\n // convention is for **render** to always return `this`.\n render: function () {\n return this;\n },\n\n // Remove this view by taking the element out of the DOM, and removing any\n // applicable Backbone.Events listeners.\n remove: function () {\n this.$el.remove();\n this.stopListening();\n return this;\n },\n\n // Change the view's element (`this.el` property), including event\n // re-delegation.\n setElement: function (element, delegate) {\n if (this.$el) this.undelegateEvents();\n this.$el = element instanceof exported.$ ? element : exported.$(element);\n this.el = this.$el[0];\n if (delegate !== false) this.delegateEvents();\n return this;\n },\n\n // Set callbacks, where `this.events` is a hash of\n //\n // *{\"event selector\": \"callback\"}*\n //\n // {\n // 'mousedown .title': 'edit',\n // 'click .button': 'save',\n // 'click .open': function(e) { ... }\n // }\n //\n // pairs. Callbacks will be bound to the view, with `this` set properly.\n // Uses event delegation for efficiency.\n // Omitting the selector binds the event to `this.el`.\n // This only works for delegate-able events: not `focus`, `blur`, and\n // not `change`, `submit`, and `reset` in Internet Explorer.\n delegateEvents: function (events) {\n if (!(events || (events = _.result(this, 'events')))) return this;\n this.undelegateEvents();\n for (var key in events) {\n var method = events[key];\n if (!_.isFunction(method)) method = this[events[key]];\n if (!method) continue;\n\n var match = key.match(delegateEventSplitter);\n var eventName = match[1], selector = match[2];\n method = _.bind(method, this);\n eventName += '.delegateEvents' + this.cid;\n if (selector === '') {\n this.$el.on(eventName, method);\n } else {\n this.$el.on(eventName, selector, method);\n }\n }\n return this;\n },\n\n // Clears all callbacks previously bound to the view with `delegateEvents`.\n // You usually don't need to use this, but may wish to if you have multiple\n // Backbone views attached to the same DOM element.\n undelegateEvents: function () {\n this.$el.off('.delegateEvents' + this.cid);\n return this;\n },\n\n // Ensure that the View has a DOM element to render into.\n // If `this.el` is a string, pass it through `$()`, take the first\n // matching element, and re-assign it to `el`. Otherwise, create\n // an element from the `id`, `className` and `tagName` properties.\n _ensureElement: function () {\n if (!this.el) {\n var attrs = _.extend({}, _.result(this, 'attributes'));\n if (this.id) attrs.id = _.result(this, 'id');\n if (this.className) attrs['class'] = _.result(this, 'className');\n var $el = exported.$('<' + _.result(this, 'tagName') + '>').attr(attrs);\n this.setElement($el, false);\n } else {\n this.setElement(_.result(this, 'el'), false);\n }\n }\n\n});\n\n// Backbone.Router\n// ---------------\n\n// Routers map faux-URLs to actions, and fire events when routes are\n// matched. Creating a new one sets its `routes` hash, if not set statically.\nexport function Router(options) {\n options || (options = {});\n if (options.routes) this.routes = options.routes;\n this._bindRoutes();\n this.initialize.apply(this, arguments);\n}\n\n// Cached regular expressions for matching named param parts and splatted\n// parts of route strings.\nvar optionalParam = /\\((.*?)\\)/g;\nvar namedParam = /(\\(\\?)?:\\w+/g;\nvar splatParam = /\\*\\w+/g;\nvar escapeRegExp = /[\\-{}\\[\\]+?.,\\\\\\^$|#\\s]/g;\n\n// Set up all inheritable **Backbone.Router** properties and methods.\n_.extend(Router.prototype, {\n\n // Initialize is an empty function by default. Override it with your own\n // initialization logic.\n initialize: function () { },\n\n // Manually bind a single named route to a callback. For example:\n //\n // this.route('search/:query/p:num', 'search', function(query, num) {\n // ...\n // });\n //\n route: function (route, name, callback) {\n if (!_.isRegExp(route)) route = this._routeToRegExp(route);\n if (_.isFunction(name)) {\n callback = name;\n name = '';\n }\n if (!callback) callback = this[name];\n var router = this;\n exported.history.route(route, function (fragment) {\n var args = router._extractParameters(route, fragment);\n if (router.execute(callback, args, name) !== false) {\n router.trigger.apply(router, ['route:' + name].concat(args));\n router.trigger('route', name, args);\n exported.history.trigger('route', router, name, args);\n }\n });\n return this;\n },\n\n // Execute a route handler with the provided parameters. This is an\n // excellent place to do pre-route setup or post-route cleanup.\n execute: function (callback, args, name) {\n if (callback) callback.apply(this, args);\n },\n\n // Simple proxy to `Backbone.history` to save a fragment into the history.\n navigate: function (fragment, options) {\n exported.history.navigate(fragment, options);\n return this;\n },\n\n // Bind all defined routes to `Backbone.history`. We have to reverse the\n // order of the routes here to support behavior where the most general\n // routes can be defined at the bottom of the route map.\n _bindRoutes: function () {\n if (!this.routes) return;\n this.routes = _.result(this, 'routes');\n var route, routes = _.keys(this.routes);\n while ((route = routes.pop()) != null) {\n this.route(route, this.routes[route]);\n }\n },\n\n // Convert a route string into a regular expression, suitable for matching\n // against the current location hash.\n _routeToRegExp: function (route) {\n route = route.replace(escapeRegExp, '\\\\$&')\n .replace(optionalParam, '(?:$1)?')\n .replace(namedParam, function (match, optional) {\n return optional ? match : '([^/?]+)';\n })\n .replace(splatParam, '([^?]*?)');\n return new RegExp('^' + route + '(?:\\\\?([\\\\s\\\\S]*))?$');\n },\n\n // Given a route, and a URL fragment that it matches, return the array of\n // extracted decoded parameters. Empty or unmatched parameters will be\n // treated as `null` to normalize cross-browser behavior.\n _extractParameters: function (route, fragment) {\n var params = route.exec(fragment).slice(1);\n return _.map(params, function (param, i) {\n // Don't decode the search params.\n if (i === params.length - 1) return param || null;\n return param ? decodeURIComponent(param) : null;\n });\n }\n\n});\n\n// Backbone.History\n// ----------------\n\n// Handles cross-browser history management, based on either\n// [pushState](http://diveintohtml5.info/history.html) and real URLs, or\n// [onhashchange](https://developer.mozilla.org/en-US/docs/DOM/window.onhashchange)\n// and URL fragments. If the browser supports neither (old IE, natch),\n// falls back to polling.\nexport function History() {\n this.handlers = [];\n this.checkUrl = _.bind(this.checkUrl, this);\n\n // Ensure that `History` can be used outside of the browser.\n if (typeof window !== 'undefined') {\n this.location = window.location;\n this.history = window.history;\n }\n};\n\n// Cached regex for stripping a leading hash/slash and trailing space.\nvar routeStripper = /^[#\\/]|\\s+$/g;\n\n// Cached regex for stripping leading and trailing slashes.\nvar rootStripper = /^\\/+|\\/+$/g;\n\n// Cached regex for stripping urls of hash.\nvar pathStripper = /#.*$/;\n\n// Has the history handling already been started?\n(History as any).started = false;\n\n// Set up all inheritable **Backbone.History** properties and methods.\n_.extend(History.prototype, {\n\n // The default interval to poll for hash changes, if necessary, is\n // twenty times a second.\n interval: 50,\n\n // Are we at the app root?\n atRoot: function () {\n var path = this.location.pathname.replace(/[^\\/]$/, '$&/');\n return path === this.root && !this.getSearch();\n },\n\n // Does the pathname match the root?\n matchRoot: function () {\n var path = this.decodeFragment(this.location.pathname);\n var root = path.slice(0, this.root.length - 1) + '/';\n return root === this.root;\n },\n // Unicode characters in `location.pathname` are percent encoded so they're\n // decoded for comparison. `%25` should not be decoded since it may be part\n // of an encoded parameter.\n decodeFragment: function (fragment) {\n return decodeURI(fragment.replace(/%25/g, '%2525'));\n },\n // In IE6, the hash fragment and search params are incorrect if the\n // fragment contains `?`.\n getSearch: function () {\n var match = this.location.href.replace(/#.*/, '').match(/\\?.+/);\n return match ? match[0] : '';\n },\n // Gets the true hash value. Cannot use location.hash directly due to bug\n // in Firefox where location.hash will always be decoded.\n getHash: function (window) {\n var match = (window || this).location.href.match(/#(.*)$/);\n return match ? match[1] : '';\n },\n\n // Get the pathname and search params, without the root.\n getPath: function () {\n var path = this.decodeFragment(\n this.location.pathname + this.getSearch()\n ).slice(this.root.length - 1);\n return path.charAt(0) === '/' ? path.slice(1) : path;\n },\n\n // Get the cross-browser normalized URL fragment from the path or hash.\n getFragment: function (fragment) {\n if (fragment == null) {\n if (this._usePushState || !this._wantsHashChange) {\n fragment = this.getPath();\n } else {\n fragment = this.getHash();\n }\n }\n return fragment.replace(routeStripper, '');\n },\n\n // Start the hash change handling, returning `true` if the current URL matches\n // an existing route, and `false` otherwise.\n start: function (options) {\n if ((History as any).started) throw new Error('Backbone.history has already been started');\n (History as any).started = true;\n\n // Figure out the initial configuration. Do we need an iframe?\n // Is pushState desired ... is it available?\n this.options = _.extend({ root: '/' }, this.options, options);\n this.root = this.options.root;\n this._wantsHashChange = this.options.hashChange !== false;\n this._hasHashChange = 'onhashchange' in window && ((document as any).documentMode === void 0 || (document as any).documentMode > 7);\n this._useHashChange = this._wantsHashChange && this._hasHashChange;\n this._wantsPushState = !!this.options.pushState;\n this._hasPushState = !!(this.history && this.history.pushState);\n this._usePushState = this._wantsPushState && this._hasPushState;\n this.fragment = this.getFragment();\n\n // Normalize root to always include a leading and trailing slash.\n this.root = ('/' + this.root + '/').replace(rootStripper, '/');\n\n\n\n\n // Transition from hashChange to pushState or vice versa if both are\n // requested.\n if (this._wantsHashChange && this._wantsPushState) {\n\n // If we've started off with a route from a `pushState`-enabled\n // browser, but we're currently in a browser that doesn't support it...\n if (!this._hasPushState && !this.atRoot()) {\n var root = this.root.slice(0, -1) || '/';\n this.location.replace(root + '#' + this.getPath());\n // Return immediately as browser will do redirect to new url\n return true;\n\n // Or if we've started out with a hash-based route, but we're currently\n // in a browser where it could be `pushState`-based instead...\n } else if (this._hasPushState && this.atRoot()) {\n this.navigate(this.getHash(), { replace: true });\n }\n\n }\n\n // Proxy an iframe to handle location events if the browser doesn't\n // support the `hashchange` event, HTML5 history, or the user wants\n // `hashChange` but not `pushState`.\n if (!this._hasHashChange && this._wantsHashChange && !this._usePushState) {\n this.iframe = document.createElement('iframe');\n this.iframe.src = 'javascript:0';\n this.iframe.style.display = 'none';\n this.iframe.tabIndex = -1;\n var body = document.body;\n // Using `appendChild` will throw on IE < 9 if the document is not ready.\n var iWindow = body.insertBefore(this.iframe, body.firstChild).contentWindow;\n iWindow.document.open();\n iWindow.document.close();\n iWindow.location.hash = '#' + this.fragment;\n }\n\n // Add a cross-platform `addEventListener` shim for older browsers.\n var addEventListener = window.addEventListener || function (eventName, listener) {\n return attachEvent('on' + eventName, listener);\n };\n // Depending on whether we're using pushState or hashes, and whether\n // 'onhashchange' is supported, determine how we check the URL state.\n if (this._usePushState) {\n addEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n addEventListener('hashchange', this.checkUrl, false);\n } else if (this._wantsHashChange) {\n this._checkUrlInterval = setInterval(this.checkUrl, this.interval);\n }\n if (!this.options.silent) return this.loadUrl();\n },\n\n // Disable Backbone.history, perhaps temporarily. Not useful in a real app,\n // but possibly useful for unit testing Routers.\n stop: function () {\n // Add a cross-platform `removeEventListener` shim for older browsers.\n var removeEventListener = window.removeEventListener || function (eventName, listener) {\n return detachEvent('on' + eventName, listener);\n };\n // Remove window listeners.\n if (this._usePushState) {\n removeEventListener('popstate', this.checkUrl, false);\n } else if (this._useHashChange && !this.iframe) {\n removeEventListener('hashchange', this.checkUrl, false);\n }\n // Clean up the iframe if necessary.\n if (this.iframe) {\n document.body.removeChild(this.iframe);\n this.iframe = null;\n }\n // Some environments will throw when clearing an undefined interval.\n if (this._checkUrlInterval) clearInterval(this._checkUrlInterval);\n (History as any).started = false;\n },\n\n // Add a route to be tested when the fragment changes. Routes added later\n // may override previous routes.\n route: function (route, callback) {\n this.handlers.unshift({ route: route, callback: callback });\n },\n\n // Checks the current URL to see if it has changed, and if it has,\n // calls `loadUrl`, normalizing across the hidden iframe.\n checkUrl: function (e) {\n var current = this.getFragment();\n // If the user pressed the back button, the iframe's hash will have\n // changed and we should use that for comparison.\n if (current === this.fragment && this.iframe) {\n current = this.getHash(this.iframe.contentWindow);\n }\n if (current === this.fragment) return false;\n if (this.iframe) this.navigate(current);\n this.loadUrl();\n },\n\n // Attempt to load the current URL fragment. If a route succeeds with a\n // match, returns `true`. If no defined routes matches the fragment,\n // returns `false`.\n loadUrl: function (fragment) {\n // If the root doesn't match, no routes can match either.\n if (!this.matchRoot()) return false;\n fragment = this.fragment = this.getFragment(fragment);\n return _.some(this.handlers, function (handler) {\n if (handler.route.test(fragment)) {\n handler.callback(fragment);\n return true;\n }\n });\n },\n\n // Save a fragment into the hash history, or replace the URL state if the\n // 'replace' option is passed. You are responsible for properly URL-encoding\n // the fragment in advance.\n //\n // The options object can contain `trigger: true` if you wish to have the\n // route callback be fired (not usually desirable), or `replace: true`, if\n // you wish to modify the current URL without adding an entry to the history.\n navigate: function (fragment, options) {\n if (!(History as any).started) return false;\n if (!options || options === true) options = { trigger: !!options };\n\n // Normalize the fragment.\n fragment = this.getFragment(fragment || '');\n\n // Don't include a trailing slash on the root.\n var root = this.root;\n if (fragment === '' || fragment.charAt(0) === '?') {\n root = root.slice(0, -1) || '/';\n }\n var url = root + fragment;\n // Strip the hash and decode for matching.\n fragment = this.decodeFragment(fragment.replace(pathStripper, ''));\n\n if (this.fragment === fragment) return;\n this.fragment = fragment;\n\n\n // If pushState is available, we use it to set the fragment as a real URL.\n if (this._usePushState) {\n this.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, url);\n\n // If hash changes haven't been explicitly disabled, update the hash\n // fragment to store history.\n } else if (this._wantsHashChange) {\n this._updateHash(this.location, fragment, options.replace);\n if (this.iframe && (fragment !== this.getHash(this.iframe.contentWindow))) {\n var iWindow = this.iframe.contentWindow;\n // Opening and closing the iframe tricks IE7 and earlier to push a\n // history entry on hash-tag change. When replace is true, we don't\n // want this.\n if (!options.replace) {\n iWindow.document.open();\n iWindow.document.close();\n }\n\n this._updateHash(iWindow.location, fragment, options.replace);\n }\n\n // If you've told us that you explicitly don't want fallback hashchange-\n // based history, then `navigate` becomes a page refresh.\n } else {\n return this.location.assign(url);\n }\n if (options.trigger) return this.loadUrl(fragment);\n },\n\n // Update the hash location, either replacing the current entry, or adding\n // a new one to the browser history.\n _updateHash: function (location, fragment, replace) {\n if (replace) {\n var href = location.href.replace(/(javascript:|#).*$/, '');\n location.replace(href + '#' + fragment);\n } else {\n // Some browsers require that `hash` contains a leading #.\n location.hash = '#' + fragment;\n }\n }\n\n});\n\n// Create the default Backbone.history.\nexported.history = new History;\n\n","/**\n * Backbone.js 1.2.3 REST implementation\n * (c) 2010-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n * Backbone may be freely distributed under the MIT license.\n *\n * With validation patches - NestedTypes validation semantic is applied. (c) Vlad Balin, 2015.\n */\nimport * as _ from 'underscore'\nimport Backbone from './backbone'\n\nimport { tools } from './type-r'\nconst { defaults } = tools;\n\nexport type LazyValue< T > = () => T | T;\n\n// Map from CRUD to HTTP for our default `Backbone.sync` implementation.\nexport type Method = 'create' | 'update' | 'patch' | 'delete' | 'read' \n\nexport interface Restful {\n trigger( event : string, model, xhr, options )\n collection? : { trigger( event : string, model, xhr, options ) }\n toJSON( options : any ) : {}\n _xhr : JQueryXHR\n sync( method : string, object : Restful, options : SyncOptions )\n}\n\nexport interface SyncOptions {\n url? : LazyValue< string >\n data? : any\n attrs? : {}\n beforeSend? : ( xhr ) => any\n\n success? : ( resp : any ) => void\n error? : ( xhr?, textStatus?, errorThrown? ) => void\n\n textStatus? : string\n errorThrown? : any\n xhr? : any\n context? : {}\n}\n\nconst methodMap = {\n 'create' : 'POST',\n 'update' : 'PUT',\n 'patch' : 'PATCH',\n 'delete' : 'DELETE',\n 'read' : 'GET'\n};\n\nconst exported = {\n $ : Backbone.$,\n \n errorPromise : error => {\n var x = $.Deferred();\n x.reject( error );\n return x;\n },\n\n // Set the default implementation of `Backbone.ajax` to proxy through to `$`.\n // Override this if you'd like to use a different library.\n ajax : function( options : {} ){\n return $.ajax.apply( $, arguments );\n },\n\n sync,\n\n // Throw an error when a URL is needed, and none is supplied.\n urlError : function(){\n throw new Error( 'A \"url\" property or function must be specified' );\n }\n};\n\nexport default exported;\n\n // Backbone.sync\n // -------------\n\n // Override this function to change the manner in which Backbone persists\n // models to the server. You will be passed the type of request, and the\n // model in question. By default, makes a RESTful Ajax request\n // to the model's `url()`. Some possible customizations could be:\n //\n // * Use `setTimeout` to batch rapid-fire updates into a single request.\n // * Send up the models as XML instead of JSON.\n // * Persist models via WebSockets instead of Ajax.\n\nfunction sync( method : Method, model : Restful, options : SyncOptions = {} ) : JQueryXHR{\n var type = methodMap[ method ];\n\n // Default JSON-request options.\n var params : any = { type : type, dataType : 'json' };\n\n // Ensure that we have a URL.\n if( !options.url ){\n params.url = _.result( model, 'url' ) || exported.urlError();\n }\n\n // Ensure that we have the appropriate request data.\n if( options.data == null && model && (method === 'create' || method === 'update' || method === 'patch') ){\n params.contentType = 'application/json';\n params.data = JSON.stringify( options.attrs || model.toJSON( options ) );\n }\n\n // Don't process data on a non-GET request.\n if( params.type !== 'GET' ){\n params.processData = false;\n }\n\n // Pass along `textStatus` and `errorThrown` from jQuery.\n var error = options.error;\n options.error = function( xhr, textStatus, errorThrown ){\n options.textStatus = textStatus;\n options.errorThrown = errorThrown;\n if( error ) error.call( options.context, xhr, textStatus, errorThrown );\n };\n\n // Make the request, allowing the user to override any Ajax options.\n var xhr = options.xhr = exported.ajax( _.extend( params, options ) );\n model.trigger( 'request', model, xhr, options );\n model.collection && model.collection.trigger( 'request', model, xhr, options );\n return xhr;\n}","import Sync, { SyncOptions, Restful, LazyValue } from './sync'\n\nimport * as _ from 'underscore'\nimport * as Backbone from './backbone'\n\nimport { define, Model, Collection, tools, definitions, mixinRules } from './type-r'\nconst { defaults } = tools;\n\nconst transactionalProto = tools.getBaseClass( Model ).prototype;\n\nexport interface RestOptions extends SyncOptions {\n wait? : boolean\n patch? : boolean\n reset? : boolean\n validate? : boolean\n}\n\n@define({\n itemEvents : {\n destroy( model ){ this.remove( model ); }\n } \n})\nexport class RestCollection extends Collection implements Restful {\n _xhr : JQueryXHR\n\n dispose(){\n if( this._xhr && this._xhr.abort ) this._xhr.abort();\n super.dispose();\n }\n\n model : typeof RestModel\n url() : string { return this.model.prototype.urlRoot || ''; }\n\n _invalidate( options : { validate? : boolean } ) : boolean {\n var error;\n if( options.validate && ( error = this.validationError ) ){\n this.trigger( 'invalid', this, error, _.extend( { validationError : error }, options ) );\n return true;\n }\n }\n\n // Fetch the default set of models for this collection, resetting the\n // collection when they arrive. If `reset: true` is passed, the response\n // data will be passed through the `reset` method instead of `set`.\n fetch( options : RestOptions ) : any {\n options = _.extend( { parse : true }, options );\n var success = options.success;\n var collection = this;\n options.success = function( resp ){\n var method = options.reset ? 'reset' : 'set';\n collection[ method ]( resp, options );\n if( collection._invalidate( options ) ) return false;\n\n if( success ) success.call( options.context, collection, resp, options );\n collection.trigger( 'sync', collection, resp, options );\n };\n\n wrapError( this, options );\n return _sync( 'read', this, options );\n }\n\n create( a_model, options : any = {} ) : RestModel {\n const model : RestModel = a_model instanceof RestModel ?\n a_model :\n this.model.create( a_model, options );\n\n // Hack! For the situation when model instance is given, aquire it. \n model._owner || ( model._owner = this );\n\n options.wait || this.add([ model ], options );\n\n var collection = this;\n var success = options.success;\n options.success = ( model, resp, callbackOpts ) =>{\n if( options.wait ) this.add( [ model ], defaults({ parse : false }, callbackOpts ) );\n if( success ) success.call( callbackOpts.context, model, resp, callbackOpts );\n };\n\n model.save( null, options );\n return model;\n }\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync(){\n return Sync.sync.apply( this, arguments );\n }\n};\n\n@define({\n urlRoot : ''\n})\n@definitions({\n urlRoot : mixinRules.protoValue\n})\nexport class RestModel extends Model implements Restful {\n static Collection : typeof Collection = RestCollection as any;\n \n _xhr : JQueryXHR\n\n urlRoot : string\n\n /** @private */\n _invalidate( options : { validate? : boolean } ) : boolean {\n var error;\n if( options.validate && ( error = this.validationError ) ){\n triggerAndBubble( this, 'invalid', this, error, _.extend( { validationError : error }, options ) );\n return true;\n }\n }\n\n dispose(){\n if( this._xhr && this._xhr.abort ) this._xhr.abort();\n super.dispose();\n }\n\n // Fetch the model from the server, merging the response with the model's\n // local attributes. Any changed attributes will trigger a \"change\" event.\n fetch( options? : RestOptions ) : any {\n options = _.extend( { parse : true }, options );\n var model = this;\n var success = options.success;\n options.success = function( serverAttrs ){\n model.set( serverAttrs, options );\n if( model._invalidate( options ) ) return false;\n\n if( success ) success.call( options.context, model, serverAttrs, options );\n triggerAndBubble( model, 'sync', model, serverAttrs, options );\n };\n\n wrapError( this, options );\n return _sync( 'read', this, options );\n }\n\n // Proxy `Backbone.sync` by default -- but override this if you need\n // custom syncing semantics for *this* particular model.\n sync( method : string, self : this, options : SyncOptions ) : any\n sync() : JQueryXHR {\n return Sync.sync.apply( this, arguments );\n }\n\n // Set a hash of model attributes, and sync the model to the server.\n // If the server returns an attributes hash that differs, the model's\n // state will be `set` again.\n save( attrs? : {}, options? : RestOptions ) : any\n save( key : string, value : any, options? : RestOptions ) : any\n save( key, val, a_options? : RestOptions ) : any {\n // Handle both `\"key\", value` and `{key: value}` -style arguments.\n let attrs, originalOptions;\n\n if( key == null || typeof key === 'object' ){\n attrs = key;\n originalOptions = val || {};\n }\n else{\n (attrs = {})[ key ] = val;\n originalOptions = a_options || {};\n }\n\n const options = _.extend( { validate : true, parse : true }, originalOptions ),\n wait = options.wait;\n\n // If we're not waiting and attributes exist, save acts as\n // `set(attr).save(null, opts)` with validation. Otherwise, check if\n // the model will be valid when the attributes, if any, are set.\n if( attrs && !wait ){\n this.set( attrs, originalOptions );\n }\n\n if( this._invalidate( options ) ){\n if( attrs && wait ) this.set( attrs, originalOptions );\n return Sync.errorPromise( this.validationError );\n }\n\n // After a successful server-side save, the client is (optionally)\n // updated with the server-side state.\n var model = this;\n var success = options.success;\n var attributes = this.attributes;\n options.success = serverAttrs => {\n // Ensure attributes are restored during synchronous saves.\n model.attributes = attributes;\n if( wait ) serverAttrs = _.extend( {}, attrs, serverAttrs );\n\n if( serverAttrs ){\n // When server sends string, polimorphyc Model set screws up.\n transactionalProto.set.call( this, serverAttrs, options );\n if( model._invalidate( options ) ) return false;\n }\n\n if( success ) success.call( options.context, model, serverAttrs, options );\n triggerAndBubble( model, 'sync', model, serverAttrs, options );\n };\n\n wrapError( this, options );\n\n // Set temporary attributes if `{wait: true}` to properly find new ids.\n if( attrs && wait ) this.attributes = _.extend( {}, attributes, attrs );\n\n var method = this.isNew() ? 'create' : (options.patch ? 'patch' : 'update');\n if( method === 'patch' && !options.attrs ) options.attrs = attrs;\n var xhr = _sync( method, this, options );\n\n // Restore attributes.\n this.attributes = attributes;\n\n return xhr;\n }\n\n // Destroy this model on the server if it was already persisted.\n // Optimistically removes the model from its collection, if it has one.\n // If `wait: true` is passed, waits for the server to respond before removal.\n destroy( options : RestOptions ) : any {\n options = options ? _.clone( options ) : {};\n var model = this;\n var success = options.success;\n var wait = options.wait;\n\n var destroy = function(){\n model.stopListening(); // TBD: figure out whenever we need to dispose the model.\n model.trigger( 'destroy', model, model.collection, options );\n };\n\n options.success = function( resp ){\n if( wait ) destroy();\n if( success ) success.call( options.context, model, resp, options );\n if( !model.isNew() ) triggerAndBubble( model, 'sync', model, resp, options );\n };\n\n var xhr : JQueryXHR;\n\n if( this.isNew() ){\n _.defer( options.success );\n }\n else{\n wrapError( this, options );\n xhr = _sync( 'delete', this, options );\n }\n\n if( !wait ) destroy();\n \n return xhr || false;\n }\n\n // Default URL for the model's representation on the server -- if you're\n // using Backbone's restful methods, override this to change the endpoint\n // that will be called.\n url() : string {\n var base =\n _.result( this, 'urlRoot' ) ||\n _.result( this.collection, 'url' ) ||\n Sync.urlError();\n\n if( this.isNew() ) return base;\n\n var id = this.get( this.idAttribute );\n\n return base.replace( /[^\\/]$/, '$&/' ) + encodeURIComponent( id );\n }\n\n set( key : string, value : any, options? : object ) : this\n set( attrs : {}, options? : object ) : this\n set( a, b?, c? ) : this {\n if( typeof a === 'string' ){\n if( c ){\n return super.set({ [ a ] : b }, c );\n }\n else{\n this[ a ] = b;\n return this;\n } \n }\n else{\n return super.set( a, b );\n }\n }\n}\n\nfunction _sync( method : string, _this : Restful, options ) : JQueryXHR {\n // Abort and pending IO request. Just one is allowed at the time.\n _this._xhr && _this._xhr.abort && _this._xhr.abort();\n const xhr = _this._xhr = _this.sync( method, _this, options );\n xhr && xhr.always && xhr.always( function(){ _this._xhr = void 0; });\n return xhr;\n}\n\n// Wrap an optional error callback with a fallback error event.\nfunction wrapError( model : any, options : RestOptions ){\n var error = options.error;\n options.error = function( resp ){\n if( error ) error.call( options.context, model, resp, options );\n triggerAndBubble( model, 'error', model, resp, options );\n };\n}\n\nfunction triggerAndBubble( model : any, ...args : any[] ){\n model.trigger.apply( model, args );\n const { collection } = model;\n collection && collection.trigger.apply( collection, args ); \n}","import * as _ from 'underscore'\n\nexport const ModelMixin = {\n pick( ...args : any[] ){\n return _.pick( this, args );\n },\n\n escape( attr ){\n return _.escape( this[ attr ] );\n },\n\n matches( attrs ){\n return !!_.iteratee( attrs, this )( this );\n },\n\n omit( ...keys : string[] ) : {} {\n return this.mapObject( ( value, key ) => {\n if( keys.indexOf( key ) < 0 ){\n return value;\n }\n });\n },\n\n invert(){\n const inverted = {};\n this.each( ( value, key ) => inverted[ value ] = key );\n return inverted;\n },\n\n pairs(){\n return this.map( ( value, key ) => [ key, value ] );\n },\n\n isEmpty(){\n return !this.values().length;\n },\n\n chain(){\n return _.chain( this.mapObject( x => x ) );\n }\n};\n\nexport const CollectionMixin = {\n where(attrs, first) {\n return this[first ? 'find' : 'filter'](attrs);\n },\n\n findWhere(attrs) {\n return this.where(attrs, true);\n }\n};\n\naddUnderscoreMethods( CollectionMixin, 'models', {\n forEach : 3, each : 3, map : 3, collect : 3, reduce : 4,\n foldl : 4, inject : 4, reduceRight : 4, foldr : 4, find : 3, findIndex : 3, findLastIndex : 3, detect : 3, filter : 3,\n select : 3, reject : 3, every : 3, all : 3, some : 3, any : 3, include : 3, includes : 3,\n contains : 3, invoke : 0, max : 3, min : 3, toArray : 1, size : 1, first : 3,\n head : 3, take : 3, initial : 3, rest : 3, tail : 3, drop : 3, last : 3,\n without : 0, difference : 0, indexOf : 3, shuffle : 1, lastIndexOf : 3,\n isEmpty : 1, chain : 1, sample : 3, partition : 3, groupBy : 3, countBy : 3,\n sortBy : 3, indexBy : 3\n});\n\nfunction addUnderscoreMethods(Mixin, attribute, methods ) {\n _.each(methods, function(length, method) {\n if (_[method]) Mixin[method] = addMethod(length, method, attribute);\n });\n}\n\n// Proxy Backbone class methods to Underscore functions, wrapping the model's\n// `attributes` object or collection's `models` array behind the scenes.\n//\n// collection.filter(function(model) { return model.get('age') > 10 });\n// collection.each(this.addView);\n//\n// `Function#apply` can be slow so we use the method's arg count, if we know it.\nfunction addMethod(length, method, attribute) {\n switch (length) {\n case 1: return function() {\n return _[method](this[attribute]);\n };\n case 2: return function(value) {\n return _[method](this[attribute], value);\n };\n case 3: return function(iteratee, context) {\n var value = this[ attribute ],\n callback = cb(iteratee, this);\n\n return arguments.length > 1 ?\n _[method]( value, callback, context)\n : _[method]( value, callback );\n };\n case 4: return function(iteratee, defaultVal, context) {\n var value = this[ attribute ],\n callback = cb(iteratee, this);\n\n return arguments.length > 1 ?\n _[method]( value, callback, defaultVal, context )\n : _[method](value, callback );\n };\n default: return function( ...args : any[] ) {\n args.unshift(this[attribute]);\n return _[method].apply(_, args);\n };\n }\n}\n\n// Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`.\nfunction cb(iteratee, instance) {\n switch( typeof iteratee ){\n case 'function' : return iteratee;\n case 'string' : return model => model.get( iteratee );\n case 'object' :\n if( !(iteratee instanceof instance.model )) return _.matches( iteratee ); \n }\n\n return iteratee;\n}","import Backbone from './backbone'\nimport * as _ from 'underscore'\nimport { mixins, mixinRules, define, Store } from './type-r'\nimport { RestModel, RestCollection } from './rest'\n\n@define({\n getStore : Store.prototype.getStore,\n get : Store.prototype.get,\n})\nexport class RestStore extends RestModel {}\n\n@define\nexport class LazyStore extends RestStore {\n _resolved : {} = {}\n\n initialize(){\n this.each( ( element, name ) => {\n if( !element ) return;\n\n element.store = this;\n\n var fetch = element.fetch;\n\n if( fetch ){\n const self = this;\n element.fetch = function() {\n return self._resolved[ name ] = fetch.apply( this, arguments );\n }\n }\n\n if( element instanceof RestCollection && element.length ){\n this._resolved[name] = true;\n }\n });\n }\n\n // fetch specified items, or all items if called without arguments.\n // returns jquery promise\n fetch( ...args : any[] /* hack, inheritance here violates LSP */) : any {\n var xhr = [],\n objsToFetch = args.length ? args : this.keys();\n\n for( let name of objsToFetch ){\n var attr = this.attributes[name];\n attr && attr.fetch && xhr.push( attr.fetch() );\n }\n\n const { $ } = Backbone;\n return $ && $.when && $.when.apply( $, xhr );\n }\n\n // fetch specified items, or all items if called without arguments.\n // returns first jquery promise.\n fetchOnce( ...args : string[] ) : JQueryXHR {\n var xhr = [],\n self = this,\n objsToFetch = args.length ? args : this.keys();\n\n for( let name of objsToFetch ){\n var attr = self.attributes[ name ];\n xhr.push( self._resolved[ name ] || attr && attr.fetch && attr.fetch());\n }\n\n const { $ } = Backbone;\n return $ && $.when && $.when.apply( $, xhr );\n }\n\n clear( ...args : string[] ) : this {\n var objsToClear = args.length ? args : this.keys();\n\n for( let name of objsToClear ){\n var element = this.attributes[ name ];\n\n if( element instanceof RestCollection ){\n element.reset();\n }\n else if( element instanceof Store ){\n element.clear();\n }\n else if( element instanceof RestModel ){\n element.set( element.defaults() )\n }\n\n this._resolved[ name ] = false;\n }\n\n return this;\n }\n\n static onDefine( definitions, BaseClass ){\n var attributes = definitions.defaults || definitions.attributes;\n\n // add automatic fetching on first element's access\n _.each( attributes, ( Type : Function, name ) => {\n if( Type.has ){\n attributes[name] = Type.has\n .set( function( value ){\n if( !value || !value.length ){\n const resolved = this._resolved || ( this._resolved = {} ); \n resolved[name] = false;\n }\n \n return value;\n })\n } \n });\n\n RestModel.onDefine.call( this, definitions, BaseClass );\n }\n} \n ","/**\n * Extend Type-R namespace\n */\nimport * as TypeR from './type-r'\nexport * from './type-r'\n\n/**\n * Prepare backbone View, Router, History, and Events. \n */\nimport Backbone from './backbone'\nimport { RestCollection, RestModel } from './rest'\nimport { Store as BaseStore, tools, MixinsState } from './type-r'\nimport Sync from './sync'\n\nimport { ModelMixin, CollectionMixin } from './underscore-mixin'\nimport { RestStore, LazyStore } from './rest-store'\n\n/**\n * Prepare \n */\n\nexport const Class : typeof TypeR.Messenger = TypeR.Messenger;\n\nconst Nested : typeof TypeR & typeof Backbone = Object.create( TypeR, tools.defaults({\n 'sync' : linkProperty( Sync, 'sync' ),\n 'errorPromise' : linkProperty( Sync, 'errorPromise' ),\n 'ajax' : linkProperty( Sync, 'ajax' ),\n 'history' : linkProperty( Backbone, 'history' ),\n 'store' : linkProperty( BaseStore, 'global' ),\n '$' : {\n get(){ return Backbone.$; },\n set( value ){ (Backbone).$ = (Sync).$ = value; }\n }\n },\n toProps( { Backbone, Class, Model : RestModel, Collection : RestCollection, LazyStore, Store : RestStore, defaults } ),\n toProps( Backbone )\n));\n\nexport default Nested;\n\nexport { Backbone, RestStore, LazyStore, RestCollection as Collection, RestModel as Model };\n\nexport function defaults( x ) : typeof Nested.Record {\n return Nested.Model.defaults( x );\n}\n\nexport * from './backbone';\n\nMixinsState.get( Nested.Mixable ).merge([ Nested.Events ]);\nNested.Messenger.mixins.populate( Backbone.View, Backbone.Router, Backbone.History );\nNested.Record.mixins.merge([ ModelMixin ]);\nNested.Record.Collection.mixins.merge([ CollectionMixin ]);\n\n/**\n * Local utilities\n */\nfunction linkProperty( Namespace, name ){\n return {\n get(){ return Namespace[ name ]; },\n set( value ){ Namespace[ name ] = value; }\n };\n}\n\nfunction toProps( obj ){\n return tools.transform({}, obj, x => ({ value : x }) );\n} "],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__rest","e","indexOf","getOwnPropertySymbols","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","defaults","dest","source","name","other","levelToNumber","none","error","warn","info","log","debug","a_level","a_msg","a_props","msg","props","level","levelAsNumber","throw","logger","Error","stop","process","env","NODE_ENV","toString","window","something","value","__inner_state__","isArray","Boolean","keys_1","keys","join","body","x","isValidJSON","proto","getPrototypeOf","every","getBaseClass","Class","isEmpty","obj","some","fun","ArrayProto","arr","result","someArray","someObject","predicate","omit","discard","transform","once","func","memo","first","console","args","name_1","push","DateProto","Date","ObjectProto","notEqual","a","protoA","arraysNotEqual","keysA","objectsNotEqual","HashProto","hashMap","hash","definition","_i","names","names_1","_a","name_2","prop","o","Mixable","protoProps","staticProps","BaseClass","mixins","defineMixin","merge","mergeObject","getStaticDefinitions","onDefine","definitions","mergeInheritedMembers","spec","statics","TheSubclass","tslib_1.__extends","predefine","define","Constructor","__super__","MixinsState","get","populate","onExtend","ClassOrDefinition","Ctor","rules","definitionRules","propertyListDecorator","listName","slice","definitionDecorator","definitionKey","mergeRules","appliedMixins","rule","mixins_1","mixin","sourceMixins","concat","ctors","ctors_1","unshift","object","ignore","dontMix","forEachOwnProp","sourceProp","_this","assignProperty","mixinRules","protoValue","baseProto","resolveRule","function","caller","list","destProp","configurable","pipe","classFirst","classLast","map","EventMap","handlers","addEventsMap","addEvent","split","eventSplitter","getBubblingHandler","callback","EventDescriptor","event_1","on","event_2","off","handler","_bubblingHandlers","event","trigger5","trigger3","trigger2","context","next","listOff","_events","filteredHead","prev","head","ev","_callback","listSend3","EventHandler","once_1","_once","name_3","strings","api","events","test","self","queue","all","listSend2","listSend4","listSend5","f","listSend6","_idCount","uniqueId","cid","initialize","Messenger","localEvents","_localEvents","properties","eventsMap","defineProperties","toPropertyDescriptor","addReference","a_source","_listeningTo","removeAll","second","_disposed","stopListening","Events","listener","extend","tools.assign","tools.log","_validateNested","nested","validate","ValidationError","iteratee","each","eachError","referenceMask","reference","splitTail","path","match","substr","tail","pop","local","resolve","Function","shift","resolveReference","root","action","skip","getStore","getOwner","getOwnerEndpoint","collection","_owner","_endpoints","_ownerKey","createIOPromise","reject","onAbort","abort","fn","promise","Promise","a_resolve","a_reject","startIO","options","thenDo","abortIO","ioUpdate","_ioPromise","then","resp","triggerAndBubble","catch","err","eventSource","trigger","ItemsBehavior","cidPrefix","Transactional","endpoint","_endpoint","Transactional_1","_changeEventName","listenTo","isRoot","transactionApi","begin","update","set","commit","values","transaction","_createTransaction","_changeToken","data","_defaultStore","v","k","val","_validationError","validationError","getValidationError","_transaction","markAsDirty","dirty","silent","_isDirty","initiator","originalOptions","_onChildrenChange","aquire","owner","child","free","_begin","_markAsDirty","setAttribute","record","_attributes","doUpdate","attributes","_previousAttributes","AttributesCopy","_changedAttributes","UpdateRecordMixin","attribute","propagateChanges","forceAttributeChange","a_values","unknown","changes","parse","shouldBeAnObject","RecordTransaction","nested_1","constructorsMixin","attrDefs","attrs","attr","Attributes","_log","nested_2","changes_1","_b","emptyOptions","a_options","getHooks","transforms","changeHandlers","type","toJSON","changeEvents","hasCustomDefault","defaultValue","tools.isValidJSON","JSON","stringify","isRequired","convert","getHook_1","getHook","reduce","chainGetHooks","validate_1","chainTransforms","handleChange","chainChangeHandlers","doInit","AnyType","_attribute","model","isChanged","text","getClassName","Record","Attribute definition","Prev. value","New value","prevHook","nextHook","prevTransform","nextTransform","prevHandler","nextHandler","AggregatedType","clone","canBeUpdated","nestedTransaction","_shared","persistent","_handleChange","unset","dispose","ChainableAttributeSpec","check","metadata","asProp","ref","_onChange","emptyFunction","changed","eventMap","unsubscribe","subscribe","cloned","attrSpec","has","type_1","Number","String","inferType","shared","_isRequired","_has","DateType","date","timestamp","getTime","toISOString","msDatePattern","MSDateType","msDate","exec","TimestampType","supportsDate","isNaN","microsoft","struct","minutesOffset","isoDatePattern","numericKeys","undefined","UTC","safeParseDate","ImmutableClassType","PrimitiveType","NumericType","num","isFinite","Integer","Math","round","integer","ArrayType","ObjectType","doNothing","FunctionType","shareAndListen","listen","share","SharedType","implicitObject","attributesDefinition","baseClassAttributes","myAttributes","_.transform","createAttribute","allAttributes","_.defaults","ConstructorsMixin","_attributesArray","createPropertyDescriptor","attrSpecs","eventsApi.EventMap","createWatcherFromRef","wrapWatcher","localEventsMixin","attrDef","from","createSharedTypeSpec","Attribute","watcher","IORecordMixin","save","getEndpoint","json","isNew","id","fetch","read","destroy","remove","_cidCounter","_super","typeCheck","diff","hasChanged","old","nullify","forEachAttr","idAttribute","_attributesArray_1","copy","pinStore","errors","asJson","l","newModel","clear","Attributes definition:","Collection","BaseRecordAttributes","BaseRecordAttributesCopy","IdAttribute","attrName","getMetadata","DefaultCollection","dynamicMixin","_aquire","_free","convertAndAquire","_aggregationError","_itemEvents","sortElements","_comparator","sort","models","addIndex","index","removeIndex","updateIndex","previous","added","removed","sorted","CollectionTransaction","logAggregationError","added_1","_d","removed_1","_e","addTransaction","items","a_items","forceMerge","_byId","prevLength","a_items_1","item","appendElements","needSort","at","length_1","j","moveElements","sortOrMoveElements","silentOptions","emptySetTransaction","len","src","_reallocateEmpty","setTransaction","_prevById","prevModels","toAdd","orderKept","_reallocate","reusedCount","previous_1","_garbageCollect","children","children_1","freeAll","addedOrChanged","removeMany","toRemove","_removeFromIndex","begin$4","_count","CollectionRefsType","records","comparator","toElements","subset","subsetOf","RefsCollection","_SubsetOf","Refs","Subset","itemEvents","aa","bb","_store","objOrId","bindContext","toPredicateFunction","find","mapped","count","a_index","elements","add","reset","enabled","liveUpdates","filter_1","_liveUpdates","updated","tslib_1.__assign","aggregated","a_elements","previousModels","previousModels_1","toDispose","recordsOrIds","el","splice","notify","removeOne","modelOrId","a_next","Argument","Attributes spec","parsed","parseReference","collectionRef","RecordRefType","masterCollection","getMasterCollection","SubsetOf","subsetOfBehavior","refs","toArray","SubsetOfCollection","resolvedWith","resolveRefs","delaySet","raw","toggle","addAll","master","elements_1","tools.notEqual","Store","store","global","tools.defaults","listenToOnce","DefaultRecord","Model","method","previousBackbone","Backbone","exported","$","jQuery","history","VERSION","View","History","Router","noConflict","_.uniqueId","_.extend","_.pick","viewOptions","_ensureElement","delegateEvents","delegateEventSplitter","routes","_bindRoutes","tagName","selector","$el","render","setElement","element","delegate","undelegateEvents","_.result","_.isFunction","eventName","_.bind","className","optionalParam","namedParam","splatParam","escapeRegExp","checkUrl","location","route","_.isRegExp","_routeToRegExp","router","fragment","_extractParameters","execute","navigate","_.keys","replace","optional","RegExp","params","_.map","param","decodeURIComponent","routeStripper","rootStripper","pathStripper","started","interval","atRoot","pathname","getSearch","matchRoot","decodeFragment","decodeURI","href","getHash","getPath","charAt","getFragment","_usePushState","_wantsHashChange","start","hashChange","_hasHashChange","document","documentMode","_useHashChange","_wantsPushState","pushState","_hasPushState","iframe","createElement","style","display","tabIndex","iWindow","insertBefore","firstChild","contentWindow","open","close","addEventListener","attachEvent","_checkUrlInterval","setInterval","loadUrl","removeEventListener","detachEvent","removeChild","clearInterval","current","_.some","url","title","_updateHash","methodMap","patch","delete","errorPromise","Deferred","ajax","sync","dataType","urlError","contentType","processData","xhr","textStatus","errorThrown","transactionalProto","tools.getBaseClass","RestCollection","_xhr","urlRoot","success","_invalidate","wrapError","_sync","a_model","RestModel","wait","callbackOpts","_this_1","Sync","serverAttrs","_.clone","_.defer","base","encodeURIComponent","always","Mixin","methods","ModelMixin","pick","escape","_.escape","matches","_.iteratee","mapObject","invert","inverted","pairs","chain","_.chain","CollectionMixin","where","findWhere","cb","instance","_.matches","forEach","collect","foldl","inject","reduceRight","foldr","findIndex","findLastIndex","detect","filter","select","any","include","includes","contains","invoke","max","min","size","take","initial","rest","drop","last","without","difference","shuffle","lastIndexOf","sample","partition","groupBy","countBy","sortBy","indexBy","_.each","_","defaultVal","addMethod","RestStore","LazyStore","self_1","_resolved","objsToFetch_1","when","objsToFetch_2","objsToClear_1","Type","TypeR.Messenger","Nested","TypeR","linkProperty","BaseStore","toProps","Namespace","tools.transform"],"mappings":"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"} \ No newline at end of file diff --git a/endpoints/attributes/dist/index.js b/endpoints/attributes/dist/index.js new file mode 100644 index 0000000..e773bce --- /dev/null +++ b/endpoints/attributes/dist/index.js @@ -0,0 +1,2 @@ +!function(t,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports):"function"==typeof define&&define.amd?define(["exports"],o):o(t.attributesIO={})}(this,function(t){"use strict";function o(){return new e}var e=function(){function t(){}return t.prototype.create=function(t,o){throw new Error("Method is not supported.")},t.prototype.update=function(t,o,e){throw new Error("Method is not supported.")},t.prototype.read=function(t,o,e){var r=e.keys().filter(function(t){return e[t]&&e[t].fetch}).map(function(t){return e[t].fetch(o)}),n=Promise.all(r).then(function(){});return n.abort=function(){r.forEach(function(t){return t.abort&&t.abort()})},n},t.prototype.destroy=function(t,o){throw new Error("Method is not supported.")},t.prototype.list=function(t){throw new Error("Method is not supported.")},t.prototype.subscribe=function(t){},t.prototype.unsubscribe=function(t){},t}();t.create=o,t.attributesIO=o,t.AttributesEndpoint=e,Object.defineProperty(t,"__esModule",{value:!0})}); +//# sourceMappingURL=index.js.map diff --git a/endpoints/attributes/dist/index.js.map b/endpoints/attributes/dist/index.js.map new file mode 100644 index 0000000..42998ae --- /dev/null +++ b/endpoints/attributes/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { IOEndpoint, IOOptions, IOPromise } from 'type-r'\n\nexport function create(){\n return new AttributesEndpoint();\n}\n\nexport { create as attributesIO };\n\nexport class AttributesEndpoint implements IOEndpoint {\n create( json, options : IOOptions ) : IOPromise {\n throw new Error( 'Method is not supported.' ); \n }\n\n update( id, json, options : IOOptions ) : IOPromise {\n throw new Error( 'Method is not supported.' ); \n }\n\n read( id, options : IOOptions, record ) : IOPromise {\n const names = record.keys().filter( name => record[ name ] && record[ name ].fetch ),\n promises = names.map( name => record[ name ].fetch( options ) ),\n promise : IOPromise = Promise.all( promises ).then( () => {} );\n\n promise.abort = function(){\n promises.forEach( x => x.abort && x.abort() );\n }\n\n return promise;\n }\n\n destroy( id, options : IOOptions ) : IOPromise {\n throw new Error( 'Method is not supported.' ); \n }\n\n list( options? : IOOptions ) : IOPromise {\n throw new Error( 'Method is not supported.' );\n }\n\n subscribe( events ) : any {}\n unsubscribe( events) : any {}\n}\n\ndeclare var Promise;"],"names":["create","AttributesEndpoint","json","options","Error","id","record","promises","keys","filter","name","fetch","map","promise","Promise","all","then","abort","forEach","x","events"],"mappings":"wMAEgBA,IACZ,OAAO,IAAIC,mBAKf,cA+BA,OA9BIA,mBAAA,SAAQC,EAAMC,GACV,MAAM,IAAIC,MAAO,6BAGrBH,mBAAA,SAAQI,EAAIH,EAAMC,GACd,MAAM,IAAIC,MAAO,6BAGrBH,iBAAA,SAAMI,EAAIF,EAAqBG,GAC3B,IACIC,EADUD,EAAOE,OAAOC,OAAQ,SAAAC,GAAQ,OAAAJ,EAAQI,IAAUJ,EAAQI,GAAOC,QACxDC,IAAK,SAAAF,GAAQ,OAAAJ,EAAQI,GAAOC,MAAOR,KACpDU,EAA2BC,QAAQC,IAAKR,GAAWS,KAAM,cAM7D,OAJAH,EAAQI,MAAQ,WACZV,EAASW,QAAS,SAAAC,GAAK,OAAAA,EAAEF,OAASE,EAAEF,WAGjCJ,GAGXZ,oBAAA,SAASI,EAAIF,GACT,MAAM,IAAIC,MAAO,6BAGrBH,iBAAA,SAAME,GACF,MAAM,IAAIC,MAAO,6BAGrBH,sBAAA,SAAWmB,KACXnB,wBAAA,SAAamB"} \ No newline at end of file diff --git a/lib/type-r/endpoints/attributes.d.ts b/endpoints/attributes/lib/index.d.ts similarity index 89% rename from lib/type-r/endpoints/attributes.d.ts rename to endpoints/attributes/lib/index.d.ts index c462640..b609a30 100644 --- a/lib/type-r/endpoints/attributes.d.ts +++ b/endpoints/attributes/lib/index.d.ts @@ -1,4 +1,4 @@ -import { IOEndpoint, IOOptions, IOPromise } from '../io-tools'; +import { IOEndpoint, IOOptions, IOPromise } from 'type-r'; export declare function create(): AttributesEndpoint; export { create as attributesIO }; export declare class AttributesEndpoint implements IOEndpoint { diff --git a/lib/type-r/endpoints/attributes.js b/endpoints/attributes/lib/index.js similarity index 97% rename from lib/type-r/endpoints/attributes.js rename to endpoints/attributes/lib/index.js index e6058c5..ffe324e 100644 --- a/lib/type-r/endpoints/attributes.js +++ b/endpoints/attributes/lib/index.js @@ -29,4 +29,4 @@ var AttributesEndpoint = (function () { return AttributesEndpoint; }()); export { AttributesEndpoint }; -//# sourceMappingURL=attributes.js.map \ No newline at end of file +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/endpoints/attributes/lib/index.js.map b/endpoints/attributes/lib/index.js.map new file mode 100644 index 0000000..808ca6c --- /dev/null +++ b/endpoints/attributes/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,MAAM;IAClB,OAAO,IAAI,kBAAkB,EAAE,CAAC;AACpC,CAAC;AAED,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,CAAC;AAElC;IAAA;IA+BA,CAAC;IA9BG,mCAAM,GAAN,UAAQ,IAAI,EAAE,OAAmB;QAC7B,MAAM,IAAI,KAAK,CAAE,0BAA0B,CAAE,CAAC;IAClD,CAAC;IAED,mCAAM,GAAN,UAAQ,EAAE,EAAE,IAAI,EAAE,OAAmB;QACjC,MAAM,IAAI,KAAK,CAAE,0BAA0B,CAAE,CAAC;IAClD,CAAC;IAED,iCAAI,GAAJ,UAAM,EAAE,EAAE,OAAmB,EAAE,MAAM;QACjC,IAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAE,UAAA,IAAI,IAAI,OAAA,MAAM,CAAE,IAAI,CAAE,IAAI,MAAM,CAAE,IAAI,CAAE,CAAC,KAAK,EAAtC,CAAsC,CAAE,EAChF,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAE,UAAA,IAAI,IAAI,OAAA,MAAM,CAAE,IAAI,CAAE,CAAC,KAAK,CAAE,OAAO,CAAE,EAA/B,CAA+B,CAAE,EAC/D,OAAO,GAAoB,OAAO,CAAC,GAAG,CAAE,QAAQ,CAAE,CAAC,IAAI,CAAE,cAAO,CAAC,CAAE,CAAC;QAExE,OAAO,CAAC,KAAK,GAAG;YACZ,QAAQ,CAAC,OAAO,CAAE,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,EAApB,CAAoB,CAAE,CAAC;QAClD,CAAC,CAAA;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,oCAAO,GAAP,UAAS,EAAE,EAAE,OAAmB;QAC5B,MAAM,IAAI,KAAK,CAAE,0BAA0B,CAAE,CAAC;IAClD,CAAC;IAED,iCAAI,GAAJ,UAAM,OAAoB;QACtB,MAAM,IAAI,KAAK,CAAE,0BAA0B,CAAE,CAAC;IAClD,CAAC;IAED,sCAAS,GAAT,UAAW,MAAM,IAAU,CAAC;IAC5B,wCAAW,GAAX,UAAa,MAAM,IAAS,CAAC;IACjC,yBAAC;AAAD,CAAC,AA/BD,IA+BC"} \ No newline at end of file diff --git a/endpoints/attributes/package.json b/endpoints/attributes/package.json new file mode 100644 index 0000000..a4874da --- /dev/null +++ b/endpoints/attributes/package.json @@ -0,0 +1,13 @@ +{ + "name": "attributesIO", + "main": "./dist/index.js", + "jsnext:main": "./lib/index.js", + "module": "./lib/index.js", + "types": "./lib/index.d.ts", + "scripts": { + "build":"../../node_modules/.bin/tsc && ../../node_modules/.bin/rollup --config" + }, + "author": "Vlad Balin", + "license": "MIT" +} + \ No newline at end of file diff --git a/endpoints/attributes/rollup.config.js b/endpoints/attributes/rollup.config.js new file mode 100644 index 0000000..7d925d1 --- /dev/null +++ b/endpoints/attributes/rollup.config.js @@ -0,0 +1,19 @@ +import resolve from 'rollup-plugin-node-resolve'; +import { uglify } from 'rollup-plugin-uglify'; +import sourcemaps from 'rollup-plugin-sourcemaps'; + +export default { + input : 'lib/index.js', + + output : { + file : 'dist/index.js', + format : 'umd', + name : 'attributesIO', + sourcemap: true + }, + plugins: [ + resolve(), //for support of `import X from "directory"` rather than verbose `import X from "directory/index"` + sourcemaps(), + uglify() + ] +}; \ No newline at end of file diff --git a/src/type-r/endpoints/attributes.ts b/endpoints/attributes/src/index.ts similarity index 93% rename from src/type-r/endpoints/attributes.ts rename to endpoints/attributes/src/index.ts index e0b8d0c..3fce12e 100644 --- a/src/type-r/endpoints/attributes.ts +++ b/endpoints/attributes/src/index.ts @@ -1,4 +1,4 @@ -import { IOEndpoint, IOOptions, IOPromise, createIOPromise } from '../io-tools' +import { IOEndpoint, IOOptions, IOPromise } from 'type-r' export function create(){ return new AttributesEndpoint(); diff --git a/endpoints/attributes/tsconfig.json b/endpoints/attributes/tsconfig.json new file mode 100644 index 0000000..671840d --- /dev/null +++ b/endpoints/attributes/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "es5", + "module":"es6", + "declaration": true, + "importHelpers": true, + "moduleResolution": "node", + "sourceMap": true, + "outDir": "./lib", + "noImplicitAny": false, + "removeComments":true, + "experimentalDecorators": true, + "baseUrl": ".", + "paths" : { + "type-r":[ "../../lib" ] + } + }, + "files":[ + "./src/index.ts" + ] + } \ No newline at end of file diff --git a/endpoints/localStorage/dist/index.js b/endpoints/localStorage/dist/index.js new file mode 100644 index 0000000..05713f3 --- /dev/null +++ b/endpoints/localStorage/dist/index.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("type-r")):"function"==typeof define&&define.amd?define(["exports","type-r"],e):e(t.localStorageIO={},t.Nested)}(this,function(t,e){"use strict";function o(t){return new r(t)}var r=function(){function t(t){this.key=t}return t.prototype.resolve=function(o){return e.createIOPromise(function(t,e){setTimeout(function(){t(o)},0)})},t.prototype.reject=function(o){return e.createIOPromise(function(t,e){setTimeout(function(){return e(o)},0)})},t.prototype.create=function(t,e){var o=this.index;return o.push(t.id=String(o[0]++)),this.index=o,this.set(t),this.resolve({id:t.id})},t.prototype.set=function(t){localStorage.setItem(this.key+"#"+t.id,JSON.stringify(t))},t.prototype.get=function(t){return JSON.parse(localStorage.getItem(this.key+"#"+t))},t.prototype.update=function(t,e,o){return e.id=t,this.set(e),this.resolve({})},t.prototype.read=function(t,e){var o=this.get(t);return o?this.resolve(o):this.reject("Not found")},t.prototype.destroy=function(e,t){return this.get(e)?(localStorage.removeItem(this.key+"#"+e),this.index=this.index.filter(function(t){return t!==e}),this.resolve({})):this.reject("Not found")},Object.defineProperty(t.prototype,"index",{get:function(){return JSON.parse(localStorage.getItem(this.key))||[0]},set:function(t){localStorage.setItem(this.key,JSON.stringify(t))},enumerable:!0,configurable:!0}),t.prototype.list=function(t){var e=this;this.index;return this.resolve(this.index.slice(1).map(function(t){return e.get(t)}))},t.prototype.subscribe=function(t){},t.prototype.unsubscribe=function(t){},t}();t.create=o,t.localStorageIO=o,t.LocalStorageEndpoint=r,Object.defineProperty(t,"__esModule",{value:!0})}); +//# sourceMappingURL=index.js.map diff --git a/endpoints/localStorage/dist/index.js.map b/endpoints/localStorage/dist/index.js.map new file mode 100644 index 0000000..47128c4 --- /dev/null +++ b/endpoints/localStorage/dist/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { IOEndpoint, IOOptions, IOPromise, createIOPromise } from 'type-r'\n\nexport type Index = number[];\n\nexport function create( key : string ){\n return new LocalStorageEndpoint( key );\n}\n\nexport { create as localStorageIO }\n\nexport class LocalStorageEndpoint implements IOEndpoint {\n constructor( public key : string ){\n }\n\n resolve( value ){\n return createIOPromise( ( resolve, reject ) => {\n setTimeout( () =>{\n resolve( value )\n }, 0 );\n });\n }\n \n reject( value ){\n return createIOPromise( ( resolve, reject ) => {\n setTimeout( () => reject( value ), 0 );\n });\n }\n\n create( json, options : IOOptions ) {\n const { index } = this;\n index.push( json.id = String( ( index[ 0 ] as number )++ ) );\n this.index = index;\n this.set( json );\n return this.resolve({ id : json.id });\n }\n\n set( json ){\n localStorage.setItem( this.key + '#' + json.id, JSON.stringify( json ) );\n }\n\n get( id ){\n return JSON.parse( localStorage.getItem( this.key + '#' + id ) );\n }\n\n update( id, json, options : IOOptions ) {\n json.id = id;\n this.set( json );\n return this.resolve( {} );\n }\n\n read( id, options : IOOptions ){\n const existing = this.get( id );\n return existing ?\n this.resolve( existing ) : \n this.reject( \"Not found\" );\n }\n\n destroy( id, options : IOOptions ){\n const existing = this.get( id );\n if( existing ){\n localStorage.removeItem( this.key + '#' + id );\n this.index = this.index.filter( x => x !== id );\n return this.resolve( {} );\n }\n else{\n return this.reject( \"Not found\" );\n }\n }\n\n get index() : ( string | number )[]{\n return JSON.parse( localStorage.getItem( this.key ) ) || [ 0 ];\n }\n\n set index( x ){\n localStorage.setItem( this.key, JSON.stringify( x ) );\n }\n\n list( options? : IOOptions ) {\n const { index } = this; \n return this.resolve( this.index.slice( 1 ).map( id => this.get( id ) ) );\n }\n\n subscribe( events ) : any {}\n unsubscribe( events) : any {}\n}"],"names":["create","key","LocalStorageEndpoint","this","value","createIOPromise","resolve","reject","setTimeout","json","options","index","push","id","String","set","localStorage","setItem","JSON","stringify","parse","getItem","existing","get","removeItem","filter","x","Object","slice","map","_this","events"],"mappings":"gPAIgBA,EAAQC,GACpB,OAAO,IAAIC,EAAsBD,oBAMjC,WAAoBA,GAAAE,SAAAF,EAyExB,OAtEIC,oBAAA,SAASE,GACL,OAAOC,kBAAiB,SAAEC,EAASC,GAC/BC,WAAY,WACRF,EAASF,IACV,MAIXF,mBAAA,SAAQE,GACJ,OAAOC,kBAAiB,SAAEC,EAASC,GAC/BC,WAAY,WAAM,OAAAD,EAAQH,IAAS,MAI3CF,mBAAA,SAAQO,EAAMC,GACF,IAAAC,aAIR,OAHAA,EAAMC,KAAMH,EAAKI,GAAKC,OAAUH,EAAO,OACvCR,KAAKQ,MAAQA,EACbR,KAAKY,IAAKN,GACHN,KAAKG,QAAQ,CAAEO,GAAKJ,EAAKI,MAGpCX,gBAAA,SAAKO,GACDO,aAAaC,QAASd,KAAKF,IAAM,IAAMQ,EAAKI,GAAIK,KAAKC,UAAWV,KAGpEP,gBAAA,SAAKW,GACD,OAAOK,KAAKE,MAAOJ,aAAaK,QAASlB,KAAKF,IAAM,IAAMY,KAG9DX,mBAAA,SAAQW,EAAIJ,EAAMC,GAGd,OAFAD,EAAKI,GAAKA,EACVV,KAAKY,IAAKN,GACHN,KAAKG,QAAS,KAGzBJ,iBAAA,SAAMW,EAAIH,GACN,IAAMY,EAAWnB,KAAKoB,IAAKV,GAC3B,OAAOS,EACHnB,KAAKG,QAASgB,GACdnB,KAAKI,OAAQ,cAGrBL,oBAAA,SAASW,EAAIH,GAET,OADiBP,KAAKoB,IAAKV,IAEvBG,aAAaQ,WAAYrB,KAAKF,IAAM,IAAMY,GAC1CV,KAAKQ,MAAQR,KAAKQ,MAAMc,OAAQ,SAAAC,GAAK,OAAAA,IAAMb,IACpCV,KAAKG,QAAS,KAGdH,KAAKI,OAAQ,cAI5BoB,sBAAIzB,yBAAJ,WACI,OAAOgB,KAAKE,MAAOJ,aAAaK,QAASlB,KAAKF,OAAW,CAAE,QAG/D,SAAWyB,GACPV,aAAaC,QAASd,KAAKF,IAAKiB,KAAKC,UAAWO,qCAGpDxB,iBAAA,SAAMQ,GAAN,sBAEI,OAAOP,KAAKG,QAASH,KAAKQ,MAAMiB,MAAO,GAAIC,IAAK,SAAAhB,GAAM,OAAAiB,EAAKP,IAAKV,OAGpEX,sBAAA,SAAW6B,KACX7B,wBAAA,SAAa6B"} \ No newline at end of file diff --git a/lib/type-r/endpoints/localStorage.d.ts b/endpoints/localStorage/lib/index.d.ts similarity index 92% rename from lib/type-r/endpoints/localStorage.d.ts rename to endpoints/localStorage/lib/index.d.ts index b4f3395..fc903e4 100644 --- a/lib/type-r/endpoints/localStorage.d.ts +++ b/endpoints/localStorage/lib/index.d.ts @@ -1,4 +1,4 @@ -import { IOEndpoint, IOOptions, IOPromise } from '../io-tools'; +import { IOEndpoint, IOOptions, IOPromise } from 'type-r'; export declare type Index = number[]; export declare function create(key: string): LocalStorageEndpoint; export { create as localStorageIO }; diff --git a/lib/type-r/endpoints/localStorage.js b/endpoints/localStorage/lib/index.js similarity index 96% rename from lib/type-r/endpoints/localStorage.js rename to endpoints/localStorage/lib/index.js index e32aa7d..be38960 100644 --- a/lib/type-r/endpoints/localStorage.js +++ b/endpoints/localStorage/lib/index.js @@ -1,4 +1,4 @@ -import { createIOPromise } from '../io-tools'; +import { createIOPromise } from 'type-r'; export function create(key) { return new LocalStorageEndpoint(key); } @@ -74,4 +74,4 @@ var LocalStorageEndpoint = (function () { return LocalStorageEndpoint; }()); export { LocalStorageEndpoint }; -//# sourceMappingURL=localStorage.js.map \ No newline at end of file +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/endpoints/localStorage/lib/index.js.map b/endpoints/localStorage/lib/index.js.map new file mode 100644 index 0000000..c59ee9f --- /dev/null +++ b/endpoints/localStorage/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/endpoints/localStorage/package.json b/endpoints/localStorage/package.json new file mode 100644 index 0000000..1d5d208 --- /dev/null +++ b/endpoints/localStorage/package.json @@ -0,0 +1,13 @@ +{ + "name": "localStorageIO", + "main": "./dist/index.js", + "jsnext:main": "./lib/index.js", + "module": "./lib/index.js", + "types": "./lib/index.d.ts", + "scripts": { + "build":"../../node_modules/.bin/tsc && ../../node_modules/.bin/rollup --config" + }, + "author": "Vlad Balin", + "license": "MIT" +} + \ No newline at end of file diff --git a/endpoints/localStorage/rollup.config.js b/endpoints/localStorage/rollup.config.js new file mode 100644 index 0000000..5d87a27 --- /dev/null +++ b/endpoints/localStorage/rollup.config.js @@ -0,0 +1,23 @@ +import resolve from 'rollup-plugin-node-resolve'; +import { uglify } from 'rollup-plugin-uglify'; +import sourcemaps from 'rollup-plugin-sourcemaps'; + +export default { + input : 'lib/index.js', + external : "type-r", + + output : { + file : 'dist/index.js', + format : 'umd', + name : 'localStorageIO', + sourcemap: true, + globals : { + "type-r":"Nested" + } + }, + plugins: [ + resolve(), //for support of `import X from "directory"` rather than verbose `import X from "directory/index"` + sourcemaps(), + uglify() + ] +}; \ No newline at end of file diff --git a/src/type-r/endpoints/localStorage.ts b/endpoints/localStorage/src/index.ts similarity index 99% rename from src/type-r/endpoints/localStorage.ts rename to endpoints/localStorage/src/index.ts index 5d5e110..d024c3c 100644 --- a/src/type-r/endpoints/localStorage.ts +++ b/endpoints/localStorage/src/index.ts @@ -1,4 +1,4 @@ -import { IOEndpoint, IOOptions, IOPromise, createIOPromise } from '../io-tools' +import { IOEndpoint, IOOptions, IOPromise, createIOPromise } from 'type-r' export type Index = number[]; diff --git a/endpoints/localStorage/tsconfig.json b/endpoints/localStorage/tsconfig.json new file mode 100644 index 0000000..671840d --- /dev/null +++ b/endpoints/localStorage/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "es5", + "module":"es6", + "declaration": true, + "importHelpers": true, + "moduleResolution": "node", + "sourceMap": true, + "outDir": "./lib", + "noImplicitAny": false, + "removeComments":true, + "experimentalDecorators": true, + "baseUrl": ".", + "paths" : { + "type-r":[ "../../lib" ] + } + }, + "files":[ + "./src/index.ts" + ] + } \ No newline at end of file diff --git a/endpoints/memory/dist/index.js b/endpoints/memory/dist/index.js new file mode 100644 index 0000000..0deb6e0 --- /dev/null +++ b/endpoints/memory/dist/index.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("type-r")):"function"==typeof define&&define.amd?define(["exports","type-r"],e):e(t.memoryIO={},t.Nested)}(this,function(t,e){"use strict";function i(t,e){return void 0===t&&(t=[]),void 0===e&&(e=50),new r(t,e)}var r=function(){function t(t,e){this.delay=e,this.index=[0],this.items={};for(var i=0,r=t;i {\n setTimeout( () => resolve( value ), this.delay );\n });\n }\n \n reject( value ){\n return createIOPromise( ( resolve, reject ) => {\n setTimeout( () => reject( value ), this.delay );\n });\n }\n\n constructor( init : object[], public delay : number ){\n for( let obj of init ){\n this.create( obj, {} );\n }\n }\n\n index : Index = [ 0 ];\n items = {};\n\n generateId( a_id ){\n // Update index counter...\n const id = Number( a_id );\n if( !isNaN( id ) ){\n this.index[ 0 ] = Math.max( this.index[ 0 ] as number, id );\n }\n\n // Return id...\n return a_id || String( ( this.index[ 0 ] as number ) ++ );\n }\n\n create( json, options ) {\n const id = json.id = this.generateId( json.id );\n this.index.push( id );\n this.items[ id ] = json;\n return this.resolve({ id });\n }\n\n update( id, json, options ) {\n this.items[ id ] = json;\n return this.resolve( {} );\n }\n\n read( id, options ){\n const existing = this.items[ id ];\n return existing ?\n this.resolve( existing ) : \n this.reject( \"Not found\" );\n }\n\n destroy( id, options ){\n const existing = this.items[ id ];\n if( existing ){\n delete this.items[ id ];\n this.index = this.index.filter( x => x !== id );\n return this.resolve( {} );\n }\n else{\n return this.reject( \"Not found\" );\n }\n }\n\n list( options? : object ) {\n return this.resolve( this.index.slice( 1 ).map( id => this.items[ id ]) );\n }\n\n subscribe( events ) : any {}\n unsubscribe( events) : any {}\n}"],"names":["create","init","delay","MemoryEndpoint","this","init_1","_i","obj","value","createIOPromise","resolve","reject","setTimeout","_this","a_id","id","Number","isNaN","index","Math","max","String","json","options","generateId","push","items","existing","filter","x","slice","map","events"],"mappings":"0OAIgBA,EAAQC,EAAWC,GAC/B,oBADoBD,mBAAWC,MACxB,IAAIC,EAAgBF,EAAMC,oBAkBjC,WAAaD,EAAwBC,GAAAE,WAAAF,EAMrCE,WAAgB,CAAE,GAClBA,WAAQ,GANJ,IAAgB,QAAAC,IAAAC,WAAAA,IAAM,CAAjB,IAAIC,OACLH,KAAKJ,OAAQO,EAAK,KAuD9B,OArEIJ,oBAAA,SAASK,GAAT,WACI,OAAOC,kBAAiB,SAAEC,EAASC,GAC/BC,WAAY,WAAM,OAAAF,EAASF,IAASK,EAAKX,UAIjDC,mBAAA,SAAQK,GAAR,WACI,OAAOC,kBAAiB,SAAEC,EAASC,GAC/BC,WAAY,WAAM,OAAAD,EAAQH,IAASK,EAAKX,UAahDC,uBAAA,SAAYW,GAER,IAAMC,EAAKC,OAAQF,GAMnB,OALKG,MAAOF,KACRX,KAAKc,MAAO,GAAMC,KAAKC,IAAKhB,KAAKc,MAAO,GAAeH,IAIpDD,GAAQO,OAAUjB,KAAKc,MAAO,OAGzCf,mBAAA,SAAQmB,EAAMC,GACV,IAAMR,EAAKO,EAAKP,GAAKX,KAAKoB,WAAYF,EAAKP,IAG3C,OAFAX,KAAKc,MAAMO,KAAMV,GACjBX,KAAKsB,MAAOX,GAAOO,EACZlB,KAAKM,QAAQ,CAAEK,QAG1BZ,mBAAA,SAAQY,EAAIO,EAAMC,GAEd,OADAnB,KAAKsB,MAAOX,GAAOO,EACZlB,KAAKM,QAAS,KAGzBP,iBAAA,SAAMY,EAAIQ,GACN,IAAMI,EAAWvB,KAAKsB,MAAOX,GAC7B,OAAOY,EACHvB,KAAKM,QAASiB,GACdvB,KAAKO,OAAQ,cAGrBR,oBAAA,SAASY,EAAIQ,GAET,OADiBnB,KAAKsB,MAAOX,WAElBX,KAAKsB,MAAOX,GACnBX,KAAKc,MAAQd,KAAKc,MAAMU,OAAQ,SAAAC,GAAK,OAAAA,IAAMd,IACpCX,KAAKM,QAAS,KAGdN,KAAKO,OAAQ,cAI5BR,iBAAA,SAAMoB,GAAN,WACI,OAAOnB,KAAKM,QAASN,KAAKc,MAAMY,MAAO,GAAIC,IAAK,SAAAhB,GAAM,OAAAF,EAAKa,MAAOX,OAGtEZ,sBAAA,SAAW6B,KACX7B,wBAAA,SAAa6B"} \ No newline at end of file diff --git a/lib/type-r/endpoints/memory.d.ts b/endpoints/memory/lib/index.d.ts similarity index 89% rename from lib/type-r/endpoints/memory.d.ts rename to endpoints/memory/lib/index.d.ts index 355441f..70233f1 100644 --- a/lib/type-r/endpoints/memory.d.ts +++ b/endpoints/memory/lib/index.d.ts @@ -1,4 +1,4 @@ -import { IOEndpoint, IOPromise } from '../io-tools'; +import { IOEndpoint, IOPromise } from 'type-r'; export declare type Index = (number | string)[]; export declare function create(init?: any[], delay?: number): MemoryEndpoint; export { create as memoryIO }; @@ -9,7 +9,7 @@ export declare class MemoryEndpoint implements IOEndpoint { constructor(init: object[], delay: number); index: Index; items: {}; - generateId(a_id: any): string; + generateId(a_id: any): any; create(json: any, options: any): IOPromise; update(id: any, json: any, options: any): IOPromise; read(id: any, options: any): IOPromise; diff --git a/lib/type-r/endpoints/memory.js b/endpoints/memory/lib/index.js similarity index 94% rename from lib/type-r/endpoints/memory.js rename to endpoints/memory/lib/index.js index f04ad7c..6576c3b 100644 --- a/lib/type-r/endpoints/memory.js +++ b/endpoints/memory/lib/index.js @@ -1,4 +1,4 @@ -import { createIOPromise } from '../io-tools'; +import { createIOPromise } from 'type-r'; export function create(init, delay) { if (init === void 0) { init = []; } if (delay === void 0) { delay = 50; } @@ -31,9 +31,8 @@ var MemoryEndpoint = (function () { var id = Number(a_id); if (!isNaN(id)) { this.index[0] = Math.max(this.index[0], id); - return String(id); } - return String(this.index[0]++); + return a_id || String(this.index[0]++); }; MemoryEndpoint.prototype.create = function (json, options) { var id = json.id = this.generateId(json.id); @@ -71,4 +70,4 @@ var MemoryEndpoint = (function () { return MemoryEndpoint; }()); export { MemoryEndpoint }; -//# sourceMappingURL=memory.js.map \ No newline at end of file +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/endpoints/memory/lib/index.js.map b/endpoints/memory/lib/index.js.map new file mode 100644 index 0000000..9722c43 --- /dev/null +++ b/endpoints/memory/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/endpoints/memory/package.json b/endpoints/memory/package.json new file mode 100644 index 0000000..4696909 --- /dev/null +++ b/endpoints/memory/package.json @@ -0,0 +1,13 @@ +{ + "name": "memoryIO", + "main": "./dist/index.js", + "jsnext:main": "./lib/index.js", + "module": "./lib/index.js", + "types": "./lib/index.d.ts", + "scripts": { + "build":"../../node_modules/.bin/tsc && ../../node_modules/.bin/rollup --config" + }, + "author": "Vlad Balin", + "license": "MIT" +} + \ No newline at end of file diff --git a/endpoints/memory/rollup.config.js b/endpoints/memory/rollup.config.js new file mode 100644 index 0000000..12452a1 --- /dev/null +++ b/endpoints/memory/rollup.config.js @@ -0,0 +1,23 @@ +import resolve from 'rollup-plugin-node-resolve'; +import { uglify } from 'rollup-plugin-uglify'; +import sourcemaps from 'rollup-plugin-sourcemaps'; + +export default { + input : 'lib/index.js', + external : "type-r", + + output : { + file : 'dist/index.js', + format : 'umd', + name : 'memoryIO', + sourcemap: true, + globals : { + "type-r":"Nested" + } + }, + plugins: [ + resolve(), //for support of `import X from "directory"` rather than verbose `import X from "directory/index"` + sourcemaps(), + uglify() + ] +}; \ No newline at end of file diff --git a/src/type-r/endpoints/memory.ts b/endpoints/memory/src/index.ts similarity index 90% rename from src/type-r/endpoints/memory.ts rename to endpoints/memory/src/index.ts index ad3fa1e..f898f80 100644 --- a/src/type-r/endpoints/memory.ts +++ b/endpoints/memory/src/index.ts @@ -1,4 +1,4 @@ -import { IOEndpoint, IOPromise, createIOPromise } from '../io-tools' +import { IOEndpoint, IOPromise, createIOPromise } from 'type-r' export type Index = ( number | string )[]; @@ -31,13 +31,14 @@ export class MemoryEndpoint implements IOEndpoint { items = {}; generateId( a_id ){ + // Update index counter... const id = Number( a_id ); if( !isNaN( id ) ){ this.index[ 0 ] = Math.max( this.index[ 0 ] as number, id ); - return String( id ); } - return String( ( this.index[ 0 ] as number ) ++ ); + // Return id... + return a_id || String( ( this.index[ 0 ] as number ) ++ ); } create( json, options ) { diff --git a/endpoints/memory/tsconfig.json b/endpoints/memory/tsconfig.json new file mode 100644 index 0000000..671840d --- /dev/null +++ b/endpoints/memory/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "es5", + "module":"es6", + "declaration": true, + "importHelpers": true, + "moduleResolution": "node", + "sourceMap": true, + "outDir": "./lib", + "noImplicitAny": false, + "removeComments":true, + "experimentalDecorators": true, + "baseUrl": ".", + "paths" : { + "type-r":[ "../../lib" ] + } + }, + "files":[ + "./src/index.ts" + ] + } \ No newline at end of file diff --git a/endpoints/proxy/README.md b/endpoints/proxy/README.md new file mode 100644 index 0000000..2553a4a --- /dev/null +++ b/endpoints/proxy/README.md @@ -0,0 +1,15 @@ +# Proxy Endpoint + +Create IO endpoint from the Record class. This endpoint is designed for use on the server side data layer managed by Type-R. + +Assuming that you have Type-R records with endpoints working with the database, you can create an endpoint which will use +Record subclass as a transport. + + import { proxyIO } from 'type-r/endpoint/proxy' + + ... + + const usersIO = proxyIO( User ); + +This endpoint can be connected to the RESTful endpoint API on the server side which will serve JSON to the restfulIO endpoint on the client. +An advantage of this approach is that JSON schema will be transparently validated on the server side by the Type-R. \ No newline at end of file diff --git a/endpoints/proxy/dist/index.js b/endpoints/proxy/dist/index.js new file mode 100644 index 0000000..f246141 --- /dev/null +++ b/endpoints/proxy/dist/index.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.proxyIO={})}(this,function(t){"use strict";function i(i,u,c,s){return new(c||(c=Promise))(function(t,e){function n(t){try{o(s.next(t))}catch(t){e(t)}}function r(t){try{o(s.throw(t))}catch(t){e(t)}}function o(e){e.done?t(e.value):new c(function(t){t(e.value)}).then(n,r)}o((s=s.apply(i,u||[])).next())})}function u(n,r){var o,i,u,t,c={label:0,sent:function(){if(1&u[0])throw u[1];return u[1]},trys:[],ops:[]};return t={next:e(0),throw:e(1),return:e(2)},"function"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function e(e){return function(t){return function(e){if(o)throw new TypeError("Generator is already executing.");for(;c;)try{if(o=1,i&&(u=2&e[0]?i.return:e[0]?i.throw||((u=i.return)&&u.call(i),0):i.next)&&!(u=u.call(i,e[1])).done)return u;switch(i=0,u&&(e=[2&e[0],u.value]),e[0]){case 0:case 1:u=e;break;case 4:return c.label++,{value:e[1],done:!1};case 5:c.label++,i=e[1],e=[0];continue;case 7:e=c.ops.pop(),c.trys.pop();continue;default:if(!(u=0<(u=c.trys).length&&u[u.length-1])&&(6===e[0]||2===e[0])){c=0;continue}if(3===e[0]&&(!u||e[1]>u[0]&&e[1]= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { IOEndpoint, IOOptions, IOPromise, createIOPromise, Record } from 'type-r'\n\nexport function proxyIO( record : typeof Record ){\n return new ProxyEndpoint( record );\n}\n\nexport class ProxyEndpoint implements IOEndpoint {\n Record : typeof Record\n \n get endpoint(){\n return this.Record.prototype._endpoint;\n }\n\n constructor( record : typeof Record ){\n this.Record = record;\n\n // Create proxy methods...\n const source = Object.getPrototypeOf( this.endpoint );\n\n Object.keys( source ).forEach( key => {\n if( !this[ key ] && typeof source[ key ] === 'function' ){\n this[ key ] = function(){\n return source[ key ].apply( this.endpoint, arguments );\n }\n }\n });\n }\n\n async subscribe( events, target ){\n return this.endpoint.subscribe( events, target );\n }\n\n unsubscribe( events, target ){\n this.endpoint.unsubscribe( events, target );\n }\n\n async list( options ){\n const coll = new this.Record.Collection();\n await coll.fetch( options );\n return coll.toJSON();\n }\n\n async update( id, json, options ){\n json.id = id;\n const doc : any = new this.Record( json, { parse : true });\n await doc.save( options );\n return { _cas : doc._cas };\n }\n\n async create( json, options ){\n const doc : any = new this.Record( json, { parse : true });\n await doc.save( options );\n return { id : doc.id, _cas : doc._cas, _type : doc._type };\n }\n\n async read( id, options : object ){\n const doc = new this.Record({ id });\n await doc.fetch( options );\n return doc.toJSON();\n }\n\n async destroy( id : string, options : object ){\n await this.endpoint.destroy( id, options );\n return {};\n }\n}\n"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","record","Record","source","Object","getPrototypeOf","endpoint","keys","forEach","key","_this","arguments","ProxyEndpoint","prototype","_endpoint","events","target","subscribe","unsubscribe","options","coll","Collection","fetch","_a","toJSON","id","json","doc","parse","save","_cas","_type","destroy"],"mappings":"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"} \ No newline at end of file diff --git a/endpoints/proxy/lib/index.d.ts b/endpoints/proxy/lib/index.d.ts new file mode 100644 index 0000000..9da8245 --- /dev/null +++ b/endpoints/proxy/lib/index.d.ts @@ -0,0 +1,20 @@ +import { IOEndpoint, Record } from 'type-r'; +export declare function proxyIO(record: typeof Record): ProxyEndpoint; +export declare class ProxyEndpoint implements IOEndpoint { + Record: typeof Record; + readonly endpoint: IOEndpoint; + constructor(record: typeof Record); + subscribe(events: any, target: any): Promise; + unsubscribe(events: any, target: any): void; + list(options: any): Promise; + update(id: any, json: any, options: any): Promise<{ + _cas: any; + }>; + create(json: any, options: any): Promise<{ + id: any; + _cas: any; + _type: any; + }>; + read(id: any, options: object): Promise; + destroy(id: string, options: object): Promise<{}>; +} diff --git a/endpoints/proxy/lib/index.js b/endpoints/proxy/lib/index.js new file mode 100644 index 0000000..c64d416 --- /dev/null +++ b/endpoints/proxy/lib/index.js @@ -0,0 +1,111 @@ +import * as tslib_1 from "tslib"; +export function proxyIO(record) { + return new ProxyEndpoint(record); +} +var ProxyEndpoint = (function () { + function ProxyEndpoint(record) { + var _this = this; + this.Record = record; + var source = Object.getPrototypeOf(this.endpoint); + Object.keys(source).forEach(function (key) { + if (!_this[key] && typeof source[key] === 'function') { + _this[key] = function () { + return source[key].apply(this.endpoint, arguments); + }; + } + }); + } + Object.defineProperty(ProxyEndpoint.prototype, "endpoint", { + get: function () { + return this.Record.prototype._endpoint; + }, + enumerable: true, + configurable: true + }); + ProxyEndpoint.prototype.subscribe = function (events, target) { + return tslib_1.__awaiter(this, void 0, void 0, function () { + return tslib_1.__generator(this, function (_a) { + return [2, this.endpoint.subscribe(events, target)]; + }); + }); + }; + ProxyEndpoint.prototype.unsubscribe = function (events, target) { + this.endpoint.unsubscribe(events, target); + }; + ProxyEndpoint.prototype.list = function (options) { + return tslib_1.__awaiter(this, void 0, void 0, function () { + var coll; + return tslib_1.__generator(this, function (_a) { + switch (_a.label) { + case 0: + coll = new this.Record.Collection(); + return [4, coll.fetch(options)]; + case 1: + _a.sent(); + return [2, coll.toJSON()]; + } + }); + }); + }; + ProxyEndpoint.prototype.update = function (id, json, options) { + return tslib_1.__awaiter(this, void 0, void 0, function () { + var doc; + return tslib_1.__generator(this, function (_a) { + switch (_a.label) { + case 0: + json.id = id; + doc = new this.Record(json, { parse: true }); + return [4, doc.save(options)]; + case 1: + _a.sent(); + return [2, { _cas: doc._cas }]; + } + }); + }); + }; + ProxyEndpoint.prototype.create = function (json, options) { + return tslib_1.__awaiter(this, void 0, void 0, function () { + var doc; + return tslib_1.__generator(this, function (_a) { + switch (_a.label) { + case 0: + doc = new this.Record(json, { parse: true }); + return [4, doc.save(options)]; + case 1: + _a.sent(); + return [2, { id: doc.id, _cas: doc._cas, _type: doc._type }]; + } + }); + }); + }; + ProxyEndpoint.prototype.read = function (id, options) { + return tslib_1.__awaiter(this, void 0, void 0, function () { + var doc; + return tslib_1.__generator(this, function (_a) { + switch (_a.label) { + case 0: + doc = new this.Record({ id: id }); + return [4, doc.fetch(options)]; + case 1: + _a.sent(); + return [2, doc.toJSON()]; + } + }); + }); + }; + ProxyEndpoint.prototype.destroy = function (id, options) { + return tslib_1.__awaiter(this, void 0, void 0, function () { + return tslib_1.__generator(this, function (_a) { + switch (_a.label) { + case 0: return [4, this.endpoint.destroy(id, options)]; + case 1: + _a.sent(); + return [2, {}]; + } + }); + }); + }; + return ProxyEndpoint; +}()); +export { ProxyEndpoint }; +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/endpoints/proxy/lib/index.js.map b/endpoints/proxy/lib/index.js.map new file mode 100644 index 0000000..8e8919f --- /dev/null +++ b/endpoints/proxy/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/endpoints/proxy/package.json b/endpoints/proxy/package.json new file mode 100644 index 0000000..dd09c6c --- /dev/null +++ b/endpoints/proxy/package.json @@ -0,0 +1,13 @@ +{ + "name": "proxyIO", + "main": "./dist/index.js", + "jsnext:main": "./lib/index.js", + "module": "./lib/index.js", + "types": "./lib/index.d.ts", + "scripts": { + "build":"../../node_modules/.bin/tsc && ../../node_modules/.bin/rollup --config" + }, + "author": "Vlad Balin", + "license": "MIT" +} + \ No newline at end of file diff --git a/endpoints/proxy/rollup.config.js b/endpoints/proxy/rollup.config.js new file mode 100644 index 0000000..79c1e75 --- /dev/null +++ b/endpoints/proxy/rollup.config.js @@ -0,0 +1,23 @@ +import resolve from 'rollup-plugin-node-resolve'; +import { uglify } from 'rollup-plugin-uglify'; +import sourcemaps from 'rollup-plugin-sourcemaps'; + +export default { + input : 'lib/index.js', + external : "type-r", + + output : { + file : 'dist/index.js', + format : 'umd', + name : 'proxyIO', + sourcemap: true, + globals : { + "type-r":"Nested" + } + }, + plugins: [ + resolve(), //for support of `import X from "directory"` rather than verbose `import X from "directory/index"` + sourcemaps(), + uglify() + ] +}; \ No newline at end of file diff --git a/endpoints/proxy/src/index.ts b/endpoints/proxy/src/index.ts new file mode 100644 index 0000000..a748997 --- /dev/null +++ b/endpoints/proxy/src/index.ts @@ -0,0 +1,66 @@ +import { IOEndpoint, IOOptions, IOPromise, createIOPromise, Record } from 'type-r' + +export function proxyIO( record : typeof Record ){ + return new ProxyEndpoint( record ); +} + +export class ProxyEndpoint implements IOEndpoint { + Record : typeof Record + + get endpoint(){ + return this.Record.prototype._endpoint; + } + + constructor( record : typeof Record ){ + this.Record = record; + + // Create proxy methods... + const source = Object.getPrototypeOf( this.endpoint ); + + Object.keys( source ).forEach( key => { + if( !this[ key ] && typeof source[ key ] === 'function' ){ + this[ key ] = function(){ + return source[ key ].apply( this.endpoint, arguments ); + } + } + }); + } + + async subscribe( events, target ){ + return this.endpoint.subscribe( events, target ); + } + + unsubscribe( events, target ){ + this.endpoint.unsubscribe( events, target ); + } + + async list( options ){ + const coll = new this.Record.Collection(); + await coll.fetch( options ); + return coll.toJSON(); + } + + async update( id, json, options ){ + json.id = id; + const doc : any = new this.Record( json, { parse : true }); + await doc.save( options ); + return { _cas : doc._cas }; + } + + async create( json, options ){ + const doc : any = new this.Record( json, { parse : true }); + await doc.save( options ); + return { id : doc.id, _cas : doc._cas, _type : doc._type }; + } + + async read( id, options : object ){ + const doc = new this.Record({ id }); + await doc.fetch( options ); + return doc.toJSON(); + } + + async destroy( id : string, options : object ){ + await this.endpoint.destroy( id, options ); + return {}; + } +} diff --git a/endpoints/proxy/tsconfig.json b/endpoints/proxy/tsconfig.json new file mode 100644 index 0000000..671840d --- /dev/null +++ b/endpoints/proxy/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "es5", + "module":"es6", + "declaration": true, + "importHelpers": true, + "moduleResolution": "node", + "sourceMap": true, + "outDir": "./lib", + "noImplicitAny": false, + "removeComments":true, + "experimentalDecorators": true, + "baseUrl": ".", + "paths" : { + "type-r":[ "../../lib" ] + } + }, + "files":[ + "./src/index.ts" + ] + } \ No newline at end of file diff --git a/endpoints/restful/dist/index.js b/endpoints/restful/dist/index.js new file mode 100644 index 0000000..0cb26e1 --- /dev/null +++ b/endpoints/restful/dist/index.js @@ -0,0 +1,2 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.restfulIO={})}(this,function(t){"use strict";var c=function(){return(c=Object.assign||function(t){for(var e,r=1,n=arguments.length;r= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { IOEndpoint, IOOptions, IOPromise, createIOPromise } from 'type-r'\n\nexport function create( url : string, fetchOptions? : Partial ){\n return new RestfulEndpoint( url, fetchOptions );\n}\n\nexport { create as restfulIO }\n\nexport interface RestfulIOOptions extends IOOptions {\n params? : object,\n options? : RequestInit\n}\n\nexport type RestfulFetchOptions = /* subset of RequestInit */{\n cache?: RequestCache;\n credentials?: RequestCredentials;\n mode?: RequestMode;\n redirect?: RequestRedirect;\n referrerPolicy?: ReferrerPolicy;\n}\n\nexport class RestfulEndpoint implements IOEndpoint {\n\n constructor( public url : string, public fetchOptions? : Partial ) {\n }\n\n public static defaultFetchOptions : RestfulFetchOptions = {\n cache: \"no-cache\",\n credentials: \"same-origin\",\n mode: \"cors\",\n redirect: \"error\",\n }\n\n create( json, options : RestfulIOOptions, record ) {\n return this.request( 'POST', this.collectionUrl( record, options ), options, json );\n }\n\n update( id, json, options : RestfulIOOptions, record ) {\n return this.request( 'PUT', this.objectUrl( record, id, options ), options, json );\n }\n\n read( id, options : IOOptions, record ){\n return this.request( 'GET', this.objectUrl( record, id, options ), options );\n }\n\n destroy( id, options : RestfulIOOptions, record ){\n return this.request( 'DELETE', this.objectUrl( record, id, options ), options );\n }\n\n list( options : RestfulIOOptions, collection ) {\n return this.request( 'GET', this.collectionUrl( collection, options ), options );\n }\n\n subscribe( events ) : any {}\n unsubscribe( events ) : any {}\n\n\n protected isRelativeUrl( url ) {\n return url.indexOf( './' ) === 0;\n }\n\n protected removeTrailingSlash( url : string ) {\n const endsWithSlash = url.charAt( url.length - 1 ) === '/';\n return endsWithSlash ? url.substr( 0, url.length - 1 ) : url;\n }\n\n protected getRootUrl( recordOrCollection ) {\n const { url } = this\n if( this.isRelativeUrl( url ) ) {\n const owner = recordOrCollection.getOwner(),\n ownerUrl = owner.getEndpoint().getUrl( owner );\n\n return this.removeTrailingSlash( ownerUrl ) + '/' + url.substr( 2 )\n } else {\n return url;\n }\n }\n\n protected getUrl( record ) {\n const url = this.getRootUrl( record );\n return record.isNew()\n ? url\n : this.removeTrailingSlash( url ) + '/' + record.id\n }\n\n protected objectUrl( record, id, options ){\n return appendParams( this.getUrl( record ), options.params );\n }\n\n protected collectionUrl( collection, options ){\n return appendParams( this.getRootUrl( collection ), options.params );\n }\n\n protected buildRequestOptions( method : string, options? : RequestInit, body? ) : RequestInit {\n const mergedOptions : RequestInit = Object.assign( {},\n RestfulEndpoint.defaultFetchOptions,\n this.fetchOptions,\n options\n );\n\n const {headers, ...rest} = mergedOptions,\n resultOptions : RequestInit = {\n method,\n headers: {\n 'Content-Type': 'application/json',\n ...headers\n },\n ...rest\n };\n\n if( body ) {\n resultOptions.body = JSON.stringify( body );\n }\n return resultOptions;\n }\n\n protected request( method : string, url : string, {options} : RestfulIOOptions, body? ) : Promise {\n\n return fetch( url, this.buildRequestOptions( method, options, body ) )\n .then( response => {\n if( response.ok ) {\n return response.json()\n } else {\n throw new Error( response.statusText )\n }\n } );\n }\n}\n\nfunction appendParams( url, params? ) {\n var esc = encodeURIComponent;\n return params\n ? url + '?' + Object.keys( params )\n .map( k => esc( k ) + '=' + esc( params[ k ] ) )\n .join( '&' )\n : url;\n}\n\n\n"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","create","url","fetchOptions","RestfulEndpoint","json","options","record","request","collectionUrl","id","objectUrl","collection","events","indexOf","charAt","substr","recordOrCollection","isRelativeUrl","owner","getOwner","ownerUrl","getEndpoint","getUrl","removeTrailingSlash","getRootUrl","isNew","appendParams","params","method","body","mergedOptions","defaultFetchOptions","headers","rest","e","getOwnPropertySymbols","resultOptions","Content-Type","JSON","stringify","_a","fetch","buildRequestOptions","then","response","ok","Error","statusText","cache","credentials","mode","redirect","esc","encodeURIComponent","keys","map","k","join"],"mappings":"4LA6BO,IAAIA,EAAW,WAQlB,OAPAA,EAAWC,OAAOC,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACOJ,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAE9E,OAAON,IAEKU,MAAMC,KAAMP,qBCnChBQ,EAAQC,EAAcC,GAClC,OAAO,IAAIC,EAAiBF,EAAKC,oBAoBjC,WAAoBD,EAAqBC,GAArBH,SAAAE,EAAqBF,kBAAAG,EAwG7C,OA9FIC,mBAAA,SAAQC,EAAMC,EAA4BC,GACtC,OAAOP,KAAKQ,QAAS,OAAQR,KAAKS,cAAeF,EAAQD,GAAWA,EAASD,IAGjFD,mBAAA,SAAQM,EAAIL,EAAMC,EAA4BC,GAC1C,OAAOP,KAAKQ,QAAS,MAAOR,KAAKW,UAAWJ,EAAQG,EAAIJ,GAAWA,EAASD,IAGhFD,iBAAA,SAAMM,EAAIJ,EAAqBC,GAC3B,OAAOP,KAAKQ,QAAS,MAAOR,KAAKW,UAAWJ,EAAQG,EAAIJ,GAAWA,IAGvEF,oBAAA,SAASM,EAAIJ,EAA4BC,GACrC,OAAOP,KAAKQ,QAAS,SAAUR,KAAKW,UAAWJ,EAAQG,EAAIJ,GAAWA,IAG1EF,iBAAA,SAAME,EAA4BM,GAC9B,OAAOZ,KAAKQ,QAAS,MAAOR,KAAKS,cAAeG,EAAYN,GAAWA,IAG3EF,sBAAA,SAAWS,KACXT,wBAAA,SAAaS,KAGHT,0BAAV,SAAyBF,GACrB,OAA+B,IAAxBA,EAAIY,QAAS,OAGdV,gCAAV,SAA+BF,GAE3B,MADuD,MAAjCA,EAAIa,OAAQb,EAAIR,OAAS,GACxBQ,EAAIc,OAAQ,EAAGd,EAAIR,OAAS,GAAMQ,GAGnDE,uBAAV,SAAsBa,GACV,IAAAf,WACR,GAAIF,KAAKkB,cAAehB,GAAQ,CAC5B,IAAMiB,EAAgBF,EAAmBG,WACnCC,EAAgBF,EAAMG,cAAcC,OAAQJ,GAElD,OAAOnB,KAAKwB,oBAAqBH,GAAa,IAAMnB,EAAIc,OAAQ,GAEhE,OAAOd,GAILE,mBAAV,SAAkBG,GACd,IAAML,EAAMF,KAAKyB,WAAYlB,GAC7B,OAAOA,EAAOmB,QACRxB,EACAF,KAAKwB,oBAAqBtB,GAAQ,IAAMK,EAAOG,IAG/CN,sBAAV,SAAqBG,EAAQG,EAAIJ,GAC7B,OAAOqB,EAAc3B,KAAKuB,OAAQhB,GAAUD,EAAQsB,SAG9CxB,0BAAV,SAAyBQ,EAAYN,GACjC,OAAOqB,EAAc3B,KAAKyB,WAAYb,GAAcN,EAAQsB,SAGtDxB,gCAAV,SAA+ByB,EAAiBvB,EAAwBwB,GACpE,IAAMC,EAA8B5C,OAAOC,OAAQ,GAC/CgB,EAAgB4B,oBAChBhC,KAAKG,aACLG,GAGG2B,YAASC,ED5DjB,SAAgB5C,EAAG6C,GACtB,IAAI9C,EAAI,GACR,IAAK,IAAIM,KAAKL,EAAOH,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,IAAMwC,EAAErB,QAAQnB,GAAK,IAC9EN,EAAEM,GAAKL,EAAEK,IACb,GAAS,MAALL,GAAqD,mBAAjCH,OAAOiD,sBACtB,CAAA,IAAI7C,EAAI,EAAb,IAAgBI,EAAIR,OAAOiD,sBAAsB9C,GAAIC,EAAII,EAAED,OAAQH,IAAS4C,EAAErB,QAAQnB,EAAEJ,IAAM,IAC1FF,EAAEM,EAAEJ,IAAMD,EAAEK,EAAEJ,KACtB,OAAOF,kBCsDGgD,KACIR,SACAI,WACIK,eAAgB,oBACbL,IAEJC,GAMb,OAHIJ,IACAO,EAAcP,KAAOS,KAAKC,UAAWV,IAElCO,GAGDjC,oBAAV,SAAmByB,EAAiB3B,EAAcuC,EAA8BX,OAA7BxB,YAE/C,OAAOoC,MAAOxC,EAAKF,KAAK2C,oBAAqBd,EAAQvB,EAASwB,IACzDc,KAAM,SAAAC,GACH,GAAIA,EAASC,GACT,OAAOD,EAASxC,OAEhB,MAAM,IAAI0C,MAAOF,EAASG,eAjG5B5C,sBAA4C,CACtD6C,MAAO,WACPC,YAAa,cACbC,KAAM,OACNC,SAAU,cAmGlB,SAASzB,EAAczB,EAAK0B,GACxB,IAAIyB,EAAMC,mBACV,OAAO1B,EACD1B,EAAM,IAAMf,OAAOoE,KAAM3B,GACR4B,IAAK,SAAAC,GAAK,OAAAJ,EAAKI,GAAM,IAAMJ,EAAKzB,EAAQ6B,MACxCC,KAAM,KACvBxD"} \ No newline at end of file diff --git a/endpoints/restful/lib/index.d.ts b/endpoints/restful/lib/index.d.ts new file mode 100644 index 0000000..efc1284 --- /dev/null +++ b/endpoints/restful/lib/index.d.ts @@ -0,0 +1,35 @@ +import { IOEndpoint, IOOptions } from 'type-r'; +export declare function create(url: string, fetchOptions?: Partial): RestfulEndpoint; +export { create as restfulIO }; +export interface RestfulIOOptions extends IOOptions { + params?: object; + options?: RequestInit; +} +export declare type RestfulFetchOptions = { + cache?: RequestCache; + credentials?: RequestCredentials; + mode?: RequestMode; + redirect?: RequestRedirect; + referrerPolicy?: ReferrerPolicy; +}; +export declare class RestfulEndpoint implements IOEndpoint { + url: string; + fetchOptions?: Partial; + constructor(url: string, fetchOptions?: Partial); + static defaultFetchOptions: RestfulFetchOptions; + create(json: any, options: RestfulIOOptions, record: any): Promise; + update(id: any, json: any, options: RestfulIOOptions, record: any): Promise; + read(id: any, options: IOOptions, record: any): Promise; + destroy(id: any, options: RestfulIOOptions, record: any): Promise; + list(options: RestfulIOOptions, collection: any): Promise; + subscribe(events: any): any; + unsubscribe(events: any): any; + protected isRelativeUrl(url: any): boolean; + protected removeTrailingSlash(url: string): string; + protected getRootUrl(recordOrCollection: any): string; + protected getUrl(record: any): string; + protected objectUrl(record: any, id: any, options: any): any; + protected collectionUrl(collection: any, options: any): any; + protected buildRequestOptions(method: string, options?: RequestInit, body?: any): RequestInit; + protected request(method: string, url: string, { options }: RestfulIOOptions, body?: any): Promise; +} diff --git a/endpoints/restful/lib/index.js b/endpoints/restful/lib/index.js new file mode 100644 index 0000000..2326cba --- /dev/null +++ b/endpoints/restful/lib/index.js @@ -0,0 +1,94 @@ +import * as tslib_1 from "tslib"; +export function create(url, fetchOptions) { + return new RestfulEndpoint(url, fetchOptions); +} +export { create as restfulIO }; +var RestfulEndpoint = (function () { + function RestfulEndpoint(url, fetchOptions) { + this.url = url; + this.fetchOptions = fetchOptions; + } + RestfulEndpoint.prototype.create = function (json, options, record) { + return this.request('POST', this.collectionUrl(record, options), options, json); + }; + RestfulEndpoint.prototype.update = function (id, json, options, record) { + return this.request('PUT', this.objectUrl(record, id, options), options, json); + }; + RestfulEndpoint.prototype.read = function (id, options, record) { + return this.request('GET', this.objectUrl(record, id, options), options); + }; + RestfulEndpoint.prototype.destroy = function (id, options, record) { + return this.request('DELETE', this.objectUrl(record, id, options), options); + }; + RestfulEndpoint.prototype.list = function (options, collection) { + return this.request('GET', this.collectionUrl(collection, options), options); + }; + RestfulEndpoint.prototype.subscribe = function (events) { }; + RestfulEndpoint.prototype.unsubscribe = function (events) { }; + RestfulEndpoint.prototype.isRelativeUrl = function (url) { + return url.indexOf('./') === 0; + }; + RestfulEndpoint.prototype.removeTrailingSlash = function (url) { + var endsWithSlash = url.charAt(url.length - 1) === '/'; + return endsWithSlash ? url.substr(0, url.length - 1) : url; + }; + RestfulEndpoint.prototype.getRootUrl = function (recordOrCollection) { + var url = this.url; + if (this.isRelativeUrl(url)) { + var owner = recordOrCollection.getOwner(), ownerUrl = owner.getEndpoint().getUrl(owner); + return this.removeTrailingSlash(ownerUrl) + '/' + url.substr(2); + } + else { + return url; + } + }; + RestfulEndpoint.prototype.getUrl = function (record) { + var url = this.getRootUrl(record); + return record.isNew() + ? url + : this.removeTrailingSlash(url) + '/' + record.id; + }; + RestfulEndpoint.prototype.objectUrl = function (record, id, options) { + return appendParams(this.getUrl(record), options.params); + }; + RestfulEndpoint.prototype.collectionUrl = function (collection, options) { + return appendParams(this.getRootUrl(collection), options.params); + }; + RestfulEndpoint.prototype.buildRequestOptions = function (method, options, body) { + var mergedOptions = Object.assign({}, RestfulEndpoint.defaultFetchOptions, this.fetchOptions, options); + var headers = mergedOptions.headers, rest = tslib_1.__rest(mergedOptions, ["headers"]), resultOptions = tslib_1.__assign({ method: method, headers: tslib_1.__assign({ 'Content-Type': 'application/json' }, headers) }, rest); + if (body) { + resultOptions.body = JSON.stringify(body); + } + return resultOptions; + }; + RestfulEndpoint.prototype.request = function (method, url, _a, body) { + var options = _a.options; + return fetch(url, this.buildRequestOptions(method, options, body)) + .then(function (response) { + if (response.ok) { + return response.json(); + } + else { + throw new Error(response.statusText); + } + }); + }; + RestfulEndpoint.defaultFetchOptions = { + cache: "no-cache", + credentials: "same-origin", + mode: "cors", + redirect: "error", + }; + return RestfulEndpoint; +}()); +export { RestfulEndpoint }; +function appendParams(url, params) { + var esc = encodeURIComponent; + return params + ? url + '?' + Object.keys(params) + .map(function (k) { return esc(k) + '=' + esc(params[k]); }) + .join('&') + : url; +} +//# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/endpoints/restful/lib/index.js.map b/endpoints/restful/lib/index.js.map new file mode 100644 index 0000000..5b7705d --- /dev/null +++ b/endpoints/restful/lib/index.js.map @@ -0,0 +1 @@ +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/endpoints/restful/package.json b/endpoints/restful/package.json new file mode 100644 index 0000000..39ed8d4 --- /dev/null +++ b/endpoints/restful/package.json @@ -0,0 +1,13 @@ +{ + "name": "restfulIO", + "main": "./dist/index.js", + "jsnext:main": "./lib/index.js", + "module": "./lib/index.js", + "types": "./lib/index.d.ts", + "scripts": { + "build":"../../node_modules/.bin/tsc && ../../node_modules/.bin/rollup --config" + }, + "author": "Ivan Terpugov", + "license": "MIT" +} + \ No newline at end of file diff --git a/endpoints/restful/rollup.config.js b/endpoints/restful/rollup.config.js new file mode 100644 index 0000000..5789d78 --- /dev/null +++ b/endpoints/restful/rollup.config.js @@ -0,0 +1,23 @@ +import resolve from 'rollup-plugin-node-resolve'; +import { uglify } from 'rollup-plugin-uglify'; +import sourcemaps from 'rollup-plugin-sourcemaps'; + +export default { + input : 'lib/index.js', + external : "type-r", + + output : { + file : 'dist/index.js', + format : 'umd', + name : 'restfulIO', + sourcemap: true, + globals : { + "type-r":"Nested" + } + }, + plugins: [ + resolve(), //for support of `import X from "directory"` rather than verbose `import X from "directory/index"` + sourcemaps(), + uglify() + ] +}; \ No newline at end of file diff --git a/endpoints/restful/src/index.ts b/endpoints/restful/src/index.ts new file mode 100644 index 0000000..653513a --- /dev/null +++ b/endpoints/restful/src/index.ts @@ -0,0 +1,139 @@ +import { IOEndpoint, IOOptions, IOPromise, createIOPromise } from 'type-r' + +export function create( url : string, fetchOptions? : Partial ){ + return new RestfulEndpoint( url, fetchOptions ); +} + +export { create as restfulIO } + +export interface RestfulIOOptions extends IOOptions { + params? : object, + options? : RequestInit +} + +export type RestfulFetchOptions = /* subset of RequestInit */{ + cache?: RequestCache; + credentials?: RequestCredentials; + mode?: RequestMode; + redirect?: RequestRedirect; + referrerPolicy?: ReferrerPolicy; +} + +export class RestfulEndpoint implements IOEndpoint { + + constructor( public url : string, public fetchOptions? : Partial ) { + } + + public static defaultFetchOptions : RestfulFetchOptions = { + cache: "no-cache", + credentials: "same-origin", + mode: "cors", + redirect: "error", + } + + create( json, options : RestfulIOOptions, record ) { + return this.request( 'POST', this.collectionUrl( record, options ), options, json ); + } + + update( id, json, options : RestfulIOOptions, record ) { + return this.request( 'PUT', this.objectUrl( record, id, options ), options, json ); + } + + read( id, options : IOOptions, record ){ + return this.request( 'GET', this.objectUrl( record, id, options ), options ); + } + + destroy( id, options : RestfulIOOptions, record ){ + return this.request( 'DELETE', this.objectUrl( record, id, options ), options ); + } + + list( options : RestfulIOOptions, collection ) { + return this.request( 'GET', this.collectionUrl( collection, options ), options ); + } + + subscribe( events ) : any {} + unsubscribe( events ) : any {} + + + protected isRelativeUrl( url ) { + return url.indexOf( './' ) === 0; + } + + protected removeTrailingSlash( url : string ) { + const endsWithSlash = url.charAt( url.length - 1 ) === '/'; + return endsWithSlash ? url.substr( 0, url.length - 1 ) : url; + } + + protected getRootUrl( recordOrCollection ) { + const { url } = this + if( this.isRelativeUrl( url ) ) { + const owner = recordOrCollection.getOwner(), + ownerUrl = owner.getEndpoint().getUrl( owner ); + + return this.removeTrailingSlash( ownerUrl ) + '/' + url.substr( 2 ) + } else { + return url; + } + } + + protected getUrl( record ) { + const url = this.getRootUrl( record ); + return record.isNew() + ? url + : this.removeTrailingSlash( url ) + '/' + record.id + } + + protected objectUrl( record, id, options ){ + return appendParams( this.getUrl( record ), options.params ); + } + + protected collectionUrl( collection, options ){ + return appendParams( this.getRootUrl( collection ), options.params ); + } + + protected buildRequestOptions( method : string, options? : RequestInit, body? ) : RequestInit { + const mergedOptions : RequestInit = Object.assign( {}, + RestfulEndpoint.defaultFetchOptions, + this.fetchOptions, + options + ); + + const {headers, ...rest} = mergedOptions, + resultOptions : RequestInit = { + method, + headers: { + 'Content-Type': 'application/json', + ...headers + }, + ...rest + }; + + if( body ) { + resultOptions.body = JSON.stringify( body ); + } + return resultOptions; + } + + protected request( method : string, url : string, {options} : RestfulIOOptions, body? ) : Promise { + + return fetch( url, this.buildRequestOptions( method, options, body ) ) + .then( response => { + if( response.ok ) { + return response.json() + } else { + throw new Error( response.statusText ) + } + } ); + } +} + +function appendParams( url, params? ) { + var esc = encodeURIComponent; + return params + ? url + '?' + Object.keys( params ) + .map( k => esc( k ) + '=' + esc( params[ k ] ) ) + .join( '&' ) + : url; +} + + diff --git a/endpoints/restful/tsconfig.json b/endpoints/restful/tsconfig.json new file mode 100644 index 0000000..671840d --- /dev/null +++ b/endpoints/restful/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "target": "es5", + "module":"es6", + "declaration": true, + "importHelpers": true, + "moduleResolution": "node", + "sourceMap": true, + "outDir": "./lib", + "noImplicitAny": false, + "removeComments":true, + "experimentalDecorators": true, + "baseUrl": ".", + "paths" : { + "type-r":[ "../../lib" ] + } + }, + "files":[ + "./src/index.ts" + ] + } \ No newline at end of file diff --git a/lib/backbone.d.ts b/lib/backbone.d.ts index d4b0314..418cf8c 100644 --- a/lib/backbone.d.ts +++ b/lib/backbone.d.ts @@ -1,5 +1,5 @@ /// -declare global { +declare global { interface Window { Backbone: any; } @@ -10,13 +10,13 @@ declare const exported: { $: JQueryStatic; history: any; VERSION: string; - View: (options: any) => void; - History: () => void; - Router: (options: any) => void; - noConflict: () => any; + View: typeof View; + History: typeof History; + Router: typeof Router; + noConflict: typeof noConflict; }; export default exported; +declare function noConflict(): any; export declare function View(options: any): void; export declare function Router(options: any): void; export declare function History(): void; -export {}; diff --git a/lib/backbone.js.map b/lib/backbone.js.map index 12028dd..f7aab9c 100644 --- a/lib/backbone.js.map +++ b/lib/backbone.js.map @@ -1 +1 @@ -{"version":3,"file":"backbone.js","sourceRoot":"","sources":["../src/backbone.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"backbone.js","sourceRoot":"","sources":["../src/backbone.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/index.js.map b/lib/index.js.map index fc5735f..8e163b2 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,cAAc,UAAU,CAAA;AAKxB,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACjE,OAAO,IAAI,MAAM,QAAQ,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAMnD,MAAM,CAAC,IAAM,KAAK,GAA4B,KAAK,CAAC,SAAS,CAAC;AAE9D,IAAM,MAAM,GAAoC,MAAM,CAAC,MAAM,CAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC7E,MAAM,EAAW,YAAY,CAAE,IAAI,EAAE,MAAM,CAAE;IAC7C,cAAc,EAAG,YAAY,CAAE,IAAI,EAAE,cAAc,CAAE;IACrD,MAAM,EAAW,YAAY,CAAE,IAAI,EAAE,MAAM,CAAE;IAC7C,SAAS,EAAQ,YAAY,CAAE,QAAQ,EAAE,SAAS,CAAE;IACpD,OAAO,EAAU,YAAY,CAAE,SAAS,EAAE,QAAQ,CAAE;IACpD,GAAG,EAAG;QACF,GAAG,gBAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,GAAG,YAAE,KAAK,IAAU,QAAS,CAAC,CAAC,GAAS,IAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;KAC7D;CACJ,EACD,OAAO,CAAE,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,KAAK,EAAG,SAAS,EAAE,UAAU,EAAG,cAAc,EAAE,SAAS,WAAA,EAAE,KAAK,EAAG,SAAS,EAAE,QAAQ,UAAA,EAAE,CAAE,EACtH,OAAO,CAAE,QAAQ,CAAE,CACtB,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC;AAEtB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,IAAI,UAAU,EAAE,SAAS,IAAI,KAAK,EAAE,CAAC;AAE5F,MAAM,mBAAoB,CAAC;IACvB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC,CAAE,CAAC;AACtC,CAAC;AAED,cAAc,YAAY,CAAC;AAE3B,WAAW,CAAC,GAAG,CAAE,MAAM,CAAC,OAAO,CAAE,CAAC,KAAK,CAAC,CAAE,MAAM,CAAC,MAAM,CAAE,CAAC,CAAC;AAC3D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAE,CAAC;AACrF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAE,UAAU,CAAE,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAE,eAAe,CAAE,CAAC,CAAC;AAK3D,sBAAuB,SAAS,EAAE,IAAI;IAClC,MAAM,CAAC;QACH,GAAG,gBAAI,MAAM,CAAC,SAAS,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC;QAClC,GAAG,YAAE,KAAK,IAAI,SAAS,CAAE,IAAI,CAAE,GAAG,KAAK,CAAC,CAAC,CAAC;KAC7C,CAAC;AACN,CAAC;AAED,iBAAkB,GAAG;IACjB,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,EAAE,KAAK,EAAG,CAAC,EAAE,CAAC,EAAf,CAAe,CAAE,CAAC;AAC3D,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,UAAU,CAAA;AACjC,cAAc,UAAU,CAAA;AAKxB,OAAO,QAAQ,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAA;AAClD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACjE,OAAO,IAAI,MAAM,QAAQ,CAAA;AAEzB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAMnD,MAAM,CAAC,IAAM,KAAK,GAA4B,KAAK,CAAC,SAAS,CAAC;AAE9D,IAAM,MAAM,GAAoC,MAAM,CAAC,MAAM,CAAE,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC7E,MAAM,EAAW,YAAY,CAAE,IAAI,EAAE,MAAM,CAAE;IAC7C,cAAc,EAAG,YAAY,CAAE,IAAI,EAAE,cAAc,CAAE;IACrD,MAAM,EAAW,YAAY,CAAE,IAAI,EAAE,MAAM,CAAE;IAC7C,SAAS,EAAQ,YAAY,CAAE,QAAQ,EAAE,SAAS,CAAE;IACpD,OAAO,EAAU,YAAY,CAAE,SAAS,EAAE,QAAQ,CAAE;IACpD,GAAG,EAAG;QACF,GAAG,gBAAI,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,GAAG,YAAE,KAAK,IAAU,QAAS,CAAC,CAAC,GAAS,IAAK,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;KAC7D;CACJ,EACD,OAAO,CAAE,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,KAAK,EAAG,SAAS,EAAE,UAAU,EAAG,cAAc,EAAE,SAAS,WAAA,EAAE,KAAK,EAAG,SAAS,EAAE,QAAQ,UAAA,EAAE,CAAE,EACtH,OAAO,CAAE,QAAQ,CAAE,CACtB,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC;AAEtB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,IAAI,UAAU,EAAE,SAAS,IAAI,KAAK,EAAE,CAAC;AAE5F,MAAM,UAAU,QAAQ,CAAE,CAAC;IACvB,OAAO,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC,CAAE,CAAC;AACtC,CAAC;AAED,cAAc,YAAY,CAAC;AAE3B,WAAW,CAAC,GAAG,CAAE,MAAM,CAAC,OAAO,CAAE,CAAC,KAAK,CAAC,CAAE,MAAM,CAAC,MAAM,CAAE,CAAC,CAAC;AAC3D,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAE,CAAC;AACrF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAE,UAAU,CAAE,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAE,eAAe,CAAE,CAAC,CAAC;AAK3D,SAAS,YAAY,CAAE,SAAS,EAAE,IAAI;IAClC,OAAO;QACH,GAAG,gBAAI,OAAO,SAAS,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC;QAClC,GAAG,YAAE,KAAK,IAAI,SAAS,CAAE,IAAI,CAAE,GAAG,KAAK,CAAC,CAAC,CAAC;KAC7C,CAAC;AACN,CAAC;AAED,SAAS,OAAO,CAAE,GAAG;IACjB,OAAO,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,EAAE,KAAK,EAAG,CAAC,EAAE,CAAC,EAAf,CAAe,CAAE,CAAC;AAC3D,CAAC"} \ No newline at end of file diff --git a/lib/rest-store.js.map b/lib/rest-store.js.map index 44b6ab5..a788631 100644 --- a/lib/rest-store.js.map +++ b/lib/rest-store.js.map @@ -1 +1 @@ -{"version":3,"file":"rest-store.js","sourceRoot":"","sources":["../src/rest-store.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"rest-store.js","sourceRoot":"","sources":["../src/rest-store.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/rest.js b/lib/rest.js index 69b2c1c..2fa428f 100644 --- a/lib/rest.js +++ b/lib/rest.js @@ -39,7 +39,7 @@ var RestCollection = (function (_super) { return _sync('read', this, options); }; RestCollection.prototype.create = function (a_model, options) { - var _this = this; + var _this_1 = this; if (options === void 0) { options = {}; } var model = a_model instanceof RestModel ? a_model : @@ -50,7 +50,7 @@ var RestCollection = (function (_super) { var success = options.success; options.success = function (model, resp, callbackOpts) { if (options.wait) - _this.add([model], defaults({ parse: false }, callbackOpts)); + _this_1.add([model], defaults({ parse: false }, callbackOpts)); if (success) success.call(callbackOpts.context, model, resp, callbackOpts); }; @@ -107,7 +107,7 @@ var RestModel = (function (_super) { return Sync.sync.apply(this, arguments); }; RestModel.prototype.save = function (key, val, a_options) { - var _this = this; + var _this_1 = this; var attrs, originalOptions; if (key == null || typeof key === 'object') { attrs = key; @@ -134,7 +134,7 @@ var RestModel = (function (_super) { if (wait) serverAttrs = _.extend({}, attrs, serverAttrs); if (serverAttrs) { - transactionalProto.set.call(_this, serverAttrs, options); + transactionalProto.set.call(_this_1, serverAttrs, options); if (model._invalidate(options)) return false; } @@ -191,6 +191,7 @@ var RestModel = (function (_super) { return base.replace(/[^\/]$/, '$&/') + encodeURIComponent(id); }; RestModel.prototype.set = function (a, b, c) { + var _a; if (typeof a === 'string') { if (c) { return _super.prototype.set.call(this, (_a = {}, _a[a] = b, _a), c); @@ -203,7 +204,6 @@ var RestModel = (function (_super) { else { return _super.prototype.set.call(this, a, b); } - var _a; }; RestModel.Collection = RestCollection; RestModel = tslib_1.__decorate([ diff --git a/lib/rest.js.map b/lib/rest.js.map index 41e6bb2..5aeb5c1 100644 --- a/lib/rest.js.map +++ b/lib/rest.js.map @@ -1 +1 @@ -{"version":3,"file":"rest.js","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":";AAAA,OAAO,IAAyC,MAAM,QAAQ,CAAA;AAE9D,OAAO,KAAK,CAAC,MAAM,YAAY,CAAA;AAG/B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAC5E,IAAA,yBAAQ,CAAW;AAE3B,IAAM,kBAAkB,GAAG,KAAK,CAAC,YAAY,CAAE,KAAK,CAAE,CAAC,SAAS,CAAC;AAcjE;IAAoC,0CAAqB;IAAzD;;IAiEA,CAAC;IA9DG,gCAAO,GAAP;QACI,EAAE,CAAA,CAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAM,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACrD,iBAAM,OAAO,WAAE,CAAC;IACpB,CAAC;IAGD,4BAAG,GAAH,cAAiB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IAE7D,oCAAW,GAAX,UAAa,OAAiC;QAC1C,IAAI,KAAK,CAAC;QACV,EAAE,CAAA,CAAE,OAAO,CAAC,QAAQ,IAAI,CAAE,KAAK,GAAG,IAAI,CAAC,eAAe,CAAG,CAAC,CAAA,CAAC;YACvD,IAAI,CAAC,OAAO,CAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAE,EAAE,eAAe,EAAG,KAAK,EAAE,EAAE,OAAO,CAAE,CAAE,CAAC;YACzF,MAAM,CAAC,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAKD,8BAAK,GAAL,UAAO,OAAqB;QACxB,OAAO,GAAW,CAAC,CAAC,MAAM,CAAE,EAAE,KAAK,EAAG,IAAI,EAAE,EAAE,OAAO,CAAE,CAAC;QACxD,IAAI,OAAO,GAAO,OAAO,CAAC,OAAO,CAAC;QAClC,IAAI,UAAU,GAAI,IAAI,CAAC;QACvB,OAAO,CAAC,OAAO,GAAG,UAAU,IAAI;YAC5B,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YAC7C,UAAU,CAAE,MAAM,CAAE,CAAE,IAAI,EAAE,OAAO,CAAE,CAAC;YACtC,EAAE,CAAA,CAAE,UAAU,CAAC,WAAW,CAAE,OAAO,CAAG,CAAC;gBAAC,MAAM,CAAC,KAAK,CAAC;YAErD,EAAE,CAAA,CAAE,OAAQ,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAE,OAAO,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAE,CAAC;YACzE,UAAU,CAAC,OAAO,CAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAE,CAAC;QAC5D,CAAC,CAAC;QAEF,SAAS,CAAE,IAAI,EAAE,OAAO,CAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAE,CAAC;IAC1C,CAAC;IAED,+BAAM,GAAN,UAAQ,OAAO,EAAE,OAAkB;QAAnC,iBAmBC;QAnBgB,wBAAA,EAAA,YAAkB;QAC/B,IAAM,KAAK,GAAe,OAAO,YAAY,SAAS,CAAC,CAAC;YACxB,OAAO,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAE,OAAO,EAAE,OAAO,CAAE,CAAC;QAG5E,KAAK,CAAC,MAAM,IAAI,CAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAE,CAAC;QAExC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,CAAE,KAAK,CAAE,EAAE,OAAO,CAAE,CAAC;QAE9C,IAAI,UAAU,GAAI,IAAI,CAAC;QACvB,IAAI,OAAO,GAAO,OAAO,CAAC,OAAO,CAAC;QAClC,OAAO,CAAC,OAAO,GAAG,UAAE,KAAK,EAAE,IAAI,EAAE,YAAY;YACzC,EAAE,CAAA,CAAE,OAAO,CAAC,IAAK,CAAC;gBAAC,KAAI,CAAC,GAAG,CAAE,CAAE,KAAK,CAAE,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAG,KAAK,EAAE,EAAE,YAAY,CAAE,CAAE,CAAC;YACrF,EAAE,CAAA,CAAE,OAAQ,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAE,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAE,CAAC;QAClF,CAAC,CAAC;QAEF,KAAK,CAAC,IAAI,CAAE,IAAI,EAAE,OAAO,CAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC;IACjB,CAAC;IAID,6BAAI,GAAJ;QACI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAE,IAAI,EAAE,SAAS,CAAE,CAAC;IAC9C,CAAC;IAhEQ,cAAc;QAL1B,MAAM,CAAC;YACJ,UAAU,EAAG;gBACT,OAAO,YAAE,KAAK,IAAI,IAAI,CAAC,MAAM,CAAE,KAAK,CAAE,CAAC,CAAC,CAAC;aAC5C;SACJ,CAAC;OACW,cAAc,CAiE1B;IAAD,qBAAC;CAAA,AAjED,CAAoC,UAAU,GAiE7C;SAjEY,cAAc;AAiE1B,CAAC;AAQF;IAA+B,qCAAK;IAApC;;IAqLA,CAAC;IA7KG,+BAAW,GAAX,UAAa,OAAiC;QAC1C,IAAI,KAAK,CAAC;QACV,EAAE,CAAA,CAAE,OAAO,CAAC,QAAQ,IAAI,CAAE,KAAK,GAAG,IAAI,CAAC,eAAe,CAAG,CAAC,CAAA,CAAC;YACvD,gBAAgB,CAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAE,EAAE,eAAe,EAAG,KAAK,EAAE,EAAE,OAAO,CAAE,CAAE,CAAC;YACnG,MAAM,CAAC,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,2BAAO,GAAP;QACI,EAAE,CAAA,CAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAM,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACrD,iBAAM,OAAO,WAAE,CAAC;IACpB,CAAC;IAID,yBAAK,GAAL,UAAO,OAAsB;QACzB,OAAO,GAAW,CAAC,CAAC,MAAM,CAAE,EAAE,KAAK,EAAG,IAAI,EAAE,EAAE,OAAO,CAAE,CAAC;QACxD,IAAI,KAAK,GAAS,IAAI,CAAC;QACvB,IAAI,OAAO,GAAO,OAAO,CAAC,OAAO,CAAC;QAClC,OAAO,CAAC,OAAO,GAAG,UAAU,WAAW;YACnC,KAAK,CAAC,GAAG,CAAE,WAAW,EAAE,OAAO,CAAE,CAAC;YAClC,EAAE,CAAA,CAAE,KAAK,CAAC,WAAW,CAAE,OAAO,CAAG,CAAC;gBAAC,MAAM,CAAC,KAAK,CAAC;YAEhD,EAAE,CAAA,CAAE,OAAQ,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAE,CAAC;YAC3E,gBAAgB,CAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAE,CAAC;QACnE,CAAC,CAAC;QAEF,SAAS,CAAE,IAAI,EAAE,OAAO,CAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAE,CAAC;IAC1C,CAAC;IAKD,wBAAI,GAAJ;QACI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAE,IAAI,EAAE,SAAS,CAAE,CAAC;IAC9C,CAAC;IAOD,wBAAI,GAAJ,UAAM,GAAG,EAAE,GAAG,EAAE,SAAwB;QAAxC,iBA6DC;QA3DG,IAAI,KAAK,EAAE,eAAe,CAAC;QAE3B,EAAE,CAAA,CAAE,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAS,CAAC,CAAA,CAAC;YACzC,KAAK,GAAK,GAAG,CAAC;YACd,eAAe,GAAG,GAAG,IAAI,EAAE,CAAC;QAChC,CAAC;QACD,IAAI,CAAA,CAAC;YACD,CAAC,KAAK,GAAG,EAAE,CAAC,CAAE,GAAG,CAAE,GAAG,GAAG,CAAC;YAC1B,eAAe,GAAG,SAAS,IAAI,EAAE,CAAC;QACtC,CAAC;QAED,IAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAE,EAAE,QAAQ,EAAG,IAAI,EAAE,KAAK,EAAG,IAAI,EAAE,EAAE,eAAe,CAAE,EACxE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAK1B,EAAE,CAAA,CAAE,KAAK,IAAI,CAAC,IAAK,CAAC,CAAA,CAAC;YACjB,IAAI,CAAC,GAAG,CAAE,KAAK,EAAE,eAAe,CAAE,CAAC;QACvC,CAAC;QAED,EAAE,CAAA,CAAE,IAAI,CAAC,WAAW,CAAE,OAAO,CAAG,CAAC,CAAA,CAAC;YAC9B,EAAE,CAAA,CAAE,KAAK,IAAI,IAAK,CAAC;gBAAC,IAAI,CAAC,GAAG,CAAE,KAAK,EAAE,eAAe,CAAE,CAAC;YACvD,MAAM,CAAC,IAAI,CAAC,YAAY,CAAE,IAAI,CAAC,eAAe,CAAE,CAAC;QACrD,CAAC;QAID,IAAI,KAAK,GAAS,IAAI,CAAC;QACvB,IAAI,OAAO,GAAO,OAAO,CAAC,OAAO,CAAC;QAClC,IAAI,UAAU,GAAI,IAAI,CAAC,UAAU,CAAC;QAClC,OAAO,CAAC,OAAO,GAAG,UAAA,WAAW;YAEzB,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;YAC9B,EAAE,CAAA,CAAE,IAAK,CAAC;gBAAC,WAAW,GAAG,CAAC,CAAC,MAAM,CAAE,EAAE,EAAE,KAAK,EAAE,WAAW,CAAE,CAAC;YAE5D,EAAE,CAAA,CAAE,WAAY,CAAC,CAAA,CAAC;gBAEd,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAE,KAAI,EAAE,WAAW,EAAE,OAAO,CAAE,CAAC;gBAC1D,EAAE,CAAA,CAAE,KAAK,CAAC,WAAW,CAAE,OAAO,CAAG,CAAC;oBAAC,MAAM,CAAC,KAAK,CAAC;YACpD,CAAC;YAED,EAAE,CAAA,CAAE,OAAQ,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAE,CAAC;YAC3E,gBAAgB,CAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAE,CAAC;QACnE,CAAC,CAAC;QAEF,SAAS,CAAE,IAAI,EAAE,OAAO,CAAE,CAAC;QAG3B,EAAE,CAAA,CAAE,KAAK,IAAI,IAAK,CAAC;YAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,MAAM,CAAE,EAAE,EAAE,UAAU,EAAE,KAAK,CAAE,CAAC;QAExE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC5E,EAAE,CAAA,CAAE,MAAM,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,KAAM,CAAC;YAAC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;QACjE,IAAI,GAAG,GAAG,KAAK,CAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAE,CAAC;QAGzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,MAAM,CAAC,GAAG,CAAC;IACf,CAAC;IAKD,2BAAO,GAAP,UAAS,OAAqB;QAC1B,OAAO,GAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAE,OAAO,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,IAAI,KAAK,GAAK,IAAI,CAAC;QACnB,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC9B,IAAI,IAAI,GAAM,OAAO,CAAC,IAAI,CAAC;QAE3B,IAAI,OAAO,GAAG;YACV,KAAK,CAAC,aAAa,EAAE,CAAC;YACtB,KAAK,CAAC,OAAO,CAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,CAAE,CAAC;QACjE,CAAC,CAAC;QAEF,OAAO,CAAC,OAAO,GAAG,UAAU,IAAI;YAC5B,EAAE,CAAA,CAAE,IAAK,CAAC;gBAAC,OAAO,EAAE,CAAC;YACrB,EAAE,CAAA,CAAE,OAAQ,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAE,CAAC;YACpE,EAAE,CAAA,CAAE,CAAC,KAAK,CAAC,KAAK,EAAG,CAAC;gBAAC,gBAAgB,CAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAE,CAAC;QACjF,CAAC,CAAC;QAEF,IAAI,GAAe,CAAC;QAEpB,EAAE,CAAA,CAAE,IAAI,CAAC,KAAK,EAAG,CAAC,CAAA,CAAC;YACf,CAAC,CAAC,KAAK,CAAE,OAAO,CAAC,OAAO,CAAE,CAAC;QAC/B,CAAC;QACD,IAAI,CAAA,CAAC;YACD,SAAS,CAAE,IAAI,EAAE,OAAO,CAAE,CAAC;YAC3B,GAAG,GAAG,KAAK,CAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAE,CAAC;QAC3C,CAAC;QAED,EAAE,CAAA,CAAE,CAAC,IAAK,CAAC;YAAC,OAAO,EAAE,CAAC;QAEtB,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC;IACxB,CAAC;IAKD,uBAAG,GAAH;QACI,IAAI,IAAI,GACA,CAAC,CAAC,MAAM,CAAE,IAAI,EAAE,SAAS,CAAE;YAC3B,CAAC,CAAC,MAAM,CAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAE;YAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAExB,EAAE,CAAA,CAAE,IAAI,CAAC,KAAK,EAAG,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC;QAE/B,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,WAAW,CAAE,CAAC;QAEtC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAE,QAAQ,EAAE,KAAK,CAAE,GAAG,kBAAkB,CAAE,EAAE,CAAE,CAAC;IACtE,CAAC;IAID,uBAAG,GAAH,UAAK,CAAC,EAAE,CAAE,EAAE,CAAE;QACV,EAAE,CAAA,CAAE,OAAO,CAAC,KAAK,QAAS,CAAC,CAAA,CAAC;YACxB,EAAE,CAAA,CAAE,CAAE,CAAC,CAAA,CAAC;gBACJ,MAAM,CAAQ,iBAAM,GAAG,sBAAG,GAAE,CAAC,IAAK,CAAC,OAAI,CAAC,CAAE,CAAC;YAC/C,CAAC;YACD,IAAI,CAAA,CAAC;gBACD,IAAI,CAAE,CAAC,CAAE,GAAG,CAAC,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC;YAChB,CAAC;QACL,CAAC;QACD,IAAI,CAAA,CAAC;YACD,MAAM,CAAQ,iBAAM,GAAG,YAAE,CAAC,EAAE,CAAC,CAAE,CAAC;QACpC,CAAC;;IACL,CAAC;IAnLM,oBAAU,GAAuB,cAAqB,CAAC;IADrD,SAAS;QANrB,MAAM,CAAC;YACJ,OAAO,EAAG,EAAE;SACf,CAAC;QACD,WAAW,CAAC;YACT,OAAO,EAAG,UAAU,CAAC,UAAU;SAClC,CAAC;OACW,SAAS,CAqLrB;IAAD,gBAAC;CAAA,AArLD,CAA+B,KAAK,GAqLnC;SArLY,SAAS;AAuLtB,eAAgB,MAAe,EAAE,KAAe,EAAE,OAAO;IAErD,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;IACrD,IAAM,GAAG,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAE,CAAC;IAC9D,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAE,cAAY,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,CAAC,GAAG,CAAC;AACf,CAAC;AAGD,mBAAoB,KAAW,EAAE,OAAqB;IAClD,IAAI,KAAK,GAAO,OAAO,CAAC,KAAK,CAAC;IAC9B,OAAO,CAAC,KAAK,GAAG,UAAU,IAAI;QAC1B,EAAE,CAAA,CAAE,KAAM,CAAC;YAAC,KAAK,CAAC,IAAI,CAAE,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAE,CAAC;QAChE,gBAAgB,CAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAE,CAAC;IAC7D,CAAC,CAAC;AACN,CAAC;AAED,0BAA2B,KAAW;IAAE,cAAe;SAAf,UAAe,EAAf,qBAAe,EAAf,IAAe;QAAf,6BAAe;;IACnD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAE,KAAK,EAAE,IAAI,CAAE,CAAC;IAC3B,IAAA,6BAAU,CAAW;IAC7B,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAE,UAAU,EAAE,IAAI,CAAE,CAAC;AAC/D,CAAC"} \ No newline at end of file +{"version":3,"file":"rest.js","sourceRoot":"","sources":["../src/rest.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/sync.d.ts b/lib/sync.d.ts index ca3f0de..4d9ffa5 100644 --- a/lib/sync.d.ts +++ b/lib/sync.d.ts @@ -4,7 +4,7 @@ export declare type Method = 'create' | 'update' | 'patch' | 'delete' | 'read'; export interface Restful { trigger(event: string, model: any, xhr: any, options: any): any; collection?: { - trigger(event: string, model, xhr, options); + trigger(event: string, model: any, xhr: any, options: any): any; }; toJSON(options: any): {}; _xhr: JQueryXHR; @@ -14,9 +14,9 @@ export interface SyncOptions { url?: LazyValue; data?: any; attrs?: {}; - beforeSend?: (xhr) => any; + beforeSend?: (xhr: any) => any; success?: (resp: any) => void; - error?: (xhr?, textStatus?, errorThrown?) => void; + error?: (xhr?: any, textStatus?: any, errorThrown?: any) => void; textStatus?: string; errorThrown?: any; xhr?: any; @@ -26,7 +26,8 @@ declare const exported: { $: JQueryStatic; errorPromise: (error: any) => JQueryDeferred<{}>; ajax: (options: {}) => any; - sync: (method: Method, model: Restful, options?: SyncOptions) => JQueryXHR; + sync: typeof sync; urlError: () => never; }; export default exported; +declare function sync(method: Method, model: Restful, options?: SyncOptions): JQueryXHR; diff --git a/lib/sync.js.map b/lib/sync.js.map index 7b18d6a..186b85d 100644 --- a/lib/sync.js.map +++ b/lib/sync.js.map @@ -1 +1 @@ -{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"sync.js","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,CAAC,MAAM,YAAY,CAAA;AAC/B,OAAO,QAAQ,MAAM,YAAY,CAAA;AAEjC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AACxB,IAAA,yBAAQ,CAAW;AA8B3B,IAAM,SAAS,GAAG;IACd,QAAQ,EAAG,MAAM;IACjB,QAAQ,EAAG,KAAK;IAChB,OAAO,EAAI,OAAO;IAClB,QAAQ,EAAG,QAAQ;IACnB,MAAM,EAAK,KAAK;CACnB,CAAC;AAEF,IAAM,QAAQ,GAAG;IACb,CAAC,EAAG,QAAQ,CAAC,CAAC;IAEd,YAAY,EAAG,UAAA,KAAK;QAChB,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QACrB,CAAC,CAAC,MAAM,CAAE,KAAK,CAAE,CAAC;QAClB,OAAO,CAAC,CAAC;IACb,CAAC;IAID,IAAI,EAAG,UAAU,OAAY;QACzB,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAE,CAAC,EAAE,SAAS,CAAE,CAAC;IACxC,CAAC;IAED,IAAI,MAAA;IAGJ,QAAQ,EAAG;QACP,MAAM,IAAI,KAAK,CAAE,gDAAgD,CAAE,CAAC;IACxE,CAAC;CACJ,CAAC;AAEF,eAAe,QAAQ,CAAC;AAcxB,SAAS,IAAI,CAAE,MAAe,EAAE,KAAe,EAAE,OAA0B;IAA1B,wBAAA,EAAA,YAA0B;IACvE,IAAI,IAAI,GAAG,SAAS,CAAE,MAAM,CAAE,CAAC;IAG/B,IAAI,MAAM,GAAS,EAAE,IAAI,EAAG,IAAI,EAAE,QAAQ,EAAG,MAAM,EAAE,CAAC;IAGtD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;QACd,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAE,KAAK,EAAE,KAAK,CAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAChE;IAGD,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,OAAO,CAAC,EAAE;QACrG,MAAM,CAAC,WAAW,GAAG,kBAAkB,CAAC;QACxC,MAAM,CAAC,IAAI,GAAU,IAAI,CAAC,SAAS,CAAE,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAE,OAAO,CAAE,CAAE,CAAC;KACnF;IAGD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE;QACvB,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;KAC9B;IAGD,IAAI,KAAK,GAAO,OAAO,CAAC,KAAK,CAAC;IAC9B,OAAO,CAAC,KAAK,GAAG,UAAU,GAAG,EAAE,UAAU,EAAE,WAAW;QAClD,OAAO,CAAC,UAAU,GAAI,UAAU,CAAC;QACjC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;QAClC,IAAI,KAAK;YAAG,KAAK,CAAC,IAAI,CAAE,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,CAAE,CAAC;IAC5E,CAAC,CAAC;IAGF,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAE,CAAC,CAAC,MAAM,CAAE,MAAM,EAAE,OAAO,CAAE,CAAE,CAAC;IACrE,KAAK,CAAC,OAAO,CAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAE,CAAC;IAChD,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAE,CAAC;IAC/E,OAAO,GAAG,CAAC;AACf,CAAC"} \ No newline at end of file diff --git a/lib/type-r/collection/add.js.map b/lib/type-r/collection/add.js.map index 5590a90..e35a823 100644 --- a/lib/type-r/collection/add.js.map +++ b/lib/type-r/collection/add.js.map @@ -1 +1 @@ -{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/type-r/collection/add.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/type-r/collection/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC7D,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,YAAY,EAAE,gBAAgB,EAA2B,QAAQ,EAAE,WAAW,EAAkB,MAAM,WAAW,CAAA;AAG9J,IAAA,4BAAK,EAAE,8BAAM,EAAE,wCAAW,CAAoB;AAOtD,MAAM,UAAU,cAAc,CAAE,UAA2B,EAAE,KAAa,EAAE,OAAoB,EAAE,KAAgB;IAC9G,IAAM,MAAM,GAAG,KAAK,CAAE,UAAU,CAAE,EAC5B,MAAM,GAAkB,EAAE,CAAC;IAEjC,IAAI,KAAK,GAAG,cAAc,CAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAE,CAAC;IAExE,IAAI,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;QAC/B,IAAI,QAAQ,GAAG,kBAAkB,CAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAE,CAAC;QAChE,IAAI,WAAW,CAAE,UAAU,EAAE,OAAO,CAAE,EAAE;YACpC,OAAO,IAAI,qBAAqB,CAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAE,CAAC;SACvF;QAED,IAAI,UAAU,CAAC,iBAAiB;YAAG,mBAAmB,CAAE,UAAU,CAAE,CAAC;KACxE;IAGD,MAAM,IAAI,MAAM,CAAE,UAAU,CAAE,CAAC;AACnC,CAAC;AAAA,CAAC;AAIF,SAAS,kBAAkB,CAAE,UAA2B,EAAE,KAAgB,EAAE,OAAoB;IAC5F,IAAI,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;IAGpB,IAAI,EAAE,IAAI,IAAI,EAAE;QAEZ,IAAM,QAAM,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAGvD,EAAE,GAAG,MAAM,CAAE,EAAE,CAAE,CAAC;QAClB,IAAI,EAAE,GAAG,CAAC;YAAG,EAAE,IAAI,QAAM,GAAG,CAAC,CAAC;QAC9B,IAAI,EAAE,GAAG,CAAC;YAAG,EAAE,GAAG,CAAC,CAAC;QACpB,IAAI,EAAE,GAAG,QAAM;YAAG,EAAE,GAAG,QAAM,CAAC;QAG9B,YAAY,CAAE,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;KAChB;IAED,OAAO,YAAY,CAAE,UAAU,EAAE,OAAO,CAAE,CAAC;AAC/C,CAAC;AAGD,SAAS,YAAY,CAAE,MAAc,EAAE,EAAW,EAAE,KAAa;IAC7D,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QACrE,MAAM,CAAE,CAAC,CAAE,GAAG,MAAM,CAAE,CAAC,CAAE,CAAC;KAC7B;IAED,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;QAC5C,MAAM,CAAE,CAAC,CAAE,GAAG,KAAK,CAAE,CAAC,CAAE,CAAC;KAC5B;AACL,CAAC;AAID,SAAS,cAAc,CAAE,UAA2B,EAAE,OAAe,EAAE,MAAsB,EAAE,SAAsB,EAAE,UAAoB;IACjI,IAAA,wBAAK,EAAE,0BAAM,EACf,KAAK,GAAS,CAAE,UAAU,IAAI,SAAS,CAAC,KAAK,CAAE,IAAI,CAAC,UAAU,CAAC,OAAO,EACtE,KAAK,GAAS,SAAS,CAAC,KAAK,EAC7B,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,EACpD,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;IAE/B,KAAmB,UAAO,EAAP,mBAAO,EAAP,qBAAO,EAAP,IAAO,EAAE;QAAvB,IAAM,IAAI,gBAAA;QACX,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAE,IAAI,CAAE,WAAW,CAAE,CAAE,IAAI,KAAK,CAAE,IAAI,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE5E,IAAI,KAAK,EAAE;YACP,IAAI,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;gBACzB,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;gBACpC,IAAM,WAAW,GAAG,KAAK,CAAC,kBAAkB,CAAE,KAAK,EAAE,SAAS,CAAE,CAAC;gBACjE,WAAW,IAAI,MAAM,CAAC,IAAI,CAAE,WAAW,CAAE,CAAC;gBAE1C,IAAI,KAAK,CAAC,UAAU,CAAE,WAAW,CAAE,EAAE;oBACjC,WAAW,CAAE,KAAK,EAAE,KAAK,CAAE,CAAC;iBAC/B;aACJ;SACJ;aACG;YACA,KAAK,GAAG,gBAAgB,CAAE,UAAU,EAAE,IAAI,EAAE,SAAS,CAAE,CAAC;YACxD,MAAM,CAAC,IAAI,CAAE,KAAK,CAAE,CAAC;YACrB,QAAQ,CAAE,KAAK,EAAE,KAAK,CAAE,CAAC;SAC5B;KACJ;IAED,OAAO,MAAM,CAAC,KAAK,CAAE,UAAU,CAAE,CAAC;AACtC,CAAC"} \ No newline at end of file diff --git a/lib/type-r/collection/commons.js b/lib/type-r/collection/commons.js index 4e7119a..19816a2 100644 --- a/lib/type-r/collection/commons.js +++ b/lib/type-r/collection/commons.js @@ -59,14 +59,14 @@ export function sortElements(collection, options) { export function addIndex(index, model) { index[model.cid] = model; var id = model.id; - if (id != null) { + if (id || id === 0) { index[id] = model; } } export function removeIndex(index, model) { delete index[model.cid]; var id = model.id; - if (id != null) { + if (id || id === 0) { delete index[id]; } } diff --git a/lib/type-r/collection/commons.js.map b/lib/type-r/collection/commons.js.map index f58cb58..4ad1a34 100644 --- a/lib/type-r/collection/commons.js.map +++ b/lib/type-r/collection/commons.js.map @@ -1 +1 @@ -{"version":3,"file":"commons.js","sourceRoot":"","sources":["../../../src/type-r/collection/commons.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"commons.js","sourceRoot":"","sources":["../../../src/type-r/collection/commons.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/collection/index.d.ts b/lib/type-r/collection/index.d.ts index 6d6f3a8..b347d6d 100644 --- a/lib/type-r/collection/index.d.ts +++ b/lib/type-r/collection/index.d.ts @@ -38,6 +38,7 @@ export declare class Collection extends Transactional _onChildrenChange(record: R, options?: TransactionOptions, initiator?: Transactional): void; get(objOrId: string | R | Object): R; each(iteratee: (val: R, key: number) => void, context?: any): void; + forEach(iteratee: (val: R, key?: number) => void, context?: any): void; every(iteratee: Predicate, context?: any): boolean; filter(iteratee: Predicate, context?: any): R[]; find(iteratee: Predicate, context?: any): R; @@ -53,13 +54,13 @@ export declare class Collection extends Transactional last(): R; at(a_index: number): R; clone(options?: CloneOptions): this; - toJSON(): Object[]; + toJSON(options?: object): any; set(elements?: ElementsArg, options?: TransactionOptions): this; - liveUpdates(enabled: LiveUpdatesOption): IOPromise; + liveUpdates(enabled: LiveUpdatesOption): IOPromise; _liveUpdates: object; fetch(a_options?: { liveUpdates?: LiveUpdatesOption; - } & TransactionOptions): IOPromise; + } & TransactionOptions): IOPromise; dispose(): void; reset(a_elements?: ElementsArg, options?: TransactionOptions): R[]; add(a_elements: ElementsArg, options?: AddOptions): Record[]; diff --git a/lib/type-r/collection/index.js b/lib/type-r/collection/index.js index fa8673c..7cbebb6 100644 --- a/lib/type-r/collection/index.js +++ b/lib/type-r/collection/index.js @@ -71,7 +71,7 @@ var Collection = (function (_super) { eventsMap.addEventsMap(definition.itemEvents); this.prototype._itemEvents = eventsMap; } - if (definition.comparator) + if (definition.comparator !== void 0) this.prototype.comparator = definition.comparator; Transactional.onDefine.call(this, definition); }; @@ -148,6 +148,9 @@ var Collection = (function (_super) { fun(models[i], i); } }; + Collection.prototype.forEach = function (iteratee, context) { + return this.each(iteratee, context); + }; Collection.prototype.every = function (iteratee, context) { var fun = toPredicateFunction(iteratee, context), models = this.models; for (var i = 0; i < models.length; i++) { @@ -213,8 +216,8 @@ var Collection = (function (_super) { copy._defaultStore = this.getStore(); return copy; }; - Collection.prototype.toJSON = function () { - return this.models.map(function (model) { return model.toJSON(); }); + Collection.prototype.toJSON = function (options) { + return this.models.map(function (model) { return model.toJSON(options); }); }; Collection.prototype.set = function (elements, options) { if (elements === void 0) { elements = []; } @@ -242,7 +245,7 @@ var Collection = (function (_super) { }, removed: function (id) { return _this.remove(id); } }; - return this.getEndpoint().subscribe(this._liveUpdates, this); + return this.getEndpoint().subscribe(this._liveUpdates, this).then(function () { return _this; }); } else { if (this._liveUpdates) { @@ -393,6 +396,7 @@ var Collection = (function (_super) { Collection.prototype.getClassName = function () { return _super.prototype.getClassName.call(this) || 'Collection'; }; + var Collection_1; Collection._attribute = AggregatedType; Collection = Collection_1 = tslib_1.__decorate([ define({ @@ -408,7 +412,6 @@ var Collection = (function (_super) { }) ], Collection); return Collection; - var Collection_1; }(Transactional)); export { Collection }; function toElements(collection, elements, options) { diff --git a/lib/type-r/collection/index.js.map b/lib/type-r/collection/index.js.map index bd6490e..0834f87 100644 --- a/lib/type-r/collection/index.js.map +++ b/lib/type-r/collection/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/type-r/collection/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/type-r/collection/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/collection/remove.js.map b/lib/type-r/collection/remove.js.map index bb1459c..5744a0a 100644 --- a/lib/type-r/collection/remove.js.map +++ b/lib/type-r/collection/remove.js.map @@ -1 +1 @@ -{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/type-r/collection/remove.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"remove.js","sourceRoot":"","sources":["../../../src/type-r/collection/remove.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/collection/set.js.map b/lib/type-r/collection/set.js.map index 8c08cc4..7da33d2 100644 --- a/lib/type-r/collection/set.js.map +++ b/lib/type-r/collection/set.js.map @@ -1 +1 @@ -{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/type-r/collection/set.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/type-r/collection/set.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/endpoints/attributes.js.map b/lib/type-r/endpoints/attributes.js.map deleted file mode 100644 index 143cff0..0000000 --- a/lib/type-r/endpoints/attributes.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"attributes.js","sourceRoot":"","sources":["../../../src/type-r/endpoints/attributes.ts"],"names":[],"mappings":"AAEA,MAAM;IACF,MAAM,CAAC,IAAI,kBAAkB,EAAE,CAAC;AACpC,CAAC;AAED,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,CAAC;AAElC;IAAA;IA+BA,CAAC;IA9BG,mCAAM,GAAN,UAAQ,IAAI,EAAE,OAAmB;QAC7B,MAAM,IAAI,KAAK,CAAE,0BAA0B,CAAE,CAAC;IAClD,CAAC;IAED,mCAAM,GAAN,UAAQ,EAAE,EAAE,IAAI,EAAE,OAAmB;QACjC,MAAM,IAAI,KAAK,CAAE,0BAA0B,CAAE,CAAC;IAClD,CAAC;IAED,iCAAI,GAAJ,UAAM,EAAE,EAAE,OAAmB,EAAE,MAAM;QACjC,IAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,CAAE,UAAA,IAAI,IAAI,OAAA,MAAM,CAAE,IAAI,CAAE,IAAI,MAAM,CAAE,IAAI,CAAE,CAAC,KAAK,EAAtC,CAAsC,CAAE,EAChF,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAE,UAAA,IAAI,IAAI,OAAA,MAAM,CAAE,IAAI,CAAE,CAAC,KAAK,CAAE,OAAO,CAAE,EAA/B,CAA+B,CAAE,EAC/D,OAAO,GAAoB,OAAO,CAAC,GAAG,CAAE,QAAQ,CAAE,CAAC,IAAI,CAAE,cAAO,CAAC,CAAE,CAAC;QAExE,OAAO,CAAC,KAAK,GAAG;YACZ,QAAQ,CAAC,OAAO,CAAE,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,EAApB,CAAoB,CAAE,CAAC;QAClD,CAAC,CAAA;QAED,MAAM,CAAC,OAAO,CAAC;IACnB,CAAC;IAED,oCAAO,GAAP,UAAS,EAAE,EAAE,OAAmB;QAC5B,MAAM,IAAI,KAAK,CAAE,0BAA0B,CAAE,CAAC;IAClD,CAAC;IAED,iCAAI,GAAJ,UAAM,OAAoB;QACtB,MAAM,IAAI,KAAK,CAAE,0BAA0B,CAAE,CAAC;IAClD,CAAC;IAED,sCAAS,GAAT,UAAW,MAAM,IAAU,CAAC;IAC5B,wCAAW,GAAX,UAAa,MAAM,IAAS,CAAC;IACjC,yBAAC;AAAD,CAAC,AA/BD,IA+BC"} \ No newline at end of file diff --git a/lib/type-r/endpoints/localStorage.js.map b/lib/type-r/endpoints/localStorage.js.map deleted file mode 100644 index d923fd6..0000000 --- a/lib/type-r/endpoints/localStorage.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"localStorage.js","sourceRoot":"","sources":["../../../src/type-r/endpoints/localStorage.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/endpoints/memory.js.map b/lib/type-r/endpoints/memory.js.map deleted file mode 100644 index 31f410a..0000000 --- a/lib/type-r/endpoints/memory.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/type-r/endpoints/memory.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/index.d.ts b/lib/type-r/index.d.ts index 29b87dd..9ef1ba6 100644 --- a/lib/type-r/index.d.ts +++ b/lib/type-r/index.d.ts @@ -1,9 +1,14 @@ +declare global { + interface ObjectConstructor { + setPrototypeOf(target: Object, proto: Object): any; + } +} export * from './object-plus'; export * from './collection'; export * from './relations'; export * from './record'; export * from './transactions'; -export { IOEndpoint, IOPromise, createIOPromise } from './io-tools'; +export * from './io-tools'; export declare const on: any, off: any, trigger: any, once: any, listenTo: any, stopListening: any, listenToOnce: any; import { Record as Model } from './record'; import { Mixable as Class } from './object-plus/'; diff --git a/lib/type-r/index.js b/lib/type-r/index.js index fac2fff..57d167b 100644 --- a/lib/type-r/index.js +++ b/lib/type-r/index.js @@ -1,10 +1,13 @@ import * as tslib_1 from "tslib"; +var _a; +import { tools } from './object-plus'; +Object.setPrototypeOf || (Object.setPrototypeOf = tools.defaults); export * from './object-plus'; export * from './collection'; export * from './relations'; export * from './record'; export * from './transactions'; -export { createIOPromise } from './io-tools'; +export * from './io-tools'; import { Events } from './object-plus/'; export var on = (_a = Events, _a.on), off = _a.off, trigger = _a.trigger, once = _a.once, listenTo = _a.listenTo, stopListening = _a.stopListening, listenToOnce = _a.listenToOnce; import { Record as Model } from './record'; @@ -42,5 +45,4 @@ export function transaction(method) { return result; }; } -var _a; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lib/type-r/index.js.map b/lib/type-r/index.js.map index 74cb657..e88cf93 100644 --- a/lib/type-r/index.js.map +++ b/lib/type-r/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/type-r/index.ts"],"names":[],"mappings":";AAGA,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AAExB,cAAc,gBAAgB,CAAA;AAE9B,OAAO,EAAyB,eAAe,EAAE,MAAM,YAAY,CAAA;AAGnE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,MAAM,CAAS,IAAA,yBAAE,EAAE,YAAG,EAAE,oBAAO,EAAE,cAAI,EAAE,sBAAQ,EAAE,gCAAa,EAAE,8BAAY,CAAiB;AAK7F,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAExB,MAAM,qBAAsB,QAAQ;IACxB;QAA4B,yCAAK;QAAjC;;QAER,CAAC;QADU,wBAAU,GAAG,QAAQ,CAAC;QADnB,aAAa;YAA1B,MAAM;WAAO,aAAa,CAE1B;QAAD,oBAAC;KAAA,AAFO,CAA4B,KAAK,GAExC;IAED,MAAM,CAAC,aAAa,CAAC;AACzB,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAGjD,MAAM,gBAAiB,CAAO;IAC1B,MAAM,CAAC,IAAI,sBAAsB,CAAC,EAAE,KAAK,EAAG,CAAC,EAAE,CAAC,CAAC;AACrD,CAAC;AAGD,MAAM,sBAA6C,MAAU;IACzD,MAAM,CAAM;QAAA,iBAQX;QARqB,cAAO;aAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;YAAP,yBAAO;;QACzB,IAAI,MAAM,CAAC;QAEX,IAAI,CAAC,WAAW,CAAE;YACd,MAAM,GAAG,MAAM,CAAC,KAAK,CAAE,KAAI,EAAE,IAAI,CAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC;IAClB,CAAC,CAAA;AACL,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/type-r/index.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAQrC,MAAM,CAAC,cAAc,IAAI,CAAE,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAE,CAAC;AAMpE,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,gBAAgB,CAAA;AAE9B,cAAc,YAAY,CAAA;AAG1B,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,MAAM,CAAS,IAAA,yBAAE,EAAE,YAAG,EAAE,oBAAO,EAAE,cAAI,EAAE,sBAAQ,EAAE,gCAAa,EAAE,8BAAY,CAAiB;AAK7F,OAAO,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,UAAU,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAExB,MAAM,UAAU,UAAU,CAAE,QAAQ;IACxB;QAA4B,yCAAK;QAAjC;;QAER,CAAC;QADU,wBAAU,GAAG,QAAQ,CAAC;QADnB,aAAa;YAA1B,MAAM;WAAO,aAAa,CAE1B;QAAD,oBAAC;KAAA,AAFO,CAA4B,KAAK,GAExC;IAED,OAAO,aAAa,CAAC;AACzB,CAAC;AAED,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAGjD,MAAM,UAAU,KAAK,CAAE,CAAO;IAC1B,OAAO,IAAI,sBAAsB,CAAC,EAAE,KAAK,EAAG,CAAC,EAAE,CAAC,CAAC;AACrD,CAAC;AAGD,MAAM,UAAU,WAAW,CAAwB,MAAU;IACzD,OAAY;QAAA,iBAQX;QARqB,cAAO;aAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;YAAP,yBAAO;;QACzB,IAAI,MAAM,CAAC;QAEX,IAAI,CAAC,WAAW,CAAE;YACd,MAAM,GAAG,MAAM,CAAC,KAAK,CAAE,KAAI,EAAE,IAAI,CAAE,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAClB,CAAC,CAAA;AACL,CAAC"} \ No newline at end of file diff --git a/lib/type-r/io-tools.d.ts b/lib/type-r/io-tools.d.ts index c4c752e..9e6c5c2 100644 --- a/lib/type-r/io-tools.d.ts +++ b/lib/type-r/io-tools.d.ts @@ -1,6 +1,6 @@ export interface IONode { _endpoint: IOEndpoint; - _ioPromise: IOPromise; + _ioPromise: IOPromise; } export interface IOPromise extends Promise { abort?: () => void; diff --git a/lib/type-r/io-tools.js.map b/lib/type-r/io-tools.js.map index 80f72be..634522b 100644 --- a/lib/type-r/io-tools.js.map +++ b/lib/type-r/io-tools.js.map @@ -1 +1 @@ -{"version":3,"file":"io-tools.js","sourceRoot":"","sources":["../../src/type-r/io-tools.ts"],"names":[],"mappings":"AA4BA,MAAM,2BAA4B,IAAI;IAE1B,IAAA,4BAAU,CAAU;IAC5B,EAAE,CAAA,CAAE,UAAW,CAAC,CAAA,CAAC;QACb,MAAM,CAAC,gBAAgB,CAAE,UAAU,CAAE,CAAC;IAC1C,CAAC;IAGD,EAAE,CAAA,CAAE,IAAI,CAAC,MAAO,CAAC,CAAA,CAAC;QACN,IAAA,mCAAU,CAAiB;QACnC,MAAM,CAAC,UAAU,IAAI,UAAU,CAAE,IAAI,CAAC,SAAS,CAAE,CAAC;IACtD,CAAC;AACL,CAAC;AAUD,MAAM,0BAA2B,UAA0B;IACvD,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;IAE7B,eAAgB,EAAE;QACd,OAAO,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,IAAM,OAAO,GAAoB,IAAI,OAAO,CAAE,UAAE,SAAS,EAAE,QAAQ;QAC/D,MAAM,GAAG,QAAQ,CAAC;QAClB,OAAO,GAAG,SAAS,CAAC;QACpB,UAAU,CAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAE,CAAC;IACzC,CAAC,CAAmB,CAAC;IAErB,OAAO,CAAC,KAAK,GAAG;QACZ,OAAO,CAAC,CAAC,CAAC,OAAO,CAAE,OAAO,EAAE,MAAM,CAAE,CAAC,CAAC,CAAC,MAAM,CAAE,IAAI,KAAK,CAAE,aAAa,CAAE,CAAE,CAAC;IAChF,CAAC,CAAA;IAED,MAAM,CAAC,OAAO,CAAC;AACnB,CAAC;AAID,MAAM,kBAAmB,IAAa,EAAE,OAAwB,EAAE,OAAmB,EAAE,MAA8B;IAEjH,OAAO,CAAE,IAAI,CAAE,CAAC;IAGhB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAExB,IAAI,CAAC,UAAU,GAAG,OAAO;SACpB,IAAI,CAAE,UAAA,IAAI;QACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE9C,gBAAgB,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAE,CAAC;QAEtD,MAAM,CAAC,MAAM,CAAC;IAClB,CAAC,CAAE;SACF,KAAK,CAAE,UAAA,GAAG;QACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,OAAO,CAAC,KAAK,CAAE,GAAG,CAAE,CAAC;QAErB,gBAAgB,CAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAE,CAAC;QAEtD,MAAM,GAAG,CAAC;IACd,CAAC,CAAoB,CAAC;IAE1B,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAEtC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAC3B,CAAC;AAED,MAAM,kBAAmB,IAAa;IAClC,EAAE,CAAA,CAAE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,KAAM,CAAC,CAAA,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;AACL,CAAC;AAED,MAAM,2BAA4B,WAAW;IAAE,cAAO;SAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;QAAP,6BAAO;;IAClD,WAAW,CAAC,OAAO,CAAC,KAAK,CAAE,WAAW,EAAE,IAAI,CAAE,CAAC;IACvC,IAAA,mCAAU,CAAiB;IACnC,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAE,UAAU,EAAE,IAAI,CAAE,CAAC;AAC/D,CAAC"} \ No newline at end of file +{"version":3,"file":"io-tools.js","sourceRoot":"","sources":["../../src/type-r/io-tools.ts"],"names":[],"mappings":"AA4BA,MAAM,UAAU,gBAAgB,CAAE,IAAI;IAE1B,IAAA,4BAAU,CAAU;IAC5B,IAAI,UAAU,EAAE;QACZ,OAAO,gBAAgB,CAAE,UAAU,CAAE,CAAC;KACzC;IAGD,IAAI,IAAI,CAAC,MAAM,EAAE;QACL,IAAA,mCAAU,CAAiB;QACnC,OAAO,UAAU,IAAI,UAAU,CAAE,IAAI,CAAC,SAAS,CAAE,CAAC;KACrD;AACL,CAAC;AAUD,MAAM,UAAU,eAAe,CAAE,UAA0B;IACvD,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;IAE7B,SAAS,KAAK,CAAE,EAAE;QACd,OAAO,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,IAAM,OAAO,GAAoB,IAAI,OAAO,CAAE,UAAE,SAAS,EAAE,QAAQ;QAC/D,MAAM,GAAG,QAAQ,CAAC;QAClB,OAAO,GAAG,SAAS,CAAC;QACpB,UAAU,CAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAE,CAAC;IACzC,CAAC,CAAmB,CAAC;IAErB,OAAO,CAAC,KAAK,GAAG;QACZ,OAAO,CAAC,CAAC,CAAC,OAAO,CAAE,OAAO,EAAE,MAAM,CAAE,CAAC,CAAC,CAAC,MAAM,CAAE,IAAI,KAAK,CAAE,aAAa,CAAE,CAAE,CAAC;IAChF,CAAC,CAAA;IAED,OAAO,OAAO,CAAC;AACnB,CAAC;AAID,MAAM,UAAU,OAAO,CAAE,IAAa,EAAE,OAAwB,EAAE,OAAmB,EAAE,MAA8B;IAEjH,OAAO,CAAE,IAAI,CAAE,CAAC;IAGhB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAExB,IAAI,CAAC,UAAU,GAAG,OAAO;SACpB,IAAI,CAAE,UAAA,IAAI;QACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAE9C,gBAAgB,CAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAE,CAAC;QAEtD,OAAO,MAAM,CAAC;IAClB,CAAC,CAAE;SACF,KAAK,CAAE,UAAA,GAAG;QACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,OAAO,CAAC,KAAK,CAAE,GAAG,CAAE,CAAC;QAErB,gBAAgB,CAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAE,CAAC;QAEtD,MAAM,GAAG,CAAC;IACd,CAAC,CAAoB,CAAC;IAE1B,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAEtC,OAAO,IAAI,CAAC,UAAU,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,OAAO,CAAE,IAAa;IAClC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;QAC1C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KAC1B;AACL,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAE,WAAW;IAAE,cAAO;SAAP,UAAO,EAAP,qBAAO,EAAP,IAAO;QAAP,6BAAO;;IAClD,WAAW,CAAC,OAAO,CAAC,KAAK,CAAE,WAAW,EAAE,IAAI,CAAE,CAAC;IACvC,IAAA,mCAAU,CAAiB;IACnC,UAAU,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAE,UAAU,EAAE,IAAI,CAAE,CAAC;AAC/D,CAAC"} \ No newline at end of file diff --git a/lib/type-r/object-plus/events.d.ts b/lib/type-r/object-plus/events.d.ts index f9e3b28..1b5a5d8 100644 --- a/lib/type-r/object-plus/events.d.ts +++ b/lib/type-r/object-plus/events.d.ts @@ -23,7 +23,7 @@ export declare abstract class Messenger implements Mixable, EventSource { static onExtend: (BaseClass: Function) => void; static define: (definition?: MessengerDefinition, statics?: object) => MixableConstructor; static extend: (definition?: MessengerDefinition, statics?: object) => MixableConstructor; - static onDefine({localEvents, _localEvents, properties}: MessengerDefinition, BaseClass?: typeof Mixable): void; + static onDefine({ localEvents, _localEvents, properties }: MessengerDefinition, BaseClass?: typeof Mixable): void; _events: HandlersByEvent; _listeningTo: MessengersByCid; cid: string; diff --git a/lib/type-r/object-plus/events.js.map b/lib/type-r/object-plus/events.js.map index 278f422..728985f 100644 --- a/lib/type-r/object-plus/events.js.map +++ b/lib/type-r/object-plus/events.js.map @@ -1 +1 @@ -{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/events.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/events.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/object-plus/eventsource.js.map b/lib/type-r/object-plus/eventsource.js.map index d30586f..521a46e 100644 --- a/lib/type-r/object-plus/eventsource.js.map +++ b/lib/type-r/object-plus/eventsource.js.map @@ -1 +1 @@ -{"version":3,"file":"eventsource.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/eventsource.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"eventsource.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/eventsource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,SAAS,CAAA;AAkBvC;IAGI,kBAAa,GAAkC;QAF/C,aAAQ,GAAuB,EAAE,CAAC;QAG9B,IAAI,GAAG,EAAE;YACL,IAAI,GAAG,YAAY,QAAQ,EAAE;gBACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;aACxC;iBACG;gBACA,GAAG,IAAI,IAAI,CAAC,YAAY,CAAE,GAAG,CAAE,CAAC;aACnC;SACJ;IACL,CAAC;IAED,wBAAK,GAAL,UAAO,GAAc;QACjB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAE,GAAG,CAAC,QAAQ,CAAE,CAAC;IACzD,CAAC;IAED,+BAAY,GAAZ,UAAc,GAAsB;QAChC,KAAK,IAAI,KAAK,IAAI,GAAG,EAAE;YACnB,IAAI,CAAC,QAAQ,CAAE,KAAK,EAAE,GAAG,CAAE,KAAK,CAAE,CAAE,CAAA;SACvC;IACL,CAAC;IAED,+BAAY,GAAZ,UAAc,KAAc;QACxB,KAAiB,UAA4B,EAA5B,KAAA,KAAK,CAAC,KAAK,CAAE,aAAa,CAAE,EAA5B,cAA4B,EAA5B,IAA4B,EAAE;YAA1C,IAAI,MAAI,SAAA;YACT,IAAI,CAAC,QAAQ,CAAE,MAAI,EAAE,kBAAkB,CAAE,MAAI,CAAE,CAAE,CAAC;SACrD;IACL,CAAC;IAED,2BAAQ,GAAR,UAAU,KAAc,EAAE,QAAsC;QACpD,IAAA,wBAAQ,CAAU;QAE1B,KAAiB,UAA4B,EAA5B,KAAA,KAAK,CAAC,KAAK,CAAE,aAAa,CAAE,EAA5B,cAA4B,EAA5B,IAA4B,EAAE;YAA1C,IAAI,MAAI,SAAA;YACT,QAAQ,CAAC,IAAI,CAAE,IAAI,eAAe,CAAE,MAAI,EAAE,QAAQ,CAAE,CAAE,CAAC;SAC1D;IACL,CAAC;IAED,4BAAS,GAAT,UAAW,MAAW,EAAE,MAAoB;QACxC,KAAkB,UAAa,EAAb,KAAA,IAAI,CAAC,QAAQ,EAAb,cAAa,EAAb,IAAa,EAAE;YAA5B,IAAI,OAAK,SAAA;YACV,EAAE,CAAE,MAAM,EAAE,OAAK,CAAC,IAAI,EAAE,OAAK,CAAC,QAAQ,EAAE,MAAM,CAAE,CAAC;SACpD;IACL,CAAC;IAED,8BAAW,GAAX,UAAa,MAAW,EAAE,MAAoB;QAC1C,KAAkB,UAAa,EAAb,KAAA,IAAI,CAAC,QAAQ,EAAb,cAAa,EAAb,IAAa,EAAE;YAA5B,IAAI,OAAK,SAAA;YACV,GAAG,CAAE,MAAM,EAAE,OAAK,CAAC,IAAI,EAAE,OAAK,CAAC,QAAQ,EAAE,MAAM,CAAE,CAAC;SACrD;IACL,CAAC;IACL,eAAC;AAAD,CAAC,AAjDD,IAiDC;;AAGD;IAGI,yBACW,IAAa,EACpB,QAAsC;QAD/B,SAAI,GAAJ,IAAI,CAAS;QAGpB,IAAI,QAAQ,KAAK,IAAI,EAAE;YACnB,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAE,IAAI,CAAE,CAAC;SAC9C;aACI,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;YACnC,IAAI,CAAC,QAAQ;gBACT,SAAS,aAAa;oBAClB,IAAM,OAAO,GAAG,IAAI,CAAE,QAAQ,CAAE,CAAC;oBACjC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAE,IAAI,EAAE,SAAS,CAAE,CAAC;gBAChD,CAAC,CAAC;SACT;aACG;YACA,IAAI,CAAC,QAAQ,GAAa,QAAQ,CAAC;SACtC;IACL,CAAC;IACL,sBAAC;AAAD,CAAC,AArBD,IAqBC;;AAGD,IAAM,iBAAiB,GAAG,EAAE,CAAC;AAG7B,SAAS,kBAAkB,CAAE,KAAc;IACvC,OAAO,iBAAiB,CAAE,KAAK,CAAE,IAAI,CACjC,iBAAiB,CAAE,KAAK,CAAE,GAAG,UAAU,CAAE,EAAE,CAAE,EAAE,CAAE,EAAE,CAAE,EAAE,CAAE;QACrD,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;YAAG,QAAQ,CAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;QAC1E,IAAI,CAAC,KAAK,KAAK,CAAC;YAAG,QAAQ,CAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;;YAC/C,QAAQ,CAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;IACvC,CAAC,CACJ,CAAC;AACN,CAAC;AAQD;IACI,sBAAoB,QAAmB,EAAS,OAAa,EAAS,IAAW;QAAX,qBAAA,EAAA,WAAW;QAA7D,aAAQ,GAAR,QAAQ,CAAW;QAAS,YAAO,GAAP,OAAO,CAAM;QAAS,SAAI,GAAJ,IAAI,CAAO;IAAG,CAAC;IACzF,mBAAC;AAAD,CAAC,AAFD,IAEC;;AAGD,SAAS,OAAO,CAAE,OAAyB,EAAE,IAAa,EAAE,QAAmB,EAAE,OAAa;IAC1F,IAAM,IAAI,GAAG,OAAO,CAAE,IAAI,CAAE,CAAC;IAE7B,IAAI,YAAY,EAAE,IAAI,CAAC;IAEvB,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE;QAElC,IAAI,CAAE,QAAQ,IAAI,QAAQ,KAAK,EAAE,CAAC,QAAQ,IAAI,QAAQ,KAAK,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAE;YAC9E,CAAE,OAAO,IAAI,OAAO,KAAK,EAAE,CAAC,OAAO,CAAE,EAAE;YAEvC,IAAI,GAAG,EAAE,CAAC;YACV,YAAY,IAAI,CAAE,YAAY,GAAG,EAAE,CAAE,CAAC;SACzC;aAEG;YACA,IAAI,IAAI;gBAAG,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;SAClC;KACJ;IAED,IAAI,IAAI,KAAK,YAAY;QAAG,OAAO,CAAE,IAAI,CAAE,GAAG,YAAY,CAAC;AAC/D,CAAC;AAGD,SAAS,SAAS,CAAE,IAAmB,EAAE,CAAC,EAAE,CAAC;IACzC,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI;QAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAE,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;AAChF,CAAC;AAGD,SAAS,SAAS,CAAE,IAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC5C,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI;QAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAE,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;AACnF,CAAC;AAGD,SAAS,SAAS,CAAE,IAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC/C,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI;QAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAE,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;AACtF,CAAC;AAGD,SAAS,SAAS,CAAE,IAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAClD,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI;QAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAE,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;AACzF,CAAC;AAGD,SAAS,SAAS,CAAE,IAAmB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACrD,KAAK,IAAI,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI;QAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAE,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;AAC5F,CAAC;AAQD,MAAM,UAAU,EAAE,CAAE,MAAoB,EAAE,IAAa,EAAE,QAAmB,EAAE,OAAc;IACxF,IAAI,QAAQ,EAAE;QACV,IAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,CAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAE,IAAI,CAAE,CAAE,CAAC;QAC7E,OAAO,CAAE,IAAI,CAAE,GAAG,IAAI,YAAY,CAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAE,IAAI,CAAE,CAAE,CAAC;KAC5E;AACL,CAAC;AAGD,MAAM,UAAU,IAAI,CAAE,MAAoB,EAAE,IAAa,EAAE,QAAmB,EAAE,OAAc;IAC1F,IAAI,QAAQ,EAAE;QACV,IAAM,MAAI,GAAc,KAAK,CAAE;YAC3B,GAAG,CAAE,MAAM,EAAE,IAAI,EAAE,MAAI,CAAE,CAAC;YAC1B,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,MAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,EAAE,CAAE,MAAM,EAAE,IAAI,EAAE,MAAI,EAAE,OAAO,CAAE,CAAC;KACrC;AACL,CAAC;AAGD,MAAM,UAAU,GAAG,CAAE,MAAoB,EAAE,IAAc,EAAE,QAAoB,EAAE,OAAc;IACnF,IAAA,wBAAO,CAAY;IAC3B,IAAI,OAAO,EAAE;QACT,IAAI,QAAQ,IAAI,OAAO,EAAG;YACtB,IAAI,IAAI,EAAE;gBACN,OAAO,CAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAE,CAAC;aAC/C;iBACG;gBACA,KAAK,IAAI,MAAI,IAAI,OAAO,EAAE;oBACtB,OAAO,CAAE,OAAO,EAAE,MAAI,EAAE,QAAQ,EAAE,OAAO,CAAE,CAAC;iBAC/C;aACJ;SACJ;aACI,IAAI,IAAI,EAAE;YACX,OAAO,CAAE,IAAI,CAAE,GAAG,KAAK,CAAC,CAAC;SAC5B;aACG;YACA,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;SAC3B;KACJ;AACL,CAAC;AAQD,IAAM,aAAa,GAAG,KAAK,CAAC;AAG5B,MAAM,UAAU,OAAO,CAAE,GAAc,EAAE,MAAoB,EAAE,MAAe,EAAE,QAAmB,EAAE,OAAO;IACxG,IAAI,aAAa,CAAC,IAAI,CAAE,MAAM,CAAE,EAAE;QAC9B,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAE,aAAa,CAAE,CAAC;QAC5C,KAAiB,UAAK,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK;YAAjB,IAAI,MAAI,cAAA;YAAY,GAAG,CAAE,MAAM,EAAE,MAAI,EAAE,QAAQ,EAAE,OAAO,CAAE,CAAC;SAAA;KACnE;;QACI,GAAG,CAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAE,CAAC;AAClD,CAAC;AAUD,MAAM,UAAU,QAAQ,CAAE,IAAkB,EAAE,IAAa,EAAE,CAAC,EAAE,CAAC;IACrD,IAAA,sBAAO,CAAU;IACzB,IAAI,OAAO,EAAE;QACH,IAAA,KAAK,GAAG,OAAO,CAAE,IAAI,CAAE,EACvB,iBAAG,CAAa;QAEtB,SAAS,CAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;QACzB,SAAS,CAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;KAChC;AACL,CAAC;AAAA,CAAC;AAGF,MAAM,UAAU,QAAQ,CAAE,IAAkB,EAAE,IAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACxD,IAAA,sBAAO,CAAU;IACzB,IAAI,OAAO,EAAE;QACH,IAAA,KAAK,GAAG,OAAO,CAAE,IAAI,CAAE,EACvB,iBAAG,CAAa;QAEtB,SAAS,CAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;QAC5B,SAAS,CAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;KACnC;AACL,CAAC;AAAA,CAAC;AAGF,MAAM,UAAU,QAAQ,CAAE,IAAkB,EAAE,IAAa,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9D,IAAA,sBAAO,CAAU;IACzB,IAAI,OAAO,EAAE;QACH,IAAA,KAAK,GAAG,OAAO,CAAE,IAAI,CAAE,EACvB,iBAAG,CAAa;QAEtB,SAAS,CAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;QAClC,SAAS,CAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE,CAAC;KACzC;AACL,CAAC;AAAA,CAAC"} \ No newline at end of file diff --git a/lib/type-r/object-plus/index.d.ts b/lib/type-r/object-plus/index.d.ts index daa12df..e45e6bd 100644 --- a/lib/type-r/object-plus/index.d.ts +++ b/lib/type-r/object-plus/index.d.ts @@ -5,7 +5,7 @@ export * from './events'; import * as eventsApi from './eventsource'; export { eventsApi }; import { MixableConstructor } from './mixins'; -declare global { +declare global { interface ObjectConstructor { assign(dest: T, ...sources: Object[]): T; log: tools.Log; diff --git a/lib/type-r/object-plus/mixins.d.ts b/lib/type-r/object-plus/mixins.d.ts index 4503431..aa9c750 100644 --- a/lib/type-r/object-plus/mixins.d.ts +++ b/lib/type-r/object-plus/mixins.d.ts @@ -25,6 +25,7 @@ export declare function predefine(Constructor: MixableConstructor): void; export declare function define(ClassOrDefinition: Function): void; export declare function define(ClassOrDefinition: object): ClassDecorator; export declare function definitions(rules: MixinMergeRules): ClassDecorator; +export declare function propertyListDecorator(listName: string): PropertyDecorator; export declare function definitionDecorator(definitionKey: any, value: any): (proto: object, name: string) => void; export declare class MixinsState { Class: MixableConstructor; diff --git a/lib/type-r/object-plus/mixins.js b/lib/type-r/object-plus/mixins.js index 854297e..83e5980 100644 --- a/lib/type-r/object-plus/mixins.js +++ b/lib/type-r/object-plus/mixins.js @@ -63,8 +63,16 @@ export function definitions(rules) { mixins.definitionRules = defaults(hashMap(), rules, mixins.definitionRules); }; } +export function propertyListDecorator(listName) { + return function propList(proto, name) { + var list = proto.hasOwnProperty(listName) ? + proto[listName] : (proto[listName] = (proto[listName] || []).slice()); + list.push(name); + }; +} export function definitionDecorator(definitionKey, value) { return function (proto, name) { + var _a, _b; MixinsState .get(proto.constructor) .mergeObject(proto, (_a = {}, @@ -72,7 +80,6 @@ export function definitionDecorator(definitionKey, value) { _b[name] = value, _b), _a)); - var _a, _b; }; } var MixinsState = (function () { @@ -108,9 +115,6 @@ var MixinsState = (function () { else if (appliedMixins.indexOf(mixin) < 0) { appliedMixins.push(mixin); if (typeof mixin === 'function') { - if (getBaseClass(mixin) !== Object) { - console.log('Mixin error'); - } this.mergeObject(this.Class, mixin); var sourceMixins = mixin.mixins; if (sourceMixins) { @@ -179,7 +183,7 @@ var dontMix = { }; function forEachOwnProp(object, fun) { var ignore = dontMix[typeof object]; - for (var _i = 0, _a = Object.getOwnPropertyNames(object); _i < _a.length; _i++) { + for (var _i = 0, _a = Object.keys(object); _i < _a.length; _i++) { var name_2 = _a[_i]; ignore[name_2] || fun(name_2); } diff --git a/lib/type-r/object-plus/mixins.js.map b/lib/type-r/object-plus/mixins.js.map index 4a41996..d592232 100644 --- a/lib/type-r/object-plus/mixins.js.map +++ b/lib/type-r/object-plus/mixins.js.map @@ -1 +1 @@ -{"version":3,"file":"mixins.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/mixins.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"mixins.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/mixins.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/object-plus/tools.d.ts b/lib/type-r/object-plus/tools.d.ts index 3215405..0600e13 100644 --- a/lib/type-r/object-plus/tools.d.ts +++ b/lib/type-r/object-plus/tools.d.ts @@ -1,3 +1,4 @@ +export declare function defaults(dest: T, ...sources: Object[]): T; export declare type Logger = (level: LogLevel, error: string, props?: object) => void; export declare type LogLevel = 'none' | 'error' | 'warn' | 'info' | 'debug' | 'log'; export interface Log extends Logger { @@ -26,14 +27,7 @@ export declare function transform(dest: { export declare function fastAssign(dest: A, source: {}): A; export declare function fastDefaults(dest: A, source: {}): A; export declare function assign(dest: T, ...sources: Object[]): T; -export declare function defaults(dest: T, ...sources: Object[]): T; -declare global { - interface ObjectConstructor { - setPrototypeOf(target: Object, proto: Object): any; - } -} export declare function keys(o: any): string[]; export declare function once(func: Function): Function; export declare function notEqual(a: any, b: any): boolean; export declare function hashMap(obj?: any): any; -export {}; diff --git a/lib/type-r/object-plus/tools.js b/lib/type-r/object-plus/tools.js index 01983be..2330693 100644 --- a/lib/type-r/object-plus/tools.js +++ b/lib/type-r/object-plus/tools.js @@ -1,3 +1,17 @@ +export function defaults(dest, source) { + for (var name in source) { + if (source.hasOwnProperty(name) && !dest.hasOwnProperty(name)) { + dest[name] = source[name]; + } + } + if (arguments.length > 2) { + for (var i = 2; i < arguments.length; i++) { + var other = arguments[i]; + other && defaults(dest, other); + } + } + return dest; +} var levelToNumber = { none: 0, error: 1, warn: 2, info: 3, log: 4, debug: 5 }; @@ -29,11 +43,20 @@ export var log = function (a_level, a_msg, a_props) { log.level = typeof process !== 'undefined' && process.env && process.env.NODE_ENV === 'production' ? 1 : 2; log.throw = 0; log.stop = 0; +var toString = typeof window === 'undefined' ? + function toString(something) { + if (something && typeof something === 'object') { + var value = something.__inner_state__ || something, isTransactional = Boolean(something.__inner_state__), isArray = Array.isArray(value); + var keys_1 = Object.keys(value).join(', '), body = isArray ? "[ length = " + value.length + " ]" : "{ " + keys_1 + " }"; + return something.constructor.name + ' ' + body; + } + return something; + } : function toString(x) { return x; }; if (typeof console !== 'undefined') { log.logger = function _console(level, error, props) { var args = [error]; for (var name_1 in props) { - args.push("\n\t" + name_1 + ":", props[name_1]); + args.push("\n\t" + name_1 + ":", toString(props[name_1])); } console[level].apply(console, args); }; @@ -164,21 +187,6 @@ export function assign(dest, source) { } return dest; } -export function defaults(dest, source) { - for (var name in source) { - if (source.hasOwnProperty(name) && !dest.hasOwnProperty(name)) { - dest[name] = source[name]; - } - } - if (arguments.length > 2) { - for (var i = 2; i < arguments.length; i++) { - var other = arguments[i]; - other && defaults(dest, other); - } - } - return dest; -} -Object.setPrototypeOf || (Object.setPrototypeOf = defaults); export function keys(o) { return o ? Object.keys(o) : []; } diff --git a/lib/type-r/object-plus/tools.js.map b/lib/type-r/object-plus/tools.js.map index 9c55a8f..60ddc54 100644 --- a/lib/type-r/object-plus/tools.js.map +++ b/lib/type-r/object-plus/tools.js.map @@ -1 +1 @@ -{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/tools.ts"],"names":[],"mappings":"AAaA,IAAM,aAAa,GAAG;IAClB,IAAI,EAAG,CAAC,EAAE,KAAK,EAAG,CAAC,EAAE,IAAI,EAAG,CAAC,EAAE,IAAI,EAAG,CAAC,EAAE,GAAG,EAAG,CAAC,EAAE,KAAK,EAAG,CAAC;CAC9D,CAAA;AASD,MAAM,CAAC,IAAM,GAAG,GAAc,UAAU,OAAkB,EAAE,KAAc,EAAE,OAAgB;IACxF,IAAI,aAAa,GAAG,aAAa,CAAE,OAAO,CAAE,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC;IAEhE,EAAE,CAAA,CAAE,aAAa,KAAK,KAAK,CAAC,IAAI,CAAC,OAAQ,CAAC,CAAA,CAAC;QACvC,aAAa,GAAG,CAAC,CAAC;QAClB,GAAG,GAAG,OAAO,CAAC;QACd,KAAK,GAAG,KAAK,CAAC;QACd,KAAK,GAAG,KAAK,CAAC;IAClB,CAAC;IACD,IAAI,CAAA,CAAC;QACD,GAAG,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC;IAClD,CAAC;IAED,EAAE,CAAA,CAAE,aAAa,IAAI,GAAG,CAAC,KAAM,CAAC,CAAA,CAAC;QAC7B,EAAE,CAAA,CAAE,aAAa,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,MAAO,CAAC,CAAA,CAAC;YAC5C,IAAM,KAAK,GAAG,IAAI,KAAK,CAAE,GAAG,CAAE,CAAC;YAC9B,KAAa,CAAC,KAAK,GAAG,KAAK,CAAC;YAC7B,MAAM,KAAK,CAAC;QAChB,CAAC;QACD,IAAI,CAAA,CAAC;YACD,GAAG,CAAC,MAAM,CAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAE,CAAC;YAEhC,EAAE,CAAA,CAAE,aAAa,IAAI,GAAG,CAAC,IAAK,CAAC,CAAA,CAAC;gBAC5B,QAAQ,CAAC;YACb,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC,CAAA;AAID,GAAG,CAAC,KAAK,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3G,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AACd,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;AAEb,EAAE,CAAA,CAAE,OAAO,OAAO,KAAK,WAAY,CAAC,CAAC,CAAC;IAClC,GAAG,CAAC,MAAM,GAAG,kBAAmB,KAAgB,EAAE,KAAc,EAAE,KAAc;QAC5E,IAAM,IAAI,GAAG,CAAE,KAAK,CAAE,CAAC;QACvB,GAAG,CAAA,CAAE,IAAI,MAAI,IAAI,KAAM,CAAC,CAAA,CAAC;YACrB,IAAI,CAAC,IAAI,CAAE,SAAO,MAAI,MAAG,EAAE,KAAK,CAAE,MAAI,CAAE,CAAE,CAAC;QAC/C,CAAC;QAED,OAAO,CAAE,KAAK,CAAE,CAAC,KAAK,CAAE,OAAO,EAAE,IAAI,CAAE,CAAC;IAC5C,CAAC,CAAA;AACL,CAAC;AAGD,MAAM,sBAAuB,KAAW;IACpC,EAAE,CAAA,CAAE,KAAK,KAAK,IAAK,CAAC,CAAA,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAA,CAAE,OAAO,KAAM,CAAC,CAAA,CAAC;QACvB,KAAK,QAAQ,CAAE;QACf,KAAK,QAAQ,CAAE;QACf,KAAK,SAAS;YACV,MAAM,CAAC,IAAI,CAAC;QAEhB,KAAK,QAAQ;YACT,IAAI,KAAK,GAAG,MAAM,CAAC,cAAc,CAAE,KAAK,CAAE,CAAC;YAE3C,EAAE,CAAA,CAAE,KAAK,KAAK,MAAM,CAAC,SAAS,IAAI,KAAK,KAAK,KAAK,CAAC,SAAU,CAAC,CAAA,CAAC;gBAC1D,MAAM,CAAC,KAAK,CAAE,KAAK,EAAE,WAAW,CAAE,CAAC;YACvC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK,CAAC;AACjB,CAAC;AAMD,MAAM,uBAAwB,KAAgB;IAC1C,MAAM,CAAC,MAAM,CAAC,cAAc,CAAE,KAAK,CAAC,SAAS,CAAE,CAAC,WAAW,CAAA;AAC/D,CAAC;AAED,MAAM,6BAAoD,KAAK,EAAE,UAAc;IAAE,eAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,8BAAc;;IAC3F,GAAG,CAAA,CAAc,UAAK,EAAL,eAAK,EAAL,mBAAK,EAAL,IAAK;QAAjB,IAAI,MAAI,cAAA;QACT,IAAM,KAAK,GAAG,UAAU,CAAE,MAAI,CAAE,CAAC;QACjC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAE,KAAK,CAAC,SAAS,CAAE,MAAI,CAAE,GAAG,KAAK,CAAE,CAAC;KAC3D;AACL,CAAC;AAGD,MAAM,kBAAmB,GAAQ;IAC7B,EAAE,CAAA,CAAE,GAAI,CAAC,CAAA,CAAC;QACN,GAAG,CAAA,CAAE,IAAI,GAAG,IAAI,GAAI,CAAC,CAAA,CAAC;YAClB,EAAE,CAAA,CAAE,GAAG,CAAC,cAAc,CAAE,GAAG,CAAG,CAAC,CAAA,CAAC;gBAC5B,MAAM,CAAC,KAAK,CAAC;YACjB,CAAC;QACL,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC;AAChB,CAAC;AAKD,mBAAoB,GAAW,EAAE,GAAc;IAC3C,IAAI,MAAM,CAAC;IAEX,GAAG,CAAA,CAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,EAAE,CAAA,CAAE,MAAM,GAAG,GAAG,CAAE,GAAG,CAAE,CAAC,CAAE,EAAE,CAAC,CAAG,CAAC,CAAA,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC;QAClB,CAAC;IACL,CAAC;AACL,CAAC;AAGD,oBAAqB,GAAQ,EAAE,GAAc;IACzC,IAAI,MAAM,CAAC;IAEX,GAAG,CAAA,CAAE,IAAI,GAAG,IAAI,GAAI,CAAC,CAAA,CAAC;QAClB,EAAE,CAAA,CAAE,GAAG,CAAC,cAAc,CAAE,GAAG,CAAG,CAAC,CAAA,CAAC;YAC5B,EAAE,CAAA,CAAE,MAAM,GAAG,GAAG,CAAE,GAAG,CAAE,GAAG,CAAE,EAAE,GAAG,CAAG,CAAC,CAAA,CAAC;gBAClC,MAAM,CAAC,MAAM,CAAC;YAClB,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AAGD,MAAM,eAAgB,GAAG,EAAE,GAAc;IACrC,EAAE,CAAA,CAAE,MAAM,CAAC,cAAc,CAAE,GAAG,CAAE,KAAK,UAAW,CAAC,CAAA,CAAC;QAC9C,MAAM,CAAC,SAAS,CAAE,GAAG,EAAE,GAAG,CAAE,CAAC;IACjC,CAAC;IACD,IAAI,CAAA,CAAC;QACD,MAAM,CAAC,UAAU,CAAE,GAAG,EAAE,GAAG,CAAE,CAAC;IAClC,CAAC;AACL,CAAC;AAGD,MAAM,gBAAiB,GAAS,EAAE,SAAoB;IAClD,MAAM,CAAC,CAAC,IAAI,CAAE,GAAG,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,SAAS,CAAE,CAAC,CAAE,EAAf,CAAe,CAAE,CAAC;AAC9C,CAAC;AAGD,MAAM,gCAAiC,GAAQ,EAAE,IAAa;IAC1D,IAAI,IAAyB,CAAC;IAE9B,GAAG,CAAA,CAAE,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,cAAc,CAAE,KAAK,CAAE,EAAG,CAAC;QAC5E,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAE,KAAK,EAAE,IAAI,CAAE,CAAC;IAC1D,CAAC;IAED,MAAM,CAAC,IAAI,CAAC;AAChB,CAAC;AAID,MAAM,eAAgB,MAAM;IACxB,IAAM,IAAI,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,CAAC;IAE9B,GAAG,CAAA,CAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAG,EAAE,CAAC;QACzC,OAAO,CAAE,SAAS,CAAE,CAAC,CAAE,CAAE,GAAG,IAAI,CAAC;IACrC,CAAC;IAED,GAAG,CAAA,CAAE,IAAI,IAAI,IAAI,MAAO,CAAC,CAAC,CAAC;QACvB,EAAE,CAAA,CAAE,CAAC,OAAO,CAAC,cAAc,CAAE,IAAI,CAAE,IAAI,MAAM,CAAC,cAAc,CAAE,IAAI,CAAG,CAAC,CAAC,CAAC;YACpE,IAAI,CAAE,IAAI,CAAE,GAAG,MAAM,CAAE,IAAI,CAAE,CAAC;QAClC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC;AAChB,CAAC;AAKD,MAAM,oBAA6B,IAA+B,EAAE,MAAiC,EAAE,GAA6C;IAChJ,GAAG,CAAA,CAAE,IAAI,IAAI,IAAI,MAAO,CAAC,CAAC,CAAC;QACvB,EAAE,CAAA,CAAE,MAAM,CAAC,cAAc,CAAE,IAAI,CAAG,CAAC,CAAC,CAAC;YACjC,IAAI,KAAK,GAAG,GAAG,CAAE,MAAM,CAAE,IAAI,CAAE,EAAE,IAAI,CAAE,CAAC;YACxC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAE,IAAI,CAAE,IAAI,CAAE,GAAQ,KAAK,CAAE,CAAC;QACtD,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC;AAChB,CAAC;AAGD,MAAM,qBAA2B,IAAQ,EAAE,MAAW;IAClD,GAAG,CAAA,CAAE,IAAI,IAAI,IAAI,MAAO,CAAC,CAAC,CAAC;QACvB,IAAI,CAAE,IAAI,CAAE,GAAG,MAAM,CAAE,IAAI,CAAE,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,IAAI,CAAC;AAChB,CAAC;AAGD,MAAM,uBAA6B,IAAQ,EAAE,MAAW;IACpD,GAAG,CAAA,CAAE,IAAI,IAAI,IAAI,MAAO,CAAC,CAAC,CAAC;QACvB,EAAE,CAAA,CAAE,IAAI,CAAE,IAAI,CAAE,KAAK,KAAK,CAAE,CAAC,CAAA,CAAC;YAC1B,IAAI,CAAE,IAAI,CAAE,GAAG,MAAM,CAAE,IAAI,CAAE,CAAC;QAClC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC;AAChB,CAAC;AAID,MAAM,iBAAuB,IAAQ,EAAE,MAAe;IAClD,GAAG,CAAA,CAAE,IAAI,IAAI,IAAI,MAAO,CAAC,CAAC,CAAC;QACvB,EAAE,CAAA,CAAE,MAAM,CAAC,cAAc,CAAE,IAAI,CAAG,CAAC,CAAC,CAAC;YACjC,IAAI,CAAE,IAAI,CAAE,GAAG,MAAM,CAAE,IAAI,CAAE,CAAC;QAClC,CAAC;IACL,CAAC;IAED,EAAE,CAAA,CAAE,SAAS,CAAC,MAAM,GAAG,CAAE,CAAC,CAAA,CAAC;QACvB,GAAG,CAAA,CAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,IAAM,KAAK,GAAG,SAAS,CAAE,CAAC,CAAE,CAAC;YAC7B,KAAK,IAAI,MAAM,CAAE,IAAI,EAAE,KAAK,CAAE,CAAC;QACnC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC;AAChB,CAAC;AAID,MAAM,mBAAyB,IAAQ,EAAE,MAAe;IACpD,GAAG,CAAA,CAAE,IAAI,IAAI,IAAI,MAAO,CAAC,CAAC,CAAC;QACvB,EAAE,CAAA,CAAE,MAAM,CAAC,cAAc,CAAE,IAAI,CAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAE,IAAI,CAAG,CAAC,CAAC,CAAC;YACjE,IAAI,CAAE,IAAI,CAAE,GAAG,MAAM,CAAE,IAAI,CAAE,CAAC;QAClC,CAAC;IACL,CAAC;IAED,EAAE,CAAA,CAAE,SAAS,CAAC,MAAM,GAAG,CAAE,CAAC,CAAA,CAAC;QACvB,GAAG,CAAA,CAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,IAAM,KAAK,GAAG,SAAS,CAAE,CAAC,CAAE,CAAC;YAC7B,KAAK,IAAI,QAAQ,CAAE,IAAI,EAAE,KAAK,CAAE,CAAC;QACrC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC;AAChB,CAAC;AASD,MAAM,CAAC,cAAc,IAAI,CAAE,MAAM,CAAC,cAAc,GAAG,QAAQ,CAAE,CAAC;AAG9D,MAAM,eAAgB,CAAO;IACzB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAE,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACrC,CAAC;AAGD,MAAM,eAAgB,IAAe;IACjC,IAAI,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC;QACH,EAAE,CAAC,CAAE,KAAM,CAAC,CAAC,CAAC;YACV,KAAK,GAAG,KAAK,CAAC;YACd,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;YACnC,IAAI,GAAG,IAAI,CAAC;QAChB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;IAChB,CAAC,CAAC;AACN,CAAC;AAGD,IAAM,UAAU,GAAG,KAAK,CAAC,SAAS,EAC5B,SAAS,GAAG,IAAI,CAAC,SAAS,EAC1B,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC;AAOrC,MAAM,mBAAoB,CAAO,EAAE,CAAO;IACtC,EAAE,CAAA,CAAE,CAAC,KAAK,CAAE,CAAC;QAAC,MAAM,CAAC,KAAK,CAAC;IAE3B,EAAE,CAAA,CAAE,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,QAAQ,IAAI,OAAO,CAAC,IAAI,QAAS,CAAC,CAAC,CAAC;QAC1D,IAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAE,CAAC,CAAE,CAAC;QAE1C,EAAE,CAAA,CAAE,MAAM,KAAK,MAAM,CAAC,cAAc,CAAE,CAAC,CAAG,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC;QAExD,MAAM,CAAA,CAAE,MAAO,CAAC,CAAA,CAAC;YACb,KAAK,SAAS,EAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;YACpC,KAAK,UAAU,EAAI,MAAM,CAAC,cAAc,CAAE,CAAC,EAAE,CAAC,CAAE,CAAC;YACjD,KAAK,WAAW,CAAE;YAClB,KAAK,IAAI;gBACL,MAAM,CAAC,eAAe,CAAE,CAAC,EAAE,CAAC,CAAE,CAAC;QACvC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,IAAI,CAAC;AAChB,CAAC;AAGD,yBAA0B,CAAC,EAAE,CAAC;IAC1B,IAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAE,CAAC,CAAE,CAAC;IAE/B,EAAE,CAAA,CAAE,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAE,CAAC,CAAE,CAAC,MAAO,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC;IAE3D,GAAG,CAAA,CAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAG,CAAC;QACrC,IAAM,GAAG,GAAG,KAAK,CAAE,CAAC,CAAE,CAAC;QAEvB,EAAE,CAAA,CAAE,CAAC,CAAC,CAAC,cAAc,CAAE,GAAG,CAAE,IAAI,QAAQ,CAAE,CAAC,CAAE,GAAG,CAAE,EAAE,CAAC,CAAE,GAAG,CAAE,CAAG,CAAC,CAAC,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK,CAAC;AACjB,CAAC;AAGD,wBAAyB,CAAC,EAAE,CAAC;IACzB,EAAE,CAAA,CAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAO,CAAC;QAAC,MAAM,CAAC,IAAI,CAAC;IAExC,GAAG,CAAA,CAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAG,CAAC;QACjC,EAAE,CAAA,CAAE,QAAQ,CAAE,CAAC,CAAE,CAAC,CAAE,EAAE,CAAC,CAAE,CAAC,CAAE,CAAG,CAAC;YAAC,MAAM,CAAC,IAAI,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC;AACjB,CAAC;AAMD,IAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAE,IAAI,CAAE,CAAC;AACxC,SAAS,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;AAEtD,MAAM,kBAAmB,GAAI;IACzB,IAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAE,SAAS,CAAE,CAAC;IACxC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAE,IAAI,EAAE,GAAG,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC"} \ No newline at end of file +{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/type-r/object-plus/tools.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/attributes/any.d.ts b/lib/type-r/record/attributes/any.d.ts index a2b6956..97bfb5b 100644 --- a/lib/type-r/record/attributes/any.d.ts +++ b/lib/type-r/record/attributes/any.d.ts @@ -2,7 +2,7 @@ import { AttributesContainer, AttributeUpdatePipeline, RecordTransaction } from import { tools } from '../../object-plus'; import { TransactionOptions } from '../../transactions'; import { IOEndpoint } from '../../io-tools'; -declare global { +declare global { interface Function { _attribute: typeof AnyType; } @@ -42,7 +42,7 @@ export declare class AnyType implements AttributeUpdatePipeline { clone(value: any, record: AttributesContainer): any; dispose(record: AttributesContainer, value: any): void; validate(record: AttributesContainer, value: any, key: string): void; - toJSON(value: any, key: any): any; + toJSON(value: any, key: any, options?: object): any; createPropertyDescriptor(): PropertyDescriptor | void; value: any; static defaultValue: any; @@ -54,8 +54,7 @@ export declare class AnyType implements AttributeUpdatePipeline { propagateChanges: boolean; _log(level: tools.LogLevel, text: string, value: any, record: AttributesContainer): void; defaultValue(): any; - parse: Parse; constructor(name: string, a_options: AttributeOptions); - getHook: (value, key: string) => any; - get: (value, key: string) => any; + getHook: (value: any, key: string) => any; + get: (value: any, key: string) => any; } diff --git a/lib/type-r/record/attributes/any.js b/lib/type-r/record/attributes/any.js index c456b24..afecd90 100644 --- a/lib/type-r/record/attributes/any.js +++ b/lib/type-r/record/attributes/any.js @@ -30,7 +30,6 @@ var AnyType = (function () { this.validate = wrapIsRequired(this.validate); } transforms.unshift(this.convert); - this.parse = parse || this.parse; if (this.get) getHooks.unshift(this.get); this.initialize.call(this, options); @@ -43,6 +42,13 @@ var AnyType = (function () { } this.transform = transforms.length ? transforms.reduce(chainTransforms) : this.transform; this.handleChange = changeHandlers.length ? changeHandlers.reduce(chainChangeHandlers) : this.handleChange; + var _a = this, doInit = _a.doInit, doUpdate = _a.doUpdate; + this.doInit = parse ? function (value, record, options) { + return doInit.call(this, options.parse && value !== void 0 ? parse.call(record, value, this.name) : value, record, options); + } : doInit; + this.doUpdate = parse ? function (value, record, options, nested) { + return doUpdate.call(this, options.parse && value !== void 0 ? parse.call(record, value, this.name) : value, record, options, nested); + } : doUpdate; } AnyType.create = function (options, name) { var type = options.type, AttributeCtor = options._attribute || (type ? type._attribute : AnyType); @@ -63,8 +69,8 @@ var AnyType = (function () { this.handleChange(void 0, value, record, emptyOptions); }; AnyType.prototype.validate = function (record, value, key) { }; - AnyType.prototype.toJSON = function (value, key) { - return value && value.toJSON ? value.toJSON() : value; + AnyType.prototype.toJSON = function (value, key, options) { + return value && value.toJSON ? value.toJSON(options) : value; }; AnyType.prototype.createPropertyDescriptor = function () { var _a = this, name = _a.name, getHook = _a.getHook; diff --git a/lib/type-r/record/attributes/any.js.map b/lib/type-r/record/attributes/any.js.map index f408108..f423035 100644 --- a/lib/type-r/record/attributes/any.js.map +++ b/lib/type-r/record/attributes/any.js.map @@ -1 +1 @@ -{"version":3,"file":"any.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/any.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"any.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/any.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAmE,MAAM,WAAW,CAAA;AACzG,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAIjC,IAAA,yBAAQ,EAAE,qBAAM,CAAU;AAwClC,IAAM,YAAY,GAAwB,EAAE,CAAC;AAK7C;IAqII,iBAAoB,IAAa,EAAE,SAA4B;QAA3C,SAAI,GAAJ,IAAI,CAAS;QAgFjC,YAAO,GAAoC,IAAI,CAAA;QA9E3C,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAGzB,IAAM,OAAO,GAAsB,MAAM,CAAE,EAAE,QAAQ,EAAG,EAAE,EAAE,UAAU,EAAG,EAAE,EAAE,cAAc,EAAG,EAAE,EAAE,EAAE,SAAS,CAAE,CAAC;QAChH,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC5C,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAChD,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAG9C,IAAA,qBAAK,EAAE,mBAAI,EAAE,qBAAK,EAAE,uBAAM,EAAE,mCAAY,EACxC,2BAAQ,EAAE,2BAAQ,EAAE,+BAAU,EAAE,uCAAc,CACtC;QAGlB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,IAAI,GAAI,IAAI,CAAC;QAGlB,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,EAAE;YACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;SACnC;aACI,IAAI,KAAK,CAAC,WAAW,CAAE,KAAK,CAAE,EAAE;YAEjC,IAAI,CAAC,YAAY,GAAG,IAAI,QAAQ,CAAE,YAAW,IAAI,CAAC,SAAS,CAAE,KAAK,CAAE,MAAI,CAAS,CAAC;SACrF;aACG;YACA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;SACzC;QAGD,IAAI,CAAC,gBAAgB,GAAG,YAAY,KAAK,KAAK,CAAC;QAE/C,IAAI,CAAC,MAAM,GAAG,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAEvD,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;QAE1C,IAAI,OAAO,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAE,IAAI,CAAC,QAAQ,CAAE,CAAC;SACnD;QAOD,UAAU,CAAC,OAAO,CAAE,IAAI,CAAC,OAAO,CAAE,CAAC;QAGnC,IAAI,IAAI,CAAC,GAAG;YAAG,QAAQ,CAAC,OAAO,CAAE,IAAI,CAAC,GAAG,CAAE,CAAC;QAG5C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAE,IAAI,EAAE,OAAO,CAAE,CAAC;QAGtC,IAAI,QAAQ,CAAC,MAAM,EAAE;YACjB,IAAM,SAAO,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAE,aAAa,CAAE,CAAC;YAExD,IAAA,0BAAQ,CAAU;YAC1B,IAAI,CAAC,QAAQ,GAAG,UAAU,MAA4B,EAAE,KAAW,EAAE,GAAY;gBAC7E,OAAO,UAAQ,CAAC,IAAI,CAAE,IAAI,EAAE,MAAM,EAAE,SAAO,CAAC,IAAI,CAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAE,EAAE,GAAG,CAAE,CAAC;YAClF,CAAC,CAAA;SACJ;QAED,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAE,eAAe,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAE3F,IAAI,CAAC,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAE,mBAAmB,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAGvG,IAAA,SAA2B,EAAzB,kBAAM,EAAE,sBAAQ,CAAU;QAClC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,MAA4B,EAAE,OAA4B;YAC7F,OAAO,MAAM,CAAC,IAAI,CAAE,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAE,CAAC;QACpI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAEX,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,MAA4B,EAAE,OAA4B,EAAE,MAA6B;YAC9H,OAAO,QAAQ,CAAC,IAAI,CAAE,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAE,CAAC;QAC9I,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACjB,CAAC;IAjNM,cAAM,GAAb,UAAe,OAA0B,EAAE,IAAa;QACpD,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EACnB,aAAa,GAAG,OAAO,CAAC,UAAU,IAAI,CAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAE,CAAC;QAEjF,OAAO,IAAI,aAAa,CAAE,IAAI,EAAE,OAAO,CAAE,CAAC;IAC9C,CAAC;IAQD,8BAAY,GAAZ,UAAc,IAAI,EAAE,IAAI,EAAE,OAA4B,IAAU,CAAC;IAKjE,2BAAS,GAAT,UAAW,IAAU,EAAE,IAAU,EAAE,KAA2B,EAAE,OAA4B,IAAW,OAAO,IAAI,CAAC,CAAC,CAAC;IAGrH,yBAAO,GAAP,UAAS,IAAU,EAAE,IAAU,EAAE,KAA2B,EAAE,OAA4B,IAAW,OAAO,IAAI,CAAC,CAAC,CAAC;IAKnH,2BAAS,GAAT,UAAW,CAAO,EAAE,CAAO;QACvB,OAAO,QAAQ,CAAE,CAAC,EAAE,CAAC,CAAE,CAAC;IAC5B,CAAC;IAKD,8BAAY,GAAZ,UAAc,IAAU,EAAE,IAAU,EAAE,KAA2B,EAAE,OAA4B,IAAI,CAAC;IAOpG,wBAAM,GAAN,cAAW,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAI3B,uBAAK,GAAL,UAAO,KAAW,EAAE,MAA4B;QAC5C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,yBAAO,GAAP,UAAS,MAA4B,EAAE,KAAW;QAC9C,IAAI,CAAC,YAAY,CAAE,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,CAAE,CAAC;IAC7D,CAAC;IAED,0BAAQ,GAAR,UAAU,MAA4B,EAAE,KAAW,EAAE,GAAY,IAAG,CAAC;IAErE,wBAAM,GAAN,UAAQ,KAAK,EAAE,GAAG,EAAE,OAAiB;QACjC,OAAO,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAE,OAAO,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACnE,CAAC;IAED,0CAAwB,GAAxB;QACU,IAAA,SAAwB,EAAtB,cAAI,EAAE,oBAAO,CAAU;QAE/B,IAAI,IAAI,KAAK,IAAI,EAAE;YACf,OAAO;gBAEH,GAAG,YAAE,KAAK;oBACN,YAAY,CAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAE,CAAC;gBACtC,CAAC;gBAGD,GAAG,EAAG,CACF,OAAO,CAAC,CAAC;oBACL;wBACI,OAAO,OAAO,CAAC,IAAI,CAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAE,IAAI,CAAE,EAAE,IAAI,CAAE,CAAC;oBAC/D,CAAC,CAAC,CAAC;oBACH,cAAa,OAAO,IAAI,CAAC,UAAU,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC,CACrD;aACJ,CAAA;SACJ;IACL,CAAC;IASD,4BAAU,GAAV,UAAY,IAAa,EAAE,OAA4B,IAAG,CAAC;IAI3D,wBAAM,GAAN,UAAQ,KAAK,EAAE,MAA4B,EAAE,OAA4B;QACrE,IAAM,CAAC,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,EACpD,CAAC,GAAG,IAAI,CAAC,SAAS,CAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAE,CAAC;QAErD,IAAI,CAAC,YAAY,CAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAE,CAAC;QAChD,OAAO,CAAC,CAAC;IACb,CAAC;IAED,0BAAQ,GAAR,UAAU,KAAK,EAAE,MAA4B,EAAE,OAA4B,EAAE,MAA6B;QAC9F,IAAA,gBAAI,EACN,8BAAU,EACV,IAAI,GAAG,UAAU,CAAE,IAAI,CAAE,CAAC;QAEhC,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAE,CAAC;QAC5D,UAAU,CAAE,IAAI,CAAE,GAAG,IAAI,CAAC;QAE1B,IAAI,IAAI,CAAC,SAAS,CAAE,IAAI,EAAE,IAAI,CAAE,EAAG;YAE/B,IAAI,CAAC,YAAY,CAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAE,CAAC;YACjD,OAAO,IAAI,CAAC;SACf;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAID,sBAAI,GAAJ,UAAM,KAAsB,EAAE,IAAa,EAAE,KAAK,EAAE,MAA4B;QAC5E,KAAK,CAAC,GAAG,CAAE,KAAK,EAAE,8BAA6B,MAAM,CAAC,YAAY,EAAE,SAAM,IAAI,CAAC,IAAI,OAAK,GAAG,IAAI,EAAE;YAC7F,QAAQ,EAAG,MAAM;YACjB,sBAAsB,EAAG,IAAI;YAC7B,aAAa,EAAG,MAAM,CAAC,UAAU,CAAE,IAAI,CAAC,IAAI,CAAE;YAC9C,WAAW,EAAG,KAAK;SACtB,CAAC,CAAC;IACP,CAAC;IAED,8BAAY,GAAZ;QACI,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAoFL,cAAC;AAAD,CAAC,AAvND,IAuNC;;AAGD,SAAS,aAAa,CAAE,QAAkB,EAAE,QAAkB;IAC1D,OAAO,UAAU,KAAK,EAAE,IAAI;QACxB,OAAO,QAAQ,CAAC,IAAI,CAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAE,EAAE,IAAI,CAAE,CAAC;IAC3E,CAAC,CAAA;AACL,CAAC;AAED,SAAS,eAAe,CAAE,aAAyB,EAAE,aAAyB;IAC1E,OAAO,UAAU,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO;QACxC,OAAO,aAAa,CAAC,IAAI,CAAE,IAAI,EAAE,aAAa,CAAC,IAAI,CAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAE,CAAC;IACtH,CAAC,CAAA;AACL,CAAC;AAED,SAAS,mBAAmB,CAAE,WAA2B,EAAE,WAA2B;IAClF,OAAO,UAAU,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO;QACxC,WAAW,CAAC,IAAI,CAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAE,CAAC;QACtD,WAAW,CAAC,IAAI,CAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAE,CAAC;IAC1D,CAAC,CAAA;AACL,CAAC;AAED,SAAS,cAAc,CAAE,QAAQ;IAC7B,OAAO,UAAU,MAA4B,EAAE,KAAW,EAAE,GAAY;QACpE,OAAO,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IAC1E,CAAC,CAAA;AACL,CAAC"} \ No newline at end of file diff --git a/lib/type-r/record/attributes/attrDef.d.ts b/lib/type-r/record/attributes/attrDef.d.ts index 8c85d96..23a59ff 100644 --- a/lib/type-r/record/attributes/attrDef.d.ts +++ b/lib/type-r/record/attributes/attrDef.d.ts @@ -10,6 +10,7 @@ export declare class ChainableAttributeSpec { constructor(options: AttributeOptions); check(check: AttributeCheck, error: any): ChainableAttributeSpec; readonly asProp: (proto: object, name: string) => void; + readonly as: (proto: object, name: string) => void; readonly isRequired: ChainableAttributeSpec; endpoint(endpoint: IOEndpoint): ChainableAttributeSpec; watcher(ref: string | ((value: any, key: string) => void)): ChainableAttributeSpec; @@ -22,8 +23,10 @@ export declare class ChainableAttributeSpec { readonly has: ChainableAttributeSpec; metadata(options: AttributeOptions): ChainableAttributeSpec; value(x: any): ChainableAttributeSpec; + static from(spec: any): ChainableAttributeSpec; } -declare global { +export declare function type(this: void, spec: ChainableAttributeSpec | Function): ChainableAttributeSpec; +declare global { interface Function { value: (x: any) => ChainableAttributeSpec; isRequired: ChainableAttributeSpec; @@ -31,4 +34,3 @@ declare global { has: ChainableAttributeSpec; } } -export declare function toAttributeOptions(spec: any): AttributeOptions; diff --git a/lib/type-r/record/attributes/attrDef.js b/lib/type-r/record/attributes/attrDef.js index 07c6c34..df6595f 100644 --- a/lib/type-r/record/attributes/attrDef.js +++ b/lib/type-r/record/attributes/attrDef.js @@ -28,6 +28,11 @@ var ChainableAttributeSpec = (function () { enumerable: true, configurable: true }); + Object.defineProperty(ChainableAttributeSpec.prototype, "as", { + get: function () { return this.asProp; }, + enumerable: true, + configurable: true + }); Object.defineProperty(ChainableAttributeSpec.prototype, "isRequired", { get: function () { return this.metadata({ isRequired: true }); @@ -46,7 +51,7 @@ var ChainableAttributeSpec = (function () { }; ChainableAttributeSpec.prototype.toJSON = function (fun) { return this.metadata({ - toJSON: typeof fun === 'function' ? fun : (fun ? function (x) { return x && x.toJSON(); } : emptyFunction) + toJSON: typeof fun === 'function' ? fun : (fun ? function (x, k, o) { return x && x.toJSON(o); } : emptyFunction) }); }; ChainableAttributeSpec.prototype.get = function (fun) { @@ -94,10 +99,37 @@ var ChainableAttributeSpec = (function () { ChainableAttributeSpec.prototype.value = function (x) { return this.metadata({ value: x, hasCustomDefault: true }); }; + ChainableAttributeSpec.from = function (spec) { + var attrSpec; + if (typeof spec === 'function') { + attrSpec = spec.has; + } + else if (spec && spec instanceof ChainableAttributeSpec) { + attrSpec = spec; + } + else { + var type_1 = inferType(spec); + if (type_1 && type_1.prototype instanceof Transactional) { + attrSpec = type_1.shared.value(spec); + } + else { + attrSpec = new ChainableAttributeSpec({ type: type_1, value: spec, hasCustomDefault: true }); + } + } + return attrSpec; + }; return ChainableAttributeSpec; }()); export { ChainableAttributeSpec }; function emptyFunction() { } +export function type(spec) { + return spec instanceof ChainableAttributeSpec ? spec : new ChainableAttributeSpec({ + type: spec, + value: spec._attribute.defaultValue, + hasCustomDefault: spec._attribute.defaultValue !== void 0 + }); + ; +} Function.prototype.value = function (x) { return new ChainableAttributeSpec({ type: this, value: x, hasCustomDefault: true }); }; @@ -110,33 +142,10 @@ Object.defineProperty(Function.prototype, 'asProp', { }); Object.defineProperty(Function.prototype, 'has', { get: function () { - return this._has || new ChainableAttributeSpec({ - type: this, - value: this._attribute.defaultValue, - hasCustomDefault: this._attribute.defaultValue !== void 0 - }); + return this._has || type(this); }, set: function (value) { this._has = value; } }); -export function toAttributeOptions(spec) { - var attrSpec; - if (typeof spec === 'function') { - attrSpec = spec.has; - } - else if (spec && spec instanceof ChainableAttributeSpec) { - attrSpec = spec; - } - else { - var type = inferType(spec); - if (type && type.prototype instanceof Transactional) { - attrSpec = type.shared.value(spec); - } - else { - attrSpec = new ChainableAttributeSpec({ type: type, value: spec, hasCustomDefault: true }); - } - } - return attrSpec.options; -} function inferType(value) { switch (typeof value) { case 'number': diff --git a/lib/type-r/record/attributes/attrDef.js.map b/lib/type-r/record/attributes/attrDef.js.map index f8078a2..c7347d9 100644 --- a/lib/type-r/record/attributes/attrDef.js.map +++ b/lib/type-r/record/attributes/attrDef.js.map @@ -1 +1 @@ -{"version":3,"file":"attrDef.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/attrDef.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"attrDef.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/attrDef.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/attributes/basic.d.ts b/lib/type-r/record/attributes/basic.d.ts index 4af7581..d47677a 100644 --- a/lib/type-r/record/attributes/basic.d.ts +++ b/lib/type-r/record/attributes/basic.d.ts @@ -19,7 +19,7 @@ export declare class NumericType extends PrimitiveType { convert(next: any, prev?: any, record?: any): any; validate(model: any, value: any, name: any): string; } -declare global { +declare global { interface NumberConstructor { integer: Function; } diff --git a/lib/type-r/record/attributes/basic.js b/lib/type-r/record/attributes/basic.js index 44788ed..f802b0c 100644 --- a/lib/type-r/record/attributes/basic.js +++ b/lib/type-r/record/attributes/basic.js @@ -11,8 +11,8 @@ var ImmutableClassType = (function (_super) { ImmutableClassType.prototype.convert = function (next) { return next == null || next instanceof this.type ? next : new this.type(next); }; - ImmutableClassType.prototype.toJSON = function (value) { - return value && value.toJSON ? value.toJSON() : value; + ImmutableClassType.prototype.toJSON = function (value, key, options) { + return value && value.toJSON ? value.toJSON(options) : value; }; ImmutableClassType.prototype.clone = function (value) { return new this.type(this.toJSON(value)); diff --git a/lib/type-r/record/attributes/basic.js.map b/lib/type-r/record/attributes/basic.js.map index c458dd5..5452804 100644 --- a/lib/type-r/record/attributes/basic.js.map +++ b/lib/type-r/record/attributes/basic.js.map @@ -1 +1 @@ -{"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/basic.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"basic.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/basic.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/attributes/date.d.ts b/lib/type-r/record/attributes/date.d.ts index d533049..3d82bfb 100644 --- a/lib/type-r/record/attributes/date.d.ts +++ b/lib/type-r/record/attributes/date.d.ts @@ -20,7 +20,7 @@ export declare class MSDateType extends DateType { export declare class TimestampType extends DateType { toJSON(value: any): any; } -declare global { +declare global { interface DateConstructor { microsoft: ChainableAttributeSpec; timestamp: ChainableAttributeSpec; diff --git a/lib/type-r/record/attributes/date.js.map b/lib/type-r/record/attributes/date.js.map index 8515e54..2c2b09a 100644 --- a/lib/type-r/record/attributes/date.js.map +++ b/lib/type-r/record/attributes/date.js.map @@ -1 +1 @@ -{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/date.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"date.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/date.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/attributes/index.d.ts b/lib/type-r/record/attributes/index.d.ts index 8df3719..256e999 100644 --- a/lib/type-r/record/attributes/index.d.ts +++ b/lib/type-r/record/attributes/index.d.ts @@ -13,7 +13,6 @@ export interface RecordAttributesMixin extends ConstructorsMixin { _attributes: AttributeDescriptors; _attributesArray: AnyType[]; properties: PropertyDescriptorMap; - _toJSON(): any; _localEvents?: eventsApi.EventMap; _endpoints: { [name: string]: IOEndpoint; diff --git a/lib/type-r/record/attributes/index.js b/lib/type-r/record/attributes/index.js index 9bcd9f2..c43ff9d 100644 --- a/lib/type-r/record/attributes/index.js +++ b/lib/type-r/record/attributes/index.js @@ -9,28 +9,15 @@ export * from './updates'; export * from './attrDef'; import { AnyType } from './any'; import { constructorsMixin } from './updates'; -import { toAttributeOptions, ChainableAttributeSpec } from './attrDef'; +import { ChainableAttributeSpec } from './attrDef'; import { CompiledReference } from '../../traversable'; export default function (attributesDefinition, baseClassAttributes) { var myAttributes = _.transform({}, attributesDefinition, createAttribute), allAttributes = _.defaults({}, myAttributes, baseClassAttributes); var ConstructorsMixin = constructorsMixin(allAttributes); - return tslib_1.__assign({}, ConstructorsMixin, { _attributes: new ConstructorsMixin.AttributesCopy(allAttributes), _attributesArray: Object.keys(allAttributes).map(function (key) { return allAttributes[key]; }), properties: _.transform({}, myAttributes, function (x) { return x.createPropertyDescriptor(); }), _toJSON: createToJSON(allAttributes) }, parseMixin(allAttributes), localEventsMixin(myAttributes), { _endpoints: _.transform({}, allAttributes, function (attrDef) { return attrDef.options.endpoint; }) }); + return tslib_1.__assign({}, ConstructorsMixin, { _attributes: new ConstructorsMixin.AttributesCopy(allAttributes), _attributesArray: Object.keys(allAttributes).map(function (key) { return allAttributes[key]; }), properties: _.transform({}, myAttributes, function (x) { return x.createPropertyDescriptor(); }) }, localEventsMixin(myAttributes), { _endpoints: _.transform({}, allAttributes, function (attrDef) { return attrDef.options.endpoint; }) }); } export function createAttribute(spec, name) { - return AnyType.create(toAttributeOptions(spec), name); -} -function parseMixin(attributes) { - var attrsWithParse = Object.keys(attributes).filter(function (name) { return attributes[name].parse; }); - return attrsWithParse.length ? { - _parse: new Function('json', "\n var _attrs = this._attributes;\n\n " + attrsWithParse.map(function (name) { return " \n json." + name + " === void 0 || ( json." + name + " = _attrs." + name + ".parse.call( this, json." + name + ", \"" + name + "\" ) );\n "; }).join('') + "\n\n return json;\n ") - } : {}; -} -function createToJSON(attributes) { - return new Function("\n var json = {},\n v = this.attributes,\n a = this._attributes;\n\n " + Object.keys(attributes).map(function (key) { - if (attributes[key].toJSON) { - return "json." + key + " = a." + key + ".toJSON.call( this, v." + key + ", '" + key + "' );"; - } - }).join('\n') + "\n\n return json;\n "); + return AnyType.create(ChainableAttributeSpec.from(spec).options, name); } export function createSharedTypeSpec(Constructor, Attribute) { if (!Constructor.hasOwnProperty('shared')) { diff --git a/lib/type-r/record/attributes/index.js.map b/lib/type-r/record/attributes/index.js.map index ae4d8df..4047447 100644 --- a/lib/type-r/record/attributes/index.js.map +++ b/lib/type-r/record/attributes/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/index.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAEzD,cAAc,OAAO,CAAA;AACrB,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AAEzB,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,EAAqB,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAyBrD,MAAM,CAAC,OAAO,WAAW,oBAA6B,EAAE,mBAA0C;IAC9F,IAAM,YAAY,GAAG,CAAC,CAAC,SAAS,CAAE,EAA0B,EAAE,oBAAoB,EAAE,eAAe,CAAE,EAC/F,aAAa,GAAG,CAAC,CAAC,QAAQ,CAAE,EAA0B,EAAE,YAAY,EAAE,mBAAmB,CAAE,CAAC;IAElG,IAAM,iBAAiB,GAAG,iBAAiB,CAAE,aAAa,CAAE,CAAC;IAE7D,MAAM,sBACC,iBAAiB,IACpB,WAAW,EAAG,IAAI,iBAAiB,CAAC,cAAc,CAAE,aAAa,CAAE,EACnE,gBAAgB,EAAG,MAAM,CAAC,IAAI,CAAE,aAAa,CAAE,CAAC,GAAG,CAAE,UAAA,GAAG,IAAI,OAAA,aAAa,CAAE,GAAG,CAAE,EAApB,CAAoB,CAAE,EAClF,UAAU,EAAG,CAAC,CAAC,SAAS,CAAyB,EAAE,EAAE,YAAY,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,wBAAwB,EAAE,EAA5B,CAA4B,CAAE,EACtG,OAAO,EAAG,YAAY,CAAE,aAAa,CAAE,IACpC,UAAU,CAAE,aAAa,CAAE,EAC3B,gBAAgB,CAAE,YAAY,CAAE,IACnC,UAAU,EAAG,CAAC,CAAC,SAAS,CAAE,EAAE,EAAE,aAAa,EAAE,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAxB,CAAwB,CAAE,IACrF;AACL,CAAC;AAGD,MAAM,0BAA2B,IAAU,EAAE,IAAa;IACtD,MAAM,CAAC,OAAO,CAAC,MAAM,CAAE,kBAAkB,CAAE,IAAI,CAAE,EAAE,IAAI,CAAE,CAAC;AAC9D,CAAC;AAED,oBAAqB,UAAiC;IAClD,IAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAE,UAAU,CAAE,CAAC,MAAM,CAAE,UAAA,IAAI,IAAI,OAAA,UAAU,CAAE,IAAI,CAAE,CAAC,KAAK,EAAxB,CAAwB,CAAE,CAAC;IAE5F,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3B,MAAM,EAAG,IAAI,QAAQ,CAAE,MAAM,EAAE,iEAGxB,cAAc,CAAC,GAAG,CAAE,UAAA,IAAI,IAAI,OAAA,4CACnB,IAAI,8BAA2B,IAAI,kBAAe,IAAI,gCAA6B,IAAI,YAAQ,IAAI,0BAC9G,EAF8B,CAE9B,CAAE,CAAC,IAAI,CAAC,EAAE,CAAC,2CAGf,CAAE;KACN,CAAC,CAAC,CAAC,EAAE,CAAC;AACX,CAAC;AAED,sBAAuB,UAAiC;IACpD,MAAM,CAAC,IAAI,QAAQ,CAAC,8GAKb,MAAM,CAAC,IAAI,CAAE,UAAU,CAAE,CAAC,GAAG,CAAE,UAAA,GAAG;QACjC,EAAE,CAAA,CAAE,UAAU,CAAE,GAAG,CAAE,CAAC,MAAO,CAAC,CAAA,CAAC;YAC3B,MAAM,CAAC,UAAQ,GAAG,aAAQ,GAAG,8BAA0B,GAAG,WAAO,GAAG,SAAM,CAAC;QAC/E,CAAC;IACL,CAAC,CAAE,CAAC,IAAI,CAAE,IAAI,CAAE,mCAGnB,CAAQ,CAAC;AACd,CAAC;AAED,MAAM,+BAAgC,WAAsB,EAAE,SAA0B;IACpF,EAAE,CAAA,CAAE,CAAC,WAAW,CAAC,cAAc,CAAE,QAAQ,CAAG,CAAC,CAAA,CAAC;QAC1C,MAAM,CAAC,cAAc,CAAE,WAAW,EAAE,QAAQ,EAAE;YAC1C,GAAG;gBACC,MAAM,CAAC,IAAI,sBAAsB,CAAC;oBAC9B,KAAK,EAAG,IAAI;oBACZ,IAAI,EAAG,WAAW;oBAClB,UAAU,EAAG,SAAS;iBACzB,CAAC,CAAC;YACP,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;AACL,CAAC;AAMD,0BAA2B,SAAgC;IACvD,IAAI,YAAiC,CAAC;IAEtC,GAAG,CAAA,CAAE,IAAI,GAAG,IAAI,SAAU,CAAC,CAAA,CAAC;QAClB,IAAA,SAAS,GAAG,SAAS,CAAE,GAAG,CAAE,EAC5B,uCAAS,CAAuB;QAEtC,EAAE,CAAA,CAAE,SAAU,CAAC,CAAA,CAAC;YACZ,YAAY,IAAI,CAAE,YAAY,GAAG,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAE,CAAC;YAE5D,YAAY,CAAC,QAAQ,CAAE,SAAS,GAAG,GAAG,EAClC,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC;gBAC3B,oBAAoB,CAAE,SAAS,EAAE,GAAG,CAAE,CAAC,CAAC;gBACxC,WAAW,CAAE,SAAS,EAAE,GAAG,CAAE,CAAE,CAAC;QAC5C,CAAC;IACL,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,cAAA,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC;AAED,qBAAsB,OAAO,EAAE,GAAG;IAC9B,MAAM,CAAC,UAAU,MAAM,EAAE,KAAK;QAC1B,OAAO,CAAC,IAAI,CAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAE,CAAC;IACvC,CAAC,CAAA;AACL,CAAC;AAED,8BAA+B,GAAY,EAAE,GAAY;IAC/C,IAAA,qCAA6D,EAA3D,gBAAK,EAAE,oBAAO,EAAE,cAAI,CAAwC;IACpE,MAAM,CAAC,KAAK,CAAC,CAAC;QACV,UAAU,MAAM,EAAE,KAAK;YACnB,MAAM,CAAE,IAAI,CAAE,CAAE,KAAK,EAAE,GAAG,CAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,UAAU,MAAM,EAAE,KAAK;YACnB,OAAO,CAAE,MAAM,CAAE,CAAE,IAAI,CAAE,CAAE,KAAK,EAAE,GAAG,CAAE,CAAC;QAC5C,CAAC,CAAA;AACT,CAAC"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/attributes/owned.d.ts b/lib/type-r/record/attributes/owned.d.ts index 41d0b74..78bd0c7 100644 --- a/lib/type-r/record/attributes/owned.d.ts +++ b/lib/type-r/record/attributes/owned.d.ts @@ -5,7 +5,7 @@ import { ValidationError } from '../../validation'; export declare class AggregatedType extends AnyType { type: typeof Transactional; clone(value: Transactional): Transactional; - toJSON(x: any): any; + toJSON(x: any, key: string, options: object): any; doInit(value: any, record: AttributesContainer, options: ConstructorOptions): any; doUpdate(value: any, record: any, options: any, nested: any[]): boolean; canBeUpdated(prev: Transactional, next: any, options: TransactionOptions): any; diff --git a/lib/type-r/record/attributes/owned.js b/lib/type-r/record/attributes/owned.js index a41c351..ac7b8c5 100644 --- a/lib/type-r/record/attributes/owned.js +++ b/lib/type-r/record/attributes/owned.js @@ -10,7 +10,7 @@ var AggregatedType = (function (_super) { AggregatedType.prototype.clone = function (value) { return value ? value.clone() : value; }; - AggregatedType.prototype.toJSON = function (x) { return x && x.toJSON(); }; + AggregatedType.prototype.toJSON = function (x, key, options) { return x && x.toJSON(options); }; AggregatedType.prototype.doInit = function (value, record, options) { var v = options.clone ? this.clone(value) : (value === void 0 ? this.defaultValue() : value); var x = this.transform(v, void 0, record, options); diff --git a/lib/type-r/record/attributes/owned.js.map b/lib/type-r/record/attributes/owned.js.map index 59fb2f1..f194824 100644 --- a/lib/type-r/record/attributes/owned.js.map +++ b/lib/type-r/record/attributes/owned.js.map @@ -1 +1 @@ -{"version":3,"file":"owned.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/owned.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"owned.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/owned.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/attributes/shared.js.map b/lib/type-r/record/attributes/shared.js.map index 2050a22..ef248a5 100644 --- a/lib/type-r/record/attributes/shared.js.map +++ b/lib/type-r/record/attributes/shared.js.map @@ -1 +1 @@ -{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/shared.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/shared.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/attributes/updates.js.map b/lib/type-r/record/attributes/updates.js.map index 5e9c2ba..36937e2 100644 --- a/lib/type-r/record/attributes/updates.js.map +++ b/lib/type-r/record/attributes/updates.js.map @@ -1 +1 @@ -{"version":3,"file":"updates.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/updates.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"updates.js","sourceRoot":"","sources":["../../../../src/type-r/record/attributes/updates.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/index.d.ts b/lib/type-r/record/index.d.ts index 8f6d387..33f3a15 100644 --- a/lib/type-r/record/index.d.ts +++ b/lib/type-r/record/index.d.ts @@ -1,5 +1,6 @@ import { Record } from './record'; export * from './attributes'; export { Record }; -export declare function attr(proto: any, attrName?: any): any; +export declare function attr(proto: object, attrName: string): void; +export declare function attr(spec: any): PropertyDecorator; export declare function prop(spec: any): any; diff --git a/lib/type-r/record/index.js b/lib/type-r/record/index.js index 49acfd6..84b886e 100644 --- a/lib/type-r/record/index.js +++ b/lib/type-r/record/index.js @@ -1,7 +1,7 @@ import * as tslib_1 from "tslib"; import { Record } from './record'; import { tools, predefine } from '../object-plus'; -import compile from './attributes'; +import compile, { ChainableAttributeSpec } from './attributes'; import { Transactional } from '../transactions'; import { createSharedTypeSpec, AggregatedType, SharedType } from './attributes'; export * from './attributes'; @@ -62,7 +62,7 @@ export function attr(proto, attrName) { } } else { - return proto.asProp; + return ChainableAttributeSpec.from(proto).asProp; } } export function prop(spec) { diff --git a/lib/type-r/record/index.js.map b/lib/type-r/record/index.js.map index cb538d5..6c07e74 100644 --- a/lib/type-r/record/index.js.map +++ b/lib/type-r/record/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/type-r/record/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/type-r/record/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/record/io-mixin.d.ts b/lib/type-r/record/io-mixin.d.ts index d4ebe6d..5bf8351 100644 --- a/lib/type-r/record/io-mixin.d.ts +++ b/lib/type-r/record/io-mixin.d.ts @@ -1,10 +1,10 @@ import { IOOptions, IOEndpoint, IOPromise, IONode } from '../io-tools'; export interface IORecord extends IONode { getEndpoint(): IOEndpoint; - save(options?: IOOptions): IOPromise; - fetch(options?: IOOptions): IOPromise; - destroy(options?: IOOptions): IOPromise; - toJSON(): any; + save(options?: IOOptions): IOPromise; + fetch(options?: IOOptions): IOPromise; + destroy(options?: IOOptions): IOPromise; + toJSON(options?: object): any; isNew(): boolean; id: string | number; set(json: object, options: object): any; diff --git a/lib/type-r/record/io-mixin.js b/lib/type-r/record/io-mixin.js index 09fe39b..513fc83 100644 --- a/lib/type-r/record/io-mixin.js +++ b/lib/type-r/record/io-mixin.js @@ -4,7 +4,7 @@ export var IORecordMixin = { save: function (options) { var _this = this; if (options === void 0) { options = {}; } - var endpoint = this.getEndpoint(), json = this.toJSON(); + var endpoint = this.getEndpoint(), json = this.toJSON(options); return startIO(this, this.isNew() ? endpoint.create(json, options, this) : endpoint.update(this.id, json, options, this), options, function (update) { @@ -27,6 +27,7 @@ export var IORecordMixin = { else { _this.dispose(); } + return _this; }); } }; diff --git a/lib/type-r/record/io-mixin.js.map b/lib/type-r/record/io-mixin.js.map index e70e86a..d9f0a9d 100644 --- a/lib/type-r/record/io-mixin.js.map +++ b/lib/type-r/record/io-mixin.js.map @@ -1 +1 @@ -{"version":3,"file":"io-mixin.js","sourceRoot":"","sources":["../../../src/type-r/record/io-mixin.ts"],"names":[],"mappings":";AAAA,OAAO,EAAoB,OAAO,EAA4C,MAAM,aAAa,CAAA;AAajG,MAAM,CAAC,IAAM,aAAa,GAAG;IACzB,IAAI,YAAmB,OAAwB;QAA/C,iBAeC;QAfsB,wBAAA,EAAA,YAAwB;QAC3C,IAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,EAC7B,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE3B,MAAM,CAAC,OAAO,CACV,IAAI,EACJ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACV,QAAQ,CAAC,MAAM,CAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAE,CAAC,CAAC;YACxC,QAAQ,CAAC,MAAM,CAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAE,EACnD,OAAO,EAEP,UAAA,MAAM;YACF,KAAI,CAAC,GAAG,CAAE,MAAM,qBAAI,KAAK,EAAG,IAAI,IAAK,OAAO,EAAI,CAAC;QACrD,CAAC,CACJ,CAAC;IACN,CAAC;IAED,KAAK,YAAE,OAAwB;QAA/B,iBAQC;QARM,wBAAA,EAAA,YAAwB;QAC3B,MAAM,CAAC,OAAO,CACV,IAAI,EACJ,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAE,EACjD,OAAO,EAEP,UAAA,IAAI,IAAI,OAAA,KAAI,CAAC,GAAG,CAAE,IAAI,qBAAI,KAAK,EAAG,IAAI,IAAK,OAAO,EAAI,EAA9C,CAA8C,CACzD,CAAC;IACN,CAAC;IAED,OAAO,YAAE,OAAwB;QAAjC,iBAgBC;QAhBQ,wBAAA,EAAA,YAAwB;QAC7B,MAAM,CAAC,OAAO,CACV,IAAI,EACJ,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAE,EACpD,OAAO,EAEP;YACY,IAAA,6BAAU,CAAU;YAC5B,EAAE,CAAA,CAAE,UAAW,CAAC,CAAA,CAAC;gBACb,UAAU,CAAC,MAAM,CAAE,KAAI,EAAE,OAAO,CAAE,CAAC;YACvC,CAAC;YACD,IAAI,CAAA,CAAC;gBACD,KAAI,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC;QACL,CAAC,CACJ,CAAA;IACL,CAAC;CACJ,CAAA"} \ No newline at end of file +{"version":3,"file":"io-mixin.js","sourceRoot":"","sources":["../../../src/type-r/record/io-mixin.ts"],"names":[],"mappings":";AAAA,OAAO,EAAoB,OAAO,EAA4C,MAAM,aAAa,CAAA;AAajG,MAAM,CAAC,IAAM,aAAa,GAAG;IACzB,IAAI,YAAmB,OAAwB;QAA/C,iBAeC;QAfsB,wBAAA,EAAA,YAAwB;QAC3C,IAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,EAC7B,IAAI,GAAG,IAAI,CAAC,MAAM,CAAE,OAAO,CAAE,CAAC;QAEpC,OAAO,OAAO,CACV,IAAI,EACJ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACV,QAAQ,CAAC,MAAM,CAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAE,CAAC,CAAC;YACxC,QAAQ,CAAC,MAAM,CAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAE,EACnD,OAAO,EAEP,UAAA,MAAM;YACF,KAAI,CAAC,GAAG,CAAE,MAAM,qBAAI,KAAK,EAAG,IAAI,IAAK,OAAO,EAAI,CAAC;QACrD,CAAC,CACJ,CAAC;IACN,CAAC;IAED,KAAK,YAAE,OAAwB;QAA/B,iBAQC;QARM,wBAAA,EAAA,YAAwB;QAC3B,OAAO,OAAO,CACV,IAAI,EACJ,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAE,EACjD,OAAO,EAEP,UAAA,IAAI,IAAI,OAAA,KAAI,CAAC,GAAG,CAAE,IAAI,qBAAI,KAAK,EAAG,IAAI,IAAK,OAAO,EAAI,EAA9C,CAA8C,CACzD,CAAC;IACN,CAAC;IAED,OAAO,YAAE,OAAwB;QAAjC,iBAkBC;QAlBQ,wBAAA,EAAA,YAAwB;QAC7B,OAAO,OAAO,CACV,IAAI,EACJ,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,CAAE,EACpD,OAAO,EAEP;YACY,IAAA,6BAAU,CAAU;YAC5B,IAAI,UAAU,EAAE;gBACZ,UAAU,CAAC,MAAM,CAAE,KAAI,EAAE,OAAO,CAAE,CAAC;aACtC;iBACG;gBACA,KAAI,CAAC,OAAO,EAAE,CAAC;aAClB;YAED,OAAO,KAAI,CAAC;QAChB,CAAC,CACJ,CAAA;IACL,CAAC;CACJ,CAAA"} \ No newline at end of file diff --git a/lib/type-r/record/record.d.ts b/lib/type-r/record/record.d.ts index 5354d0b..f59ea42 100644 --- a/lib/type-r/record/record.d.ts +++ b/lib/type-r/record/record.d.ts @@ -24,8 +24,8 @@ export declare class Record extends Transactional implements IORecord, Attribute _endpoints: { [name: string]: IOEndpoint; }; - save(options?: object): IOPromise; - destroy(options?: object): IOPromise; + save(options?: object): IOPromise; + destroy(options?: object): IOPromise; _previousAttributes: {}; previousAttributes(): AttributesValues; attributes: AttributesValues; @@ -52,8 +52,6 @@ export declare class Record extends Transactional implements IORecord, Attribute each(iteratee: (value?: any, key?: string) => void, context?: any): void; keys(): string[]; values(): any[]; - _toJSON(): {}; - _parse(data: any): any; defaults(values?: {}): {}; constructor(a_values?: {}, a_options?: ConstructorOptions); initialize(values?: any, options?: any): void; @@ -61,8 +59,9 @@ export declare class Record extends Transactional implements IORecord, Attribute deepClone(): this; _validateNested(errors: ChildrenErrors): number; get(key: string): any; - toJSON(): Object; + toJSON(options?: object): any; parse(data: any, options?: TransactionOptions): any; + _parse(data: any): any; deepSet(name: string, value: any, options?: any): this; readonly collection: any; dispose(): void; diff --git a/lib/type-r/record/record.js b/lib/type-r/record/record.js index ecbfad9..e96e9b7 100644 --- a/lib/type-r/record/record.js +++ b/lib/type-r/record/record.js @@ -87,10 +87,10 @@ var Record = (function (_super) { return this[key] != void 0; }; Record.prototype.unset = function (key, options) { + var _a; var value = this[key]; this.set((_a = {}, _a[key] = void 0, _a), tslib_1.__assign({ unset: true }, options)); return value; - var _a; }; Record.prototype.clear = function (options) { var _this = this; @@ -145,8 +145,6 @@ var Record = (function (_super) { Record.prototype.values = function () { return this.map(function (value) { return value; }); }; - Record.prototype._toJSON = function () { return {}; }; - Record.prototype._parse = function (data) { return data; }; Record.prototype.defaults = function (values) { if (values === void 0) { values = {}; } var defaults = {}, _attributesArray = this._attributesArray; @@ -182,13 +180,13 @@ var Record = (function (_super) { Record.prototype.get = function (key) { return this[key]; }; - Record.prototype.toJSON = function () { + Record.prototype.toJSON = function (options) { var _this = this; var json = {}; this.forEachAttr(this.attributes, function (value, key, _a) { var toJSON = _a.toJSON; if (value !== void 0) { - var asJson = toJSON.call(_this, value, key); + var asJson = toJSON.call(_this, value, key, options); if (asJson !== void 0) json[key] = asJson; } @@ -196,11 +194,13 @@ var Record = (function (_super) { return json; }; Record.prototype.parse = function (data, options) { - return this._parse(data); + return data; }; + Record.prototype._parse = function (data) { return data; }; Record.prototype.deepSet = function (name, value, options) { var _this = this; this.transaction(function () { + var _a; var path = name.split('.'), l = path.length - 1, attr = path[l]; var model = _this; for (var i = 0; i < l; i++) { @@ -226,7 +226,6 @@ var Record = (function (_super) { else { model[attr] = value; } - var _a; }); return this; }; @@ -253,6 +252,7 @@ var Record = (function (_super) { return _super.prototype.getClassName.call(this) || 'Record'; }; Record.prototype._createTransaction = function (values, options) { return void 0; }; + var Record_1; Record = Record_1 = tslib_1.__decorate([ define({ cidPrefix: 'm', @@ -268,7 +268,6 @@ var Record = (function (_super) { }) ], Record); return Record; - var Record_1; }(Transactional)); export { Record }; ; diff --git a/lib/type-r/record/record.js.map b/lib/type-r/record/record.js.map index 2dc2d8b..0091207 100644 --- a/lib/type-r/record/record.js.map +++ b/lib/type-r/record/record.js.map @@ -1 +1 @@ -{"version":3,"file":"record.js","sourceRoot":"","sources":["../../../src/type-r/record/record.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"record.js","sourceRoot":"","sources":["../../../src/type-r/record/record.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,KAAK,EAAsB,WAAW,EAAW,UAAU,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEpG,OAAO,EAAgB,aAAa,EAAmE,MAAM,iBAAiB,CAAA;AAK9H,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAEQ,MAAM,cAAc,CAAA;AAE7F,OAAO,EAAY,aAAa,EAAE,MAAM,YAAY,CAAA;AAG5C,IAAA,qBAAM,EAAE,uBAAO,EAAE,eAAG,CAAW;AAWvC,IAAI,WAAW,GAAY,CAAC,CAAC;AA6B7B;IAA4B,kCAAa;IAmOrC,gBAAa,QAAc,EAAE,SAA+B;QAA5D,YACI,kBAAO,WAAW,EAAE,CAAE,SAazB;QAZG,KAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QAErB,IAAM,OAAO,GAAG,SAAS,IAAI,EAAE,EACzB,MAAM,GAAG,CAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAI,CAAC,KAAK,CAAE,QAAQ,EAAE,OAAO,CAAE,CAAC,CAAC,CAAE,QAAQ,CAAE,IAAI,EAAE,CAAC;QAErF,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC;YAAG,SAAS,CAAE,KAAI,EAAE,MAAM,CAAE,CAAC;QAE9C,KAAI,CAAC,mBAAmB,GAAG,KAAI,CAAC,UAAU,GAAG,IAAI,KAAI,CAAC,UAAU,CAAE,KAAI,EAAE,MAAM,EAAE,OAAO,CAAE,CAAC;QAE1F,KAAI,CAAC,UAAU,CAAE,QAAQ,EAAE,SAAS,CAAE,CAAC;QAEvC,IAAI,KAAI,CAAC,YAAY;YAAG,KAAI,CAAC,YAAY,CAAC,SAAS,CAAE,KAAI,EAAE,KAAI,CAAE,CAAC;;IACtE,CAAC;eAjPQ,MAAM;IAER,eAAQ,GAAf,UAAiB,UAAU,EAAE,SAAS,IAAG,CAAC;IAOnC,eAAQ,GAAf,UAAiB,KAAwB;QACrC,OAAY,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,EAAG,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;IAUA,qBAAI,GAAJ,UAAM,OAAiB,IAAuB,MAAM,IAAI,KAAK,CAAE,sBAAsB,CAAE,CAAC,CAAC,CAAC;IAG1F,wBAAO,GAAP,UAAS,OAAiB,IAAuB,MAAM,IAAI,KAAK,CAAE,sBAAsB,CAAE,CAAC,CAAC,CAAC;IAQ9F,mCAAkB,GAAlB,cAAsB,OAAO,IAAI,IAAI,CAAC,cAAc,CAAE,IAAI,CAAC,mBAAmB,CAAE,CAAC,CAAC,CAAC;IAMnF,sBAAI,mCAAe;aAAnB,cAAuB,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;;;OAAA;IAKhD,sBAAI,2BAAO;aAAX;YACI,IAAI,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAEtC,IAAI,CAAC,OAAO,EAAE;gBACV,IAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC;gBACtC,OAAO,GAAG,EAAE,CAAC;gBAEP,IAAA,SAAkC,EAAhC,4BAAW,EAAE,0BAAU,CAAU;gBAEzC,KAAiB,UAAqB,EAArB,KAAA,IAAI,CAAC,gBAAgB,EAArB,cAAqB,EAArB,IAAqB,EAAE;oBAAnC,IAAI,IAAI,SAAA;oBACT,IAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EACjB,KAAK,GAAG,UAAU,CAAE,GAAG,CAAE,CAAC;oBAE9B,IAAI,IAAI,CAAC,SAAS,CAAE,KAAK,EAAE,IAAI,CAAE,GAAG,CAAE,CAAE,EAAE;wBACtC,OAAO,CAAE,GAAG,CAAE,GAAG,KAAK,CAAC;qBAC1B;iBACJ;gBAED,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;aACrC;YAED,OAAO,OAAO,CAAC;QACnB,CAAC;;;OAAA;IAED,kCAAiB,GAAjB,UAAmB,IAAU;QACzB,IAAI,CAAC,IAAI;YAAG,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAE,EAAE,EAAE,IAAI,CAAC,OAAO,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAE1E,IAAI,GAAG,EAAE,OAAO,GAAkB,KAAK,EACnC,GAAG,GAAY,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAC7E,SAAS,GAAM,IAAI,CAAC,WAAW,CAAC;QAEpC,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;YACnB,IAAI,CAAC,SAAS,CAAE,IAAI,CAAE,CAAC,SAAS,CAAE,GAAG,CAAE,IAAI,CAAE,EAAE,CAAE,GAAG,GAAG,IAAI,CAAE,IAAI,CAAE,CAAE,CAAE;gBAAG,SAAS;YACnF,CAAC,OAAO,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAE,IAAI,CAAE,GAAG,GAAG,CAAC;SAC7C;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,2BAAU,GAAV,UAAY,GAAa;QACb,IAAA,8CAAmB,CAAU;QACrC,IAAI,CAAC,mBAAmB;YAAG,OAAO,KAAK,CAAC;QAExC,OAAO,GAAG,CAAC,CAAC;YACJ,IAAI,CAAC,WAAW,CAAE,GAAG,CAAE,CAAC,SAAS,CAAE,IAAI,CAAC,UAAU,CAAE,GAAG,CAAE,EAAE,mBAAmB,CAAE,GAAG,CAAE,CAAE,CAAC,CAAC;YACzF,CAAC,OAAO,CAAE,IAAI,CAAC,OAAO,CAAE,CAAC;IACrC,CAAC;IAED,yBAAQ,GAAR,UAAU,GAAY;QAClB,IAAI,GAAG,EAAE;YACG,IAAA,8CAAmB,CAAU;YACrC,IAAI,mBAAmB;gBAAG,OAAO,mBAAmB,CAAE,GAAG,CAAE,CAAC;SAC/D;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,sBAAK,GAAL;QACI,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC;IAC3B,CAAC;IAED,oBAAG,GAAH,UAAK,GAAY;QACb,OAAO,IAAI,CAAE,GAAG,CAAE,IAAI,KAAK,CAAC,CAAC;IACjC,CAAC;IAID,sBAAK,GAAL,UAAO,GAAY,EAAE,OAAQ;;QACzB,IAAM,KAAK,GAAG,IAAI,CAAE,GAAG,CAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,WAAG,GAAE,GAAG,IAAK,KAAK,CAAC,0BAAM,KAAK,EAAG,IAAI,IAAK,OAAO,EAAG,CAAC;QAC7D,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,sBAAK,GAAL,UAAO,OAAQ;QAAf,iBAQC;QAPG,IAAM,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;QAE3C,IAAI,CAAC,WAAW,CAAE;YACd,KAAI,CAAC,WAAW,CAAE,KAAI,CAAC,UAAU,EAAE,UAAE,KAAK,EAAE,GAAG,IAAM,OAAA,KAAI,CAAE,GAAG,CAAE,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAArC,CAAqC,CAAE,CAAC;QACjG,CAAC,EAAE,OAAO,CAAE,CAAC;QAEb,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,yBAAQ,GAAR;QACI,IAAM,KAAK,GAAS,IAAI,CAAC,MAAM,CAAC;QAIhC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;IAC1D,CAAC;IAUD,sBAAI,sBAAE;aAAN,cAA6B,OAAO,IAAI,CAAC,UAAU,CAAE,IAAI,CAAC,WAAW,CAAE,CAAC,CAAC,CAAC;aAC1E,UAAQ,CAAmB,IAAI,YAAY,CAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAE,CAAC,CAAC,CAAC;;;OADD;IAiB1E,4BAAW,GAAX,UAAa,KAAU,EAAE,QAAkE;QAC/E,IAAA,8BAAW,CAAU;QAC7B,IAAI,OAAkB,CAAC;QAEvB,KAAK,IAAI,MAAI,IAAI,KAAK,EAAE;YACpB,IAAM,IAAI,GAAG,WAAW,CAAE,MAAI,CAAE,CAAC;YAEjC,IAAI,IAAI,EAAE;gBACN,QAAQ,CAAE,KAAK,CAAE,MAAI,CAAE,EAAE,MAAI,EAAE,IAAI,CAAE,CAAC;aACzC;iBACG;gBACA,OAAO,IAAI,CAAE,OAAO,GAAG,EAAE,CAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAE,MAAK,MAAI,MAAI,CAAE,CAAC;aACjC;SACJ;QAED,IAAI,OAAO,EAAE;YACT,IAAI,CAAC,IAAI,CAAE,MAAM,EAAE,gBAAe,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAkB,EAAC;gBACnE,UAAU,EAAG,KAAK;aACrB,CAAE,CAAC;SACP;IACL,CAAC;IAED,qBAAI,GAAJ,UAAM,QAAkD,EAAE,OAAc;QAC9D,IAAA,GAAG,GAAG,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,UAAE,CAAC,EAAE,CAAC,IAAM,OAAA,QAAQ,CAAC,IAAI,CAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAE,EAA9B,CAA8B,CAAC,CAAC,CAAC,QAAQ,EAChF,4BAAU,CAAU;QAE1B,KAAK,IAAM,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;YAC/B,IAAM,KAAK,GAAG,UAAU,CAAE,GAAG,CAAE,CAAC;YAChC,IAAI,KAAK,KAAK,KAAK,CAAC;gBAAG,GAAG,CAAE,KAAK,EAAE,GAAG,CAAE,CAAC;SAC5C;IACL,CAAC;IAGD,qBAAI,GAAJ;QACI,IAAM,IAAI,GAAc,EAAE,CAAC;QAE3B,IAAI,CAAC,IAAI,CAAE,UAAE,KAAK,EAAE,GAAG,IAAM,OAAA,KAAK,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,CAAE,GAAG,CAAE,EAApC,CAAoC,CAAE,CAAC;QAEpE,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,uBAAM,GAAN;QACI,OAAO,IAAI,CAAC,GAAG,CAAE,UAAA,KAAK,IAAI,OAAA,KAAK,EAAL,CAAK,CAAE,CAAC;IACtC,CAAC;IAGD,yBAAQ,GAAR,UAAU,MAAW;QAAX,uBAAA,EAAA,WAAW;QACX,IAAA,QAAQ,GAAG,EAAE,EACb,wCAAgB,CAAU;QAEhC,KAAiB,UAAgB,EAAhB,qCAAgB,EAAhB,8BAAgB,EAAhB,IAAgB,EAAE;YAA9B,IAAI,IAAI,yBAAA;YACT,IAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EACrB,KAAK,GAAG,MAAM,CAAE,GAAG,CAAE,CAAC;YAEtB,QAAQ,CAAE,GAAG,CAAE,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;SACpE;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAuBD,2BAAU,GAAV,UAAY,MAAO,EAAE,OAAQ,IAAG,CAAC;IAGjC,sBAAK,GAAL,UAAO,OAA2B;QAA3B,wBAAA,EAAA,YAA2B;QAC9B,IAAM,IAAI,GAAU,IAAU,IAAI,CAAC,WAAY,CAAE,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAG,IAAI,EAAE,CAAE,CAAC;QAErF,IAAI,OAAO,CAAC,QAAQ;YAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAE5D,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,0BAAS,GAAT,cAAqB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAA,CAAC,CAAC;IAAA,CAAC;IAG3C,gCAAe,GAAf,UAAiB,MAAuB;QAAxC,iBAaC;QAZG,IAAI,MAAM,GAAM,CAAC,CAAC;QAElB,IAAI,CAAC,WAAW,CAAE,IAAI,CAAC,UAAU,EAAE,UAAE,KAAK,EAAE,IAAI,EAAE,SAAS;YACvD,IAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAE,KAAI,EAAE,KAAK,EAAE,IAAI,CAAE,CAAC;YAEtD,IAAI,KAAK,EAAE;gBACP,MAAM,CAAE,IAAI,CAAE,GAAG,KAAK,CAAC;gBACvB,MAAM,EAAE,CAAC;aACZ;QACL,CAAC,CAAE,CAAC;QAEJ,OAAO,MAAM,CAAC;IAClB,CAAC;IAGD,oBAAG,GAAH,UAAK,GAAY;QACb,OAAO,IAAI,CAAE,GAAG,CAAE,CAAC;IACvB,CAAC;IAOD,uBAAM,GAAN,UAAQ,OAAiB;QAAzB,iBAeC;QAdG,IAAM,IAAI,GAAG,EAAE,CAAC;QAEhB,IAAI,CAAC,WAAW,CAAE,IAAI,CAAC,UAAU,EAAE,UAAE,KAAK,EAAE,GAAY,EAAE,EAAU;gBAAR,kBAAM;YAE9D,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;gBAElB,IAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAE,KAAI,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAE,CAAC;gBAGxD,IAAI,MAAM,KAAK,KAAK,CAAC;oBAAG,IAAI,CAAE,GAAG,CAAE,GAAG,MAAM,CAAC;aAChD;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,sBAAK,GAAL,UAAO,IAAI,EAAE,OAA6B;QACtC,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,uBAAM,GAAN,UAAQ,IAAI,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC;IAM9B,wBAAO,GAAP,UAAS,IAAa,EAAE,KAAW,EAAE,OAAQ;QAA7C,iBA+CC;QA7CG,IAAI,CAAC,WAAW,CAAE;;YACd,IAAM,IAAI,GAAI,IAAI,CAAC,KAAK,CAAE,GAAG,CAAE,EAC3B,CAAC,GAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EACvB,IAAI,GAAI,IAAI,CAAE,CAAC,CAAE,CAAC;YAEtB,IAAI,KAAK,GAAG,KAAI,CAAC;YAGjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxB,IAAM,GAAG,GAAG,IAAI,CAAE,CAAC,CAAE,CAAC;gBAGtB,IAAI,IAAI,GAAM,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAE,GAAG,CAAE,CAAC,CAAC,CAAC,KAAK,CAAE,GAAG,CAAE,CAAC;gBAG1D,IAAI,CAAC,IAAI,EAAE;oBACP,IAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC;oBACpC,IAAI,SAAS,EAAE;wBAEX,IAAI,QAAQ,GAAG,SAAS,CAAE,GAAG,CAAE,CAAC,MAAM,EAAE,CAAC;wBAGzC,IAAI,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,WAAW,EAAE;4BACpD,QAAQ,CAAC,KAAK,CAAE,OAAO,CAAE,CAAC;yBAC7B;wBAED,KAAK,CAAE,GAAG,CAAE,GAAG,IAAI,GAAG,QAAQ,CAAC;qBAClC;;wBAEI,OAAO;iBACf;gBAED,KAAK,GAAG,IAAI,CAAC;aAChB;YAGD,IAAI,KAAK,CAAC,GAAG,EAAE;gBACX,KAAK,CAAC,GAAG,WAAG,GAAE,IAAI,IAAK,KAAK,OAAI,OAAO,CAAE,CAAC;aAC7C;iBACG;gBACA,KAAK,CAAE,IAAI,CAAE,GAAG,KAAK,CAAC;aACzB;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,sBAAI,8BAAU;aAAd;YACI,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/C,CAAC;;;OAAA;IAGD,wBAAO,GAAP;QAAA,iBAQC;QAPG,IAAI,IAAI,CAAC,SAAS;YAAG,OAAO;QAE5B,IAAI,CAAC,WAAW,CAAE,IAAI,CAAC,UAAU,EAAE,UAAE,KAAK,EAAE,GAAG,EAAE,SAAS;YACtD,SAAS,CAAC,OAAO,CAAE,KAAI,EAAE,KAAK,CAAE,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,iBAAM,OAAO,WAAE,CAAC;IACpB,CAAC;IAED,qBAAI,GAAJ,UAAM,KAAsB,EAAE,IAAa,EAAE,KAAc;QACvD,KAAK,CAAC,GAAG,CAAE,KAAK,EAAE,WAAW,GAAG,IAAI,qBAChC,QAAQ,EAAG,IAAI,EACf,wBAAwB,EAAG,IAAI,CAAC,WAAW,IACxC,KAAK,EACV,CAAC;IACP,CAAC;IAED,6BAAY,GAAZ;QACI,OAAO,iBAAM,YAAY,WAAE,IAAI,QAAQ,CAAC;IAC5C,CAAC;IAGD,mCAAkB,GAAlB,UAAoB,MAAe,EAAE,OAA4B,IAAmB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;;IAvY3F,MAAM;QAjBlB,MAAM,CAAC;YAEJ,SAAS,EAAG,GAAG;YAGf,gBAAgB,EAAG,QAAQ;YAG3B,WAAW,EAAG,IAAI;SACrB,CAAC;QACD,WAAW,CAAC;YACT,QAAQ,EAAG,UAAU,CAAC,KAAK;YAC3B,UAAU,EAAG,UAAU,CAAC,KAAK;YAC7B,UAAU,EAAG,UAAU,CAAC,KAAK;YAC7B,UAAU,EAAG,UAAU,CAAC,KAAK;YAC7B,WAAW,EAAG,UAAU,CAAC,UAAU;SACtC,CAAC;OACW,MAAM,CA2YlB;IAAD,aAAC;CAAA,AA3YD,CAA4B,aAAa,GA2YxC;SA3YY,MAAM;AA2YlB,CAAC;AAEF,MAAM,CAAE,MAAM,CAAC,SAAS,EAAE,iBAAiB,EAAE,aAAa,CAAE,CAAC;AAM7D;IAGI,8BAAa,MAAe,EAAE,CAAoB,EAAE,OAA4B;QAC5E,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;IACnB,CAAC;IACL,2BAAC;AAAD,CAAC,AAND,IAMC;AAED,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,oBAAoB,CAAC;AAEnD;IAGI,kCAAa,CAAoB;QAC7B,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;IACnB,CAAC;IACL,+BAAC;AAAD,CAAC,AAND,IAMC;AAED,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG,wBAAwB,CAAC;AAE3D,IAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAG,KAAK,CAAC,EAAE,EAAE,IAAI,CAAE,CAAC;AAC9D,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,EAAE,EAAE,EAAG,WAAW,EAAE,CAAC;AACpD,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,CAAE,WAAW,CAAE,CAAC;AACpD,MAAM,CAAC,UAAU,GAAG,cAAc,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C,SAAS,SAAS,CAAE,MAAe,EAAE,MAAe;IAChD,IAAI,gBAAgB,CAAE,MAAM,EAAE,MAAM,CAAE,EAAE;QAC5B,IAAA,gCAAW,CAAY;QAC/B,IAAI,OAAO,SAAW,CAAC;QAEvB,KAAK,IAAI,MAAI,IAAI,MAAM,EAAE;YACrB,IAAI,CAAC,WAAW,CAAE,MAAI,CAAE,EAAE;gBACtB,OAAO,IAAI,CAAE,OAAO,GAAG,EAAE,CAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAE,MAAK,MAAI,MAAI,CAAE,CAAC;aACjC;SACJ;QAED,IAAI,OAAO,EAAE;YACT,MAAM,CAAC,IAAI,CAAE,MAAM,EAAE,0BAAyB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAe,EAAE,EAAE,MAAM,QAAA,EAAE,CAAE,CAAC;SACjG;KACJ;AACL,CAAC"} \ No newline at end of file diff --git a/lib/type-r/relations/commons.js.map b/lib/type-r/relations/commons.js.map index 7405eea..b2349ff 100644 --- a/lib/type-r/relations/commons.js.map +++ b/lib/type-r/relations/commons.js.map @@ -1 +1 @@ -{"version":3,"file":"commons.js","sourceRoot":"","sources":["../../../src/type-r/relations/commons.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAKlD,MAAM,yBAA0B,aAAmC;IAC/D,MAAM,CAAA,CAAE,OAAO,aAAc,CAAC,CAAA,CAAC;QAC3B,KAAK,UAAU;YACX,MAAM,CAAC,UAAA,IAAI,IAAI,OAAM,aAAc,CAAC,IAAI,CAAE,IAAI,CAAE,EAAjC,CAAiC,CAAC;QACrD,KAAK,QAAQ;YACT,MAAM,CAAC,cAAM,OAAY,aAAa,EAAzB,CAAyB,CAAC;QAC3C,KAAK,QAAQ;YACD,IAAA,sDAAO,CAAoD;YACnE,MAAM,CAAC,OAAO,CAAC;IACvB,CAAC;AACL,CAAC"} \ No newline at end of file +{"version":3,"file":"commons.js","sourceRoot":"","sources":["../../../src/type-r/relations/commons.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAKlD,MAAM,UAAU,cAAc,CAAE,aAAmC;IAC/D,QAAQ,OAAO,aAAa,EAAE;QAC1B,KAAK,UAAU;YACX,OAAO,UAAA,IAAI,IAAI,OAAM,aAAc,CAAC,IAAI,CAAE,IAAI,CAAE,EAAjC,CAAiC,CAAC;QACrD,KAAK,QAAQ;YACT,OAAO,cAAM,OAAY,aAAa,EAAzB,CAAyB,CAAC;QAC3C,KAAK,QAAQ;YACD,IAAA,sDAAO,CAAoD;YACnE,OAAO,OAAO,CAAC;KACtB;AACL,CAAC"} \ No newline at end of file diff --git a/lib/type-r/relations/from.d.ts b/lib/type-r/relations/from.d.ts index e69de29..cb0ff5c 100644 --- a/lib/type-r/relations/from.d.ts +++ b/lib/type-r/relations/from.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/type-r/relations/from.js.map b/lib/type-r/relations/from.js.map index a258450..9826c37 100644 --- a/lib/type-r/relations/from.js.map +++ b/lib/type-r/relations/from.js.map @@ -1 +1 @@ -{"version":3,"file":"from.js","sourceRoot":"","sources":["../../../src/type-r/relations/from.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAoB,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,cAAc,EAAuB,MAAM,WAAW,CAAA;AAE/D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAelD;IAA4B,yCAAO;IAAnC;;IAqBA,CAAC;IAnBG,8BAAM,GAAN,UAAQ,KAAsB;QAC1B,MAAM,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,CAAC;IAGD,6BAAK,GAAL,UAAO,KAAsB;QACzB,MAAM,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,CAAC;IAGD,iCAAS,GAAT,UAAW,CAAkB,EAAE,CAAkB;QAC7C,IAAI,GAAG,GAAG,CAAC,IAAI,CAAW,CAAE,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAU,CAAE,CAAC,EAAE,CAAE,EAC1D,GAAG,GAAG,CAAC,IAAI,CAAW,CAAE,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAU,CAAE,CAAC,EAAE,CAAE,CAAC;QAE/D,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC;IACvB,CAAC;IAGD,gCAAQ,GAAR,UAAU,KAAK,EAAE,KAAK,EAAE,IAAI,IAAG,CAAC;IACpC,oBAAC;AAAD,CAAC,AArBD,CAA4B,OAAO,GAqBlC;AAED,MAAM,CAAC,IAAI,GAAG,cAAe,gBAAsC;IAC/D,IAAM,mBAAmB,GAAG,cAAc,CAAE,gBAAgB,CAAE,CAAC;IAE/D,IAAM,QAAQ,GAAG,IAAI,sBAAsB,CAAC;QACxC,KAAK,EAAG,IAAI;QACZ,UAAU,EAAG,aAAa;KAC7B,CAAC,CAAC;IAEH,MAAM,CAAC,QAAQ;SACV,GAAG,CAAE,UAAU,OAAwB,EAAE,IAAa;QACnD,EAAE,CAAA,CAAE,OAAO,OAAO,KAAK,QAAS,CAAC;YAAC,MAAM,CAAC,OAAO,CAAC;QAGjD,IAAM,UAAU,GAAG,mBAAmB,CAAE,IAAI,CAAE,CAAC;QAC/C,IAAM,MAAM,GAAY,IAAI,CAAC;QAG7B,EAAE,CAAA,CAAE,UAAU,IAAI,UAAU,CAAC,MAAO,CAAC,CAAA,CAAC;YAElC,MAAM,GAAG,UAAU,CAAC,GAAG,CAAE,OAAO,CAAE,IAAI,IAAI,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAE,IAAI,CAAE,GAAG,MAAM,CAAC;YAGjC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAE,IAAI,CAAE,CAAC,YAAY,CAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAE,CAAC;QAC9E,CAAC;QAED,MAAM,CAAC,MAAM,CAAC;IAClB,CAAC,CAAC,CAAC;AACX,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"from.js","sourceRoot":"","sources":["../../../src/type-r/relations/from.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAoB,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,cAAc,EAAuB,MAAM,WAAW,CAAA;AAE/D,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAelD;IAA4B,yCAAO;IAAnC;;IAqBA,CAAC;IAnBG,8BAAM,GAAN,UAAQ,KAAsB;QAC1B,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,CAAC;IAGD,6BAAK,GAAL,UAAO,KAAsB;QACzB,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,CAAC;IAGD,iCAAS,GAAT,UAAW,CAAkB,EAAE,CAAkB;QAC7C,IAAI,GAAG,GAAG,CAAC,IAAI,CAAW,CAAE,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAU,CAAE,CAAC,EAAE,CAAE,EAC1D,GAAG,GAAG,CAAC,IAAI,CAAW,CAAE,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAU,CAAE,CAAC,EAAE,CAAE,CAAC;QAE/D,OAAO,GAAG,KAAK,GAAG,CAAC;IACvB,CAAC;IAGD,gCAAQ,GAAR,UAAU,KAAK,EAAE,KAAK,EAAE,IAAI,IAAG,CAAC;IACpC,oBAAC;AAAD,CAAC,AArBD,CAA4B,OAAO,GAqBlC;AAED,MAAM,CAAC,IAAI,GAAG,SAAS,IAAI,CAAE,gBAAsC;IAC/D,IAAM,mBAAmB,GAAG,cAAc,CAAE,gBAAgB,CAAE,CAAC;IAE/D,IAAM,QAAQ,GAAG,IAAI,sBAAsB,CAAC;QACxC,KAAK,EAAG,IAAI;QACZ,UAAU,EAAG,aAAa;KAC7B,CAAC,CAAC;IAEH,OAAO,QAAQ;SACV,GAAG,CAAE,UAAU,OAAwB,EAAE,IAAa;QACnD,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAG,OAAO,OAAO,CAAC;QAGjD,IAAM,UAAU,GAAG,mBAAmB,CAAE,IAAI,CAAE,CAAC;QAC/C,IAAM,MAAM,GAAY,IAAI,CAAC;QAG7B,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,EAAE;YAEjC,MAAM,GAAG,UAAU,CAAC,GAAG,CAAE,OAAO,CAAE,IAAI,IAAI,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAE,IAAI,CAAE,GAAG,MAAM,CAAC;YAGjC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAE,IAAI,CAAE,CAAC,YAAY,CAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAE,CAAC;SAC7E;QAED,OAAO,MAAM,CAAC;IAClB,CAAC,CAAC,CAAC;AACX,CAAC,CAAC"} \ No newline at end of file diff --git a/lib/type-r/relations/store.js.map b/lib/type-r/relations/store.js.map index e5432e2..b5ac480 100644 --- a/lib/type-r/relations/store.js.map +++ b/lib/type-r/relations/store.js.map @@ -1 +1 @@ -{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/type-r/relations/store.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,IAAI,MAAM,GAAW,IAAI,CAAC;AAE1B;IAA2B,iCAAM;IAAjC;;IAuBA,CAAC;IAtBG,wBAAQ,GAAR,cAAqB,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAGnC,mBAAG,GAAH,UAAK,IAAa;QAEd,IAAI,KAAK,GAAG,IAAI,CAAE,IAAI,CAAE,CAAC;QAGzB,EAAE,CAAA,CAAE,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC,aAAc,CAAC;YAAC,MAAM,CAAC,KAAK,CAAC;QAGxD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAE,IAAI,CAAE,CAAC;IAClF,CAAC;IAED,sBAAW,eAAM;aAAjB,cAAqB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;aACrC,UAAmB,KAAa;YAC5B,EAAE,CAAA,CAAE,MAAO,CAAC,CAAA,CAAC;gBACX,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,CAAC;YAED,aAAa,CAAC,SAAS,CAAC,aAAa,GAAG,MAAM,GAAG,KAAK,CAAC;QAC3D,CAAC;;;OAPoC;IAQzC,YAAC;AAAD,CAAC,AAvBD,CAA2B,MAAM,GAuBhC;;AAED,KAAK,CAAC,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC"} \ No newline at end of file +{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/type-r/relations/store.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,IAAI,MAAM,GAAW,IAAI,CAAC;AAE1B;IAA2B,iCAAM;IAAjC;;IAuBA,CAAC;IAtBG,wBAAQ,GAAR,cAAqB,OAAO,IAAI,CAAC,CAAC,CAAC;IAGnC,mBAAG,GAAH,UAAK,IAAa;QAEd,IAAI,KAAK,GAAG,IAAI,CAAE,IAAI,CAAE,CAAC;QAGzB,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,CAAC,aAAa;YAAG,OAAO,KAAK,CAAC;QAGxD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,IAAI,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAE,IAAI,CAAE,CAAC;IAClF,CAAC;IAED,sBAAW,eAAM;aAAjB,cAAqB,OAAO,MAAM,CAAC,CAAC,CAAC;aACrC,UAAmB,KAAa;YAC5B,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,OAAO,EAAE,CAAC;aAClB;YAED,aAAa,CAAC,SAAS,CAAC,aAAa,GAAG,MAAM,GAAG,KAAK,CAAC;QAC3D,CAAC;;;OAPoC;IAQzC,YAAC;AAAD,CAAC,AAvBD,CAA2B,MAAM,GAuBhC;;AAED,KAAK,CAAC,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC"} \ No newline at end of file diff --git a/lib/type-r/relations/subsetOf.d.ts b/lib/type-r/relations/subsetOf.d.ts index e69de29..cb0ff5c 100644 --- a/lib/type-r/relations/subsetOf.d.ts +++ b/lib/type-r/relations/subsetOf.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/lib/type-r/relations/subsetOf.js b/lib/type-r/relations/subsetOf.js index d1fafe0..1c6f15b 100644 --- a/lib/type-r/relations/subsetOf.js +++ b/lib/type-r/relations/subsetOf.js @@ -30,6 +30,7 @@ function defineSubsetCollection(CollectionConstructor) { configurable: true }); SubsetOfCollection.prototype.add = function (a_elements, options) { + if (options === void 0) { options = {}; } var resolvedWith = this.resolvedWith, toAdd = toArray(a_elements); if (resolvedWith) { return _super.prototype.add.call(this, resolveRefs(resolvedWith, toAdd), options); @@ -44,6 +45,7 @@ function defineSubsetCollection(CollectionConstructor) { } }; SubsetOfCollection.prototype.reset = function (a_elements, options) { + if (options === void 0) { options = {}; } var resolvedWith = this.resolvedWith, elements = toArray(a_elements); return resolvedWith ? _super.prototype.reset.call(this, resolveRefs(resolvedWith, elements), options) : @@ -61,6 +63,13 @@ function defineSubsetCollection(CollectionConstructor) { this.models.map(function (model) { return model.id; }); }; SubsetOfCollection.prototype._validateNested = function () { return 0; }; + Object.defineProperty(SubsetOfCollection.prototype, "length", { + get: function () { + return this.models.length || (this.refs ? this.refs.length : 0); + }, + enumerable: true, + configurable: true + }); SubsetOfCollection.prototype.clone = function (owner) { var Ctor = this.constructor, copy = new Ctor([], { model: this.model, diff --git a/lib/type-r/relations/subsetOf.js.map b/lib/type-r/relations/subsetOf.js.map index 18274f9..2b164d9 100644 --- a/lib/type-r/relations/subsetOf.js.map +++ b/lib/type-r/relations/subsetOf.js.map @@ -1 +1 @@ -{"version":3,"file":"subsetOf.js","sourceRoot":"","sources":["../../../src/type-r/relations/subsetOf.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAqB,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,KAAK,EAAa,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEzD,OAAO,EAAE,cAAc,EAAuB,MAAM,WAAW,CAAA;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAiB,aAAa,EAAsB,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAE1F,IAAA,iCAAY,CAAW;AAI/B,UAAU,CAAC,QAAQ,GAAG,kBAAmB,gBAAsC;IAC3E,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,IAAI,CAAE,IAAI,CAAC,SAAS,GAAG,sBAAsB,CAAE,IAAI,CAAE,CAAE,EAClF,mBAAmB,GAAG,cAAc,CAAE,gBAAgB,CAAE,EACxD,QAAQ,GAAG,IAAI,sBAAsB,CAAC;QAClC,IAAI,EAAG,QAAQ;KAClB,CAAC,CAAC;IAEP,MAAM,CAAC,QAAQ,CAAC,GAAG,CACf,UAAU,IAAI;QACV,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAE,mBAAmB,CAAE,IAAI,CAAE,CAAE,CAAC;QAC1E,MAAM,CAAC,IAAI,CAAC;IAChB,CAAC,CACJ,CAAC;AACN,CAAC,CAAC;AAEF,IAAM,gBAAgB,GAAG,aAAa,CAAC,KAAK,GAAG,aAAa,CAAC,UAAU,CAAC;AAExE,gCAAiC,qBAAyC;IAC9D;QAAiC,8CAAqB;QAQ1D,4BAAa,YAAa,EAAE,OAAQ;YAApC,YACI,kBAAO,EAAE,EAAE,OAAO,EAAE,gBAAgB,CAAE,SAEzC;YATD,kBAAY,GAAgB,IAAI,CAAC;YAQ7B,KAAI,CAAC,IAAI,GAAG,OAAO,CAAE,YAAY,CAAE,CAAC;;QACxC,CAAC;QALD,sBAAI,+CAAe;iBAAnB,cAAuB,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;;;WAAA;QAQzD,gCAAG,GAAH,UAAK,UAAU,EAAE,OAAQ;YACb,IAAA,gCAAY,EACZ,KAAK,GAAG,OAAO,CAAE,UAAU,CAAE,CAAC;YAEtC,EAAE,CAAA,CAAE,YAAa,CAAC,CAAA,CAAC;gBAEf,MAAM,CAAC,iBAAM,GAAG,YAAE,WAAW,CAAE,YAAY,EAAE,KAAK,CAAE,EAAE,OAAO,CAAE,CAAC;YACpE,CAAC;YACD,IAAI,CAAA,CAAC;gBAED,EAAE,CAAA,CAAE,KAAK,CAAC,MAAO,CAAC,CAAA,CAAC;oBACf,IAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAE,IAAI,CAAE,CAAC;oBAG5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAE,KAAK,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;oBAElE,cAAc,CAAC,WAAW,CAAE,IAAI,EAAE,OAAO,CAAE,CAAC;oBAG5C,MAAM,IAAI,cAAc,CAAC,MAAM,CAAE,IAAI,CAAE,CAAC;gBAC5C,CAAC;YACL,CAAC;QACL,CAAC;QAED,kCAAK,GAAL,UAAO,UAAW,EAAE,OAAQ;YAChB,IAAA,gCAAY,EAChB,QAAQ,GAAG,OAAO,CAAE,UAAU,CAAE,CAAC;YAErC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAEjB,iBAAM,KAAK,YAAE,WAAW,CAAE,YAAY,EAAE,QAAQ,CAAE,EAAE,OAAO,CAAE,CAAC,CAAC;gBAE/D,QAAQ,CAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAE,IAAI,EAAE,CAAC;QAClD,CAAC;QAED,+CAAkB,GAAlB,UAAoB,UAAU,EAAE,OAAQ;YAC5B,IAAA,gCAAY,EAChB,QAAQ,GAAG,OAAO,CAAE,UAAU,CAAE,CAAC;YAErC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAEjB,iBAAM,kBAAkB,YAAE,WAAW,CAAE,YAAY,EAAE,QAAQ,CAAE,EAAE,OAAO,CAAE,CAAC,CAAC;gBAE5E,QAAQ,CAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAE,CAAC;QAC5C,CAAC;QAGD,mCAAM,GAAN;YACI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC,GAAG,CAAE,UAAA,OAAO,IAAI,OAAA,OAAO,CAAC,EAAE,IAAI,OAAO,EAArB,CAAqB,CAAE,CAAC,CAAC;gBACnD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,EAAE,EAAR,CAAQ,CAAE,CAAC;QAC7C,CAAC;QAGD,4CAAe,GAAf,cAAmB,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAG9B,kCAAK,GAAL,UAAO,KAAM;YACT,IAAI,IAAI,GAAS,IAAK,CAAC,WAAW,EAC9B,IAAI,GAAG,IAAI,IAAI,CAAE,EAAE,EAAE;gBACjB,KAAK,EAAG,IAAI,CAAC,KAAK;gBAClB,UAAU,EAAG,IAAI,CAAC,UAAU;aAC/B,CAAC,CAAC;YAEP,EAAE,CAAA,CAAE,IAAI,CAAC,YAAa,CAAC,CAAA,CAAC;gBACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;gBACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACjB,IAAI,CAAC,KAAK,CAAE,IAAI,CAAC,MAAM,EAAE,EAAE,MAAM,EAAG,IAAI,EAAE,CAAE,CAAC;YACjD,CAAC;YACD,IAAI,CAAA,CAAC;gBACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,CAAC;YAED,MAAM,CAAC,IAAI,CAAC;QAChB,CAAC;QAGD,kCAAK,GAAL,UAAO,GAAS;YACZ,MAAM,CAAC,GAAG,CAAC;QACf,CAAC;QAED,oCAAO,GAAP,UAAS,UAAuB;YAC5B,EAAE,CAAA,CAAE,UAAU,IAAI,UAAU,CAAC,MAAO,CAAC,CAAA,CAAC;gBAClC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;gBAE/B,EAAE,CAAA,CAAE,IAAI,CAAC,IAAK,CAAC,CAAA,CAAC;oBACZ,IAAI,CAAC,KAAK,CAAE,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAG,IAAI,EAAE,CAAE,CAAC;oBAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBACrB,CAAC;YACL,CAAC;YAED,MAAM,CAAC,IAAI,CAAC;QAChB,CAAC;QAED,wCAAW,GAAX,cAA6B,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAEpD,mCAAM,GAAN,UAAQ,SAAe,EAAE,GAAa;YAClC,MAAM,CAAC,iBAAM,MAAM,YAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAE,SAAS,CAAE,EAAE,GAAG,CAAE,CAAC;QACnE,CAAC;QAED,mCAAM,GAAN;YACI,EAAE,CAAA,CAAE,IAAI,CAAC,YAAa,CAAC,CAAA,CAAC;gBACpB,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAE,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YACvB,CAAC;YAED,MAAM,IAAI,KAAK,CAAE,uEAAuE,CAAE,CAAC;QAC/F,CAAC;QAED,sCAAS,GAAT;YACI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACtD,CAAC;QA7HS,kBAAkB;YAA/B,MAAM;WAAO,kBAAkB,CA8H/B;QAAD,yBAAC;KAAA,AA9HO,CAAiC,qBAAqB,GA8H7D;IAGD,kBAAkB,CAAC,SAAS,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;IAElD,MAAM,CAAC,kBAAkB,CAAC;AAC9B,CAAC;AAED,qBAAsB,MAAM,EAAE,QAAQ;IAClC,IAAM,OAAO,GAAG,EAAE,CAAC;IAEnB,GAAG,CAAA,CAAY,UAAQ,EAAR,qBAAQ,EAAR,sBAAQ,EAAR,IAAQ;QAAlB,IAAI,EAAE,iBAAA;QACP,IAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAE,EAAE,CAAE,CAAC;QAChC,EAAE,CAAA,CAAE,MAAO,CAAC;YAAC,OAAO,CAAC,IAAI,CAAE,MAAM,CAAE,CAAC;KACvC;IAED,MAAM,CAAC,OAAO,CAAC;AACnB,CAAC;AAED,kBAAmB,UAAU,EAAE,QAAQ,EAAE,OAAO;IAC5C,EAAE,CAAA,CAAE,KAAK,CAAC,QAAQ,CAAE,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAG,CAAC,CAAA,CAAC;QAC9C,IAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAE,UAAU,CAAE,CAAC;QAGlD,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;QAEnC,cAAc,CAAC,WAAW,CAAE,UAAU,EAAE,OAAO,CAAE,CAAC;QAGlD,MAAM,IAAI,cAAc,CAAC,MAAM,CAAE,UAAU,CAAE,CAAC;IAClD,CAAC;AACL,CAAC;AAED,iBAAkB,QAAQ;IACtB,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CACd,KAAK,CAAC,OAAO,CAAE,QAAQ,CAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAE,QAAQ,CAAE,CACtD,CAAC,CAAC,CAAC,EAAE,CAAC;AACX,CAAC"} \ No newline at end of file +{"version":3,"file":"subsetOf.js","sourceRoot":"","sources":["../../../src/type-r/relations/subsetOf.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/transactions.d.ts b/lib/type-r/transactions.d.ts index 58ee932..ebfc800 100644 --- a/lib/type-r/transactions.d.ts +++ b/lib/type-r/transactions.d.ts @@ -8,9 +8,10 @@ export interface TransactionalDefinition extends MessengerDefinition { export declare enum ItemsBehavior { share = 1, listen = 2, - persistent = 4, + persistent = 4 } export declare abstract class Transactional implements Messenger, IONode, Validatable, Traversable { + static endpoint: IOEndpoint; static __super__: object; static mixins: MixinsState; static define: (definition?: TransactionalDefinition, statics?: object) => typeof Transactional; @@ -18,10 +19,10 @@ export declare abstract class Transactional implements Messenger, IONode, Valida static onDefine(definitions: TransactionalDefinition, BaseClass: typeof Transactional): void; static onExtend(BaseClass: typeof Transactional): void; static create(a: any, b?: any): Transactional; - on: (events: string | CallbacksByEvents, callback, context?) => this; - once: (events: string | CallbacksByEvents, callback, context?) => this; - off: (events?: string | CallbacksByEvents, callback?, context?) => this; - trigger: (name: string, a?, b?, c?, d?, e?) => this; + on: (events: string | CallbacksByEvents, callback: any, context?: any) => this; + once: (events: string | CallbacksByEvents, callback: any, context?: any) => this; + off: (events?: string | CallbacksByEvents, callback?: any, context?: any) => this; + trigger: (name: string, a?: any, b?: any, c?: any, d?: any, e?: any) => this; stopListening: (source?: Messenger, a?: string | CallbacksByEvents, b?: Function) => this; listenTo: (source: Messenger, a: string | CallbacksByEvents, b?: Function) => this; listenToOnce: (source: Messenger, a: string | CallbacksByEvents, b?: Function) => this; @@ -53,7 +54,7 @@ export declare abstract class Transactional implements Messenger, IONode, Valida assignFrom(source: Transactional | Object): this; abstract _createTransaction(values: any, options?: TransactionOptions): Transaction | void; parse(data: any, options?: TransactionOptions): any; - abstract toJSON(): {}; + abstract toJSON(options?: object): {}; abstract get(key: string): any; deepGet(reference: string): any; getOwner(): Owner; @@ -62,9 +63,9 @@ export declare abstract class Transactional implements Messenger, IONode, Valida abstract each(iteratee: (val: any, key: string | number) => void, context?: any): any; map(iteratee: (val: any, key: string | number) => T, context?: any): T[]; _endpoint: IOEndpoint; - _ioPromise: IOPromise; - hasPendingIO(): IOPromise; - fetch(options?: object): IOPromise; + _ioPromise: IOPromise; + hasPendingIO(): IOPromise; + fetch(options?: object): IOPromise; getEndpoint(): IOEndpoint; mapObject(iteratee: (val: any, key: string | number) => T, context?: any): { [key: string]: T; diff --git a/lib/type-r/transactions.js b/lib/type-r/transactions.js index 8a49487..6dacfe9 100644 --- a/lib/type-r/transactions.js +++ b/lib/type-r/transactions.js @@ -76,7 +76,15 @@ var Transactional = (function () { return this; }; Transactional.prototype.assignFrom = function (source) { - return this.set(source.__inner_state__ || source, { merge: true }); + var _this = this; + this.transaction(function () { + _this.set(source.__inner_state__ || source, { merge: true }); + var _changeToken = source._changeToken; + if (_changeToken) { + _this._changeToken = _changeToken; + } + }); + return this; }; Transactional.prototype.parse = function (data, options) { return data; }; Transactional.prototype.deepGet = function (reference) { @@ -142,6 +150,7 @@ var Transactional = (function () { if (name !== 'Subclass') return name; }; + var Transactional_1; Transactional = Transactional_1 = tslib_1.__decorate([ define, definitions({ @@ -150,7 +159,6 @@ var Transactional = (function () { mixins(Messenger) ], Transactional); return Transactional; - var Transactional_1; }()); export { Transactional }; export var transactionApi = { diff --git a/lib/type-r/transactions.js.map b/lib/type-r/transactions.js.map index 20d4b39..33482af 100644 --- a/lib/type-r/transactions.js.map +++ b/lib/type-r/transactions.js.map @@ -1 +1 @@ -{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../src/type-r/transactions.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../src/type-r/transactions.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/lib/type-r/traversable.d.ts b/lib/type-r/traversable.d.ts index 97eeaa6..88d38eb 100644 --- a/lib/type-r/traversable.d.ts +++ b/lib/type-r/traversable.d.ts @@ -10,4 +10,4 @@ export declare class CompiledReference { local: boolean; constructor(reference: string, splitTail?: boolean); } -export declare function resolveReference(root: Traversable, reference: string, action: (object, key: string) => any): any; +export declare function resolveReference(root: Traversable, reference: string, action: (object: any, key: string) => any): any; diff --git a/lib/type-r/traversable.js b/lib/type-r/traversable.js index f14d472..8dda18b 100644 --- a/lib/type-r/traversable.js +++ b/lib/type-r/traversable.js @@ -1,20 +1,21 @@ -var referenceMask = /\^|([^.]+)/g; +var referenceMask = /\^|(store\.[^.]+)|([^.]+)/g; var CompiledReference = (function () { function CompiledReference(reference, splitTail) { if (splitTail === void 0) { splitTail = false; } var path = reference .match(referenceMask) .map(function (key) { - if (key === '^') + if (key === '^' || key === 'owner') return 'getOwner()'; if (key[0] === '~') return "getStore().get(\"" + key.substr(1) + "\")"; + if (key.indexOf('store.') === 0) + return "getStore().get(\"" + key.substr(6) + "\")"; return key; }); this.tail = splitTail && path.pop(); this.local = !path.length; - path.unshift('self'); - this.resolve = new Function('self', "return " + path.join('.') + ";"); + this.resolve = new Function('self', "\n var v = self." + path.shift() + ";\n \n " + path.map(function (x) { return "\n v = v && v." + x + ";\n "; }).join('') + "\n\n return v;\n "); } return CompiledReference; }()); diff --git a/lib/type-r/traversable.js.map b/lib/type-r/traversable.js.map index 9b94c50..a1e5492 100644 --- a/lib/type-r/traversable.js.map +++ b/lib/type-r/traversable.js.map @@ -1 +1 @@ -{"version":3,"file":"traversable.js","sourceRoot":"","sources":["../../src/type-r/traversable.ts"],"names":[],"mappings":"AAcA,IAAM,aAAa,GAAI,aAAa,CAAC;AAKrC;IAKI,2BAAa,SAAkB,EAAE,SAA2B;QAA3B,0BAAA,EAAA,iBAA2B;QACxD,IAAM,IAAI,GAAG,SAAS;aACL,KAAK,CAAE,aAAa,CAAE;aACtB,GAAG,CAAE,UAAA,GAAG;YACL,EAAE,CAAA,CAAE,GAAG,KAAK,GAAI,CAAC;gBAAC,MAAM,CAAC,YAAY,CAAC;YAEtC,EAAE,CAAA,CAAE,GAAG,CAAE,CAAC,CAAE,KAAK,GAAI,CAAC;gBAAC,MAAM,CAAC,sBAAoB,GAAG,CAAC,MAAM,CAAE,CAAC,CAAE,QAAK,CAAC;YAEvE,MAAM,CAAC,GAAG,CAAC;QACf,CAAC,CAAE,CAAC;QAEpB,IAAI,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAE1B,IAAI,CAAC,OAAO,CAAE,MAAM,CAAE,CAAC;QAEvB,IAAI,CAAC,OAAO,GAAS,IAAI,QAAQ,CAAE,MAAM,EAAE,YAAW,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAI,CAAE,CAAC;IAC/E,CAAC;IACL,wBAAC;AAAD,CAAC,AAvBD,IAuBC;;AAED,MAAM,2BAA4B,IAAkB,EAAE,SAAkB,EAAE,MAAwC;IAC9G,IAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAE,aAAa,CAAE,EACvC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAE7B,IAAI,IAAI,GAAG,IAAI,CAAC;IAEhB,GAAG,CAAA,CAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,IAAM,GAAG,GAAG,IAAI,CAAE,CAAC,CAAE,CAAC;QACtB,MAAM,CAAA,CAAE,GAAI,CAAC,CAAA,CAAC;YACV,KAAK,GAAG;gBAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,KAAK,CAAC;YACzC,KAAK,GAAG;gBAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,KAAK,CAAC;YACzC,SAAW,IAAI,GAAG,IAAI,CAAC,GAAG,CAAE,GAAG,CAAE,CAAC;QACtC,CAAC;QAGD,EAAE,CAAA,CAAE,CAAC,IAAK,CAAC;YAAC,MAAM,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,MAAM,CAAE,IAAI,EAAE,IAAI,CAAE,IAAI,CAAE,CAAE,CAAC;AACxC,CAAC"} \ No newline at end of file +{"version":3,"file":"traversable.js","sourceRoot":"","sources":["../../src/type-r/traversable.ts"],"names":[],"mappings":"AAcA,IAAM,aAAa,GAAI,4BAA4B,CAAC;AAKpD;IAKI,2BAAa,SAAkB,EAAE,SAA2B;QAA3B,0BAAA,EAAA,iBAA2B;QACxD,IAAM,IAAI,GAAG,SAAS;aACL,KAAK,CAAE,aAAa,CAAE;aACtB,GAAG,CAAE,UAAA,GAAG;YACL,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,OAAO;gBAAG,OAAO,YAAY,CAAC;YAEzD,IAAI,GAAG,CAAE,CAAC,CAAE,KAAK,GAAG;gBAAG,OAAO,sBAAoB,GAAG,CAAC,MAAM,CAAE,CAAC,CAAE,QAAK,CAAC;YAEvE,IAAI,GAAG,CAAC,OAAO,CAAE,QAAQ,CAAE,KAAK,CAAC;gBAAG,OAAO,sBAAoB,GAAG,CAAC,MAAM,CAAE,CAAC,CAAE,QAAK,CAAC;YAEpF,OAAO,GAAG,CAAC;QACf,CAAC,CAAE,CAAC;QAEpB,IAAI,CAAC,IAAI,GAAG,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAE1B,IAAI,CAAC,OAAO,GAAS,IAAI,QAAQ,CAAE,MAAM,EAAE,gCACvB,IAAI,CAAC,KAAK,EAAE,oDAEzB,IAAI,CAAC,GAAG,CAAE,UAAA,CAAC,IAAI,OAAA,kCACA,CAAC,oBAClB,EAFiB,CAEjB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,wCAGd,CAAE,CAAC;IACR,CAAC;IACL,wBAAC;AAAD,CAAC,AA/BD,IA+BC;;AAED,MAAM,UAAU,gBAAgB,CAAE,IAAkB,EAAE,SAAkB,EAAE,MAAwC;IAC9G,IAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAE,aAAa,CAAE,EACvC,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAE7B,IAAI,IAAI,GAAG,IAAI,CAAC;IAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE;QAC3B,IAAM,GAAG,GAAG,IAAI,CAAE,CAAC,CAAE,CAAC;QACtB,QAAQ,GAAG,EAAE;YACT,KAAK,GAAG;gBAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,MAAM;YACzC,KAAK,GAAG;gBAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAAC,MAAM;YACzC,OAAS,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAE,GAAG,CAAE,CAAC;SACrC;QAGD,IAAI,CAAC,IAAI;YAAG,OAAO;KACtB;IAED,OAAO,MAAM,CAAE,IAAI,EAAE,IAAI,CAAE,IAAI,CAAE,CAAE,CAAC;AACxC,CAAC"} \ No newline at end of file diff --git a/lib/type-r/validation.js.map b/lib/type-r/validation.js.map index 449742d..b930f72 100644 --- a/lib/type-r/validation.js.map +++ b/lib/type-r/validation.js.map @@ -1 +1 @@ -{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/type-r/validation.ts"],"names":[],"mappings":"AAWA;IAQI,yBAAa,GAAiB;QAC1B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,eAAe,CAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAE,CAAC;QAEtD,EAAE,CAAA,CAAE,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAE,GAAG,CAAG,CAAC,CAAA,CAAC;YACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;IACL,CAAC;IAED,8BAAI,GAAJ,UAAM,QAAgD;QAC5C,IAAA,SAAwB,EAAtB,gBAAK,EAAE,kBAAM,CAAU;QAE/B,EAAE,CAAA,CAAE,KAAM,CAAC;YAAC,QAAQ,CAAE,KAAK,EAAE,IAAI,CAAE,CAAC;QAEpC,GAAG,CAAA,CAAE,IAAM,GAAG,IAAI,MAAO,CAAC,CAAA,CAAC;YACvB,QAAQ,CAAE,MAAM,CAAE,GAAG,CAAE,EAAE,GAAG,CAAE,CAAC;QACnC,CAAC;IACL,CAAC;IAED,mCAAS,GAAT,UAAW,QAAsE,EAAE,MAAoB;QACnG,IAAI,CAAC,IAAI,CAAE,UAAE,KAAW,EAAE,GAAY;YAClC,EAAE,CAAA,CAAE,KAAK,YAAY,eAAgB,CAAC,CAAA,CAAC;gBACjB,KAAM,CAAC,SAAS,CAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAE,GAAG,CAAE,CAAE,CAAC;YACtE,CAAC;YACD,IAAI,CAAA,CAAC;gBACD,QAAQ,CAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAE,CAAC;YACnC,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IACL,sBAAC;AAAD,CAAC,AApCD,IAoCC"} \ No newline at end of file +{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/type-r/validation.ts"],"names":[],"mappings":"AAWA;IAQI,yBAAa,GAAiB;QAC1B,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,eAAe,CAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAE,CAAC;QAEtD,IAAI,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,QAAQ,CAAE,GAAG,CAAE,EAAE;YAClC,IAAI,CAAC,MAAM,EAAE,CAAC;SACjB;IACL,CAAC;IAED,8BAAI,GAAJ,UAAM,QAAgD;QAC5C,IAAA,SAAwB,EAAtB,gBAAK,EAAE,kBAAM,CAAU;QAE/B,IAAI,KAAK;YAAG,QAAQ,CAAE,KAAK,EAAE,IAAI,CAAE,CAAC;QAEpC,KAAK,IAAM,GAAG,IAAI,MAAM,EAAE;YACtB,QAAQ,CAAE,MAAM,CAAE,GAAG,CAAE,EAAE,GAAG,CAAE,CAAC;SAClC;IACL,CAAC;IAED,mCAAS,GAAT,UAAW,QAAsE,EAAE,MAAoB;QACnG,IAAI,CAAC,IAAI,CAAE,UAAE,KAAW,EAAE,GAAY;YAClC,IAAI,KAAK,YAAY,eAAe,EAAE;gBAChB,KAAM,CAAC,SAAS,CAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAE,GAAG,CAAE,CAAE,CAAC;aACrE;iBACG;gBACA,QAAQ,CAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAE,CAAC;aAClC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IACL,sBAAC;AAAD,CAAC,AApCD,IAoCC"} \ No newline at end of file diff --git a/lib/underscore-mixin.js.map b/lib/underscore-mixin.js.map index 001736a..9c30642 100644 --- a/lib/underscore-mixin.js.map +++ b/lib/underscore-mixin.js.map @@ -1 +1 @@ -{"version":3,"file":"underscore-mixin.js","sourceRoot":"","sources":["../src/underscore-mixin.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"underscore-mixin.js","sourceRoot":"","sources":["../src/underscore-mixin.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9403c43..94305df 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,151 +1,136 @@ { "name": "nestedtypes", - "version": "2.1.0-beta.01", + "version": "2.1.4", "lockfileVersion": 1, "requires": true, "dependencies": { - "@types/jquery": { - "version": "2.0.48", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-2.0.48.tgz", - "integrity": "sha512-nNLzUrVjaRV/Ds1eHZLYTd7IZxs38cwwLSaqMJj8OTXY8xNUbxSK69bi9cMLvQ7dm/IBeQ1wHwQ0S1uYa0rd2w==", - "dev": true - }, - "assertion-error": { - "version": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", - "integrity": "sha1-x/hUOP3UZrx8oWq5DIFRN5el0js=", - "dev": true - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "@babel/code-frame": { + "version": "7.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-rc.1.tgz", + "integrity": "sha512-qhQo3GqwqMUv03SxxjcEkWtlkEDvFYrBKbJUn4Dtd9amC2cLkJ3me4iYUVSBbVXWbfbVRalEeVBHzX4aQYKnBg==", "dev": true, "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" + "@babel/highlight": "7.0.0-rc.1" } }, - "browser-resolve": { - "version": "1.11.2", - "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", - "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "@babel/highlight": { + "version": "7.0.0-rc.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-rc.1.tgz", + "integrity": "sha512-5PgPDV6F5s69XNznTcP0za3qH7qgBkr9DVQTXfZtpF+3iEyuIZB1Mjxu52F5CFxgzQUQJoBYHVxtH4Itdb5MgA==", "dev": true, "requires": { - "resolve": "1.1.7" - }, - "dependencies": { - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } + "chalk": "2.4.1", + "esutils": "2.0.2", + "js-tokens": "3.0.2" } }, - "browser-stdout": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", - "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", "dev": true }, - "build": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/build/-/build-0.1.4.tgz", - "integrity": "sha1-cH/gJv/O3crL/c3zVur9pk8VEEY=", + "@types/jquery": { + "version": "2.0.49", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-2.0.49.tgz", + "integrity": "sha512-/9xLnYmohN/vD2gDnLS4cym8TUmrJu7DvZa/LELKzZjdPsvWVJiedsdu2SXNtb/DA7FGimqL2g0IoyhbNKLl8g==", + "dev": true + }, + "@types/node": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.7.0.tgz", + "integrity": "sha512-dmYIvoQEZWnyQfgrwPCoxztv/93NYQGEiOoQhuI56rJahv9de6Q2apZl3bufV46YJ0OAXdaktIuw4RIRl4DTeA==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { - "cssmin": "0.3.2", - "jsmin": "1.0.1", - "jxLoader": "0.1.1", - "moo-server": "1.3.0", - "promised-io": "0.3.5", - "timespan": "2.3.0", - "uglify-js": "1.3.5", - "walker": "1.0.7", - "winston": "2.4.0", - "wrench": "1.3.9" + "color-convert": "1.9.2" } }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "chai": { - "version": "https://registry.npmjs.org/chai/-/chai-2.3.0.tgz", - "integrity": "sha1-ii9qNHSNqAEJD9cyh7Kqc5pOkJo=", + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", "dev": true, "requires": { - "assertion-error": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.0.tgz", - "deep-eql": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz" + "arr-flatten": "1.1.0" } }, - "chai-as-promised": { - "version": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-5.3.0.tgz", - "integrity": "sha1-CdekApCKpw39vq1T5YU/x50+8hw=", + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, - "colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, - "commander": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", - "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=", + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", "dev": true, "requires": { - "graceful-readlink": "1.0.1" + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" } }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "cssmin": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/cssmin/-/cssmin-0.3.2.tgz", - "integrity": "sha1-3c5MVHtRCuDVlKjx+/iq+OLFwA0=", - "dev": true - }, - "cycle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", + "builtin-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz", + "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==", "dev": true }, - "debug": { - "version": "2.6.8", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", - "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ansi-styles": "3.2.1", + "escape-string-regexp": "1.0.5", + "supports-color": "5.4.0" } }, - "deep-eql": { - "version": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "color-convert": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", + "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", "dev": true, "requires": { - "type-detect": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz" + "color-name": "1.1.1" } }, - "diff": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", - "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", + "color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", + "dev": true + }, + "commander": { + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.16.0.tgz", + "integrity": "sha512-sVXqklSaotK9at437sFlFpyOcJonxe0yST/AG9DkQKUdIE6IqGIMv4SfAQSKaJbSdVEJYItASCrBiVQHq1HQew==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, "escape-string-regexp": { @@ -154,553 +139,472 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", + "estree-walker": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.3.1.tgz", + "integrity": "sha1-5rGlHPcpJSTnI3wxLl/mZgwc4ao=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, - "formatio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/formatio/-/formatio-1.2.0.tgz", - "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", "dev": true, "requires": { - "samsam": "1.3.0" + "is-posix-bracket": "0.1.1" } }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz", - "integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=", + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fill-range": "2.2.3" } }, - "graceful-readlink": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", - "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", - "dev": true + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } }, - "growl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.9.2.tgz", - "integrity": "sha1-Dqd0NxXbjY3ixe3hd14bRayFwC8=", + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", "dev": true }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "for-in": "1.0.2" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", - "dev": true + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "jquery": { - "version": "https://registry.npmjs.org/jquery/-/jquery-3.2.1.tgz", - "integrity": "sha1-XE2d5lKvbNCncBVKYxu6ErAVx4c=", + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, - "js-yaml": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-0.3.7.tgz", - "integrity": "sha1-1znY7oZGHlSzVNan19HyrZoWf2I=", + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", "dev": true }, - "jsmin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/jsmin/-/jsmin-1.0.1.tgz", - "integrity": "sha1-570NzWSWw79IYyNb9GGj2YqjuYw=", - "dev": true + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } }, - "json3": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", - "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, - "just-extend": { - "version": "1.1.22", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-1.1.22.tgz", - "integrity": "sha1-MzCvdWyralQnAMZLLk5KoGLVL/8=", + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", "dev": true }, - "jxLoader": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jxLoader/-/jxLoader-0.1.1.tgz", - "integrity": "sha1-ATTqUUTlM7WU/B/yX/GU4jXFPs0=", + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", "dev": true, "requires": { - "js-yaml": "0.3.7", - "moo-server": "1.3.0", - "promised-io": "0.3.5", - "walker": "1.0.7" + "is-extglob": "1.0.0" } }, - "lodash._baseassign": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz", - "integrity": "sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4=", + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", "dev": true, "requires": { - "lodash._basecopy": "3.0.1", - "lodash.keys": "3.1.2" + "kind-of": "3.2.2" } }, - "lodash._basecopy": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", - "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", - "dev": true - }, - "lodash._basecreate": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz", - "integrity": "sha1-G8ZhYU2qf8MRt9A78WgGoCE8+CE=", + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", "dev": true }, - "lodash._getnative": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", - "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, - "lodash._isiterateecall": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", - "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, - "lodash.create": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lodash.create/-/lodash.create-3.1.1.tgz", - "integrity": "sha1-1/KEnw29p+BGgruM1yqwIkYd6+c=", + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { - "lodash._baseassign": "3.2.0", - "lodash._basecreate": "3.0.3", - "lodash._isiterateecall": "3.0.9" + "isarray": "1.0.0" } }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", + "jquery": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==", "dev": true }, - "lodash.isarray": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", - "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", "dev": true }, - "lodash.keys": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", - "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { - "lodash._getnative": "3.9.1", - "lodash.isarguments": "3.1.0", - "lodash.isarray": "3.0.4" + "is-buffer": "1.1.6" } }, - "lolex": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-2.1.3.tgz", - "integrity": "sha512-BdHq78SeI+6PAUtl4atDuCt7L6E4fab3mSRtqxm4ywaXe4uP7jZ0TTcFNuU20syUjxZc2l7jFqKVMJ+AX0LnpQ==", - "dev": true - }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", "dev": true, "requires": { - "tmpl": "1.0.4" + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.4" } }, - "minimatch": { - "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { - "brace-expansion": "1.1.8" + "remove-trailing-separator": "1.1.0" } }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", "dev": true, "requires": { - "minimist": "0.0.8" + "for-own": "0.1.5", + "is-extendable": "0.1.1" } }, - "mocha": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-3.5.3.tgz", - "integrity": "sha512-/6na001MJWEtYxHOV1WLfsmR4YIynkUEhBwzsb+fk2qmQ3iqsi258l/Q2MWHJMImAcNpZ8DEdYAK72NHoIQ9Eg==", + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", "dev": true, "requires": { - "browser-stdout": "1.3.0", - "commander": "2.9.0", - "debug": "2.6.8", - "diff": "3.2.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.1", - "growl": "1.9.2", - "he": "1.1.1", - "json3": "3.3.2", - "lodash.create": "3.1.1", - "mkdirp": "0.5.1", - "supports-color": "3.1.2" + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" } }, - "moo-server": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/moo-server/-/moo-server-1.3.0.tgz", - "integrity": "sha1-XceVaVZaENbv7VQ5SR5p0jkuWPE=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "path-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, - "native-promise-only": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", - "integrity": "sha1-IKMYwwy0X3H+et+/eyHJnBRy7xE=", + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", "dev": true }, - "nise": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.1.1.tgz", - "integrity": "sha512-f5DMJB0MqBaSuP2NAwPx7HyVKPdaozds0KsNe9XIP3npKWt/QUg73l5TTLRTSwfG/Y3AB0ktacuxX4QNcg6vVw==", + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", "dev": true, "requires": { - "formatio": "1.2.0", - "just-extend": "1.1.22", - "lolex": "1.6.0", - "path-to-regexp": "1.7.0", - "text-encoding": "0.6.4" + "is-number": "3.0.0", + "kind-of": "4.0.0" }, "dependencies": { - "lolex": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-1.6.0.tgz", - "integrity": "sha1-OpoCg0UqR9dDnnJzG54H1zhuSfY=", - "dev": true + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.6" + } } } }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", "dev": true, "requires": { - "wrappy": "1.0.2" + "is-equal-shallow": "0.1.3" } }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-parse": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", - "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, - "path-to-regexp": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", - "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", - "dev": true, - "requires": { - "isarray": "0.0.1" - } - }, - "promised-io": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/promised-io/-/promised-io-0.3.5.tgz", - "integrity": "sha1-StIXuzZYvKrplGsXqGaOzYUeE1Y=", + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", "dev": true }, - "requirejs": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/requirejs/-/requirejs-2.3.5.tgz", - "integrity": "sha512-svnO+aNcR/an9Dpi44C7KSAy5fFGLtmPbaaCeQaklUz8BQhS64tWWIIlvEA5jrWICzlO/X9KSzSeXFnZdBu8nw==", + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "resolve": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", - "integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz", + "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==", "dev": true, "requires": { "path-parse": "1.0.5" } }, - "rollup": { - "version": "0.50.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.50.1.tgz", - "integrity": "sha512-XwrnqjSTk+yR8GbP6hiJuVe83MVmBw/gm4P3qP34A10fRXvv6ppl0ZUg1+Pj1tIZSR/aw5ZaILLEiVxwXIAdAw==", + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "rollup": { + "version": "0.64.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.64.1.tgz", + "integrity": "sha512-+ThdVXrvonJdOTzyybMBipP0uz605Z8AnzWVY3rf+cSGnLO7uNkJBlN+9jXqWOomkvumXfm/esmBpA5d53qm7g==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "@types/node": "10.7.0" + } + }, "rollup-plugin-node-resolve": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.0.0.tgz", - "integrity": "sha1-i4l8TDAw1QASd7BRSyXSygloPuA=", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.3.0.tgz", + "integrity": "sha512-9zHGr3oUJq6G+X0oRMYlzid9fXicBdiydhwGChdyeNRGPcN/majtegApRKHLR5drboUvEWU+QeUmGTyEZQs3WA==", "dev": true, "requires": { - "browser-resolve": "1.11.2", - "builtin-modules": "1.1.1", + "builtin-modules": "2.0.0", "is-module": "1.0.0", - "resolve": "1.5.0" + "resolve": "1.7.1" + } + }, + "rollup-plugin-sourcemaps": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.4.2.tgz", + "integrity": "sha1-YhJaqUCHqt97g+9N+vYptHMTXoc=", + "dev": true, + "requires": { + "rollup-pluginutils": "2.0.1", + "source-map-resolve": "0.5.1" } }, "rollup-plugin-uglify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-4.0.0.tgz", + "integrity": "sha512-f6W31EQLzxSEYfN3x6/lyljHqXSoCjXKcTsnwz3evQvHgU1+qTzU2SE0SIG7tbAvaCewp2UaZ5x3k6nYsxOP9A==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-rc.1", + "uglify-js": "3.4.7" + } + }, + "rollup-pluginutils": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-uglify/-/rollup-plugin-uglify-2.0.1.tgz", - "integrity": "sha1-Z7N60e/a+9g69MNrQMGJ7khmyWk=", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.0.1.tgz", + "integrity": "sha1-fslbNXP2VDpGpkYb2afFRFJdD8A=", "dev": true, "requires": { - "uglify-js": "3.1.9" - }, - "dependencies": { - "commander": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", - "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "uglify-js": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.1.9.tgz", - "integrity": "sha512-ari2E89bD7f+fMU173NgF12JBcOhgoxeyuCs97h5K58IBENrnG9eVj2lFadrOPdqf0KifsxVmUQfzA2cHNxCZQ==", - "dev": true, - "requires": { - "commander": "2.11.0", - "source-map": "0.6.1" - } - } + "estree-walker": "0.3.1", + "micromatch": "2.3.11" } }, - "samsam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/samsam/-/samsam-1.3.0.tgz", - "integrity": "sha512-1HwIYD/8UlOtFS3QO3w7ey+SdSDFE4HRNLZoZRYVQefrOY3l17epswImeB1ijgJFQJodIaHcwkp3r/myBjFVbg==", + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, - "sinon": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-3.3.0.tgz", - "integrity": "sha512-/flfGfIxIRXSvZBHJzIf3iAyGYkmMQq6SQjA0cx9SOuVuq+4ZPPO4LJtH1Ce0Lznax1KSG1U6Dad85wIcSW19w==", - "dev": true, - "requires": { - "build": "0.1.4", - "diff": "3.2.0", - "formatio": "1.2.0", - "lodash.get": "4.4.2", - "lolex": "2.1.3", - "native-promise-only": "0.8.1", - "nise": "1.1.1", - "path-to-regexp": "1.7.0", - "samsam": "1.3.0", - "text-encoding": "0.6.4", - "type-detect": "4.0.3" - }, - "dependencies": { - "type-detect": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", - "integrity": "sha1-Dj8mcLRAmbC0bChNE2p+9Jx0wuo=", - "dev": true - } + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "dev": true, + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" } }, - "sinon-chai": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/sinon-chai/-/sinon-chai-2.14.0.tgz", - "integrity": "sha512-9stIF1utB0ywNHNT7RgiXbdmen8QDCRsrTjw+G9TgKt1Yexjiv8TOWZ6WHsTPz57Yky3DIswZvEqX8fpuHNDtQ==", - "dev": true - }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, "supports-color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz", - "integrity": "sha1-cqJiiU2dQIuVbKBf83su2KbiotU=", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "3.0.0" } }, - "text-encoding": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/text-encoding/-/text-encoding-0.6.4.tgz", - "integrity": "sha1-45mpgiV6J22uQou5KEXLcb3CbRk=", - "dev": true - }, - "timespan": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/timespan/-/timespan-2.3.0.tgz", - "integrity": "sha1-SQLOBAvRPYRcj1myfp1ZutbzmSk=", - "dev": true - }, - "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", - "dev": true - }, "tslib": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.8.0.tgz", - "integrity": "sha512-ymKWWZJST0/CkgduC2qkzjMOWr4bouhuURNXCn/inEX0L57BnRG6FhX76o7FOnsjHazCjfU2LKeSrlS2sIKQJg==" - }, - "type-detect": { - "version": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "dev": true + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }, "typescript": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.1.tgz", - "integrity": "sha1-7znN6ierrAtQAkLWcmq5DgyEZjE=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.0.1.tgz", + "integrity": "sha512-zQIMOmC+372pC/CCVLqnQ0zSBiY7HHodU7mpQdjiZddek4GMj31I3dUJ7gAs9o65X7mnRma6OokOkc6f9jjfBg==", "dev": true }, "uglify-js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-1.3.5.tgz", - "integrity": "sha1-S1v/+Rhu/7qoiOTJ6UvZ/EyUkp0=", - "dev": true - }, - "underscore": { - "version": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", - "dev": true - }, - "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true, - "requires": { - "makeerror": "1.0.11" - } - }, - "winston": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.0.tgz", - "integrity": "sha1-gIBQuT1SZh7Z+2wms/DIJnCLCu4=", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.7.tgz", + "integrity": "sha512-J0M2i1mQA+ze3EdN9SBi751DNdAXmeFLfJrd/MDIkRc3G3Gbb9OPVSx7GIQvVwfWxQARcYV2DTxIkMyDAk3o9Q==", "dev": true, "requires": { - "async": "1.0.0", - "colors": "1.0.3", - "cycle": "1.0.3", - "eyes": "0.1.8", - "isstream": "0.1.2", - "stack-trace": "0.0.10" - }, - "dependencies": { - "async": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", - "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=", - "dev": true - } + "commander": "2.16.0", + "source-map": "0.6.1" } }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "underscore": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", + "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==", "dev": true }, - "wrench": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/wrench/-/wrench-1.3.9.tgz", - "integrity": "sha1-bxPsNRRTF+spLKX2UxORskQRFBE=", + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true } } diff --git a/package.json b/package.json index 0ad776c..1800194 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "nestedtypes", - "version": "2.1.0-beta.01", + "version": "2.1.4", "main": "./dist/index.js", "module": "./lib/index.js", "types": "./lib/index.d.ts", @@ -25,18 +25,13 @@ "underscore": "*" }, "devDependencies": { - "@types/jquery": "^2.0.48", - "chai": "* <3", - "chai-as-promised": "^5.3.0", - "jquery": "*", - "mocha": "^3.5.3", - "requirejs": "^2.3.5", - "rollup": "^0.50.0", - "rollup-plugin-node-resolve": "^3.0.0", - "rollup-plugin-uglify": "^2.0.1", - "sinon": "^3.3.0", - "sinon-chai": "^2.14.0", - "typescript": "*", + "@types/jquery": "^2.0.49", + "jquery": "^3.3.1", + "rollup": "*", + "rollup-plugin-node-resolve": "*", + "rollup-plugin-sourcemaps": "*", + "rollup-plugin-uglify": "*", + "typescript": "^3.0.1", "underscore": "*" }, "files": [ @@ -47,14 +42,14 @@ ], "license": "MIT", "scripts": { - "test": "node_modules/.bin/mocha tests/nestedtypes/functionality", - "build": "npm run pull && npm run compile", - "pull": "git submodule update --remote && cp -R ./submodules/Type-R/src/* ./src/type-r", + "build": "npm run pull && npm run compile && npm run build:endpoints", + "pull": "git submodule update --remote && cp -R ./submodules/Type-R/src/* ./src/type-r && cp -R ./submodules/Type-R/endpoints/* ./endpoints", "compile": "node_modules/.bin/tsc && ./node_modules/.bin/rollup --config", "deploy": "cp ./dist/* ../observer-frontend/htdocs/js/lib/nested", + "build:endpoints": "cd endpoints/attributes && npm run build && cd ../localStorage && npm run build && cd ../memory && npm run build && cd ../restful && npm run build && cd ../proxy && npm run build", "all": "npm run pull && npm run build && npm run deploy" }, "dependencies": { - "tslib": "^1.8.0" + "tslib": "^1.9.3" } } diff --git a/rollup.config.js b/rollup.config.js index f63c8b8..2393773 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,5 +1,6 @@ import resolve from 'rollup-plugin-node-resolve'; -import uglify from 'rollup-plugin-uglify'; +import { uglify } from 'rollup-plugin-uglify'; +import sourcemaps from 'rollup-plugin-sourcemaps'; export default { input : 'lib/index.js', @@ -12,13 +13,14 @@ export default { globals: { jquery: '$', underscore: '_' - } + }, + sourcemap: true }, plugins: [ resolve(), //for support of `import X from "directory"` rather than verbose `import X from "directory/index"` + sourcemaps(), uglify() ], - sourcemap: true, external: [ 'jquery', diff --git a/src/type-r/collection/commons.ts b/src/type-r/collection/commons.ts index 30df734..b9239d1 100644 --- a/src/type-r/collection/commons.ts +++ b/src/type-r/collection/commons.ts @@ -124,7 +124,7 @@ export function addIndex( index : IdIndex, model : Record ) : void { index[ model.cid ] = model; var id = model.id; - if( id != null ){ + if( id || id === 0 ){ index[ id ] = model; } } @@ -133,7 +133,7 @@ export function addIndex( index : IdIndex, model : Record ) : void { export function removeIndex( index : IdIndex, model : Record ) : void { delete index[ model.cid ]; var id = model.id; - if( id != null ){ + if( id || id === 0 ){ delete index[ id ]; } } diff --git a/src/type-r/collection/index.ts b/src/type-r/collection/index.ts index 6d0fe64..55ff533 100644 --- a/src/type-r/collection/index.ts +++ b/src/type-r/collection/index.ts @@ -90,7 +90,7 @@ export class Collection< R extends Record = Record> extends Transactional implem this.prototype._itemEvents = eventsMap; } - if( definition.comparator ) this.prototype.comparator = definition.comparator; + if( definition.comparator !== void 0 ) this.prototype.comparator = definition.comparator; Transactional.onDefine.call( this, definition ); } @@ -191,6 +191,10 @@ export class Collection< R extends Record = Record> extends Transactional implem } } + forEach( iteratee : ( val : R, key? : number ) => void, context? : any ){ + return this.each( iteratee, context ); + } + every( iteratee : Predicate, context? : any ) : boolean { const fun = toPredicateFunction( iteratee, context ), { models } = this; @@ -316,8 +320,8 @@ export class Collection< R extends Record = Record> extends Transactional implem return copy; } - toJSON() : Object[] { - return this.models.map( model => model.toJSON() ); + toJSON( options? : object ) : any { + return this.models.map( model => model.toJSON( options ) ); } // Apply bulk in-place object update in scope of ad-hoc transaction @@ -345,7 +349,7 @@ export class Collection< R extends Record = Record> extends Transactional implem * `false` cancel live updates. * `json => true | false` - filter updates */ - liveUpdates( enabled : LiveUpdatesOption ) : IOPromise { + liveUpdates( enabled : LiveUpdatesOption ) : IOPromise { if( enabled ){ this.liveUpdates( false ); @@ -359,7 +363,7 @@ export class Collection< R extends Record = Record> extends Transactional implem removed : id => this.remove( id ) }; - return this.getEndpoint().subscribe( this._liveUpdates, this ); + return this.getEndpoint().subscribe( this._liveUpdates, this ).then( () => this ); } else{ if( this._liveUpdates ){ @@ -371,7 +375,7 @@ export class Collection< R extends Record = Record> extends Transactional implem _liveUpdates : object - fetch( a_options : { liveUpdates? : LiveUpdatesOption } & TransactionOptions = {} ) : IOPromise { + fetch( a_options : { liveUpdates? : LiveUpdatesOption } & TransactionOptions = {} ) : IOPromise { const options = { parse : true, ...a_options }, endpoint = this.getEndpoint(); diff --git a/src/type-r/index.ts b/src/type-r/index.ts index 2b58373..09ecf5c 100644 --- a/src/type-r/index.ts +++ b/src/type-r/index.ts @@ -1,14 +1,25 @@ +// Polyfill for IE10. Should fix problems with babel and statics inheritance. +import { tools } from './object-plus' + +declare global { + interface ObjectConstructor { + setPrototypeOf( target : Object, proto : Object ); + } +} + +Object.setPrototypeOf || ( Object.setPrototypeOf = tools.defaults ); + /** * Export everything */ + export * from './object-plus' export * from './collection' export * from './relations' export * from './record' - export * from './transactions' -export { IOEndpoint, IOPromise, createIOPromise } from './io-tools' +export * from './io-tools' // Exported module itself is the global event bus. import { Events } from './object-plus/' diff --git a/src/type-r/io-tools.ts b/src/type-r/io-tools.ts index 403c080..2659c2d 100644 --- a/src/type-r/io-tools.ts +++ b/src/type-r/io-tools.ts @@ -1,6 +1,6 @@ export interface IONode { _endpoint : IOEndpoint - _ioPromise : IOPromise< any > + _ioPromise : IOPromise< this > } export interface IOPromise extends Promise { diff --git a/src/type-r/object-plus/mixins.ts b/src/type-r/object-plus/mixins.ts index a80e66f..086faa0 100644 --- a/src/type-r/object-plus/mixins.ts +++ b/src/type-r/object-plus/mixins.ts @@ -131,6 +131,16 @@ export function definitions( rules : MixinMergeRules ) : ClassDecorator { } } +// Create simple property list decorator +export function propertyListDecorator( listName: string ) : PropertyDecorator { + return function propList(proto, name : string) { + const list = proto.hasOwnProperty( listName ) ? + proto[ listName ] : (proto[ listName ] = (proto[ listName ] || []).slice()); + + list.push(name); + } +} + export function definitionDecorator( definitionKey, value ){ return ( proto : object, name : string ) => { MixinsState @@ -195,11 +205,6 @@ export class MixinsState { // For constructors, merge _both_ static and prototype members. if( typeof mixin === 'function' ){ - if( getBaseClass( mixin ) !== Object ){ - //TODO log error - console.log( 'Mixin error' ); - } - // Merge static members this.mergeObject( this.Class, mixin ); @@ -279,7 +284,7 @@ const dontMix = { function forEachOwnProp( object : object, fun : ( name : string ) => void ){ const ignore = dontMix[ typeof object ]; - for( let name of Object.getOwnPropertyNames( object ) ) { + for( let name of Object.keys( object ) ) { ignore[ name ] || fun( name ); } } diff --git a/src/type-r/object-plus/tools.ts b/src/type-r/object-plus/tools.ts index 7a2e470..479646d 100644 --- a/src/type-r/object-plus/tools.ts +++ b/src/type-r/object-plus/tools.ts @@ -6,6 +6,25 @@ * exported [[log]] variable. */ + /** Similar to underscore `_.defaults` */ +export function defaults< T >( dest : T, ...sources : Object[] ) : T +export function defaults< T >( dest : T, source : Object ) : T { + for( var name in source ) { + if( source.hasOwnProperty( name ) && !dest.hasOwnProperty( name ) ) { + dest[ name ] = source[ name ]; + } + } + + if( arguments.length > 2 ){ + for( let i = 2; i < arguments.length; i++ ){ + const other = arguments[ i ]; + other && defaults( dest, other ); + } + } + + return dest; +} + // Logger is the function. export type Logger = ( level : LogLevel, error : string, props? : object ) => void; @@ -57,11 +76,28 @@ log.level = typeof process !== 'undefined' && process.env && process.env.NODE_EN log.throw = 0; log.stop = 0; + +let toString = typeof window === 'undefined' ? + function toString( something ){ + if( something && typeof something === 'object' ){ + const value = something.__inner_state__ || something, + isTransactional = Boolean( something.__inner_state__ ), + isArray = Array.isArray( value ); + + const keys = Object.keys( value ).join( ', ' ), + body = isArray ? `[ length = ${ value.length } ]` : `{ ${ keys } }`; + + return something.constructor.name + ' ' + body; + } + + return something; + } : function toString( x ){ return x; }; + if( typeof console !== 'undefined' ) { log.logger = function _console( level : LogLevel, error : string, props : object ){ const args = [ error ]; for( let name in props ){ - args.push( `\n\t${name}:`, props[ name ] ); + args.push( `\n\t${name}:`, toString( props[ name ] ) ); } console[ level ].apply( console, args ); @@ -242,34 +278,6 @@ export function assign< T >( dest : T, source : Object ) : T { return dest; } -/** Similar to underscore `_.defaults` */ -export function defaults< T >( dest : T, ...sources : Object[] ) : T -export function defaults< T >( dest : T, source : Object ) : T { - for( var name in source ) { - if( source.hasOwnProperty( name ) && !dest.hasOwnProperty( name ) ) { - dest[ name ] = source[ name ]; - } - } - - if( arguments.length > 2 ){ - for( let i = 2; i < arguments.length; i++ ){ - const other = arguments[ i ]; - other && defaults( dest, other ); - } - } - - return dest; -} - -// Polyfill for IE10. Should fix problems with babel and statics inheritance. -declare global { - interface ObjectConstructor { - setPrototypeOf( target : Object, proto : Object ); - } -} - -Object.setPrototypeOf || ( Object.setPrototypeOf = defaults ); - /** Similar to underscore `_.keys` */ export function keys( o : any ) : string[]{ return o ? Object.keys( o ) : []; diff --git a/src/type-r/record/attributes/any.ts b/src/type-r/record/attributes/any.ts index 3defbf8..3a8a163 100644 --- a/src/type-r/record/attributes/any.ts +++ b/src/type-r/record/attributes/any.ts @@ -104,8 +104,8 @@ export class AnyType implements AttributeUpdatePipeline { validate( record : AttributesContainer, value : any, key : string ){} - toJSON( value, key ) { - return value && value.toJSON ? value.toJSON() : value; + toJSON( value, key, options? : object ) { + return value && value.toJSON ? value.toJSON( options ) : value; } createPropertyDescriptor() : PropertyDescriptor | void { @@ -181,8 +181,6 @@ export class AnyType implements AttributeUpdatePipeline { return this.value; } - parse : Parse - constructor( public name : string, a_options : AttributeOptions ) { // Save original options... this.options = a_options; @@ -232,9 +230,6 @@ export class AnyType implements AttributeUpdatePipeline { // `convert` is default transform, which is always present... transforms.unshift( this.convert ); - // Attribute-level parse transform must always go first... - this.parse = parse || this.parse; - // Get hook from the attribute will be used first... if( this.get ) getHooks.unshift( this.get ); @@ -254,6 +249,16 @@ export class AnyType implements AttributeUpdatePipeline { this.transform = transforms.length ? transforms.reduce( chainTransforms ) : this.transform; this.handleChange = changeHandlers.length ? changeHandlers.reduce( chainChangeHandlers ) : this.handleChange; + + // Attribute-level parse transform are attached as update hooks modifiers... + const { doInit, doUpdate } = this; + this.doInit = parse ? function( value, record : AttributesContainer, options : TransactionOptions ){ + return doInit.call( this, options.parse && value !== void 0 ? parse.call( record, value, this.name ) : value, record, options ); + } : doInit; + + this.doUpdate = parse ? function( value, record : AttributesContainer, options : TransactionOptions, nested? : RecordTransaction[] ){ + return doUpdate.call( this, options.parse && value !== void 0 ? parse.call( record, value, this.name ) : value, record, options, nested ); + } : doUpdate; } getHook : ( value, key : string ) => any = null diff --git a/src/type-r/record/attributes/attrDef.ts b/src/type-r/record/attributes/attrDef.ts index a1b2da6..f538d5b 100644 --- a/src/type-r/record/attributes/attrDef.ts +++ b/src/type-r/record/attributes/attrDef.ts @@ -47,6 +47,8 @@ export class ChainableAttributeSpec { return definitionDecorator( 'attributes', this ); } + get as(){ return this.asProp; } + get isRequired() : ChainableAttributeSpec { return this.metadata({ isRequired : true }); } @@ -66,7 +68,7 @@ export class ChainableAttributeSpec { toJSON( fun ) : ChainableAttributeSpec { return this.metadata({ - toJSON : typeof fun === 'function' ? fun : ( fun ? x => x && x.toJSON() : emptyFunction ) + toJSON : typeof fun === 'function' ? fun : ( fun ? ( x, k, o ) => x && x.toJSON( o ) : emptyFunction ) }); } @@ -126,10 +128,44 @@ export class ChainableAttributeSpec { value( x ) : ChainableAttributeSpec { return this.metadata({ value : x, hasCustomDefault : true }); } + + static from( spec : any ) : ChainableAttributeSpec { + let attrSpec : ChainableAttributeSpec; + + if( typeof spec === 'function' ) { + attrSpec = spec.has; + } + else if( spec && spec instanceof ChainableAttributeSpec ) { + attrSpec = spec; + } + else{ + // Infer type from value. + const type = inferType( spec ); + + // Transactional types inferred from values must have shared type. + if( type && type.prototype instanceof Transactional ){ + attrSpec = (type).shared.value( spec ); + } + // All others will be created in regular way. + else{ + attrSpec = new ChainableAttributeSpec({ type : type, value : spec, hasCustomDefault : true }); + } + } + + return attrSpec; + } } function emptyFunction(){} +export function type( this : void, spec : ChainableAttributeSpec | Function ) : ChainableAttributeSpec { + return spec instanceof ChainableAttributeSpec ? spec : new ChainableAttributeSpec( { + type : spec, + value : spec._attribute.defaultValue, + hasCustomDefault : spec._attribute.defaultValue !== void 0 + } );; +} + declare global { interface Function{ value : ( x : any ) => ChainableAttributeSpec; @@ -155,42 +191,12 @@ Object.defineProperty( Function.prototype, 'asProp', { Object.defineProperty( Function.prototype, 'has', { get() { // workaround for sinon.js and other libraries overriding 'has' - return this._has || new ChainableAttributeSpec( { - type : this, - value : this._attribute.defaultValue, - hasCustomDefault : this._attribute.defaultValue !== void 0 - } ); + return this._has || type( this ); }, set( value ) { this._has = value; } } ); -export function toAttributeOptions( spec : any ) : AttributeOptions { - let attrSpec : ChainableAttributeSpec; - - if( typeof spec === 'function' ) { - attrSpec = spec.has; - } - else if( spec && spec instanceof ChainableAttributeSpec ) { - attrSpec = spec; - } - else{ - // Infer type from value. - const type = inferType( spec ); - - // Transactional types inferred from values must have shared type. - if( type && type.prototype instanceof Transactional ){ - attrSpec = (type).shared.value( spec ); - } - // All others will be created in regular way. - else{ - attrSpec = new ChainableAttributeSpec({ type : type, value : spec, hasCustomDefault : true }); - } - } - - return attrSpec.options; -} - function inferType( value : {} ) : Function { switch( typeof value ) { case 'number' : diff --git a/src/type-r/record/attributes/basic.ts b/src/type-r/record/attributes/basic.ts index 1c0aef6..f82b029 100644 --- a/src/type-r/record/attributes/basic.ts +++ b/src/type-r/record/attributes/basic.ts @@ -24,8 +24,8 @@ class ImmutableClassType extends AnyType { return next == null || next instanceof this.type ? next : new this.type( next ); } - toJSON( value ){ - return value && value.toJSON ? value.toJSON() : value; + toJSON( value, key? : string, options? : object ){ + return value && value.toJSON ? value.toJSON( options ) : value; } clone( value ) { diff --git a/src/type-r/record/attributes/index.ts b/src/type-r/record/attributes/index.ts index c43bb40..07226c5 100644 --- a/src/type-r/record/attributes/index.ts +++ b/src/type-r/record/attributes/index.ts @@ -10,7 +10,7 @@ export * from './attrDef' import { AnyType } from './any' import { ConstructorsMixin, constructorsMixin } from './updates' -import { toAttributeOptions, ChainableAttributeSpec } from './attrDef' +import { ChainableAttributeSpec } from './attrDef' import { CompiledReference } from '../../traversable' import { IOEndpoint } from '../../io-tools' @@ -22,9 +22,6 @@ export interface RecordAttributesMixin extends ConstructorsMixin { // Attribute's property descriptors properties : PropertyDescriptorMap - // Attributes serialization - _toJSON() : any - // Event map for record's local events. _localEvents? : eventsApi.EventMap, @@ -47,8 +44,6 @@ export default function( attributesDefinition : object, baseClassAttributes : At _attributes : new ConstructorsMixin.AttributesCopy( allAttributes ), _attributesArray : Object.keys( allAttributes ).map( key => allAttributes[ key ] ), properties : _.transform( {}, myAttributes, x => x.createPropertyDescriptor() ), - _toJSON : createToJSON( allAttributes ), - ...parseMixin( allAttributes ), ...localEventsMixin( myAttributes ), _endpoints : _.transform( {}, allAttributes, attrDef => attrDef.options.endpoint ) } @@ -56,39 +51,7 @@ export default function( attributesDefinition : object, baseClassAttributes : At // Create attribute from the type spec. export function createAttribute( spec : any, name : string ) : AnyType { - return AnyType.create( toAttributeOptions( spec ), name ); -} - -function parseMixin( attributes : AttributeDescriptors ){ - const attrsWithParse = Object.keys( attributes ).filter( name => attributes[ name ].parse ); - - return attrsWithParse.length ? { - _parse : new Function( 'json', ` - var _attrs = this._attributes; - - ${ attrsWithParse.map( name => ` - json.${ name } === void 0 || ( json.${ name } = _attrs.${ name }.parse.call( this, json.${ name }, "${ name }" ) ); - ` ).join('')} - - return json; - ` ) - } : {}; -} - -function createToJSON( attributes : AttributeDescriptors ) : () => void { - return new Function(` - var json = {}, - v = this.attributes, - a = this._attributes; - - ${ Object.keys( attributes ).map( key => { - if( attributes[ key ].toJSON ){ - return `json.${key} = a.${key}.toJSON.call( this, v.${ key }, '${key}' );`; - } - } ).join( '\n' ) } - - return json; - `) as any; + return AnyType.create( ChainableAttributeSpec.from( spec ).options, name ); } export function createSharedTypeSpec( Constructor : Function, Attribute : typeof AnyType ){ diff --git a/src/type-r/record/attributes/owned.ts b/src/type-r/record/attributes/owned.ts index 5b4a0f3..ba2bcb9 100644 --- a/src/type-r/record/attributes/owned.ts +++ b/src/type-r/record/attributes/owned.ts @@ -13,7 +13,7 @@ export class AggregatedType extends AnyType { return value ? value.clone() : value; } - toJSON( x ){ return x && x.toJSON(); } + toJSON( x, key : string, options : object ){ return x && x.toJSON( options ); } doInit( value, record : AttributesContainer, options : ConstructorOptions ){ const v = options.clone ? this.clone( value ) : ( diff --git a/src/type-r/record/index.ts b/src/type-r/record/index.ts index 128e40f..b47b8e0 100644 --- a/src/type-r/record/index.ts +++ b/src/type-r/record/index.ts @@ -1,6 +1,6 @@ import { Record, RecordDefinition } from './record' import { Mixable, tools, predefine, define, MixinsState } from '../object-plus' -import compile from './attributes' +import compile, { ChainableAttributeSpec } from './attributes' import { Transactional } from '../transactions' import { createSharedTypeSpec, AggregatedType, MSDateType, TimestampType, NumericType, SharedType } from './attributes' @@ -70,7 +70,9 @@ function getAttributes({ defaults, attributes, idAttribute } : RecordDefinition declare var Reflect; -export function attr( proto, attrName? ) : any { +export function attr( proto : object, attrName : string ) : void; +export function attr( spec : any ) : PropertyDecorator; +export function attr( proto, attrName? : string ) : any { if( attrName ){ // Called without the spec. Extract the type. if( typeof Reflect !== 'undefined' && Reflect.getMetadata ){ @@ -83,7 +85,7 @@ export function attr( proto, attrName? ) : any { } } else{ - return proto.asProp; + return ChainableAttributeSpec.from( proto ).asProp; } } diff --git a/src/type-r/record/io-mixin.ts b/src/type-r/record/io-mixin.ts index 1a715c5..29e9b10 100644 --- a/src/type-r/record/io-mixin.ts +++ b/src/type-r/record/io-mixin.ts @@ -2,10 +2,10 @@ import { getOwnerEndpoint, startIO, IOOptions, IOEndpoint, IOPromise, IONode } f export interface IORecord extends IONode { getEndpoint() : IOEndpoint - save( options? : IOOptions ) : IOPromise - fetch( options? : IOOptions ) : IOPromise - destroy( options? : IOOptions ) : IOPromise - toJSON() : any + save( options? : IOOptions ) : IOPromise + fetch( options? : IOOptions ) : IOPromise + destroy( options? : IOOptions ) : IOPromise + toJSON( options? : object ) : any isNew() : boolean id : string | number set( json : object, options : object ) @@ -14,7 +14,7 @@ export interface IORecord extends IONode { export const IORecordMixin = { save( this : IORecord, options : IOOptions = {} ){ const endpoint = this.getEndpoint(), - json = this.toJSON(); + json = this.toJSON( options ); return startIO( this, @@ -53,6 +53,8 @@ export const IORecordMixin = { else{ this.dispose(); } + + return this; } ) } diff --git a/src/type-r/record/record.ts b/src/type-r/record/record.ts index 99c4f5c..873fb0b 100644 --- a/src/type-r/record/record.ts +++ b/src/type-r/record/record.ts @@ -78,10 +78,10 @@ export class Record extends Transactional implements IORecord, AttributesContain _endpoints : { [ name : string ] : IOEndpoint } // Save record - save( options? : object ) : IOPromise { throw new Error( 'Implemented by mixin' ); } + save( options? : object ) : IOPromise { throw new Error( 'Implemented by mixin' ); } // Destroy record - destroy( options? : object ) : IOPromise { throw new Error( 'Implemented by mixin' ); } + destroy( options? : object ) : IOPromise { throw new Error( 'Implemented by mixin' ); } /*********************************** * Core Members @@ -265,12 +265,6 @@ export class Record extends Transactional implements IORecord, AttributesContain return this.map( value => value ); } - // Attributes-level serialization - _toJSON(){ return {}; } - - // Attributes-level parse - _parse( data ){ return data; } - // Create record default values, optionally augmenting given values. defaults( values = {} ){ const defaults = {}, @@ -347,14 +341,14 @@ export class Record extends Transactional implements IORecord, AttributesContain */ // Default record-level serializer, to be overriden by subclasses - toJSON() : Object { + toJSON( options? : object ) : any { const json = {}; this.forEachAttr( this.attributes, ( value, key : string, { toJSON } ) =>{ // If attribute serialization is not disabled, and its value is not undefined... if( value !== void 0 ){ // ...serialize it according to its spec. - const asJson = toJSON.call( this, value, key ); + const asJson = toJSON.call( this, value, key, options ); // ...skipping undefined values. Such an attributes are excluded. if( asJson !== void 0 ) json[ key ] = asJson; @@ -366,10 +360,12 @@ export class Record extends Transactional implements IORecord, AttributesContain // Default record-level parser, to be overriden by the subclasses. parse( data, options? : TransactionOptions ){ - // Call dynamically compiled loop-unrolled attribute-level parse function. - return this._parse( data ); + return data; } + // DEPRECATED: Attributes-level parse. Is moved to attribute descriptors. + _parse( data ){ return data; } + /** * Transactional control */ diff --git a/src/type-r/relations/subsetOf.ts b/src/type-r/relations/subsetOf.ts index cc961b0..0e21d1e 100644 --- a/src/type-r/relations/subsetOf.ts +++ b/src/type-r/relations/subsetOf.ts @@ -41,7 +41,7 @@ function defineSubsetCollection( CollectionConstructor : typeof Collection ) { } // Remove should work fine as it already accepts ids. Add won't... - add( a_elements, options? ){ + add( a_elements, options = {} ){ const { resolvedWith } = this, toAdd = toArray( a_elements ); @@ -65,7 +65,7 @@ function defineSubsetCollection( CollectionConstructor : typeof Collection ) { } } - reset( a_elements?, options? ){ + reset( a_elements?, options = {} ){ const { resolvedWith } = this, elements = toArray( a_elements ); @@ -97,6 +97,10 @@ function defineSubsetCollection( CollectionConstructor : typeof Collection ) { // Subset is always valid. _validateNested(){ return 0; } + get length() : number { + return this.models.length || ( this.refs ? this.refs.length : 0 ); + } + // Must be shallow copied on clone. clone( owner? ){ var Ctor = (this).constructor, @@ -106,6 +110,7 @@ function defineSubsetCollection( CollectionConstructor : typeof Collection ) { }); if( this.resolvedWith ){ + // TODO: bug here. copy.resolvedWith = this.resolvedWith; copy.refs = null; copy.reset( this.models, { silent : true } ); diff --git a/src/type-r/transactions.ts b/src/type-r/transactions.ts index b814067..915af16 100644 --- a/src/type-r/transactions.ts +++ b/src/type-r/transactions.ts @@ -31,6 +31,7 @@ export enum ItemsBehavior { export abstract class Transactional implements Messenger, IONode, Validatable, Traversable { // Mixins are hard in TypeScript. We need to copy type signatures over... // Here goes 'Mixable' mixin. + static endpoint : IOEndpoint; static __super__ : object; static mixins : MixinsState; static define : ( definition? : TransactionalDefinition, statics? : object ) => typeof Transactional; @@ -180,7 +181,19 @@ export abstract class Transactional implements Messenger, IONode, Validatable, T // Assign transactional object "by value", copying aggregated items. assignFrom( source : Transactional | Object ) : this { - return this.set( ( source ).__inner_state__ || source, { merge : true } ); + // Need to delay change events until change token willl by synced. + this.transaction( () =>{ + this.set( ( source ).__inner_state__ || source, { merge : true } ); + + // Synchronize change tokens + const { _changeToken } = source as any; + + if( _changeToken ){ + this._changeToken = _changeToken; + } + }); + + return this; } // Apply bulk object update without any notifications, and return open transaction. @@ -193,7 +206,7 @@ export abstract class Transactional implements Messenger, IONode, Validatable, T parse( data : any, options? : TransactionOptions ) : any { return data } // Convert object to the serializable JSON structure - abstract toJSON() : {} + abstract toJSON( options? : object ) : {} /******************* * Traversals and member access @@ -246,11 +259,11 @@ export abstract class Transactional implements Messenger, IONode, Validatable, T } _endpoint : IOEndpoint - _ioPromise : IOPromise + _ioPromise : IOPromise - hasPendingIO() : IOPromise { return this._ioPromise; } + hasPendingIO() : IOPromise { return this._ioPromise; } - fetch( options? : object ) : IOPromise { throw new Error( "Not implemented" ); } + fetch( options? : object ) : IOPromise { throw new Error( "Not implemented" ); } getEndpoint() : IOEndpoint { return getOwnerEndpoint( this ) || this._endpoint; diff --git a/src/type-r/traversable.ts b/src/type-r/traversable.ts index 19ac3f6..f0e3974 100644 --- a/src/type-r/traversable.ts +++ b/src/type-r/traversable.ts @@ -12,7 +12,7 @@ export interface Traversable { get( key : string ) : any } -const referenceMask = /\^|([^.]+)/g; +const referenceMask = /\^|(store\.[^.]+)|([^.]+)/g; // Compile reference to function export type ResolveReference = ( root : Traversable ) => any; @@ -26,19 +26,27 @@ export class CompiledReference { const path = reference .match( referenceMask ) .map( key => { - if( key === '^' ) return 'getOwner()'; + if( key === '^' || key === 'owner' ) return 'getOwner()'; if( key[ 0 ] === '~' ) return `getStore().get("${ key.substr( 1 ) }")`; + + if( key.indexOf( 'store.' ) === 0 ) return `getStore().get("${ key.substr( 6 ) }")`; return key; } ); this.tail = splitTail && path.pop(); this.local = !path.length; - - path.unshift( 'self' ); - this.resolve = new Function( 'self', `return ${ path.join('.') };` ); + this.resolve = new Function( 'self', ` + var v = self.${ path.shift() }; + + ${ path.map( x => ` + v = v && v.${ x }; + `).join('')} + + return v; + ` ); } } diff --git a/submodules/Type-R b/submodules/Type-R index 3255b27..7edd1e4 160000 --- a/submodules/Type-R +++ b/submodules/Type-R @@ -1 +1 @@ -Subproject commit 3255b2744e20831ab67841271049ee88f56495e3 +Subproject commit 7edd1e49cb024ef674a870072943de3ff602ccba diff --git a/tests/nestedtypes/README.md b/tests/nestedtypes/README.md deleted file mode 100644 index 5b00830..0000000 --- a/tests/nestedtypes/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# NestedTypes 1.3 Regression Tests - -Tests suite taken as is from NestedTypes 1.3.X. Used for basic regression testing. - -As usual, an ultimate regression is an ability to run Volicon Observer product (SPA of ~100 KLOCs) with the recent version of the framework. - -## To run - -- Do `npm install` -- Open `index.html` for functional tests -- Open `performance.html` for performance test vs `backbonejs` \ No newline at end of file diff --git a/tests/nestedtypes/functionality/README.md b/tests/nestedtypes/functionality/README.md deleted file mode 100644 index 2252d4b..0000000 --- a/tests/nestedtypes/functionality/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Deprecated features list - -- .trigger( "a b c ") is deprecated. -- 'replace:attr' event is deprecated. -- Array attribute casts wrong types to an empty array, and prints the warning. \ No newline at end of file diff --git a/tests/nestedtypes/functionality/advanced.js b/tests/nestedtypes/functionality/advanced.js deleted file mode 100644 index 3dab960..0000000 --- a/tests/nestedtypes/functionality/advanced.js +++ /dev/null @@ -1,288 +0,0 @@ -var Nested = require( '../nestedtypes' ), - expect = require( 'chai' ).expect, - sinon = require( 'sinon' ); - -var Model = Nested.Model, Collection = Nested.Collection; - -describe( 'Advanced functionality', function(){ - var M = Model.extend({ - attributes : { - name : String - } - }); - - describe( 'Model.shared attribute', function(){ - var A = Model.extend({ - attributes : { - shared : M.shared, - owned : M - } - }); - - it( 'initialized with null', function(){ - var a = new A(); - expect( a.shared ).to.equal( null ); - } ); - - it( "Record don't attempt to take ownership on shared attributes", function(){ - var a = new A(); - var m = new M(); - a.shared = m; - expect( m._owner ).to.equal( void 0 ); - } ); - - it( "can be assigned with owned model", function(){ - var a = new A(), b = new A(); - - a.shared = b.owned; - expect( a.shared._owner ).to.equal( b ); - }); - - it( "Internal changes are tracked and cause owner 'change' event.", function(){ - var a = new A(), b = new A(); - a.shared = b.owned; - - var callback = sinon.spy(); - a.on( 'change', callback ); - b.owned.name = "Haha!"; - expect( a.shared.name ).to.equal( 'Haha!' ); - expect( callback ).to.be.calledOnce; - } ); - - it( "Can be updated in place", function(){ - var a = new A(), b = new A(); - a.shared = b.owned; - - a.set({ shared : { name : "noway" } } ); - expect( a.shared.name ).to.equal( 'noway' ); - expect( a.shared ).to.equal( b.owned ); - } ); - - it( "is converted to the aggregated model on assignment", function(){ - var a = new A(); - a.shared = { name : 'Hey' }; - expect( a.shared.name ).to.equal( 'Hey' ); - expect( a.shared._owner ).to.equal( a ); - } ); - - it( "is not serialized", function(){ - var a = new A(); - a.shared = { name : 'Hey' }; - expect( a.toJSON() ).to.eql({ owned : { name : "" }}); - }); - }); - - describe( 'Collection.shared attribute', function(){ - var A = Model.extend({ - attributes : { - sharedC : M.Collection.shared, - ownedC : M.Collection - } - }); - - it( 'initialized with null', function(){ - var a = new A(); - expect( a.sharedC ).to.equal( null ); - } ); - - it( "Record don't attempt to take ownership on shared attributes", function(){ - var a = new A(); - var m = new M.Collection(); - a.coll = m; - expect( m._owner ).to.equal( void 0 ); - } ); - - it( "can be assigned with owned model", function(){ - var a = new A(), b = new A(); - - a.sharedC = b.ownedC; - expect( a.sharedC._owner ).to.equal( b ); - }); - - it( "Internal changes are tracked and cause owner 'change' event.", function(){ - var a = new A(), b = new A(); - a.sharedC = b.ownedC; - - var callback = sinon.spy(); - a.on( 'change', callback ); - b.ownedC.add({ name : "Haha!" }); - expect( a.sharedC.first().name ).to.equal( 'Haha!' ); - b.ownedC.first().name = "1"; - expect( callback ).to.be.calledTwice; - } ); - - it( "Can be updated in place", function(){ - var a = new A(), b = new A(); - a.sharedC = b.ownedC; - - a.set({ sharedC : [ { name : "noway" } ] } ); - expect( a.sharedC.first().name ).to.equal( 'noway' ); - expect( a.sharedC ).to.equal( b.ownedC ); - } ); - - it( "is converted to the owned Refs collection on assignment", function(){ - var a = new A(); - a.sharedC = [{ name : 'Hey' }]; - expect( a.sharedC.first().name ).to.equal( 'Hey' ); - expect( a.sharedC._owner ).to.equal( a ); - - var callback = sinon.spy(); - a.on( 'change', callback ); - a.sharedC.first().name = "Haha!"; - expect( callback ).to.be.calledOnce; - } ); - - it( "is not serialized", function(){ - var a = new A(); - a.sharedC = [{ name : 'Hey' }]; - expect( a.toJSON() ).to.eql({ ownedC : []}); - }); - }); - - describe( 'Collection.Refs', function(){ - var M = Model.extend({ - attributes : { - name : String - } - }); - - var A = Model.extend({ - attributes : { - subset : M.Collection.Refs, - aggregated : M.Collection - } - }); - - it( 'inherits from collection type', function(){ - expect( Collection.Subset.prototype ).to.equal( Collection.prototype ); - - var M = Model.extend({}); - - expect( M.Collection ).to.not.equal( Collection ); - expect( M.Collection.prototype ).to.be.instanceOf( Collection ); - expect( M.Collection.Subset.prototype ).to.equal( M.Collection.prototype ); - } ); - - it( "doesn't take ownership on its elements", function(){ - var a = new A(); - - a.subset.set([ { name : '1'}, { name : '2'} ]); - a.aggregated.set( a.subset.models ); - expect( a.aggregated.first()._owner ).to.equal( a.aggregated ); - } ); - - it( 'is owned by parent', function(){ - var a = new A(); - expect( a.subset._owner ).to.equal( a ); - }); - - it( 'behaves as shared type', function(){ - var a = new A(); - - var { subset } = a; - a.subset = a.aggregated; - - expect( subset._owner ).to.be.undefined; - - a.subset = new M.Collection(); - - expect( a.subset._owner ).to.be.undefined; - - a.subset = null; - a.subset = []; - - expect( a.subset._owner ).to.equal( a ); - }); - - it( "doesn't merge records on set", function(){ - var a = new A(); - - a.subset.set([ { id : 1, name : '1'}, { id : 2, name : '2'} ]); - var f = a.subset.get( 1 ); - a.subset.set([ { id : 1, name : '3'}, { id : 2, name : '4'} ]); - - expect( a.subset.get( 1 ).name ).to.equal( '1' ); - }); - - it( 'is not serializable', function(){ - var a = new A(); - a.aggregated = [ { name : '1' }]; - expect( a.toJSON() ).to.eql({ aggregated : [ { name : '1' }] }); - }); - }); - - describe( 'Attribute .has options', function(){ - it( 'Pass through an attribute descriptor', function(){ - var T = Number.has, - T2 = T.has; - - expect( T ).to.equal( T2 ); - } ); - - describe( '.has.changeEvents( false )', function(){ - var M = Model.extend({ - attributes : { - a : Model.defaults({ - x : 1 - }).has.changeEvents( false ), - - b : Model.shared.changeEvents( false ) - }, - - initialize(){ - this.b = this.a; - } - }); - - it( 'disables change events for an attribute', function(){ - var m = new M(); - var token = m._changeToken; - m.a.x = 2; - expect( token ).to.equal( m._changeToken ); - } ); - - it( 'disables change events in case of nested transaction', function(){ - var m = new M(); - var token = m._changeToken; - m.set({ a : { x : 2 } }); - expect( token ).to.equal( m._changeToken ); - } ); - }); - }); - - it( 'can filter aggregated collection', function(){ - const c = new M.Collection( { name : 'a' }, { name : 'b' } ); - c.reset( c.last() ); - expect( c.first()._owner ).to.equal( c ); - }); - - it( 'model.clone() should clean up an owner', function(){ - const c = new M.Collection( { name : 'a' }, { name : 'b' } ); - - expect( c.first()._owner ).to.be.eql( c ); - expect( c.first().clone()._owner ).to.be.eql( void 0 ); - }); - - describe( 'Different bugs', function(){ - const M = Model.extend({ - attributes : { - name : '' - }, - - collection : { - comparator : 'name' - } - }); - - it( 'Collection sorts on set when nothing changed', function(){ - const c = new M.Collection(); - - c.set( [ { id : 1, name : 'b' }, { id : 2, name : 'a' } ] ); - expect( c.first().name ).to.be.equal( 'a' ); - - c.set( [ { id : 1, name : 'b' }, { id : 2, name : 'a' } ] ); - expect( c.first().name ).to.be.equal( 'a' ); - }); - - }); -}); diff --git a/tests/nestedtypes/functionality/backboneTypes.js b/tests/nestedtypes/functionality/backboneTypes.js deleted file mode 100644 index 351a843..0000000 --- a/tests/nestedtypes/functionality/backboneTypes.js +++ /dev/null @@ -1,280 +0,0 @@ - var Nested = require( '../nestedtypes' ), - expect = require( 'chai' ).expect, - _ = require( 'underscore' ), - sinon = require( 'sinon' ); - - describe( 'Nested Models and Collections', function(){ - function shouldFireChangeOnce( model, attr, todo ){ - var change = sinon.spy(), - attrs = attr.split( ' ' ); - - model.on( 'change', change ); - - var changeAttrs = _.map( attrs, function( name ){ - var changeName = sinon.spy(); - model.on( 'change:' + name, changeName ); - return changeName; - }); - - todo( model ); - - expect( change ).to.be.calledOnce; - model.off( change ); - - _.each( changeAttrs, function( spy ){ - expect( spy ).to.be.calledOnce; - model.off( spy ); - }); - } - - var A = Nested.Model.extend({ - attributes : { - a : 1, - b : 2 - } - }); - - var B = Nested.Model.extend({ - attributes :{ - first : A.has.parse( function( resp ){ - return { a : resp.a + 1, b : resp.b + 1 }; - }), - second : A.has.changeEvents( false ), - c : A.Collection - } - }); - - function createSpies(){ - var collection = sinon.spy(), - model = sinon.spy(); - - A.Collection.prototype.parse = function( data ){ - collection(); - return data; - }; - - A.prototype.parse = function( data ){ - model(); - return data; - }; - - return { model : model, collection : collection }; - } - - describe( 'Nested parse method', function(){ - describe( 'Nested model', function(){ - it( 'set _owner property', function(){ - var m = new B(); - - expect( m.first._owner ).to.eql( m ); - expect( m.c._owner ).to.eql( m ); - - var a = new A(); - var _first = m.first; - m.first = a; - expect( _first._owner ).to.not.ok; - expect( m.first._owner ).to.eql( m ); - }); - - it( 'invoke "parse" on construction', function(){ - var spies = createSpies(); - - var m = new B({ - first : {id : 1, a : 2, b : 2} - }, { parse : true }); - - expect( spies.model ).to.be.calledOnce; - expect( m.first.a ).to.eql( 3 ); - expect( m.first.b ).to.eql( 3 ); - }); - - it( 'invoke "parse" on set', function(){ - var spies = createSpies(); - - var m = new B(); - m.set( 'first', {id : 1, a : 2, b : 2}, { parse : true }); - - expect( spies.model ).to.be.calledOnce; - }); - - it( 'invoke "parse" on set when value is nul' , function(){ - var spies = createSpies(); - - var m = new B({ first : null }); - m.set( 'first', {id : 1, a : 1, b : 2}, { parse : true } ); - expect( spies.model ).to.be.calledOnce; - }); - }); - - describe( 'Nested collection', function(){ - - it( 'invoke "parse" on construction', function(){ - var spies = createSpies(); - - var m = new B({ - c : [{id : 1, a : 2, b : 2}] - }, { parse : true }); - - expect( spies.collection ).to.be.calledOnce; - expect( spies.model ).to.be.calledOnce; - }); - - it( 'invoke "parse" on set', function(){ - var spies = createSpies(); - - var m = new B(); - m.set( 'c', [{id : 1, a : 1, b : 2}], { parse : true } ); - - expect( spies.collection ).to.be.calledOnce; - expect( spies.model ).to.be.calledOnce; - }); - - it( 'invoke "parse" on set when value is null', function(){ - var spies = createSpies(); - - var m = new B({ c : null }); - m.set( 'c', [{id : 1, a : 1, b : 2}], { parse : true } ); - - expect( spies.collection ).to.be.calledOnce; - expect( spies.model ).to.be.calledOnce; - }); - }) - }); - - describe( 'Nested.Model attribute type cast on assignment', function(){ - describe( 'when current attribute value is not null (deep update)', function(){ - - it( 'delegate update to nested model\'s .set', function(){ - var m = new B(), - id = m.first.cid; - - m.first = {id : 1, a : 1, b : 2}; - - expect( id ).to.eql( m.first.cid ); - expect( m.first.id ).to.eql( 1 ); - }); - - it( 'triggers single "change" and single "change:attr" events if nested model is changed', function(){ - var m = new B(); - shouldFireChangeOnce( m, 'first', function(){ - m.first = {id : 1, a : 1, b : 2}; - }); - } ); - }); - - describe( 'when current attribute value is empty (null)', function(){ - - it( 'creates new model', function(){ - var m = new B({ first : null }); - m.first = { id : 1, a : 1, b : 2 }; - expect( m.first.id ).to.eql( 1 ); - }); - - it( 'triggers "change", "change:attr" events', function(){ - var m = new B({ first : null } ); - - shouldFireChangeOnce( m, 'first', function(){ - m.first = {id : 1, a : 1, b : 2}; - }); - }); - }); - }); - - describe( 'Nested.Collection attribute type cast on assignment', function(){ - describe( 'when current attribute value is not null (deep update)', function(){ - it( 'delegate update to nested collection\'s .set', function(){ - var m = new B(), - id = m.c._listenId; - - m.c = [{id : 1, a : 1, b : 2}]; - - expect( id ).to.eql( m.c._listenId ); - expect( m.c.first().id ).to.eql( 1 ); - }); - - - it( 'triggers single "change" and single "change:attr" events when nested collection is changed', function(){ - var m = new B(); - shouldFireChangeOnce( m, 'c', function(){ - m.c = [{id : 1, a : 1, b : 2}]; - }); - }); - }); - - describe( 'when current attribute value is empty (null)', function(){ - it( 'creates new collection', function(){ - var m = new B({ c : null }); - m.c = [{id : 1, a : 1, b : 2}]; - expect( m.c.first().id ).to.eql( 1 ); - }); - - it( 'triggers "change", "change:attr", events', function(){ - var m = new B({ c : null } ); - - shouldFireChangeOnce( m, 'c', function(){ - m.c = [{id : 1, a : 1, b : 2}]; - }); - }); - }); - }); - - describe( 'nested model and collection event bubbling', function(){ - it( 'bubble "change" event from nested model', function(){ - var m = new B(); - - shouldFireChangeOnce( m, 'first', function(){ - m.first.a = 2; - }); - }); - - it( 'send single "change" event in a transaction', function(){ - var m = new B(); - - shouldFireChangeOnce( m, 'first', function(){ - m.first.transaction( function( first ){ - first.a = 7; - first.b = 7; - }); - }); - }); - - it( 'send single "change" event in a nested transaction', function(){ - var m = new B(); - - shouldFireChangeOnce( m, 'first', function(){ - m.transaction( function(){ - m.first.a = 7; - m.second.a = 7; - }); - }); - }); - - it( 'generate "change" event on any nested collection modification', function(){ - var m = new B(); - - shouldFireChangeOnce( m, 'c', function(){ - m.c.add({ id: 1, a: 1, b : 2 }); - }); - - shouldFireChangeOnce( m, 'c', function(){ - m.c.first().a = 2; - }); - - shouldFireChangeOnce( m, 'c', function(){ - m.c.remove( m.c.first() ); - }); - }); - - it( 'may be disabled for selected nested attributes', function(){ - var m = new B(), - spyTop = sinon.spy(), - spyBottom = sinon.spy(); - - m.on( 'change', spyTop ); - m.second.on( 'change', spyBottom ); - m.second.a = 5; - expect( spyBottom ).to.be.calledOnce; - expect( spyBottom ).to.be.notCalled; - }); - }) - }); diff --git a/tests/nestedtypes/functionality/basic.js b/tests/nestedtypes/functionality/basic.js deleted file mode 100644 index dee41ed..0000000 --- a/tests/nestedtypes/functionality/basic.js +++ /dev/null @@ -1,205 +0,0 @@ - var Nested = require( '../nestedtypes' ), - expect = require( 'chai' ).expect, - sinon = require( 'sinon' ); - - describe( 'Basic functionality', function(){ - function canHaveNativeProperties( Type ){ - var C = Type.extend({ - something : false, - - properties : { - readOnly : function(){ return this.something; }, - rw : { - get : function(){ return this.something; }, - set : function( value ){ - return this.something = value; - } - } - } - }); - - var c = new C(); - expect( c.readOnly ).to.be.false; - c.rw = true; - expect( c.rw ).to.be.true; - expect( c.readOnly ).to.be.true; - } - - describe( 'Nested.Model', function(){ - var M = Nested.Model.extend({ - urlRoot : '/root', - - defaults : { - a : 'a' - } - }); - - it( 'may use "Model.attributes" instead of "Model.defaults"', function(){ - var M = Nested.Model.extend({ - attributes : { - a : 'a' - } - }); - - var m = new M(); - expect( m.get( 'a' ) ).to.eql( 'a' ); - }); - - it( 'create native properties for every default attribute', function(){ - var m = new M(); - expect( m.a ).to.eql( 'a' ); - m.a = 'b'; - expect( m.get( 'a' ) ).to.eql( 'b' ); - expect( m.a ).to.eql( 'b' ); - }); - - it( 'can have explicitly defined native properties', function(){ - canHaveNativeProperties( Nested.Model ); - }); - - it( 'inherit default attributes from the base model', function(){ - var B = M.extend({ - defaults : { - b : 'b' - } - }); - - m = new B(); - expect( m.a ).to.eql( 'a' ); - expect( m.b ).to.eql( 'b' ); - }); - - it( 'deep copy defaults JSON literals on model creation', function(){ - var A = Nested.Model.extend({ - defaults : { - a : { first : [ 1 ], second : [ 2 ] } - } - }); - - var m = new A(), - n = new A(); - - m.a.first.push( 2 ); - expect( m.a.first ).to.eql( [ 1, 2 ] ); - expect( n.a.first ).to.eql( [ 1 ] ); - }); - - it( 'can define a tree', function(){ - var M = Nested.Model.extend(); - - M.define({ - defaults : { - nested : M.value( null ), - elements : M.Collection - } - }) - - var m = new M(); - - m.elements.add({}); - - expect( m.elements.first().elements.length ).to.be.zero; - - }); - }); - - describe( 'Nested.Collection', function(){ - var M = Nested.Model.extend({ - urlRoot : '/root', - - defaults : { - a : 'a' - }, - - collection : { - initialize : function(){ - this.b = 'b'; - } - } - }); - - it( 'can have explicitly defined native properties', function(){ - canHaveNativeProperties( Nested.Collection ); - }); - - it( 'is automatically defined for every model', function(){ - var c = new M.Collection(); - expect( c.model ).to.eql( M ); - }); - - it( 'can be defined in Model.collection', function(){ - var c = new M.Collection(); - expect( c.b ).to.eql( 'b' ); - }); - - it( 'inherits from the base Model.collection', function(){ - var B = M.extend({ - urlRoot : '/myroot', - collection : { - c : 'c' - } - }); - - var c = new B.Collection(); - expect( c.c ).to.eql( 'c' ); - expect( c.b ).to.eql( 'b' ); - //expect( c.url ).to.eql( '/myroot' ); - }); - - }); - - describe( 'Class type', function(){ - var C = Nested.Class.extend({ - a : 'a', - constructor : function(){ - this.b = 'b'; - } - }); - - it( 'has custom constructor method', function(){ - var c = new C(); - expect( c.a ).to.eql( 'a' ); - expect( c.b ).to.eql( 'b' ); - }); - - it( 'can be extended', function(){ - var D = C.extend({ - d : 'd' - }); - - var d = new D(); - - expect( d.a ).to.eql( 'a' ); - expect( d.b ).to.eql( 'b' ); - expect( d.d ).to.eql( 'd' ); - }); - - it( 'Messenger can trigger/listen to backbone events', function(){ - var C = Nested.Messenger.extend({ - constructor : function(){ - Nested.Messenger.apply( this, arguments ); - - this.listenTo( this, { - 'hello' : function(){ - this.hello = true; - }, - - 'a b c' : function(){ - this.abc = true; - } - }); - } - }); - - var c = new C(); - c.trigger( 'hello' ); - expect( c.hello ).to.be.true; - c.trigger( 'b' ); - expect( c.abc ).to.be.true; - }); - - it( 'can have explicitly defined native properties', function(){ - canHaveNativeProperties( Nested.Class ); - }); - }); - }); diff --git a/tests/nestedtypes/functionality/collections.js b/tests/nestedtypes/functionality/collections.js deleted file mode 100644 index f167ea4..0000000 --- a/tests/nestedtypes/functionality/collections.js +++ /dev/null @@ -1,86 +0,0 @@ -var Nested = require( '../nestedtypes' ), - expect = require( 'chai' ).expect, - sinon = require( 'sinon' ); - -var Model = Nested.Model.extend({ - defaults : { - data : '' - }, - - parse : function( d ){ - return { data : d }; - } -}); - -describe( 'Collections', function(){ - describe( 'Collection#constructor', function(){ - it( 'invoked wo/arguments', function(){ - var c = new Model.Collection(); - expect( c.length ).to.eql( 0 ); - }); - - it( 'takes single model', function(){ - var m = new Model(); - c = new Model.Collection( m ); - - expect( c.length ).to.eql( 1 ); - expect( c.first() ).to.eql( m ); - }); - - it( 'takes attributes', function(){ - var c = new Model.Collection({ data : 'hi' }); - - expect( c.length ).to.eql( 1 ); - expect( c.first().data ).to.eql( 'hi' ); - }); - - it( 'takes an empty array', function(){ - var c = new Model.Collection( [] ); - expect( c.length ).to.eql( 0 ); - }); - - it( 'takes an array of models', function(){ - var m = new Model(); - c = new Model.Collection([ m, new Model() ]); - - expect( c.length ).to.eql( 2 ); - expect( c.first() ).to.eql( m ); - }); - - it( 'takes an array of attributes', function(){ - var c = new Model.Collection([{ data : '1' }, { data : '2' }]); - - expect( c.length ).to.eql( 2 ); - expect( c.first().data ).to.eql( '1' ); - expect( c.last().data ).to.eql( '2' ); - }); - - it( 'parses raw data', function(){ - var c = new Model.Collection([ '1' , '2' ], { parse : true }); - - expect( c.length ).to.eql( 2 ); - expect( c.first().data ).to.eql( '1' ); - expect( c.last().data ).to.eql( '2' ); - } ); - } ); - - describe( 'Collection#set & Collection#reset', function(){ - it( 'sets empty collection' ); - it( 'updates collection with same data with no changes' ); - it( 'reset existing collection' ); - it( 'handles data intersection' ); - it( 'handle sorted collection' ); - } ); - - describe( 'Collection#add & Collection#remove', function(){ - it( 'sets empty collection' ); - it( 'remove single element from collection' ); - it( 'add many items to collection' ); - it( 'remove many items from collection' ); - it( 'add one item to collection' ); - it( 'add one item to sorted collection' ); - it( 'add many items to sorted collection' ); - it( 'insert one item in given position' ); - it( 'insert many items in given position' ) - } ); -} ); \ No newline at end of file diff --git a/tests/nestedtypes/functionality/relations.js b/tests/nestedtypes/functionality/relations.js deleted file mode 100644 index bbd8841..0000000 --- a/tests/nestedtypes/functionality/relations.js +++ /dev/null @@ -1,211 +0,0 @@ - var Nested = require( '../nestedtypes' ), - sinon = require( 'sinon' ), - chai = require( 'chai'), - as_promised = require("chai-as-promised"); - - chai.use( as_promised ); - - expect = chai.expect; - - describe( 'One-to-many and many-to-many relations', function(){ - var Something = Nested.Model.extend({ - attributes : { - name : '' - } - }); - - var collection = new Something.Collection([ - { id: 1, name : 1 }, - { id: 2, name : 2 }, - { id: 3, name : 3 } - ]); - - describe( 'Model.from reference', function(){ - var A = Nested.Model.extend({ - attributes : { - ref : Something.from( collection ) - } - }); - - it( 'is initialized with null', function(){ - var m = new A(); - expect( m.ref ).to.be.null; - }); - - it( 'parse model id', function(){ - var m = new A({ ref : 1 }); - expect( m.ref.name ).to.equal( "1" ); - }); - - it( 'can be assigned with model id', function(){ - var m = new A(); - m.ref = 1; - expect( m.ref.name ).to.equal( "1" ); - - m.set({ ref: 2 }); - expect( m.ref.name ).to.equal( "2" ); - }); - - it( 'can be assigned with model', function(){ - var m = new A(); - m.ref = collection.first(); - expect( m.ref.name ).to.equal( "1" ); - }); - - it( 'is serialized to model id', function(){ - var m = new A(); - m.ref = collection.first(); - var json = m.toJSON(); - expect( json.ref ).to.equal( 1 ); - }); - - it( 'can use lazy reference to collection', function(){ - var A = Nested.Model.extend({ - attributes : { - ref : Something.from( function(){ return collection; } ) - } - }); - - var m = new A(); - m.ref = 1; - expect( m.ref.name ).to.equal( "1" ); - }); - - it( 'must return null when not resolved', function(){ - var A = Nested.Model.extend({ - attributes : { - ref : Something.from( function(){ return this.__collection; } ) - } - }); - - var m = new A(); - m.ref = 1; - expect( m.ref ).to.be.null; - - m.__collection = collection; - expect( m.ref.name ).to.equal( "1" ); - }); - }); - - describe( 'Collection.subsetOf', function(){ - var A = Nested.Model.extend({ - attributes : { - refs : Something.Collection.subsetOf( collection ) - } - }); - - it( 'is initialized with empty collection', function(){ - var m = new A(); - expect( m.refs.length ).to.equal( 0 ); - }); - - it( 'parse array of model ids', function(){ - var m = new A({ refs : [ 1 ] }); - expect( m.refs.first().name ).to.equal( "1" ); - }); - - it( 'can be assigned with array of model ids', function(){ - var m = new A(); - m.refs = [ 1 ]; - expect( m.refs.first().name ).to.equal( "1" ); - }); - - it( 'can be assigned with models array', function(){ - var m = new A(); - m.refs = [ collection.first() ]; - expect( m.refs.first().name ).to.equal( "1" ); - }); - - it( 'is serialized to array of model ids', function(){ - var m = new A(); - m.refs = [ collection.first() ]; - var json = m.toJSON(); - expect( json.refs[ 0 ] ).to.equal( 1 ); - }); - - it( 'can use lazy reference to collection', function(){ - var A = Nested.Model.extend({ - attributes : { - refs : Something.Collection.subsetOf( function(){ return collection; } ) - } - }); - - var m = new A(); - m.refs = [ 1 ]; - expect( m.refs.first().name ).to.equal( "1" ); - }); - }); - }); - - describe( 'Nested relations', function(){ - var User = Nested.Model.extend({ - defaults : { - name : '', - roles : Nested.Collection.subsetOf( '~roles' ) - }, - - collection : { - fetch : function(){ - this.reset([ { - id : 1, - name : 'admin', - roles : [ 1 ] - },{ - id : 2, - name : 'user', - roles : [ 2 ] - }], { parse : true }); - - this.trigger( 'sync', this ); - - return new Promise(function( resolve, reject ) { - resolve('loaded'); - }); - } - } - }); - - var Role = Nested.Model.extend({ - defaults : { - name : '', - users : Nested.Collection.subsetOf( '~users' ) - }, - - collection : { - fetch : function(){ - this.reset([ { - id : 1, - name : 'Administrators', - users : [ 1 ] - },{ - id : 2, - name : 'Users', - users : [ 2 ] - }], { parse : true }); - - this.trigger( 'sync', this ); - return new Promise(function( resolve, reject ) { - resolve('loaded'); - }); - } - } - }); - - it( 'can be initialized with a list of attributes', function(){ - var Store = Nested.Store.defaults({ - users : User.Collection, - roles : Role.Collection - }); - - Nested.Store.global = new Store(); - }); - - it( 'References are properly resolved', function(){ - var store = Nested.Store.global; - store.users.fetch(); - store.roles.fetch(); - - expect( store.users.first().roles.first().name ).to.eql( 'Administrators' ); - }); - - }); diff --git a/tests/nestedtypes/functionality/types.js b/tests/nestedtypes/functionality/types.js deleted file mode 100644 index 48ae31c..0000000 --- a/tests/nestedtypes/functionality/types.js +++ /dev/null @@ -1,397 +0,0 @@ - var Nested = require( '../nestedtypes' ), - chai = require( 'chai' ), - expect = chai.expect, - sinon = require( 'sinon' ), - sinonChai = require( 'sinon-chai' ); - - chai.use( sinonChai ); - - describe( 'Type specs', function(){ - describe( 'Constructor type spec', function(){ - var Ctor = Nested.Class.extend({ - a : 1, - - constructor : function( a ){ - a === undefined || ( this.a = a ); - }, - - toJSON : function(){ - return this.a; - } - }); - - var A = Nested.Model.extend({ - defaults : { - a : Ctor - } - }); - - describe( 'Model creation', function(){ - it( 'automatically creates new object', function(){ - var m = new A(); - expect( m.a ).to.be.instanceOf( Ctor ); - expect( m.a.a ).to.eql( 1 ); - }); - - it( 'pass value to the constructor on creation ', function(){ - var m = new A({ a : 3 }); - expect( m.a ).to.be.instanceOf( Ctor ); - expect( m.a.a ).to.eql( 3 ); - }); - - it( 'may have default value', function(){ - var A = Nested.Model.extend({ - defaults : { - a : Ctor.value( 3 ) - } - }); - - var m = new A(); - expect( m.a ).to.be.instanceOf( Ctor ); - expect( m.a.a ).to.eql( 3 ); - }); - - it( 'may have default value of null', function(){ - var A = Nested.Model.extend({ - defaults : { - a : Ctor.value( null ) - } - }); - - var m = new A(); - expect( m.a ).to.be.null; - }); - }); - - describe( 'Attribute assignment', function(){ - it( 'replace value if assigned with defined type', function(){ - var m = new A(); - - m.a = new Ctor( 5 ); - - expect( m.a ).to.be.instanceOf( Ctor ); - expect( m.a.a ).to.eql( 5 ); - }); - - it( 'convert value to defined type on assignment', function(){ - var m = new A(); - - m.a = 5; - - expect( m.a ).to.be.instanceOf( Ctor ); - expect( m.a.a ).to.eql( 5 ); - }); - - it( 'may set attribute with null', function(){ - var m = new A(); - - m.a = null; - - expect( m.a ).to.be.null; - }); - }); - - describe( 'Serialization and parsing', function(){ - it( 'serialize attribute to JSON', function(){ - var m = new A(), - json = m.toJSON(); - - expect( json.a ).to.eql( 1 ); - }); - - it( 'set attribute on model set', function(){ - var m = new A(); - - m.set({ a : 5 }); - - expect( m.a ).to.be.instanceOf( Ctor ); - expect( m.a.a ).to.eql( 5 ); - }); - }); - }); - - describe( 'Array type', function(){ - var M = Nested.Model.extend({ - defaults : { - arr : Array - } - }); - - it( 'creates an empty array by default', function(){ - var m = new M(); - expect( m.arr ).to.be.instanceOf( Array ); - expect( m.arr.length ).to.be.equal( 0 ); - }); - - it( 'non-array value in array on assignment is ignored', function(){ - var m = new M(); - m.arr = 1; - - expect( m.arr ).to.be.instanceOf( Array ); - expect( m.arr.length ).to.be.equal( 0 ); - }); - }); - - describe( 'Primitive types (Number, Integer, Boolean, String)', function(){ - var A = Nested.Model.extend({ - defaults : { - num : Number, - str : String, - bool : Boolean, - int : Number.integer - } - }); - - it( 'initialized with primitive types', function(){ - var m = new A(); - - expect( m.num ).to.be.a( 'number' ).and.equal( 0 ); - expect( m.int ).to.be.a( 'number' ).and.equal( 0 ); - expect( m.str ).to.be.a( 'string' ).and.equal( "" ); - expect( m.bool ).to.be.a( 'boolean' ).and.equal( false ); - }); - - it( 'converted to defined types on assignments', function(){ - var m = new A(); - - m.num = "25.5"; - expect( m.num ).to.be.a( 'number' ).and.equal( 25.5 ); - - m.str = 32; - expect( m.str ).to.be.a( 'string' ).and.equal( "32" ); - - m.bool = "5"; - expect( m.bool ).to.be.a( 'boolean' ).and.equal( true ); - - m.int = 25.7; - expect( m.int ).to.be.a( 'number' ).and.equal( 26 ); - - m.int = "25.7"; - expect( m.int ).to.be.a( 'number' ).and.equal( 26 ); - }); - - it( 'can be set with null', function(){ - var m = new A(); - - m.num = null; - expect( m.num ).to.be.null; - - m.str = null; - expect( m.str ).to.be.null; - - m.bool = null; - expect( m.bool ).to.be.null; - - m.int = null; - expect( m.int ).to.be.null; - }); - - it( 'inferred from default values (except Integer)', function(){ - var A = Nested.Model.extend({ - defaults : { - num : 1, - str : 'str', - bool : true - } - }); - - var m = new A(); - expect( m.num ).to.be.a( 'number' ).and.equal( 1 ); - expect( m.str ).to.be.a( 'string' ).and.equal( "str" ); - expect( m.bool ).to.be.a( 'boolean' ).and.equal( true ); - }); - }); - - describe( 'Date type', function(){ - var user, User = Nested.Model.extend({ - attributes:{ - created : Date, - timestamp : Date.timestamp, - microsoft : Date.microsoft, - name: String, - loginCount: Number.integer - } - }); - - before( function(){ - user = new User(); - }); - - it( 'create new Date object on construction', function(){ - expect( user.created ).to.be.instanceOf( Date ); - expect( user.microsoft ).to.be.instanceOf( Date ); - expect( user.timestamp ).to.be.instanceOf( Date ); - }); - - it( 'parse ISO dates in all browsers on assignment', function(){ - // parse Date from string - user.created = "2012-12-12T10:00Z"; - expect( user.created ).to.be.instanceof( Date ); - expect( user.created.toISOString() ).to.be.eql( '2012-12-12T10:00:00.000Z' ); - - user.timestamp = "2012-12-12T10:00Z"; - expect( user.timestamp ).to.be.instanceof( Date ); - expect( user.timestamp.toISOString() ).to.be.eql( '2012-12-12T10:00:00.000Z' ); - - user.microsoft = "2012-12-12T10:00Z"; - expect( user.microsoft ).to.be.instanceof( Date ); - expect( user.microsoft.toISOString() ).to.be.eql( '2012-12-12T10:00:00.000Z' ); - }); - - it( 'parse integer time stamps on assignment', function(){ - // parse Date from timestamp - user.created = 1234567890123; - expect( user.created ).to.be.instanceof( Date ); - expect( user.created.toISOString() ).to.be.eql( '2009-02-13T23:31:30.123Z' ); - - user.timestamp = 1234567890123; - expect( user.timestamp ).to.be.instanceof( Date ); - expect( user.timestamp.toISOString() ).to.be.eql( '2009-02-13T23:31:30.123Z' ); - - user.microsoft = 1234567890123; - expect( user.microsoft ).to.be.instanceof( Date ); - expect( user.microsoft.toISOString() ).to.be.eql( '2009-02-13T23:31:30.123Z' ); - }); - - it( 'parse MS time stamps on assignment', function(){ - user.microsoft = "/Date(1234567890123)/"; - expect( user.microsoft ).to.be.instanceof( Date ); - expect( user.microsoft.toISOString() ).to.be.eql( '2009-02-13T23:31:30.123Z' ); - }); - - it( 'is serialized to ISO date', function(){ - var json = user.toJSON(); - expect( json.created ).to.be.eql( '2009-02-13T23:31:30.123Z' ); - expect( json.timestamp ).to.be.eql( 1234567890123 ); - expect( json.microsoft ).to.be.eql( '/Date(1234567890123)/' ); - } ); - }); - - describe( 'Attribute options', function(){ - describe( 'get hook', function(){ - var A = Nested.Model.extend({ - defaults : { - a : Number.has - .get( function( value ){ - return value * 2; - }) - } - }); - - var m = new A(); - m.a = 1; - - it( 'may modify returned attribute\'s value', function(){ - expect( m.a ).to.be.equal( 2 ); - }); - - it( 'is called from model.get', function(){ - expect( m.get( 'a' ) ).to.be.equal( 2 ); - }); - }); - - describe( 'set hook', function(){ - var A = Nested.Model.extend({ - defaults : { - a : Number.value( 33 ) - .set( function( value, options ){ - expect( value ).to.be.a( 'number' ); - - if( value !== 0 ){ - return value * 2; - } - }), - b : Number.has.watcher( 'watcher' ) - } - }); - - it( 'may modify value assigned to attribute\'s', function(){ - var m = new A(); - m.a = 1; - - expect( m.a ).to.be.equal( 2 ); - }); - - it( 'is called from model.set', function(){ - var m = new A(); - m.set({ 'a' : 1 }); - - expect( m.a ).to.be.equal( 2 ); - - m.set( { a : 3 } ); - - expect( m.a ).to.be.equal( 6 ); - }); - - it( 'is called after type cast', function(){ - var m = new A(); - m.a = "1"; - - expect( m.a ).to.be.equal( 2 ); - }); - - it( 'may prevent attribute\'s assignment', function(){ - var m = new A(); - m.set({ 'a' : 0 }); - - expect( m.a ).to.be.equal( 66 ); - }); - - it( 'Watcher functions', function(){ - var m = new A(); - m.watcher = sinon.spy(); - - m.b = 77; - expect( m.watcher ).to.be.calledOnce; - expect( m.watcher ).to.be.calledWith( 77 ); - }); - }); - - describe( 'toJSON hook', function(){ - it( 'override attribute\'s toJSON', function(){ - var A = Nested.Model.extend({ - defaults : { - a : Date.has - .toJSON( function( date ){ - return date.getTime(); - }) - } - }); - - var m = new A(), - json = m.toJSON(); - - expect( json.a ).to.be.a( 'number' ); - }); - - it( 'can prevent attribute from serialization', function(){ - var A = Nested.Model.extend({ - defaults : { - a : Date.has.toJSON( false ), - b : true - } - }); - - var m = new A(), - json = m.toJSON(); - - expect( json.a ).to.not.exist; - expect( json.b ).to.be.true; - }); - }); - - it( 'can define untyped attribute', function(){ - var A = Nested.Model.extend({ - defaults : { - a : Nested.value( 1 ) - } - }); - - var m = new A(); - expect( m.a ).to.equal( 1 ); - m.a = "1"; - expect( m.a ).to.equal( "1" ); - }); - }); - - }); diff --git a/tests/nestedtypes/index.html b/tests/nestedtypes/index.html deleted file mode 100644 index ec509d9..0000000 --- a/tests/nestedtypes/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - Models Tests - - - -
- - - - diff --git a/tests/nestedtypes/package.json b/tests/nestedtypes/package.json deleted file mode 100644 index 2f721f7..0000000 --- a/tests/nestedtypes/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "nestedtypes-regression", - "version": "1.0.0", - "description": "Regression tests from NestedTypes 1.3", - "main": "index.html", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "Vlad \"Gaperton\" Balin", - "license": "MIT", - "devDependencies": { - "backbone": "^1.3.3", - "chai": "^3.5.0", - "chai-as-promised": "^5.3.0", - "jquery": "^3.1.0", - "mocha": "^2.5.3", - "requirejs": "^2.2.0", - "sinon": "^1.17.4", - "sinon-chai": "^2.8.0", - "underscore": "^1.8.3" - } -} diff --git a/tests/nestedtypes/performance.html b/tests/nestedtypes/performance.html deleted file mode 100644 index 079efa9..0000000 --- a/tests/nestedtypes/performance.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - Models Tests - - - -
- - - - diff --git a/tests/nestedtypes/performance/README.md b/tests/nestedtypes/performance/README.md deleted file mode 100644 index f9bf3c1..0000000 --- a/tests/nestedtypes/performance/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Todo - -We need new perfromance test which would represent the reality we're dealing with. - -Large data structures comes from the server. - -There are two situations - empty set and merge set. Both must be checked. - -From UI standpoint - single field modification deep inside of the tree must be measured, -with validation. Ideally - links performance. - -## Large collections (50K). - -- Large collection, narrow models -- Large collection, wide models. - -## Deep model trees - -- Large tree, narrow models -- Large tree, wide models - -## Mixed tree. - -- Recursive model tree -- 10K collection of recursive model tree. - -## Links performance - -- Boolean deep inside the tree -- Text link with validation deep inside the tree. \ No newline at end of file diff --git a/tests/nestedtypes/performance/complex.js b/tests/nestedtypes/performance/complex.js deleted file mode 100644 index bf02914..0000000 --- a/tests/nestedtypes/performance/complex.js +++ /dev/null @@ -1,452 +0,0 @@ -define( function( require, exports, module ){ - var Nested = require( '../../../index.js' ), - Model = Nested.Model; - - /******************** - * Model definitions - */ - if( Nested.tools ){ - Nested.tools.log.level = 1; - } - - describe( 'Collections of flat models', function(){ - this.timeout( 100000 ); - - var SmallFlatModel = Model.extend({ - attributes : { - a : 0 - } - }); - - var LargeFlatModel = Model.extend({ - attributes : { - a0 : 0, a1 : 1, a2 : 2, a3 : 3, a4: 4, a5 : 5, a6: 6, a7: 7, a8: 8, a9: 9, - b0 : 0, b1 : 1, b2 : 2, b3 : 3, b4: 4, b5 : 5, b6: 6, b7: 7, b8: 8, b9: 9 - } - }); - - var smallData = [], - largeData = []; - - for( var i = 0; i < 50000; i++ ){ - smallData.push({ id : i, a : i }); - largeData.push({ id : i, - a0 : i, a1 : i, a2 : i, a3 : i, a4: i, a5 : i, a6: i, a7: i, a8: i, a9: i, - b0 : i, b1 : i, b2 : i, b3 : i, b4: i, b5 : i, b6: i, b7: i, b8: i, b9: i - }); - } - - smallData = JSON.stringify( smallData ); - largeData = JSON.stringify( largeData ); - - var small, large; - - beforeEach( function(){ - small = JSON.parse( smallData ); - large = JSON.parse( largeData ); - }); - - describe( 'Create 50K collection', function(){ - it( '1 attribute model', function(){ - var smallCollection = new SmallFlatModel.Collection( small ); - }); - - it( '20 attribute model', function(){ - var largeCollection = new LargeFlatModel.Collection( large ); - }); - }); - - describe( 'Fetch 50K collection', function(){ - it( '1 attribute model', function(){ - var smallCollection = new SmallFlatModel.Collection(); - smallCollection.set( small ); - }); - - it( '20 attribute model', function(){ - var largeCollection = new LargeFlatModel.Collection(); - largeCollection.set( large ); - }); - }); - - var _smallCollection = new SmallFlatModel.Collection( JSON.parse( smallData ) ); - var _largeCollection = new LargeFlatModel.Collection( JSON.parse( largeData ) ); - - describe( 'Update 50K collection', function(){ - it( '1 attribute model', function(){ - _smallCollection.set( small ); - }); - - it( '20 attribute model', function(){ - _largeCollection.set( large ); - }); - }); - - describe( 'Reset 50K collection', function(){ - it( '1 attribute model', function(){ - _smallCollection.reset( small ); - }); - - it( '20 attribute model', function(){ - _largeCollection.reset( large ); - }); - }); - }); - - describe( 'Recursive model structures', function(){ - this.timeout( 100000 ); - - var LinkedList = Model.extend(); - LinkedList.define({ - attributes : { - next : LinkedList.value( null ), - value : 0 - } - }); - - var Tree = Model.extend(); - Tree.define({ - attributes : { - a0 : Tree.value( null ), - a1 : Tree.value( null ), - a2 : Tree.value( null ), - a3 : Tree.value( null ), - a4 : Tree.value( null ), - a5 : Tree.value( null ), - a6 : Tree.value( null ), - a7 : Tree.value( null ), - a8 : Tree.value( null ), - a9 : Tree.value( null ), - value : 0 - } - }); - - function createTree( level ){ - if( level ){ - var l = level - 1; - return { - a0 : createTree( l ), - a1 : createTree( l ), - a2 : createTree( l ), - a3 : createTree( l ), - a4 : createTree( l ), - a5 : createTree( l ), - a6 : createTree( l ), - a7 : createTree( l ), - a8 : createTree( l ), - a9 : createTree( l ), - value : l - } - } - - return null; - } - - function createList( n ){ - var list = {}; - - for( var i = 0, l = list; i < 1000; i++, l = l.next ){ - l.next = { next : null, value : i }; - } - - return list; - } - - var treeData, listData; - - treeJSON = JSON.stringify( createTree( 6 ) ); - listJSON = JSON.stringify( createList( 1000 ) ); - - var _tree, _list; - - describe( '1000 elements linked list, 1000 times + parse time', function(){ - var list; - - it( 'Create from JSON', function(){ - for( var i = 0; i < 1000; i++ ){ - list = new LinkedList( JSON.parse( listJSON ) ); - } - }); - - it( 'Fetch empty from JSON', function(){ - for( var i = 0; i < 1000; i++ ){ - list = new LinkedList(); - list.set( JSON.parse( listJSON ) ); - } - }); - - it( 'Update with JSON', function(){ - for( var i = 0; i < 1000; i++ ){ - list.set( JSON.parse( listJSON ) ); - } - }); - }); - - describe( 'Wide model tree with 10 childs, 100K elements', function(){ - var data, tree; - beforeEach( function(){ - data = JSON.parse( treeJSON ); - }); - - it( 'Create from JSON', function(){ - tree = new Tree( data ); - }); - - it( 'Fetch empty from JSON', function(){ - tree = new Tree(); - tree.set( data ); - }); - - it( 'Update with JSON', function(){ - tree.set( data ); - }); - }); - }); - - describe( 'Recursive model/collection tree', function(){ - this.timeout( 100000 ); - - var Comment = Model.extend(); - Comment.define({ - attributes : { - time : Date, - text : String, - author_id : Number, - replies : Comment.Collection, - } - }); - - function createTree( level, id ){ - var l = level - 1; - return { - id : id || 0, - time : new Date(), - author_id : level, - text : 'hjkfshdkhjfksdhkj fhsdjkhfsdjk hjfksdhjk hfjsdkhjk hfjdskhjkhj fdssdffsdn,m nm, nm, nv,xvcvcx', - replies : l ? [ - createTree( l, 0 ), - createTree( l, 1 ), - createTree( l, 2 ), - createTree( l, 3 ), - createTree( l, 4 ), - createTree( l, 5 ), - createTree( l, 6 ), - createTree( l, 7 ), - createTree( l, 8 ), - createTree( l, 9 ) - ] : [] - } - } - - function createList( width, depth ){ - var list = []; - - for( var i = 0; i < width; i++ ){ - list.push( createTree( depth, i ) ); - } - - return list; - } - - var treeData = JSON.stringify( createTree( 6 ) ), - shortList = JSON.stringify( createList( 100, 4 ) ), - midList = JSON.stringify( createList( 1000, 3 ) ), - longList = JSON.stringify( createList( 10000, 2 ) ); - - var _comment, _short, _mid, _long; - - describe( '100K Model/Collection Tree', function(){ - var data, collection; - beforeEach( function(){ - data = JSON.parse( treeData ); - }); - - it( 'Create from JSON', function(){ - collection = new Comment.Collection( data ); - collection = null; - }); - - it( 'Fetch empty from JSON', function(){ - collection = new Comment.Collection(); - collection.set( data ); - }); - - it( 'Update with JSON', function(){ - collection.set( data ); - collection = null; - }); - }); - - describe( '100 elements Collection of 1000 items Model/Collection tree', function(){ - var data, collection; - beforeEach( function(){ - data = JSON.parse( shortList ); - }); - - it( 'Create from JSON', function(){ - collection = new Comment.Collection( data ); - collection = null; - }); - - it( 'Fetch empty from JSON', function(){ - collection = new Comment.Collection(); - collection.set( data ); - }); - - it( 'Update with JSON', function(){ - collection.set( data ); - collection = null; - }); - }); - - describe( '1000 elements Collection of 100 items Model/Collection tree', function(){ - var data, collection; - beforeEach( function(){ - data = JSON.parse( midList ); - }); - - it( 'Create from JSON', function(){ - collection = new Comment.Collection( data ); - collection = null; - }); - - it( 'Fetch empty from JSON', function(){ - collection = new Comment.Collection(); - collection.set( data ); - }); - - it( 'Update with JSON', function(){ - collection.set( data ); - collection = null; - }); - }); - - describe( '10 000 elements Collection of 10 items Model/Collection tree', function(){ - var data, collection; - beforeEach( function(){ - data = JSON.parse( longList ); - }); - - it( 'Create from JSON', function(){ - collection = new Comment.Collection( data ); - collection = null; - }); - - it( 'Fetch empty from JSON', function(){ - collection = new Comment.Collection(); - collection.set( data ); - }); - - it( 'Update with JSON', function(){ - collection.set( data ); - collection = null; - }); - }); - }); - - describe( 'Users directory', function(){ - var User = Model.extend({ - idAttribute: 'user_id', - defaults: { - created_at : Date, - updated_at : Date, - username : String, - password : String, - fname : String, - lname : String, - email : String, - active : Number, - 'default' : Number, - guid : '', - old_7password : String, - created_by : null, - domain_id: 0, - user_type : Number, - user_types : Array, - permissions: {}, - selectedEncoders : Nested.Collection.subsetOf( '~encoders' ), - roles : Nested.Collection.subsetOf( '~roles' ), - settings: Model.defaults({ - TZ: '', - DefaultMetadataState: 'off', - LoudnessMeterState: 'off', - OrderChannels: 'name', - PlayLiveLastChannel: false, - SendExportNotification: true, - DisplayPlayerSpeed: false - }) - } - }); - - var Dummy = Nested.Model.extend({ - attributes : { - name : '' - } - }); - - var Store = Nested.Store.defaults({ - encoders : Dummy.Collection, - roles : Dummy.Collection - }); - - var store; - if( Nested.store ){ - store = Nested.store = new Store(); - } - else{ - store = Nested.Store.global = new Store(); - } - - var dummies = []; - for( var i = 0; i < 100; i++ ){ - dummies.push( { id : i, name : 'name' + i }); - } - - store.encoders = dummies; - store.roles = dummies; - - var _users = []; - - for( var i = 0; i < 10000; i++ ){ - _users.push({ - active : 1, - created_at : "2015-11-18T16:57:10+00:00", - created_by : null, - default : 1, - domain_id : 0, - email : "observer-import-system@volicon.com", - fname : "api_import_user", - lname : "api_import_user", - roles:["5"], - updated_at:"2015-11-18T16:57:10+00:00", - user_id: i, - user_type:3, - user_types:["3"], - username : "api_import_user" - }); - } - - var usersJSONtext = JSON.stringify( _users ); - _users = null; - - var usersJSON; - - beforeEach( function(){ - usersJSON = JSON.parse( usersJSONtext ); - }); - - var collection; - - it( 'Creates users collection from JSON', function(){ - collection = new User.Collection( usersJSON ); - } ); - - it( 'Fetches users collection from JSON', function(){ - collection = new User.Collection(); - collection.set( usersJSON ); - } ); - - it( 'Updates users collection', function(){ - collection.set( usersJSON ); - }); - }); -}); diff --git a/tests/nestedtypes/performance/core.js b/tests/nestedtypes/performance/core.js deleted file mode 100644 index 82fa220..0000000 --- a/tests/nestedtypes/performance/core.js +++ /dev/null @@ -1,158 +0,0 @@ -import { Model } from 'nestedtypes' - -function emptyTest( n, context ){ - for( var i = 0; i < n; i++ ){ - // do nothing - } -} - -function measure( fun, context, iterations ){ - const start = window.performance.now(); - fun( iterations, context ); - return window.performance.now() - start; -} - -export const Test = Model.extend( { - idAttribute : 'name', - - defaults : { - executedAt : Date.value( null ), - name : String, - time : Number.value( null ), - count : Integer, - iterations : Integer, - faster : Number.value( null ), - exception : Error.value( null ), - init : Function.has.toJSON( false ), - test : Function.has.toJSON( false ).value( emptyTest ) - }, - - properties : { - ops(){ - return this.time ? Integer( this.count * 1000 / this.time ) : 0; - } - }, - - _measure( iterations, cumulative = false ){ - if( !cumulative ){ - this.time = this.count = 0; - } - - const context = this.init( iterations ) || {}; - this.time += measure( this.test, iterations, context ); - this.count += iterations; - }, - - _estimate(){ - this._measure( 100 ); - - for( let n = 200; this.time < 200; n *= 2 ){ - this._measure( n, true ); - } - - return this.ops * 3; - }, - - run( a_iterations ){ - this.transaction( () =>{ - this.exception = null; - this.executedAt = new Date(); - - try{ - var iterations = this.iterations || a_iterations || _estimate(); - this._measure( iterations ); - } - catch( e ){ - this.exception = e; - } - }); - }, - - collection : { - whoIsFaster( thanMe ){ - const ops = thanMe && thanMe.ops; - - this.transaction( () =>{ - this.tests.each( test => test.faster = ops && test.ops ? test.ops / ops : null ); - } ); - }, - - properties : { - time(){ - return this.reduce( ( ( sum, test ) => sum + test.time ), 0 ); - }, - - count(){ - return this.reduce( ( ( sum, test ) => sum + test.count ), 0 ); - }, - - ops(){ - return this.time ? Integer( this.count * 1000 / this.time ) : 0; - } - } - } -}); - -export const Group = Model.extend( { - idAttribute : 'name', - - defaults : { - executedAt : Date.value( null ), - name : String, - tests : Test.Collection, - selected : Test.from( 'tests' ), - iterations : Integer - }, - - initialize(){ - this.listenTo( this, 'change:selected change:tests', () =>{ - this.tests.whoIsFaster( this.selected ); - } ); - }, - - run(){ - this.executedAt = new Date(); - this.tests.each( test => test.run( this.iterations ) ); - } -} ); - -var groups = new Group.Collection(); - - -function oneAttrModel(){ - return Model.defaults({ a : 0 }); -} - -function createModel( count, Model ){ - var m; - - for( var i = 0; i < count; i++ ){ - m = new Model(); - } -} - -groups.create({ - name : 'Model creation (50K)', - tests : [ - { - name : 'Backbone 1-attr', - init : oneAttrBBModel, - test : createModel - }, - { - name : 'Nested 1-attr', - init : oneAttrNTModel, - test : createModel - }, - { - name : 'Backbone 20-attr', - init : twentyAttrBBModel, - test : createModel - }, - { - name : 'Nested 20-attr', - init : twentyAttrNTModel, - test : createModel - } - ] -}); \ No newline at end of file diff --git a/tests/nestedtypes/performance/main.js b/tests/nestedtypes/performance/main.js deleted file mode 100644 index 39d49e2..0000000 --- a/tests/nestedtypes/performance/main.js +++ /dev/null @@ -1,497 +0,0 @@ -define( function( require, exports, module ){ - var Nested = require( '../../../index' ), - Backbone = require( 'backbone' ); - - var NLarge = Nested.Model.extend({ - defaults : { - a1 : 1, a2 : 2, a3 : 3, a4: 4, a5 : 5, a6: 6, a7: 7, a8: 8, a9: 9, a10 : 10, - b1 : 1, b2 : 2, b3 : 3, b4: 4, b5 : 5, b6: 6, b7: 7, b8: 8, b9: 9, b10 : 10 - }, - - updateSet : function(){ - this.set({ - a1 : this.a1 + 1, - a2 : this.a2 + 1, - a3 : this.a3 + 1, - a4 : this.a4 + 1, - a5 : this.a5 + 1 - }); - }, - - updateTransaction : Nested.transaction(function(){ - this.a1 = this.a1 + 1; - this.a2 = this.a2 + 1; - this.a3 = this.a3 + 1; - this.a4 = this.a4 + 1; - this.a5 = this.a5 + 1; - }), - - updateAdHocTransaction : function(){ - this.transaction( function(){ - this.a1 = this.a1 + 1; - this.a2 = this.a2 + 1; - this.a3 = this.a3 + 1; - this.a4 = this.a4 + 1; - this.a5 = this.a5 + 1; - }, {} ); - }, - - save : function(){} - }); - - var BLarge = Backbone.Model.extend({ - defaults : { - a1 : 1, a2 : 2, a3 : 3, a4: 4, a5 : 5, a6: 6, a7: 7, a8: 8, a9: 9, a10 : 10, - b1 : 1, b2 : 2, b3 : 3, b4: 4, b5 : 5, b6: 6, b7: 7, b8: 8, b9: 9, b10 : 10 - }, - - updateSet : function(){ - this.set({ - a1 : this.get( 'a1' ) + 1, - a2 : this.get( 'a2' ) + 1, - a3 : this.get( 'a3' ) + 1, - a4 : this.get( 'a4' ) + 1, - a5 : this.get( 'a5' ) + 1 - }); - }, - - save : function(){} - }); - - var BLargeCollection = Backbone.Collection.extend({ - model : BLarge - }); - - - var NSmall = Nested.Model.extend({ - defaults : { - a1 : 1 - }, - - save : function(){} - }); - - var BSmall = Backbone.Model.extend({ - defaults : { - a1 : 1 - }, - - save : function(){} - }); - - var BSmallCollection = Backbone.Collection.extend({ - model : BSmall - }); - - describe( 'Flat models', function(){ - this.timeout( 100000 ); - - describe( 'Create performance', function(){ - var n, b; - - describe( '1-attr model, 50K new', function(){ - it( 'Backbone', function(){ - for( var i = 0; i < 50000; i++ ){ - b = new BSmall(); - } - } ); - - it( 'Nested', function(){ - for( var i = 0; i < 50000; i++ ){ - n = new NSmall(); - } - } ); - } ); - - describe( '20-attrs model, 50K new', function(){ - - it( 'Backbone', function(){ - for( var i = 0; i < 50000; i++ ){ - b = new BLarge(); - } - } ); - - it( 'Nested', function(){ - for( var i = 0; i < 50000; i++ ){ - n = new NLarge(); - } - } ); - } ); - - describe( '1-attr model, 50K collection.create', function(){ - it( 'Backbone', function(){ - var c = new BSmallCollection(); - for( var i = 0; i < 50000; i++ ){ - c.create(); - } - } ); - - it( 'Nested', function(){ - var c = new NSmall.Collection(); - - for( var i = 0; i < 50000; i++ ){ - c.create(); - } - } ); - } ); - - describe( '20-attr model, 50K collection.create', function(){ - it( 'Backbone', function(){ - var c = new BLargeCollection(); - for( var i = 0; i < 50000; i++ ){ - c.create(); - } - } ); - - it( 'Nested', function(){ - var c = new NLarge.Collection(); - - for( var i = 0; i < 50000; i++ ){ - c.create(); - } - } ); - } ); - - describe( '1-attr model, 50K collection reset', function(){ - var arr = []; - for( var i = 0; i < 50000; i++ ){ - arr.push({ a1 : i }); - } - - it( 'Backbone', function(){ - var c = new BSmallCollection(); - c.reset( arr ); - } ); - - it( 'Nested', function(){ - var c = new NSmall.Collection(); - c.reset( arr ); - } ); - } ); - - describe( '20-attr model, 50K collection reset', function(){ - var arr = []; - for( var i = 0; i < 50000; i++ ){ - arr.push({ a1 : i, a2 : i, a3: i, a4 : i, a5 : i, a6 : i, a7 : i, a8: i, a9 : i, a10 : i}); - } - - it( 'Backbone', function(){ - var c = new BLargeCollection(); - c.reset( arr ); - } ); - - it( 'Nested', function(){ - var c = new NLarge.Collection(); - c.reset( arr ); - } ); - } ); - - describe( '1-attr model, 50K collection set/update', function(){ - var arr = [], update = []; - for( var i = 0; i < 50000; i++ ){ - arr.push({ id: i, a1 : i }); - update.push({ id: i, a1 : i + 1 }); - } - - it( 'Backbone', function(){ - var c = new BSmallCollection(); - c.set( arr ); - c.set( update ); - } ); - - it( 'Nested', function(){ - var c = new NSmall.Collection(); - c.set( arr ); - c.set( update ); - } ); - - } ); - - describe( '20-attr model, 50K collection set/update', function(){ - var arr = [], update = []; - for( var i = 0; i < 100000; i++ ){ - arr.push({ id : i, a1 : i, a2 : i, a3: i, a4 : i, a5 : i, a6 : i, a7 : i, a8: i, a9 : i, a10 : i}); - i++; - update.push({ id : i - 1, a1 : i, a2 : i, a3: i, a4 : i, a5 : i, a6 : i, a7 : i, a8: i, a9 : i, a10 : i}); - } - - it( 'Backbone', function(){ - var c = new BLargeCollection(); - c.set( arr ); - c.set( update ); - } ); - - it( 'Nested', function(){ - var c = new NLarge.Collection(); - c.set( arr ); - c.set( update ); - } ); - } ); - }); - - describe( 'Update performance', function(){ - var n, b; - - describe( '1-attr model, 100K collection.create', function(){ - it( 'Backbone', function(){ - var c = new BSmallCollection(); - for( var i = 0; i < 100000; i++ ){ - c.create(); - } - } ); - - it( 'Nested', function(){ - var c = new NSmall.Collection(); - - for( var i = 0; i < 100000; i++ ){ - c.create(); - } - } ); - } ); - - describe( '20-attr model, 100K collection.create', function(){ - it( 'Backbone', function(){ - var c = new BLargeCollection(); - for( var i = 0; i < 100000; i++ ){ - c.create(); - } - } ); - - it( 'Nested', function(){ - var c = new NLarge.Collection(); - - for( var i = 0; i < 100000; i++ ){ - c.create(); - } - } ); - } ); - - describe( '1-attr model, 100K collection reset', function(){ - var arr = []; - for( var i = 0; i < 100000; i++ ){ - arr.push({ a1 : i }); - } - - it( 'Backbone', function(){ - var c = new BSmallCollection(); - c.reset( arr ); - } ); - - it( 'Nested', function(){ - var c = new NSmall.Collection(); - c.reset( arr ); - } ); - } ); - - describe( '20-attr model, 100K collection reset', function(){ - var arr = []; - for( var i = 0; i < 100000; i++ ){ - arr.push({ a1 : i, a2 : i, a3: i, a4 : i, a5 : i, a6 : i, a7 : i, a8: i, a9 : i, a10 : i}); - } - - it( 'Backbone', function(){ - var c = new BLargeCollection(); - c.reset( arr ); - } ); - - it( 'Nested', function(){ - var c = new NLarge.Collection(); - c.reset( arr ); - } ); - } ); - - describe( '1-attr model, 100K collection set/update', function(){ - var arr = [], update = []; - for( var i = 0; i < 100000; i++ ){ - arr.push({ id: i, a1 : i }); - update.push({ id: i, a1 : i + 1 }); - } - - it( 'Backbone', function(){ - var c = new BSmallCollection(); - c.set( arr ); - c.set( update ); - } ); - - it( 'Nested', function(){ - var c = new NSmall.Collection(); - c.set( arr ); - c.set( update ); - } ); - - } ); - - describe( '20-attr model, 100K collection set/update', function(){ - var arr = [], update = []; - for( var i = 0; i < 200000; i++ ){ - arr.push({ id : i, a1 : i, a2 : i, a3: i, a4 : i, a5 : i, a6 : i, a7 : i, a8: i, a9 : i, a10 : i}); - i++; - update.push({ id : i - 1, a1 : i, a2 : i, a3: i, a4 : i, a5 : i, a6 : i, a7 : i, a8: i, a9 : i, a10 : i}); - } - - it( 'Backbone', function(){ - var c = new BLargeCollection(); - c.set( arr ); - c.set( update ); - } ); - - it( 'Nested', function(){ - var c = new NLarge.Collection(); - c.set( arr ); - c.set( update ); - } ); - } ); - }); - - describe( 'Model update performance', function(){ - var n, b; - - describe( '1-attr model, 1M .set( "a1", number )', function(){ - - var b = new BSmall(); - - it( 'Backbone', function(){ - for( var i = 0; i < 1000000; i++ ){ - b.set( 'a1', i ); - } - }); - - var n = new NSmall(); - - it( 'Nested', function(){ - for( var i = 0; i < 1000000; i++ ){ - n.set( 'a1' , i ); - } - }); - - var n = new NSmall(); - - it( 'Nested native property', function(){ - for( var i = 0; i < 1000000; i++ ){ - n.a1 = i; - } - }); - }); - - describe( '20-attrs model, 1M .set( "a1", number )', function(){ - var b = new BLarge(); - - it( 'Backbone', function(){ - for( var i = 0; i < 1000000; i++ ){ - b.set( 'a1', i ); - } - }); - - var n = new NLarge(); - - it( 'Nested', function(){ - for( var i = 0; i < 1000000; i++ ){ - n.set( 'a1', i ); - } - }); - - var n = new NLarge(); - - it( 'Nested native property', function(){ - for( var i = 0; i < 1000000; i++ ){ - n.a1 = i; - } - }); - }); - - describe( '20-attrs model, 10M .get( "a1" )', function(){ - - var b = new BLarge({ a1: 1 }), x; - - it( 'Backbone', function(){ - for( var i = 0; i < 10000000; i++ ){ - x = b.get( 'a1' ); - } - }); - - var n = new NLarge({ a1: 1 }); - - it( 'Nested', function(){ - for( var i = 0; i < 10000000; i++ ){ - x = n.get( 'a1' ); - } - }); - - var n = new NLarge({ a1: 1 }); - - it( 'Nested native property', function(){ - for( var i = 0; i < 10000000; i++ ){ - x = n.a1; - } - }); - }); - - describe( 'both models, 1M read and write', function(){ - - it( 'Backbone', function(){ - var l = new BLarge(), s = new BSmall(); - - for( var i = 0; i < 1000000; i++ ){ - l.set( 'a1', l.get( 'a1' ) + 1 ); - s.set( 'a1', l.get( 'a1' ) + 1 ); - } - }); - - it( 'Nested', function(){ - var l = new NLarge(), s = new NSmall(); - - for( var i = 0; i < 1000000; i++ ){ - l.set( 'a1', l.get( 'a1' ) + 1 ); - s.set( 'a1', l.get( 'a1' ) + 1 ); - } - }); - - it( 'Nested native', function(){ - var l = new NLarge(), s = new NSmall(); - - for( var i = 0; i < 1000000; i++ ){ - l.a1 = l.a1 + 1; - s.a1 = l.a1 + 1; - } - }); - }); - - describe( '1M 5-attr transactional updates', function(){ - - it( 'Backbone', function(){ - var l = new BLarge(); - - for( var i = 0; i < 1000000; i++ ){ - l.updateSet(); - } - }); - - it( 'Nested', function(){ - var l = new NLarge(); - - for( var i = 0; i < 1000000; i++ ){ - l.updateSet(); - } - }); - - it( 'Nested transaction', function(){ - var l = new NLarge(); - - for( var i = 0; i < 1000000; i++ ){ - l.updateTransaction(); - } - }); - - it( 'Nested AdHoc transaction', function(){ - var l = new NLarge(); - - for( var i = 0; i < 1000000; i++ ){ - l.updateAdHocTransaction(); - } - }); - }); - }); - - - }); -}); diff --git a/tests/nestedtypes/performance/models.js b/tests/nestedtypes/performance/models.js deleted file mode 100644 index 3527982..0000000 --- a/tests/nestedtypes/performance/models.js +++ /dev/null @@ -1,403 +0,0 @@ -define( function( require, exports, module ){ - var Nested = require( '../nestedtypes' ), - Backbone = require( 'backbone' ); - - var NLarge = Nested.Model.extend({ - defaults : { - a1 : 1, a2 : 2, a3 : 3, a4: 4, a5 : 5, a6: 6, a7: 7, a8: 8, a9: 9, a10 : 10, - b1 : 1, b2 : 2, b3 : 3, b4: 4, b5 : 5, b6: 6, b7: 7, b8: 8, b9: 9, b10 : 10 - }, - - updateSet : function(){ - this.set({ - a1 : this.a1 + 1, - a2 : this.a2 + 1, - a3 : this.a3 + 1, - a4 : this.a4 + 1, - a5 : this.a5 + 1 - }); - }, - - updateTransaction : Nested.transaction(function(){ - this.a1 = this.a1 + 1; - this.a2 = this.a2 + 1; - this.a3 = this.a3 + 1; - this.a4 = this.a4 + 1; - this.a5 = this.a5 + 1; - }), - - updateAdHocTransaction : function(){ - this.transaction( function(){ - this.a1 = this.a1 + 1; - this.a2 = this.a2 + 1; - this.a3 = this.a3 + 1; - this.a4 = this.a4 + 1; - this.a5 = this.a5 + 1; - }, {} ); - }, - - save(){} - }); - - var BLarge = Backbone.Model.extend({ - defaults : { - a1 : 1, a2 : 2, a3 : 3, a4: 4, a5 : 5, a6: 6, a7: 7, a8: 8, a9: 9, a10 : 10, - b1 : 1, b2 : 2, b3 : 3, b4: 4, b5 : 5, b6: 6, b7: 7, b8: 8, b9: 9, b10 : 10 - }, - - updateSet : function(){ - this.set({ - a1 : this.get( 'a1' ) + 1, - a2 : this.get( 'a2' ) + 1, - a3 : this.get( 'a3' ) + 1, - a4 : this.get( 'a4' ) + 1, - a5 : this.get( 'a5' ) + 1 - }); - }, - - save(){} - }); - - var BLargeCollection = Backbone.Collection.extend({ - model : BLarge - }); - - - var NSmall = Nested.Model.extend({ - defaults : { - a1 : 1 - }, - - save(){} - }); - - var BSmall = Backbone.Model.extend({ - defaults : { - a1 : 1 - }, - - save(){} - }); - - var BSmallCollection = Backbone.Collection.extend({ - model : BSmall - }); - - describe( 'Models performance', function(){ - this.timeout( 100000 ); - - describe( 'Create', function(){ - var n, b; - - describe( '50K new 1attrModel()', function(){ - it( 'Backbone', function(){ - for( var i = 0; i < 50000; i++ ){ - b = new BSmall(); - } - } ); - - it( 'Nested', function(){ - for( var i = 0; i < 50000; i++ ){ - n = new NSmall(); - } - } ); - } ); - - describe( '50K new 20attrModel()', function(){ - it( 'Backbone', function(){ - for( var i = 0; i < 50000; i++ ){ - b = new BLarge(); - } - } ); - - it( 'Nested', function(){ - for( var i = 0; i < 50000; i++ ){ - n = new NLarge(); - } - } ); - } ); - - describe( '50K new 20attrModel({ all attrs }, { parse : true })', function(){ - it( 'Backbone', function(){ - for( var i = 0; i < 50000; i++ ){ - b = new BLarge(); - } - } ); - - it( 'Nested', function(){ - for( var i = 0; i < 50000; i++ ){ - n = new NLarge(); - } - } ); - } ); - }); - - describe( 'Update performance', function(){ - var n, b; - - describe( '1-attr model, 100K collection.create', function(){ - it( 'Backbone', function(){ - var c = new BSmallCollection(); - for( var i = 0; i < 100000; i++ ){ - c.create(); - } - } ); - - it( 'Nested', function(){ - var c = new NSmall.Collection(); - - for( var i = 0; i < 100000; i++ ){ - c.create(); - } - } ); - } ); - - describe( '20-attr model, 100K collection.create', function(){ - it( 'Backbone', function(){ - var c = new BLargeCollection(); - for( var i = 0; i < 100000; i++ ){ - c.create(); - } - } ); - - it( 'Nested', function(){ - var c = new NLarge.Collection(); - - for( var i = 0; i < 100000; i++ ){ - c.create(); - } - } ); - } ); - - describe( '1-attr model, 100K collection reset', function(){ - var arr = []; - for( var i = 0; i < 100000; i++ ){ - arr.push({ a1 : i }); - } - - it( 'Backbone', function(){ - var c = new BSmallCollection(); - c.reset( arr ); - } ); - - it( 'Nested', function(){ - var c = new NSmall.Collection(); - c.reset( arr ); - } ); - } ); - - describe( '20-attr model, 100K collection reset', function(){ - var arr = []; - for( var i = 0; i < 100000; i++ ){ - arr.push({ a1 : i, a2 : i, a3: i, a4 : i, a5 : i, a6 : i, a7 : i, a8: i, a9 : i, a10 : i}); - } - - it( 'Backbone', function(){ - var c = new BLargeCollection(); - c.reset( arr ); - } ); - - it( 'Nested', function(){ - var c = new NLarge.Collection(); - c.reset( arr ); - } ); - } ); - - describe( '1-attr model, 100K collection set/update', function(){ - var arr = [], update = []; - for( var i = 0; i < 100000; i++ ){ - arr.push({ id: i, a1 : i }); - update.push({ id: i, a1 : i + 1 }); - } - - it( 'Backbone', function(){ - var c = new BSmallCollection(); - c.set( arr ); - c.set( update ); - } ); - - it( 'Nested', function(){ - var c = new NSmall.Collection(); - c.set( arr ); - c.set( update ); - } ); - - } ); - - describe( '20-attr model, 100K collection set/update', function(){ - var arr = [], update = []; - for( var i = 0; i < 200000; i++ ){ - arr.push({ id : i, a1 : i, a2 : i, a3: i, a4 : i, a5 : i, a6 : i, a7 : i, a8: i, a9 : i, a10 : i}); - i++; - update.push({ id : i - 1, a1 : i, a2 : i, a3: i, a4 : i, a5 : i, a6 : i, a7 : i, a8: i, a9 : i, a10 : i}); - } - - it( 'Backbone', function(){ - var c = new BLargeCollection(); - c.set( arr ); - c.set( update ); - } ); - - it( 'Nested', function(){ - var c = new NLarge.Collection(); - c.set( arr ); - c.set( update ); - } ); - } ); - }); - - describe( 'Update performance', function(){ - var n, b; - - describe( '1-attr model, 1M .set( "a1", number )', function(){ - - var b = new BSmall(); - - it( 'Backbone', function(){ - for( var i = 0; i < 1000000; i++ ){ - b.set( 'a1', i ); - } - }); - - var n = new NSmall(); - - it( 'Nested', function(){ - for( var i = 0; i < 1000000; i++ ){ - n.set( 'a1', i ); - } - }); - - var n = new NSmall(); - - it( 'Nested native property', function(){ - for( var i = 0; i < 1000000; i++ ){ - n.a1 = i; - } - }); - }); - - describe( '20-attrs model, 1M .set( "a1", number )', function(){ - - - - var b = new BLarge(); - - it( 'Backbone', function(){ - for( var i = 0; i < 1000000; i++ ){ - b.set( 'a1', i ); - } - }); - - var n = new NLarge(); - - it( 'Nested', function(){ - for( var i = 0; i < 1000000; i++ ){ - n.set( 'a1', i ); - } - }); - - var n = new NLarge(); - - it( 'Nested native property', function(){ - for( var i = 0; i < 1000000; i++ ){ - n.a1 = i; - } - }); - }); - - describe( '20-attrs model, 10M .get( "a1" )', function(){ - - var b = new BLarge({ a1: 1 }), x; - - it( 'Backbone', function(){ - for( var i = 0; i < 10000000; i++ ){ - x = b.get( 'a1' ); - } - }); - - var n = new NLarge({ a1: 1 }); - - it( 'Nested', function(){ - for( var i = 0; i < 10000000; i++ ){ - x = n.get( 'a1' ); - } - }); - - var n = new NLarge({ a1: 1 }); - - it( 'Nested native property', function(){ - for( var i = 0; i < 10000000; i++ ){ - x = n.a1; - } - }); - }); - - describe( 'both models, 1M read and write', function(){ - - it( 'Backbone', function(){ - var l = new BLarge(), s = new BSmall(); - - for( var i = 0; i < 1000000; i++ ){ - l.set( 'a1', l.get( 'a1' ) + 1 ); - s.set( 'a1', l.get( 'a1' ) + 1 ); - } - }); - - it( 'Nested', function(){ - var l = new NLarge(), s = new NSmall(); - - for( var i = 0; i < 1000000; i++ ){ - l.set( 'a1', l.get( 'a1' ) + 1 ); - s.set( 'a1', l.get( 'a1' ) + 1 ); - } - }); - - it( 'Nested native', function(){ - var l = new NLarge(), s = new NSmall(); - - for( var i = 0; i < 1000000; i++ ){ - l.a1 = l.a1 + 1; - s.a1 = l.a1 + 1; - } - }); - }); - - describe( '1M 5-attr transactional updates', function(){ - - it( 'Backbone', function(){ - var l = new BLarge(); - - for( var i = 0; i < 1000000; i++ ){ - l.updateSet(); - } - }); - - it( 'Nested', function(){ - var l = new NLarge(); - - for( var i = 0; i < 1000000; i++ ){ - l.updateSet(); - } - }); - - it( 'Nested transaction', function(){ - var l = new NLarge(); - - for( var i = 0; i < 1000000; i++ ){ - l.updateTransaction(); - } - }); - - it( 'Nested AdHoc transaction', function(){ - var l = new NLarge(); - - for( var i = 0; i < 1000000; i++ ){ - l.updateAdHocTransaction(); - } - }); - }); - }); - - - }); -}); diff --git a/tsconfig.json b/tsconfig.json index ab9d933..c56ad6d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -12,9 +12,6 @@ "experimentalDecorators": true }, "files":[ - "./src/index.ts", - "./src/type-r/endpoints/attributes", - "./src/type-r/endpoints/memory", - "./src/type-r/endpoints/localStorage" + "./src/index.ts" ] } \ No newline at end of file