UNPKG

angular2-data

Version:
107 lines (99 loc) 5.23 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('angular2/core'), require('angular2/http'), require('angular2/src/core/reflection/reflection'), require('rxjs/Rx'), require('angular2/src/core/util/decorators')) : typeof define === 'function' && define.amd ? define(['exports', 'angular2/core', 'angular2/http', 'angular2/src/core/reflection/reflection', 'rxjs/Rx', 'angular2/src/core/util/decorators'], factory) : (factory((global.angular2data = {}),global.angular2_core,global.angular2_http,global.angular2_src_core_reflection_reflection,global.rxjs_Rx,global.angular2_src_core_util_decorators)); }(this, function (exports,angular2_core,angular2_http,angular2_src_core_reflection_reflection,rxjs_Rx,angular2_src_core_util_decorators) { 'use strict'; function __decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 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; return c > 3 && r && Object.defineProperty(target, key, r), r; } function __param(paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } } var DefaultSerializer = (function () { function DefaultSerializer() { } DefaultSerializer.prototype.serialize = function (instance) { return JSON.stringify({ data: instance }); }; DefaultSerializer.prototype.deserializeOne = function (response, domainClass) { return new domainClass(response.json().data); }; DefaultSerializer.prototype.deserializeMany = function (response, domainClass) { return response.json().data.map(function (props) { return new domainClass(props); }); }; return DefaultSerializer; })(); var StoreConfigMetadata = (function () { function StoreConfigMetadata(config) { this.config = config; } return StoreConfigMetadata; })(); var StoreConfig = angular2_src_core_util_decorators.makeDecorator(StoreConfigMetadata); var ModelDecoratorMetadata = (function () { function ModelDecoratorMetadata(options) { this.options = options; } return ModelDecoratorMetadata; })(); var Model = angular2_src_core_util_decorators.makeDecorator(ModelDecoratorMetadata); var Store = (function () { function Store(http) { this.http = http; } Object.defineProperty(Store.prototype, "config", { get: function () { return angular2_src_core_reflection_reflection.reflector.annotations(this.constructor)[0].config; }, enumerable: true, configurable: true }); Object.defineProperty(Store.prototype, "serializer", { get: function () { if (!this._serializer) { this._serializer = new DefaultSerializer(); } return this._serializer; }, enumerable: true, configurable: true }); Store.prototype.getModelMetadata = function (domainClass) { // we're assuming model annotation is always first return angular2_src_core_reflection_reflection.reflector.annotations(domainClass)[0].options; }; Store.prototype.buildUrl = function (domainClass) { var modelMetadata = this.getModelMetadata(domainClass); return "" + this.config.baseURL + modelMetadata.path; }; Store.prototype.query = function (domainClass) { var _this = this; return this.http.get(this.buildUrl(domainClass)) .map(function (res) { return _this.serializer.deserializeMany(res, domainClass); }); }; Store.prototype.find = function (domainClass, id) { var _this = this; return this.http.get(this.buildUrl(domainClass) + "/" + id) .map(function (res) { return _this.serializer.deserializeOne(res, domainClass); }); }; Store.prototype.create = function (instance) { var _this = this; var headers = new angular2_http.Headers(); headers.append("Content-Type", "application/json"); return this.http.post(this.buildUrl(instance.constructor), this.serializer.serialize(instance), { headers: headers }) .map(function (res) { return _this.serializer.deserializeOne(res, instance.constructor); }); }; Store = __decorate([ __param(0, angular2_core.Inject(angular2_http.Http)) ], Store); return Store; })(); exports.DefaultSerializer = DefaultSerializer; exports.Store = Store; exports.StoreConfig = StoreConfig; exports.Model = Model; })); //# sourceMappingURL=angular2-data.umd.js.map