UNPKG

@beradrian/ngx-resource-core

Version:
1,093 lines (1,038 loc) 137 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["ngx-resource-core"] = factory(); else root["ngx-resource-core"] = factory(); })(typeof self !== 'undefined' ? self : this, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "/"; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 5); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return ResourceRequestBodyType; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return ResourceResponseBodyType; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return ResourceRequestMethod; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ResourceQueryMappingMethod; }); var ResourceRequestBodyType; (function (ResourceRequestBodyType) { ResourceRequestBodyType[ResourceRequestBodyType["NONE"] = 0] = "NONE"; ResourceRequestBodyType[ResourceRequestBodyType["JSON"] = 1] = "JSON"; ResourceRequestBodyType[ResourceRequestBodyType["FORM"] = 2] = "FORM"; ResourceRequestBodyType[ResourceRequestBodyType["FORM_DATA"] = 3] = "FORM_DATA"; ResourceRequestBodyType[ResourceRequestBodyType["TEXT"] = 4] = "TEXT"; ResourceRequestBodyType[ResourceRequestBodyType["BLOB"] = 5] = "BLOB"; ResourceRequestBodyType[ResourceRequestBodyType["ARRAY_BUFFER"] = 6] = "ARRAY_BUFFER"; })(ResourceRequestBodyType || (ResourceRequestBodyType = {})); var ResourceResponseBodyType; (function (ResourceResponseBodyType) { ResourceResponseBodyType[ResourceResponseBodyType["Text"] = 1] = "Text"; ResourceResponseBodyType[ResourceResponseBodyType["Json"] = 2] = "Json"; ResourceResponseBodyType[ResourceResponseBodyType["ArrayBuffer"] = 3] = "ArrayBuffer"; ResourceResponseBodyType[ResourceResponseBodyType["Blob"] = 4] = "Blob"; })(ResourceResponseBodyType || (ResourceResponseBodyType = {})); var ResourceRequestMethod; (function (ResourceRequestMethod) { ResourceRequestMethod[ResourceRequestMethod["Get"] = 1] = "Get"; ResourceRequestMethod[ResourceRequestMethod["Post"] = 2] = "Post"; ResourceRequestMethod[ResourceRequestMethod["Put"] = 3] = "Put"; ResourceRequestMethod[ResourceRequestMethod["Delete"] = 4] = "Delete"; ResourceRequestMethod[ResourceRequestMethod["Options"] = 5] = "Options"; ResourceRequestMethod[ResourceRequestMethod["Head"] = 6] = "Head"; ResourceRequestMethod[ResourceRequestMethod["Patch"] = 7] = "Patch"; })(ResourceRequestMethod || (ResourceRequestMethod = {})); var ResourceQueryMappingMethod; (function (ResourceQueryMappingMethod) { ResourceQueryMappingMethod[ResourceQueryMappingMethod["Plain"] = 1] = "Plain"; ResourceQueryMappingMethod[ResourceQueryMappingMethod["Bracket"] = 2] = "Bracket"; ResourceQueryMappingMethod[ResourceQueryMappingMethod["JQueryParamsBracket"] = 3] = "JQueryParamsBracket"; })(ResourceQueryMappingMethod || (ResourceQueryMappingMethod = {})); /***/ }), /* 1 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ResourceHelper; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Declarations__ = __webpack_require__(0); var ResourceHelper = /** @class */ (function () { function ResourceHelper() { } ResourceHelper.isRunningInBrowser = function () { if (this.isBrowser !== null) { return this.isBrowser; } try { this.isBrowser = !!window; } catch (e) { this.isBrowser = false; } return this.isBrowser; }; ResourceHelper.getRealTypeOf = function (data) { if (!data) { return __WEBPACK_IMPORTED_MODULE_0__Declarations__["b" /* ResourceRequestBodyType */].NONE; } if (this.isRunningInBrowser()) { if (data instanceof FormData) { return __WEBPACK_IMPORTED_MODULE_0__Declarations__["b" /* ResourceRequestBodyType */].FORM_DATA; } if (data instanceof Blob) { return __WEBPACK_IMPORTED_MODULE_0__Declarations__["b" /* ResourceRequestBodyType */].BLOB; } } if (data instanceof ArrayBuffer) { return __WEBPACK_IMPORTED_MODULE_0__Declarations__["b" /* ResourceRequestBodyType */].ARRAY_BUFFER; } if (['string', 'number'].indexOf(typeof data) > -1) { return __WEBPACK_IMPORTED_MODULE_0__Declarations__["b" /* ResourceRequestBodyType */].TEXT; } return __WEBPACK_IMPORTED_MODULE_0__Declarations__["b" /* ResourceRequestBodyType */].JSON; }; ResourceHelper.defaults = function (dst, src) { if (!dst) { dst = {}; } Object.keys(src) .forEach(function (key) { if (dst[key] === undefined) { dst[key] = src[key]; } }); return dst; }; ResourceHelper.isNullOrUndefined = function (value) { return value === null || value === undefined; }; ResourceHelper.cleanData = function (obj) { if (Array.isArray(obj)) { return this.cleanDataArray(obj); } else { return this.cleanDataObject(obj); } }; ResourceHelper.cleanDataArray = function (obj) { for (var propName in obj) { if (typeof obj[propName] === 'function' || this.cleanDataFields.indexOf(propName) > -1) { delete obj[propName]; } } return obj; }; ResourceHelper.cleanDataObject = function (obj) { var cleanedObj = {}; for (var propName in obj) { if (typeof obj[propName] !== 'function' && this.cleanDataFields.indexOf(propName) === -1) { cleanedObj[propName] = obj[propName]; } } return cleanedObj; }; ResourceHelper.cleanDataFields = [ '$resolved', '$promise', '$abort', '$resource' ]; ResourceHelper.isBrowser = null; return ResourceHelper; }()); /***/ }), /* 2 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Resource; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Declarations__ = __webpack_require__(0); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ResourceGlobalConfig__ = __webpack_require__(3); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ResourceHelper__ = __webpack_require__(1); var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; var Resource = /** @class */ (function () { function Resource(requestHandler) { this.requestHandler = requestHandler; this.$url = null; this.$pathPrefix = null; this.$path = null; this.$headers = null; this.$body = null; this.$params = null; this.$query = null; this.constructor.instance = this; } /** * Used to get url * * @param {IResourceAction} actionOptions * @return {string | Promise<string>} */ Resource.prototype.$getUrl = function (actionOptions) { if (actionOptions === void 0) { actionOptions = {}; } return this.$url || actionOptions.url || __WEBPACK_IMPORTED_MODULE_1__ResourceGlobalConfig__["a" /* ResourceGlobalConfig */].url || ''; }; Resource.prototype.$setUrl = function (url) { this.$url = url; }; /** * Used to get path prefix * * @param {IResourceAction} actionOptions * @return {string | Promise<string>} */ Resource.prototype.$getPathPrefix = function (actionOptions) { if (actionOptions === void 0) { actionOptions = {}; } return this.$pathPrefix || actionOptions.pathPrefix || __WEBPACK_IMPORTED_MODULE_1__ResourceGlobalConfig__["a" /* ResourceGlobalConfig */].pathPrefix || ''; }; Resource.prototype.$setPathPrefix = function (path) { this.$pathPrefix = path; }; /** * Used to get path * * @param {IResourceAction} actionOptions * @return {string | Promise<string>} */ Resource.prototype.$getPath = function (actionOptions) { if (actionOptions === void 0) { actionOptions = {}; } return this.$path || actionOptions.path || __WEBPACK_IMPORTED_MODULE_1__ResourceGlobalConfig__["a" /* ResourceGlobalConfig */].path || ''; }; Resource.prototype.$setPath = function (path) { this.$path = path; }; /** * Get headers. * * @param {IResourceAction} actionOptions * @return {any | Promise<any>} */ Resource.prototype.$getHeaders = function (actionOptions) { if (actionOptions === void 0) { actionOptions = {}; } return this.$headers || actionOptions.headers || __WEBPACK_IMPORTED_MODULE_1__ResourceGlobalConfig__["a" /* ResourceGlobalConfig */].headers || {}; }; Resource.prototype.$setHeaders = function (headers) { this.$headers = headers; }; /** * Get body * * @param {IResourceAction} actionOptions * @return {any | Promise<any>} */ Resource.prototype.$getBody = function (actionOptions) { if (actionOptions === void 0) { actionOptions = {}; } return this.$body || actionOptions.body || __WEBPACK_IMPORTED_MODULE_1__ResourceGlobalConfig__["a" /* ResourceGlobalConfig */].body || {}; }; Resource.prototype.$setBody = function (body) { this.$body = body; }; /** * Get path params * * @param {IResourceAction} actionOptions * @return {any | Promise<any>} */ Resource.prototype.$getParams = function (actionOptions) { if (actionOptions === void 0) { actionOptions = {}; } return this.$params || actionOptions.params || __WEBPACK_IMPORTED_MODULE_1__ResourceGlobalConfig__["a" /* ResourceGlobalConfig */].params || {}; }; Resource.prototype.$setParams = function (params) { this.$params = params; }; /** * Get query params * * @param {IResourceAction} actionOptions * @return {any | Promise<any>} */ Resource.prototype.$getQuery = function (actionOptions) { if (actionOptions === void 0) { actionOptions = {}; } return this.$query || actionOptions.query || __WEBPACK_IMPORTED_MODULE_1__ResourceGlobalConfig__["a" /* ResourceGlobalConfig */].query || {}; }; Resource.prototype.$setQuery = function (query) { this.$query = query; }; /** * Used to filter received data. * Is applied on each element of array or object * * @param data * @param {IResourceActionInner} options * @return {boolean} */ Resource.prototype.$filter = function (data, options) { if (options === void 0) { options = {}; } return true; }; /** * Used to map received data * Is applied on each element of array or object * * @param data * @param {IResourceActionInner} options * @return {any} */ Resource.prototype.$map = function (data, options) { if (options === void 0) { options = {}; } return data; }; /** * Used to create result object * Is applied on each element of array or object * * @param data * @param {IResourceActionInner} options * @return {any} */ Resource.prototype.$resultFactory = function (data, options) { if (options === void 0) { options = {}; } return data || {}; }; Resource.prototype.$restAction = function (options) { var _this = this; this.$_setResourceActionInnerDefaults(options); this.$_setResourceActionOptionDefaults(options); var actionOptions = options.actionOptions; if (actionOptions.mutateBody || options.isModel) { options.returnData = options.actionAttributes.body; } if (!actionOptions.asPromise) { options.returnData = actionOptions.expectJsonArray ? [] : actionOptions.resultFactory.call(this, null, options); } if (this.$_canSetInternalData(options)) { Object.defineProperty(options.returnData, '$resolved', { enumerable: false, configurable: true, writable: true, value: false }); Object.defineProperty(options.returnData, '$abort', { enumerable: false, configurable: true, writable: true, value: function () { // does nothing for now } }); } options.mainPromise = this.$_setResolvedOptions(options) .then(function (o) { return _this.$_createRequestOptions(o); }) .then(function (o) { var handlerResp = _this.requestHandler.handle(o.requestOptions); if (o.returnData && _this.$_canSetInternalData(options)) { o.returnData.$abort = handlerResp.abort; } return handlerResp.promise; }) .then(function (resp) { return _this.$handleSuccessResponse(options, resp); }) .catch(function (resp) { return _this.$handleErrorResponse(options, resp); }); if (this.$_canSetInternalData(options)) { Object.defineProperty(options.returnData, '$promise', { enumerable: false, configurable: true, writable: true, value: options.mainPromise }); } return actionOptions.asPromise ? options.mainPromise : options.returnData; }; Resource.prototype.$handleSuccessResponse = function (options, resp) { var _this = this; var body = resp.body; var actionOptions = options.actionOptions; if (Array.isArray(body)) { body = body .filter(function (item) { return actionOptions.filter.call(_this, item, options); }) .map(function (item) { item = actionOptions.map.call(_this, item, options); return actionOptions.resultFactory.call(_this, item, options); }); if (options.returnData) { Array.prototype.push.apply(options.returnData, body); body = options.returnData; } } else { if (actionOptions.filter.call(this, body, options)) { body = actionOptions.map.call(this, body, options); var newBody = options.returnData; if (newBody) { if (typeof newBody.$setData === 'function') { newBody.$setData(body); } else { Object.assign(newBody, body); } } else { newBody = actionOptions.resultFactory.call(this, body, options); } body = newBody; // If it's model if (body.$resource) { body.$resolved = true; body.$promise = options.mainPromise; body.$abort = function () { return true; }; } } else { body = null; } } if (this.$_canSetInternalData(options)) { options.returnData.$resolved = true; } if (options.actionOptions.asResourceResponse) { resp.body = body; body = resp; } if (options.actionAttributes.onSuccess) { options.actionAttributes.onSuccess(body); } return body; }; Resource.prototype.$handleErrorResponse = function (options, resp) { if (options.returnData && this.$_canSetInternalData(options)) { options.returnData.$resolved = true; } if (options.actionAttributes.onError) { options.actionAttributes.onError(resp); } throw resp; }; Resource.prototype.$setRequestOptionsUrl = function (options) { var ro = options.requestOptions; if (!ro.url) { ro.url = options.resolvedOptions.url + options.resolvedOptions.pathPrefix + options.resolvedOptions.path; } options.usedInPath = {}; var params = __WEBPACK_IMPORTED_MODULE_2__ResourceHelper__["a" /* ResourceHelper */].defaults(options.actionAttributes.params, options.resolvedOptions.params); var pathParams = ro.url.match(/{([^}]*)}/g) || []; for (var i = 0; i < pathParams.length; i++) { var pathParam = pathParams[i]; var pathKey = pathParam.substr(1, pathParam.length - 2); var isMandatory = pathKey[0] === '!'; if (isMandatory) { pathKey = pathKey.substr(1); } var onlyPathParam = pathKey[0] === ':'; if (onlyPathParam) { pathKey = pathKey.substr(1); } if (options.actionAttributes.query && options.actionAttributes.query === options.actionAttributes.params) { options.usedInPath[pathKey] = true; } var value = params[pathKey]; if (onlyPathParam) { delete params[pathKey]; } if (__WEBPACK_IMPORTED_MODULE_2__ResourceHelper__["a" /* ResourceHelper */].isNullOrUndefined(value)) { if (isMandatory) { var consoleMsg = "Mandatory " + pathParam + " path parameter is missing"; console.warn(consoleMsg); // shell.mainObservable = Observable.create((observer: any) => { // observer.error(new Error(consoleMsg)); // }); // // // this.$_releaseMainDeferredSubscriber(shell); throw new Error(consoleMsg); } ro.url = ro.url.substr(0, ro.url.indexOf(pathParam)); break; } // Replacing in the url ro.url = ro.url.replace(pathParam, value); } // Removing double slashed from final url ro.url = ro.url.replace(/\/\/+/g, '/'); if (ro.url.startsWith('http')) { ro.url = ro.url.replace(':/', '://'); } // Remove trailing slash if (options.actionOptions.removeTrailingSlash) { while (ro.url[ro.url.length - 1] === '/') { ro.url = ro.url.substr(0, ro.url.length - 1); } } }; Resource.prototype.$setRequestOptionsBody = function (options) { var body = options.actionAttributes.body; if (!body) { return; } var realBodyType = __WEBPACK_IMPORTED_MODULE_2__ResourceHelper__["a" /* ResourceHelper */].getRealTypeOf(body); var bodyOk = realBodyType === options.actionOptions.requestBodyType; if (!bodyOk) { if (realBodyType === __WEBPACK_IMPORTED_MODULE_0__Declarations__["b" /* ResourceRequestBodyType */].JSON) { switch (options.actionOptions.requestBodyType) { case __WEBPACK_IMPORTED_MODULE_0__Declarations__["b" /* ResourceRequestBodyType */].FORM_DATA: var newBody_1 = new FormData(); Object.keys(body).forEach(function (key) { var value = body[key]; if (body.hasOwnProperty(key) && typeof value !== 'function') { var isArrayOfFiles = value instanceof Array && value.reduce(function (acc, elem) { return acc && elem instanceof File; }, true); if (isArrayOfFiles) { value.forEach(function (f, index) { newBody_1.append(key + "[" + index + "]", f, f.name); }); } else if (value instanceof File) { newBody_1.append(key, value, value.name); } else if (!options.actionOptions.rootNode) { newBody_1.append(key, value); } } }); if (options.actionOptions.rootNode) { newBody_1.append(options.actionOptions.rootNode, JSON.stringify(body)); } body = newBody_1; bodyOk = true; } } } if (!bodyOk) { throw new Error('Can not convert body'); } if (!(body instanceof FormData)) { // Add root node if needed if (options.actionOptions.rootNode) { var newBody = {}; newBody[options.actionOptions.rootNode] = body; body = newBody; } if (typeof body === 'object' && Object.keys(body).length === 0 && !options.actionOptions.keepEmptyBody) { return; } } options.requestOptions.body = body; }; Resource.prototype.$setRequestOptionsQuery = function (options) { var _this = this; var oq = options.actionAttributes.query || {}; if (options.resolvedOptions.query) { oq = __assign({}, options.resolvedOptions.query, oq); } if (oq) { options.requestOptions.query = {}; Object.keys(oq).forEach(function (key) { if (oq.hasOwnProperty(key) && !options.usedInPath[key]) { _this.$appendQueryParams(options.requestOptions.query, key, oq[key], options.queryMappingMethod); } }); } if (options.actionOptions.addTimestamp) { options.requestOptions.query = options.requestOptions.query || {}; this.$appendQueryParams(options.requestOptions.query, options.actionOptions.addTimestamp, Date.now().toString(10), options.queryMappingMethod); } }; Resource.prototype.$appendQueryParams = function (query, key, value, queryMappingMethod) { if (value instanceof Date) { query[key] = value.toISOString(); return; } if (typeof value === 'object') { switch (queryMappingMethod) { case __WEBPACK_IMPORTED_MODULE_0__Declarations__["a" /* ResourceQueryMappingMethod */].Plain: if (Array.isArray(value)) { query[key] = value.join(','); // for (const arrValue of value) { // query[key] = arrValue; // } } else { if (value && typeof value === 'object') { /// Convert dates to ISO format string if (value instanceof Date) { value = value.toISOString(); } else { value = JSON.stringify(value); } } query[key] = value; } break; case __WEBPACK_IMPORTED_MODULE_0__Declarations__["a" /* ResourceQueryMappingMethod */].Bracket: /// Convert object and arrays to query params for (var k in value) { if (value.hasOwnProperty(k)) { this.$appendQueryParams(query, key + "[" + k + "]", value[k], queryMappingMethod); } } break; case __WEBPACK_IMPORTED_MODULE_0__Declarations__["a" /* ResourceQueryMappingMethod */].JQueryParamsBracket: /// Convert object and arrays to query params according to $.params for (var k in value) { if (value.hasOwnProperty(k)) { var path = key + "[" + k + "]"; if (Array.isArray(value) && typeof value[k] !== 'object') { path = key + "[]"; } this.$appendQueryParams(query, path, value[k], queryMappingMethod); } } } return; } query[key] = value; }; Resource.prototype.$_setResourceActionInnerDefaults = function (options) { var actionOptions = options.actionOptions; // Setting default request method if (!actionOptions.method) { actionOptions.method = __WEBPACK_IMPORTED_MODULE_0__Declarations__["c" /* ResourceRequestMethod */].Get; } var actionAttributes = options.actionAttributes; if (actionAttributes.body) { // Setting default request content type if (!actionOptions.requestBodyType) { actionOptions.requestBodyType = __WEBPACK_IMPORTED_MODULE_2__ResourceHelper__["a" /* ResourceHelper */].getRealTypeOf(actionAttributes.body); } // Setting params and query if needed if (actionOptions.requestBodyType === __WEBPACK_IMPORTED_MODULE_0__Declarations__["b" /* ResourceRequestBodyType */].JSON && typeof actionAttributes.body === 'object' && !Array.isArray(actionAttributes.body)) { if (!actionAttributes.params) { actionAttributes.params = actionAttributes.body; } options.isModel = !!actionAttributes.body.$resource; } } actionAttributes.params = actionAttributes.params || {}; if (!actionAttributes.query && actionOptions.method === __WEBPACK_IMPORTED_MODULE_0__Declarations__["c" /* ResourceRequestMethod */].Get) { actionAttributes.query = actionAttributes.params; } options.queryMappingMethod = actionOptions.queryMappingMethod || __WEBPACK_IMPORTED_MODULE_1__ResourceGlobalConfig__["a" /* ResourceGlobalConfig */].queryMappingMethod; }; Resource.prototype.$_setResourceActionOptionDefaults = function (options) { var actionOptions = options.actionOptions; if (__WEBPACK_IMPORTED_MODULE_2__ResourceHelper__["a" /* ResourceHelper */].isNullOrUndefined(actionOptions.filter)) { actionOptions.filter = this.$filter; } if (__WEBPACK_IMPORTED_MODULE_2__ResourceHelper__["a" /* ResourceHelper */].isNullOrUndefined(actionOptions.map)) { actionOptions.map = this.$map; } if (__WEBPACK_IMPORTED_MODULE_2__ResourceHelper__["a" /* ResourceHelper */].isNullOrUndefined(actionOptions.resultFactory)) { actionOptions.resultFactory = this.$resultFactory; } if (__WEBPACK_IMPORTED_MODULE_2__ResourceHelper__["a" /* ResourceHelper */].isNullOrUndefined(actionOptions.removeTrailingSlash)) { actionOptions.removeTrailingSlash = __WEBPACK_IMPORTED_MODULE_1__ResourceGlobalConfig__["a" /* ResourceGlobalConfig */].removeTrailingSlash; } if (__WEBPACK_IMPORTED_MODULE_2__ResourceHelper__["a" /* ResourceHelper */].isNullOrUndefined(actionOptions.withCredentials)) { actionOptions.withCredentials = __WEBPACK_IMPORTED_MODULE_1__ResourceGlobalConfig__["a" /* ResourceGlobalConfig */].withCredentials; } if (__WEBPACK_IMPORTED_MODULE_2__ResourceHelper__["a" /* ResourceHelper */].isNullOrUndefined(actionOptions.asPromise)) { actionOptions.asPromise = __WEBPACK_IMPORTED_MODULE_1__ResourceGlobalConfig__["a" /* ResourceGlobalConfig */].asPromise; } if (__WEBPACK_IMPORTED_MODULE_2__ResourceHelper__["a" /* ResourceHelper */].isNullOrUndefined(actionOptions.asResourceResponse)) { actionOptions.asResourceResponse = __WEBPACK_IMPORTED_MODULE_1__ResourceGlobalConfig__["a" /* ResourceGlobalConfig */].asResourceResponse; } if (__WEBPACK_IMPORTED_MODULE_2__ResourceHelper__["a" /* ResourceHelper */].isNullOrUndefined(actionOptions.responseBodyType)) { actionOptions.responseBodyType = __WEBPACK_IMPORTED_MODULE_1__ResourceGlobalConfig__["a" /* ResourceGlobalConfig */].responseBodyType; } if (__WEBPACK_IMPORTED_MODULE_2__ResourceHelper__["a" /* ResourceHelper */].isNullOrUndefined(actionOptions.lean)) { actionOptions.lean = __WEBPACK_IMPORTED_MODULE_1__ResourceGlobalConfig__["a" /* ResourceGlobalConfig */].lean; if (actionOptions.mutateBody && !actionOptions.asPromise && __WEBPACK_IMPORTED_MODULE_2__ResourceHelper__["a" /* ResourceHelper */].isNullOrUndefined(actionOptions.lean)) { actionOptions.lean = true; } } if (__WEBPACK_IMPORTED_MODULE_2__ResourceHelper__["a" /* ResourceHelper */].isNullOrUndefined(actionOptions.addTimestamp)) { actionOptions.addTimestamp = __WEBPACK_IMPORTED_MODULE_1__ResourceGlobalConfig__["a" /* ResourceGlobalConfig */].addTimestamp; if (actionOptions.addTimestamp && typeof actionOptions.addTimestamp !== 'string') { actionOptions.addTimestamp = 'ts'; } } }; Resource.prototype.$_setResolvedOptions = function (options) { return Promise.all([ this.$getUrl(options.actionOptions), this.$getPathPrefix(options.actionOptions), this.$getPath(options.actionOptions), this.$getHeaders(options.actionOptions), this.$getBody(options.actionOptions), this.$getParams(options.actionOptions), this.$getQuery(options.actionOptions) ]) .then(function (resolvedMain) { options.resolvedOptions = {}; var r = options.resolvedOptions; r.url = resolvedMain[0], r.pathPrefix = resolvedMain[1], r.path = resolvedMain[2], r.headers = resolvedMain[3], r.body = resolvedMain[4], r.params = resolvedMain[5], r.query = resolvedMain[6]; return options; }); }; Resource.prototype.$_createRequestOptions = function (options) { options.requestOptions = {}; // Step 1 set main options.requestOptions.method = options.actionOptions.method; options.requestOptions.headers = options.resolvedOptions.headers; options.requestOptions.withCredentials = options.actionOptions.withCredentials; options.requestOptions.responseBodyType = options.actionOptions.responseBodyType; options.requestOptions.requestBodyType = options.actionOptions.requestBodyType; // Step 2 create url this.$setRequestOptionsUrl(options); // Step 3 create body this.$setRequestOptionsBody(options); // Step 4 set query params this.$setRequestOptionsQuery(options); return options; }; Resource.prototype.$_canSetInternalData = function (options) { return options.returnData && (!options.actionOptions.lean || options.isModel); }; return Resource; }()); /***/ }), /* 3 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ResourceGlobalConfig; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Declarations__ = __webpack_require__(0); var ResourceGlobalConfig = /** @class */ (function () { function ResourceGlobalConfig() { } ResourceGlobalConfig.url = null; ResourceGlobalConfig.pathPrefix = null; ResourceGlobalConfig.path = null; ResourceGlobalConfig.headers = null; ResourceGlobalConfig.body = null; ResourceGlobalConfig.params = null; ResourceGlobalConfig.query = null; ResourceGlobalConfig.removeTrailingSlash = true; ResourceGlobalConfig.addTimestamp = false; ResourceGlobalConfig.withCredentials = false; ResourceGlobalConfig.lean = null; ResourceGlobalConfig.asPromise = true; // static toObservable: boolean = null; ResourceGlobalConfig.asResourceResponse = false; ResourceGlobalConfig.responseBodyType = __WEBPACK_IMPORTED_MODULE_0__Declarations__["d" /* ResourceResponseBodyType */].Json; ResourceGlobalConfig.queryMappingMethod = __WEBPACK_IMPORTED_MODULE_0__Declarations__["a" /* ResourceQueryMappingMethod */].Plain; return ResourceGlobalConfig; }()); /***/ }), /* 4 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = ResourceAction; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Declarations__ = __webpack_require__(0); var __assign = (this && this.__assign) || Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; function ResourceAction(methodOptions) { methodOptions = methodOptions || {}; if (methodOptions.method === undefined) { methodOptions.method = __WEBPACK_IMPORTED_MODULE_0__Declarations__["c" /* ResourceRequestMethod */].Get; } return function (target, propertyKey) { target[propertyKey] = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var callbacks = args.filter(function (arg) { return typeof arg === 'function'; }); var data = args.filter(function (arg) { return typeof arg !== 'function'; }); var body = data[0]; var query = data[1]; var params = data[2]; var onSuccess = callbacks[0]; var onError = callbacks[1]; //tslint:disable-next-line:no-invalid-this var actionOptions = __assign({}, this.getResourceOptions(), methodOptions); //tslint:disable-next-line:no-invalid-this return this.$restAction({ actionAttributes: { body: body, query: query, params: params, onSuccess: onSuccess, onError: onError }, actionOptions: actionOptions }); }; }; } /***/ }), /* 5 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_Declarations__ = __webpack_require__(0); /* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ResourceRequestBodyType", function() { return __WEBPACK_IMPORTED_MODULE_0__src_Declarations__["b"]; }); /* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ResourceResponseBodyType", function() { return __WEBPACK_IMPORTED_MODULE_0__src_Declarations__["d"]; }); /* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ResourceRequestMethod", function() { return __WEBPACK_IMPORTED_MODULE_0__src_Declarations__["c"]; }); /* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ResourceQueryMappingMethod", function() { return __WEBPACK_IMPORTED_MODULE_0__src_Declarations__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__src_Resource__ = __webpack_require__(2); /* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "Resource", function() { return __WEBPACK_IMPORTED_MODULE_1__src_Resource__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__src_ResourceAction__ = __webpack_require__(4); /* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ResourceAction", function() { return __WEBPACK_IMPORTED_MODULE_2__src_ResourceAction__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__src_ResourceGlobalConfig__ = __webpack_require__(3); /* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ResourceGlobalConfig", function() { return __WEBPACK_IMPORTED_MODULE_3__src_ResourceGlobalConfig__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__src_ResourceHandler__ = __webpack_require__(6); /* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ResourceHandler", function() { return __WEBPACK_IMPORTED_MODULE_4__src_ResourceHandler__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__src_ResourceHelper__ = __webpack_require__(1); /* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ResourceHelper", function() { return __WEBPACK_IMPORTED_MODULE_5__src_ResourceHelper__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__src_ResourceModel__ = __webpack_require__(7); /* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ResourceModel", function() { return __WEBPACK_IMPORTED_MODULE_6__src_ResourceModel__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__src_ResourceParams__ = __webpack_require__(8); /* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ResourceParams", function() { return __WEBPACK_IMPORTED_MODULE_7__src_ResourceParams__["a"]; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_8__src_ResourceCommon_ResourceCRUD__ = __webpack_require__(9); /* harmony namespace reexport (by provided) */ __webpack_require__.d(__webpack_exports__, "ResourceCRUD", function() { return __WEBPACK_IMPORTED_MODULE_8__src_ResourceCommon_ResourceCRUD__["a"]; }); /***/ }), /* 6 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ResourceHandler; }); var ResourceHandler = /** @class */ (function () { function ResourceHandler() { } return ResourceHandler; }()); /***/ }), /* 7 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ResourceModel; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ResourceHelper__ = __webpack_require__(1); var ResourceModel = /** @class */ (function () { function ResourceModel() { this.$resource = null; this.$resolved = true; this.$promise = null; } ResourceModel.get = function (id) { return this.getInstance()[this.methodGet]({ id: id }); }; ResourceModel.query = function (query) { return this.getInstance()[this.methodQuery](query); }; ResourceModel.remove = function (id) { return this.getInstance()[this.methodRemove]({ id: id }); }; ResourceModel.getInstance = function () { if (!this.resourceInstance) { var model = (new this()); if (!model.$resource) { throw new Error('Your resource is not defined'); } if (!model.$resource.instance) { throw new Error('Your resource is not created (inject it somewhere)'); } this.resourceInstance = (new this()).$resource.instance; } return this.resourceInstance; }; ResourceModel.prototype.$setData = function (data) { Object.assign(this, data); return this; }; ResourceModel.prototype.$save = function (query, params) { if (this.isNew()) { return this.$create(query, params); } else { return this.$update(query, params); } }; ResourceModel.prototype.$create = function (query, params) { return this.$executeResourceMethod(this.constructor.methodCreate, query, params); }; ResourceModel.prototype.$update = function (query, params) { return this.$executeResourceMethod(this.constructor.methodUpdate, query, params); }; ResourceModel.prototype.$remove = function (query, params) { return this.$executeResourceMethod(this.constructor.methodRemove, query, params); }; ResourceModel.prototype.toJSON = function () { return __WEBPACK_IMPORTED_MODULE_0__ResourceHelper__["a" /* ResourceHelper */].cleanData(this); }; ResourceModel.prototype.isNew = function () { return !this['id']; }; ResourceModel.prototype.$getResourceWithMethodCheck = function (methodName) { if (!this.$resource) { console.error("Your Resource is not defined"); return null; } var restInstance = this.$resource.instance; if (!restInstance) { console.error("Your Resource is not defined or not created"); return null; } if (!restInstance[methodName]) { console.error("Your Resource has no implemented " + methodName + " method."); return null; } return restInstance; }; ResourceModel.prototype.$executeResourceMethod = function (methodName, query, params) { var resource = this.$getResourceWithMethodCheck(methodName); if (resource) { resource[methodName](this, query, params); } return this; }; ResourceModel.resourceInstance = null; ResourceModel.methodQuery = 'query'; ResourceModel.methodGet = 'get'; ResourceModel.methodCreate = 'create'; ResourceModel.methodUpdate = 'update'; ResourceModel.methodRemove = 'remove'; return ResourceModel; }()); /***/ }), /* 8 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (immutable) */ __webpack_exports__["a"] = ResourceParams; function ResourceParams(params) { if (params === void 0) { params = {}; } return function (target) { target.prototype.getResourceOptions = function () { return params; }; }; } /***/ }), /* 9 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ResourceCRUD; }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__Resource__ = __webpack_require__(2); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ResourceAction__ = __webpack_require__(4); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Declarations__ = __webpack_require__(0); var __extends = (this && this.__extends) || (function () { var extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __decorate = (this && this.__decorate) || function (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; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var ResourceCRUD = /** @class */ (function (_super) { __extends(ResourceCRUD, _super); function ResourceCRUD() { return _super !== null && _super.apply(this, arguments) || this; } // Alias to save ResourceCRUD.prototype.create = function (data, callback) { return this.save(data, callback); }; __decorate([ Object(__WEBPACK_IMPORTED_MODULE_1__ResourceAction__["a" /* ResourceAction */])(), __metadata("design:type", Function) ], ResourceCRUD.prototype, "query", void 0); __decorate([ Object(__WEBPACK_IMPORTED_MODULE_1__ResourceAction__["a" /* ResourceAction */])({ path: '/{!id}' }), __metadata("design:type", Function) ], ResourceCRUD.prototype, "get", void 0); __decorate([ Object(__WEBPACK_IMPORTED_MODULE_1__ResourceAction__["a" /* ResourceAction */])({ method: __WEBPACK_IMPORTED_MODULE_2__Declarations__["c" /* ResourceRequestMethod */].Post }), __metadata("design:type", Function) ], ResourceCRUD.prototype, "save", void 0); __decorate([ Object(__WEBPACK_IMPORTED_MODULE_1__ResourceAction__["a" /* ResourceAction */])({ method: __WEBPACK_IMPORTED_MODULE_2__Declarations__["c" /* ResourceRequestMethod */].Put, path: '/{!id}' }), __metadata("design:type", Function) ], ResourceCRUD.prototype, "update", void 0); __decorate([ Object(__WEBPACK_IMPORTED_MODULE_1__ResourceAction__["a" /* ResourceAction */])({ method: __WEBPACK_IMPORTED_MODULE_2__Declarations__["c" /* ResourceRequestMethod */].Delete, path: '/{!id}' }), __metadata("design:type", Function) ], ResourceCRUD.prototype, "remove", void 0); return ResourceCRUD; }(__WEBPACK_IMPORTED_MODULE_0__Resource__["a" /* Resource */])); /***/ }) /******/ ]); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWN